0){for(;hf)break;y.push(d)}}else for(;h
=1;--s)if(d=l*s,!(df)break;y.push(d)}}else y=t.ticks(h,p,Math.min(p-h,b)).map(u);return n?y.reverse():y},n.tickFormat=function(e,t){if(null==t&&(t=10===a?".0e":","),"function"!=typeof t&&(t=o.format(t)),e===1/0)return t;null==e&&(e=10);var r=Math.max(1,a*e/n.ticks().length);return function(e){var n=e/u(Math.round(i(e)));return n*a0?a[t-1]:r[0],t=a?[i[a-1],o]:[i[t-1],i[t]]},e.copy=function(){return F().domain([r,o]).range(u)},m(e)}function U(){function e(e){if(e<=e)return r[t.bisect(n,e,0,o)]}var n=[.5],r=[0,1],o=1;return e.domain=function(t){return arguments.length?(n=H.call(t),o=Math.min(n.length,r.length-1),e):n.slice()},e.range=function(t){return arguments.length?(r=H.call(t),o=Math.min(n.length,r.length-1),e):r.slice()},e.invertExtent=function(e){var t=r.indexOf(e);return[n[t-1],n[t]]},e.copy=function(){return U().domain(n).range(r)},e}function Y(e){return new Date(e)}function E(e){return e instanceof Date?+e:+new Date((+e))}function I(e,n,o,a,i,u,c,f,l){function s(t){return(c(t)1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return de.h=360*e-100,de.s=1.5-1.5*t,de.l=.8-.9*t,de+""},pe=P(oe("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),be=P(oe("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ye=P(oe("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ge=P(oe("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));e.scaleBand=f,e.scalePoint=s,e.scaleIdentity=w,e.scaleLinear=M,e.scaleLog=T,e.scaleOrdinal=c,e.scaleImplicit=$,e.scalePow=A,e.scaleSqrt=D,e.scaleQuantile=N,e.scaleQuantize=F,e.scaleThreshold=U,e.scaleTime=ne,e.scaleUtc=re,e.schemeCategory10=ae,e.schemeCategory20b=ie,e.schemeCategory20c=ue,e.schemeCategory20=ce,e.interpolateCubehelixDefault=fe,e.interpolateRainbow=he,e.interpolateWarm=le,e.interpolateCool=se,e.interpolateViridis=pe,e.interpolateMagma=be,e.interpolateInferno=ye,e.interpolatePlasma=ge,e.scaleSequential=L,Object.defineProperty(e,"__esModule",{value:!0})})},{"d3-array":1,"d3-collection":2,"d3-color":3,"d3-format":5,"d3-interpolate":6,"d3-time":9,"d3-time-format":8}],8:[function(e,t,n){!function(r,o){"object"===("undefined"==typeof n?"undefined":_typeof(n))&&"undefined"!=typeof t?o(n,e("d3-time")):"function"==typeof define&&define.amd?define(["exports","d3-time"],o):o(r.d3=r.d3||{},r.d3)}(this,function(e,t){function n(e){if(0<=e.y&&e.y<100){var t=new Date((-1),e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function r(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function o(e){return{y:e,m:0,d:1,H:0,M:0,S:0,L:0}}function a(e){function a(e,t){return function(n){var r,o,a,i=[],u=-1,c=0,f=e.length;for(n instanceof Date||(n=new Date((+n)));++u53)return null;"w"in f||(f.w=1),"Z"in f?(i=r(o(f.y)),c=i.getUTCDay(),i=c>4||0===c?t.utcMonday.ceil(i):t.utcMonday(i),i=t.utcDay.offset(i,7*(f.V-1)),f.y=i.getUTCFullYear(),f.m=i.getUTCMonth(),f.d=i.getUTCDate()+(f.w+6)%7):(i=n(o(f.y)),c=i.getDay(),i=c>4||0===c?t.timeMonday.ceil(i):t.timeMonday(i),i=t.timeDay.offset(i,7*(f.V-1)),f.y=i.getFullYear(),f.m=i.getMonth(),f.d=i.getDate()+(f.w+6)%7)}else("W"in f||"U"in f)&&("w"in f||(f.w="u"in f?f.u%7:"W"in f?1:0),c="Z"in f?r(o(f.y)).getUTCDay():n(o(f.y)).getDay(),f.m=0,f.d="W"in f?(f.w+6)%7+7*f.W-(c+5)%7:f.w+7*f.U-(c+6)%7);return"Z"in f?(f.H+=f.Z/100|0,f.M+=f.Z%100,r(f)):n(f)}}function u(e,t,n,r){for(var o,a,i=0,u=t.length,c=n.length;i=c)return-1;if(o=t.charCodeAt(i++),37===o){if(o=t.charAt(i++),a=Ge[o in ye?t.charAt(i++):o],!a||(r=a(e,n,r))<0)return-1}else if(o!=n.charCodeAt(r++))return-1}return r}function de(e,t,n){var r=Le.exec(t.slice(n));return r?(e.p=ze[r[0].toLowerCase()],n+r[0].length):-1}function he(e,t,n){var r=$e.exec(t.slice(n));return r?(e.w=Re[r[0].toLowerCase()],n+r[0].length):-1}function pe(e,t,n){var r=qe.exec(t.slice(n));return r?(e.w=He[r[0].toLowerCase()],n+r[0].length):-1}function be(e,t,n){var r=We.exec(t.slice(n));return r?(e.m=Xe[r[0].toLowerCase()],n+r[0].length):-1}function ge(e,t,n){var r=Be.exec(t.slice(n));return r?(e.m=Ve[r[0].toLowerCase()],n+r[0].length):-1}function ve(e,t,n){return u(e,De,t,n)}function me(e,t,n){return u(e,Ne,t,n)}function Me(e,t,n){return u(e,Fe,t,n)}function we(e){return Ee[e.getDay()]}function _e(e){return Ye[e.getDay()]}function xe(e){return Pe[e.getMonth()]}function je(e){return Ie[e.getMonth()]}function ke(e){return Ue[+(e.getHours()>=12)]}function Se(e){return Ee[e.getUTCDay()]}function Oe(e){return Ye[e.getUTCDay()]}function Te(e){return Pe[e.getUTCMonth()]}function Ce(e){return Ie[e.getUTCMonth()]}function Ae(e){return Ue[+(e.getUTCHours()>=12)]}var De=e.dateTime,Ne=e.date,Fe=e.time,Ue=e.periods,Ye=e.days,Ee=e.shortDays,Ie=e.months,Pe=e.shortMonths,Le=c(Ue),ze=f(Ue),qe=c(Ye),He=f(Ye),$e=c(Ee),Re=f(Ee),Be=c(Ie),Ve=f(Ie),We=c(Pe),Xe=f(Pe),Qe={a:we,A:_e,b:xe,B:je,c:null,d:C,e:C,f:U,H:A,I:D,j:N,L:F,m:Y,M:E,p:ke,Q:le,s:se,S:I,u:P,U:L,V:z,w:q,W:H,x:null,X:null,y:$,Y:R,Z:B,"%":fe},Ze={a:Se,A:Oe,b:Te,B:Ce,c:null,d:V,e:V,f:G,H:W,I:X,j:Q,L:Z,m:J,M:K,p:Ae,Q:le,s:se,S:ee,u:te,U:ne,V:re,w:oe,W:ae,x:null,X:null,y:ie,Y:ue,Z:ce,"%":fe},Ge={a:he,A:pe,b:be,B:ge,c:ve,d:m,e:m,f:k,H:w,I:w,j:M,L:j,m:v,M:_,p:de,Q:O,s:T,S:x,u:s,U:d,V:h,w:l,W:p,x:me,X:Me,y:y,Y:b,Z:g,"%":S};return Qe.x=a(Ne,Qe),Qe.X=a(Fe,Qe),Qe.c=a(De,Qe),Ze.x=a(Ne,Ze),Ze.X=a(Fe,Ze),Ze.c=a(De,Ze),{format:function(e){var t=a(e+="",Qe);return t.toString=function(){return e},t},parse:function(e){var t=i(e+="",n);return t.toString=function(){return e},t},utcFormat:function(e){var t=a(e+="",Ze);return t.toString=function(){return e},t},utcParse:function(e){var t=i(e,r);return t.toString=function(){return e},t}}}function i(e,t,n){var r=e<0?"-":"",o=(r?-e:e)+"",a=o.length;return r+(a68?1900:2e3),n+r[0].length):-1}function g(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function v(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function m(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function M(e,t,n){var r=ge.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function w(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function _(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function x(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function j(e,t,n){var r=ge.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function k(e,t,n){var r=ge.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function S(e,t,n){var r=ve.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function O(e,t,n){var r=ge.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function T(e,t,n){var r=ge.exec(t.slice(n));return r?(e.Q=1e3*+r[0],n+r[0].length):-1}function C(e,t){return i(e.getDate(),t,2)}function A(e,t){return i(e.getHours(),t,2)}function D(e,t){return i(e.getHours()%12||12,t,2)}function N(e,n){return i(1+t.timeDay.count(t.timeYear(e),e),n,3)}function F(e,t){return i(e.getMilliseconds(),t,3)}function U(e,t){return F(e,t)+"000"}function Y(e,t){return i(e.getMonth()+1,t,2)}function E(e,t){return i(e.getMinutes(),t,2)}function I(e,t){return i(e.getSeconds(),t,2)}function P(e){var t=e.getDay();return 0===t?7:t}function L(e,n){return i(t.timeSunday.count(t.timeYear(e),e),n,2)}function z(e,n){var r=e.getDay();return e=r>=4||0===r?t.timeThursday(e):t.timeThursday.ceil(e),i(t.timeThursday.count(t.timeYear(e),e)+(4===t.timeYear(e).getDay()),n,2)}function q(e){return e.getDay()}function H(e,n){return i(t.timeMonday.count(t.timeYear(e),e),n,2)}function $(e,t){return i(e.getFullYear()%100,t,2)}function R(e,t){return i(e.getFullYear()%1e4,t,4)}function B(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+i(t/60|0,"0",2)+i(t%60,"0",2)}function V(e,t){return i(e.getUTCDate(),t,2)}function W(e,t){return i(e.getUTCHours(),t,2)}function X(e,t){return i(e.getUTCHours()%12||12,t,2)}function Q(e,n){return i(1+t.utcDay.count(t.utcYear(e),e),n,3)}function Z(e,t){return i(e.getUTCMilliseconds(),t,3)}function G(e,t){return Z(e,t)+"000"}function J(e,t){return i(e.getUTCMonth()+1,t,2)}function K(e,t){return i(e.getUTCMinutes(),t,2)}function ee(e,t){return i(e.getUTCSeconds(),t,2)}function te(e){var t=e.getUTCDay();return 0===t?7:t}function ne(e,n){return i(t.utcSunday.count(t.utcYear(e),e),n,2)}function re(e,n){var r=e.getUTCDay();return e=r>=4||0===r?t.utcThursday(e):t.utcThursday.ceil(e),i(t.utcThursday.count(t.utcYear(e),e)+(4===t.utcYear(e).getUTCDay()),n,2)}function oe(e){return e.getUTCDay()}function ae(e,n){return i(t.utcMonday.count(t.utcYear(e),e),n,2)}function ie(e,t){return i(e.getUTCFullYear()%100,t,2)}function ue(e,t){return i(e.getUTCFullYear()%1e4,t,4)}function ce(){return"+0000"}function fe(){return"%"}function le(e){return+e}function se(e){return Math.floor(+e/1e3)}function de(t){return be=a(t),e.timeFormat=be.format,e.timeParse=be.parse,e.utcFormat=be.utcFormat,e.utcParse=be.utcParse,be}function he(e){return e.toISOString()}function pe(e){var t=new Date(e);return isNaN(t)?null:t}var be,ye={"-":"",_:" ",0:"0"},ge=/^\s*\d+/,ve=/^%/,me=/[\\^$*+?|[\]().{}]/g;de({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Me="%Y-%m-%dT%H:%M:%S.%LZ",we=Date.prototype.toISOString?he:e.utcFormat(Me),_e=+new Date("2000-01-01T00:00:00.000Z")?pe:e.utcParse(Me);e.timeFormatDefaultLocale=de,e.timeFormatLocale=a,e.isoFormat=we,e.isoParse=_e,Object.defineProperty(e,"__esModule",{value:!0})})},{"d3-time":9}],9:[function(e,t,n){!function(e,r){"object"===("undefined"==typeof n?"undefined":_typeof(n))&&"undefined"!=typeof t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(e.d3=e.d3||{})}(this,function(e){function t(e,n,r,i){function u(t){return e(t=new Date((+t))),t}return u.floor=u,u.ceil=function(t){return e(t=new Date(t-1)),n(t,1),e(t),t},u.round=function(e){var t=u(e),n=u.ceil(e);return e-t0))return a;do a.push(new Date((+t)));while(n(t,o),e(t),t=t)for(;e(t),!r(t);)t.setTime(t-1)},function(e,t){if(e>=e)if(t<0)for(;++t<=0;)for(;n(e,-1),!r(e););else for(;--t>=0;)for(;n(e,1),!r(e););})},r&&(u.count=function(t,n){return o.setTime(+t),a.setTime(+n),e(o),e(a),Math.floor(r(o,a))},u.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?u.filter(i?function(t){return i(t)%e===0}:function(t){return u.count(0,t)%e===0}):u:null}),u}function n(e){return t(function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},function(e,t){e.setDate(e.getDate()+7*t)},function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*f)/d})}function r(e){return t(function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},function(e,t){e.setUTCDate(e.getUTCDate()+7*t)},function(e,t){return(t-e)/d})}var o=new Date,a=new Date,i=t(function(){},function(e,t){e.setTime(+e+t)},function(e,t){return t-e});i.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?t(function(t){t.setTime(Math.floor(t/e)*e)},function(t,n){t.setTime(+t+n*e)},function(t,n){return(n-t)/e}):i:null};var u=i.range,c=1e3,f=6e4,l=36e5,s=864e5,d=6048e5,h=t(function(e){e.setTime(Math.floor(e/c)*c)},function(e,t){e.setTime(+e+t*c)},function(e,t){return(t-e)/c},function(e){return e.getUTCSeconds()}),p=h.range,b=t(function(e){e.setTime(Math.floor(e/f)*f)},function(e,t){e.setTime(+e+t*f)},function(e,t){return(t-e)/f},function(e){return e.getMinutes()}),y=b.range,g=t(function(e){var t=e.getTimezoneOffset()*f%l;t<0&&(t+=l),e.setTime(Math.floor((+e-t)/l)*l+t)},function(e,t){e.setTime(+e+t*l)},function(e,t){return(t-e)/l},function(e){return e.getHours()}),v=g.range,m=t(function(e){e.setHours(0,0,0,0)},function(e,t){e.setDate(e.getDate()+t);
+},function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*f)/s},function(e){return e.getDate()-1}),M=m.range,w=n(0),_=n(1),x=n(2),j=n(3),k=n(4),S=n(5),O=n(6),T=w.range,C=_.range,A=x.range,D=j.range,N=k.range,F=S.range,U=O.range,Y=t(function(e){e.setDate(1),e.setHours(0,0,0,0)},function(e,t){e.setMonth(e.getMonth()+t)},function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())},function(e){return e.getMonth()}),E=Y.range,I=t(function(e){e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,t){e.setFullYear(e.getFullYear()+t)},function(e,t){return t.getFullYear()-e.getFullYear()},function(e){return e.getFullYear()});I.every=function(e){return isFinite(e=Math.floor(e))&&e>0?t(function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n*e)}):null};var P=I.range,L=t(function(e){e.setUTCSeconds(0,0)},function(e,t){e.setTime(+e+t*f)},function(e,t){return(t-e)/f},function(e){return e.getUTCMinutes()}),z=L.range,q=t(function(e){e.setUTCMinutes(0,0,0)},function(e,t){e.setTime(+e+t*l)},function(e,t){return(t-e)/l},function(e){return e.getUTCHours()}),H=q.range,$=t(function(e){e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCDate(e.getUTCDate()+t)},function(e,t){return(t-e)/s},function(e){return e.getUTCDate()-1}),R=$.range,B=r(0),V=r(1),W=r(2),X=r(3),Q=r(4),Z=r(5),G=r(6),J=B.range,K=V.range,ee=W.range,te=X.range,ne=Q.range,re=Z.range,oe=G.range,ae=t(function(e){e.setUTCDate(1),e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCMonth(e.getUTCMonth()+t)},function(e,t){return t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())},function(e){return e.getUTCMonth()}),ie=ae.range,ue=t(function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)},function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()},function(e){return e.getUTCFullYear()});ue.every=function(e){return isFinite(e=Math.floor(e))&&e>0?t(function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)}):null};var ce=ue.range;e.timeInterval=t,e.timeMillisecond=i,e.timeMilliseconds=u,e.utcMillisecond=i,e.utcMilliseconds=u,e.timeSecond=h,e.timeSeconds=p,e.utcSecond=h,e.utcSeconds=p,e.timeMinute=b,e.timeMinutes=y,e.timeHour=g,e.timeHours=v,e.timeDay=m,e.timeDays=M,e.timeWeek=w,e.timeWeeks=T,e.timeSunday=w,e.timeSundays=T,e.timeMonday=_,e.timeMondays=C,e.timeTuesday=x,e.timeTuesdays=A,e.timeWednesday=j,e.timeWednesdays=D,e.timeThursday=k,e.timeThursdays=N,e.timeFriday=S,e.timeFridays=F,e.timeSaturday=O,e.timeSaturdays=U,e.timeMonth=Y,e.timeMonths=E,e.timeYear=I,e.timeYears=P,e.utcMinute=L,e.utcMinutes=z,e.utcHour=q,e.utcHours=H,e.utcDay=$,e.utcDays=R,e.utcWeek=B,e.utcWeeks=J,e.utcSunday=B,e.utcSundays=J,e.utcMonday=V,e.utcMondays=K,e.utcTuesday=W,e.utcTuesdays=ee,e.utcWednesday=X,e.utcWednesdays=te,e.utcThursday=Q,e.utcThursdays=ne,e.utcFriday=Z,e.utcFridays=re,e.utcSaturday=G,e.utcSaturdays=oe,e.utcMonth=ae,e.utcMonths=ie,e.utcYear=ue,e.utcYears=ce,Object.defineProperty(e,"__esModule",{value:!0})})},{}],10:[function(e,t,n){function r(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function o(e,t){for(var n=-1,r=Array(e);++n1?n[o-1]:void 0,i=o>2?n[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,i&&h(n[0],n[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++r-1&&e%1==0&&e-1&&e%1==0&&e<=j}function w(e){var t="undefined"==typeof e?"undefined":_typeof(e);return!!e&&("object"==t||"function"==t)}function _(e){return!!e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function x(e){return g(e)?i(e):c(e)}var j=9007199254740991,k="[object Arguments]",S="[object Function]",O="[object GeneratorFunction]",T=/^(?:0|[1-9]\d*)$/,C=Object.prototype,A=C.hasOwnProperty,D=C.toString,N=C.propertyIsEnumerable,F=a(Object.keys,Object),U=Math.max,Y=!N.call({valueOf:1},"valueOf"),E=Array.isArray,I=s(function(e,t){if(Y||p(t)||g(t))return void l(t,x(t),e);for(var n in t)A.call(t,n)&&u(e,n,t[n])});t.exports=I},{}],11:[function(e,t,n){(function(e){function r(e,t){return e.set(t[0],t[1]),e}function o(e,t){return e.add(t),e}function a(e,t){for(var n=-1,r=e?e.length:0;++n-1}function k(e,t){var n=this.__data__,r=z(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}function S(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=Ae}function xe(e){var t="undefined"==typeof e?"undefined":_typeof(e);return!!e&&("object"==t||"function"==t)}function je(e){return!!e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function ke(e){return me(e)?P(e):W(e)}function Se(){return[]}function Oe(){return!1}var Te=200,Ce="__lodash_hash_undefined__",Ae=9007199254740991,De="[object Arguments]",Ne="[object Array]",Fe="[object Boolean]",Ue="[object Date]",Ye="[object Error]",Ee="[object Function]",Ie="[object GeneratorFunction]",Pe="[object Map]",Le="[object Number]",ze="[object Object]",qe="[object Promise]",He="[object RegExp]",$e="[object Set]",Re="[object String]",Be="[object Symbol]",Ve="[object WeakMap]",We="[object ArrayBuffer]",Xe="[object DataView]",Qe="[object Float32Array]",Ze="[object Float64Array]",Ge="[object Int8Array]",Je="[object Int16Array]",Ke="[object Int32Array]",et="[object Uint8Array]",tt="[object Uint8ClampedArray]",nt="[object Uint16Array]",rt="[object Uint32Array]",ot=/[\\^$.*+?()[\]{}|]/g,at=/\w*$/,it=/^\[object .+?Constructor\]$/,ut=/^(?:0|[1-9]\d*)$/,ct={};ct[De]=ct[Ne]=ct[We]=ct[Xe]=ct[Fe]=ct[Ue]=ct[Qe]=ct[Ze]=ct[Ge]=ct[Je]=ct[Ke]=ct[Pe]=ct[Le]=ct[ze]=ct[He]=ct[$e]=ct[Re]=ct[Be]=ct[et]=ct[tt]=ct[nt]=ct[rt]=!0,ct[Ye]=ct[Ee]=ct[Ve]=!1;var ft="object"==("undefined"==typeof e?"undefined":_typeof(e))&&e&&e.Object===Object&&e,lt="object"==("undefined"==typeof self?"undefined":_typeof(self))&&self&&self.Object===Object&&self,st=ft||lt||Function("return this")(),dt="object"==("undefined"==typeof n?"undefined":_typeof(n))&&n&&!n.nodeType&&n,ht=dt&&"object"==("undefined"==typeof t?"undefined":_typeof(t))&&t&&!t.nodeType&&t,pt=ht&&ht.exports===dt,bt=Array.prototype,yt=Function.prototype,gt=Object.prototype,vt=st["__core-js_shared__"],mt=function(){var e=/[^.]+$/.exec(vt&&vt.keys&&vt.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),Mt=yt.toString,wt=gt.hasOwnProperty,_t=gt.toString,xt=RegExp("^"+Mt.call(wt).replace(ot,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),jt=pt?st.Buffer:void 0,kt=st.Symbol,St=st.Uint8Array,Ot=d(Object.getPrototypeOf,Object),Tt=Object.create,Ct=gt.propertyIsEnumerable,At=bt.splice,Dt=Object.getOwnPropertySymbols,Nt=jt?jt.isBuffer:void 0,Ft=d(Object.keys,Object),Ut=ue(st,"DataView"),Yt=ue(st,"Map"),Et=ue(st,"Promise"),It=ue(st,"Set"),Pt=ue(st,"WeakMap"),Lt=ue(Object,"create"),zt=be(Ut),qt=be(Yt),Ht=be(Et),$t=be(It),Rt=be(Pt),Bt=kt?kt.prototype:void 0,Vt=Bt?Bt.valueOf:void 0;p.prototype.clear=b,p.prototype["delete"]=y,p.prototype.get=g,p.prototype.has=v,p.prototype.set=m,M.prototype.clear=w,M.prototype["delete"]=_,M.prototype.get=x,M.prototype.has=j,M.prototype.set=k,S.prototype.clear=O,S.prototype["delete"]=T,S.prototype.get=C,S.prototype.has=A,S.prototype.set=D,N.prototype.clear=F,N.prototype["delete"]=U,N.prototype.get=Y,N.prototype.has=E,N.prototype.set=I;var Wt=Dt?d(Dt,Object):Se,Xt=B;(Ut&&Xt(new Ut(new ArrayBuffer(1)))!=Xe||Yt&&Xt(new Yt)!=Pe||Et&&Xt(Et.resolve())!=qe||It&&Xt(new It)!=$e||Pt&&Xt(new Pt)!=Ve)&&(Xt=function(e){var t=_t.call(e),n=t==ze?e.constructor:void 0,r=n?be(n):void 0;if(r)switch(r){case zt:return Xe;case qt:return Pe;case Ht:return qe;case $t:return $e;case Rt:return Ve}return t});var Qt=Array.isArray,Zt=Nt||Oe;t.exports=ye}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],12:[function(e,t,n){function r(e,t){for(var n=-1,r=e?e.length:0;++n-1&&e%1==0&&e-1&&e%1==0&&e<=x}function m(e){var t="undefined"==typeof e?"undefined":_typeof(e);return!!e&&("object"==t||"function"==t)}function M(e){return!!e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function w(e){return b(e)?i(e):c(e)}function _(e){return e}var x=9007199254740991,j="[object Arguments]",k="[object Function]",S="[object GeneratorFunction]",O=/^(?:0|[1-9]\d*)$/,T=Object.prototype,C=T.hasOwnProperty,A=T.toString,D=T.propertyIsEnumerable,N=a(Object.keys,Object),F=f(u),U=l(),Y=Array.isArray;t.exports=h},{}],13:[function(e,t,n){(function(e){function r(e,t){return null==e?void 0:e[t]}function o(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(n){}return t}function a(e,t){return function(n){return e(t(n))}}function i(e){return B.call(e)}function u(e){if(!v(e)||f(e))return!1;var t=y(e)||o(e)?V:N;return t.test(s(e))}function c(e,t){var n=r(e,t);return u(n)?n:void 0}function f(e){return!!H&&H in e}function l(e){var t=e&&e.constructor,n="function"==typeof t&&t.prototype||z;return e===n}function s(e){if(null!=e){try{return $.call(e)}catch(t){}try{return e+""}catch(t){}}return""}function d(e){return p(e)&&R.call(e,"callee")&&(!X.call(e,"callee")||B.call(e)==_)}function h(e){return null!=e&&g(e.length)&&!y(e)}function p(e){return m(e)&&h(e)}function b(e){if(h(e)&&(fe(e)||"string"==typeof e||"function"==typeof e.splice||le(e)||d(e)))return!e.length;var t=ce(e);if(t==k||t==T)return!e.size;if(ne||l(e))return!Z(e).length;for(var n in e)if(R.call(e,n))return!1;return!0}function y(e){var t=v(e)?B.call(e):"";return t==x||t==j}function g(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=w}function v(e){var t="undefined"==typeof e?"undefined":_typeof(e);return!!e&&("object"==t||"function"==t)}function m(e){return!!e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function M(){return!1}var w=9007199254740991,_="[object Arguments]",x="[object Function]",j="[object GeneratorFunction]",k="[object Map]",S="[object Object]",O="[object Promise]",T="[object Set]",C="[object WeakMap]",A="[object DataView]",D=/[\\^$.*+?()[\]{}|]/g,N=/^\[object .+?Constructor\]$/,F="object"==("undefined"==typeof e?"undefined":_typeof(e))&&e&&e.Object===Object&&e,U="object"==("undefined"==typeof self?"undefined":_typeof(self))&&self&&self.Object===Object&&self,Y=F||U||Function("return this")(),E="object"==("undefined"==typeof n?"undefined":_typeof(n))&&n&&!n.nodeType&&n,I=E&&"object"==("undefined"==typeof t?"undefined":_typeof(t))&&t&&!t.nodeType&&t,P=I&&I.exports===E,L=Function.prototype,z=Object.prototype,q=Y["__core-js_shared__"],H=function(){var e=/[^.]+$/.exec(q&&q.keys&&q.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),$=L.toString,R=z.hasOwnProperty,B=z.toString,V=RegExp("^"+$.call(R).replace(D,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),W=P?Y.Buffer:void 0,X=z.propertyIsEnumerable,Q=W?W.isBuffer:void 0,Z=a(Object.keys,Object),G=c(Y,"DataView"),J=c(Y,"Map"),K=c(Y,"Promise"),ee=c(Y,"Set"),te=c(Y,"WeakMap"),ne=!X.call({valueOf:1},"valueOf"),re=s(G),oe=s(J),ae=s(K),ie=s(ee),ue=s(te),ce=i;(G&&ce(new G(new ArrayBuffer(1)))!=A||J&&ce(new J)!=k||K&&ce(K.resolve())!=O||ee&&ce(new ee)!=T||te&&ce(new te)!=C)&&(ce=function(e){var t=B.call(e),n=t==S?e.constructor:void 0,r=n?s(n):void 0;if(r)switch(r){case re:return A;case oe:return k;case ae:return O;case ie:return T;case ue:return C}return t});var fe=Array.isArray,le=Q||M;t.exports=b}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],14:[function(e,t,n){(function(e){function r(e,t){for(var n=-1,r=null==e?0:e.length,o=0,a=[];++n-1}function j(e,t){var n=this.__data__,r=q(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function k(e){var t=-1,n=null==e?0:e.length;for(this.clear();++tf))return!1;var s=i.get(e);if(s&&i.get(t))return s==t;var d=-1,h=!0,p=n&_e?new D:void 0;for(i.set(e,t),i.set(t,e);++d-1&&e%1==0&&e-1&&e%1==0&&e<=xe}function pe(e){var t="undefined"==typeof e?"undefined":_typeof(e);return null!=e&&("object"==t||"function"==t)}function be(e){return null!=e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function ye(e){return le(e)?z(e):Q(e)}function ge(){return[]}function ve(){return!1}var me=200,Me="__lodash_hash_undefined__",we=1,_e=2,xe=9007199254740991,je="[object Arguments]",ke="[object Array]",Se="[object AsyncFunction]",Oe="[object Boolean]",Te="[object Date]",Ce="[object Error]",Ae="[object Function]",De="[object GeneratorFunction]",Ne="[object Map]",Fe="[object Number]",Ue="[object Null]",Ye="[object Object]",Ee="[object Promise]",Ie="[object Proxy]",Pe="[object RegExp]",Le="[object Set]",ze="[object String]",qe="[object Symbol]",He="[object Undefined]",$e="[object WeakMap]",Re="[object ArrayBuffer]",Be="[object DataView]",Ve="[object Float32Array]",We="[object Float64Array]",Xe="[object Int8Array]",Qe="[object Int16Array]",Ze="[object Int32Array]",Ge="[object Uint8Array]",Je="[object Uint8ClampedArray]",Ke="[object Uint16Array]",et="[object Uint32Array]",tt=/[\\^$.*+?()[\]{}|]/g,nt=/^\[object .+?Constructor\]$/,rt=/^(?:0|[1-9]\d*)$/,ot={};ot[Ve]=ot[We]=ot[Xe]=ot[Qe]=ot[Ze]=ot[Ge]=ot[Je]=ot[Ke]=ot[et]=!0,ot[je]=ot[ke]=ot[Re]=ot[Oe]=ot[Be]=ot[Te]=ot[Ce]=ot[Ae]=ot[Ne]=ot[Fe]=ot[Ye]=ot[Pe]=ot[Le]=ot[ze]=ot[$e]=!1;var at="object"==("undefined"==typeof e?"undefined":_typeof(e))&&e&&e.Object===Object&&e,it="object"==("undefined"==typeof self?"undefined":_typeof(self))&&self&&self.Object===Object&&self,ut=at||it||Function("return this")(),ct="object"==("undefined"==typeof n?"undefined":_typeof(n))&&n&&!n.nodeType&&n,ft=ct&&"object"==("undefined"==typeof t?"undefined":_typeof(t))&&t&&!t.nodeType&&t,lt=ft&&ft.exports===ct,st=lt&&at.process,dt=function(){try{return st&&st.binding&&st.binding("util")}catch(e){}}(),ht=dt&&dt.isTypedArray,pt=Array.prototype,bt=Function.prototype,yt=Object.prototype,gt=ut["__core-js_shared__"],vt=bt.toString,mt=yt.hasOwnProperty,Mt=function(){var e=/[^.]+$/.exec(gt&>.keys&>.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),wt=yt.toString,_t=RegExp("^"+vt.call(mt).replace(tt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),xt=lt?ut.Buffer:void 0,jt=ut.Symbol,kt=ut.Uint8Array,St=yt.propertyIsEnumerable,Ot=pt.splice,Tt=jt?jt.toStringTag:void 0,Ct=Object.getOwnPropertySymbols,At=xt?xt.isBuffer:void 0,Dt=s(Object.keys,Object),Nt=te(ut,"DataView"),Ft=te(ut,"Map"),Ut=te(ut,"Promise"),Yt=te(ut,"Set"),Et=te(ut,"WeakMap"),It=te(Object,"create"),Pt=ce(Nt),Lt=ce(Ft),zt=ce(Ut),qt=ce(Yt),Ht=ce(Et),$t=jt?jt.prototype:void 0,Rt=$t?$t.valueOf:void 0;h.prototype.clear=p,h.prototype["delete"]=b,h.prototype.get=y,h.prototype.has=g,h.prototype.set=v,m.prototype.clear=M,m.prototype["delete"]=w,m.prototype.get=_,m.prototype.has=x,m.prototype.set=j,k.prototype.clear=S,k.prototype["delete"]=O,k.prototype.get=T,k.prototype.has=C,k.prototype.set=A,D.prototype.add=D.prototype.push=N,D.prototype.has=F,U.prototype.clear=Y,U.prototype["delete"]=E,U.prototype.get=I,U.prototype.has=P,U.prototype.set=L;var Bt=Ct?function(e){return null==e?[]:(e=Object(e),r(Ct(e),function(t){return St.call(e,t)}))}:ge,Vt=$;(Nt&&Vt(new Nt(new ArrayBuffer(1)))!=Be||Ft&&Vt(new Ft)!=Ne||Ut&&Vt(Ut.resolve())!=Ee||Yt&&Vt(new Yt)!=Le||Et&&Vt(new Et)!=$e)&&(Vt=function(e){var t=$(e),n=t==Ye?e.constructor:void 0,r=n?ce(n):"";if(r)switch(r){case Pt:return Be;case Lt:return Ne;case zt:return Ee;case qt:return Le;case Ht:return $e}return t});var Wt=R(function(){return arguments}())?R:function(e){return be(e)&&mt.call(e,"callee")&&!St.call(e,"callee")},Xt=Array.isArray,Qt=At||ve,Zt=ht?u(ht):X;t.exports=se}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],15:[function(e,t,n){function r(e){this.callback=e,this.ticking=!1}window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,r.prototype={constructor:r,update:function(){this.callback&&this.callback(),this.ticking=!1},requestTick:function(){this.ticking||(requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))),this.ticking=!0)},handleEvent:function(){this.requestTick()}},t.exports=r},{}],16:[function(e,t,n){function r(e){e=o(r.options,e),this.lastKnownScrollY=0,this.initialised=!1,this.onScrollCallback=e.onScrollCallback}var o=(e("lodash.isequal"),e("lodash.foreach"),e("lodash.isempty"),e("lodash.clone"),e("lodash.assign")),a=e("./Debouncer");r.prototype={constructor:r,init:function(){return this.debouncer=new a(this.update.bind(this)),setTimeout(this.attachEvent.bind(this),100),this},attachEvent:function(){this.initialised||(this.lastKnownScrollY=this.getScrollY(),this.initialised=!0,window.addEventListener("scroll",this.debouncer,!1),this.debouncer.handleEvent())},getScrollY:function(){return void 0!==window.pageYOffset?window.pageYOffset:void 0!==window.scrollTop?window.scrollTop:(document.documentElement||document.body.parentNode||document.body).scrollTop},update:function(){var e=this.getScrollY();e>this.lastKnownScrollY?"down":"up";this.onScrollCallback(e),this.lastKnownScrollY=e;
+},destroy:function(){this.initialised=!1,window.removeEventListener("scroll",this.debouncer,!1)}},r.options={onScrollCallback:function(){}},t.exports=r},{"./Debouncer":15,"lodash.assign":10,"lodash.clone":11,"lodash.foreach":12,"lodash.isempty":13,"lodash.isequal":14}],17:[function(e,t,n){function r(e){e=o(e,r.options),this.PROPERTIES=["translateX","translateY","opacity","scale"],this.keyframes=e.keyframes}function o(e){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var t,n,r=e||{};for(n=1;n=n.reveal.when&&t.updateCSSClass(n.element,n.reveal.className)})}var t=this;return new i({onScrollCallback:e.bind(this)}).init(),this.toAnimate=this.keyframes.filter(function(e){return e.animate}),this.toReveal=this.keyframes.filter(function(e){return e.reveal}),this.toAnimate.forEach(function(e){e&&e.animate.forEach(function(n){n.scale=t.createScale(n.property,e.domain,n.range)})}),this},calculatePropertyValues:function(e,t){var n=this,r=new Object;return this.PROPERTIES.forEach(function(o){r[o]=n.getDefaultPropertyValue(o),e.forEach(function(e){e.property==o&&(r[o]=n.scaleValue(e.scale,t))})}),r},scaleValue:function(e,t){return e(t)},updateCSSValues:function(e,t){return e.style.transform="translate3d("+t.translateX+"px, "+t.translateY+"px, 0) scale("+t.scale+")",e.style.opacity=t.opacity,e},updateCSSClass:function(e,t){return e.classList?e.classList.add(t):e.className+=" "+t,e},getDefaultPropertyValue:function(e){switch(e){case"translateX":return 0;case"translateY":return 0;case"scale":return 1;case"rotate":return 0;case"opacity":return 1;default:return null}},createScale:function(e,t,n){switch(e){case"translateX":case"translateY":case"scale":case"opacity":return u.scaleLinear().domain(t).range(n).interpolate(this.easeInterpolate(f.easeCubicOut)).clamp(!0);default:return null}},easeInterpolate:function(e){return function(t,n){var r=c.interpolate(t,n);return function(t){return Math.round(100*r(e(t)))/100}}}},r.options={keyframes:{}},t.exports=r},{"./Scrllr.js":16,"d3-ease":4,"d3-interpolate":6,"d3-scale":7}]},{},[17]);
+//# sourceMappingURL=ScrollOver.js.map
diff --git a/dist/js/lib/ScrollOver.js.map b/dist/js/lib/ScrollOver.js.map
new file mode 100644
index 0000000..ba66bc7
--- /dev/null
+++ b/dist/js/lib/ScrollOver.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["js/lib/ScrollOver.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","global","factory","define","amd","d3","this","ascendingComparator","d","x","ascending","pair","b","tickIncrement","start","stop","count","step","Math","max","power","floor","log","LN10","error","pow","e10","e5","e2","tickStep","step0","abs","step1","NaN","bisector","compare","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","pairs","array","p","Array","cross","values0","values1","reduce","i0","i1","value0","n0","n1","values","descending","number","variance","valueof","value","delta","m","mean","sum","isNaN","deviation","v","sqrt","extent","min","slice","map","constant","identity","range","arguments","ceil","ticks","reverse","isFinite","sturges","LN2","histogram","data","xz","domain","x0","x1","tz","threshold","isArray","shift","pop","bin","bins","push","_","thresholds","quantile","value1","freedmanDiaconis","sort","scott","median","numbers","merge","arrays","merged","j","permute","indexes","permutes","scan","xi","xj","shuffle","random","transpose","matrix","row","zip","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","Object","defineProperty","2","Map","object","each","key","set","createObject","setObject","createMap","setMap","map$$1","Set","add","prefix","has","get","remove","property","clear","keys","entries","size","empty","nest","apply","depth","createResult","setResult","_sortValues","_rollup","keyValue","valuesByKey","result","_entries","sortKey","_sortKeys","k","sortKeys","order","sortValues","rollup","proto","3","extend","parent","definition","create","Color","color","format","trim","toLowerCase","reHex3","exec","parseInt","Rgb","reHex6","rgbn","reRgbInteger","reRgbPercent","reRgbaInteger","rgba","reRgbaPercent","reHslPercent","hsla","reHslaPercent","named","hasOwnProperty","g","rgbConvert","rgb","opacity","h","Hsl","hslConvert","hsl","hsl2rgb","m1","m2","labConvert","Lab","Hcl","deg2rad","cos","c","sin","rgb2xyz","xyz2lab","Xn","y","Yn","z","Zn","lab","t3","t2","t0","lab2xyz","t1","xyz2rgb","hclConvert","atan2","rad2deg","hcl","cubehelixConvert","Cubehelix","BC_DA","ED","EB","bl","E","C","D","cubehelix","_darker","_brighter","reI","reN","reP","RegExp","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","displayable","toString","brighter","darker","round","PI","Kn","A","B","cosh","sinh","4","linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","sinIn","halfPi","sinOut","sinInOut","pi","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounceIn","bounceOut","b1","b0","b3","b2","b4","b6","b5","b7","b8","b9","bounceInOut","exponent","polyIn","custom","polyOut","polyInOut","overshoot","backIn","backOut","backInOut","tau","amplitude","period","elasticIn","asin","elasticOut","elasticInOut","easeLinear","easeQuad","easeQuadIn","easeQuadOut","easeQuadInOut","easeCubic","easeCubicIn","easeCubicOut","easeCubicInOut","easePoly","easePolyIn","easePolyOut","easePolyInOut","easeSin","easeSinIn","easeSinOut","easeSinInOut","easeExp","easeExpIn","easeExpOut","easeExpInOut","easeCircle","easeCircleIn","easeCircleOut","easeCircleInOut","easeBounce","easeBounceIn","easeBounceOut","easeBounceInOut","easeBack","easeBackIn","easeBackOut","easeBackInOut","easeElastic","easeElasticIn","easeElasticOut","easeElasticInOut","5","formatSpecifier","specifier","FormatSpecifier","match","re","fill","align","sign","symbol","zero","width","comma","precision","type","formatTypes","defaultLocale","locale","formatLocale","formatPrefix","prefixExponent","formatDecimal","toExponential","indexOf","coefficient","formatGroup","grouping","thousands","substring","join","formatNumerals","numerals","replace","formatDefault","toPrecision","out","formatPrefixAuto","formatRounded","","%","toFixed","_p","X","toUpperCase","_x","prefixes","newFormat","valuePrefix","valueSuffix","suffix","formatType","valueNegative","maybeSuffix","charCodeAt","decimal","group","Infinity","padding","currency","test","percent","precisionFixed","precisionPrefix","precisionRound","formatDefaultLocale","6","d3Color","basis","v0","v1","v2","v3","exponential","hue","gamma","nogamma","rgbSpline","spline","colors","color$$1","one","parseCss","cssNode","document","createElement","cssRoot","documentElement","cssView","defaultView","style","transform","getComputedStyle","appendChild","getPropertyValue","removeChild","split","decompose","parseSvg","svgNode","createElementNS","setAttribute","baseVal","consolidate","interpolateTransform","parse","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","q","rotate","skewX","scale","translateX","translateY","scaleX","scaleY","exp","tanh","hsl$1","hue$$1","end","lab$1","hcl$1","cubehelix$1","cubehelixGamma","cubehelix$$1","basis$1","basisClosed","rgb$1","rgbGamma","rgb$$1","rgbBasis","rgbBasisClosed","nb","na","date","Date","setTime","reA","reB","source","string","am","bm","bs","bi","lastIndex","index","valueOf","degrees","atan","interpolateTransformCss","interpolateTransformSvg","rho","SQRT2","rho2","rho4","epsilon2","zoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","d1","r0","r1","coshr0","duration","hsl$2","hslLong","hcl$2","hclLong","cubehelix$2","cubehelixLong","quantize","interpolator","samples","interpolate","interpolateArray","interpolateBasis","interpolateBasisClosed","interpolateDate","interpolateNumber","interpolateObject","interpolateRound","interpolateString","interpolateZoom","interpolateRgb","interpolateRgbBasis","interpolateRgbBasisClosed","interpolateHsl","interpolateHslLong","interpolateLab","interpolateHcl","interpolateHclLong","interpolateCubehelix","interpolateCubehelixLong","d3-color","7","d3Array","d3Collection","d3Interpolate","d3Format","d3Time","d3TimeFormat","ordinal","range$$1","unknown","implicit","copy","band","rescale","paddingInner","paddingOuter","bandwidth","ordinalRange","undefined","rangeRound","pointish","point","deinterpolateLinear","deinterpolateClamp","deinterpolate","reinterpolateClamp","reinterpolate","bimap","d0","polymap","target","clamp","continuous","piecewise","output","input","interpolate$$1","unit","invert","map$1","linearish","tickFormat","nice","pow10","powp","base","logp","log10","log2","reflect","logs","pows","raise","quantile$1","invertExtent","quantiles","number$1","calendar","year","month","week","day","hour","minute","second","millisecond","format$$1","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickInterval","interval","tickIntervals","durationYear","every","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","ramp","sequential","name","time","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","timeMillisecond","timeFormat","utcTime","utcYear","utcMonth","utcWeek","utcDay","utcHour","utcMinute","utcSecond","utcMillisecond","utcFormat","UTC","category10","category20b","category20c","category20","warm","cool","rainbow","rainbow$1","ts","viridis","magma","inferno","plasma","scaleBand","scalePoint","scaleIdentity","scaleLinear","scaleLog","scaleOrdinal","scaleImplicit","scalePow","scaleSqrt","scaleQuantile","scaleQuantize","scaleThreshold","scaleTime","scaleUtc","schemeCategory10","schemeCategory20b","schemeCategory20c","schemeCategory20","interpolateCubehelixDefault","interpolateRainbow","interpolateWarm","interpolateCool","interpolateViridis","interpolateMagma","interpolateInferno","interpolatePlasma","scaleSequential","d3-array","d3-collection","d3-format","d3-interpolate","d3-time","d3-time-format","8","localDate","H","M","L","setFullYear","utcDate","setUTCFullYear","newYear","formats","pad","pads","charAt","newParse","newDate","parseSpecifier","Q","V","w","getUTCDay","utcMonday","offset","getUTCFullYear","getUTCMonth","getUTCDate","getDay","timeMonday","getFullYear","getMonth","getDate","W","U","Z","parses","parsePeriod","periodRe","periodLookup","parseShortWeekday","shortWeekdayRe","shortWeekdayLookup","parseWeekday","weekdayRe","weekdayLookup","parseShortMonth","shortMonthRe","shortMonthLookup","parseMonth","monthRe","monthLookup","parseLocaleDateTime","locale_dateTime","parseLocaleDate","locale_date","parseLocaleTime","locale_time","formatShortWeekday","locale_shortWeekdays","formatWeekday","locale_weekdays","formatShortMonth","locale_shortMonths","locale_months","formatPeriod","locale_periods","getHours","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","getUTCHours","dateTime","periods","days","shortDays","months","shortMonths","formatRe","formatLookup","formatDayOfMonth","formatMicroseconds","formatHour24","I","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","Y","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","utcParse","requote","requoteRe","names","numberRe","percentRe","getMilliseconds","getMinutes","getSeconds","timeSunday","timeThursday","getTimezoneOffset","getUTCMilliseconds","getUTCMinutes","getUTCSeconds","dow","utcSunday","utcThursday","timeParse","formatIsoNative","toISOString","parseIsoNative","-","0","isoSpecifier","formatIso","parseIso","timeFormatDefaultLocale","timeFormatLocale","isoFormat","isoParse","9","newInterval","floori","offseti","field","filter","weekday","setDate","setHours","utcWeekday","setUTCDate","setUTCHours","milliseconds","seconds","minutes","hours","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","setMonth","years","setUTCSeconds","utcMinutes","setUTCMinutes","utcHours","utcDays","utcTuesday","utcWednesday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","setUTCMonth","utcMonths","utcYears","timeInterval","timeMilliseconds","utcMilliseconds","timeSeconds","utcSeconds","timeMinutes","timeHours","timeDays","timeWeeks","timeSundays","timeMondays","timeTuesday","timeTuesdays","timeWednesday","timeWednesdays","timeThursdays","timeFriday","timeFridays","timeSaturday","timeSaturdays","timeMonths","timeYears","utcWeeks","10","func","thisArg","args","baseTimes","iteratee","overArg","arg","arrayLikeKeys","inherited","isArguments","String","skipIndexes","isIndex","assignValue","objValue","eq","baseKeys","isPrototype","nativeKeys","baseRest","nativeMax","otherArgs","copyObject","props","customizer","newValue","createAssigner","assigner","sources","guard","isIterateeCall","MAX_SAFE_INTEGER","reIsUint","isObject","isArrayLike","Ctor","objectProto","other","isArrayLikeObject","propertyIsEnumerable","objectToString","argsTag","isLength","isFunction","isObjectLike","tag","funcTag","genTag","nonEnumShadows","assign","11","addMapEntry","addSetEntry","arrayEach","arrayPush","arrayReduce","accumulator","initAccum","getValue","isHostObject","mapToArray","forEach","setToArray","Hash","entry","hashClear","__data__","nativeCreate","hashDelete","hashGet","HASH_UNDEFINED","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","splice","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","hash","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","cache","LARGE_ARRAY_SIZE","baseAssign","baseClone","isDeep","isFull","stack","isArr","initCloneArray","copyArray","getTag","isFunc","isBuffer","cloneBuffer","objectTag","initCloneObject","copySymbols","cloneableTags","initCloneByTag","stacked","getAllKeys","subValue","baseCreate","objectCreate","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","baseIsNative","isMasked","pattern","reIsNative","reIsHostCtor","toSource","buffer","cloneArrayBuffer","arrayBuffer","byteLength","Uint8Array","cloneDataView","dataView","byteOffset","cloneMap","cloneFunc","cloneRegExp","regexp","reFlags","cloneSet","cloneSymbol","symbolValueOf","cloneTypedArray","typedArray","getSymbols","isKeyable","getNative","getPrototype","arrayBufferTag","boolTag","dateTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","mapTag","numberTag","stringTag","regexpTag","setTag","symbolTag","maskSrcKey","funcToString","clone","stubArray","stubFalse","arrayTag","errorTag","promiseTag","weakMapTag","reRegExpChar","freeGlobal","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","arrayProto","funcProto","coreJsData","uid","IE_PROTO","Buffer","_Symbol","getPrototypeOf","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","DataView","Promise","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","ArrayBuffer","resolve","ctorString","window","12","baseForOwn","baseFor","createBaseEach","eachFunc","fromRight","collection","iterable","createBaseFor","baseEach","13","isEmpty","14","arrayFilter","predicate","resIndex","arraySome","baseUnary","cacheHas","SetCache","setCacheAdd","setCacheHas","isArg","isBuff","isType","isTypedArray","undefinedTag","nullTag","symToStringTag","getRawTag","baseIsArguments","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","COMPARE_PARTIAL_FLAG","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsTypedArray","typedArrayTags","isPartial","arrLength","othLength","seen","COMPARE_UNORDERED_FLAG","arrValue","othValue","compared","othIndex","message","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","isOwn","unmasked","nativeObjectToString","isEqual","asyncTag","proxyTag","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","_Symbol2","toStringTag","15","Debouncer","callback","ticking","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","update","requestTick","rafCallback","bind","handleEvent","16","Scrllr","options","extendObject","lastKnownScrollY","initialised","onScrollCallback","debouncer","init","setTimeout","attachEvent","getScrollY","addEventListener","pageYOffset","scrollTop","body","parentNode","currentScrollY","destroy","removeEventListener","./Debouncer","lodash.assign","lodash.clone","lodash.foreach","lodash.isempty","lodash.isequal","17","ScrollOver","PROPERTIES","keyframes","replacement","isDOMElement","Scale","Interpolator","Ease","scrollY","_this2","toAnimate","keyframe","updateCSSValues","element","calculatePropertyValues","animate","toReveal","reveal","when","updateCSSClass","className","_this","item","createScale","animations","_this3","CSSValues","propertyName","getDefaultPropertyValue","animation","scaleValue","CSS","classList","easeInterpolate","ease","./Scrllr.js","d3-ease","d3-scale"],"mappings":"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","file":"ScrollOver.js","sourcesContent":["\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;if (!u && a) return a(o, !0);if (i) return i(o, !0);var f = new Error(\"Cannot find module '\" + o + \"'\");throw f.code = \"MODULE_NOT_FOUND\", f;\n }var l = n[o] = { exports: {} };t[o][0].call(l.exports, function (e) {\n var n = t[o][1][e];return s(n ? n : e);\n }, l, l.exports, e, t, n, r);\n }return n[o].exports;\n }var i = typeof require == \"function\" && require;for (var o = 0; o < r.length; o++) {\n s(r[o]);\n }return s;\n})({ 1: [function (require, module, exports) {\n // https://d3js.org/d3-array/ Version 1.2.1. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n var ascending = function ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n };\n\n var bisector = function bisector(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n }\n return lo;\n },\n right: function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;else lo = mid + 1;\n }\n return lo;\n }\n };\n };\n\n function ascendingComparator(f) {\n return function (d, x) {\n return ascending(f(d), x);\n };\n }\n\n var ascendingBisect = bisector(ascending);\n var bisectRight = ascendingBisect.right;\n var bisectLeft = ascendingBisect.left;\n\n var pairs = function pairs(array, f) {\n if (f == null) f = pair;\n var i = 0,\n n = array.length - 1,\n p = array[0],\n pairs = new Array(n < 0 ? 0 : n);\n while (i < n) {\n pairs[i] = f(p, p = array[++i]);\n }return pairs;\n };\n\n function pair(a, b) {\n return [a, b];\n }\n\n var cross = function cross(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n };\n\n var descending = function descending(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n\n var number = function number(x) {\n return x === null ? NaN : +x;\n };\n\n var variance = function variance(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n } else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n };\n\n var deviation = function deviation(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n };\n\n var extent = function extent(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n } else {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n };\n\n var array = Array.prototype;\n\n var slice = array.slice;\n var map = array.map;\n\n var constant = function constant(x) {\n return function () {\n return x;\n };\n };\n\n var identity = function identity(x) {\n return x;\n };\n\n var range = function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n };\n\n var e10 = Math.sqrt(50);\n var e5 = Math.sqrt(10);\n var e2 = Math.sqrt(2);\n\n var ticks = function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n };\n\n function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n }\n\n function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;else if (error >= e5) step1 *= 5;else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n }\n\n var sturges = function sturges(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n };\n\n var histogram = function histogram() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) {\n tz.shift(), --m;\n }while (tz[m - 1] > x1) {\n tz.pop(), --m;\n }var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisectRight(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function (_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function (_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function (_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n };\n\n var quantile = function quantile(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n };\n\n var freedmanDiaconis = function freedmanDiaconis(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n };\n\n var scott = function scott(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n };\n\n var max = function max(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n } else {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n };\n\n var mean = function mean(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;else --m;\n }\n } else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;else --m;\n }\n }\n\n if (m) return sum / m;\n };\n\n var median = function median(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n } else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n };\n\n var merge = function merge(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) {\n j += arrays[i].length;\n }merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n };\n\n var min = function min(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n } else {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n };\n\n var permute = function permute(array, indexes) {\n var i = indexes.length,\n permutes = new Array(i);\n while (i--) {\n permutes[i] = array[indexes[i]];\n }return permutes;\n };\n\n var scan = function scan(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n };\n\n var shuffle = function shuffle(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n };\n\n var sum = function sum(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n } else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n };\n\n var transpose = function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n\n function length(d) {\n return d.length;\n }\n\n var zip = function zip() {\n return transpose(arguments);\n };\n\n exports.bisect = bisectRight;\n exports.bisectRight = bisectRight;\n exports.bisectLeft = bisectLeft;\n exports.ascending = ascending;\n exports.bisector = bisector;\n exports.cross = cross;\n exports.descending = descending;\n exports.deviation = deviation;\n exports.extent = extent;\n exports.histogram = histogram;\n exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n exports.thresholdScott = scott;\n exports.thresholdSturges = sturges;\n exports.max = max;\n exports.mean = mean;\n exports.median = median;\n exports.merge = merge;\n exports.min = min;\n exports.pairs = pairs;\n exports.permute = permute;\n exports.quantile = quantile;\n exports.range = range;\n exports.scan = scan;\n exports.shuffle = shuffle;\n exports.sum = sum;\n exports.ticks = ticks;\n exports.tickIncrement = tickIncrement;\n exports.tickStep = tickStep;\n exports.transpose = transpose;\n exports.variance = variance;\n exports.zip = zip;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 2: [function (require, module, exports) {\n // https://d3js.org/d3-collection/ Version 1.0.4. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n var prefix = \"$\";\n\n function Map() {}\n\n Map.prototype = map.prototype = {\n constructor: Map,\n has: function has(key) {\n return prefix + key in this;\n },\n get: function get(key) {\n return this[prefix + key];\n },\n set: function set(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function remove(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function clear() {\n for (var property in this) {\n if (property[0] === prefix) delete this[property];\n }\n },\n keys: function keys() {\n var keys = [];\n for (var property in this) {\n if (property[0] === prefix) keys.push(property.slice(1));\n }return keys;\n },\n values: function values() {\n var values = [];\n for (var property in this) {\n if (property[0] === prefix) values.push(this[property]);\n }return values;\n },\n entries: function entries() {\n var entries = [];\n for (var property in this) {\n if (property[0] === prefix) entries.push({ key: property.slice(1), value: this[property] });\n }return entries;\n },\n size: function size() {\n var size = 0;\n for (var property in this) {\n if (property[0] === prefix) ++size;\n }return size;\n },\n empty: function empty() {\n for (var property in this) {\n if (property[0] === prefix) return false;\n }return true;\n },\n each: function each(f) {\n for (var property in this) {\n if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n }\n };\n\n function map(object, f) {\n var map = new Map();\n\n // Copy constructor.\n if (object instanceof Map) object.each(function (value, key) {\n map.set(key, value);\n });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) {\n map.set(i, object[i]);\n } else while (++i < n) {\n map.set(f(o = object[i], i, object), o);\n }\n }\n\n // Convert object to map.\n else if (object) for (var key in object) {\n map.set(key, object[key]);\n }return map;\n }\n\n var nest = function nest() {\n var keys = [],\n _sortKeys = [],\n _sortValues,\n _rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (_sortValues != null) array.sort(_sortValues);\n return _rollup != null ? _rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function (values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function _entries(map$$1, depth) {\n if (++depth > keys.length) return map$$1;\n var array,\n sortKey = _sortKeys[depth - 1];\n if (_rollup != null && depth >= keys.length) array = map$$1.entries();else array = [], map$$1.each(function (v, k) {\n array.push({ key: k, values: _entries(v, depth) });\n });\n return sortKey != null ? array.sort(function (a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n\n return nest = {\n object: function object(array) {\n return apply(array, 0, createObject, setObject);\n },\n map: function map(array) {\n return apply(array, 0, createMap, setMap);\n },\n entries: function entries(array) {\n return _entries(apply(array, 0, createMap, setMap), 0);\n },\n key: function key(d) {\n keys.push(d);return nest;\n },\n sortKeys: function sortKeys(order) {\n _sortKeys[keys.length - 1] = order;return nest;\n },\n sortValues: function sortValues(order) {\n _sortValues = order;return nest;\n },\n rollup: function rollup(f) {\n _rollup = f;return nest;\n }\n };\n };\n\n function createObject() {\n return {};\n }\n\n function setObject(object, key, value) {\n object[key] = value;\n }\n\n function createMap() {\n return map();\n }\n\n function setMap(map$$1, key, value) {\n map$$1.set(key, value);\n }\n\n function Set() {}\n\n var proto = map.prototype;\n\n Set.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function add(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n };\n\n function set(object, f) {\n var set = new Set();\n\n // Copy constructor.\n if (object instanceof Set) object.each(function (value) {\n set.add(value);\n });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1,\n n = object.length;\n if (f == null) while (++i < n) {\n set.add(object[i]);\n } else while (++i < n) {\n set.add(f(object[i], i, object));\n }\n }\n\n return set;\n }\n\n var keys = function keys(map) {\n var keys = [];\n for (var key in map) {\n keys.push(key);\n }return keys;\n };\n\n var values = function values(map) {\n var values = [];\n for (var key in map) {\n values.push(map[key]);\n }return values;\n };\n\n var entries = function entries(map) {\n var entries = [];\n for (var key in map) {\n entries.push({ key: key, value: map[key] });\n }return entries;\n };\n\n exports.nest = nest;\n exports.set = set;\n exports.map = map;\n exports.keys = keys;\n exports.values = values;\n exports.entries = entries;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 3: [function (require, module, exports) {\n // https://d3js.org/d3-color/ Version 1.0.3. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n var define = function define(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n };\n\n function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) {\n prototype[key] = definition[key];\n }return prototype;\n }\n\n function Color() {}\n\n var _darker = 0.7;\n var _brighter = 1 / _darker;\n\n var reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\";\n var reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\";\n var reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\";\n var reHex3 = /^#([0-9a-f]{3})$/;\n var reHex6 = /^#([0-9a-f]{6})$/;\n var reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\");\n var reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\");\n var reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\");\n var reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\");\n var reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\");\n var reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\n var named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n };\n\n define(Color, color, {\n displayable: function displayable() {\n return this.rgb().displayable();\n },\n toString: function toString() {\n return this.rgb() + \"\";\n }\n });\n\n function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb(m >> 8 & 0xf | m >> 4 & 0x0f0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n ) : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n }\n\n function rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n }\n\n function rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n }\n\n function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n }\n\n function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n }\n\n function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n }\n\n define(Rgb, rgb, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function rgb() {\n return this;\n },\n displayable: function displayable() {\n return 0 <= this.r && this.r <= 255 && 0 <= this.g && this.g <= 255 && 0 <= this.b && this.b <= 255 && 0 <= this.opacity && this.opacity <= 1;\n },\n toString: function toString() {\n var a = this.opacity;a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \" + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \" + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n }));\n\n function hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n }\n\n function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n }\n\n function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n }\n\n function Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n }\n\n define(Hsl, hsl, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n },\n displayable: function displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n }\n }));\n\n /* From FvD 13.37, CSS Color Module Level 3 */\n function hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n }\n\n var deg2rad = Math.PI / 180;\n var rad2deg = 180 / Math.PI;\n\n var Kn = 18;\n var Xn = 0.950470;\n var Yn = 1;\n var Zn = 1.088830;\n var t0 = 4 / 29;\n var t1 = 6 / 29;\n var t2 = 3 * t1 * t1;\n var t3 = t1 * t1 * t1;\n\n function labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var b = rgb2xyz(o.r),\n a = rgb2xyz(o.g),\n l = rgb2xyz(o.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n }\n\n function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n }\n\n function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n }\n\n define(Lab, lab, extend(Color, {\n brighter: function brighter(k) {\n return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function darker(k) {\n return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Rgb(xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z), xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z), this.opacity);\n }\n }));\n\n function xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n }\n\n function lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n }\n\n function xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n }\n\n function rgb2xyz(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n }\n\n function hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n }\n\n function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n }\n\n function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n }\n\n define(Hcl, hcl, extend(Color, {\n brighter: function brighter(k) {\n return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n },\n darker: function darker(k) {\n return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n },\n rgb: function rgb() {\n return labConvert(this).rgb();\n }\n }));\n\n var A = -0.14861;\n var B = +1.78277;\n var C = -0.29227;\n var D = -0.90649;\n var E = +1.97294;\n var ED = E * D;\n var EB = E * B;\n var BC_DA = B * C - D * A;\n\n function cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)),\n // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n }\n\n function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n }\n\n function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n }\n\n define(Cubehelix, cubehelix, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity);\n }\n }));\n\n exports.color = color;\n exports.rgb = rgb;\n exports.hsl = hsl;\n exports.lab = lab;\n exports.hcl = hcl;\n exports.cubehelix = cubehelix;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 4: [function (require, module, exports) {\n // https://d3js.org/d3-ease/ Version 1.0.3. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n function linear(t) {\n return +t;\n }\n\n function quadIn(t) {\n return t * t;\n }\n\n function quadOut(t) {\n return t * (2 - t);\n }\n\n function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n }\n\n function cubicIn(t) {\n return t * t * t;\n }\n\n function cubicOut(t) {\n return --t * t * t + 1;\n }\n\n function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n }\n\n var exponent = 3;\n\n var polyIn = function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n }(exponent);\n\n var polyOut = function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n }(exponent);\n\n var polyInOut = function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n }(exponent);\n\n var pi = Math.PI;\n var halfPi = pi / 2;\n\n function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n }\n\n function sinOut(t) {\n return Math.sin(t * halfPi);\n }\n\n function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n }\n\n function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n }\n\n function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n }\n\n function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n }\n\n function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n\n function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n }\n\n function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n }\n\n var b1 = 4 / 11;\n var b2 = 6 / 11;\n var b3 = 8 / 11;\n var b4 = 3 / 4;\n var b5 = 9 / 11;\n var b6 = 10 / 11;\n var b7 = 15 / 16;\n var b8 = 21 / 22;\n var b9 = 63 / 64;\n var b0 = 1 / b1 / b1;\n\n function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n }\n\n function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n }\n\n function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n }\n\n var overshoot = 1.70158;\n\n var backIn = function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n }(overshoot);\n\n var backOut = function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n }(overshoot);\n\n var backInOut = function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n }(overshoot);\n\n var tau = 2 * Math.PI;\n var amplitude = 1;\n var period = 0.3;\n\n var elasticIn = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticIn.period = function (p) {\n return custom(a, p);\n };\n\n return elasticIn;\n }(amplitude, period);\n\n var elasticOut = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticOut.period = function (p) {\n return custom(a, p);\n };\n\n return elasticOut;\n }(amplitude, period);\n\n var elasticInOut = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0 ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p) : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticInOut.period = function (p) {\n return custom(a, p);\n };\n\n return elasticInOut;\n }(amplitude, period);\n\n exports.easeLinear = linear;\n exports.easeQuad = quadInOut;\n exports.easeQuadIn = quadIn;\n exports.easeQuadOut = quadOut;\n exports.easeQuadInOut = quadInOut;\n exports.easeCubic = cubicInOut;\n exports.easeCubicIn = cubicIn;\n exports.easeCubicOut = cubicOut;\n exports.easeCubicInOut = cubicInOut;\n exports.easePoly = polyInOut;\n exports.easePolyIn = polyIn;\n exports.easePolyOut = polyOut;\n exports.easePolyInOut = polyInOut;\n exports.easeSin = sinInOut;\n exports.easeSinIn = sinIn;\n exports.easeSinOut = sinOut;\n exports.easeSinInOut = sinInOut;\n exports.easeExp = expInOut;\n exports.easeExpIn = expIn;\n exports.easeExpOut = expOut;\n exports.easeExpInOut = expInOut;\n exports.easeCircle = circleInOut;\n exports.easeCircleIn = circleIn;\n exports.easeCircleOut = circleOut;\n exports.easeCircleInOut = circleInOut;\n exports.easeBounce = bounceOut;\n exports.easeBounceIn = bounceIn;\n exports.easeBounceOut = bounceOut;\n exports.easeBounceInOut = bounceInOut;\n exports.easeBack = backInOut;\n exports.easeBackIn = backIn;\n exports.easeBackOut = backOut;\n exports.easeBackInOut = backInOut;\n exports.easeElastic = elasticOut;\n exports.easeElasticIn = elasticIn;\n exports.easeElasticOut = elasticOut;\n exports.easeElasticInOut = elasticInOut;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 5: [function (require, module, exports) {\n // https://d3js.org/d3-format/ Version 1.2.0. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n // Computes the decimal coefficient and exponent of the specified number x with\n // significant digits p, where x is positive and p is in [1, 21] or undefined.\n // For example, formatDecimal(1.23) returns [\"123\", 0].\n\n var formatDecimal = function formatDecimal(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i,\n coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)];\n };\n\n var exponent = function exponent(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n };\n\n var formatGroup = function formatGroup(grouping, thousands) {\n return function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n };\n\n var formatNumerals = function formatNumerals(numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n };\n\n var formatDefault = function formatDefault(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\":\n i0 = i1 = i;break;\n case \"0\":\n if (i0 === 0) i0 = i;i1 = i;break;\n case \"e\":\n break out;\n default:\n if (i0 > 0) i0 = 0;break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n };\n\n var prefixExponent;\n\n var formatPrefixAuto = function formatPrefixAuto(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n };\n\n var formatRounded = function formatRounded(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n };\n\n var formatTypes = {\n \"\": formatDefault,\n \"%\": function _(x, p) {\n return (x * 100).toFixed(p);\n },\n \"b\": function b(x) {\n return Math.round(x).toString(2);\n },\n \"c\": function c(x) {\n return x + \"\";\n },\n \"d\": function d(x) {\n return Math.round(x).toString(10);\n },\n \"e\": function e(x, p) {\n return x.toExponential(p);\n },\n \"f\": function f(x, p) {\n return x.toFixed(p);\n },\n \"g\": function g(x, p) {\n return x.toPrecision(p);\n },\n \"o\": function o(x) {\n return Math.round(x).toString(8);\n },\n \"p\": function p(x, _p) {\n return formatRounded(x * 100, _p);\n },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function X(x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n \"x\": function x(_x) {\n return Math.round(_x).toString(16);\n }\n };\n\n // [[fill]align][sign][symbol][0][width][,][.precision][type]\n var re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\n function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n }\n\n formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\n function FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n }\n\n FormatSpecifier.prototype.toString = function () {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width == null ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0)) + this.type;\n };\n\n var identity = function identity(x) {\n return x;\n };\n\n var prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n\n var formatLocale = function formatLocale(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? type ? 6 : 12 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i,\n n,\n c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : \"-\" : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;break;\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;break;\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);break;\n default:\n value = padding + valuePrefix + value + valueSuffix;break;\n }\n\n return numerals(value);\n }\n\n format.toString = function () {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n };\n\n var locale;\n\n defaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n });\n\n function defaultLocale(definition) {\n locale = formatLocale(definition);\n exports.format = locale.format;\n exports.formatPrefix = locale.formatPrefix;\n return locale;\n }\n\n var precisionFixed = function precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n };\n\n var precisionPrefix = function precisionPrefix(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n };\n\n var precisionRound = function precisionRound(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n };\n\n exports.formatDefaultLocale = defaultLocale;\n exports.formatLocale = formatLocale;\n exports.formatSpecifier = formatSpecifier;\n exports.precisionFixed = precisionFixed;\n exports.precisionPrefix = precisionPrefix;\n exports.precisionRound = precisionRound;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 6: [function (require, module, exports) {\n // https://d3js.org/d3-interpolate/ Version 1.1.5. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) : typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) : factory(global.d3 = global.d3 || {}, global.d3);\n })(this, function (exports, d3Color) {\n 'use strict';\n\n function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1,\n t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;\n }\n\n var basis$1 = function basis$1(values) {\n var n = values.length - 1;\n return function (t) {\n var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n };\n\n var basisClosed = function basisClosed(values) {\n var n = values.length;\n return function (t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n };\n\n var constant = function constant(x) {\n return function () {\n return x;\n };\n };\n\n function linear(a, d) {\n return function (t) {\n return a + t * d;\n };\n }\n\n function exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n return Math.pow(a + t * b, y);\n };\n }\n\n function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n }\n\n function gamma(y) {\n return (y = +y) === 1 ? nogamma : function (a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n }\n\n function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n }\n\n var rgb$1 = function rgbGamma(y) {\n var color$$1 = gamma(y);\n\n function rgb$$1(start, end) {\n var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),\n g = color$$1(start.g, end.g),\n b = color$$1(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb$$1.gamma = rgbGamma;\n\n return rgb$$1;\n }(1);\n\n function rgbSpline(spline) {\n return function (colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i,\n color$$1;\n for (i = 0; i < n; ++i) {\n color$$1 = d3Color.rgb(colors[i]);\n r[i] = color$$1.r || 0;\n g[i] = color$$1.g || 0;\n b[i] = color$$1.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color$$1.opacity = 1;\n return function (t) {\n color$$1.r = r(t);\n color$$1.g = g(t);\n color$$1.b = b(t);\n return color$$1 + \"\";\n };\n };\n }\n\n var rgbBasis = rgbSpline(basis$1);\n var rgbBasisClosed = rgbSpline(basisClosed);\n\n var array = function array(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(nb),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) {\n x[i] = value(a[i], b[i]);\n }for (; i < nb; ++i) {\n c[i] = b[i];\n }return function (t) {\n for (i = 0; i < na; ++i) {\n c[i] = x[i](t);\n }return c;\n };\n };\n\n var date = function date(a, b) {\n var d = new Date();\n return a = +a, b -= a, function (t) {\n return d.setTime(a + b * t), d;\n };\n };\n\n var number = function number(a, b) {\n return a = +a, b -= a, function (t) {\n return a + b * t;\n };\n };\n\n var object = function object(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || (typeof a === \"undefined\" ? \"undefined\" : _typeof(a)) !== \"object\") a = {};\n if (b === null || (typeof b === \"undefined\" ? \"undefined\" : _typeof(b)) !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }return c;\n };\n };\n\n var reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\n var reB = new RegExp(reA.source, \"g\");\n\n function zero(b) {\n return function () {\n return b;\n };\n }\n\n function one(b) {\n return function (t) {\n return b(t) + \"\";\n };\n }\n\n var string = function string(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0,\n // scan index for next number in b\n am,\n // current match in a\n bm,\n // current match in b\n bs,\n // string preceding current number in b, if any\n i = -1,\n // index in s\n s = [],\n // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else {\n // interpolate non-matching numbers\n s[++i] = null;\n q.push({ i: i, x: number(am, bm) });\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) {\n s[(o = q[i]).i] = o.x(t);\n }return s.join(\"\");\n });\n };\n\n var value = function value(a, b) {\n var t = typeof b === \"undefined\" ? \"undefined\" : _typeof(b),\n c;\n return b == null || t === \"boolean\" ? constant(b) : (t === \"number\" ? number : t === \"string\" ? (c = d3Color.color(b)) ? (b = c, rgb$1) : string : b instanceof d3Color.color ? rgb$1 : b instanceof Date ? date : Array.isArray(b) ? array : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : number)(a, b);\n };\n\n var round = function round(a, b) {\n return a = +a, b -= a, function (t) {\n return Math.round(a + b * t);\n };\n };\n\n var degrees = 180 / Math.PI;\n\n var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n };\n\n var decompose = function decompose(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n };\n\n var cssNode;\n var cssRoot;\n var cssView;\n var svgNode;\n\n function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n }\n\n function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n }\n\n function interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({ i: i - 4, x: number(xa, xb) }, { i: i - 2, x: number(ya, yb) });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path\n q.push({ i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b) });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({ i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b) });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({ i: i - 4, x: number(xa, xb) }, { i: i - 2, x: number(ya, yb) });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function (a, b) {\n var s = [],\n // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n while (++i < n) {\n s[(o = q[i]).i] = o.x(t);\n }return s.join(\"\");\n };\n };\n }\n\n var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\n var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\n var rho = Math.SQRT2;\n var rho2 = 2;\n var rho4 = 4;\n var epsilon2 = 1e-12;\n\n function cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n\n function sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n\n function tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n var zoom = function zoom(p0, p1) {\n var ux0 = p0[0],\n uy0 = p0[1],\n w0 = p0[2],\n ux1 = p1[0],\n uy1 = p1[1],\n w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function i(t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(rho * t * S)];\n };\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function i(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / cosh(rho * s + r0)];\n };\n }\n\n i.duration = S * 1000;\n\n return i;\n };\n\n function hsl$1(hue$$1) {\n return function (start, end) {\n var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n }\n\n var hsl$2 = hsl$1(hue);\n var hslLong = hsl$1(nogamma);\n\n function lab$1(start, end) {\n var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),\n a = nogamma(start.a, end.a),\n b = nogamma(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n function hcl$1(hue$$1) {\n return function (start, end) {\n var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),\n c = nogamma(start.c, end.c),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n }\n\n var hcl$2 = hcl$1(hue);\n var hclLong = hcl$1(nogamma);\n\n function cubehelix$1(hue$$1) {\n return function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix$$1(start, end) {\n var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix$$1.gamma = cubehelixGamma;\n\n return cubehelix$$1;\n }(1);\n }\n\n var cubehelix$2 = cubehelix$1(hue);\n var cubehelixLong = cubehelix$1(nogamma);\n\n var quantize = function quantize(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) {\n samples[i] = interpolator(i / (n - 1));\n }return samples;\n };\n\n exports.interpolate = value;\n exports.interpolateArray = array;\n exports.interpolateBasis = basis$1;\n exports.interpolateBasisClosed = basisClosed;\n exports.interpolateDate = date;\n exports.interpolateNumber = number;\n exports.interpolateObject = object;\n exports.interpolateRound = round;\n exports.interpolateString = string;\n exports.interpolateTransformCss = interpolateTransformCss;\n exports.interpolateTransformSvg = interpolateTransformSvg;\n exports.interpolateZoom = zoom;\n exports.interpolateRgb = rgb$1;\n exports.interpolateRgbBasis = rgbBasis;\n exports.interpolateRgbBasisClosed = rgbBasisClosed;\n exports.interpolateHsl = hsl$2;\n exports.interpolateHslLong = hslLong;\n exports.interpolateLab = lab$1;\n exports.interpolateHcl = hcl$2;\n exports.interpolateHclLong = hclLong;\n exports.interpolateCubehelix = cubehelix$2;\n exports.interpolateCubehelixLong = cubehelixLong;\n exports.quantize = quantize;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, { \"d3-color\": 3 }], 7: [function (require, module, exports) {\n // https://d3js.org/d3-scale/ Version 1.0.6. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array'), require('d3-collection'), require('d3-interpolate'), require('d3-format'), require('d3-time'), require('d3-time-format'), require('d3-color')) : typeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-collection', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format', 'd3-color'], factory) : factory(global.d3 = global.d3 || {}, global.d3, global.d3, global.d3, global.d3, global.d3, global.d3, global.d3);\n })(this, function (exports, d3Array, d3Collection, d3Interpolate, d3Format, d3Time, d3TimeFormat, d3Color) {\n 'use strict';\n\n var array = Array.prototype;\n\n var map$1 = array.map;\n var slice = array.slice;\n\n var implicit = { name: \"implicit\" };\n\n function ordinal(range$$1) {\n var index = d3Collection.map(),\n domain = [],\n unknown = implicit;\n\n range$$1 = range$$1 == null ? [] : slice.call(range$$1);\n\n function scale(d) {\n var key = d + \"\",\n i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range$$1[(i - 1) % range$$1.length];\n }\n\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = d3Collection.map();\n var i = -1,\n n = _.length,\n d,\n key;\n while (++i < n) {\n if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n }return scale;\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = slice.call(_), scale) : range$$1.slice();\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function () {\n return ordinal().domain(domain).range(range$$1).unknown(unknown);\n };\n\n return scale;\n }\n\n function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range$$1 = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range$$1[1] < range$$1[0],\n start = range$$1[reverse - 0],\n stop = range$$1[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = d3Array.range(n).map(function (i) {\n return start + step * i;\n });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice();\n };\n\n scale.rangeRound = function (_) {\n return range$$1 = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function () {\n return bandwidth;\n };\n\n scale.step = function () {\n return step;\n };\n\n scale.round = function (_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function (_) {\n return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function (_) {\n return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function (_) {\n return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n };\n\n scale.align = function (_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function () {\n return band().domain(domain()).range(range$$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n\n return rescale();\n }\n\n function pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function () {\n return pointish(copy());\n };\n\n return scale;\n }\n\n function point() {\n return pointish(band().paddingInner(1));\n }\n\n var constant = function constant(x) {\n return function () {\n return x;\n };\n };\n\n var number = function number(x) {\n return +x;\n };\n\n var unit = [0, 1];\n\n function deinterpolateLinear(a, b) {\n return (b -= a = +a) ? function (x) {\n return (x - a) / b;\n } : constant(b);\n }\n\n function deinterpolateClamp(deinterpolate) {\n return function (a, b) {\n var d = deinterpolate(a = +a, b = +b);\n return function (x) {\n return x <= a ? 0 : x >= b ? 1 : d(x);\n };\n };\n }\n\n function reinterpolateClamp(reinterpolate) {\n return function (a, b) {\n var r = reinterpolate(a = +a, b = +b);\n return function (t) {\n return t <= 0 ? a : t >= 1 ? b : r(t);\n };\n };\n }\n\n function bimap(domain, range$$1, deinterpolate, reinterpolate) {\n var d0 = domain[0],\n d1 = domain[1],\n r0 = range$$1[0],\n r1 = range$$1[1];\n if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n return function (x) {\n return r0(d0(x));\n };\n }\n\n function polymap(domain, range$$1, deinterpolate, reinterpolate) {\n var j = Math.min(domain.length, range$$1.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range$$1 = range$$1.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = deinterpolate(domain[i], domain[i + 1]);\n r[i] = reinterpolate(range$$1[i], range$$1[i + 1]);\n }\n\n return function (x) {\n var i = d3Array.bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n }\n\n function copy(source, target) {\n return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp());\n }\n\n // deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n // reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\n function continuous(deinterpolate, reinterpolate) {\n var domain = unit,\n range$$1 = unit,\n interpolate$$1 = d3Interpolate.interpolate,\n clamp = false,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range$$1.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return (output || (output = piecewise(domain, range$$1, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x);\n }\n\n scale.invert = function (y) {\n return (input || (input = piecewise(range$$1, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n };\n\n scale.domain = function (_) {\n return arguments.length ? (domain = map$1.call(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();\n };\n\n scale.rangeRound = function (_) {\n return range$$1 = slice.call(_), interpolate$$1 = d3Interpolate.interpolateRound, rescale();\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, rescale()) : clamp;\n };\n\n scale.interpolate = function (_) {\n return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;\n };\n\n return rescale();\n }\n\n var tickFormat = function tickFormat(domain, count, specifier) {\n var start = domain[0],\n stop = domain[domain.length - 1],\n step = d3Array.tickStep(start, stop, count == null ? 10 : count),\n precision;\n specifier = d3Format.formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\":\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision;\n return d3Format.formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\":\n {\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\":\n {\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return d3Format.format(specifier);\n };\n\n function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function (count) {\n var d = domain();\n return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function (count, specifier) {\n return tickFormat(domain(), count, specifier);\n };\n\n scale.nice = function (count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = d3Array.tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = d3Array.tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = d3Array.tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n }\n\n function linear() {\n var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber);\n\n scale.copy = function () {\n return copy(scale, linear());\n };\n\n return linearish(scale);\n }\n\n function identity() {\n var domain = [0, 1];\n\n function scale(x) {\n return +x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function (_) {\n return arguments.length ? (domain = map$1.call(_, number), scale) : domain.slice();\n };\n\n scale.copy = function () {\n return identity().domain(domain);\n };\n\n return linearish(scale);\n }\n\n var nice = function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n };\n\n function deinterpolate(a, b) {\n return (b = Math.log(b / a)) ? function (x) {\n return Math.log(x / a) / b;\n } : constant(b);\n }\n\n function reinterpolate(a, b) {\n return a < 0 ? function (t) {\n return -Math.pow(-b, t) * Math.pow(-a, 1 - t);\n } : function (t) {\n return Math.pow(b, t) * Math.pow(a, 1 - t);\n };\n }\n\n function pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n }\n\n function powp(base) {\n return base === 10 ? pow10 : base === Math.E ? Math.exp : function (x) {\n return Math.pow(base, x);\n };\n }\n\n function logp(base) {\n return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), function (x) {\n return Math.log(x) / base;\n });\n }\n\n function reflect(f) {\n return function (x) {\n return -f(-x);\n };\n }\n\n function log() {\n var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n domain = scale.domain,\n base = 10,\n logs = logp(10),\n pows = powp(10);\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n return scale;\n }\n\n scale.base = function (_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function (count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function (count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = d3Format.format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function (d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function () {\n return domain(nice(domain(), {\n floor: function floor(x) {\n return pows(Math.floor(logs(x)));\n },\n ceil: function ceil(x) {\n return pows(Math.ceil(logs(x)));\n }\n }));\n };\n\n scale.copy = function () {\n return copy(scale, log().base(base));\n };\n\n return scale;\n }\n\n function raise(x, exponent) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n }\n\n function pow() {\n var exponent = 1,\n scale = continuous(deinterpolate, reinterpolate),\n domain = scale.domain;\n\n function deinterpolate(a, b) {\n return (b = raise(b, exponent) - (a = raise(a, exponent))) ? function (x) {\n return (raise(x, exponent) - a) / b;\n } : constant(b);\n }\n\n function reinterpolate(a, b) {\n b = raise(b, exponent) - (a = raise(a, exponent));\n return function (t) {\n return raise(a + b * t, 1 / exponent);\n };\n }\n\n scale.exponent = function (_) {\n return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n };\n\n scale.copy = function () {\n return copy(scale, pow().exponent(exponent));\n };\n\n return linearish(scale);\n }\n\n function sqrt() {\n return pow().exponent(0.5);\n }\n\n function quantile$1() {\n var domain = [],\n range$$1 = [],\n thresholds = [];\n\n function rescale() {\n var i = 0,\n n = Math.max(1, range$$1.length);\n thresholds = new Array(n - 1);\n while (++i < n) {\n thresholds[i - 1] = d3Array.quantile(domain, i / n);\n }return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range$$1[d3Array.bisect(thresholds, x)];\n }\n\n scale.invertExtent = function (y) {\n var i = range$$1.indexOf(y);\n return i < 0 ? [NaN, NaN] : [i > 0 ? thresholds[i - 1] : domain[0], i < thresholds.length ? thresholds[i] : domain[domain.length - 1]];\n };\n\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) {\n if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n }domain.sort(d3Array.ascending);\n return rescale();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();\n };\n\n scale.quantiles = function () {\n return thresholds.slice();\n };\n\n scale.copy = function () {\n return quantile$1().domain(domain).range(range$$1);\n };\n\n return scale;\n }\n\n function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range$$1 = [0, 1];\n\n function scale(x) {\n if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) {\n domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n }return scale;\n }\n\n scale.domain = function (_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function (_) {\n return arguments.length ? (n = (range$$1 = slice.call(_)).length - 1, rescale()) : range$$1.slice();\n };\n\n scale.invertExtent = function (y) {\n var i = range$$1.indexOf(y);\n return i < 0 ? [NaN, NaN] : i < 1 ? [x0, domain[0]] : i >= n ? [domain[n - 1], x1] : [domain[i - 1], domain[i]];\n };\n\n scale.copy = function () {\n return quantize().domain([x0, x1]).range(range$$1);\n };\n\n return linearish(scale);\n }\n\n function threshold() {\n var domain = [0.5],\n range$$1 = [0, 1],\n n = 1;\n\n function scale(x) {\n if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];\n }\n\n scale.domain = function (_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : domain.slice();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : range$$1.slice();\n };\n\n scale.invertExtent = function (y) {\n var i = range$$1.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.copy = function () {\n return threshold().domain(domain).range(range$$1);\n };\n\n return scale;\n }\n\n var durationSecond = 1000;\n var durationMinute = durationSecond * 60;\n var durationHour = durationMinute * 60;\n var durationDay = durationHour * 24;\n var durationWeek = durationDay * 7;\n var durationMonth = durationDay * 30;\n var durationYear = durationDay * 365;\n\n function date(t) {\n return new Date(t);\n }\n\n function number$1(t) {\n return t instanceof Date ? +t : +new Date(+t);\n }\n\n function calendar(year, month, week, day, hour, minute, second, millisecond, format$$1) {\n var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format$$1(\".%L\"),\n formatSecond = format$$1(\":%S\"),\n formatMinute = format$$1(\"%I:%M\"),\n formatHour = format$$1(\"%I %p\"),\n formatDay = format$$1(\"%a %d\"),\n formatWeek = format$$1(\"%b %d\"),\n formatMonth = format$$1(\"%B\"),\n formatYear = format$$1(\"%Y\");\n\n var tickIntervals = [[second, 1, durationSecond], [second, 5, 5 * durationSecond], [second, 15, 15 * durationSecond], [second, 30, 30 * durationSecond], [minute, 1, durationMinute], [minute, 5, 5 * durationMinute], [minute, 15, 15 * durationMinute], [minute, 30, 30 * durationMinute], [hour, 1, durationHour], [hour, 3, 3 * durationHour], [hour, 6, 6 * durationHour], [hour, 12, 12 * durationHour], [day, 1, durationDay], [day, 2, 2 * durationDay], [week, 1, durationWeek], [month, 1, durationMonth], [month, 3, 3 * durationMonth], [year, 1, durationYear]];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = d3Array.bisector(function (i) {\n return i[2];\n }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = d3Array.tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = d3Array.tickStep(start, stop, interval);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function (y) {\n return new Date(invert(y));\n };\n\n scale.domain = function (_) {\n return arguments.length ? domain(map$1.call(_, number$1)) : domain().map(date);\n };\n\n scale.ticks = function (interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function (count, specifier) {\n return specifier == null ? tickFormat : format$$1(specifier);\n };\n\n scale.nice = function (interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step)) ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function () {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format$$1));\n };\n\n return scale;\n }\n\n var time = function time() {\n return calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n };\n\n var utcTime = function utcTime() {\n return calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n };\n\n var colors = function colors(s) {\n return s.match(/.{6}/g).map(function (x) {\n return \"#\" + x;\n });\n };\n\n var category10 = colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n\n var category20b = colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n\n var category20c = colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n\n var category20 = colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n\n var cubehelix$1 = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(300, 0.5, 0.0), d3Color.cubehelix(-240, 0.5, 1.0));\n\n var warm = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(-100, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\n var cool = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(260, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\n var rainbow = d3Color.cubehelix();\n\n var rainbow$1 = function rainbow$1(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n };\n\n function ramp(range$$1) {\n var n = range$$1.length;\n return function (t) {\n return range$$1[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n }\n\n var viridis = ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\n var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\n var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\n var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n\n function sequential(interpolator) {\n var x0 = 0,\n x1 = 1,\n clamp = false;\n\n function scale(x) {\n var t = (x - x0) / (x1 - x0);\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.domain = function (_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function () {\n return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n };\n\n return linearish(scale);\n }\n\n exports.scaleBand = band;\n exports.scalePoint = point;\n exports.scaleIdentity = identity;\n exports.scaleLinear = linear;\n exports.scaleLog = log;\n exports.scaleOrdinal = ordinal;\n exports.scaleImplicit = implicit;\n exports.scalePow = pow;\n exports.scaleSqrt = sqrt;\n exports.scaleQuantile = quantile$1;\n exports.scaleQuantize = quantize;\n exports.scaleThreshold = threshold;\n exports.scaleTime = time;\n exports.scaleUtc = utcTime;\n exports.schemeCategory10 = category10;\n exports.schemeCategory20b = category20b;\n exports.schemeCategory20c = category20c;\n exports.schemeCategory20 = category20;\n exports.interpolateCubehelixDefault = cubehelix$1;\n exports.interpolateRainbow = rainbow$1;\n exports.interpolateWarm = warm;\n exports.interpolateCool = cool;\n exports.interpolateViridis = viridis;\n exports.interpolateMagma = magma;\n exports.interpolateInferno = inferno;\n exports.interpolatePlasma = plasma;\n exports.scaleSequential = sequential;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, { \"d3-array\": 1, \"d3-collection\": 2, \"d3-color\": 3, \"d3-format\": 5, \"d3-interpolate\": 6, \"d3-time\": 9, \"d3-time-format\": 8 }], 8: [function (require, module, exports) {\n // https://d3js.org/d3-time-format/ Version 2.1.0. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) : typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) : factory(global.d3 = global.d3 || {}, global.d3);\n })(this, function (exports, d3Time) {\n 'use strict';\n\n function localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n }\n\n function utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n }\n\n function newYear(y) {\n return { y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0 };\n }\n\n function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function (string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week);\n week = d3Time.utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week);\n week = d3Time.timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function format(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function parse(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function utcFormat(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function utcParse(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n }\n\n var pads = { \"-\": \"\", \"_\": \" \", \"0\": \"0\" };\n var numberRe = /^\\s*\\d+/;\n var percentRe = /^%/;\n var requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\n function pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n\n function requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n }\n\n function formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n }\n\n function formatLookup(names) {\n var map = {},\n i = -1,\n n = names.length;\n while (++i < n) {\n map[names[i].toLowerCase()] = i;\n }return map;\n }\n\n function parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n\n function parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n }\n\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n }\n\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n\n function parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n }\n\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n\n function parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n }\n\n function parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0] * 1000, i + n[0].length) : -1;\n }\n\n function formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n }\n\n function formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n }\n\n function formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n }\n\n function formatDayOfYear(d, p) {\n return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n }\n\n function formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n }\n\n function formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n }\n\n function formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n }\n\n function formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n }\n\n function formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n }\n\n function formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n }\n\n function formatWeekNumberSunday(d, p) {\n return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);\n }\n\n function formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);\n return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2);\n }\n\n function formatWeekdayNumberSunday(d) {\n return d.getDay();\n }\n\n function formatWeekNumberMonday(d, p) {\n return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);\n }\n\n function formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n }\n\n function formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n }\n\n function formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n }\n\n function formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n }\n\n function formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n }\n\n function formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n }\n\n function formatUTCDayOfYear(d, p) {\n return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n }\n\n function formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n }\n\n function formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n }\n\n function formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n }\n\n function formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n }\n\n function formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n }\n\n function formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n }\n\n function formatUTCWeekNumberSunday(d, p) {\n return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n }\n\n function formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);\n return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2);\n }\n\n function formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n }\n\n function formatUTCWeekNumberMonday(d, p) {\n return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n }\n\n function formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n }\n\n function formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n }\n\n function formatUTCZone() {\n return \"+0000\";\n }\n\n function formatLiteralPercent() {\n return \"%\";\n }\n\n function formatUnixTimestamp(d) {\n return +d;\n }\n\n function formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n }\n\n var locale;\n\n defaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n\n function defaultLocale(definition) {\n locale = formatLocale(definition);\n exports.timeFormat = locale.format;\n exports.timeParse = locale.parse;\n exports.utcFormat = locale.utcFormat;\n exports.utcParse = locale.utcParse;\n return locale;\n }\n\n var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\n function formatIsoNative(date) {\n return date.toISOString();\n }\n\n var formatIso = Date.prototype.toISOString ? formatIsoNative : exports.utcFormat(isoSpecifier);\n\n function parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n }\n\n var parseIso = +new Date(\"2000-01-01T00:00:00.000Z\") ? parseIsoNative : exports.utcParse(isoSpecifier);\n\n exports.timeFormatDefaultLocale = defaultLocale;\n exports.timeFormatLocale = formatLocale;\n exports.isoFormat = formatIso;\n exports.isoParse = parseIso;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, { \"d3-time\": 9 }], 9: [function (require, module, exports) {\n // https://d3js.org/d3-time/ Version 1.0.7. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n var t0 = new Date();\n var t1 = new Date();\n\n function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function (date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function (date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function (date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function (start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do {\n range.push(new Date(+start));\n } while ((offseti(start, step), floori(start), start < stop));\n return range;\n };\n\n interval.filter = function (test) {\n return newInterval(function (date) {\n if (date >= date) while (floori(date), !test(date)) {\n date.setTime(date - 1);\n }\n }, function (date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function (start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function (step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? function (d) {\n return field(d) % step === 0;\n } : function (d) {\n return interval.count(0, d) % step === 0;\n });\n };\n }\n\n return interval;\n }\n\n var millisecond = newInterval(function () {\n // noop\n }, function (date, step) {\n date.setTime(+date + step);\n }, function (start, end) {\n return end - start;\n });\n\n // An optimized implementation for this simple case.\n millisecond.every = function (k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function (date) {\n date.setTime(Math.floor(date / k) * k);\n }, function (date, step) {\n date.setTime(+date + step * k);\n }, function (start, end) {\n return (end - start) / k;\n });\n };\n\n var milliseconds = millisecond.range;\n\n var durationSecond = 1e3;\n var durationMinute = 6e4;\n var durationHour = 36e5;\n var durationDay = 864e5;\n var durationWeek = 6048e5;\n\n var second = newInterval(function (date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n }, function (date, step) {\n date.setTime(+date + step * durationSecond);\n }, function (start, end) {\n return (end - start) / durationSecond;\n }, function (date) {\n return date.getUTCSeconds();\n });\n\n var seconds = second.range;\n\n var minute = newInterval(function (date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n }, function (date, step) {\n date.setTime(+date + step * durationMinute);\n }, function (start, end) {\n return (end - start) / durationMinute;\n }, function (date) {\n return date.getMinutes();\n });\n\n var minutes = minute.range;\n\n var hour = newInterval(function (date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n }, function (date, step) {\n date.setTime(+date + step * durationHour);\n }, function (start, end) {\n return (end - start) / durationHour;\n }, function (date) {\n return date.getHours();\n });\n\n var hours = hour.range;\n\n var day = newInterval(function (date) {\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setDate(date.getDate() + step);\n }, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n }, function (date) {\n return date.getDate() - 1;\n });\n\n var days = day.range;\n\n function weekday(i) {\n return newInterval(function (date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n }\n\n var sunday = weekday(0);\n var monday = weekday(1);\n var tuesday = weekday(2);\n var wednesday = weekday(3);\n var thursday = weekday(4);\n var friday = weekday(5);\n var saturday = weekday(6);\n\n var sundays = sunday.range;\n var mondays = monday.range;\n var tuesdays = tuesday.range;\n var wednesdays = wednesday.range;\n var thursdays = thursday.range;\n var fridays = friday.range;\n var saturdays = saturday.range;\n\n var month = newInterval(function (date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setMonth(date.getMonth() + step);\n }, function (start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n }, function (date) {\n return date.getMonth();\n });\n\n var months = month.range;\n\n var year = newInterval(function (date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setFullYear(date.getFullYear() + step);\n }, function (start, end) {\n return end.getFullYear() - start.getFullYear();\n }, function (date) {\n return date.getFullYear();\n });\n\n // An optimized implementation for this simple case.\n year.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function (date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n };\n\n var years = year.range;\n\n var utcMinute = newInterval(function (date) {\n date.setUTCSeconds(0, 0);\n }, function (date, step) {\n date.setTime(+date + step * durationMinute);\n }, function (start, end) {\n return (end - start) / durationMinute;\n }, function (date) {\n return date.getUTCMinutes();\n });\n\n var utcMinutes = utcMinute.range;\n\n var utcHour = newInterval(function (date) {\n date.setUTCMinutes(0, 0, 0);\n }, function (date, step) {\n date.setTime(+date + step * durationHour);\n }, function (start, end) {\n return (end - start) / durationHour;\n }, function (date) {\n return date.getUTCHours();\n });\n\n var utcHours = utcHour.range;\n\n var utcDay = newInterval(function (date) {\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n }, function (start, end) {\n return (end - start) / durationDay;\n }, function (date) {\n return date.getUTCDate() - 1;\n });\n\n var utcDays = utcDay.range;\n\n function utcWeekday(i) {\n return newInterval(function (date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function (start, end) {\n return (end - start) / durationWeek;\n });\n }\n\n var utcSunday = utcWeekday(0);\n var utcMonday = utcWeekday(1);\n var utcTuesday = utcWeekday(2);\n var utcWednesday = utcWeekday(3);\n var utcThursday = utcWeekday(4);\n var utcFriday = utcWeekday(5);\n var utcSaturday = utcWeekday(6);\n\n var utcSundays = utcSunday.range;\n var utcMondays = utcMonday.range;\n var utcTuesdays = utcTuesday.range;\n var utcWednesdays = utcWednesday.range;\n var utcThursdays = utcThursday.range;\n var utcFridays = utcFriday.range;\n var utcSaturdays = utcSaturday.range;\n\n var utcMonth = newInterval(function (date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n }, function (start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n }, function (date) {\n return date.getUTCMonth();\n });\n\n var utcMonths = utcMonth.range;\n\n var utcYear = newInterval(function (date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n }, function (start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n }, function (date) {\n return date.getUTCFullYear();\n });\n\n // An optimized implementation for this simple case.\n utcYear.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function (date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n };\n\n var utcYears = utcYear.range;\n\n exports.timeInterval = newInterval;\n exports.timeMillisecond = millisecond;\n exports.timeMilliseconds = milliseconds;\n exports.utcMillisecond = millisecond;\n exports.utcMilliseconds = milliseconds;\n exports.timeSecond = second;\n exports.timeSeconds = seconds;\n exports.utcSecond = second;\n exports.utcSeconds = seconds;\n exports.timeMinute = minute;\n exports.timeMinutes = minutes;\n exports.timeHour = hour;\n exports.timeHours = hours;\n exports.timeDay = day;\n exports.timeDays = days;\n exports.timeWeek = sunday;\n exports.timeWeeks = sundays;\n exports.timeSunday = sunday;\n exports.timeSundays = sundays;\n exports.timeMonday = monday;\n exports.timeMondays = mondays;\n exports.timeTuesday = tuesday;\n exports.timeTuesdays = tuesdays;\n exports.timeWednesday = wednesday;\n exports.timeWednesdays = wednesdays;\n exports.timeThursday = thursday;\n exports.timeThursdays = thursdays;\n exports.timeFriday = friday;\n exports.timeFridays = fridays;\n exports.timeSaturday = saturday;\n exports.timeSaturdays = saturdays;\n exports.timeMonth = month;\n exports.timeMonths = months;\n exports.timeYear = year;\n exports.timeYears = years;\n exports.utcMinute = utcMinute;\n exports.utcMinutes = utcMinutes;\n exports.utcHour = utcHour;\n exports.utcHours = utcHours;\n exports.utcDay = utcDay;\n exports.utcDays = utcDays;\n exports.utcWeek = utcSunday;\n exports.utcWeeks = utcSundays;\n exports.utcSunday = utcSunday;\n exports.utcSundays = utcSundays;\n exports.utcMonday = utcMonday;\n exports.utcMondays = utcMondays;\n exports.utcTuesday = utcTuesday;\n exports.utcTuesdays = utcTuesdays;\n exports.utcWednesday = utcWednesday;\n exports.utcWednesdays = utcWednesdays;\n exports.utcThursday = utcThursday;\n exports.utcThursdays = utcThursdays;\n exports.utcFriday = utcFriday;\n exports.utcFridays = utcFridays;\n exports.utcSaturday = utcSaturday;\n exports.utcSaturdays = utcSaturdays;\n exports.utcMonth = utcMonth;\n exports.utcMonths = utcMonths;\n exports.utcYear = utcYear;\n exports.utcYears = utcYears;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 10: [function (require, module, exports) {\n /**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /** Used for built-in method references. */\n var objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objectToString = objectProto.toString;\n\n /** Built-in value references. */\n var propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n /** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\n var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function (object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index === \"undefined\" ? \"undefined\" : _typeof(index);\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return !!value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function (object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n module.exports = assign;\n }, {}], 11: [function (require, module, exports) {\n (function (global) {\n /**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\n function addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n }\n\n /**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\n function addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\n function isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n }\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = root['__core-js_shared__'];\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objectToString = objectProto.toString;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n /** Built-in value references. */\n var Buffer = moduleExports ? root.Buffer : undefined,\n _Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n this.__data__ = new ListCache(entries);\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache();\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n return this.__data__['delete'](key);\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n object[key] = value;\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || isFunc && !object) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function (subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n function baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n return objectToString.call(value);\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\n function cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor());\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\n function cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor());\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n }\n\n /**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11,\n // for data views in Edge < 14, and promises in Node.js.\n if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag:case float64Tag:\n case int8Tag:case int16Tag:case int32Tag:\n case uint8Tag:case uint8ClampedTag:case uint16Tag:case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, false, true);\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return !!value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n module.exports = clone;\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}], 12: [function (require, module, exports) {\n /**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /** Used for built-in method references. */\n var objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objectToString = objectProto.toString;\n\n /** Built-in value references. */\n var propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeKeys = overArg(Object.keys, Object);\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _([1, 2]).forEach(function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, typeof iteratee == 'function' ? iteratee : identity);\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return !!value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n module.exports = forEach;\n }, {}], 13: [function (require, module, exports) {\n (function (global) {\n /**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\n var dataViewTag = '[object DataView]';\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\n function isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /** Used for built-in method references. */\n var funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = root['__core-js_shared__'];\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objectToString = objectProto.toString;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n /** Built-in value references. */\n var Buffer = moduleExports ? root.Buffer : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap');\n\n /** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\n var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n return objectToString.call(value);\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11,\n // for data views in Edge < 14, and promises in Node.js.\n if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (isArrayLike(value) && (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || isBuffer(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (nonEnumShadows || isPrototype(value)) {\n return !nativeKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return !!value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n module.exports = isEmpty;\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}], 14: [function (require, module, exports) {\n (function (global) {\n /**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = function () {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }();\n\n /* Node.js helper references. */\n var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function (value) {\n return func(value);\n };\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n }\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = root['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n /** Built-in value references. */\n var Buffer = moduleExports ? root.Buffer : undefined,\n _Symbol2 = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = _Symbol2 ? _Symbol2.toStringTag : undefined;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = _Symbol2 ? _Symbol2.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache();\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') ||\n // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function () {\n return arguments;\n }()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n module.exports = isEqual;\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}], 15: [function (require, module, exports) {\n window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n\n /**\n * Handles debouncing of events via requestAnimationFrame\n * @see http://www.html5rocks.com/en/tutorials/speed/animations/\n * @param {Function} callback The callback to handle whichever event\n */\n function Debouncer(callback) {\n this.callback = callback;\n this.ticking = false;\n }\n Debouncer.prototype = {\n constructor: Debouncer,\n\n /**\n * dispatches the event to the supplied callback\n * @private\n */\n update: function update() {\n this.callback && this.callback();\n this.ticking = false;\n },\n\n /**\n * ensures events don't get stacked\n * @private\n */\n requestTick: function requestTick() {\n if (!this.ticking) {\n requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this)));\n this.ticking = true;\n }\n },\n\n /**\n * Attach this as the event listeners\n */\n handleEvent: function handleEvent() {\n this.requestTick();\n }\n };\n\n module.exports = Debouncer;\n }, {}], 16: [function (require, module, exports) {\n var isEqual = require('lodash.isequal'),\n forEach = require('lodash.foreach'),\n isEmpty = require('lodash.isempty'),\n cloneObject = require('lodash.clone'),\n extendObject = require('lodash.assign'),\n debouncer = require(\"./Debouncer\");\n\n function Scrllr(options) {\n options = extendObject(Scrllr.options, options);\n\n this.lastKnownScrollY = 0;\n this.initialised = false;\n this.onScrollCallback = options.onScrollCallback;\n }\n\n Scrllr.prototype = {\n constructor: Scrllr,\n\n init: function init() {\n this.debouncer = new debouncer(this.update.bind(this));\n\n // defer event registration to handle browser\n // potentially restoring previous scroll position\n setTimeout(this.attachEvent.bind(this), 100);\n\n return this;\n },\n\n attachEvent: function attachEvent() {\n if (!this.initialised) {\n this.lastKnownScrollY = this.getScrollY();\n this.initialised = true;\n\n window.addEventListener('scroll', this.debouncer, false);\n this.debouncer.handleEvent();\n }\n },\n\n getScrollY: function getScrollY() {\n return window.pageYOffset !== undefined ? window.pageYOffset : window.scrollTop !== undefined ? window.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop;\n },\n\n update: function update() {\n var currentScrollY = this.getScrollY(),\n scrollDirection = currentScrollY > this.lastKnownScrollY ? 'down' : 'up';\n\n this.onScrollCallback(currentScrollY);\n this.lastKnownScrollY = currentScrollY;\n },\n\n destroy: function destroy() {\n this.initialised = false;\n window.removeEventListener('scroll', this.debouncer, false);\n }\n\n };\n\n Scrllr.options = {\n onScrollCallback: function onScrollCallback() {}\n };\n\n module.exports = Scrllr;\n }, { \"./Debouncer\": 15, \"lodash.assign\": 10, \"lodash.clone\": 11, \"lodash.foreach\": 12, \"lodash.isempty\": 13, \"lodash.isequal\": 14 }], 17: [function (require, module, exports) {\n var Scrllr = require(\"./Scrllr.js\"),\n Scale = require(\"d3-scale\"),\n Interpolator = require(\"d3-interpolate\"),\n Ease = require(\"d3-ease\");\n\n function ScrollOver(options) {\n options = extend(options, ScrollOver.options);\n this.PROPERTIES = ['translateX', 'translateY', 'opacity', 'scale'];\n this.keyframes = options.keyframes;\n }\n\n ScrollOver.prototype = {\n constructor: ScrollOver,\n\n init: function init() {\n var _this = this;\n\n new Scrllr({ onScrollCallback: update.bind(this) }).init();\n\n this.toAnimate = this.keyframes.filter(function (item) {\n return item.animate;\n });\n this.toReveal = this.keyframes.filter(function (item) {\n return item.reveal;\n });\n\n this.toAnimate.forEach(function (keyframe) {\n if (keyframe) keyframe.animate.forEach(function (property) {\n property.scale = _this.createScale(property.property, keyframe.domain, property.range);\n });\n });\n\n function update(scrollY) {\n var _this2 = this;\n\n this.toAnimate.forEach(function (keyframe) {\n if (keyframe) _this2.updateCSSValues(keyframe.element, _this2.calculatePropertyValues(keyframe.animate, scrollY));\n });\n\n this.toReveal.forEach(function (keyframe) {\n if (keyframe) {\n if (scrollY >= keyframe.reveal.when) _this2.updateCSSClass(keyframe.element, keyframe.reveal.className);\n }\n });\n }\n\n return this;\n },\n\n calculatePropertyValues: function calculatePropertyValues(animations, scrollY) {\n var _this3 = this;\n\n var CSSValues = new Object();\n\n this.PROPERTIES.forEach(function (propertyName) {\n CSSValues[propertyName] = _this3.getDefaultPropertyValue(propertyName);\n animations.forEach(function (animation) {\n if (animation.property == propertyName) CSSValues[propertyName] = _this3.scaleValue(animation.scale, scrollY);\n });\n });\n\n return CSSValues;\n },\n\n scaleValue: function scaleValue(scale, scrollY) {\n return scale(scrollY);\n },\n\n updateCSSValues: function updateCSSValues(element, CSS) {\n element.style.transform = 'translate3d(' + CSS.translateX + 'px, ' + CSS.translateY + 'px, 0) scale(' + CSS.scale + ')';\n element.style.opacity = CSS.opacity;\n\n return element;\n },\n\n updateCSSClass: function updateCSSClass(element, className) {\n element.classList ? element.classList.add(className) : element.className += ' ' + className;\n\n return element;\n },\n\n getDefaultPropertyValue: function getDefaultPropertyValue(propertyName) {\n switch (propertyName) {\n case 'translateX':\n return 0;\n case 'translateY':\n return 0;\n case 'scale':\n return 1;\n case 'rotate':\n return 0;\n case 'opacity':\n return 1;\n default:\n return null;\n }\n },\n\n createScale: function createScale(propertyName, domain, range) {\n switch (propertyName) {\n case 'translateX':\n case 'translateY':\n case 'scale':\n case 'opacity':\n return Scale.scaleLinear().domain(domain).range(range).interpolate(this.easeInterpolate(Ease.easeCubicOut)).clamp(true);\n default:\n return null;\n }\n },\n\n easeInterpolate: function easeInterpolate(ease) {\n return function (a, b) {\n var i = Interpolator.interpolate(a, b);\n return function (t) {\n return Math.round(i(ease(t)) * 100) / 100;\n };\n };\n }\n\n };\n\n ScrollOver.options = {\n keyframes: {}\n\n /**\n * Helper function for extending objects\n */\n };function extend(object /*, objectN ... */) {\n if (arguments.length <= 0) {\n throw new Error('Missing arguments in extend function');\n }\n\n var result = object || {},\n key,\n i;\n\n for (i = 1; i < arguments.length; i++) {\n var replacement = arguments[i] || {};\n\n for (key in replacement) {\n // Recurse into object except if the object is a DOM element\n if (_typeof(result[key]) === 'object' && !isDOMElement(result[key])) {\n result[key] = extend(result[key], replacement[key]);\n } else {\n result[key] = result[key] || replacement[key];\n }\n }\n }\n\n return result;\n }\n\n /**\n * Check if object is part of the DOM\n * @constructor\n * @param {Object} obj element to check\n */\n function isDOMElement(obj) {\n return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType);\n }\n\n module.exports = ScrollOver;\n }, { \"./Scrllr.js\": 16, \"d3-ease\": 4, \"d3-interpolate\": 6, \"d3-scale\": 7 }] }, {}, [17]);"]}
\ No newline at end of file
diff --git a/dist/js/lib/animatescroll.js b/dist/js/lib/animatescroll.js
new file mode 100644
index 0000000..71d06cb
--- /dev/null
+++ b/dist/js/lib/animatescroll.js
@@ -0,0 +1,2 @@
+"use strict";!function t(n,e,i){function r(o,s){if(!e[o]){if(!n[o]){var a="function"==typeof require&&require;if(!s&&a)return a(o,!0);if(u)return u(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var f=e[o]={exports:{}};n[o][0].call(f.exports,function(t){var e=n[o][1][t];return r(e?e:t)},f,f.exports,t,n,e,i)}return e[o].exports}for(var u="function"==typeof require&&require,o=0;o=0?(i>=j?10:i>=S?5:i>=O?2:1)*Math.pow(10,o):-Math.pow(10,-o)/(i>=j?10:i>=S?5:i>=O?2:1)}function o(e,t,n){var r=Math.abs(t-e)/Math.max(0,n),o=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),i=r/o;return i>=j?o*=10:i>=S?o*=5:i>=O&&(o*=2),tt?1:e>=t?0:NaN},u=function(e){return 1===e.length&&(e=t(e)),{left:function(t,n,r,o){for(null==r&&(r=0),null==o&&(o=t.length);r>>1;e(t[i],n)<0?r=i+1:o=i}return r},right:function(t,n,r,o){for(null==r&&(r=0),null==o&&(o=t.length);r>>1;e(t[i],n)>0?o=i:r=i+1}return r}}},c=u(a),f=c.right,l=c.left,s=function R(e,t){null==t&&(t=n);for(var r=0,o=e.length-1,i=e[0],R=new Array(o<0?0:o);re?1:t>=e?0:NaN},p=function(e){return null===e?NaN:+e},b=function(e,t){var n,r,o=e.length,i=0,a=-1,u=0,c=0;if(null==t)for(;++a1)return c/(i-1)},y=function(e,t){var n=b(e,t);return n?Math.sqrt(n):n},g=function(e,t){var n,r,o,i=e.length,a=-1;if(null==t){for(;++a=n)for(r=o=n;++an&&(r=n),o=n)for(r=o=n;++an&&(r=n),o0)return[e];if((o=t0)for(e=Math.ceil(e/a),t=Math.floor(t/a),V=new Array(i=Math.ceil(t-e+1));++ud;)h.pop(),--p;var b,y=new Array(p+1);for(i=0;i<=p;++i)b=y[i]=[],b.x0=i>0?h[i-1]:s,b.x1=i=1)return+n(e[r-1],r-1,e);var r,o=(r-1)*t,i=Math.floor(o),a=+n(e[i],i,e),u=+n(e[i+1],i+1,e);return a+(u-a)*(o-i)}},N=function(e,t,n){return e=w.call(e,p).sort(a),Math.ceil((n-t)/(2*(C(e,.75)-C(e,.25))*Math.pow(e.length,-1/3)))},D=function(e,t,n){return Math.ceil((n-t)/(3.5*y(e)*Math.pow(e.length,-1/3)))},F=function X(e,t){var n,X,r=e.length,o=-1;if(null==t){for(;++o=n)for(X=n;++oX&&(X=n)}else for(;++o=n)for(X=n;++oX&&(X=n);return X},Y=function(e,t){var n,r=e.length,o=r,i=-1,a=0;if(null==t)for(;++i=0;)for(r=e[o],t=r.length;--t>=0;)n[--a]=r[t];return n},I=function Q(e,t){var n,Q,r=e.length,o=-1;if(null==t){for(;++o=n)for(Q=n;++on&&(Q=n)}else for(;++o=n)for(Q=n;++on&&(Q=n);return Q},P=function(e,t){for(var n=t.length,r=new Array(n);n--;)r[n]=e[t[n]];return r},q=function(e,t){if(n=e.length){var n,r,o=0,i=0,u=e[i];for(null==t&&(t=a);++o=f.length)return null!=u&&t.sort(u),null!=c?c(t):t;for(var a,l,s,d=-1,h=t.length,p=f[r++],b=n(),y=o();++df.length)return e;var r,o=l[n-1];return null!=c&&n>=f.length?r=e.entries():(r=[],e.each(function(e,o){r.push({key:o,values:t(e,n)})})),null!=o?r.sort(function(e,t){return o(e.key,t.key)}):r}var u,c,m,f=[],l=[];return m={object:function(t){return e(t,0,r,o)},map:function(t){return e(t,0,i,a)},entries:function(n){return t(e(n,0,i,a),0)},key:function(e){return f.push(e),m},sortKeys:function(e){return l[f.length-1]=e,m},sortValues:function(e){return u=e,m},rollup:function(e){return c=e,m}}},s=n.prototype;u.prototype=c.prototype={constructor:u,has:s.has,add:function(e){return e+="",this[f+e]=e,this},remove:s.remove,clear:s.clear,values:s.keys,size:s.size,empty:s.empty,each:s.each};var d=function w(e){var w=[];for(var t in e)w.push(t);return w},h=function M(e){var M=[];for(var t in e)M.push(e[t]);return M},p=function _(e){var _=[];for(var t in e)_.push({key:t,value:e[t]});return _};e.nest=l,e.set=c,e.map=n,e.keys=d,e.values=h,e.entries=p,Object.defineProperty(e,"__esModule",{value:!0})})},{}],3:[function(e,t,n){!function(e,r){"object"===("undefined"==typeof n?"undefined":_typeof(n))&&"undefined"!=typeof t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(e.d3=e.d3||{})}(this,function(e){function t(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function n(){}function r(e){var t;return e=(e+"").trim().toLowerCase(),(t=F.exec(e))?(t=parseInt(t[1],16),new c(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1)):(t=Y.exec(e))?o(parseInt(t[1],16)):(t=U.exec(e))?new c(t[1],t[2],t[3],1):(t=E.exec(e))?new c(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=I.exec(e))?i(t[1],t[2],t[3],t[4]):(t=P.exec(e))?i(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=q.exec(e))?f(t[1],t[2]/100,t[3]/100,1):(t=L.exec(e))?f(t[1],t[2]/100,t[3]/100,t[4]):z.hasOwnProperty(e)?o(z[e]):"transparent"===e?new c(NaN,NaN,NaN,0):null}function o(e){return new c(e>>16&255,e>>8&255,255&e,1)}function i(e,t,n,r){return r<=0&&(e=t=n=NaN),new c(e,t,n,r)}function a(e){return e instanceof n||(e=r(e)),e?(e=e.rgb(),new c(e.r,e.g,e.b,e.opacity)):new c}function u(e,t,n,r){return 1===arguments.length?a(e):new c(e,t,n,null==r?1:r)}function c(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function f(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new d(e,t,n,r)}function l(e){if(e instanceof d)return new d(e.h,e.s,e.l,e.opacity);if(e instanceof n||(e=r(e)),!e)return new d;if(e instanceof d)return e;e=e.rgb();var t=e.r/255,o=e.g/255,i=e.b/255,a=Math.min(t,o,i),u=Math.max(t,o,i),c=NaN,f=u-a,l=(u+a)/2;return f?(c=t===u?(o-i)/f+6*(o0&&l<1?0:c,new d(c,f,l,e.opacity)}function s(e,t,n,r){return 1===arguments.length?l(e):new d(e,t,n,null==r?1:r)}function d(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function h(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function p(e){if(e instanceof y)return new y(e.l,e.a,e.b,e.opacity);if(e instanceof x){var t=e.h*H;return new y(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}e instanceof c||(e=a(e));var n=w(e.r),r=w(e.g),o=w(e.b),i=g((.4124564*n+.3575761*r+.1804375*o)/B),u=g((.2126729*n+.7151522*r+.072175*o)/V),f=g((.0193339*n+.119192*r+.9503041*o)/W);return new y(116*u-16,500*(i-u),200*(u-f),e.opacity)}function b(e,t,n,r){return 1===arguments.length?p(e):new y(e,t,n,null==r?1:r)}function y(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}function g(e){return e>G?Math.pow(e,1/3):e/Z+X}function v(e){return e>Q?e*e*e:Z*(e-X)}function m(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function w(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function M(e){if(e instanceof x)return new x(e.h,e.c,e.l,e.opacity);e instanceof y||(e=p(e));var t=Math.atan2(e.b,e.a)*$;return new x(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function _(e,t,n,r){return 1===arguments.length?M(e):new x(e,t,n,null==r?1:r)}function x(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function j(e){if(e instanceof O)return new O(e.h,e.s,e.l,e.opacity);e instanceof c||(e=a(e));var t=e.r/255,n=e.g/255,r=e.b/255,o=(ie*r+re*t-oe*n)/(ie+re-oe),i=r-o,u=(ne*(n-o)-ee*i)/te,f=Math.sqrt(u*u+i*i)/(ne*o*(1-o)),l=f?Math.atan2(u,i)*$-120:NaN;return new O(l<0?l+360:l,f,o,e.opacity)}function S(e,t,n,r){return 1===arguments.length?j(e):new O(e,t,n,null==r?1:r)}function O(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}var k=function(e,t,n){e.prototype=t.prototype=n,n.constructor=e},T=.7,A=1/T,C="\\s*([+-]?\\d+)\\s*",N="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",D="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",F=/^#([0-9a-f]{3})$/,Y=/^#([0-9a-f]{6})$/,U=new RegExp("^rgb\\("+[C,C,C]+"\\)$"),E=new RegExp("^rgb\\("+[D,D,D]+"\\)$"),I=new RegExp("^rgba\\("+[C,C,C,N]+"\\)$"),P=new RegExp("^rgba\\("+[D,D,D,N]+"\\)$"),q=new RegExp("^hsl\\("+[N,D,D]+"\\)$"),L=new RegExp("^hsla\\("+[N,D,D,N]+"\\)$"),z={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};k(n,r,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),k(c,u,t(n,{brighter:function(e){return e=null==e?A:Math.pow(A,e),new c(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?T:Math.pow(T,e),new c(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},toString:function(){var e=this.opacity;return e=isNaN(e)?1:Math.max(0,Math.min(1,e)),(1===e?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?")":", "+e+")")}})),k(d,s,t(n,{brighter:function(e){return e=null==e?A:Math.pow(A,e),new d(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?T:Math.pow(T,e),new d(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new c(h(e>=240?e-240:e+120,o,r),h(e,o,r),h(e<120?e+240:e-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var H=Math.PI/180,$=180/Math.PI,R=18,B=.95047,V=1,W=1.08883,X=4/29,Q=6/29,Z=3*Q*Q,G=Q*Q*Q;k(y,b,t(n,{brighter:function(e){return new y(this.l+R*(null==e?1:e),this.a,this.b,this.opacity)},darker:function(e){return new y(this.l-R*(null==e?1:e),this.a,this.b,this.opacity)},rgb:function(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return e=V*v(e),t=B*v(t),n=W*v(n),new c(m(3.2404542*t-1.5371385*e-.4985314*n),m(-.969266*t+1.8760108*e+.041556*n),m(.0556434*t-.2040259*e+1.0572252*n),this.opacity)}})),k(x,_,t(n,{brighter:function(e){return new x(this.h,this.c,this.l+R*(null==e?1:e),this.opacity)},darker:function(e){return new x(this.h,this.c,this.l-R*(null==e?1:e),this.opacity)},rgb:function(){return p(this).rgb()}}));var J=-.14861,K=1.78277,ee=-.29227,te=-.90649,ne=1.97294,re=ne*te,oe=ne*K,ie=K*ee-te*J;k(O,S,t(n,{brighter:function(e){return e=null==e?A:Math.pow(A,e),new O(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?T:Math.pow(T,e),new O(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=isNaN(this.h)?0:(this.h+120)*H,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),o=Math.sin(e);return new c(255*(t+n*(J*r+K*o)),255*(t+n*(ee*r+te*o)),255*(t+n*(ne*r)),this.opacity)}})),e.color=r,e.rgb=u,e.hsl=s,e.lab=b,e.hcl=_,e.cubehelix=S,Object.defineProperty(e,"__esModule",{value:!0})})},{}],4:[function(e,t,n){!function(e,r){"object"===("undefined"==typeof n?"undefined":_typeof(n))&&"undefined"!=typeof t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(e.d3=e.d3||{})}(this,function(e){function t(e){return+e}function n(e){return e*e}function r(e){return e*(2-e)}function o(e){return((e*=2)<=1?e*e:--e*(2-e)+1)/2}function i(e){return e*e*e}function a(e){return--e*e*e+1}function u(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function c(e){return 1-Math.cos(e*S)}function f(e){return Math.sin(e*S)}function l(e){return(1-Math.cos(j*e))/2}function s(e){return Math.pow(2,10*e-10)}function d(e){return 1-Math.pow(2,-10*e)}function h(e){return((e*=2)<=1?Math.pow(2,10*e-10):2-Math.pow(2,10-10*e))/2}function p(e){return 1-Math.sqrt(1-e*e)}function b(e){return Math.sqrt(1- --e*e)}function y(e){return((e*=2)<=1?1-Math.sqrt(1-e*e):Math.sqrt(1-(e-=2)*e)+1)/2}function g(e){return 1-v(1-e)}function v(e){return(e=+e)",o=t[3]||"-",i=t[4]||"",a=!!t[5],u=t[6]&&+t[6],c=!!t[7],f=t[8]&&+t[8].slice(1),l=t[9]||"";"n"===l?(c=!0,l="g"):d[l]||(l=""),(a||"0"===n&&"="===r)&&(a=!0,n="0",r="="),this.fill=n,this.align=r,this.sign=o,this.symbol=i,this.zero=a,this.width=u,this.comma=c,this.precision=f,this.type=l}function r(t){return p=g(t),e.format=p.format,e.formatPrefix=p.formatPrefix,p}var o,i=function(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]},a=function(e){return e=i(Math.abs(e)),e?e[1]:NaN},u=function(e,t){return function(n,r){for(var o=n.length,i=[],a=0,u=e[0],c=0;o>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),i.push(n.substring(o-=u,o+u)),!((c+=u+1)>r));)u=e[a=(a+1)%e.length];return i.reverse().join(t)}},c=function(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}},f=function(e,t){e=e.toPrecision(t);e:for(var n,r=e.length,o=1,i=-1;o0&&(i=0)}return i>0?e.slice(0,i)+e.slice(n+1):e},l=function(e,t){var n=i(e,t);if(!n)return e+"";var r=n[0],a=n[1],u=a-(o=3*Math.max(-8,Math.min(8,Math.floor(a/3))))+1,c=r.length;return u===c?r:u>c?r+new Array(u-c+1).join("0"):u>0?r.slice(0,u)+"."+r.slice(u):"0."+new Array(1-u).join("0")+i(e,Math.max(0,t+u-1))[0]},s=function(e,t){var n=i(e,t);if(!n)return e+"";var r=n[0],o=n[1];return o<0?"0."+new Array((-o)).join("0")+r:r.length>o+1?r.slice(0,o+1)+"."+r.slice(o+1):r+new Array(o-r.length+2).join("0")},d={"":f,"%":function(e,t){return(100*e).toFixed(t)},b:function(e){return Math.round(e).toString(2)},c:function(e){return e+""},d:function(e){return Math.round(e).toString(10)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},g:function(e,t){return e.toPrecision(t)},o:function(e){return Math.round(e).toString(8)},p:function(e,t){return s(100*e,t)},r:s,s:l,X:function(e){return Math.round(e).toString(16).toUpperCase()},x:function(e){return Math.round(e).toString(16)}},h=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;t.prototype=n.prototype,n.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var p,b=function(e){return e},y=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],g=function(e){function n(e){function n(e){var t,n,c,f=w,d=M;if("c"===m)d=_(e)+d,e="";else{e=+e;var h=e<0;if(e=_(Math.abs(e),v),h&&0===+e&&(h=!1),f=(h?"("===u?u:"-":"-"===u||"("===u?"":u)+f,d=d+("s"===m?y[8+o/3]:"")+(h&&"("===u?")":""),x)for(t=-1,n=e.length;++tc||c>57){d=(46===c?l+e.slice(t+1):e.slice(t))+d,e=e.slice(0,t);break}}g&&!p&&(e=i(e,1/0));var j=f.length+e.length+d.length,S=j>1)+f+e+d+S.slice(j);break;default:e=S+f+e+d}return s(e)}e=t(e);var r=e.fill,a=e.align,u=e.sign,c=e.symbol,p=e.zero,b=e.width,g=e.comma,v=e.precision,m=e.type,w="$"===c?f[0]:"#"===c&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",M="$"===c?f[1]:/[%p]/.test(m)?h:"",_=d[m],x=!m||/[defgprs%]/.test(m);return v=null==v?m?6:12:/[gprs]/.test(m)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),n.toString=function(){return e+""},n}function r(e,r){var o=n((e=t(e),e.type="f",e)),i=3*Math.max(-8,Math.min(8,Math.floor(a(r)/3))),u=Math.pow(10,-i),c=y[8+i/3];return function(e){return o(u*e)+c}}var i=e.grouping&&e.thousands?u(e.grouping,e.thousands):b,f=e.currency,l=e.decimal,s=e.numerals?c(e.numerals):b,h=e.percent||"%";return{format:n,formatPrefix:r}};r({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var v=function(e){return Math.max(0,-a(Math.abs(e)))},m=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(a(t)/3)))-a(Math.abs(e)))},w=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,a(t)-a(e))+1};e.formatDefaultLocale=r,e.formatLocale=g,e.formatSpecifier=t,e.precisionFixed=v,e.precisionPrefix=m,e.precisionRound=w,Object.defineProperty(e,"__esModule",{value:!0})})},{}],6:[function(e,t,n){!function(r,o){"object"===("undefined"==typeof n?"undefined":_typeof(n))&&"undefined"!=typeof t?o(n,e("d3-color")):"function"==typeof define&&define.amd?define(["exports","d3-color"],o):o(r.d3=r.d3||{},r.d3)}(this,function(e,t){function n(e,t,n,r,o){var i=e*e,a=i*e;return((1-3*e+3*i-a)*t+(4-6*i+3*a)*n+(1+3*e+3*i-3*a)*r+a*o)/6}function r(e,t){return function(n){return e+n*t}}function o(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function i(e,t){var n=t-e;return n?r(e,n>180||n<-180?n-360*Math.round(n/360):n):k(isNaN(e)?t:e)}function a(e){return 1===(e=+e)?u:function(t,n){return n-t?o(t,n,e):k(isNaN(t)?n:t)}}function u(e,t){var n=t-e;return n?r(e,n):k(isNaN(e)?t:e)}function c(e){return function(n){var r,o,i=n.length,a=new Array(i),u=new Array(i),c=new Array(i);for(r=0;r180?t+=360:t-e>180&&(e+=360),i.push({i:n.push(o(n)+"rotate(",null,r)-2,x:F(e,t)})):t&&n.push(o(n)+"rotate("+t+r)}function u(e,t,n,i){e!==t?i.push({i:n.push(o(n)+"skewX(",null,r)-2,x:F(e,t)}):t&&n.push(o(n)+"skewX("+t+r)}function c(e,t,n,r,i,a){if(e!==n||t!==r){var u=i.push(o(i)+"scale(",null,",",null,")");a.push({i:u-4,x:F(e,n)},{i:u-2,x:F(t,r)})}else 1===n&&1===r||i.push(o(i)+"scale("+n+","+r+")")}return function(t,n){var r=[],o=[];return t=e(t),n=e(n),i(t.translateX,t.translateY,n.translateX,n.translateY,r,o),a(t.rotate,n.rotate,r,o),u(t.skewX,n.skewX,r,o),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,o),t=n=null,function(e){for(var t,n=-1,i=o.length;++n=1?(r=1,t-1):Math.floor(r*t),i=e[o],a=e[o+1],u=o>0?e[o-1]:2*i-a,c=oi&&(o=t.slice(i,o),u[a]?u[a]+=o:u[++a]=o),(n=n[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:F(n,r)})),i=E.lastIndex;return i=n?1:r(e)}}}function p(e){return function(t,n){var r=e(t=+t,n=+n);return function(e){return e<=0?t:e>=1?n:r(e)}}}function b(e,t,n,r){var o=e[0],i=e[1],a=t[0],u=t[1];return i2?y:b,a=u=null,o}function o(t){return(a||(a=i(c,f,s?h(e):e,l)))(+t)}var i,a,u,c=V,f=V,l=r.interpolate,s=!1;return o.invert=function(e){return(u||(u=i(f,c,d,s?p(t):t)))(+e)},o.domain=function(e){return arguments.length?(c=z.call(e,B),n()):c.slice()},o.range=function(e){return arguments.length?(f=H.call(e),n()):f.slice()},o.rangeRound=function(e){return f=H.call(e),l=r.interpolateRound,n()},o.clamp=function(e){return arguments.length?(s=!!e,n()):s},o.interpolate=function(e){return arguments.length?(l=e,n()):l},n()}function m(e){var n=e.domain;return e.ticks=function(e){var r=n();return t.ticks(r[0],r[r.length-1],null==e?10:e)},e.tickFormat=function(e,t){return W(n(),e,t)},e.nice=function(r){null==r&&(r=10);var o,i=n(),a=0,u=i.length-1,c=i[a],f=i[u];return f0?(c=Math.floor(c/o)*o,f=Math.ceil(f/o)*o,o=t.tickIncrement(c,f,r)):o<0&&(c=Math.ceil(c*o)/o,f=Math.floor(f*o)/o,o=t.tickIncrement(c,f,r)),o>0?(i[a]=Math.floor(c/o)*o,i[u]=Math.ceil(f/o)*o,n(i)):o<0&&(i[a]=Math.ceil(c*o)/o,i[u]=Math.floor(f*o)/o,n(i)),e},e}function w(){var e=v(d,r.interpolateNumber);return e.copy=function(){return g(e,w())},m(e)}function M(){function e(e){return+e}var t=[0,1];return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=z.call(n,B),e):t.slice()},e.copy=function(){return M().domain(t)},m(e)}function _(e,t){return(t=Math.log(t/e))?function(n){return Math.log(n/e)/t}:R(t)}function x(e,t){return e<0?function(n){return-Math.pow(-t,n)*Math.pow(-e,1-n)}:function(n){return Math.pow(t,n)*Math.pow(e,1-n)}}function j(e){return isFinite(e)?+("1e"+e):e<0?0:e}function S(e){return 10===e?j:e===Math.E?Math.exp:function(t){return Math.pow(e,t)}}function O(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),function(t){return Math.log(t)/e})}function k(e){return function(t){return-e(-t)}}function T(){function e(){return a=O(i),u=S(i),r()[0]<0&&(a=k(a),u=k(u)),n}var n=v(_,x).domain([1,10]),r=n.domain,i=10,a=O(10),u=S(10);return n.base=function(t){return arguments.length?(i=+t,e()):i},n.domain=function(t){return arguments.length?(r(t),e()):r()},n.ticks=function(e){var n,o=r(),c=o[0],f=o[o.length-1];(n=f0){for(;hf)break;y.push(d)}}else for(;h
=1;--s)if(d=l*s,!(df)break;y.push(d)}}else y=t.ticks(h,p,Math.min(p-h,b)).map(u);return n?y.reverse():y},n.tickFormat=function(e,t){if(null==t&&(t=10===i?".0e":","),"function"!=typeof t&&(t=o.format(t)),e===1/0)return t;null==e&&(e=10);var r=Math.max(1,i*e/n.ticks().length);return function(e){var n=e/u(Math.round(a(e)));return n*i0?i[t-1]:r[0],t=i?[a[i-1],o]:[a[t-1],a[t]]},e.copy=function(){return F().domain([r,o]).range(u)},m(e)}function Y(){function e(e){if(e<=e)return r[t.bisect(n,e,0,o)]}var n=[.5],r=[0,1],o=1;return e.domain=function(t){return arguments.length?(n=H.call(t),o=Math.min(n.length,r.length-1),e):n.slice()},e.range=function(t){return arguments.length?(r=H.call(t),o=Math.min(n.length,r.length-1),e):r.slice()},e.invertExtent=function(e){var t=r.indexOf(e);return[n[t-1],n[t]]},e.copy=function(){return Y().domain(n).range(r)},e}function U(e){return new Date(e)}function E(e){return e instanceof Date?+e:+new Date((+e))}function I(e,n,o,i,a,u,c,f,l){function s(t){return(c(t)1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return de.h=360*e-100,de.s=1.5-1.5*t,de.l=.8-.9*t,de+""},pe=P(oe("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),be=P(oe("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ye=P(oe("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ge=P(oe("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));e.scaleBand=f,e.scalePoint=s,e.scaleIdentity=M,e.scaleLinear=w,e.scaleLog=T,e.scaleOrdinal=c,e.scaleImplicit=$,e.scalePow=C,e.scaleSqrt=N,e.scaleQuantile=D,e.scaleQuantize=F,e.scaleThreshold=Y,e.scaleTime=ne,e.scaleUtc=re,e.schemeCategory10=ie,e.schemeCategory20b=ae,e.schemeCategory20c=ue,e.schemeCategory20=ce,e.interpolateCubehelixDefault=fe,e.interpolateRainbow=he,e.interpolateWarm=le,e.interpolateCool=se,e.interpolateViridis=pe,e.interpolateMagma=be,e.interpolateInferno=ye,e.interpolatePlasma=ge,e.scaleSequential=q,Object.defineProperty(e,"__esModule",{value:!0})})},{"d3-array":1,"d3-collection":2,"d3-color":3,"d3-format":5,"d3-interpolate":6,"d3-time":9,"d3-time-format":8}],8:[function(e,t,n){!function(r,o){"object"===("undefined"==typeof n?"undefined":_typeof(n))&&"undefined"!=typeof t?o(n,e("d3-time")):"function"==typeof define&&define.amd?define(["exports","d3-time"],o):o(r.d3=r.d3||{},r.d3)}(this,function(e,t){function n(e){if(0<=e.y&&e.y<100){var t=new Date((-1),e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function r(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function o(e){return{y:e,m:0,d:1,H:0,M:0,S:0,L:0}}function i(e){function i(e,t){return function(n){var r,o,i,a=[],u=-1,c=0,f=e.length;for(n instanceof Date||(n=new Date((+n)));++u53)return null;"w"in f||(f.w=1),"Z"in f?(a=r(o(f.y)),c=a.getUTCDay(),a=c>4||0===c?t.utcMonday.ceil(a):t.utcMonday(a),a=t.utcDay.offset(a,7*(f.V-1)),f.y=a.getUTCFullYear(),f.m=a.getUTCMonth(),f.d=a.getUTCDate()+(f.w+6)%7):(a=n(o(f.y)),c=a.getDay(),a=c>4||0===c?t.timeMonday.ceil(a):t.timeMonday(a),a=t.timeDay.offset(a,7*(f.V-1)),f.y=a.getFullYear(),f.m=a.getMonth(),f.d=a.getDate()+(f.w+6)%7)}else("W"in f||"U"in f)&&("w"in f||(f.w="u"in f?f.u%7:"W"in f?1:0),c="Z"in f?r(o(f.y)).getUTCDay():n(o(f.y)).getDay(),f.m=0,f.d="W"in f?(f.w+6)%7+7*f.W-(c+5)%7:f.w+7*f.U-(c+6)%7);return"Z"in f?(f.H+=f.Z/100|0,f.M+=f.Z%100,r(f)):n(f)}}function u(e,t,n,r){for(var o,i,a=0,u=t.length,c=n.length;a=c)return-1;if(o=t.charCodeAt(a++),37===o){if(o=t.charAt(a++),i=Ge[o in ye?t.charAt(a++):o],!i||(r=i(e,n,r))<0)return-1}else if(o!=n.charCodeAt(r++))return-1}return r}function de(e,t,n){var r=qe.exec(t.slice(n));return r?(e.p=Le[r[0].toLowerCase()],n+r[0].length):-1}function he(e,t,n){var r=$e.exec(t.slice(n));return r?(e.w=Re[r[0].toLowerCase()],n+r[0].length):-1}function pe(e,t,n){var r=ze.exec(t.slice(n));return r?(e.w=He[r[0].toLowerCase()],n+r[0].length):-1}function be(e,t,n){var r=We.exec(t.slice(n));return r?(e.m=Xe[r[0].toLowerCase()],n+r[0].length):-1}function ge(e,t,n){var r=Be.exec(t.slice(n));return r?(e.m=Ve[r[0].toLowerCase()],n+r[0].length):-1}function ve(e,t,n){return u(e,Ne,t,n)}function me(e,t,n){return u(e,De,t,n)}function we(e,t,n){return u(e,Fe,t,n)}function Me(e){return Ee[e.getDay()]}function _e(e){return Ue[e.getDay()]}function xe(e){return Pe[e.getMonth()]}function je(e){return Ie[e.getMonth()]}function Se(e){return Ye[+(e.getHours()>=12)]}function Oe(e){return Ee[e.getUTCDay()]}function ke(e){return Ue[e.getUTCDay()]}function Te(e){return Pe[e.getUTCMonth()]}function Ae(e){return Ie[e.getUTCMonth()]}function Ce(e){return Ye[+(e.getUTCHours()>=12)]}var Ne=e.dateTime,De=e.date,Fe=e.time,Ye=e.periods,Ue=e.days,Ee=e.shortDays,Ie=e.months,Pe=e.shortMonths,qe=c(Ye),Le=f(Ye),ze=c(Ue),He=f(Ue),$e=c(Ee),Re=f(Ee),Be=c(Ie),Ve=f(Ie),We=c(Pe),Xe=f(Pe),Qe={a:Me,A:_e,b:xe,B:je,c:null,d:A,e:A,f:Y,H:C,I:N,j:D,L:F,m:U,M:E,p:Se,Q:le,s:se,S:I,u:P,U:q,V:L,w:z,W:H,x:null,X:null,y:$,Y:R,Z:B,"%":fe},Ze={a:Oe,A:ke,b:Te,B:Ae,c:null,d:V,e:V,f:G,H:W,I:X,j:Q,L:Z,m:J,M:K,p:Ce,Q:le,s:se,S:ee,u:te,U:ne,V:re,w:oe,W:ie,x:null,X:null,y:ae,Y:ue,Z:ce,"%":fe},Ge={a:he,A:pe,b:be,B:ge,c:ve,d:m,e:m,f:S,H:M,I:M,j:w,L:j,m:v,M:_,p:de,Q:k,s:T,S:x,u:s,U:d,V:h,w:l,W:p,x:me,X:we,y:y,Y:b,Z:g,"%":O};return Qe.x=i(De,Qe),Qe.X=i(Fe,Qe),Qe.c=i(Ne,Qe),Ze.x=i(De,Ze),Ze.X=i(Fe,Ze),Ze.c=i(Ne,Ze),{format:function(e){var t=i(e+="",Qe);return t.toString=function(){return e},t},parse:function(e){var t=a(e+="",n);return t.toString=function(){return e},t},utcFormat:function(e){var t=i(e+="",Ze);return t.toString=function(){return e},t},utcParse:function(e){var t=a(e,r);return t.toString=function(){return e},t}}}function a(e,t,n){var r=e<0?"-":"",o=(r?-e:e)+"",i=o.length;return r+(i68?1900:2e3),n+r[0].length):-1}function g(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function v(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function m(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function w(e,t,n){var r=ge.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function M(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function _(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function x(e,t,n){var r=ge.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function j(e,t,n){var r=ge.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function S(e,t,n){var r=ge.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function O(e,t,n){var r=ve.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function k(e,t,n){var r=ge.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function T(e,t,n){var r=ge.exec(t.slice(n));return r?(e.Q=1e3*+r[0],n+r[0].length):-1}function A(e,t){return a(e.getDate(),t,2)}function C(e,t){return a(e.getHours(),t,2)}function N(e,t){return a(e.getHours()%12||12,t,2)}function D(e,n){return a(1+t.timeDay.count(t.timeYear(e),e),n,3)}function F(e,t){return a(e.getMilliseconds(),t,3)}function Y(e,t){return F(e,t)+"000"}function U(e,t){return a(e.getMonth()+1,t,2)}function E(e,t){return a(e.getMinutes(),t,2)}function I(e,t){return a(e.getSeconds(),t,2)}function P(e){var t=e.getDay();return 0===t?7:t}function q(e,n){return a(t.timeSunday.count(t.timeYear(e),e),n,2)}function L(e,n){var r=e.getDay();return e=r>=4||0===r?t.timeThursday(e):t.timeThursday.ceil(e),a(t.timeThursday.count(t.timeYear(e),e)+(4===t.timeYear(e).getDay()),n,2)}function z(e){return e.getDay()}function H(e,n){return a(t.timeMonday.count(t.timeYear(e),e),n,2)}function $(e,t){return a(e.getFullYear()%100,t,2)}function R(e,t){return a(e.getFullYear()%1e4,t,4)}function B(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+a(t/60|0,"0",2)+a(t%60,"0",2)}function V(e,t){return a(e.getUTCDate(),t,2)}function W(e,t){return a(e.getUTCHours(),t,2)}function X(e,t){return a(e.getUTCHours()%12||12,t,2)}function Q(e,n){return a(1+t.utcDay.count(t.utcYear(e),e),n,3)}function Z(e,t){return a(e.getUTCMilliseconds(),t,3)}function G(e,t){return Z(e,t)+"000"}function J(e,t){return a(e.getUTCMonth()+1,t,2)}function K(e,t){return a(e.getUTCMinutes(),t,2)}function ee(e,t){return a(e.getUTCSeconds(),t,2)}function te(e){var t=e.getUTCDay();return 0===t?7:t}function ne(e,n){return a(t.utcSunday.count(t.utcYear(e),e),n,2)}function re(e,n){var r=e.getUTCDay();return e=r>=4||0===r?t.utcThursday(e):t.utcThursday.ceil(e),a(t.utcThursday.count(t.utcYear(e),e)+(4===t.utcYear(e).getUTCDay()),n,2)}function oe(e){return e.getUTCDay()}function ie(e,n){return a(t.utcMonday.count(t.utcYear(e),e),n,2)}function ae(e,t){return a(e.getUTCFullYear()%100,t,2)}function ue(e,t){return a(e.getUTCFullYear()%1e4,t,4)}function ce(){return"+0000"}function fe(){return"%"}function le(e){return+e}function se(e){return Math.floor(+e/1e3)}function de(t){return be=i(t),e.timeFormat=be.format,e.timeParse=be.parse,e.utcFormat=be.utcFormat,e.utcParse=be.utcParse,be}function he(e){return e.toISOString()}function pe(e){var t=new Date(e);return isNaN(t)?null:t}var be,ye={"-":"",_:" ",0:"0"},ge=/^\s*\d+/,ve=/^%/,me=/[\\^$*+?|[\]().{}]/g;de({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var we="%Y-%m-%dT%H:%M:%S.%LZ",Me=Date.prototype.toISOString?he:e.utcFormat(we),_e=+new Date("2000-01-01T00:00:00.000Z")?pe:e.utcParse(we);e.timeFormatDefaultLocale=de,e.timeFormatLocale=i,e.isoFormat=Me,e.isoParse=_e,Object.defineProperty(e,"__esModule",{value:!0})})},{"d3-time":9}],9:[function(e,t,n){!function(e,r){"object"===("undefined"==typeof n?"undefined":_typeof(n))&&"undefined"!=typeof t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(e.d3=e.d3||{})}(this,function(e){function t(e,n,r,a){function u(t){return e(t=new Date((+t))),t}return u.floor=u,u.ceil=function(t){return e(t=new Date(t-1)),n(t,1),e(t),t},u.round=function(e){var t=u(e),n=u.ceil(e);return e-t0))return i;do i.push(new Date((+t)));while(n(t,o),e(t),t=t)for(;e(t),!r(t);)t.setTime(t-1)},function(e,t){if(e>=e)if(t<0)for(;++t<=0;)for(;n(e,-1),!r(e););else for(;--t>=0;)for(;n(e,1),!r(e););})},r&&(u.count=function(t,n){return o.setTime(+t),i.setTime(+n),e(o),e(i),Math.floor(r(o,i))},u.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?u.filter(a?function(t){return a(t)%e===0}:function(t){return u.count(0,t)%e===0}):u:null}),u}function n(e){return t(function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},function(e,t){e.setDate(e.getDate()+7*t)},function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*f)/d})}function r(e){return t(function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},function(e,t){e.setUTCDate(e.getUTCDate()+7*t)},function(e,t){return(t-e)/d})}var o=new Date,i=new Date,a=t(function(){},function(e,t){e.setTime(+e+t)},function(e,t){return t-e});a.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?t(function(t){t.setTime(Math.floor(t/e)*e)},function(t,n){t.setTime(+t+n*e)},function(t,n){return(n-t)/e}):a:null};var u=a.range,c=1e3,f=6e4,l=36e5,s=864e5,d=6048e5,h=t(function(e){e.setTime(Math.floor(e/c)*c)},function(e,t){e.setTime(+e+t*c)},function(e,t){return(t-e)/c},function(e){return e.getUTCSeconds()}),p=h.range,b=t(function(e){e.setTime(Math.floor(e/f)*f)},function(e,t){e.setTime(+e+t*f)},function(e,t){return(t-e)/f},function(e){return e.getMinutes()}),y=b.range,g=t(function(e){var t=e.getTimezoneOffset()*f%l;t<0&&(t+=l),e.setTime(Math.floor((+e-t)/l)*l+t)},function(e,t){e.setTime(+e+t*l)},function(e,t){return(t-e)/l},function(e){return e.getHours()}),v=g.range,m=t(function(e){e.setHours(0,0,0,0)},function(e,t){e.setDate(e.getDate()+t);
+},function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*f)/s},function(e){return e.getDate()-1}),w=m.range,M=n(0),_=n(1),x=n(2),j=n(3),S=n(4),O=n(5),k=n(6),T=M.range,A=_.range,C=x.range,N=j.range,D=S.range,F=O.range,Y=k.range,U=t(function(e){e.setDate(1),e.setHours(0,0,0,0)},function(e,t){e.setMonth(e.getMonth()+t)},function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())},function(e){return e.getMonth()}),E=U.range,I=t(function(e){e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,t){e.setFullYear(e.getFullYear()+t)},function(e,t){return t.getFullYear()-e.getFullYear()},function(e){return e.getFullYear()});I.every=function(e){return isFinite(e=Math.floor(e))&&e>0?t(function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n*e)}):null};var P=I.range,q=t(function(e){e.setUTCSeconds(0,0)},function(e,t){e.setTime(+e+t*f)},function(e,t){return(t-e)/f},function(e){return e.getUTCMinutes()}),L=q.range,z=t(function(e){e.setUTCMinutes(0,0,0)},function(e,t){e.setTime(+e+t*l)},function(e,t){return(t-e)/l},function(e){return e.getUTCHours()}),H=z.range,$=t(function(e){e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCDate(e.getUTCDate()+t)},function(e,t){return(t-e)/s},function(e){return e.getUTCDate()-1}),R=$.range,B=r(0),V=r(1),W=r(2),X=r(3),Q=r(4),Z=r(5),G=r(6),J=B.range,K=V.range,ee=W.range,te=X.range,ne=Q.range,re=Z.range,oe=G.range,ie=t(function(e){e.setUTCDate(1),e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCMonth(e.getUTCMonth()+t)},function(e,t){return t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())},function(e){return e.getUTCMonth()}),ae=ie.range,ue=t(function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)},function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()},function(e){return e.getUTCFullYear()});ue.every=function(e){return isFinite(e=Math.floor(e))&&e>0?t(function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)}):null};var ce=ue.range;e.timeInterval=t,e.timeMillisecond=a,e.timeMilliseconds=u,e.utcMillisecond=a,e.utcMilliseconds=u,e.timeSecond=h,e.timeSeconds=p,e.utcSecond=h,e.utcSeconds=p,e.timeMinute=b,e.timeMinutes=y,e.timeHour=g,e.timeHours=v,e.timeDay=m,e.timeDays=w,e.timeWeek=M,e.timeWeeks=T,e.timeSunday=M,e.timeSundays=T,e.timeMonday=_,e.timeMondays=A,e.timeTuesday=x,e.timeTuesdays=C,e.timeWednesday=j,e.timeWednesdays=N,e.timeThursday=S,e.timeThursdays=D,e.timeFriday=O,e.timeFridays=F,e.timeSaturday=k,e.timeSaturdays=Y,e.timeMonth=U,e.timeMonths=E,e.timeYear=I,e.timeYears=P,e.utcMinute=q,e.utcMinutes=L,e.utcHour=z,e.utcHours=H,e.utcDay=$,e.utcDays=R,e.utcWeek=B,e.utcWeeks=J,e.utcSunday=B,e.utcSundays=J,e.utcMonday=V,e.utcMondays=K,e.utcTuesday=W,e.utcTuesdays=ee,e.utcWednesday=X,e.utcWednesdays=te,e.utcThursday=Q,e.utcThursdays=ne,e.utcFriday=Z,e.utcFridays=re,e.utcSaturday=G,e.utcSaturdays=oe,e.utcMonth=ie,e.utcMonths=ae,e.utcYear=ue,e.utcYears=ce,Object.defineProperty(e,"__esModule",{value:!0})})},{}],10:[function(e,t,n){function r(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function o(e,t){for(var n=-1,r=Array(e);++n1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,a&&h(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),t=Object(t);++r-1&&e%1==0&&e-1&&e%1==0&&e<=j}function M(e){var t="undefined"==typeof e?"undefined":_typeof(e);return!!e&&("object"==t||"function"==t)}function _(e){return!!e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function x(e){return g(e)?a(e):c(e)}var j=9007199254740991,S="[object Arguments]",O="[object Function]",k="[object GeneratorFunction]",T=/^(?:0|[1-9]\d*)$/,A=Object.prototype,C=A.hasOwnProperty,N=A.toString,D=A.propertyIsEnumerable,F=i(Object.keys,Object),Y=Math.max,U=!D.call({valueOf:1},"valueOf"),E=Array.isArray,I=s(function(e,t){if(U||p(t)||g(t))return void l(t,x(t),e);for(var n in t)C.call(t,n)&&u(e,n,t[n])});t.exports=I},{}],11:[function(e,t,n){(function(e){function r(e,t){return e.set(t[0],t[1]),e}function o(e,t){return e.add(t),e}function i(e,t){for(var n=-1,r=e?e.length:0;++n-1}function S(e,t){var n=this.__data__,r=L(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}function O(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=Ce}function xe(e){var t="undefined"==typeof e?"undefined":_typeof(e);return!!e&&("object"==t||"function"==t)}function je(e){return!!e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function Se(e){return me(e)?P(e):W(e)}function Oe(){return[]}function ke(){return!1}var Te=200,Ae="__lodash_hash_undefined__",Ce=9007199254740991,Ne="[object Arguments]",De="[object Array]",Fe="[object Boolean]",Ye="[object Date]",Ue="[object Error]",Ee="[object Function]",Ie="[object GeneratorFunction]",Pe="[object Map]",qe="[object Number]",Le="[object Object]",ze="[object Promise]",He="[object RegExp]",$e="[object Set]",Re="[object String]",Be="[object Symbol]",Ve="[object WeakMap]",We="[object ArrayBuffer]",Xe="[object DataView]",Qe="[object Float32Array]",Ze="[object Float64Array]",Ge="[object Int8Array]",Je="[object Int16Array]",Ke="[object Int32Array]",et="[object Uint8Array]",tt="[object Uint8ClampedArray]",nt="[object Uint16Array]",rt="[object Uint32Array]",ot=/[\\^$.*+?()[\]{}|]/g,it=/\w*$/,at=/^\[object .+?Constructor\]$/,ut=/^(?:0|[1-9]\d*)$/,ct={};ct[Ne]=ct[De]=ct[We]=ct[Xe]=ct[Fe]=ct[Ye]=ct[Qe]=ct[Ze]=ct[Ge]=ct[Je]=ct[Ke]=ct[Pe]=ct[qe]=ct[Le]=ct[He]=ct[$e]=ct[Re]=ct[Be]=ct[et]=ct[tt]=ct[nt]=ct[rt]=!0,ct[Ue]=ct[Ee]=ct[Ve]=!1;var ft="object"==("undefined"==typeof e?"undefined":_typeof(e))&&e&&e.Object===Object&&e,lt="object"==("undefined"==typeof self?"undefined":_typeof(self))&&self&&self.Object===Object&&self,st=ft||lt||Function("return this")(),dt="object"==("undefined"==typeof n?"undefined":_typeof(n))&&n&&!n.nodeType&&n,ht=dt&&"object"==("undefined"==typeof t?"undefined":_typeof(t))&&t&&!t.nodeType&&t,pt=ht&&ht.exports===dt,bt=Array.prototype,yt=Function.prototype,gt=Object.prototype,vt=st["__core-js_shared__"],mt=function(){var e=/[^.]+$/.exec(vt&&vt.keys&&vt.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),wt=yt.toString,Mt=gt.hasOwnProperty,_t=gt.toString,xt=RegExp("^"+wt.call(Mt).replace(ot,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),jt=pt?st.Buffer:void 0,St=st.Symbol,Ot=st.Uint8Array,kt=d(Object.getPrototypeOf,Object),Tt=Object.create,At=gt.propertyIsEnumerable,Ct=bt.splice,Nt=Object.getOwnPropertySymbols,Dt=jt?jt.isBuffer:void 0,Ft=d(Object.keys,Object),Yt=ue(st,"DataView"),Ut=ue(st,"Map"),Et=ue(st,"Promise"),It=ue(st,"Set"),Pt=ue(st,"WeakMap"),qt=ue(Object,"create"),Lt=be(Yt),zt=be(Ut),Ht=be(Et),$t=be(It),Rt=be(Pt),Bt=St?St.prototype:void 0,Vt=Bt?Bt.valueOf:void 0;p.prototype.clear=b,p.prototype["delete"]=y,p.prototype.get=g,p.prototype.has=v,p.prototype.set=m,w.prototype.clear=M,w.prototype["delete"]=_,w.prototype.get=x,w.prototype.has=j,w.prototype.set=S,O.prototype.clear=k,O.prototype["delete"]=T,O.prototype.get=A,O.prototype.has=C,O.prototype.set=N,D.prototype.clear=F,D.prototype["delete"]=Y,D.prototype.get=U,D.prototype.has=E,D.prototype.set=I;var Wt=Nt?d(Nt,Object):Oe,Xt=B;(Yt&&Xt(new Yt(new ArrayBuffer(1)))!=Xe||Ut&&Xt(new Ut)!=Pe||Et&&Xt(Et.resolve())!=ze||It&&Xt(new It)!=$e||Pt&&Xt(new Pt)!=Ve)&&(Xt=function(e){var t=_t.call(e),n=t==Le?e.constructor:void 0,r=n?be(n):void 0;if(r)switch(r){case Lt:return Xe;case zt:return Pe;case Ht:return ze;case $t:return $e;case Rt:return Ve}return t});var Qt=Array.isArray,Zt=Dt||ke;t.exports=ye}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],12:[function(e,t,n){function r(e,t){for(var n=-1,r=e?e.length:0;++n-1&&e%1==0&&e-1&&e%1==0&&e<=x}function m(e){var t="undefined"==typeof e?"undefined":_typeof(e);return!!e&&("object"==t||"function"==t)}function w(e){return!!e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function M(e){return b(e)?a(e):c(e)}function _(e){return e}var x=9007199254740991,j="[object Arguments]",S="[object Function]",O="[object GeneratorFunction]",k=/^(?:0|[1-9]\d*)$/,T=Object.prototype,A=T.hasOwnProperty,C=T.toString,N=T.propertyIsEnumerable,D=i(Object.keys,Object),F=f(u),Y=l(),U=Array.isArray;t.exports=h},{}],13:[function(e,t,n){(function(e){function r(e,t){return null==e?void 0:e[t]}function o(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(n){}return t}function i(e,t){return function(n){return e(t(n))}}function a(e){return B.call(e)}function u(e){if(!v(e)||f(e))return!1;var t=y(e)||o(e)?V:D;return t.test(s(e))}function c(e,t){var n=r(e,t);return u(n)?n:void 0}function f(e){return!!H&&H in e}function l(e){var t=e&&e.constructor,n="function"==typeof t&&t.prototype||L;return e===n}function s(e){if(null!=e){try{return $.call(e)}catch(t){}try{return e+""}catch(t){}}return""}function d(e){return p(e)&&R.call(e,"callee")&&(!X.call(e,"callee")||B.call(e)==_)}function h(e){return null!=e&&g(e.length)&&!y(e)}function p(e){return m(e)&&h(e)}function b(e){if(h(e)&&(fe(e)||"string"==typeof e||"function"==typeof e.splice||le(e)||d(e)))return!e.length;var t=ce(e);if(t==S||t==T)return!e.size;if(ne||l(e))return!Z(e).length;for(var n in e)if(R.call(e,n))return!1;return!0}function y(e){var t=v(e)?B.call(e):"";return t==x||t==j}function g(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=M}function v(e){var t="undefined"==typeof e?"undefined":_typeof(e);return!!e&&("object"==t||"function"==t)}function m(e){return!!e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function w(){return!1}var M=9007199254740991,_="[object Arguments]",x="[object Function]",j="[object GeneratorFunction]",S="[object Map]",O="[object Object]",k="[object Promise]",T="[object Set]",A="[object WeakMap]",C="[object DataView]",N=/[\\^$.*+?()[\]{}|]/g,D=/^\[object .+?Constructor\]$/,F="object"==("undefined"==typeof e?"undefined":_typeof(e))&&e&&e.Object===Object&&e,Y="object"==("undefined"==typeof self?"undefined":_typeof(self))&&self&&self.Object===Object&&self,U=F||Y||Function("return this")(),E="object"==("undefined"==typeof n?"undefined":_typeof(n))&&n&&!n.nodeType&&n,I=E&&"object"==("undefined"==typeof t?"undefined":_typeof(t))&&t&&!t.nodeType&&t,P=I&&I.exports===E,q=Function.prototype,L=Object.prototype,z=U["__core-js_shared__"],H=function(){var e=/[^.]+$/.exec(z&&z.keys&&z.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),$=q.toString,R=L.hasOwnProperty,B=L.toString,V=RegExp("^"+$.call(R).replace(N,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),W=P?U.Buffer:void 0,X=L.propertyIsEnumerable,Q=W?W.isBuffer:void 0,Z=i(Object.keys,Object),G=c(U,"DataView"),J=c(U,"Map"),K=c(U,"Promise"),ee=c(U,"Set"),te=c(U,"WeakMap"),ne=!X.call({valueOf:1},"valueOf"),re=s(G),oe=s(J),ie=s(K),ae=s(ee),ue=s(te),ce=a;(G&&ce(new G(new ArrayBuffer(1)))!=C||J&&ce(new J)!=S||K&&ce(K.resolve())!=k||ee&&ce(new ee)!=T||te&&ce(new te)!=A)&&(ce=function(e){var t=B.call(e),n=t==O?e.constructor:void 0,r=n?s(n):void 0;if(r)switch(r){case re:return C;case oe:return S;case ie:return k;case ae:return T;case ue:return A}return t});var fe=Array.isArray,le=Q||w;t.exports=b}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],14:[function(e,t,n){(function(e){function r(e,t){for(var n=-1,r=null==e?0:e.length,o=0,i=[];++n-1}function j(e,t){var n=this.__data__,r=z(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function S(e){var t=-1,n=null==e?0:e.length;for(this.clear();++tf))return!1;var s=a.get(e);if(s&&a.get(t))return s==t;var d=-1,h=!0,p=n&_e?new N:void 0;for(a.set(e,t),a.set(t,e);++d-1&&e%1==0&&e-1&&e%1==0&&e<=xe}function pe(e){var t="undefined"==typeof e?"undefined":_typeof(e);return null!=e&&("object"==t||"function"==t)}function be(e){return null!=e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))}function ye(e){return le(e)?L(e):Q(e)}function ge(){return[]}function ve(){return!1}var me=200,we="__lodash_hash_undefined__",Me=1,_e=2,xe=9007199254740991,je="[object Arguments]",Se="[object Array]",Oe="[object AsyncFunction]",ke="[object Boolean]",Te="[object Date]",Ae="[object Error]",Ce="[object Function]",Ne="[object GeneratorFunction]",De="[object Map]",Fe="[object Number]",Ye="[object Null]",Ue="[object Object]",Ee="[object Promise]",Ie="[object Proxy]",Pe="[object RegExp]",qe="[object Set]",Le="[object String]",ze="[object Symbol]",He="[object Undefined]",$e="[object WeakMap]",Re="[object ArrayBuffer]",Be="[object DataView]",Ve="[object Float32Array]",We="[object Float64Array]",Xe="[object Int8Array]",Qe="[object Int16Array]",Ze="[object Int32Array]",Ge="[object Uint8Array]",Je="[object Uint8ClampedArray]",Ke="[object Uint16Array]",et="[object Uint32Array]",tt=/[\\^$.*+?()[\]{}|]/g,nt=/^\[object .+?Constructor\]$/,rt=/^(?:0|[1-9]\d*)$/,ot={};ot[Ve]=ot[We]=ot[Xe]=ot[Qe]=ot[Ze]=ot[Ge]=ot[Je]=ot[Ke]=ot[et]=!0,ot[je]=ot[Se]=ot[Re]=ot[ke]=ot[Be]=ot[Te]=ot[Ae]=ot[Ce]=ot[De]=ot[Fe]=ot[Ue]=ot[Pe]=ot[qe]=ot[Le]=ot[$e]=!1;var it="object"==("undefined"==typeof e?"undefined":_typeof(e))&&e&&e.Object===Object&&e,at="object"==("undefined"==typeof self?"undefined":_typeof(self))&&self&&self.Object===Object&&self,ut=it||at||Function("return this")(),ct="object"==("undefined"==typeof n?"undefined":_typeof(n))&&n&&!n.nodeType&&n,ft=ct&&"object"==("undefined"==typeof t?"undefined":_typeof(t))&&t&&!t.nodeType&&t,lt=ft&&ft.exports===ct,st=lt&&it.process,dt=function(){try{return st&&st.binding&&st.binding("util")}catch(e){}}(),ht=dt&&dt.isTypedArray,pt=Array.prototype,bt=Function.prototype,yt=Object.prototype,gt=ut["__core-js_shared__"],vt=bt.toString,mt=yt.hasOwnProperty,wt=function(){var e=/[^.]+$/.exec(gt&>.keys&>.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),Mt=yt.toString,_t=RegExp("^"+vt.call(mt).replace(tt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),xt=lt?ut.Buffer:void 0,jt=ut.Symbol,St=ut.Uint8Array,Ot=yt.propertyIsEnumerable,kt=pt.splice,Tt=jt?jt.toStringTag:void 0,At=Object.getOwnPropertySymbols,Ct=xt?xt.isBuffer:void 0,Nt=s(Object.keys,Object),Dt=te(ut,"DataView"),Ft=te(ut,"Map"),Yt=te(ut,"Promise"),Ut=te(ut,"Set"),Et=te(ut,"WeakMap"),It=te(Object,"create"),Pt=ce(Dt),qt=ce(Ft),Lt=ce(Yt),zt=ce(Ut),Ht=ce(Et),$t=jt?jt.prototype:void 0,Rt=$t?$t.valueOf:void 0;h.prototype.clear=p,h.prototype["delete"]=b,h.prototype.get=y,h.prototype.has=g,h.prototype.set=v,m.prototype.clear=w,m.prototype["delete"]=M,m.prototype.get=_,m.prototype.has=x,m.prototype.set=j,S.prototype.clear=O,S.prototype["delete"]=k,S.prototype.get=T,S.prototype.has=A,S.prototype.set=C,N.prototype.add=N.prototype.push=D,N.prototype.has=F,Y.prototype.clear=U,Y.prototype["delete"]=E,Y.prototype.get=I,Y.prototype.has=P,Y.prototype.set=q;var Bt=At?function(e){return null==e?[]:(e=Object(e),r(At(e),function(t){return Ot.call(e,t)}))}:ge,Vt=$;(Dt&&Vt(new Dt(new ArrayBuffer(1)))!=Be||Ft&&Vt(new Ft)!=De||Yt&&Vt(Yt.resolve())!=Ee||Ut&&Vt(new Ut)!=qe||Et&&Vt(new Et)!=$e)&&(Vt=function(e){var t=$(e),n=t==Ue?e.constructor:void 0,r=n?ce(n):"";if(r)switch(r){case Pt:return Be;case qt:return De;case Lt:return Ee;case zt:return qe;case Ht:return $e}return t});var Wt=R(function(){return arguments}())?R:function(e){return be(e)&&mt.call(e,"callee")&&!Ot.call(e,"callee")},Xt=Array.isArray,Qt=Ct||ve,Zt=ht?u(ht):X;t.exports=se}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],15:[function(e,t,n){function r(e){this.callback=e,this.ticking=!1}window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,r.prototype={constructor:r,update:function(){this.callback&&this.callback(),this.ticking=!1},requestTick:function(){this.ticking||(requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))),this.ticking=!0)},handleEvent:function(){this.requestTick()}},t.exports=r},{}],16:[function(e,t,n){function r(e){e=o(r.options,e),this.lastKnownScrollY=0,this.initialised=!1,this.onScrollCallback=e.onScrollCallback}var o=(e("lodash.isequal"),e("lodash.foreach"),e("lodash.isempty"),e("lodash.clone"),e("lodash.assign")),i=e("./Debouncer");r.prototype={constructor:r,init:function(){return this.debouncer=new i(this.update.bind(this)),setTimeout(this.attachEvent.bind(this),100),this},attachEvent:function(){this.initialised||(this.lastKnownScrollY=this.getScrollY(),this.initialised=!0,window.addEventListener("scroll",this.debouncer,!1),this.debouncer.handleEvent())},getScrollY:function(){return void 0!==window.pageYOffset?window.pageYOffset:void 0!==window.scrollTop?window.scrollTop:(document.documentElement||document.body.parentNode||document.body).scrollTop},update:function(){var e=this.getScrollY();e>this.lastKnownScrollY?"down":"up";this.onScrollCallback(e),this.lastKnownScrollY=e;
+},destroy:function(){this.initialised=!1,window.removeEventListener("scroll",this.debouncer,!1)}},r.options={onScrollCallback:function(){}},t.exports=r},{"./Debouncer":15,"lodash.assign":10,"lodash.clone":11,"lodash.foreach":12,"lodash.isempty":13,"lodash.isequal":14}],17:[function(e,t,n){function r(e){e=o(e,r.options),this.PROPERTIES=["translateX","translateY","opacity","scale"],this.keyframes=e.keyframes}function o(e){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var t,n,r=e||{};for(n=1;n=n.reveal.when&&t.updateCSSClass(n.element,n.reveal.className)})}var t=this;return new a({onScrollCallback:e.bind(this)}).init(),this.toAnimate=this.keyframes.filter(function(e){return e.animate}),this.toReveal=this.keyframes.filter(function(e){return e.reveal}),this.toAnimate.forEach(function(e){e&&e.animate.forEach(function(n){n.scale=t.createScale(n.property,e.domain,n.range)})}),this},calculatePropertyValues:function(e,t){var n=this,r=new Object;return this.PROPERTIES.forEach(function(o){r[o]=n.getDefaultPropertyValue(o),e.forEach(function(e){e.property==o&&(r[o]=n.scaleValue(e.scale,t))})}),r},scaleValue:function(e,t){return e(t)},updateCSSValues:function(e,t){return e.style.transform="translate3d("+t.translateX+"px, "+t.translateY+"px, 0) scale("+t.scale+")",e.style.opacity=t.opacity,e},updateCSSClass:function(e,t){return e.classList?e.classList.add(t):e.className+=" "+t,e},getDefaultPropertyValue:function(e){switch(e){case"translateX":return 0;case"translateY":return 0;case"scale":return 1;case"rotate":return 0;case"opacity":return 1;default:return null}},createScale:function(e,t,n){switch(e){case"translateX":case"translateY":case"scale":case"opacity":return u.scaleLinear().domain(t).range(n).interpolate(this.easeInterpolate(f.easeCubicOut)).clamp(!0);default:return null}},easeInterpolate:function(e){return function(t,n){var r=c.interpolate(t,n);return function(t){return Math.round(100*r(e(t)))/100}}}},r.options={keyframes:{}},t.exports=r},{"./Scrllr.js":16,"d3-ease":4,"d3-interpolate":6,"d3-scale":7}],18:[function(e,t,n){function r(e,t,n,o,i,a){o=o?o:0;var u=document.documentElement,c=u.clientHeight,f="scrollMaxY"in window?window.scrollMaxY:u.scrollHeight-c,l=window.pageYOffset,s=l,d=isNaN(e)?e.getBoundingClientRect():0;"center"===i?(s+=isNaN(e)?d.top+d.height/2:e,s-=c/2,s-=o):"bottom"===i?(s+=d.bottom||e,s-=c,s+=o):(s+=d.top||e,s-=o),s=Math.max(Math.min(f,s),0);var h=s-l,p={targetY:s,deltaY:h,duration:t?t:0,easing:n in r.Easing?r.Easing[n]:r.Easing.linear,onFinish:a,startTime:Date.now(),lastY:l,step:r.step};window.requestAnimationFrame(p.step.bind(p))}r.Easing={linear:function(e){return e},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutQuad:function(e){return e<.5?2*e*e:-1+(4-2*e)*e},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return--e*e*e+1},easeInOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1- --e*e*e*e},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1+--e*e*e*e*e},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e}},r.step=function(){if(this.lastY!==window.pageYOffset&&this.onFinish)return void this.onFinish();var e=Math.min((Date.now()-this.startTime)/this.duration,1),t=this.targetY-(1-this.easing(e))*this.deltaY;window.scrollTo(window.scrollX,t),1!==e?(this.lastY=window.pageYOffset,window.requestAnimationFrame(this.step.bind(this))):this.onFinish&&this.onFinish()},t.exports=r},{}],19:[function(e,t,n){function r(){i(document.querySelectorAll(".qr-popup")[0],"qr-popup--shown")}function o(){a(document.querySelectorAll(".qr-popup")[0],"qr-popup--shown")}function i(e,t){return e.classList?e.classList.add(t):e.className+=" "+t,e}function a(e,t){return e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp("(^|\\b)"+t.split(" ").join("|")+"(\\b|$)","gi")," "),e}var u=e("./lib/ScrollOver.js"),c=e("./lib/animatescroll.js"),f=document.querySelectorAll("body")[0],l=(document.querySelectorAll(".tagline")[0],document.querySelectorAll(".phone-wrap--iphone")[0]),s=document.querySelectorAll(".phone-wrap--android")[0],d=document.querySelectorAll(".features-wrap")[0],h=document.querySelectorAll(".slide--two")[0],p=document.querySelectorAll(".slide--three")[0],b=document.querySelectorAll(".slide--six")[0],y=document.querySelectorAll(".language-switcher")[0];setTimeout(function(){return f.classList.add("shown")},400),document.querySelectorAll(".button--more")[0].addEventListener("click",function(e){c(h,600,"easeInOutCubic",0),e.preventDefault()}),new u({keyframes:[{element:l,domain:[0,800],animate:[{property:"translateY",range:[0,60]}]},{element:s,domain:[0,800],animate:[{property:"translateY",range:[0,110]}]},{element:d,domain:[200,800],animate:[{property:"translateY",range:[0,-40]}]},{element:h,reveal:{when:440,className:"slide--shown"}},{element:p,reveal:{when:1200,className:"slide--shown"}},{element:b,reveal:{when:2190,className:"slide--shown"}}]}).init(),document.querySelectorAll(".nav__item--download")[0]&&(document.querySelectorAll(".nav__item--download")[0].addEventListener("mouseover",function(e){r()}),document.querySelectorAll(".nav__item--download")[0].addEventListener("mouseout",function(e){o()})),y.addEventListener("change",function(){var e=y.options[y.selectedIndex].value;return"en"==e?void window.location.replace("https://status.im/"):void window.location.replace("https://status.im/"+e+".html")})},{"./lib/ScrollOver.js":17,"./lib/animatescroll.js":18}]},{},[19]);
+//# sourceMappingURL=main.js.map
diff --git a/dist/js/main.js.map b/dist/js/main.js.map
new file mode 100644
index 0000000..391aaa5
--- /dev/null
+++ b/dist/js/main.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["js/main.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","global","factory","define","amd","d3","this","ascendingComparator","d","x","ascending","pair","b","tickIncrement","start","stop","count","step","Math","max","power","floor","log","LN10","error","pow","e10","e5","e2","tickStep","step0","abs","step1","NaN","bisector","compare","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","pairs","array","p","Array","cross","values0","values1","reduce","i0","i1","value0","n0","n1","values","descending","number","variance","valueof","value","delta","m","mean","sum","isNaN","deviation","v","sqrt","extent","min","slice","map","constant","identity","range","arguments","ceil","ticks","reverse","isFinite","sturges","LN2","histogram","data","xz","domain","x0","x1","tz","threshold","isArray","shift","pop","bin","bins","push","_","thresholds","quantile","value1","freedmanDiaconis","sort","scott","median","numbers","merge","arrays","merged","j","permute","indexes","permutes","scan","xi","xj","shuffle","random","transpose","matrix","row","zip","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","Object","defineProperty","2","Map","object","each","key","set","createObject","setObject","createMap","setMap","map$$1","Set","add","prefix","has","get","remove","property","clear","keys","entries","size","empty","nest","apply","depth","createResult","setResult","_sortValues","_rollup","keyValue","valuesByKey","result","_entries","sortKey","_sortKeys","k","sortKeys","order","sortValues","rollup","proto","3","extend","parent","definition","create","Color","color","format","trim","toLowerCase","reHex3","exec","parseInt","Rgb","reHex6","rgbn","reRgbInteger","reRgbPercent","reRgbaInteger","rgba","reRgbaPercent","reHslPercent","hsla","reHslaPercent","named","hasOwnProperty","g","rgbConvert","rgb","opacity","h","Hsl","hslConvert","hsl","hsl2rgb","m1","m2","labConvert","Lab","Hcl","deg2rad","cos","c","sin","rgb2xyz","xyz2lab","Xn","y","Yn","z","Zn","lab","t3","t2","t0","lab2xyz","t1","xyz2rgb","hclConvert","atan2","rad2deg","hcl","cubehelixConvert","Cubehelix","BC_DA","ED","EB","bl","E","C","D","cubehelix","_darker","_brighter","reI","reN","reP","RegExp","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","displayable","toString","brighter","darker","round","PI","Kn","A","B","cosh","sinh","4","linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","sinIn","halfPi","sinOut","sinInOut","pi","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounceIn","bounceOut","b1","b0","b3","b2","b4","b6","b5","b7","b8","b9","bounceInOut","exponent","polyIn","custom","polyOut","polyInOut","overshoot","backIn","backOut","backInOut","tau","amplitude","period","elasticIn","asin","elasticOut","elasticInOut","easeLinear","easeQuad","easeQuadIn","easeQuadOut","easeQuadInOut","easeCubic","easeCubicIn","easeCubicOut","easeCubicInOut","easePoly","easePolyIn","easePolyOut","easePolyInOut","easeSin","easeSinIn","easeSinOut","easeSinInOut","easeExp","easeExpIn","easeExpOut","easeExpInOut","easeCircle","easeCircleIn","easeCircleOut","easeCircleInOut","easeBounce","easeBounceIn","easeBounceOut","easeBounceInOut","easeBack","easeBackIn","easeBackOut","easeBackInOut","easeElastic","easeElasticIn","easeElasticOut","easeElasticInOut","5","formatSpecifier","specifier","FormatSpecifier","match","re","fill","align","sign","symbol","zero","width","comma","precision","type","formatTypes","defaultLocale","locale","formatLocale","formatPrefix","prefixExponent","formatDecimal","toExponential","indexOf","coefficient","formatGroup","grouping","thousands","substring","join","formatNumerals","numerals","replace","formatDefault","toPrecision","out","formatPrefixAuto","formatRounded","","%","toFixed","_p","X","toUpperCase","_x","prefixes","newFormat","valuePrefix","valueSuffix","suffix","formatType","valueNegative","maybeSuffix","charCodeAt","decimal","group","Infinity","padding","currency","test","percent","precisionFixed","precisionPrefix","precisionRound","formatDefaultLocale","6","d3Color","basis","v0","v1","v2","v3","exponential","hue","gamma","nogamma","rgbSpline","spline","colors","color$$1","one","parseCss","cssNode","document","createElement","cssRoot","documentElement","cssView","defaultView","style","transform","getComputedStyle","appendChild","getPropertyValue","removeChild","split","decompose","parseSvg","svgNode","createElementNS","setAttribute","baseVal","consolidate","interpolateTransform","parse","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","q","rotate","skewX","scale","translateX","translateY","scaleX","scaleY","exp","tanh","hsl$1","hue$$1","end","lab$1","hcl$1","cubehelix$1","cubehelixGamma","cubehelix$$1","basis$1","basisClosed","rgb$1","rgbGamma","rgb$$1","rgbBasis","rgbBasisClosed","nb","na","date","Date","setTime","reA","reB","source","string","am","bm","bs","bi","lastIndex","index","valueOf","degrees","atan","interpolateTransformCss","interpolateTransformSvg","rho","SQRT2","rho2","rho4","epsilon2","zoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","d1","r0","r1","coshr0","duration","hsl$2","hslLong","hcl$2","hclLong","cubehelix$2","cubehelixLong","quantize","interpolator","samples","interpolate","interpolateArray","interpolateBasis","interpolateBasisClosed","interpolateDate","interpolateNumber","interpolateObject","interpolateRound","interpolateString","interpolateZoom","interpolateRgb","interpolateRgbBasis","interpolateRgbBasisClosed","interpolateHsl","interpolateHslLong","interpolateLab","interpolateHcl","interpolateHclLong","interpolateCubehelix","interpolateCubehelixLong","d3-color","7","d3Array","d3Collection","d3Interpolate","d3Format","d3Time","d3TimeFormat","ordinal","range$$1","unknown","implicit","copy","band","rescale","paddingInner","paddingOuter","bandwidth","ordinalRange","undefined","rangeRound","pointish","point","deinterpolateLinear","deinterpolateClamp","deinterpolate","reinterpolateClamp","reinterpolate","bimap","d0","polymap","target","clamp","continuous","piecewise","output","input","interpolate$$1","unit","invert","map$1","linearish","tickFormat","nice","pow10","powp","base","logp","log10","log2","reflect","logs","pows","raise","quantile$1","invertExtent","quantiles","number$1","calendar","year","month","week","day","hour","minute","second","millisecond","format$$1","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickInterval","interval","tickIntervals","durationYear","every","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","ramp","sequential","name","time","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","timeMillisecond","timeFormat","utcTime","utcYear","utcMonth","utcWeek","utcDay","utcHour","utcMinute","utcSecond","utcMillisecond","utcFormat","UTC","category10","category20b","category20c","category20","warm","cool","rainbow","rainbow$1","ts","viridis","magma","inferno","plasma","scaleBand","scalePoint","scaleIdentity","scaleLinear","scaleLog","scaleOrdinal","scaleImplicit","scalePow","scaleSqrt","scaleQuantile","scaleQuantize","scaleThreshold","scaleTime","scaleUtc","schemeCategory10","schemeCategory20b","schemeCategory20c","schemeCategory20","interpolateCubehelixDefault","interpolateRainbow","interpolateWarm","interpolateCool","interpolateViridis","interpolateMagma","interpolateInferno","interpolatePlasma","scaleSequential","d3-array","d3-collection","d3-format","d3-interpolate","d3-time","d3-time-format","8","localDate","H","M","L","setFullYear","utcDate","setUTCFullYear","newYear","formats","pad","pads","charAt","newParse","newDate","parseSpecifier","Q","V","w","getUTCDay","utcMonday","offset","getUTCFullYear","getUTCMonth","getUTCDate","getDay","timeMonday","getFullYear","getMonth","getDate","W","U","Z","parses","parsePeriod","periodRe","periodLookup","parseShortWeekday","shortWeekdayRe","shortWeekdayLookup","parseWeekday","weekdayRe","weekdayLookup","parseShortMonth","shortMonthRe","shortMonthLookup","parseMonth","monthRe","monthLookup","parseLocaleDateTime","locale_dateTime","parseLocaleDate","locale_date","parseLocaleTime","locale_time","formatShortWeekday","locale_shortWeekdays","formatWeekday","locale_weekdays","formatShortMonth","locale_shortMonths","locale_months","formatPeriod","locale_periods","getHours","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","getUTCHours","dateTime","periods","days","shortDays","months","shortMonths","formatRe","formatLookup","formatDayOfMonth","formatMicroseconds","formatHour24","I","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","Y","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","utcParse","requote","requoteRe","names","numberRe","percentRe","getMilliseconds","getMinutes","getSeconds","timeSunday","timeThursday","getTimezoneOffset","getUTCMilliseconds","getUTCMinutes","getUTCSeconds","dow","utcSunday","utcThursday","timeParse","formatIsoNative","toISOString","parseIsoNative","-","0","isoSpecifier","formatIso","parseIso","timeFormatDefaultLocale","timeFormatLocale","isoFormat","isoParse","9","newInterval","floori","offseti","field","filter","weekday","setDate","setHours","utcWeekday","setUTCDate","setUTCHours","milliseconds","seconds","minutes","hours","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","setMonth","years","setUTCSeconds","utcMinutes","setUTCMinutes","utcHours","utcDays","utcTuesday","utcWednesday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","setUTCMonth","utcMonths","utcYears","timeInterval","timeMilliseconds","utcMilliseconds","timeSeconds","utcSeconds","timeMinutes","timeHours","timeDays","timeWeeks","timeSundays","timeMondays","timeTuesday","timeTuesdays","timeWednesday","timeWednesdays","timeThursdays","timeFriday","timeFridays","timeSaturday","timeSaturdays","timeMonths","timeYears","utcWeeks","10","func","thisArg","args","baseTimes","iteratee","overArg","arg","arrayLikeKeys","inherited","isArguments","String","skipIndexes","isIndex","assignValue","objValue","eq","baseKeys","isPrototype","nativeKeys","baseRest","nativeMax","otherArgs","copyObject","props","customizer","newValue","createAssigner","assigner","sources","guard","isIterateeCall","MAX_SAFE_INTEGER","reIsUint","isObject","isArrayLike","Ctor","objectProto","other","isArrayLikeObject","propertyIsEnumerable","objectToString","argsTag","isLength","isFunction","isObjectLike","tag","funcTag","genTag","nonEnumShadows","assign","11","addMapEntry","addSetEntry","arrayEach","arrayPush","arrayReduce","accumulator","initAccum","getValue","isHostObject","mapToArray","forEach","setToArray","Hash","entry","hashClear","__data__","nativeCreate","hashDelete","hashGet","HASH_UNDEFINED","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","splice","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","hash","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","cache","LARGE_ARRAY_SIZE","baseAssign","baseClone","isDeep","isFull","stack","isArr","initCloneArray","copyArray","getTag","isFunc","isBuffer","cloneBuffer","objectTag","initCloneObject","copySymbols","cloneableTags","initCloneByTag","stacked","getAllKeys","subValue","baseCreate","objectCreate","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","baseIsNative","isMasked","pattern","reIsNative","reIsHostCtor","toSource","buffer","cloneArrayBuffer","arrayBuffer","byteLength","Uint8Array","cloneDataView","dataView","byteOffset","cloneMap","cloneFunc","cloneRegExp","regexp","reFlags","cloneSet","cloneSymbol","symbolValueOf","cloneTypedArray","typedArray","getSymbols","isKeyable","getNative","getPrototype","arrayBufferTag","boolTag","dateTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","mapTag","numberTag","stringTag","regexpTag","setTag","symbolTag","maskSrcKey","funcToString","clone","stubArray","stubFalse","arrayTag","errorTag","promiseTag","weakMapTag","reRegExpChar","freeGlobal","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","arrayProto","funcProto","coreJsData","uid","IE_PROTO","Buffer","_Symbol","getPrototypeOf","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","DataView","Promise","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","ArrayBuffer","resolve","ctorString","window","12","baseForOwn","baseFor","createBaseEach","eachFunc","fromRight","collection","iterable","createBaseFor","baseEach","13","isEmpty","14","arrayFilter","predicate","resIndex","arraySome","baseUnary","cacheHas","SetCache","setCacheAdd","setCacheHas","isArg","isBuff","isType","isTypedArray","undefinedTag","nullTag","symToStringTag","getRawTag","baseIsArguments","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","COMPARE_PARTIAL_FLAG","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsTypedArray","typedArrayTags","isPartial","arrLength","othLength","seen","COMPARE_UNORDERED_FLAG","arrValue","othValue","compared","othIndex","message","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","isOwn","unmasked","nativeObjectToString","isEqual","asyncTag","proxyTag","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","_Symbol2","toStringTag","15","Debouncer","callback","ticking","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","update","requestTick","rafCallback","bind","handleEvent","16","Scrllr","options","extendObject","lastKnownScrollY","initialised","onScrollCallback","debouncer","init","setTimeout","attachEvent","getScrollY","addEventListener","pageYOffset","scrollTop","body","parentNode","currentScrollY","destroy","removeEventListener","./Debouncer","lodash.assign","lodash.clone","lodash.foreach","lodash.isempty","lodash.isequal","17","ScrollOver","PROPERTIES","keyframes","replacement","isDOMElement","Scale","Interpolator","Ease","scrollY","_this2","toAnimate","keyframe","updateCSSValues","element","calculatePropertyValues","animate","toReveal","reveal","when","updateCSSClass","className","_this","item","createScale","animations","_this3","CSSValues","propertyName","getDefaultPropertyValue","animation","scaleValue","CSS","classList","easeInterpolate","ease","./Scrllr.js","d3-ease","d3-scale","18","animateScroll","easing","onFinish","docElem","windowHeight","clientHeight","maxScroll","scrollMaxY","scrollHeight","currentY","targetY","elementBounds","getBoundingClientRect","top","height","bottom","deltaY","Easing","startTime","now","lastY","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","scrollTo","scrollX","19","showQRPopup","addClassToElement","querySelectorAll","hideQRPopup","removeClassFromElement","iphone","android","features","slideTwo","slideThree","slideSix","languageSelect","event","preventDefault","lang","selectedIndex","location","./lib/ScrollOver.js","./lib/animatescroll.js"],"mappings":"AAAA,YAEA,IAAIA,SAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOI,UAAY,eAAkBF,KAEtQ,QAAUG,GAAEC,EAAGC,EAAGC,GAChB,QAASC,GAAEC,EAAGC,GACZ,IAAKJ,EAAEG,GAAI,CACT,IAAKJ,EAAEI,GAAI,CACT,GAAIE,GAAsB,kBAAXC,UAAyBA,OAAQ,KAAKF,GAAKC,EAAG,MAAOA,GAAEF,GAAG,EAAI,IAAII,EAAG,MAAOA,GAAEJ,GAAG,EAAI,IAAIK,GAAI,GAAIC,OAAM,uBAAyBN,EAAI,IAAK,MAAMK,GAAEE,KAAO,mBAAoBF,EAC5L,GAAIG,GAAIX,EAAEG,IAAOS,WAAcb,GAAEI,GAAG,GAAGU,KAAKF,EAAEC,QAAS,SAAUd,GAChE,GAAIE,GAAID,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAIA,EAAIF,IACnCa,EAAGA,EAAEC,QAASd,EAAGC,EAAGC,EAAGC,GAC3B,MAAOD,GAAEG,GAAGS,QACkC,IAAK,GAAjDL,GAAsB,kBAAXD,UAAyBA,QAAiBH,EAAI,EAAGA,EAAIF,EAAEa,OAAQX,IAC7ED,EAAED,EAAEE,GACL,OAAOD,KACLa,GAAI,SAAUT,EAASU,EAAQJ,IAEhC,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,GAA6B,kBAAXO,SAAyBA,OAAOC,IAAMD,QAAQ,WAAYD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,SAC3OC,KAAM,SAAUV,GA+BjB,QAASW,GAAoBf,GAC3B,MAAO,UAAUgB,EAAGC,GAClB,MAAOC,GAAUlB,EAAEgB,GAAIC,IAmB3B,QAASE,GAAKtB,EAAGuB,GACf,OAAQvB,EAAGuB,GA4Kb,QAASC,GAAcC,EAAOC,EAAMC,GAClC,GAAIC,IAAQF,EAAOD,GAASI,KAAKC,IAAI,EAAGH,GACpCI,EAAQF,KAAKG,MAAMH,KAAKI,IAAIL,GAAQC,KAAKK,MACzCC,EAAQP,EAAOC,KAAKO,IAAI,GAAIL,EAChC,OAAOA,IAAS,GAAKI,GAASE,EAAM,GAAKF,GAASG,EAAK,EAAIH,GAASI,EAAK,EAAI,GAAKV,KAAKO,IAAI,GAAIL,IAAUF,KAAKO,IAAI,IAAKL,IAAUI,GAASE,EAAM,GAAKF,GAASG,EAAK,EAAIH,GAASI,EAAK,EAAI,GAG3L,QAASC,GAASf,EAAOC,EAAMC,GAC7B,GAAIc,GAAQZ,KAAKa,IAAIhB,EAAOD,GAASI,KAAKC,IAAI,EAAGH,GAC7CgB,EAAQd,KAAKO,IAAI,GAAIP,KAAKG,MAAMH,KAAKI,IAAIQ,GAASZ,KAAKK,OACvDC,EAAQM,EAAQE,CAEpB,OADIR,IAASE,EAAKM,GAAS,GAAYR,GAASG,EAAIK,GAAS,EAAWR,GAASI,IAAII,GAAS,GACvFjB,EAAOD,GAASkB,EAAQA,EAoTjC,QAASlC,GAAOU,GACd,MAAOA,GAAEV,OA/hBX,GAAIY,GAAY,SAAmBrB,EAAGuB,GACpC,MAAOvB,GAAIuB,KAASvB,EAAIuB,EAAI,EAAIvB,GAAKuB,EAAI,EAAIqB,KAG3CC,EAAW,SAAkBC,GAE/B,MADuB,KAAnBA,EAAQrC,SAAcqC,EAAU5B,EAAoB4B,KAEtDC,KAAM,SAAc/C,EAAGoB,EAAG4B,EAAIC,GAG5B,IAFU,MAAND,IAAYA,EAAK,GACX,MAANC,IAAYA,EAAKjD,EAAES,QAChBuC,EAAKC,GAAI,CACd,GAAIC,GAAMF,EAAKC,IAAO,CAClBH,GAAQ9C,EAAEkD,GAAM9B,GAAK,EAAG4B,EAAKE,EAAM,EAAOD,EAAKC,EAErD,MAAOF,IAETG,MAAO,SAAenD,EAAGoB,EAAG4B,EAAIC,GAG9B,IAFU,MAAND,IAAYA,EAAK,GACX,MAANC,IAAYA,EAAKjD,EAAES,QAChBuC,EAAKC,GAAI,CACd,GAAIC,GAAMF,EAAKC,IAAO,CAClBH,GAAQ9C,EAAEkD,GAAM9B,GAAK,EAAG6B,EAAKC,EAASF,EAAKE,EAAM,EAEvD,MAAOF,MAWTI,EAAkBP,EAASxB,GAC3BgC,EAAcD,EAAgBD,MAC9BG,EAAaF,EAAgBL,KAE7BQ,EAAQ,QAASA,GAAMC,EAAOrD,GACvB,MAALA,IAAWA,EAAImB,EAKnB,KAJA,GAAIpB,GAAI,EACJP,EAAI6D,EAAM/C,OAAS,EACnBgD,EAAID,EAAM,GACVD,EAAQ,GAAIG,OAAM/D,EAAI,EAAI,EAAIA,GAC3BO,EAAIP,GACT4D,EAAMrD,GAAKC,EAAEsD,EAAGA,EAAID,IAAQtD,GAC7B,OAAOqD,IAONI,EAAQ,SAAeC,EAASC,EAASC,GAC3C,GAGIC,GACAC,EACA9D,EACA+D,EANAC,EAAKN,EAAQnD,OACb0D,EAAKN,EAAQpD,OACb2D,EAAS,GAAIV,OAAMQ,EAAKC,EAQ5B,KAFc,MAAVL,IAAgBA,EAASxC,GAExByC,EAAK7D,EAAI,EAAG6D,EAAKG,IAAMH,EAC1B,IAAKE,EAASL,EAAQG,GAAKC,EAAK,EAAGA,EAAKG,IAAMH,IAAM9D,EAClDkE,EAAOlE,GAAK4D,EAAOG,EAAQJ,EAAQG,GAIvC,OAAOI,IAGLC,EAAa,SAAoBrE,EAAGuB,GACtC,MAAOA,GAAIvB,KAASuB,EAAIvB,EAAI,EAAIuB,GAAKvB,EAAI,EAAI4C,KAG3C0B,EAAS,SAAgBlD,GAC3B,MAAa,QAANA,EAAawB,KAAOxB,GAGzBmD,EAAW,SAAkBH,EAAQI,GACvC,GAIIC,GACAC,EALA/E,EAAIyE,EAAO3D,OACXkE,EAAI,EACJzE,KACA0E,EAAO,EAGPC,EAAM,CAEV,IAAe,MAAXL,EACF,OAAStE,EAAIP,GACNmF,MAAML,EAAQH,EAAOF,EAAOlE,OAC/BwE,EAAQD,EAAQG,EAChBA,GAAQF,IAAUC,EAClBE,GAAOH,GAASD,EAAQG,QAI5B,QAAS1E,EAAIP,GACNmF,MAAML,EAAQH,EAAOE,EAAQJ,EAAOlE,GAAIA,EAAGkE,OAC9CM,EAAQD,EAAQG,EAChBA,GAAQF,IAAUC,EAClBE,GAAOH,GAASD,EAAQG,GAK9B,IAAID,EAAI,EAAG,MAAOE,IAAOF,EAAI,IAG3BI,EAAY,SAAmBvB,EAAOrD,GACxC,GAAI6E,GAAIT,EAASf,EAAOrD,EACxB,OAAO6E,GAAInD,KAAKoD,KAAKD,GAAKA,GAGxBE,EAAS,SAAgBd,EAAQI,GACnC,GAEIC,GACAU,EACArD,EAJAnC,EAAIyE,EAAO3D,OACXP,IAKJ,IAAe,MAAXsE,GACF,OAAStE,EAAIP,GAEX,GAA2B,OAAtB8E,EAAQL,EAAOlE,KAAeuE,GAASA,EAE1C,IADAU,EAAMrD,EAAM2C,IACHvE,EAAIP,GAEgB,OAAtB8E,EAAQL,EAAOlE,MACdiF,EAAMV,IAAOU,EAAMV,GACnB3C,EAAM2C,IAAO3C,EAAM2C,QAM/B,QAASvE,EAAIP,GAEX,GAA+C,OAA1C8E,EAAQD,EAAQJ,EAAOlE,GAAIA,EAAGkE,KAAoBK,GAASA,EAE9D,IADAU,EAAMrD,EAAM2C,IACHvE,EAAIP,GAEoC,OAA1C8E,EAAQD,EAAQJ,EAAOlE,GAAIA,EAAGkE,MAC7Be,EAAMV,IAAOU,EAAMV,GACnB3C,EAAM2C,IAAO3C,EAAM2C,GAOjC,QAAQU,EAAKrD,IAGX0B,EAAQE,MAAMlE,UAEd4F,EAAQ5B,EAAM4B,MACdC,EAAM7B,EAAM6B,IAEZC,EAAW,SAAkBlE,GAC/B,MAAO,YACL,MAAOA,KAIPmE,EAAW,SAAkBnE,GAC/B,MAAOA,IAGLoE,EAAQ,QAASA,GAAM/D,EAAOC,EAAME,GACtCH,GAASA,EAAOC,GAAQA,EAAME,GAAQjC,EAAI8F,UAAUhF,QAAU,GAAKiB,EAAOD,EAAOA,EAAQ,EAAG,GAAK9B,EAAI,EAAI,GAAKiC,CAM9G,KAJA,GAAI1B,MACAP,EAAoD,EAAhDkC,KAAKC,IAAI,EAAGD,KAAK6D,MAAMhE,EAAOD,GAASG,IAC3C4D,EAAQ,GAAI9B,OAAM/D,KAEbO,EAAIP,GACX6F,EAAMtF,GAAKuB,EAAQvB,EAAI0B,CAGzB,OAAO4D,IAGLnD,EAAMR,KAAKoD,KAAK,IAChB3C,EAAKT,KAAKoD,KAAK,IACf1C,EAAKV,KAAKoD,KAAK,GAEfU,EAAQ,QAASA,GAAMlE,EAAOC,EAAMC,GACtC,GAAIiE,GAEAjG,EACAgG,EACA/D,EAHA1B,IAMJ,IADAwB,GAAQA,EAAMD,GAASA,EAAOE,GAASA,EACnCF,IAAUC,GAAQC,EAAQ,EAAG,OAAQF,EAEzC,KADImE,EAAUlE,EAAOD,KAAO9B,EAAI8B,EAAOA,EAAQC,EAAMA,EAAO/B,GACT,KAA9CiC,EAAOJ,EAAcC,EAAOC,EAAMC,MAAkBkE,SAASjE,GAAO,QAEzE,IAAIA,EAAO,EAIT,IAHAH,EAAQI,KAAK6D,KAAKjE,EAAQG,GAC1BF,EAAOG,KAAKG,MAAMN,EAAOE,GACzB+D,EAAQ,GAAIjC,OAAM/D,EAAIkC,KAAK6D,KAAKhE,EAAOD,EAAQ,MACtCvB,EAAIP,GACXgG,EAAMzF,IAAMuB,EAAQvB,GAAK0B,MAM3B,KAHAH,EAAQI,KAAKG,MAAMP,EAAQG,GAC3BF,EAAOG,KAAK6D,KAAKhE,EAAOE,GACxB+D,EAAQ,GAAIjC,OAAM/D,EAAIkC,KAAK6D,KAAKjE,EAAQC,EAAO,MACtCxB,EAAIP,GACXgG,EAAMzF,IAAMuB,EAAQvB,GAAK0B,CAM7B,OAFIgE,IAASD,EAAMC,UAEZD,GAkBLG,EAAU,SAAiB1B,GAC7B,MAAOvC,MAAK6D,KAAK7D,KAAKI,IAAImC,EAAO3D,QAAUoB,KAAKkE,KAAO,GAGrDC,EAAY,QAASA,KAKvB,QAASA,GAAUC,GACjB,GAAI/F,GAEAkB,EADAzB,EAAIsG,EAAKxF,OAET2D,EAAS,GAAIV,OAAM/D,EAEvB,KAAKO,EAAI,EAAGA,EAAIP,IAAKO,EACnBkE,EAAOlE,GAAKuE,EAAMwB,EAAK/F,GAAIA,EAAG+F,EAGhC,IAAIC,GAAKC,EAAO/B,GACZgC,EAAKF,EAAG,GACRG,EAAKH,EAAG,GACRI,EAAKC,EAAUnC,EAAQgC,EAAIC,EAG1B3C,OAAM8C,QAAQF,KACjBA,EAAK9D,EAAS4D,EAAIC,EAAIC,GACtBA,EAAKd,EAAM3D,KAAK6D,KAAKU,EAAKE,GAAMA,EAAIzE,KAAKG,MAAMqE,EAAKC,GAAMA,EAAIA,GAKhE,KADA,GAAI3B,GAAI2B,EAAG7F,OACJ6F,EAAG,IAAMF,GACdE,EAAGG,UAAW9B,CACf,MAAO2B,EAAG3B,EAAI,GAAK0B,GAClBC,EAAGI,QAAS/B,CACb,IACGgC,GADCC,EAAO,GAAIlD,OAAMiB,EAAI,EAI1B,KAAKzE,EAAI,EAAGA,GAAKyE,IAAKzE,EACpByG,EAAMC,EAAK1G,MACXyG,EAAIP,GAAKlG,EAAI,EAAIoG,EAAGpG,EAAI,GAAKkG,EAC7BO,EAAIN,GAAKnG,EAAIyE,EAAI2B,EAAGpG,GAAKmG,CAI3B,KAAKnG,EAAI,EAAGA,EAAIP,IAAKO,EACnBkB,EAAIgD,EAAOlE,GACPkG,GAAMhF,GAAKA,GAAKiF,GAClBO,EAAKvD,EAAYiD,EAAIlF,EAAG,EAAGuD,IAAIkC,KAAKZ,EAAK/F,GAI7C,OAAO0G,GAjDT,GAAInC,GAAQc,EACRY,EAASjB,EACTqB,EAAYT,CA8DhB,OAZAE,GAAUvB,MAAQ,SAAUqC,GAC1B,MAAOrB,WAAUhF,QAAUgE,EAAqB,kBAANqC,GAAmBA,EAAIxB,EAASwB,GAAId,GAAavB,GAG7FuB,EAAUG,OAAS,SAAUW,GAC3B,MAAOrB,WAAUhF,QAAU0F,EAAsB,kBAANW,GAAmBA,EAAIxB,GAAUwB,EAAE,GAAIA,EAAE,KAAMd,GAAaG,GAGzGH,EAAUe,WAAa,SAAUD,GAC/B,MAAOrB,WAAUhF,QAAU8F,EAAyB,kBAANO,GAAmBA,EAAuBxB,EAAnB5B,MAAM8C,QAAQM,GAAc1B,EAAM5E,KAAKsG,GAAeA,GAAId,GAAaO,GAGvIP,GAGLgB,EAAW,SAAkB5C,EAAQX,EAAGe,GAE1C,GADe,MAAXA,IAAiBA,EAAUF,GACzB3E,EAAIyE,EAAO3D,OAAjB,CACA,IAAKgD,GAAKA,IAAM,GAAK9D,EAAI,EAAG,OAAQ6E,EAAQJ,EAAO,GAAI,EAAGA,EAC1D,IAAIX,GAAK,EAAG,OAAQe,EAAQJ,EAAOzE,EAAI,GAAIA,EAAI,EAAGyE,EAClD,IAAIzE,GACAO,GAAKP,EAAI,GAAK8D,EACdM,EAAKlC,KAAKG,MAAM9B,GAChB+D,GAAUO,EAAQJ,EAAOL,GAAKA,EAAIK,GAClC6C,GAAUzC,EAAQJ,EAAOL,EAAK,GAAIA,EAAK,EAAGK,EAC9C,OAAOH,IAAUgD,EAAShD,IAAW/D,EAAI6D,KAGvCmD,EAAmB,SAA0B9C,EAAQe,EAAKrD,GAE5D,MADAsC,GAASiB,EAAI7E,KAAK4D,EAAQE,GAAQ6C,KAAK9F,GAChCQ,KAAK6D,MAAM5D,EAAMqD,IAAQ,GAAK6B,EAAS5C,EAAQ,KAAQ4C,EAAS5C,EAAQ,MAASvC,KAAKO,IAAIgC,EAAO3D,UAAa,MAGnH2G,EAAQ,SAAehD,EAAQe,EAAKrD,GACtC,MAAOD,MAAK6D,MAAM5D,EAAMqD,IAAQ,IAAMJ,EAAUX,GAAUvC,KAAKO,IAAIgC,EAAO3D,UAAa,MAGrFqB,EAAM,QAASA,GAAIsC,EAAQI,GAC7B,GAEIC,GACA3C,EAHAnC,EAAIyE,EAAO3D,OACXP,IAIJ,IAAe,MAAXsE,GACF,OAAStE,EAAIP,GAEX,GAA2B,OAAtB8E,EAAQL,EAAOlE,KAAeuE,GAASA,EAE1C,IADA3C,EAAM2C,IACGvE,EAAIP,GAEgB,OAAtB8E,EAAQL,EAAOlE,KAAeuE,EAAQ3C,IACzCA,EAAM2C,OAMd,QAASvE,EAAIP,GAEX,GAA+C,OAA1C8E,EAAQD,EAAQJ,EAAOlE,GAAIA,EAAGkE,KAAoBK,GAASA,EAE9D,IADA3C,EAAM2C,IACGvE,EAAIP,GAEoC,OAA1C8E,EAAQD,EAAQJ,EAAOlE,GAAIA,EAAGkE,KAAoBK,EAAQ3C,IAC7DA,EAAM2C,EAOhB,OAAO3C,IAGL8C,EAAO,SAAcR,EAAQI,GAC/B,GAGIC,GAHA9E,EAAIyE,EAAO3D,OACXkE,EAAIhF,EACJO,KAEA2E,EAAM,CAEV,IAAe,MAAXL,EACF,OAAStE,EAAIP,GACNmF,MAAML,EAAQH,EAAOF,EAAOlE,OAA0ByE,EAApBE,GAAOJ,MAGhD,QAASvE,EAAIP,GACNmF,MAAML,EAAQH,EAAOE,EAAQJ,EAAOlE,GAAIA,EAAGkE,OAA+BO,EAApBE,GAAOJ,CAItE,IAAIE,EAAG,MAAOE,GAAMF,GAGlB0C,EAAS,SAAgBjD,EAAQI,GACnC,GAEIC,GAFA9E,EAAIyE,EAAO3D,OACXP,KAEAoH,IAEJ,IAAe,MAAX9C,EACF,OAAStE,EAAIP,GACNmF,MAAML,EAAQH,EAAOF,EAAOlE,MAC/BoH,EAAQT,KAAKpC,OAIjB,QAASvE,EAAIP,GACNmF,MAAML,EAAQH,EAAOE,EAAQJ,EAAOlE,GAAIA,EAAGkE,MAC9CkD,EAAQT,KAAKpC,EAKnB,OAAOuC,GAASM,EAAQH,KAAK9F,GAAY,KAGvCkG,EAAQ,SAAeC,GAQzB,IAPA,GACI7C,GAGA8C,EACAjE,EALA7D,EAAI6H,EAAO/G,OAEXP,KACAwH,EAAI,IAICxH,EAAIP,GACX+H,GAAKF,EAAOtH,GAAGO,MAGjB,KAFCgH,EAAS,GAAI/D,OAAMgE,KAEX/H,GAAK,GAGZ,IAFA6D,EAAQgE,EAAO7H,GACfgF,EAAInB,EAAM/C,SACDkE,GAAK,GACZ8C,IAASC,GAAKlE,EAAMmB,EAIxB,OAAO8C,IAGLtC,EAAM,QAASA,GAAIf,EAAQI,GAC7B,GAEIC,GACAU,EAHAxF,EAAIyE,EAAO3D,OACXP,IAIJ,IAAe,MAAXsE,GACF,OAAStE,EAAIP,GAEX,GAA2B,OAAtB8E,EAAQL,EAAOlE,KAAeuE,GAASA,EAE1C,IADAU,EAAMV,IACGvE,EAAIP,GAEgB,OAAtB8E,EAAQL,EAAOlE,KAAeiF,EAAMV,IACvCU,EAAMV,OAMd,QAASvE,EAAIP,GAEX,GAA+C,OAA1C8E,EAAQD,EAAQJ,EAAOlE,GAAIA,EAAGkE,KAAoBK,GAASA,EAE9D,IADAU,EAAMV,IACGvE,EAAIP,GAEoC,OAA1C8E,EAAQD,EAAQJ,EAAOlE,GAAIA,EAAGkE,KAAoBe,EAAMV,IAC3DU,EAAMV,EAOhB,OAAOU,IAGLwC,EAAU,SAAiBnE,EAAOoE,GAGpC,IAFA,GAAI1H,GAAI0H,EAAQnH,OACZoH,EAAW,GAAInE,OAAMxD,GAClBA,KACL2H,EAAS3H,GAAKsD,EAAMoE,EAAQ1H,GAC7B,OAAO2H,IAGNC,EAAO,SAAc1D,EAAQtB,GAC/B,GAAMnD,EAAIyE,EAAO3D,OAAjB,CACA,GAAId,GAGAoI,EAFA7H,EAAI,EACJwH,EAAI,EAEJM,EAAK5D,EAAOsD,EAIhB,KAFe,MAAX5E,IAAiBA,EAAUzB,KAEtBnB,EAAIP,IACPmD,EAAQiF,EAAK3D,EAAOlE,GAAI8H,GAAM,GAAyB,IAApBlF,EAAQkF,EAAIA,MACjDA,EAAKD,EAAIL,EAAIxH,EAIjB,OAAwB,KAApB4C,EAAQkF,EAAIA,GAAkBN,EAAlC,SAGEO,EAAU,SAAiBzE,EAAOO,EAAIC,GAKxC,IAJA,GACItE,GACAQ,EAFAyE,GAAW,MAANX,EAAaR,EAAM/C,OAASuD,IAAOD,EAAW,MAANA,EAAa,GAAKA,GAI5DY,GACLzE,EAAI2B,KAAKqG,SAAWvD,IAAM,EAC1BjF,EAAI8D,EAAMmB,EAAIZ,GACdP,EAAMmB,EAAIZ,GAAMP,EAAMtD,EAAI6D,GAC1BP,EAAMtD,EAAI6D,GAAMrE,CAGlB,OAAO8D,IAGLqB,EAAM,QAASA,GAAIT,EAAQI,GAC7B,GAEIC,GAFA9E,EAAIyE,EAAO3D,OACXP,KAEA2E,EAAM,CAEV,IAAe,MAAXL,EACF,OAAStE,EAAIP,IACP8E,GAASL,EAAOlE,MAAI2E,GAAOJ,OAGjC,QAASvE,EAAIP,IACP8E,GAASD,EAAQJ,EAAOlE,GAAIA,EAAGkE,MAASS,GAAOJ,EAIvD,OAAOI,IAGLsD,EAAY,QAASA,GAAUC,GACjC,KAAMzI,EAAIyI,EAAO3H,QAAS,QAC1B,KAAK,GAAIP,MAAQyE,EAAIQ,EAAIiD,EAAQ3H,GAAS0H,EAAY,GAAIzE,OAAMiB,KAAMzE,EAAIyE,GACxE,IAAK,GAAYhF,GAAR+H,KAAWW,EAAMF,EAAUjI,GAAK,GAAIwD,OAAM/D,KAAM+H,EAAI/H,GAC3D0I,EAAIX,GAAKU,EAAOV,GAAGxH,EAGvB,OAAOiI,IAOLG,EAAM,WACR,MAAOH,GAAU1C,WAGnBlF,GAAQgI,OAASlF,EACjB9C,EAAQ8C,YAAcA,EACtB9C,EAAQ+C,WAAaA,EACrB/C,EAAQc,UAAYA,EACpBd,EAAQsC,SAAWA,EACnBtC,EAAQoD,MAAQA,EAChBpD,EAAQ8D,WAAaA,EACrB9D,EAAQwE,UAAYA,EACpBxE,EAAQ2E,OAASA,EACjB3E,EAAQyF,UAAYA,EACpBzF,EAAQiI,0BAA4BtB,EACpC3G,EAAQkI,eAAiBrB,EACzB7G,EAAQmI,iBAAmB5C,EAC3BvF,EAAQuB,IAAMA,EACdvB,EAAQqE,KAAOA,EACfrE,EAAQ8G,OAASA,EACjB9G,EAAQgH,MAAQA,EAChBhH,EAAQ4E,IAAMA,EACd5E,EAAQgD,MAAQA,EAChBhD,EAAQoH,QAAUA,EAClBpH,EAAQyG,SAAWA,EACnBzG,EAAQiF,MAAQA,EAChBjF,EAAQuH,KAAOA,EACfvH,EAAQ0H,QAAUA,EAClB1H,EAAQsE,IAAMA,EACdtE,EAAQoF,MAAQA,EAChBpF,EAAQiB,cAAgBA,EACxBjB,EAAQiC,SAAWA,EACnBjC,EAAQ4H,UAAYA,EACpB5H,EAAQgE,SAAWA,EACnBhE,EAAQ+H,IAAMA,EAEdK,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,WAElDoE,GAAI,SAAU5I,EAASU,EAAQJ,IAErC,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,GAA6B,kBAAXO,SAAyBA,OAAOC,IAAMD,QAAQ,WAAYD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,SAC3OC,KAAM,SAAUV,GAKjB,QAASuI,MA2DT,QAASzD,GAAI0D,EAAQ5I,GACnB,GAAIkF,GAAM,GAAIyD,EAGd,IAAIC,YAAkBD,GAAKC,EAAOC,KAAK,SAAUvE,EAAOwE,GACtD5D,EAAI6D,IAAID,EAAKxE,SAIV,IAAIf,MAAM8C,QAAQuC,GAAS,CAC5B,GAEIjJ,GAFAI,KACAP,EAAIoJ,EAAOtI,MAGf,IAAS,MAALN,EAAW,OAASD,EAAIP,GAC1B0F,EAAI6D,IAAIhJ,EAAG6I,EAAO7I,QACb,QAASA,EAAIP,GAClB0F,EAAI6D,IAAI/I,EAAEL,EAAIiJ,EAAO7I,GAAIA,EAAG6I,GAASjJ,OAKpC,IAAIiJ,EAAQ,IAAK,GAAIE,KAAOF,GAC7B1D,EAAI6D,IAAID,EAAKF,EAAOE,GACrB,OAAO5D,GA6Ed,QAAS8D,KACP,SAGF,QAASC,GAAUL,EAAQE,EAAKxE,GAC9BsE,EAAOE,GAAOxE,EAGhB,QAAS4E,KACP,MAAOhE,KAGT,QAASiE,GAAOC,EAAQN,EAAKxE,GAC3B8E,EAAOL,IAAID,EAAKxE,GAGlB,QAAS+E,MAoBT,QAASN,GAAIH,EAAQ5I,GACnB,GAAI+I,GAAM,GAAIM,EAGd,IAAIT,YAAkBS,GAAKT,EAAOC,KAAK,SAAUvE,GAC/CyE,EAAIO,IAAIhF,SAIL,IAAIsE,EAAQ,CACb,GAAI7I,MACAP,EAAIoJ,EAAOtI,MACf,IAAS,MAALN,EAAW,OAASD,EAAIP,GAC1BuJ,EAAIO,IAAIV,EAAO7I,QACV,QAASA,EAAIP,GAClBuJ,EAAIO,IAAItJ,EAAE4I,EAAO7I,GAAIA,EAAG6I,IAI9B,MAAOG,GAzNT,GAAIQ,GAAS,GAIbZ,GAAItJ,UAAY6F,EAAI7F,WAClBD,YAAauJ,EACba,IAAK,SAAaV,GAChB,MAAOS,GAAST,IAAOhI,OAEzB2I,IAAK,SAAaX,GAChB,MAAOhI,MAAKyI,EAAST,IAEvBC,IAAK,SAAaD,EAAKxE,GAErB,MADAxD,MAAKyI,EAAST,GAAOxE,EACdxD,MAET4I,OAAQ,SAAgBZ,GACtB,GAAIa,GAAWJ,EAAST,CACxB,OAAOa,KAAY7I,aAAeA,MAAK6I,IAEzCC,MAAO,WACL,IAAK,GAAID,KAAY7I,MACf6I,EAAS,KAAOJ,SAAezI,MAAK6I,IAG5CE,KAAM,QAASA,KACb,GAAIA,KACJ,KAAK,GAAIF,KAAY7I,MACf6I,EAAS,KAAOJ,GAAQM,EAAKnD,KAAKiD,EAAS1E,MAAM,GACtD,OAAO4E,IAEV5F,OAAQ,QAASA,KACf,GAAIA,KACJ,KAAK,GAAI0F,KAAY7I,MACf6I,EAAS,KAAOJ,GAAQtF,EAAOyC,KAAK5F,KAAK6I,GAC9C,OAAO1F,IAEV6F,QAAS,QAASA,KAChB,GAAIA,KACJ,KAAK,GAAIH,KAAY7I,MACf6I,EAAS,KAAOJ,GAAQO,EAAQpD,MAAOoC,IAAKa,EAAS1E,MAAM,GAAIX,MAAOxD,KAAK6I,IAChF,OAAOG,IAEVC,KAAM,QAASA,KACb,GAAIA,GAAO,CACX,KAAK,GAAIJ,KAAY7I,MACf6I,EAAS,KAAOJ,KAAUQ,CAC/B,OAAOA,IAEVC,MAAO,WACL,IAAK,GAAIL,KAAY7I,MACnB,GAAI6I,EAAS,KAAOJ,EAAQ,OAAO,CACpC,QAAO,GAEVV,KAAM,SAAc7I,GAClB,IAAK,GAAI2J,KAAY7I,MACf6I,EAAS,KAAOJ,GAAQvJ,EAAEc,KAAK6I,GAAWA,EAAS1E,MAAM,GAAInE,OAgCvE,IAAImJ,GAAO,QAASA,KAOlB,QAASC,GAAM7G,EAAO8G,EAAOC,EAAcC,GACzC,GAAIF,GAASN,EAAKvJ,OAEhB,MADmB,OAAfgK,GAAqBjH,EAAM2D,KAAKsD,GAClB,MAAXC,EAAkBA,EAAQlH,GAASA,CAY5C,KATA,GAGImH,GACAlG,EAEAL,EANAlE,KACAP,EAAI6D,EAAM/C,OACVwI,EAAMe,EAAKM,KAGXM,EAAcvF,IAEdwF,EAASN,MAEJrK,EAAIP,IACPyE,EAASwG,EAAYhB,IAAIe,EAAW1B,EAAIxE,EAAQjB,EAAMtD,IAAM,KAC9DkE,EAAOyC,KAAKpC,GAEZmG,EAAY1B,IAAIyB,GAAWlG,GAQ/B,OAJAmG,GAAY5B,KAAK,SAAU5E,EAAQ6E,GACjCuB,EAAUK,EAAQ5B,EAAKoB,EAAMjG,EAAQkG,EAAOC,EAAcC,MAGrDK,EAGT,QAASC,GAASvB,EAAQe,GACxB,KAAMA,EAAQN,EAAKvJ,OAAQ,MAAO8I,EAClC,IAAI/F,GACAuH,EAAUC,EAAUV,EAAQ,EAIhC,OAHe,OAAXI,GAAmBJ,GAASN,EAAKvJ,OAAQ+C,EAAQ+F,EAAOU,WAAezG,KAAY+F,EAAOP,KAAK,SAAUhE,EAAGiG,GAC9GzH,EAAMqD,MAAOoC,IAAKgC,EAAG7G,OAAQ0G,EAAS9F,EAAGsF,QAEzB,MAAXS,EAAkBvH,EAAM2D,KAAK,SAAUnH,EAAGuB,GAC/C,MAAOwJ,GAAQ/K,EAAEiJ,IAAK1H,EAAE0H,OACrBzF,EA7CP,GAEIiH,GACAC,EACAN,EAJAJ,KACAgB,IA+CJ,OAAOZ,IACLrB,OAAQ,SAAgBvF,GACtB,MAAO6G,GAAM7G,EAAO,EAAG2F,EAAcC,IAEvC/D,IAAK,SAAa7B,GAChB,MAAO6G,GAAM7G,EAAO,EAAG6F,EAAWC,IAEpCW,QAAS,SAAiBzG,GACxB,MAAOsH,GAAST,EAAM7G,EAAO,EAAG6F,EAAWC,GAAS,IAEtDL,IAAK,SAAa9H,GACH,MAAb6I,GAAKnD,KAAK1F,GAAUiJ,GAEtBc,SAAU,SAAkBC,GACS,MAAnCH,GAAUhB,EAAKvJ,OAAS,GAAK0K,EAAaf,GAE5CgB,WAAY,SAAoBD,GACV,MAApBV,GAAcU,EAAaf,GAE7BiB,OAAQ,SAAgBlL,GACV,MAAZuK,GAAUvK,EAASiK,KAuBrBkB,EAAQjG,EAAI7F,SAEhBgK,GAAIhK,UAAY0J,EAAI1J,WAClBD,YAAaiK,EACbG,IAAK2B,EAAM3B,IACXF,IAAK,SAAahF,GAGhB,MAFAA,IAAS,GACTxD,KAAKyI,EAASjF,GAASA,EAChBxD,MAET4I,OAAQyB,EAAMzB,OACdE,MAAOuB,EAAMvB,MACb3F,OAAQkH,EAAMtB,KACdE,KAAMoB,EAAMpB,KACZC,MAAOmB,EAAMnB,MACbnB,KAAMsC,EAAMtC,KAyBd,IAAIgB,GAAO,QAASA,GAAK3E,GACvB,GAAI2E,KACJ,KAAK,GAAIf,KAAO5D,GACd2E,EAAKnD,KAAKoC,EACX,OAAOe,IAGN5F,EAAS,QAASA,GAAOiB,GAC3B,GAAIjB,KACJ,KAAK,GAAI6E,KAAO5D,GACdjB,EAAOyC,KAAKxB,EAAI4D,GACjB,OAAO7E,IAGN6F,EAAU,QAASA,GAAQ5E,GAC7B,GAAI4E,KACJ,KAAK,GAAIhB,KAAO5D,GACd4E,EAAQpD,MAAOoC,IAAKA,EAAKxE,MAAOY,EAAI4D,IACrC,OAAOgB,GAGV1J,GAAQ6J,KAAOA,EACf7J,EAAQ2I,IAAMA,EACd3I,EAAQ8E,IAAMA,EACd9E,EAAQyJ,KAAOA,EACfzJ,EAAQ6D,OAASA,EACjB7D,EAAQ0J,QAAUA,EAElBtB,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,WAElD8G,GAAI,SAAUtL,EAASU,EAAQJ,IAErC,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,GAA6B,kBAAXO,SAAyBA,OAAOC,IAAMD,QAAQ,WAAYD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,SAC3OC,KAAM,SAAUV,GAQjB,QAASiL,GAAOC,EAAQC,GACtB,GAAIlM,GAAYmJ,OAAOgD,OAAOF,EAAOjM,UACrC,KAAK,GAAIyJ,KAAOyC,GACdlM,EAAUyJ,GAAOyC,EAAWzC,EAC7B,OAAOzJ,GAGV,QAASoM,MAiLT,QAASC,GAAMC,GACb,GAAInH,EAEJ,OADAmH,IAAUA,EAAS,IAAIC,OAAOC,eACtBrH,EAAIsH,EAAOC,KAAKJ,KAAYnH,EAAIwH,SAASxH,EAAE,GAAI,IAAK,GAAIyH,GAAIzH,GAAK,EAAI,GAAMA,GAAK,EAAI,IAAOA,GAAK,EAAI,GAAU,IAAJA,GAAe,GAAJA,IAAY,EAAQ,GAAJA,EAAS,KACjJA,EAAI0H,EAAOH,KAAKJ,IAAWQ,EAAKH,SAASxH,EAAE,GAAI,MACjDA,EAAI4H,EAAaL,KAAKJ,IAAW,GAAIM,GAAIzH,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC3DA,EAAI6H,EAAaN,KAAKJ,IAAW,GAAIM,GAAW,IAAPzH,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAI8H,EAAcP,KAAKJ,IAAWY,EAAK/H,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAIgI,EAAcT,KAAKJ,IAAWY,EAAY,IAAP/H,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAIiI,EAAaV,KAAKJ,IAAWe,EAAKlI,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAImI,EAAcZ,KAAKJ,IAAWe,EAAKlI,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxEoI,EAAMC,eAAelB,GAAUQ,EAAKS,EAAMjB,IAAsB,gBAAXA,EAA2B,GAAIM,GAAIxJ,IAAKA,IAAKA,IAAK,GAAK,KAGhH,QAAS0J,GAAK3M,GACZ,MAAO,IAAIyM,GAAIzM,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,GAG1D,QAAS+M,GAAK9M,EAAGqN,EAAG1L,EAAGvB,GAErB,MADIA,IAAK,IAAGJ,EAAIqN,EAAI1L,EAAIqB,KACjB,GAAIwJ,GAAIxM,EAAGqN,EAAG1L,EAAGvB,GAG1B,QAASkN,GAAWpN,GAElB,MADMA,aAAa8L,KAAQ9L,EAAI+L,EAAM/L,IAChCA,GACLA,EAAIA,EAAEqN,MACC,GAAIf,GAAItM,EAAEF,EAAGE,EAAEmN,EAAGnN,EAAEyB,EAAGzB,EAAEsN,UAFjB,GAAIhB,GAKrB,QAASe,GAAIvN,EAAGqN,EAAG1L,EAAG6L,GACpB,MAA4B,KAArB3H,UAAUhF,OAAeyM,EAAWtN,GAAK,GAAIwM,GAAIxM,EAAGqN,EAAG1L,EAAc,MAAX6L,EAAkB,EAAIA,GAGzF,QAAShB,GAAIxM,EAAGqN,EAAG1L,EAAG6L,GACpBnM,KAAKrB,GAAKA,EACVqB,KAAKgM,GAAKA,EACVhM,KAAKM,GAAKA,EACVN,KAAKmM,SAAWA,EAwBlB,QAASP,GAAKQ,EAAGxN,EAAGS,EAAGN,GAErB,MADIA,IAAK,EAAGqN,EAAIxN,EAAIS,EAAIsC,IAAatC,GAAK,GAAKA,GAAK,EAAG+M,EAAIxN,EAAI+C,IAAa/C,GAAK,IAAGwN,EAAIzK,KACjF,GAAI0K,GAAID,EAAGxN,EAAGS,EAAGN,GAG1B,QAASuN,GAAWzN,GAClB,GAAIA,YAAawN,GAAK,MAAO,IAAIA,GAAIxN,EAAEuN,EAAGvN,EAAED,EAAGC,EAAEQ,EAAGR,EAAEsN,QAEtD,IADMtN,YAAa8L,KAAQ9L,EAAI+L,EAAM/L,KAChCA,EAAG,MAAO,IAAIwN,EACnB,IAAIxN,YAAawN,GAAK,MAAOxN,EAC7BA,GAAIA,EAAEqN,KACN,IAAIvN,GAAIE,EAAEF,EAAI,IACVqN,EAAInN,EAAEmN,EAAI,IACV1L,EAAIzB,EAAEyB,EAAI,IACV4D,EAAMtD,KAAKsD,IAAIvF,EAAGqN,EAAG1L,GACrBO,EAAMD,KAAKC,IAAIlC,EAAGqN,EAAG1L,GACrB8L,EAAIzK,IACJ/C,EAAIiC,EAAMqD,EACV7E,GAAKwB,EAAMqD,GAAO,CAQtB,OAPItF,IACawN,EAAXzN,IAAMkC,GAAUmL,EAAI1L,GAAK1B,EAAc,GAAToN,EAAI1L,GAAgB0L,IAAMnL,GAAUP,EAAI3B,GAAKC,EAAI,GAAYD,EAAIqN,GAAKpN,EAAI,EAC5GA,GAAKS,EAAI,GAAMwB,EAAMqD,EAAM,EAAIrD,EAAMqD,EACrCkI,GAAK,IAELxN,EAAIS,EAAI,GAAKA,EAAI,EAAI,EAAI+M,EAEpB,GAAIC,GAAID,EAAGxN,EAAGS,EAAGR,EAAEsN,SAG5B,QAASI,GAAIH,EAAGxN,EAAGS,EAAG8M,GACpB,MAA4B,KAArB3H,UAAUhF,OAAe8M,EAAWF,GAAK,GAAIC,GAAID,EAAGxN,EAAGS,EAAc,MAAX8M,EAAkB,EAAIA,GAGzF,QAASE,GAAID,EAAGxN,EAAGS,EAAG8M,GACpBnM,KAAKoM,GAAKA,EACVpM,KAAKpB,GAAKA,EACVoB,KAAKX,GAAKA,EACVW,KAAKmM,SAAWA,EA0BlB,QAASK,GAAQJ,EAAGK,EAAIC,GACtB,MAA4G,MAApGN,EAAI,GAAKK,GAAMC,EAAKD,GAAML,EAAI,GAAKA,EAAI,IAAMM,EAAKN,EAAI,IAAMK,GAAMC,EAAKD,IAAO,IAAML,GAAK,GAAKK,GAexG,QAASE,GAAW9N,GAClB,GAAIA,YAAa+N,GAAK,MAAO,IAAIA,GAAI/N,EAAEQ,EAAGR,EAAEE,EAAGF,EAAEyB,EAAGzB,EAAEsN,QACtD,IAAItN,YAAagO,GAAK,CACpB,GAAIT,GAAIvN,EAAEuN,EAAIU,CACd,OAAO,IAAIF,GAAI/N,EAAEQ,EAAGuB,KAAKmM,IAAIX,GAAKvN,EAAEmO,EAAGpM,KAAKqM,IAAIb,GAAKvN,EAAEmO,EAAGnO,EAAEsN,SAExDtN,YAAasM,KAAMtM,EAAIoN,EAAWpN,GACxC,IAAIyB,GAAI4M,EAAQrO,EAAEF,GACdI,EAAImO,EAAQrO,EAAEmN,GACd3M,EAAI6N,EAAQrO,EAAEyB,GACdH,EAAIgN,GAAS,SAAY7M,EAAI,SAAYvB,EAAI,SAAYM,GAAK+N,GAC9DC,EAAIF,GAAS,SAAY7M,EAAI,SAAYvB,EAAI,QAAYM,GAAKiO,GAC9DC,EAAIJ,GAAS,SAAY7M,EAAI,QAAYvB,EAAI,SAAYM,GAAKmO,EAClE,OAAO,IAAIZ,GAAI,IAAMS,EAAI,GAAI,KAAOlN,EAAIkN,GAAI,KAAOA,EAAIE,GAAI1O,EAAEsN,SAG/D,QAASsB,GAAIpO,EAAGN,EAAGuB,EAAG6L,GACpB,MAA4B,KAArB3H,UAAUhF,OAAemN,EAAWtN,GAAK,GAAIuN,GAAIvN,EAAGN,EAAGuB,EAAc,MAAX6L,EAAkB,EAAIA,GAGzF,QAASS,GAAIvN,EAAGN,EAAGuB,EAAG6L,GACpBnM,KAAKX,GAAKA,EACVW,KAAKjB,GAAKA,EACViB,KAAKM,GAAKA,EACVN,KAAKmM,SAAWA,EAsBlB,QAASgB,GAAQ1O,GACf,MAAOA,GAAIiP,EAAK9M,KAAKO,IAAI1C,EAAG,EAAI,GAAKA,EAAIkP,EAAKC,EAGhD,QAASC,GAAQpP,GACf,MAAOA,GAAIqP,EAAKrP,EAAIA,EAAIA,EAAIkP,GAAMlP,EAAImP,GAGxC,QAASG,GAAQ5N,GACf,MAAO,MAAOA,GAAK,SAAY,MAAQA,EAAI,MAAQS,KAAKO,IAAIhB,EAAG,EAAI,KAAO,MAG5E,QAAS+M,GAAQ/M,GACf,OAAQA,GAAK,MAAQ,OAAUA,EAAI,MAAQS,KAAKO,KAAKhB,EAAI,MAAS,MAAO,KAG3E,QAAS6N,GAAWnP,GAClB,GAAIA,YAAagO,GAAK,MAAO,IAAIA,GAAIhO,EAAEuN,EAAGvN,EAAEmO,EAAGnO,EAAEQ,EAAGR,EAAEsN,QAChDtN,aAAa+N,KAAM/N,EAAI8N,EAAW9N,GACxC,IAAIuN,GAAIxL,KAAKqN,MAAMpP,EAAEyB,EAAGzB,EAAEE,GAAKmP,CAC/B,OAAO,IAAIrB,GAAIT,EAAI,EAAIA,EAAI,IAAMA,EAAGxL,KAAKoD,KAAKnF,EAAEE,EAAIF,EAAEE,EAAIF,EAAEyB,EAAIzB,EAAEyB,GAAIzB,EAAEQ,EAAGR,EAAEsN,SAG/E,QAASgC,GAAI/B,EAAGY,EAAG3N,EAAG8M,GACpB,MAA4B,KAArB3H,UAAUhF,OAAewO,EAAW5B,GAAK,GAAIS,GAAIT,EAAGY,EAAG3N,EAAc,MAAX8M,EAAkB,EAAIA,GAGzF,QAASU,GAAIT,EAAGY,EAAG3N,EAAG8M,GACpBnM,KAAKoM,GAAKA,EACVpM,KAAKgN,GAAKA,EACVhN,KAAKX,GAAKA,EACVW,KAAKmM,SAAWA,EAwBlB,QAASiC,GAAiBvP,GACxB,GAAIA,YAAawP,GAAW,MAAO,IAAIA,GAAUxP,EAAEuN,EAAGvN,EAAED,EAAGC,EAAEQ,EAAGR,EAAEsN,QAC5DtN,aAAasM,KAAMtM,EAAIoN,EAAWpN,GACxC,IAAIF,GAAIE,EAAEF,EAAI,IACVqN,EAAInN,EAAEmN,EAAI,IACV1L,EAAIzB,EAAEyB,EAAI,IACVjB,GAAKiP,GAAQhO,EAAIiO,GAAK5P,EAAI6P,GAAKxC,IAAMsC,GAAQC,GAAKC,IAClDC,EAAKnO,EAAIjB,EACT2K,GAAK0E,IAAK1C,EAAI3M,GAAKsP,GAAIF,GAAMG,GAC7BhQ,EAAIgC,KAAKoD,KAAKgG,EAAIA,EAAIyE,EAAKA,IAAOC,GAAIrP,GAAK,EAAIA,IAEnD+M,EAAIxN,EAAIgC,KAAKqN,MAAMjE,EAAGyE,GAAMP,EAAU,IAAMvM,GAC5C,OAAO,IAAI0M,GAAUjC,EAAI,EAAIA,EAAI,IAAMA,EAAGxN,EAAGS,EAAGR,EAAEsN,SAGpD,QAAS0C,GAAUzC,EAAGxN,EAAGS,EAAG8M,GAC1B,MAA4B,KAArB3H,UAAUhF,OAAe4O,EAAiBhC,GAAK,GAAIiC,GAAUjC,EAAGxN,EAAGS,EAAc,MAAX8M,EAAkB,EAAIA,GAGrG,QAASkC,GAAUjC,EAAGxN,EAAGS,EAAG8M,GAC1BnM,KAAKoM,GAAKA,EACVpM,KAAKpB,GAAKA,EACVoB,KAAKX,GAAKA,EACVW,KAAKmM,SAAWA,EAtclB,GAAItM,GAAS,SAAgBvB,EAAasB,EAASrB,GACjDD,EAAYC,UAAYqB,EAAQrB,UAAYA,EAC5CA,EAAUD,YAAcA,GAYtBwQ,EAAU,GACVC,EAAY,EAAID,EAEhBE,EAAM,sBACNC,EAAM,gDACNC,EAAM,iDACNlE,EAAS,mBACTI,EAAS,mBACTE,EAAe,GAAI6D,QAAO,WAAaH,EAAKA,EAAKA,GAAO,QACxDzD,EAAe,GAAI4D,QAAO,WAAaD,EAAKA,EAAKA,GAAO,QACxD1D,EAAgB,GAAI2D,QAAO,YAAcH,EAAKA,EAAKA,EAAKC,GAAO,QAC/DvD,EAAgB,GAAIyD,QAAO,YAAcD,EAAKA,EAAKA,EAAKD,GAAO,QAC/DtD,EAAe,GAAIwD,QAAO,WAAaF,EAAKC,EAAKA,GAAO,QACxDrD,EAAgB,GAAIsD,QAAO,YAAcF,EAAKC,EAAKA,EAAKD,GAAO,QAE/DnD,GACFsD,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXC,IAAK,SACLC,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,SAGf1Y,GAAO8K,EAAOC,GACZ4N,YAAa,WACX,MAAOxY,MAAKkM,MAAMsM,eAEpBC,SAAU,WACR,MAAOzY,MAAKkM,MAAQ,MA6CxBrM,EAAOsL,EAAKe,EAAK3B,EAAOI,GACtB+N,SAAU,SAAkB1O,GAE1B,MADAA,GAAS,MAALA,EAAY+E,EAAYnO,KAAKO,IAAI4N,EAAW/E,GACzC,GAAImB,GAAInL,KAAKrB,EAAIqL,EAAGhK,KAAKgM,EAAIhC,EAAGhK,KAAKM,EAAI0J,EAAGhK,KAAKmM,UAE1DwM,OAAQ,SAAgB3O,GAEtB,MADAA,GAAS,MAALA,EAAY8E,EAAUlO,KAAKO,IAAI2N,EAAS9E,GACrC,GAAImB,GAAInL,KAAKrB,EAAIqL,EAAGhK,KAAKgM,EAAIhC,EAAGhK,KAAKM,EAAI0J,EAAGhK,KAAKmM,UAE1DD,IAAK,WACH,MAAOlM,OAETwY,YAAa,WACX,MAAO,IAAKxY,KAAKrB,GAAKqB,KAAKrB,GAAK,KAAO,GAAKqB,KAAKgM,GAAKhM,KAAKgM,GAAK,KAAO,GAAKhM,KAAKM,GAAKN,KAAKM,GAAK,KAAO,GAAKN,KAAKmM,SAAWnM,KAAKmM,SAAW,GAE9IsM,SAAU,WACR,GAAI1Z,GAAIiB,KAAKmM,OACb,OADqBpN,GAAI8E,MAAM9E,GAAK,EAAI6B,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,EAAGnF,KAClD,IAANA,EAAU,OAAS,SAAW6B,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,IAAKtD,KAAKgY,MAAM5Y,KAAKrB,IAAM,IAAM,KAAOiC,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,IAAKtD,KAAKgY,MAAM5Y,KAAKgM,IAAM,IAAM,KAAOpL,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,IAAKtD,KAAKgY,MAAM5Y,KAAKM,IAAM,KAAa,IAANvB,EAAU,IAAM,KAAOA,EAAI,SA4CtPc,EAAOwM,EAAKE,EAAKhC,EAAOI,GACtB+N,SAAU,SAAkB1O,GAE1B,MADAA,GAAS,MAALA,EAAY+E,EAAYnO,KAAKO,IAAI4N,EAAW/E,GACzC,GAAIqC,GAAIrM,KAAKoM,EAAGpM,KAAKpB,EAAGoB,KAAKX,EAAI2K,EAAGhK,KAAKmM,UAElDwM,OAAQ,SAAgB3O,GAEtB,MADAA,GAAS,MAALA,EAAY8E,EAAUlO,KAAKO,IAAI2N,EAAS9E,GACrC,GAAIqC,GAAIrM,KAAKoM,EAAGpM,KAAKpB,EAAGoB,KAAKX,EAAI2K,EAAGhK,KAAKmM,UAElDD,IAAK,WACH,GAAIE,GAAIpM,KAAKoM,EAAI,IAAqB,KAAdpM,KAAKoM,EAAI,GAC7BxN,EAAIiF,MAAMuI,IAAMvI,MAAM7D,KAAKpB,GAAK,EAAIoB,KAAKpB,EACzCS,EAAIW,KAAKX,EACTqN,EAAKrN,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAKT,EACjC6N,EAAK,EAAIpN,EAAIqN,CACjB,OAAO,IAAIvB,GAAIqB,EAAQJ,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAKK,EAAIC,GAAKF,EAAQJ,EAAGK,EAAIC,GAAKF,EAAQJ,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAKK,EAAIC,GAAK1M,KAAKmM,UAEvIqM,YAAa,WACX,OAAQ,GAAKxY,KAAKpB,GAAKoB,KAAKpB,GAAK,GAAKiF,MAAM7D,KAAKpB,KAAO,GAAKoB,KAAKX,GAAKW,KAAKX,GAAK,GAAK,GAAKW,KAAKmM,SAAWnM,KAAKmM,SAAW,KAS/H,IAAIW,GAAUlM,KAAKiY,GAAK,IACpB3K,EAAU,IAAMtN,KAAKiY,GAErBC,EAAK,GACL1L,EAAK,OACLE,EAAK,EACLE,EAAK,QACLI,EAAK,EAAI,GACTE,EAAK,EAAI,GACTH,EAAK,EAAIG,EAAKA,EACdJ,EAAKI,EAAKA,EAAKA,CA6BnBjO,GAAO+M,EAAKa,EAAKlD,EAAOI,GACtB+N,SAAU,SAAkB1O,GAC1B,MAAO,IAAI4C,GAAI5M,KAAKX,EAAIyZ,GAAW,MAAL9O,EAAY,EAAIA,GAAIhK,KAAKjB,EAAGiB,KAAKM,EAAGN,KAAKmM,UAEzEwM,OAAQ,SAAgB3O,GACtB,MAAO,IAAI4C,GAAI5M,KAAKX,EAAIyZ,GAAW,MAAL9O,EAAY,EAAIA,GAAIhK,KAAKjB,EAAGiB,KAAKM,EAAGN,KAAKmM,UAEzED,IAAK,WACH,GAAImB,IAAKrN,KAAKX,EAAI,IAAM,IACpBc,EAAI0D,MAAM7D,KAAKjB,GAAKsO,EAAIA,EAAIrN,KAAKjB,EAAI,IACrCwO,EAAI1J,MAAM7D,KAAKM,GAAK+M,EAAIA,EAAIrN,KAAKM,EAAI,GAIzC,OAHA+M,GAAIC,EAAKO,EAAQR,GACjBlN,EAAIiN,EAAKS,EAAQ1N,GACjBoN,EAAIC,EAAKK,EAAQN,GACV,GAAIpC,GAAI4C,EAAQ,UAAY5N,EAAI,UAAYkN,EAAI,SAAYE,GACnEQ,WAAqB5N,EAAI,UAAYkN,EAAI,QAAYE,GAAIQ,EAAQ,SAAY5N,EAAI,SAAYkN,EAAI,UAAYE,GAAIvN,KAAKmM,aAsC1HtM,EAAOgN,EAAKsB,EAAK5D,EAAOI,GACtB+N,SAAU,SAAkB1O,GAC1B,MAAO,IAAI6C,GAAI7M,KAAKoM,EAAGpM,KAAKgN,EAAGhN,KAAKX,EAAIyZ,GAAW,MAAL9O,EAAY,EAAIA,GAAIhK,KAAKmM,UAEzEwM,OAAQ,SAAgB3O,GACtB,MAAO,IAAI6C,GAAI7M,KAAKoM,EAAGpM,KAAKgN,EAAGhN,KAAKX,EAAIyZ,GAAW,MAAL9O,EAAY,EAAIA,GAAIhK,KAAKmM,UAEzED,IAAK,WACH,MAAOS,GAAW3M,MAAMkM,SAI5B,IAAI6M,WACAC,EAAI,QACJrK,WACAC,WACAF,GAAI,QACJH,GAAKG,GAAIE,GACTJ,GAAKE,GAAIsK,EACT1K,GAAQ0K,EAAIrK,GAAIC,GAAImK,CA4BxBlZ,GAAOwO,EAAWQ,EAAWtE,EAAOI,GAClC+N,SAAU,SAAkB1O,GAE1B,MADAA,GAAS,MAALA,EAAY+E,EAAYnO,KAAKO,IAAI4N,EAAW/E,GACzC,GAAIqE,GAAUrO,KAAKoM,EAAGpM,KAAKpB,EAAGoB,KAAKX,EAAI2K,EAAGhK,KAAKmM,UAExDwM,OAAQ,SAAgB3O,GAEtB,MADAA,GAAS,MAALA,EAAY8E,EAAUlO,KAAKO,IAAI2N,EAAS9E,GACrC,GAAIqE,GAAUrO,KAAKoM,EAAGpM,KAAKpB,EAAGoB,KAAKX,EAAI2K,EAAGhK,KAAKmM,UAExDD,IAAK,WACH,GAAIE,GAAIvI,MAAM7D,KAAKoM,GAAK,GAAKpM,KAAKoM,EAAI,KAAOU,EACzCzN,GAAKW,KAAKX,EACVN,EAAI8E,MAAM7D,KAAKpB,GAAK,EAAIoB,KAAKpB,EAAIS,GAAK,EAAIA,GAC1C4Z,EAAOrY,KAAKmM,IAAIX,GAChB8M,EAAOtY,KAAKqM,IAAIb,EACpB,OAAO,IAAIjB,GAAI,KAAO9L,EAAIN,GAAKga,EAAIE,EAAOD,EAAIE,IAAQ,KAAO7Z,EAAIN,GAAK4P,GAAIsK,EAAOrK,GAAIsK,IAAQ,KAAO7Z,EAAIN,GAAK2P,GAAIuK,IAAQjZ,KAAKmM,aAIlI7M,EAAQsL,MAAQA,EAChBtL,EAAQ4M,IAAMA,EACd5M,EAAQiN,IAAMA,EACdjN,EAAQmO,IAAMA,EACdnO,EAAQ6O,IAAMA,EACd7O,EAAQuP,UAAYA,EAEpBnH,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,WAElD2V,GAAI,SAAUna,EAASU,EAAQJ,IAErC,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,GAA6B,kBAAXO,SAAyBA,OAAOC,IAAMD,QAAQ,WAAYD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,SAC3OC,KAAM,SAAUV,GAGjB,QAAS8Z,GAAO3a,GACd,OAAQA,EAGV,QAAS4a,GAAO5a,GACd,MAAOA,GAAIA,EAGb,QAAS6a,GAAQ7a,GACf,MAAOA,IAAK,EAAIA,GAGlB,QAAS8a,GAAU9a,GACjB,QAASA,GAAK,IAAM,EAAIA,EAAIA,IAAMA,GAAK,EAAIA,GAAK,GAAK,EAGvD,QAAS+a,GAAQ/a,GACf,MAAOA,GAAIA,EAAIA,EAGjB,QAASgb,GAAShb,GAChB,QAASA,EAAIA,EAAIA,EAAI,EAGvB,QAASib,GAAWjb,GAClB,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,EA4C9D,QAASkb,GAAMlb,GACb,MAAO,GAAImC,KAAKmM,IAAItO,EAAImb,GAG1B,QAASC,GAAOpb,GACd,MAAOmC,MAAKqM,IAAIxO,EAAImb,GAGtB,QAASE,GAASrb,GAChB,OAAQ,EAAImC,KAAKmM,IAAIgN,EAAKtb,IAAM,EAGlC,QAASub,GAAMvb,GACb,MAAOmC,MAAKO,IAAI,EAAG,GAAK1C,EAAI,IAG9B,QAASwb,GAAOxb,GACd,MAAO,GAAImC,KAAKO,IAAI,MAAS1C,GAG/B,QAASyb,GAASzb,GAChB,QAASA,GAAK,IAAM,EAAImC,KAAKO,IAAI,EAAG,GAAK1C,EAAI,IAAM,EAAImC,KAAKO,IAAI,EAAG,GAAK,GAAK1C,IAAM,EAGrF,QAAS0b,GAAS1b,GAChB,MAAO,GAAImC,KAAKoD,KAAK,EAAIvF,EAAIA,GAG/B,QAAS2b,GAAU3b,GACjB,MAAOmC,MAAKoD,KAAK,KAAMvF,EAAIA,GAG7B,QAAS4b,GAAY5b,GACnB,QAASA,GAAK,IAAM,EAAI,EAAImC,KAAKoD,KAAK,EAAIvF,EAAIA,GAAKmC,KAAKoD,KAAK,GAAKvF,GAAK,GAAKA,GAAK,GAAK,EAcxF,QAAS6b,GAAS7b,GAChB,MAAO,GAAI8b,EAAU,EAAI9b,GAG3B,QAAS8b,GAAU9b,GACjB,OAAQA,GAAKA,GAAK+b,EAAKC,EAAKhc,EAAIA,EAAIA,EAAIic,EAAKD,GAAMhc,GAAKkc,GAAMlc,EAAImc,EAAKnc,EAAIoc,EAAKJ,GAAMhc,GAAKqc,GAAMrc,EAAIsc,EAAKN,GAAMhc,GAAKuc,GAAMvc,EAAIwc,EAGjI,QAASC,GAAYzc,GACnB,QAASA,GAAK,IAAM,EAAI,EAAI8b,EAAU,EAAI9b,GAAK8b,EAAU9b,EAAI,GAAK,GAAK,EAjGzE,GAAI0c,GAAW,EAEXC,EAAS,QAASC,GAAO7c,GAG3B,QAAS4c,GAAO3c,GACd,MAAOmC,MAAKO,IAAI1C,EAAGD,GAKrB,MARAA,IAAKA,EAML4c,EAAOD,SAAWE,EAEXD,GACPD,GAEEG,EAAU,QAASD,GAAO7c,GAG5B,QAAS8c,GAAQ7c,GACf,MAAO,GAAImC,KAAKO,IAAI,EAAI1C,EAAGD,GAK7B,MARAA,IAAKA,EAML8c,EAAQH,SAAWE,EAEZC,GACPH,GAEEI,EAAY,QAASF,GAAO7c,GAG9B,QAAS+c,GAAU9c,GACjB,QAASA,GAAK,IAAM,EAAImC,KAAKO,IAAI1C,EAAGD,GAAK,EAAIoC,KAAKO,IAAI,EAAI1C,EAAGD,IAAM,EAKrE,MARAA,IAAKA,EAML+c,EAAUJ,SAAWE,EAEdE,GACPJ,GAEEpB,EAAKnZ,KAAKiY,GACVe,EAASG,EAAK,EAsCdS,EAAK,EAAI,GACTG,EAAK,EAAI,GACTD,EAAK,EAAI,GACTE,EAAK,IACLE,EAAK,EAAI,GACTD,EAAK,GAAK,GACVE,EAAK,MACLC,EAAK,GAAK,GACVC,EAAK,GAAK,GACVR,EAAK,EAAID,EAAKA,EAcdgB,EAAY,QAEZC,EAAS,QAASJ,GAAOzc,GAG3B,QAAS6c,GAAOhd,GACd,MAAOA,GAAIA,IAAMG,EAAI,GAAKH,EAAIG,GAKhC,MARAA,IAAKA,EAML6c,EAAOD,UAAYH,EAEZI,GACPD,GAEEE,EAAU,QAASL,GAAOzc,GAG5B,QAAS8c,GAAQjd,GACf,QAASA,EAAIA,IAAMG,EAAI,GAAKH,EAAIG,GAAK,EAKvC,MARAA,IAAKA,EAML8c,EAAQF,UAAYH,EAEbK,GACPF,GAEEG,EAAY,QAASN,GAAOzc,GAG9B,QAAS+c,GAAUld,GACjB,QAASA,GAAK,GAAK,EAAIA,EAAIA,IAAMG,EAAI,GAAKH,EAAIG,IAAMH,GAAK,GAAKA,IAAMG,EAAI,GAAKH,EAAIG,GAAK,GAAK,EAK7F,MARAA,IAAKA,EAML+c,EAAUH,UAAYH,EAEfM,GACPH,GAEEI,EAAM,EAAIhb,KAAKiY,GACfgD,EAAY,EACZC,EAAS,GAETC,EAAY,QAASV,GAAOtc,EAAGyD,GAGjC,QAASuZ,GAAUtd,GACjB,MAAOM,GAAI6B,KAAKO,IAAI,EAAG,KAAO1C,GAAKmC,KAAKqM,KAAKrO,EAAIH,GAAK+D,GAHxD,GAAI5D,GAAIgC,KAAKob,KAAK,GAAKjd,EAAI6B,KAAKC,IAAI,EAAG9B,MAAQyD,GAAKoZ,EAapD,OAPAG,GAAUF,UAAY,SAAU9c,GAC9B,MAAOsc,GAAOtc,EAAGyD,EAAIoZ,IAEvBG,EAAUD,OAAS,SAAUtZ,GAC3B,MAAO6Y,GAAOtc,EAAGyD,IAGZuZ,GACPF,EAAWC,GAETG,EAAa,QAASZ,GAAOtc,EAAGyD,GAGlC,QAASyZ,GAAWxd,GAClB,MAAO,GAAIM,EAAI6B,KAAKO,IAAI,OAAU1C,GAAKA,IAAMmC,KAAKqM,KAAKxO,EAAIG,GAAK4D,GAHlE,GAAI5D,GAAIgC,KAAKob,KAAK,GAAKjd,EAAI6B,KAAKC,IAAI,EAAG9B,MAAQyD,GAAKoZ,EAapD,OAPAK,GAAWJ,UAAY,SAAU9c,GAC/B,MAAOsc,GAAOtc,EAAGyD,EAAIoZ,IAEvBK,EAAWH,OAAS,SAAUtZ,GAC5B,MAAO6Y,GAAOtc,EAAGyD,IAGZyZ,GACPJ,EAAWC,GAETI,EAAe,QAASb,IAAOtc,EAAGyD,GAGpC,QAAS0Z,GAAazd,GACpB,QAASA,EAAQ,EAAJA,EAAQ,GAAK,EAAIM,EAAI6B,KAAKO,IAAI,EAAG,GAAK1C,GAAKmC,KAAKqM,KAAKrO,EAAIH,GAAK+D,GAAK,EAAIzD,EAAI6B,KAAKO,IAAI,MAAS1C,GAAKmC,KAAKqM,KAAKrO,EAAIH,GAAK+D,IAAM,EAH1I,GAAI5D,GAAIgC,KAAKob,KAAK,GAAKjd,EAAI6B,KAAKC,IAAI,EAAG9B,MAAQyD,GAAKoZ,EAapD,OAPAM,GAAaL,UAAY,SAAU9c,GACjC,MAAOsc,IAAOtc,EAAGyD,EAAIoZ,IAEvBM,EAAaJ,OAAS,SAAUtZ,GAC9B,MAAO6Y,IAAOtc,EAAGyD,IAGZ0Z,GACPL,EAAWC,EAEbxc,GAAQ6c,WAAa/C,EACrB9Z,EAAQ8c,SAAW7C,EACnBja,EAAQ+c,WAAahD,EACrB/Z,EAAQgd,YAAchD,EACtBha,EAAQid,cAAgBhD,EACxBja,EAAQkd,UAAY9C,EACpBpa,EAAQmd,YAAcjD,EACtBla,EAAQod,aAAejD,EACvBna,EAAQqd,eAAiBjD,EACzBpa,EAAQsd,SAAWrB,EACnBjc,EAAQud,WAAazB,EACrB9b,EAAQwd,YAAcxB,EACtBhc,EAAQyd,cAAgBxB,EACxBjc,EAAQ0d,QAAUlD,EAClBxa,EAAQ2d,UAAYtD,EACpBra,EAAQ4d,WAAarD,EACrBva,EAAQ6d,aAAerD,EACvBxa,EAAQ8d,QAAUlD,EAClB5a,EAAQ+d,UAAYrD,EACpB1a,EAAQge,WAAarD,EACrB3a,EAAQie,aAAerD,EACvB5a,EAAQke,WAAanD,EACrB/a,EAAQme,aAAetD,EACvB7a,EAAQoe,cAAgBtD,EACxB9a,EAAQqe,gBAAkBtD,EAC1B/a,EAAQse,WAAarD,EACrBjb,EAAQue,aAAevD,EACvBhb,EAAQwe,cAAgBvD,EACxBjb,EAAQye,gBAAkB7C,EAC1B5b,EAAQ0e,SAAWrC,EACnBrc,EAAQ2e,WAAaxC,EACrBnc,EAAQ4e,YAAcxC,EACtBpc,EAAQ6e,cAAgBxC,EACxBrc,EAAQ8e,YAAcnC,EACtB3c,EAAQ+e,cAAgBtC,EACxBzc,EAAQgf,eAAiBrC,EACzB3c,EAAQif,iBAAmBrC,EAE3BxU,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,WAElDgb,GAAI,SAAUxf,EAASU,EAAQJ,IAErC,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,GAA6B,kBAAXO,SAAyBA,OAAOC,IAAMD,QAAQ,WAAYD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,SAC3OC,KAAM,SAAUV,GAiIjB,QAASmf,GAAgBC,GACvB,MAAO,IAAIC,GAAgBD,GAK7B,QAASC,GAAgBD,GACvB,KAAME,EAAQC,EAAG5T,KAAKyT,IAAa,KAAM,IAAIvf,OAAM,mBAAqBuf,EAExE,IAAIE,GACAE,EAAOF,EAAM,IAAM,IACnBG,EAAQH,EAAM,IAAM,IACpBI,EAAOJ,EAAM,IAAM,IACnBK,EAASL,EAAM,IAAM,GACrBM,IAASN,EAAM,GACfO,EAAQP,EAAM,KAAOA,EAAM,GAC3BQ,IAAUR,EAAM,GAChBS,EAAYT,EAAM,KAAOA,EAAM,GAAGza,MAAM,GACxCmb,EAAOV,EAAM,IAAM,EAGV,OAATU,GAAcF,GAAQ,EAAME,EAAO,KAG7BC,EAAYD,KAAOA,EAAO,KAGhCJ,GAAiB,MAATJ,GAA0B,MAAVC,KAAeG,GAAO,EAAMJ,EAAO,IAAKC,EAAQ,KAE5E/e,KAAK8e,KAAOA,EACZ9e,KAAK+e,MAAQA,EACb/e,KAAKgf,KAAOA,EACZhf,KAAKif,OAASA,EACdjf,KAAKkf,KAAOA,EACZlf,KAAKmf,MAAQA,EACbnf,KAAKof,MAAQA,EACbpf,KAAKqf,UAAYA,EACjBrf,KAAKsf,KAAOA,EAiJd,QAASE,GAAc/U,GAIrB,MAHAgV,GAASC,EAAajV,GACtBnL,EAAQuL,OAAS4U,EAAO5U,OACxBvL,EAAQqgB,aAAeF,EAAOE,aACvBF,EApTT,GA4DIG,GA5DAC,EAAgB,SAAuB1f,EAAGqC,GAC5C,IAAKvD,GAAKkB,EAAIqC,EAAIrC,EAAE2f,cAActd,EAAI,GAAKrC,EAAE2f,iBAAiBC,QAAQ,MAAQ,EAAG,MAAO,KACxF,IAAI9gB,GACA+gB,EAAc7f,EAAEgE,MAAM,EAAGlF,EAI7B,QAAQ+gB,EAAYxgB,OAAS,EAAIwgB,EAAY,GAAKA,EAAY7b,MAAM,GAAK6b,GAAc7f,EAAEgE,MAAMlF,EAAI,KAGjGkc,EAAW,SAAkBhb,GAC/B,MAAOA,GAAI0f,EAAcjf,KAAKa,IAAItB,IAAKA,EAAIA,EAAE,GAAKwB,KAGhDse,EAAc,SAAqBC,EAAUC,GAC/C,MAAO,UAAU3c,EAAO2b,GAOtB,IANA,GAAIlgB,GAAIuE,EAAMhE,OACVf,KACAgI,EAAI,EACJuF,EAAIkU,EAAS,GACb1gB,EAAS,EAENP,EAAI,GAAK+M,EAAI,IACdxM,EAASwM,EAAI,EAAImT,IAAOnT,EAAIpL,KAAKC,IAAI,EAAGse,EAAQ3f,IACpDf,EAAEmH,KAAKpC,EAAM4c,UAAUnhB,GAAK+M,EAAG/M,EAAI+M,OAC9BxM,GAAUwM,EAAI,GAAKmT,KACxBnT,EAAIkU,EAASzZ,GAAKA,EAAI,GAAKyZ,EAAS1gB,OAGtC,OAAOf,GAAEkG,UAAU0b,KAAKF,KAIxBG,EAAiB,SAAwBC,GAC3C,MAAO,UAAU/c,GACf,MAAOA,GAAMgd,QAAQ,SAAU,SAAUvhB,GACvC,MAAOshB,IAAUthB,OAKnBwhB,EAAgB,SAAuBtgB,EAAGqC,GAC5CrC,EAAIA,EAAEugB,YAAYle,EAElBme,GAAK,IAAK,GAAkC5d,GAA9BrE,EAAIyB,EAAEX,OAAQP,EAAI,EAAG6D,KAAa7D,EAAIP,IAAKO,EACvD,OAAQkB,EAAElB,IACR,IAAK,IACH6D,EAAKC,EAAK9D,CAAE,MACd,KAAK,IACQ,IAAP6D,IAAUA,EAAK7D,GAAE8D,EAAK9D,CAAE,MAC9B,KAAK,IACH,KAAM0hB,EACR,SACM7d,EAAK,IAAGA,EAAK,GAIvB,MAAOA,GAAK,EAAI3C,EAAEgE,MAAM,EAAGrB,GAAM3C,EAAEgE,MAAMpB,EAAK,GAAK5C,GAKjDygB,EAAmB,SAA0BzgB,EAAGqC,GAClD,GAAItC,GAAI2f,EAAc1f,EAAGqC,EACzB,KAAKtC,EAAG,MAAOC,GAAI,EACnB,IAAI6f,GAAc9f,EAAE,GAChBib,EAAWjb,EAAE,GACbjB,EAAIkc,GAAYyE,EAAuE,EAAtDhf,KAAKC,OAAQD,KAAKsD,IAAI,EAAGtD,KAAKG,MAAMoa,EAAW,MAAY,EAC5Fzc,EAAIshB,EAAYxgB,MACpB,OAAOP,KAAMP,EAAIshB,EAAc/gB,EAAIP,EAAIshB,EAAc,GAAIvd,OAAMxD,EAAIP,EAAI,GAAG2hB,KAAK,KAAOphB,EAAI,EAAI+gB,EAAY7b,MAAM,EAAGlF,GAAK,IAAM+gB,EAAY7b,MAAMlF,GAAK,KAAO,GAAIwD,OAAM,EAAIxD,GAAGohB,KAAK,KAAOR,EAAc1f,EAAGS,KAAKC,IAAI,EAAG2B,EAAIvD,EAAI,IAAI,IAGhO4hB,EAAgB,SAAuB1gB,EAAGqC,GAC5C,GAAItC,GAAI2f,EAAc1f,EAAGqC,EACzB,KAAKtC,EAAG,MAAOC,GAAI,EACnB,IAAI6f,GAAc9f,EAAE,GAChBib,EAAWjb,EAAE,EACjB,OAAOib,GAAW,EAAI,KAAO,GAAI1Y,SAAO0Y,IAAUkF,KAAK,KAAOL,EAAcA,EAAYxgB,OAAS2b,EAAW,EAAI6E,EAAY7b,MAAM,EAAGgX,EAAW,GAAK,IAAM6E,EAAY7b,MAAMgX,EAAW,GAAK6E,EAAc,GAAIvd,OAAM0Y,EAAW6E,EAAYxgB,OAAS,GAAG6gB,KAAK,MAG3Pd,GACFuB,GAAIL,EACJM,IAAK,SAAW5gB,EAAGqC,GACjB,OAAY,IAAJrC,GAAS6gB,QAAQxe,IAE3BlC,EAAK,SAAWH,GACd,MAAOS,MAAKgY,MAAMzY,GAAGsY,SAAS,IAEhCzL,EAAK,SAAW7M,GACd,MAAOA,GAAI,IAEbD,EAAK,SAAWC,GACd,MAAOS,MAAKgY,MAAMzY,GAAGsY,SAAS,KAEhCja,EAAK,SAAW2B,EAAGqC,GACjB,MAAOrC,GAAE2f,cAActd,IAEzBtD,EAAK,SAAWiB,EAAGqC,GACjB,MAAOrC,GAAE6gB,QAAQxe,IAEnBwJ,EAAK,SAAW7L,EAAGqC,GACjB,MAAOrC,GAAEugB,YAAYle,IAEvB3D,EAAK,SAAWsB,GACd,MAAOS,MAAKgY,MAAMzY,GAAGsY,SAAS,IAEhCjW,EAAK,SAAWrC,EAAG8gB,GACjB,MAAOJ,GAAkB,IAAJ1gB,EAAS8gB,IAEhCtiB,EAAKkiB,EACLjiB,EAAKgiB,EACLM,EAAK,SAAW/gB,GACd,MAAOS,MAAKgY,MAAMzY,GAAGsY,SAAS,IAAI0I,eAEpChhB,EAAK,SAAWihB,GACd,MAAOxgB,MAAKgY,MAAMwI,GAAI3I,SAAS,MAK/BoG,EAAK,uEAMTJ,GAAgBlgB,UAAYogB,EAAgBpgB,UAoC5CogB,EAAgBpgB,UAAUka,SAAW,WACnC,MAAOzY,MAAK8e,KAAO9e,KAAK+e,MAAQ/e,KAAKgf,KAAOhf,KAAKif,QAAUjf,KAAKkf,KAAO,IAAM,KAAqB,MAAdlf,KAAKmf,MAAgB,GAAKve,KAAKC,IAAI,EAAgB,EAAbb,KAAKmf,SAAenf,KAAKof,MAAQ,IAAM,KAAyB,MAAlBpf,KAAKqf,UAAoB,GAAK,IAAMze,KAAKC,IAAI,EAAoB,EAAjBb,KAAKqf,YAAkBrf,KAAKsf,KAGtP,IAiIIG,GAjIAnb,EAAW,SAAkBnE,GAC/B,MAAOA,IAGLkhB,GAAY,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAE3F3B,EAAe,SAAsBD,GAOvC,QAAS6B,GAAU5C,GA8BjB,QAAS7T,GAAOrH,GACd,GAEIvE,GACAP,EACAsO,EAJAuU,EAAc9Y,EACd+Y,EAAcC,CAKlB,IAAa,MAATnC,EACFkC,EAAcE,EAAWle,GAASge,EAClChe,EAAQ,OACH,CACLA,GAASA,CAGT,IAAIme,GAAgBne,EAAQ,CAY5B,IAXAA,EAAQke,EAAW9gB,KAAKa,IAAI+B,GAAQ6b,GAGhCsC,GAA4B,KAAVne,IAAame,GAAgB,GAGnDJ,GAAeI,EAAyB,MAAT3C,EAAeA,EAAO,IAAe,MAATA,GAAyB,MAATA,EAAe,GAAKA,GAAQuC,EACvGC,EAAcA,GAAwB,MAATlC,EAAe+B,EAAS,EAAIzB,EAAiB,GAAK,KAAO+B,GAA0B,MAAT3C,EAAe,IAAM,IAIxH4C,EAEF,IADA3iB,KAAQP,EAAI8E,EAAMhE,SACTP,EAAIP,GACX,GAAIsO,EAAIxJ,EAAMqe,WAAW5iB,GAAI,GAAK+N,GAAKA,EAAI,GAAI,CAC7CwU,GAAqB,KAANxU,EAAW8U,EAAUte,EAAMW,MAAMlF,EAAI,GAAKuE,EAAMW,MAAMlF,IAAMuiB,EAC3Ehe,EAAQA,EAAMW,MAAM,EAAGlF,EACvB,QAOJmgB,IAAUF,IAAM1b,EAAQue,EAAMve,EAAOwe,EAAAA,GAGzC,IAAIxiB,GAAS+hB,EAAY/hB,OAASgE,EAAMhE,OAASgiB,EAAYhiB,OACzDyiB,EAAUziB,EAAS2f,EAAQ,GAAI1c,OAAM0c,EAAQ3f,EAAS,GAAG6gB,KAAKvB,GAAQ,EAM1E,QAHIM,GAASF,IAAM1b,EAAQue,EAAME,EAAUze,EAAOye,EAAQziB,OAAS2f,EAAQqC,EAAYhiB,OAASwiB,EAAAA,GAAWC,EAAU,IAG7GlD,GACN,IAAK,IACHvb,EAAQ+d,EAAc/d,EAAQge,EAAcS,CAAQ,MACtD,KAAK,IACHze,EAAQ+d,EAAcU,EAAUze,EAAQge,CAAY,MACtD,KAAK,IACHhe,EAAQye,EAAQ9d,MAAM,EAAG3E,EAASyiB,EAAQziB,QAAU,GAAK+hB,EAAc/d,EAAQge,EAAcS,EAAQ9d,MAAM3E,EAAQ,MACrH,SACEgE,EAAQye,EAAUV,EAAc/d,EAAQge,EAG5C,MAAOjB,GAAS/c,GAzFlBkb,EAAYD,EAAgBC,EAE5B,IAAII,GAAOJ,EAAUI,KACjBC,EAAQL,EAAUK,MAClBC,EAAON,EAAUM,KACjBC,EAASP,EAAUO,OACnBC,EAAOR,EAAUQ,KACjBC,EAAQT,EAAUS,MAClBC,EAAQV,EAAUU,MAClBC,EAAYX,EAAUW,UACtBC,EAAOZ,EAAUY,KAIjB7W,EAAoB,MAAXwW,EAAiBiD,EAAS,GAAgB,MAAXjD,GAAkB,SAASkD,KAAK7C,GAAQ,IAAMA,EAAKvU,cAAgB,GAC3G0W,EAAoB,MAAXxC,EAAiBiD,EAAS,GAAK,OAAOC,KAAK7C,GAAQ8C,EAAU,GAKtEV,EAAanC,EAAYD,GACzBsC,GAAetC,GAAQ,aAAa6C,KAAK7C,EA2E7C,OArEAD,GAAyB,MAAbA,EAAoBC,EAAO,EAAI,GAAK,SAAS6C,KAAK7C,GAAQ1e,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,GAAImb,IAAcze,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,GAAImb,IAiEtIxU,EAAO4N,SAAW,WAChB,MAAOiG,GAAY,IAGd7T,EAGT,QAAS8U,GAAajB,EAAWlb,GAC/B,GAAItE,GAAIoiB,GAAW5C,EAAYD,EAAgBC,GAAYA,EAAUY,KAAO,IAAKZ,IAC7ElgB,EAAiE,EAA7DoC,KAAKC,OAAQD,KAAKsD,IAAI,EAAGtD,KAAKG,MAAMoa,EAAS3X,GAAS,KAC1DwG,EAAIpJ,KAAKO,IAAI,IAAK3C,GAClBiK,EAAS4Y,EAAS,EAAI7iB,EAAI,EAC9B,OAAO,UAAUgF,GACf,MAAOtE,GAAE8K,EAAIxG,GAASiF,GAhH1B,GAAIsZ,GAAQtC,EAAOS,UAAYT,EAAOU,UAAYF,EAAYR,EAAOS,SAAUT,EAAOU,WAAa7b,EAC/F4d,EAAWzC,EAAOyC,SAClBJ,EAAUrC,EAAOqC,QACjBvB,EAAWd,EAAOc,SAAWD,EAAeb,EAAOc,UAAYjc,EAC/D8d,EAAU3C,EAAO2C,SAAW,GAgHhC,QACEvX,OAAQyW,EACR3B,aAAcA,GAMlBH,IACEsC,QAAS,IACT3B,UAAW,IACXD,UAAW,GACXgC,UAAW,IAAK,KAUlB,IAAIG,GAAiB,SAAwB1hB,GAC3C,MAAOC,MAAKC,IAAI,GAAIsa,EAASva,KAAKa,IAAId,MAGpC2hB,EAAkB,SAAyB3hB,EAAM6C,GACnD,MAAO5C,MAAKC,IAAI,EAAgE,EAA7DD,KAAKC,OAAQD,KAAKsD,IAAI,EAAGtD,KAAKG,MAAMoa,EAAS3X,GAAS,KAAW2X,EAASva,KAAKa,IAAId,MAGpG4hB,EAAiB,SAAwB5hB,EAAME,GAEjD,MADAF,GAAOC,KAAKa,IAAId,GAAOE,EAAMD,KAAKa,IAAIZ,GAAOF,EACtCC,KAAKC,IAAI,EAAGsa,EAASta,GAAOsa,EAASxa,IAAS,EAGvDrB,GAAQkjB,oBAAsBhD,EAC9BlgB,EAAQogB,aAAeA,EACvBpgB,EAAQmf,gBAAkBA,EAC1Bnf,EAAQ+iB,eAAiBA,EACzB/iB,EAAQgjB,gBAAkBA,EAC1BhjB,EAAQijB,eAAiBA,EAEzB7a,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,WAElDif,GAAI,SAAUzjB,EAASU,EAAQJ,IAErC,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,EAASN,EAAQ,aAAiC,kBAAXa,SAAyBA,OAAOC,IAAMD,QAAQ,UAAW,YAAaD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,OAAUJ,EAAOI,KAC7RC,KAAM,SAAUV,EAASojB,GAG1B,QAASC,GAAM7U,EAAI8U,EAAIC,EAAIC,EAAIC,GAC7B,GAAIpV,GAAKG,EAAKA,EACVJ,EAAKC,EAAKG,CACd,SAAS,EAAI,EAAIA,EAAK,EAAIH,EAAKD,GAAMkV,GAAM,EAAI,EAAIjV,EAAK,EAAID,GAAMmV,GAAM,EAAI,EAAI/U,EAAK,EAAIH,EAAK,EAAID,GAAMoV,EAAKpV,EAAKqV,GAAM,EAiC1H,QAAS3J,GAAOra,EAAGmB,GACjB,MAAO,UAAUzB,GACf,MAAOM,GAAIN,EAAIyB,GAInB,QAAS8iB,GAAYjkB,EAAGuB,EAAG+M,GACzB,MAAOtO,GAAI6B,KAAKO,IAAIpC,EAAGsO,GAAI/M,EAAIM,KAAKO,IAAIb,EAAG+M,GAAKtO,EAAGsO,EAAI,EAAIA,EAAG,SAAU5O,GACtE,MAAOmC,MAAKO,IAAIpC,EAAIN,EAAI6B,EAAG+M,IAI/B,QAAS4V,GAAIlkB,EAAGuB,GACd,GAAIJ,GAAII,EAAIvB,CACZ,OAAOmB,GAAIkZ,EAAOra,EAAGmB,EAAI,KAAOA,OAAWA,EAAI,IAAMU,KAAKgY,MAAM1Y,EAAI,KAAOA,GAAKmE,EAASR,MAAM9E,GAAKuB,EAAIvB,GAG1G,QAASmkB,GAAM7V,GACb,MAAoB,MAAZA,GAAKA,GAAW8V,EAAU,SAAUpkB,EAAGuB,GAC7C,MAAOA,GAAIvB,EAAIikB,EAAYjkB,EAAGuB,EAAG+M,GAAKhJ,EAASR,MAAM9E,GAAKuB,EAAIvB,IAIlE,QAASokB,GAAQpkB,EAAGuB,GAClB,GAAIJ,GAAII,EAAIvB,CACZ,OAAOmB,GAAIkZ,EAAOra,EAAGmB,GAAKmE,EAASR,MAAM9E,GAAKuB,EAAIvB,GAyBpD,QAASqkB,GAAUC,GACjB,MAAO,UAAUC,GACf,GAIIrkB,GACAskB,EALA7kB,EAAI4kB,EAAO9jB,OACXb,EAAI,GAAI8D,OAAM/D,GACdsN,EAAI,GAAIvJ,OAAM/D,GACd4B,EAAI,GAAImC,OAAM/D,EAGlB,KAAKO,EAAI,EAAGA,EAAIP,IAAKO,EACnBskB,EAAWb,EAAQxW,IAAIoX,EAAOrkB,IAC9BN,EAAEM,GAAKskB,EAAS5kB,GAAK,EACrBqN,EAAE/M,GAAKskB,EAASvX,GAAK,EACrB1L,EAAErB,GAAKskB,EAASjjB,GAAK,CAMvB,OAJA3B,GAAI0kB,EAAO1kB,GACXqN,EAAIqX,EAAOrX,GACX1L,EAAI+iB,EAAO/iB,GACXijB,EAASpX,QAAU,EACZ,SAAU1N,GAIf,MAHA8kB,GAAS5kB,EAAIA,EAAEF,GACf8kB,EAASvX,EAAIA,EAAEvN,GACf8kB,EAASjjB,EAAIA,EAAE7B,GACR8kB,EAAW,KAiExB,QAASrE,GAAK5e,GACZ,MAAO,YACL,MAAOA,IAIX,QAASkjB,GAAIljB,GACX,MAAO,UAAU7B,GACf,MAAO6B,GAAE7B,GAAK,IAsGlB,QAASglB,GAASjgB,GAChB,MAAc,SAAVA,EAAyBc,GACxBof,IAASA,EAAUC,SAASC,cAAc,OAAQC,EAAUF,SAASG,gBAAiBC,EAAUJ,SAASK,aAC9GN,EAAQO,MAAMC,UAAY1gB,EAC1BA,EAAQugB,EAAQI,iBAAiBN,EAAQO,YAAYV,GAAU,MAAMW,iBAAiB,aACtFR,EAAQS,YAAYZ,GACpBlgB,EAAQA,EAAMW,MAAM,MAAOogB,MAAM,KAC1BC,GAAWhhB,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,KAGjF,QAASihB,GAASjhB,GAChB,MAAa,OAATA,EAAsBc,GACrBogB,IAASA,EAAUf,SAASgB,gBAAgB,6BAA8B,MAC/ED,EAAQE,aAAa,YAAaphB,IAC5BA,EAAQkhB,EAAQR,UAAUW,QAAQC,gBACxCthB,EAAQA,EAAM2D,OACPqd,EAAUhhB,EAAMzE,EAAGyE,EAAMlD,EAAGkD,EAAMwJ,EAAGxJ,EAAMtD,EAAGsD,EAAMhF,EAAGgF,EAAMtE,IAFLoF,GAKjE,QAASygB,GAAqBC,EAAOC,EAASC,EAASC,GAErD,QAAS1f,GAAI7G,GACX,MAAOA,GAAEY,OAASZ,EAAE6G,MAAQ,IAAM,GAGpC,QAAS2f,GAAUC,EAAIC,EAAIC,EAAIC,EAAI5mB,EAAG6mB,GACpC,GAAIJ,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,GAAIvmB,GAAIL,EAAEgH,KAAK,aAAc,KAAMqf,EAAS,KAAMC,EAClDO,GAAE7f,MAAO3G,EAAGA,EAAI,EAAGkB,EAAGkD,EAAOgiB,EAAIE,KAAStmB,EAAGA,EAAI,EAAGkB,EAAGkD,EAAOiiB,EAAIE,UACzDD,GAAMC,IACf5mB,EAAEgH,KAAK,aAAe2f,EAAKN,EAAUO,EAAKN,GAI9C,QAASQ,GAAO3mB,EAAGuB,EAAG1B,EAAG6mB,GACnB1mB,IAAMuB,GACJvB,EAAIuB,EAAI,IAAKA,GAAK,IAAaA,EAAIvB,EAAI,MAAKA,GAAK,KACrD0mB,EAAE7f,MAAO3G,EAAGL,EAAEgH,KAAKH,EAAI7G,GAAK,UAAW,KAAMumB,GAAY,EAAGhlB,EAAGkD,EAAOtE,EAAGuB,MAChEA,GACT1B,EAAEgH,KAAKH,EAAI7G,GAAK,UAAY0B,EAAI6kB,GAIpC,QAASQ,GAAM5mB,EAAGuB,EAAG1B,EAAG6mB,GAClB1mB,IAAMuB,EACRmlB,EAAE7f,MAAO3G,EAAGL,EAAEgH,KAAKH,EAAI7G,GAAK,SAAU,KAAMumB,GAAY,EAAGhlB,EAAGkD,EAAOtE,EAAGuB,KAC/DA,GACT1B,EAAEgH,KAAKH,EAAI7G,GAAK,SAAW0B,EAAI6kB,GAInC,QAASS,GAAMP,EAAIC,EAAIC,EAAIC,EAAI5mB,EAAG6mB,GAChC,GAAIJ,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,GAAIvmB,GAAIL,EAAEgH,KAAKH,EAAI7G,GAAK,SAAU,KAAM,IAAK,KAAM,IACnD6mB,GAAE7f,MAAO3G,EAAGA,EAAI,EAAGkB,EAAGkD,EAAOgiB,EAAIE,KAAStmB,EAAGA,EAAI,EAAGkB,EAAGkD,EAAOiiB,EAAIE,SAClD,KAAPD,GAAmB,IAAPC,GACrB5mB,EAAEgH,KAAKH,EAAI7G,GAAK,SAAW2mB,EAAK,IAAMC,EAAK,KAI/C,MAAO,UAAUzmB,EAAGuB,GAClB,GAAI1B,MAEJ6mB,IAOA,OANA1mB,GAAIimB,EAAMjmB,GAAIuB,EAAI0kB,EAAM1kB,GACxB8kB,EAAUrmB,EAAE8mB,WAAY9mB,EAAE+mB,WAAYxlB,EAAEulB,WAAYvlB,EAAEwlB,WAAYlnB,EAAG6mB,GACrEC,EAAO3mB,EAAE2mB,OAAQplB,EAAEolB,OAAQ9mB,EAAG6mB,GAC9BE,EAAM5mB,EAAE4mB,MAAOrlB,EAAEqlB,MAAO/mB,EAAG6mB,GAC3BG,EAAM7mB,EAAEgnB,OAAQhnB,EAAEinB,OAAQ1lB,EAAEylB,OAAQzlB,EAAE0lB,OAAQpnB,EAAG6mB,GACjD1mB,EAAIuB,EAAI,KACD,SAAU7B,GAIf,IAHA,GAEII,GAFAI,KACAP,EAAI+mB,EAAEjmB,SAEDP,EAAIP,GACXE,GAAGC,EAAI4mB,EAAExmB,IAAIA,GAAKJ,EAAEsB,EAAE1B,EACvB,OAAOG,GAAEyhB,KAAK,MAarB,QAASpH,GAAK9Y,GACZ,QAASA,EAAIS,KAAKqlB,IAAI9lB,IAAM,EAAIA,GAAK,EAGvC,QAAS+Y,GAAK/Y,GACZ,QAASA,EAAIS,KAAKqlB,IAAI9lB,IAAM,EAAIA,GAAK,EAGvC,QAAS+lB,GAAK/lB,GACZ,QAASA,EAAIS,KAAKqlB,IAAI,EAAI9lB,IAAM,IAAMA,EAAI,GA+C5C,QAASgmB,GAAMC,GACb,MAAO,UAAU5lB,EAAO6lB,GACtB,GAAIja,GAAIga,GAAQ5lB,EAAQkiB,EAAQnW,IAAI/L,IAAQ4L,GAAIia,EAAM3D,EAAQnW,IAAI8Z,IAAMja,GACpExN,EAAIukB,EAAQ3iB,EAAM5B,EAAGynB,EAAIznB,GACzBS,EAAI8jB,EAAQ3iB,EAAMnB,EAAGgnB,EAAIhnB,GACzB8M,EAAUgX,EAAQ3iB,EAAM2L,QAASka,EAAIla,QACzC,OAAO,UAAU1N,GAKf,MAJA+B,GAAM4L,EAAIA,EAAE3N,GACZ+B,EAAM5B,EAAIA,EAAEH,GACZ+B,EAAMnB,EAAIA,EAAEZ,GACZ+B,EAAM2L,QAAUA,EAAQ1N,GACjB+B,EAAQ,KAQrB,QAAS8lB,GAAM9lB,EAAO6lB,GACpB,GAAIhnB,GAAI8jB,GAAS3iB,EAAQkiB,EAAQjV,IAAIjN,IAAQnB,GAAIgnB,EAAM3D,EAAQjV,IAAI4Y,IAAMhnB,GACrEN,EAAIokB,EAAQ3iB,EAAMzB,EAAGsnB,EAAItnB,GACzBuB,EAAI6iB,EAAQ3iB,EAAMF,EAAG+lB,EAAI/lB,GACzB6L,EAAUgX,EAAQ3iB,EAAM2L,QAASka,EAAIla,QACzC,OAAO,UAAU1N,GAKf,MAJA+B,GAAMnB,EAAIA,EAAEZ,GACZ+B,EAAMzB,EAAIA,EAAEN,GACZ+B,EAAMF,EAAIA,EAAE7B,GACZ+B,EAAM2L,QAAUA,EAAQ1N,GACjB+B,EAAQ,IAInB,QAAS+lB,GAAMH,GACb,MAAO,UAAU5lB,EAAO6lB,GACtB,GAAIja,GAAIga,GAAQ5lB,EAAQkiB,EAAQvU,IAAI3N,IAAQ4L,GAAIia,EAAM3D,EAAQvU,IAAIkY,IAAMja,GACpEY,EAAImW,EAAQ3iB,EAAMwM,EAAGqZ,EAAIrZ,GACzB3N,EAAI8jB,EAAQ3iB,EAAMnB,EAAGgnB,EAAIhnB,GACzB8M,EAAUgX,EAAQ3iB,EAAM2L,QAASka,EAAIla,QACzC,OAAO,UAAU1N,GAKf,MAJA+B,GAAM4L,EAAIA,EAAE3N,GACZ+B,EAAMwM,EAAIA,EAAEvO,GACZ+B,EAAMnB,EAAIA,EAAEZ,GACZ+B,EAAM2L,QAAUA,EAAQ1N,GACjB+B,EAAQ,KAQrB,QAASgmB,GAAYJ,GACnB,MAAO,SAASK,GAAepZ,GAG7B,QAASqZ,GAAalmB,EAAO6lB,GAC3B,GAAIja,GAAIga,GAAQ5lB,EAAQkiB,EAAQ7T,UAAUrO,IAAQ4L,GAAIia,EAAM3D,EAAQ7T,UAAUwX,IAAMja,GAChFxN,EAAIukB,EAAQ3iB,EAAM5B,EAAGynB,EAAIznB,GACzBS,EAAI8jB,EAAQ3iB,EAAMnB,EAAGgnB,EAAIhnB,GACzB8M,EAAUgX,EAAQ3iB,EAAM2L,QAASka,EAAIla,QACzC,OAAO,UAAU1N,GAKf,MAJA+B,GAAM4L,EAAIA,EAAE3N,GACZ+B,EAAM5B,EAAIA,EAAEH,GACZ+B,EAAMnB,EAAIA,EAAEuB,KAAKO,IAAI1C,EAAG4O,IACxB7M,EAAM2L,QAAUA,EAAQ1N,GACjB+B,EAAQ,IAMnB,MAlBA6M,IAAKA,EAgBLqZ,EAAaxD,MAAQuD,EAEdC,GACP,GA/eJ,GAgRIhD,GACAG,EACAE,EACAW,EAnRAiC,EAAU,SAAiBxjB,GAC7B,GAAIzE,GAAIyE,EAAO3D,OAAS,CACxB,OAAO,UAAUf,GACf,GAAIQ,GAAIR,GAAK,EAAIA,EAAI,EAAIA,GAAK,GAAKA,EAAI,EAAGC,EAAI,GAAKkC,KAAKG,MAAMtC,EAAIC,GAC9DmkB,EAAK1f,EAAOlE,GACZ6jB,EAAK3f,EAAOlE,EAAI,GAChB2jB,EAAK3jB,EAAI,EAAIkE,EAAOlE,EAAI,GAAK,EAAI4jB,EAAKC,EACtCC,EAAK9jB,EAAIP,EAAI,EAAIyE,EAAOlE,EAAI,GAAK,EAAI6jB,EAAKD,CAC9C,OAAOF,IAAOlkB,EAAIQ,EAAIP,GAAKA,EAAGkkB,EAAIC,EAAIC,EAAIC,KAI1C6D,EAAc,SAAqBzjB,GACrC,GAAIzE,GAAIyE,EAAO3D,MACf,OAAO,UAAUf,GACf,GAAIQ,GAAI2B,KAAKG,QAAQtC,GAAK,GAAK,IAAMA,EAAIA,GAAKC,GAC1CkkB,EAAKzf,GAAQlE,EAAIP,EAAI,GAAKA,GAC1BmkB,EAAK1f,EAAOlE,EAAIP,GAChBokB,EAAK3f,GAAQlE,EAAI,GAAKP,GACtBqkB,EAAK5f,GAAQlE,EAAI,GAAKP,EAC1B,OAAOikB,IAAOlkB,EAAIQ,EAAIP,GAAKA,EAAGkkB,EAAIC,EAAIC,EAAIC,KAI1C1e,EAAW,SAAkBlE,GAC/B,MAAO,YACL,MAAOA,KAgCP0mB,EAAQ,QAASC,IAASzZ,GAG5B,QAAS0Z,GAAOvmB,EAAO6lB,GACrB,GAAI1nB,GAAI4kB,GAAU/iB,EAAQkiB,EAAQxW,IAAI1L,IAAQ7B,GAAI0nB,EAAM3D,EAAQxW,IAAIma,IAAM1nB,GACtEqN,EAAIuX,EAAS/iB,EAAMwL,EAAGqa,EAAIra,GAC1B1L,EAAIijB,EAAS/iB,EAAMF,EAAG+lB,EAAI/lB,GAC1B6L,EAAUgX,EAAQ3iB,EAAM2L,QAASka,EAAIla,QACzC,OAAO,UAAU1N,GAKf,MAJA+B,GAAM7B,EAAIA,EAAEF,GACZ+B,EAAMwL,EAAIA,EAAEvN,GACZ+B,EAAMF,EAAIA,EAAE7B,GACZ+B,EAAM2L,QAAUA,EAAQ1N,GACjB+B,EAAQ,IAZnB,GAAI+iB,GAAWL,EAAM7V,EAkBrB,OAFA0Z,GAAO7D,MAAQ4D,GAERC,GACP,GA6BEC,EAAW5D,EAAUuD,GACrBM,EAAiB7D,EAAUwD,GAE3BrkB,EAAQ,SAAexD,EAAGuB,GAC5B,GAIIrB,GAJAioB,EAAK5mB,EAAIA,EAAEd,OAAS,EACpB2nB,EAAKpoB,EAAI6B,KAAKsD,IAAIgjB,EAAInoB,EAAES,QAAU,EAClCW,EAAI,GAAIsC,OAAMykB,GACdla,EAAI,GAAIvK,OAAMykB,EAGlB,KAAKjoB,EAAI,EAAGA,EAAIkoB,IAAMloB,EACpBkB,EAAElB,GAAKuE,EAAMzE,EAAEE,GAAIqB,EAAErB,GACtB,MAAOA,EAAIioB,IAAMjoB,EAChB+N,EAAE/N,GAAKqB,EAAErB,EACV,OAAO,UAAUR,GAChB,IAAKQ,EAAI,EAAGA,EAAIkoB,IAAMloB,EACpB+N,EAAE/N,GAAKkB,EAAElB,GAAGR,EACb,OAAOuO,KAIRoa,EAAO,SAAcroB,EAAGuB,GAC1B,GAAIJ,GAAI,GAAImnB,KACZ,OAAOtoB,IAAKA,EAAGuB,GAAKvB,EAAG,SAAUN,GAC/B,MAAOyB,GAAEonB,QAAQvoB,EAAIuB,EAAI7B,GAAIyB,IAI7BmD,EAAS,SAAgBtE,EAAGuB,GAC9B,MAAOvB,IAAKA,EAAGuB,GAAKvB,EAAG,SAAUN,GAC/B,MAAOM,GAAIuB,EAAI7B,IAIfqJ,EAAS,SAAgB/I,EAAGuB,GAC9B,GAEI0J,GAFA/K,KACA+N,IAGM,QAANjO,GAAwE,YAA5C,mBAANA,GAAoB,YAAcb,QAAQa,MAAkBA,MAC5E,OAANuB,GAAwE,YAA5C,mBAANA,GAAoB,YAAcpC,QAAQoC,MAAkBA,KAEtF,KAAK0J,IAAK1J,GACJ0J,IAAKjL,GACPE,EAAE+K,GAAKxG,EAAMzE,EAAEiL,GAAI1J,EAAE0J,IAErBgD,EAAEhD,GAAK1J,EAAE0J,EAIb,OAAO,UAAUvL,GACf,IAAKuL,IAAK/K,GACR+N,EAAEhD,GAAK/K,EAAE+K,GAAGvL,EACb,OAAOuO,KAIRua,EAAM,8CACNC,EAAM,GAAIrY,QAAOoY,EAAIE,OAAQ,KAc7BC,EAAS,SAAgB3oB,EAAGuB,GAC9B,GAEAqnB,GAEAC,EAEAC,EANIC,EAAKP,EAAIQ,UAAYP,EAAIO,UAAY,EAQzC9oB,KAEAL,KAEA6mB,IAMA,KAHA1mB,GAAQ,GAAIuB,GAAQ,IAGZqnB,EAAKJ,EAAItc,KAAKlM,MAAQ6oB,EAAKJ,EAAIvc,KAAK3K,MACrCunB,EAAKD,EAAGI,OAASF,IAEpBD,EAAKvnB,EAAE6D,MAAM2jB,EAAID,GACbjpB,EAAEK,GAAIL,EAAEK,IAAM4oB,EACbjpB,IAAIK,GAAK4oB,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IAExBhpB,EAAEK,GAAIL,EAAEK,IAAM2oB,EACbhpB,IAAIK,GAAK2oB,GAGdhpB,IAAIK,GAAK,KACTwmB,EAAE7f,MAAO3G,EAAGA,EAAGkB,EAAGkD,EAAOskB,EAAIC,MAE/BE,EAAKN,EAAIO,SAYX,OARID,GAAKxnB,EAAEd,SACTqoB,EAAKvnB,EAAE6D,MAAM2jB,GACTlpB,EAAEK,GAAIL,EAAEK,IAAM4oB,EACbjpB,IAAIK,GAAK4oB,GAKTjpB,EAAEY,OAAS,EAAIimB,EAAE,GAAKjC,EAAIiC,EAAE,GAAGtlB,GAAK+e,EAAK5e,IAAMA,EAAImlB,EAAEjmB,OAAQ,SAAUf,GAC5E,IAAK,GAAWI,GAAPI,EAAI,EAAMA,EAAIqB,IAAKrB,EAC1BL,GAAGC,EAAI4mB,EAAExmB,IAAIA,GAAKJ,EAAEsB,EAAE1B,EACvB,OAAOG,GAAEyhB,KAAK,OAIf7c,EAAQ,SAAezE,EAAGuB,GAC5B,GACI0M,GADAvO,EAAiB,mBAAN6B,GAAoB,YAAcpC,QAAQoC,EAEzD,OAAY,OAALA,GAAmB,YAAN7B,EAAkB4F,EAAS/D,IAAY,WAAN7B,EAAiB4E,EAAe,WAAN5E,GAAkBuO,EAAI0V,EAAQ9X,MAAMtK,KAAOA,EAAI0M,EAAG6Z,GAASa,EAASpnB,YAAaoiB,GAAQ9X,MAAQic,EAAQvmB,YAAa+mB,MAAOD,EAAO3kB,MAAM8C,QAAQjF,GAAKiC,EAA6B,kBAAdjC,GAAE2nB,SAAgD,kBAAf3nB,GAAEmY,UAA2B5U,MAAMvD,GAAKwH,EAASzE,GAAQtE,EAAGuB;EAGlVsY,EAAQ,SAAe7Z,EAAGuB,GAC5B,MAAOvB,IAAKA,EAAGuB,GAAKvB,EAAG,SAAUN,GAC/B,MAAOmC,MAAKgY,MAAM7Z,EAAIuB,EAAI7B,KAI1BypB,EAAU,IAAMtnB,KAAKiY,GAErBvU,GACFuhB,WAAY,EACZC,WAAY,EACZJ,OAAQ,EACRC,MAAO,EACPI,OAAQ,EACRC,OAAQ,GAGNxB,EAAY,SAAmBzlB,EAAGuB,EAAG0M,EAAG9M,EAAG1B,EAAGU,GAChD,GAAI6mB,GAAQC,EAAQL,CAKpB,QAJII,EAASnlB,KAAKoD,KAAKjF,EAAIA,EAAIuB,EAAIA,MAAIvB,GAAKgnB,EAAQzlB,GAAKylB,IACrDJ,EAAQ5mB,EAAIiO,EAAI1M,EAAIJ,KAAG8M,GAAKjO,EAAI4mB,EAAOzlB,GAAKI,EAAIqlB,IAChDK,EAASplB,KAAKoD,KAAKgJ,EAAIA,EAAI9M,EAAIA,MAAI8M,GAAKgZ,EAAQ9lB,GAAK8lB,EAAQL,GAASK,GACtEjnB,EAAImB,EAAII,EAAI0M,IAAGjO,GAAKA,EAAGuB,GAAKA,EAAGqlB,GAASA,EAAOI,GAAUA,IAE3DF,WAAYrnB,EACZsnB,WAAY5mB,EACZwmB,OAAQ9kB,KAAKqN,MAAM3N,EAAGvB,GAAKmpB,EAC3BvC,MAAO/kB,KAAKunB,KAAKxC,GAASuC,EAC1BnC,OAAQA,EACRC,OAAQA,IA0FRoC,EAA0BrD,EAAqBtB,EAAU,OAAQ,MAAO,QACxE4E,EAA0BtD,EAAqBN,EAAU,KAAM,IAAK,KAEpE6D,EAAM1nB,KAAK2nB,MACXC,EAAO,EACPC,EAAO,EACPC,EAAW,MAgBXC,EAAO,SAAcC,EAAIC,GAC3B,GASI5pB,GACA6pB,EAVAC,EAAMH,EAAG,GACTI,EAAMJ,EAAG,GACTK,EAAKL,EAAG,GACRM,EAAML,EAAG,GACTM,EAAMN,EAAG,GACTO,EAAKP,EAAG,GACRQ,EAAKH,EAAMH,EACXO,EAAKH,EAAMH,EACXO,EAAKF,EAAKA,EAAKC,EAAKA,CAKxB,IAAIC,EAAKb,EACPI,EAAIloB,KAAKI,IAAIooB,EAAKH,GAAMX,EACxBrpB,EAAI,SAAWR,GACb,OAAQsqB,EAAMtqB,EAAI4qB,EAAIL,EAAMvqB,EAAI6qB,EAAIL,EAAKroB,KAAKqlB,IAAIqC,EAAM7pB,EAAIqqB,SAK3D,CACD,GAAIU,GAAK5oB,KAAKoD,KAAKulB,GACf9O,GAAM2O,EAAKA,EAAKH,EAAKA,EAAKR,EAAOc,IAAO,EAAIN,EAAKT,EAAOgB,GACxDhP,GAAM4O,EAAKA,EAAKH,EAAKA,EAAKR,EAAOc,IAAO,EAAIH,EAAKZ,EAAOgB,GACxDC,EAAK7oB,KAAKI,IAAIJ,KAAKoD,KAAKyW,EAAKA,EAAK,GAAKA,GACvCiP,EAAK9oB,KAAKI,IAAIJ,KAAKoD,KAAKwW,EAAKA,EAAK,GAAKA,EAC3CsO,IAAKY,EAAKD,GAAMnB,EAChBrpB,EAAI,SAAWR,GACb,GAAIG,GAAIH,EAAIqqB,EACRa,EAAS1Q,EAAKwQ,GACd3qB,EAAImqB,GAAMT,EAAOgB,IAAOG,EAASzD,EAAKoC,EAAM1pB,EAAI6qB,GAAMvQ,EAAKuQ,GAC/D,QAAQV,EAAMjqB,EAAIuqB,EAAIL,EAAMlqB,EAAIwqB,EAAIL,EAAKU,EAAS1Q,EAAKqP,EAAM1pB,EAAI6qB,KAMvE,MAFAxqB,GAAE2qB,SAAe,IAAJd,EAEN7pB,GAmBL4qB,EAAQ1D,EAAMlD,GACd6G,EAAU3D,EAAMhD,GAgChB4G,EAAQxD,EAAMtD,GACd+G,EAAUzD,EAAMpD,GA0BhB8G,GAAczD,EAAYvD,GAC1BiH,GAAgB1D,EAAYrD,GAE5BgH,GAAW,SAAkBC,EAAc1rB,GAE7C,IAAK,GADD2rB,GAAU,GAAI5nB,OAAM/D,GACfO,EAAI,EAAGA,EAAIP,IAAKO,EACvBorB,EAAQprB,GAAKmrB,EAAanrB,GAAKP,EAAI,GACpC,OAAO2rB,GAGV/qB,GAAQgrB,YAAc9mB,EACtBlE,EAAQirB,iBAAmBhoB,EAC3BjD,EAAQkrB,iBAAmB7D,EAC3BrnB,EAAQmrB,uBAAyB7D,EACjCtnB,EAAQorB,gBAAkBtD,EAC1B9nB,EAAQqrB,kBAAoBtnB,EAC5B/D,EAAQsrB,kBAAoB9iB,EAC5BxI,EAAQurB,iBAAmBjS,EAC3BtZ,EAAQwrB,kBAAoBpD,EAC5BpoB,EAAQ8oB,wBAA0BA,EAClC9oB,EAAQ+oB,wBAA0BA,EAClC/oB,EAAQyrB,gBAAkBpC,EAC1BrpB,EAAQ0rB,eAAiBnE,EACzBvnB,EAAQ2rB,oBAAsBjE,EAC9B1nB,EAAQ4rB,0BAA4BjE,EACpC3nB,EAAQ6rB,eAAiBtB,EACzBvqB,EAAQ8rB,mBAAqBtB,EAC7BxqB,EAAQ+rB,eAAiB/E,EACzBhnB,EAAQgsB,eAAiBvB,EACzBzqB,EAAQisB,mBAAqBvB,EAC7B1qB,EAAQksB,qBAAuBvB,GAC/B3qB,EAAQmsB,yBAA2BvB,GACnC5qB,EAAQ6qB,SAAWA,GAEnBziB,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,QAErDkoB,WAAY,IAAMC,GAAI,SAAU3sB,EAASU,EAAQJ,IAEpD,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,EAASN,EAAQ,YAAaA,EAAQ,iBAAkBA,EAAQ,kBAAmBA,EAAQ,aAAcA,EAAQ,WAAYA,EAAQ,kBAAmBA,EAAQ,aAAiC,kBAAXa,SAAyBA,OAAOC,IAAMD,QAAQ,UAAW,WAAY,gBAAiB,iBAAkB,YAAa,UAAW,iBAAkB,YAAaD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,OAAUJ,EAAOI,GAAIJ,EAAOI,GAAIJ,EAAOI,GAAIJ,EAAOI,GAAIJ,EAAOI,GAAIJ,EAAOI,GAAIJ,EAAOI,KACvkBC,KAAM,SAAUV,EAASssB,EAASC,EAAcC,EAAeC,EAAUC,EAAQC,EAAcvJ,GAUhG,QAASwJ,GAAQC,GAOf,QAASvG,GAAM1lB,GACb,GAAI8H,GAAM9H,EAAI,GACVjB,EAAI+oB,EAAMrf,IAAIX,EAClB,KAAK/I,EAAG,CACN,GAAImtB,IAAYC,EAAU,MAAOD,EACjCpE,GAAM/f,IAAID,EAAK/I,EAAIiG,EAAOU,KAAK1F,IAEjC,MAAOisB,IAAUltB,EAAI,GAAKktB,EAAS3sB,QAbrC,GAAIwoB,GAAQ6D,EAAaznB,MACrBc,KACAknB,EAAUC,CAsCd,OApCAF,GAAuB,MAAZA,KAAwBhoB,EAAM5E,KAAK4sB,GAY9CvG,EAAM1gB,OAAS,SAAUW,GACvB,IAAKrB,UAAUhF,OAAQ,MAAO0F,GAAOf,OACrCe,MAAa8iB,EAAQ6D,EAAaznB,KAKlC,KAJA,GAEIlE,GACA8H,EAHA/I,KACAP,EAAImH,EAAErG,SAGDP,EAAIP,GACNspB,EAAMtf,IAAIV,GAAO9H,EAAI2F,EAAE5G,IAAM,KAAK+oB,EAAM/f,IAAID,EAAK9C,EAAOU,KAAK1F,GACnE,OAAO0lB,IAGVA,EAAMrhB,MAAQ,SAAUsB,GACtB,MAAOrB,WAAUhF,QAAU2sB,EAAWhoB,EAAM5E,KAAKsG,GAAI+f,GAASuG,EAAShoB,SAGzEyhB,EAAMwG,QAAU,SAAUvmB,GACxB,MAAOrB,WAAUhF,QAAU4sB,EAAUvmB,EAAG+f,GAASwG,GAGnDxG,EAAM0G,KAAO,WACX,MAAOJ,KAAUhnB,OAAOA,GAAQX,MAAM4nB,GAAUC,QAAQA,IAGnDxG,EAGT,QAAS2G,KAcP,QAASC,KACP,GAAI9tB,GAAIwG,IAAS1F,OACbmF,EAAUwnB,EAAS,GAAKA,EAAS,GACjC3rB,EAAQ2rB,EAASxnB,EAAU,GAC3BlE,EAAO0rB,EAAS,EAAIxnB,EACxBhE,IAAQF,EAAOD,GAASI,KAAKC,IAAI,EAAGnC,EAAI+tB,EAA8B,EAAfC,GACnD9T,IAAOjY,EAAOC,KAAKG,MAAMJ,IAC7BH,IAAUC,EAAOD,EAAQG,GAAQjC,EAAI+tB,IAAiB1N,EACtD4N,EAAYhsB,GAAQ,EAAI8rB,GACpB7T,IAAOpY,EAAQI,KAAKgY,MAAMpY,GAAQmsB,EAAY/rB,KAAKgY,MAAM+T,GAC7D,IAAIxpB,GAASyoB,EAAQrnB,MAAM7F,GAAG0F,IAAI,SAAUnF,GAC1C,MAAOuB,GAAQG,EAAO1B,GAExB,OAAO2tB,GAAajoB,EAAUxB,EAAOwB,UAAYxB,GA1BnD,GAIIxC,GACAgsB,EALA/G,EAAQsG,IAAUE,QAAQS,QAC1B3nB,EAAS0gB,EAAM1gB,OACf0nB,EAAehH,EAAMrhB,MACrB4nB,GAAY,EAAG,GAGfvT,GAAQ,EACR6T,EAAe,EACfC,EAAe,EACf3N,EAAQ,EAgEZ,cA9DO6G,GAAMwG,QAkBbxG,EAAM1gB,OAAS,SAAUW,GACvB,MAAOrB,WAAUhF,QAAU0F,EAAOW,GAAI2mB,KAAatnB,KAGrD0gB,EAAMrhB,MAAQ,SAAUsB,GACtB,MAAOrB,WAAUhF,QAAU2sB,IAAatmB,EAAE,IAAKA,EAAE,IAAK2mB,KAAaL,EAAShoB,SAG9EyhB,EAAMkH,WAAa,SAAUjnB,GAC3B,MAAOsmB,KAAatmB,EAAE,IAAKA,EAAE,IAAK+S,GAAQ,EAAM4T,KAGlD5G,EAAM+G,UAAY,WAChB,MAAOA,IAGT/G,EAAMjlB,KAAO,WACX,MAAOA,IAGTilB,EAAMhN,MAAQ,SAAU/S,GACtB,MAAOrB,WAAUhF,QAAUoZ,IAAU/S,EAAG2mB,KAAa5T,GAGvDgN,EAAM3D,QAAU,SAAUpc,GACxB,MAAOrB,WAAUhF,QAAUitB,EAAeC,EAAe9rB,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,EAAG2B,IAAK2mB,KAAaC,GAGrG7G,EAAM6G,aAAe,SAAU5mB,GAC7B,MAAOrB,WAAUhF,QAAUitB,EAAe7rB,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,EAAG2B,IAAK2mB,KAAaC,GAGtF7G,EAAM8G,aAAe,SAAU7mB,GAC7B,MAAOrB,WAAUhF,QAAUktB,EAAe9rB,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,EAAG2B,IAAK2mB,KAAaE,GAGtF9G,EAAM7G,MAAQ,SAAUlZ,GACtB,MAAOrB,WAAUhF,QAAUuf,EAAQne,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,EAAG2B,IAAK2mB,KAAazN,GAG/E6G,EAAM0G,KAAO,WACX,MAAOC,KAAOrnB,OAAOA,KAAUX,MAAM4nB,GAAUvT,MAAMA,GAAO6T,aAAaA,GAAcC,aAAaA,GAAc3N,MAAMA,IAGnHyN,IAGT,QAASO,GAASnH,GAChB,GAAI0G,GAAO1G,EAAM0G,IAUjB,OARA1G,GAAM3D,QAAU2D,EAAM8G,mBACf9G,GAAM6G,mBACN7G,GAAM8G,aAEb9G,EAAM0G,KAAO,WACX,MAAOS,GAAST,MAGX1G,EAGT,QAASoH,KACP,MAAOD,GAASR,IAAOE,aAAa,IAetC,QAASQ,GAAoBluB,EAAGuB,GAC9B,OAAQA,GAAKvB,GAAKA,GAAK,SAAUoB,GAC/B,OAAQA,EAAIpB,GAAKuB,GACf+D,EAAS/D,GAGf,QAAS4sB,GAAmBC,GAC1B,MAAO,UAAUpuB,EAAGuB,GAClB,GAAIJ,GAAIitB,EAAcpuB,GAAKA,EAAGuB,GAAKA,EACnC,OAAO,UAAUH,GACf,MAAOA,IAAKpB,EAAI,EAAIoB,GAAKG,EAAI,EAAIJ,EAAEC,KAKzC,QAASitB,GAAmBC,GAC1B,MAAO,UAAUtuB,EAAGuB,GAClB,GAAI3B,GAAI0uB,EAActuB,GAAKA,EAAGuB,GAAKA,EACnC,OAAO,UAAU7B,GACf,MAAOA,IAAK,EAAIM,EAAIN,GAAK,EAAI6B,EAAI3B,EAAEF,KAKzC,QAAS6uB,GAAMpoB,EAAQinB,EAAUgB,EAAeE,GAC9C,GAAIE,GAAKroB,EAAO,GACZskB,EAAKtkB,EAAO,GACZukB,EAAK0C,EAAS,GACdzC,EAAKyC,EAAS,EAElB,OADI3C,GAAK+D,GAAIA,EAAKJ,EAAc3D,EAAI+D,GAAK9D,EAAK4D,EAAc3D,EAAID,KAAS8D,EAAKJ,EAAcI,EAAI/D,GAAKC,EAAK4D,EAAc5D,EAAIC,IACrH,SAAUvpB,GACf,MAAOspB,GAAG8D,EAAGptB,KAIjB,QAASqtB,GAAQtoB,EAAQinB,EAAUgB,EAAeE,GAChD,GAAI5mB,GAAI7F,KAAKsD,IAAIgB,EAAO1F,OAAQ2sB,EAAS3sB,QAAU,EAC/CU,EAAI,GAAIuC,OAAMgE,GACd9H,EAAI,GAAI8D,OAAMgE,GACdxH,IAQJ,KALIiG,EAAOuB,GAAKvB,EAAO,KACrBA,EAASA,EAAOf,QAAQQ,UACxBwnB,EAAWA,EAAShoB,QAAQQ,aAGrB1F,EAAIwH,GACXvG,EAAEjB,GAAKkuB,EAAcjoB,EAAOjG,GAAIiG,EAAOjG,EAAI,IAC3CN,EAAEM,GAAKouB,EAAclB,EAASltB,GAAIktB,EAASltB,EAAI,GAGjD,OAAO,UAAUkB,GACf,GAAIlB,GAAI2sB,EAAQtkB,OAAOpC,EAAQ/E,EAAG,EAAGsG,GAAK,CAC1C,OAAO9H,GAAEM,GAAGiB,EAAEjB,GAAGkB,KAIrB,QAASmsB,GAAK7E,EAAQgG,GACpB,MAAOA,GAAOvoB,OAAOuiB,EAAOviB,UAAUX,MAAMkjB,EAAOljB,SAAS+lB,YAAY7C,EAAO6C,eAAeoD,MAAMjG,EAAOiG,SAK7G,QAASC,GAAWR,EAAeE,GASjC,QAASb,KAGP,MAFAoB,GAAYhtB,KAAKsD,IAAIgB,EAAO1F,OAAQ2sB,EAAS3sB,QAAU,EAAIguB,EAAUF,EACrEO,EAASC,EAAQ,KACVlI,EAGT,QAASA,GAAMzlB,GACb,OAAQ0tB,IAAWA,EAASD,EAAU1oB,EAAQinB,EAAUuB,EAAQR,EAAmBC,GAAiBA,EAAeY,MAAmB5tB,GAfxI,GAIIytB,GACAC,EACAC,EANA5oB,EAAS8oB,EACT7B,EAAW6B,EACXD,EAAiBjC,EAAcxB,YAC/BoD,GAAQ,CAuCZ,OAxBA9H,GAAMqI,OAAS,SAAU5gB,GACvB,OAAQygB,IAAUA,EAAQF,EAAUzB,EAAUjnB,EAAQ+nB,EAAqBS,EAAQN,EAAmBC,GAAiBA,MAAkBhgB,IAG3IuY,EAAM1gB,OAAS,SAAUW,GACvB,MAAOrB,WAAUhF,QAAU0F,EAASgpB,EAAM3uB,KAAKsG,EAAGxC,GAASmpB,KAAatnB,EAAOf,SAGjFyhB,EAAMrhB,MAAQ,SAAUsB,GACtB,MAAOrB,WAAUhF,QAAU2sB,EAAWhoB,EAAM5E,KAAKsG,GAAI2mB,KAAaL,EAAShoB,SAG7EyhB,EAAMkH,WAAa,SAAUjnB,GAC3B,MAAOsmB,GAAWhoB,EAAM5E,KAAKsG,GAAIkoB,EAAiBjC,EAAcjB,iBAAkB2B,KAGpF5G,EAAM8H,MAAQ,SAAU7nB,GACtB,MAAOrB,WAAUhF,QAAUkuB,IAAU7nB,EAAG2mB,KAAakB,GAGvD9H,EAAM0E,YAAc,SAAUzkB,GAC5B,MAAOrB,WAAUhF,QAAUuuB,EAAiBloB,EAAG2mB,KAAauB,GAGvDvB,IAmCT,QAAS2B,GAAUvI,GACjB,GAAI1gB,GAAS0gB,EAAM1gB,MAmDnB,OAjDA0gB,GAAMlhB,MAAQ,SAAUhE,GACtB,GAAIR,GAAIgF,GACR,OAAO0mB,GAAQlnB,MAAMxE,EAAE,GAAIA,EAAEA,EAAEV,OAAS,GAAa,MAATkB,EAAgB,GAAKA,IAGnEklB,EAAMwI,WAAa,SAAU1tB,EAAOge,GAClC,MAAO0P,GAAWlpB,IAAUxE,EAAOge,IAGrCkH,EAAMyI,KAAO,SAAU3tB,GACR,MAATA,IAAeA,EAAQ,GAE3B,IAKIC,GALAT,EAAIgF,IACJpC,EAAK,EACLC,EAAK7C,EAAEV,OAAS,EAChBgB,EAAQN,EAAE4C,GACVrC,EAAOP,EAAE6C,EA8Bb,OA3BItC,GAAOD,IACTG,EAAOH,EAAOA,EAAQC,EAAMA,EAAOE,EACnCA,EAAOmC,EAAIA,EAAKC,EAAIA,EAAKpC,GAG3BA,EAAOirB,EAAQrrB,cAAcC,EAAOC,EAAMC,GAEtCC,EAAO,GACTH,EAAQI,KAAKG,MAAMP,EAAQG,GAAQA,EACnCF,EAAOG,KAAK6D,KAAKhE,EAAOE,GAAQA,EAChCA,EAAOirB,EAAQrrB,cAAcC,EAAOC,EAAMC,IACjCC,EAAO,IAChBH,EAAQI,KAAK6D,KAAKjE,EAAQG,GAAQA,EAClCF,EAAOG,KAAKG,MAAMN,EAAOE,GAAQA,EACjCA,EAAOirB,EAAQrrB,cAAcC,EAAOC,EAAMC,IAGxCC,EAAO,GACTT,EAAE4C,GAAMlC,KAAKG,MAAMP,EAAQG,GAAQA,EACnCT,EAAE6C,GAAMnC,KAAK6D,KAAKhE,EAAOE,GAAQA,EACjCuE,EAAOhF,IACES,EAAO,IAChBT,EAAE4C,GAAMlC,KAAK6D,KAAKjE,EAAQG,GAAQA,EAClCT,EAAE6C,GAAMnC,KAAKG,MAAMN,EAAOE,GAAQA,EAClCuE,EAAOhF,IAGF0lB,GAGFA,EAGT,QAASxM,KACP,GAAIwM,GAAQ+H,EAAWV,EAAqBnB,EAAcnB,kBAM1D,OAJA/E,GAAM0G,KAAO,WACX,MAAOA,GAAK1G,EAAOxM,MAGd+U,EAAUvI,GAGnB,QAASthB,KAGP,QAASshB,GAAMzlB,GACb,OAAQA,EAHV,GAAI+E,IAAU,EAAG,EAgBjB,OAVA0gB,GAAMqI,OAASrI,EAEfA,EAAM1gB,OAAS0gB,EAAMrhB,MAAQ,SAAUsB,GACrC,MAAOrB,WAAUhF,QAAU0F,EAASgpB,EAAM3uB,KAAKsG,EAAGxC,GAASuiB,GAAS1gB,EAAOf,SAG7EyhB,EAAM0G,KAAO,WACX,MAAOhoB,KAAWY,OAAOA,IAGpBipB,EAAUvI,GAsBnB,QAASuH,GAAcpuB,EAAGuB,GACxB,OAAQA,EAAIM,KAAKI,IAAIV,EAAIvB,IAAM,SAAUoB,GACvC,MAAOS,MAAKI,IAAIb,EAAIpB,GAAKuB,GACvB+D,EAAS/D,GAGf,QAAS+sB,GAActuB,EAAGuB,GACxB,MAAOvB,GAAI,EAAI,SAAUN,GACvB,OAAQmC,KAAKO,KAAKb,EAAG7B,GAAKmC,KAAKO,KAAKpC,EAAG,EAAIN,IACzC,SAAUA,GACZ,MAAOmC,MAAKO,IAAIb,EAAG7B,GAAKmC,KAAKO,IAAIpC,EAAG,EAAIN,IAI5C,QAAS6vB,GAAMnuB,GACb,MAAOyE,UAASzE,KAAO,KAAOA,GAAKA,EAAI,EAAI,EAAIA,EAGjD,QAASouB,GAAKC,GACZ,MAAgB,MAATA,EAAcF,EAAQE,IAAS5tB,KAAK8N,EAAI9N,KAAKqlB,IAAM,SAAU9lB,GAClE,MAAOS,MAAKO,IAAIqtB,EAAMruB,IAI1B,QAASsuB,GAAKD,GACZ,MAAOA,KAAS5tB,KAAK8N,EAAI9N,KAAKI,IAAe,KAATwtB,GAAe5tB,KAAK8tB,OAAkB,IAATF,GAAc5tB,KAAK+tB,OAASH,EAAO5tB,KAAKI,IAAIwtB,GAAO,SAAUruB,GAC5H,MAAOS,MAAKI,IAAIb,GAAKquB,IAIzB,QAASI,GAAQ1vB,GACf,MAAO,UAAUiB,GACf,OAAQjB,GAAGiB,IAIf,QAASa,KAOP,QAASwrB,KAGP,MAFAqC,GAAOJ,EAAKD,GAAOM,EAAOP,EAAKC,GAC3BtpB,IAAS,GAAK,IAAG2pB,EAAOD,EAAQC,GAAOC,EAAOF,EAAQE,IACnDlJ,EATT,GAAIA,GAAQ+H,EAAWR,EAAeE,GAAenoB,QAAQ,EAAG,KAC5DA,EAAS0gB,EAAM1gB,OACfspB,EAAO,GACPK,EAAOJ,EAAK,IACZK,EAAOP,EAAK,GAoFhB,OA5EA3I,GAAM4I,KAAO,SAAU3oB,GACrB,MAAOrB,WAAUhF,QAAUgvB,GAAQ3oB,EAAG2mB,KAAagC,GAGrD5I,EAAM1gB,OAAS,SAAUW,GACvB,MAAOrB,WAAUhF,QAAU0F,EAAOW,GAAI2mB,KAAatnB,KAGrD0gB,EAAMlhB,MAAQ,SAAUhE,GACtB,GAGI/B,GAHAuB,EAAIgF,IACJpG,EAAIoB,EAAE,GACN6D,EAAI7D,EAAEA,EAAEV,OAAS,IAGjBb,EAAIoF,EAAIjF,KAAGG,EAAIH,EAAGA,EAAIiF,EAAGA,EAAI9E,EAEjC,IAEIuD,GACAwH,EACAvL,EAJAQ,EAAI4vB,EAAK/vB,GACT2H,EAAIooB,EAAK9qB,GAITrF,EAAa,MAATgC,EAAgB,IAAMA,EAC1B6M,IAEJ,MAAMihB,EAAO,IAAM/nB,EAAIxH,EAAIP,GAEzB,GADAO,EAAI2B,KAAKgY,MAAM3Z,GAAK,EAAGwH,EAAI7F,KAAKgY,MAAMnS,GAAK,EACvC3H,EAAI,GAAG,KAAOG,EAAIwH,IAAKxH,EACzB,IAAK+K,EAAI,EAAGxH,EAAIssB,EAAK7vB,GAAI+K,EAAIwkB,IAAQxkB,EAEnC,GADAvL,EAAI+D,EAAIwH,IACJvL,EAAIK,GAAR,CACA,GAAIL,EAAIsF,EAAG,KACXwJ,GAAE3H,KAAKnH,QAEJ,MAAOQ,EAAIwH,IAAKxH,EACrB,IAAK+K,EAAIwkB,EAAO,EAAGhsB,EAAIssB,EAAK7vB,GAAI+K,GAAK,IAAKA,EAExC,GADAvL,EAAI+D,EAAIwH,IACJvL,EAAIK,GAAR,CACA,GAAIL,EAAIsF,EAAG,KACXwJ,GAAE3H,KAAKnH,QAIX8O,GAAIqe,EAAQlnB,MAAMzF,EAAGwH,EAAG7F,KAAKsD,IAAIuC,EAAIxH,EAAGP,IAAI0F,IAAI0qB,EAGlD,OAAOnwB,GAAI4O,EAAE5I,UAAY4I,GAG3BqY,EAAMwI,WAAa,SAAU1tB,EAAOge,GAGlC,GAFiB,MAAbA,IAAmBA,EAAqB,KAAT8P,EAAc,MAAQ,KAChC,kBAAd9P,KAA0BA,EAAYqN,EAASlhB,OAAO6T,IAC7Dhe,IAAUshB,EAAAA,EAAU,MAAOtD,EAClB,OAAThe,IAAeA,EAAQ,GAC3B,IAAIsJ,GAAIpJ,KAAKC,IAAI,EAAG2tB,EAAO9tB,EAAQklB,EAAMlhB,QAAQlF,OACjD,OAAO,UAAUU,GACf,GAAIjB,GAAIiB,EAAI4uB,EAAKluB,KAAKgY,MAAMiW,EAAK3uB,IAEjC,OADIjB,GAAIuvB,EAAOA,EAAO,KAAKvvB,GAAKuvB,GACzBvvB,GAAK+K,EAAI0U,EAAUxe,GAAK,KAInC0lB,EAAMyI,KAAO,WACX,MAAOnpB,GAAOmpB,EAAKnpB,KACjBnE,MAAO,SAAeZ,GACpB,MAAO2uB,GAAKluB,KAAKG,MAAM8tB,EAAK1uB,MAE9BsE,KAAM,SAActE,GAClB,MAAO2uB,GAAKluB,KAAK6D,KAAKoqB,EAAK1uB,UAKjCylB,EAAM0G,KAAO,WACX,MAAOA,GAAK1G,EAAO5kB,IAAMwtB,KAAKA,KAGzB5I,EAGT,QAASmJ,GAAM5uB,EAAGgb,GAChB,MAAOhb,GAAI,GAAKS,KAAKO,KAAKhB,EAAGgb,GAAYva,KAAKO,IAAIhB,EAAGgb,GAGvD,QAASha,KAKP,QAASgsB,GAAcpuB,EAAGuB,GACxB,OAAQA,EAAIyuB,EAAMzuB,EAAG6a,IAAapc,EAAIgwB,EAAMhwB,EAAGoc,KAAc,SAAUhb,GACrE,OAAQ4uB,EAAM5uB,EAAGgb,GAAYpc,GAAKuB,GAChC+D,EAAS/D,GAGf,QAAS+sB,GAActuB,EAAGuB,GAExB,MADAA,GAAIyuB,EAAMzuB,EAAG6a,IAAapc,EAAIgwB,EAAMhwB,EAAGoc,IAChC,SAAU1c,GACf,MAAOswB,GAAMhwB,EAAIuB,EAAI7B,EAAG,EAAI0c,IAbhC,GAAIA,GAAW,EACXyK,EAAQ+H,EAAWR,EAAeE,GAClCnoB,EAAS0gB,EAAM1gB,MAuBnB,OARA0gB,GAAMzK,SAAW,SAAUtV,GACzB,MAAOrB,WAAUhF,QAAU2b,GAAYtV,EAAGX,EAAOA,MAAaiW,GAGhEyK,EAAM0G,KAAO,WACX,MAAOA,GAAK1G,EAAOzkB,IAAMga,SAASA,KAG7BgT,EAAUvI,GAGnB,QAAS5hB,KACP,MAAO7C,KAAMga,SAAS,IAGxB,QAAS6T,KAKP,QAASxC,KACP,GAAIvtB,GAAI,EACJP,EAAIkC,KAAKC,IAAI,EAAGsrB,EAAS3sB,OAE7B,KADAsG,EAAa,GAAIrD,OAAM/D,EAAI,KAClBO,EAAIP,GACXoH,EAAW7G,EAAI,GAAK2sB,EAAQ7lB,SAASb,EAAQjG,EAAIP,EAClD,OAAOknB,GAGV,QAASA,GAAMzlB,GACb,IAAK0D,MAAM1D,GAAKA,GAAI,MAAOgsB,GAASP,EAAQtkB,OAAOxB,EAAY3F,IAdjE,GAAI+E,MACAinB,KACArmB,IAyCJ,OA1BA8f,GAAMqJ,aAAe,SAAU5hB,GAC7B,GAAIpO,GAAIktB,EAASpM,QAAQ1S,EACzB,OAAOpO,GAAI,GAAK0C,IAAKA,MAAQ1C,EAAI,EAAI6G,EAAW7G,EAAI,GAAKiG,EAAO,GAAIjG,EAAI6G,EAAWtG,OAASsG,EAAW7G,GAAKiG,EAAOA,EAAO1F,OAAS,KAGrIomB,EAAM1gB,OAAS,SAAUW,GACvB,IAAKrB,UAAUhF,OAAQ,MAAO0F,GAAOf,OACrCe,KACA,KAAK,GAAyBhF,GAArBjB,EAAI,EAAGP,EAAImH,EAAErG,OAAWP,EAAIP,IAAKO,EACpCiB,EAAI2F,EAAE5G,GAAS,MAALiB,GAAc2D,MAAM3D,GAAKA,IAAIgF,EAAOU,KAAK1F,EAEzD,OADCgF,GAAOgB,KAAK0lB,EAAQxrB,WACdosB,KAGT5G,EAAMrhB,MAAQ,SAAUsB,GACtB,MAAOrB,WAAUhF,QAAU2sB,EAAWhoB,EAAM5E,KAAKsG,GAAI2mB,KAAaL,EAAShoB,SAG7EyhB,EAAMsJ,UAAY,WAChB,MAAOppB,GAAW3B,SAGpByhB,EAAM0G,KAAO,WACX,MAAO0C,KAAa9pB,OAAOA,GAAQX,MAAM4nB,IAGpCvG,EAGT,QAASuE,KAOP,QAASvE,GAAMzlB,GACb,GAAIA,GAAKA,EAAG,MAAOgsB,GAASP,EAAQtkB,OAAOpC,EAAQ/E,EAAG,EAAGzB,IAG3D,QAAS8tB,KACP,GAAIvtB,KAEJ,KADAiG,EAAS,GAAIzC,OAAM/D,KACVO,EAAIP,GACXwG,EAAOjG,KAAOA,EAAI,GAAKmG,GAAMnG,EAAIP,GAAKyG,IAAOzG,EAAI,EAClD,OAAOknB,GAfV,GAAIzgB,GAAK,EACLC,EAAK,EACL1G,EAAI,EACJwG,GAAU,IACVinB,GAAY,EAAG,EA+BnB,OAjBAvG,GAAM1gB,OAAS,SAAUW,GACvB,MAAOrB,WAAUhF,QAAU2F,GAAMU,EAAE,GAAIT,GAAMS,EAAE,GAAI2mB,MAAcrnB,EAAIC,IAGvEwgB,EAAMrhB,MAAQ,SAAUsB,GACtB,MAAOrB,WAAUhF,QAAUd,GAAKytB,EAAWhoB,EAAM5E,KAAKsG,IAAIrG,OAAS,EAAGgtB,KAAaL,EAAShoB,SAG9FyhB,EAAMqJ,aAAe,SAAU5hB,GAC7B,GAAIpO,GAAIktB,EAASpM,QAAQ1S,EACzB,OAAOpO,GAAI,GAAK0C,IAAKA,KAAO1C,EAAI,GAAKkG,EAAID,EAAO,IAAMjG,GAAKP,GAAKwG,EAAOxG,EAAI,GAAI0G,IAAOF,EAAOjG,EAAI,GAAIiG,EAAOjG,KAG9G2mB,EAAM0G,KAAO,WACX,MAAOnC,KAAWjlB,QAAQC,EAAIC,IAAKb,MAAM4nB,IAGpCgC,EAAUvI,GAGnB,QAAStgB,KAKP,QAASsgB,GAAMzlB,GACb,GAAIA,GAAKA,EAAG,MAAOgsB,GAASP,EAAQtkB,OAAOpC,EAAQ/E,EAAG,EAAGzB,IAL3D,GAAIwG,IAAU,IACVinB,GAAY,EAAG,GACfztB,EAAI,CAuBR,OAjBAknB,GAAM1gB,OAAS,SAAUW,GACvB,MAAOrB,WAAUhF,QAAU0F,EAASf,EAAM5E,KAAKsG,GAAInH,EAAIkC,KAAKsD,IAAIgB,EAAO1F,OAAQ2sB,EAAS3sB,OAAS,GAAIomB,GAAS1gB,EAAOf,SAGvHyhB,EAAMrhB,MAAQ,SAAUsB,GACtB,MAAOrB,WAAUhF,QAAU2sB,EAAWhoB,EAAM5E,KAAKsG,GAAInH,EAAIkC,KAAKsD,IAAIgB,EAAO1F,OAAQ2sB,EAAS3sB,OAAS,GAAIomB,GAASuG,EAAShoB,SAG3HyhB,EAAMqJ,aAAe,SAAU5hB,GAC7B,GAAIpO,GAAIktB,EAASpM,QAAQ1S,EACzB,QAAQnI,EAAOjG,EAAI,GAAIiG,EAAOjG,KAGhC2mB,EAAM0G,KAAO,WACX,MAAOhnB,KAAYJ,OAAOA,GAAQX,MAAM4nB,IAGnCvG,EAWT,QAASwB,GAAK3oB,GACZ,MAAO,IAAI4oB,MAAK5oB,GAGlB,QAAS0wB,GAAS1wB,GAChB,MAAOA,aAAa4oB,OAAQ5oB,GAAK,GAAI4oB,QAAM5oB,IAG7C,QAAS2wB,GAASC,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQC,EAAQC,EAAaC,GAgB3E,QAASzB,GAAWhH,GAClB,OAAQuI,EAAOvI,GAAQA,EAAO0I,EAAoBJ,EAAOtI,GAAQA,EAAO2I,EAAeN,EAAKrI,GAAQA,EAAO4I,EAAeR,EAAIpI,GAAQA,EAAO6I,EAAaX,EAAMlI,GAAQA,EAAOmI,EAAKnI,GAAQA,EAAO8I,EAAYC,EAAad,EAAKjI,GAAQA,EAAOgJ,EAAcC,GAAYjJ,GAG5Q,QAASkJ,GAAaC,EAAU/vB,EAAOC,EAAME,GAM3C,GALgB,MAAZ4vB,IAAkBA,EAAW,IAKT,gBAAbA,GAAuB,CAChC,GAAI9C,GAAS7sB,KAAKa,IAAIhB,EAAOD,GAAS+vB,EAClCtxB,EAAI2sB,EAAQhqB,SAAS,SAAU3C,GACjC,MAAOA,GAAE,KACRiD,MAAMsuB,EAAe/C,EACpBxuB,KAAMuxB,EAAchxB,QACtBmB,EAAOirB,EAAQrqB,SAASf,EAAQiwB,GAAchwB,EAAOgwB,GAAcF,GACnEA,EAAWlB,GACFpwB,GACTA,EAAIuxB,EAAc/C,EAAS+C,EAAcvxB,EAAI,GAAG,GAAKuxB,EAAcvxB,GAAG,GAAKwuB,EAASxuB,EAAI,EAAIA,GAC5F0B,EAAO1B,EAAE,GACTsxB,EAAWtxB,EAAE,KAEb0B,EAAOirB,EAAQrqB,SAASf,EAAOC,EAAM8vB,GACrCA,EAAWX,GAIf,MAAe,OAARjvB,EAAe4vB,EAAWA,EAASG,MAAM/vB,GA3ClD,GAAIilB,GAAQ+H,EAAWV,EAAqBnB,EAAcnB,mBACtDsD,EAASrI,EAAMqI,OACf/oB,EAAS0gB,EAAM1gB,OAEf4qB,EAAoBD,EAAU,OAC9BE,EAAeF,EAAU,OACzBG,EAAeH,EAAU,SACzBI,EAAaJ,EAAU,SACvBK,EAAYL,EAAU,SACtBM,EAAaN,EAAU,SACvBO,EAAcP,EAAU,MACxBQ,EAAaR,EAAU,MAEvBW,IAAkBb,EAAQ,EAAGgB,IAAkBhB,EAAQ,EAAG,EAAIgB,IAAkBhB,EAAQ,GAAI,GAAKgB,IAAkBhB,EAAQ,GAAI,GAAKgB,IAAkBjB,EAAQ,EAAGkB,IAAkBlB,EAAQ,EAAG,EAAIkB,IAAkBlB,EAAQ,GAAI,GAAKkB,IAAkBlB,EAAQ,GAAI,GAAKkB,IAAkBnB,EAAM,EAAGoB,IAAgBpB,EAAM,EAAG,EAAIoB,IAAgBpB,EAAM,EAAG,EAAIoB,IAAgBpB,EAAM,GAAI,GAAKoB,IAAgBrB,EAAK,EAAGsB,IAAetB,EAAK,EAAG,EAAIsB,IAAevB,EAAM,EAAGwB,IAAgBzB,EAAO,EAAG0B,KAAiB1B,EAAO,EAAG,EAAI0B,KAAiB3B,EAAM,EAAGoB,IAkE9hB,OAjCA7K,GAAMqI,OAAS,SAAU5gB,GACvB,MAAO,IAAIga,MAAK4G,EAAO5gB,KAGzBuY,EAAM1gB,OAAS,SAAUW,GACvB,MAAOrB,WAAUhF,OAAS0F,EAAOgpB,EAAM3uB,KAAKsG,EAAGspB,IAAajqB,IAASd,IAAIgjB,IAG3ExB,EAAMlhB,MAAQ,SAAU6rB,EAAU5vB,GAChC,GAIIlC,GAJAyB,EAAIgF,IACJ0I,EAAK1N,EAAE,GACP4N,EAAK5N,EAAEA,EAAEV,OAAS,GAClBb,EAAImP,EAAKF,CAKb,OAHIjP,KAAGF,EAAImP,EAAIA,EAAKE,EAAIA,EAAKrP,GAC7BA,EAAI6xB,EAAaC,EAAU3iB,EAAIE,EAAInN,GACnClC,EAAIA,EAAIA,EAAE8F,MAAMqJ,EAAIE,EAAK,MAClBnP,EAAIF,EAAEkG,UAAYlG,GAG3BmnB,EAAMwI,WAAa,SAAU1tB,EAAOge,GAClC,MAAoB,OAAbA,EAAoB0P,EAAayB,EAAUnR,IAGpDkH,EAAMyI,KAAO,SAAUkC,EAAU5vB,GAC/B,GAAIT,GAAIgF,GACR,QAAQqrB,EAAWD,EAAaC,EAAUrwB,EAAE,GAAIA,EAAEA,EAAEV,OAAS,GAAImB,IAASuE,EAAOmpB,EAAKnuB,EAAGqwB,IAAa3K,GAGxGA,EAAM0G,KAAO,WACX,MAAOA,GAAK1G,EAAOwJ,EAASC,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQC,EAAQC,EAAaC,KAGlFjK,EA0CT,QAASqL,GAAK9E,GACZ,GAAIztB,GAAIytB,EAAS3sB,MACjB,OAAO,UAAUf,GACf,MAAO0tB,GAASvrB,KAAKC,IAAI,EAAGD,KAAKsD,IAAIxF,EAAI,EAAGkC,KAAKG,MAAMtC,EAAIC,OAY/D,QAASwyB,GAAW9G,GAKlB,QAASxE,GAAMzlB,GACb,GAAI1B,IAAK0B,EAAIgF,IAAOC,EAAKD,EACzB,OAAOilB,GAAasD,EAAQ9sB,KAAKC,IAAI,EAAGD,KAAKsD,IAAI,EAAGzF,IAAMA,GAN5D,GAAI0G,GAAK,EACLC,EAAK,EACLsoB,GAAQ,CAuBZ,OAhBA9H,GAAM1gB,OAAS,SAAUW,GACvB,MAAOrB,WAAUhF,QAAU2F,GAAMU,EAAE,GAAIT,GAAMS,EAAE,GAAI+f,IAAUzgB,EAAIC,IAGnEwgB,EAAM8H,MAAQ,SAAU7nB,GACtB,MAAOrB,WAAUhF,QAAUkuB,IAAU7nB,EAAG+f,GAAS8H,GAGnD9H,EAAMwE,aAAe,SAAUvkB,GAC7B,MAAOrB,WAAUhF,QAAU4qB,EAAevkB,EAAG+f,GAASwE,GAGxDxE,EAAM0G,KAAO,WACX,MAAO4E,GAAW9G,GAAcllB,QAAQC,EAAIC,IAAKsoB,MAAMA,IAGlDS,EAAUvI,GA/1BnB,GAAIrjB,GAAQE,MAAMlE,UAEd2vB,EAAQ3rB,EAAM6B,IACdD,EAAQ5B,EAAM4B,MAEdkoB,GAAa8E,KAAM,YA6InB9sB,EAAW,SAAkBlE,GAC/B,MAAO,YACL,MAAOA,KAIPkD,EAAS,SAAgBlD,GAC3B,OAAQA,GAGN6tB,GAAQ,EAAG,GAgHXI,EAAa,SAAoBlpB,EAAQxE,EAAOge,GAClD,GAGIW,GAHA7e,EAAQ0E,EAAO,GACfzE,EAAOyE,EAAOA,EAAO1F,OAAS,GAC9BmB,EAAOirB,EAAQrqB,SAASf,EAAOC,EAAe,MAATC,EAAgB,GAAKA,EAG9D,QADAge,EAAYqN,EAAStN,gBAA6B,MAAbC,EAAoB,KAAOA,GACxDA,EAAUY,MAChB,IAAK,IAED,GAAI9b,GAAQ5C,KAAKC,IAAID,KAAKa,IAAIjB,GAAQI,KAAKa,IAAIhB,GAE/C,OAD2B,OAAvBie,EAAUW,WAAsBxb,MAAMwb,EAAY0M,EAASzJ,gBAAgB3hB,EAAM6C,MAASkb,EAAUW,UAAYA,GAC7G0M,EAASpM,aAAajB,EAAWlb,EAE5C,KAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAE0B,MAAvBkb,EAAUW,WAAsBxb,MAAMwb,EAAY0M,EAASxJ,eAAe5hB,EAAMC,KAAKC,IAAID,KAAKa,IAAIjB,GAAQI,KAAKa,IAAIhB,QAAUie,EAAUW,UAAYA,GAAgC,MAAnBX,EAAUY,MAC9K,MAEJ,KAAK,IACL,IAAK,IAE0B,MAAvBZ,EAAUW,WAAsBxb,MAAMwb,EAAY0M,EAAS1J,eAAe1hB,MAAQ+d,EAAUW,UAAYA,EAAuC,GAAP,MAAnBX,EAAUY,OAIzI,MAAOyM,GAASlhB,OAAO6T,IAwFrB2P,EAAO,SAAcnpB,EAAQqrB,GAC/BrrB,EAASA,EAAOf,OAEhB,IAII1F,GAJAqE,EAAK,EACLC,EAAKmC,EAAO1F,OAAS,EACrB2F,EAAKD,EAAOpC,GACZsC,EAAKF,EAAOnC,EAUhB,OAPIqC,GAAKD,IACP1G,EAAIqE,EAAIA,EAAKC,EAAIA,EAAKtE,EACtBA,EAAI0G,EAAIA,EAAKC,EAAIA,EAAK3G,GAGxByG,EAAOpC,GAAMytB,EAASxvB,MAAMoE,GAC5BD,EAAOnC,GAAMwtB,EAAS9rB,KAAKW,GACpBF,GA2RLyrB,EAAiB,IACjBC,EAAkC,GAAjBD,EACjBE,EAAgC,GAAjBD,EACfE,EAA6B,GAAfD,EACdE,EAA6B,EAAdD,EACfE,GAA8B,GAAdF,EAChBL,GAA6B,IAAdK,EA6FfM,GAAO,WACT,MAAOhC,GAASpD,EAAOqF,SAAUrF,EAAOsF,UAAWtF,EAAOuF,SAAUvF,EAAOwF,QAASxF,EAAOyF,SAAUzF,EAAO0F,WAAY1F,EAAO2F,WAAY3F,EAAO4F,gBAAiB3F,EAAa4F,YAAY3sB,QAAQ,GAAImiB,MAAK,IAAM,EAAG,GAAI,GAAIA,MAAK,IAAM,EAAG,MAG1OyK,GAAU,WACZ,MAAO1C,GAASpD,EAAO+F,QAAS/F,EAAOgG,SAAUhG,EAAOiG,QAASjG,EAAOkG,OAAQlG,EAAOmG,QAASnG,EAAOoG,UAAWpG,EAAOqG,UAAWrG,EAAOsG,eAAgBrG,EAAasG,WAAWrtB,QAAQmiB,KAAKmL,IAAI,IAAM,EAAG,GAAInL,KAAKmL,IAAI,IAAM,EAAG,MAGjOlP,GAAS,SAAgB1kB,GAC3B,MAAOA,GAAEggB,MAAM,SAASxa,IAAI,SAAUjE,GACpC,MAAO,IAAMA,KAIbsyB,GAAanP,GAAO,gEAEpBoP,GAAcpP,GAAO,4HAErBqP,GAAcrP,GAAO,4HAErBsP,GAAatP,GAAO,4HAEpBkD,GAAcsF,EAAcL,yBAAyB/I,EAAQ7T,UAAU,IAAK,GAAK,GAAM6T,EAAQ7T,eAAgB,GAAK,IAEpHgkB,GAAO/G,EAAcL,yBAAyB/I,EAAQ7T,eAAgB,IAAM,KAAO6T,EAAQ7T,UAAU,GAAI,IAAM,KAE/GikB,GAAOhH,EAAcL,yBAAyB/I,EAAQ7T,UAAU,IAAK,IAAM,KAAO6T,EAAQ7T,UAAU,GAAI,IAAM,KAE9GkkB,GAAUrQ,EAAQ7T,YAElBmkB,GAAY,SAAmBv0B,IAC7BA,EAAI,GAAKA,EAAI,KAAGA,GAAKmC,KAAKG,MAAMtC,GACpC,IAAIw0B,GAAKryB,KAAKa,IAAIhD,EAAI,GAItB,OAHAs0B,IAAQ3mB,EAAI,IAAM3N,EAAI,IACtBs0B,GAAQn0B,EAAI,IAAM,IAAMq0B,EACxBF,GAAQ1zB,EAAI,GAAM,GAAM4zB,EACjBF,GAAU,IAUfG,GAAUjC,EAAK3N,GAAO,qgDAEtB6P,GAAQlC,EAAK3N,GAAO,qgDAEpB8P,GAAUnC,EAAK3N,GAAO,qgDAEtB+P,GAASpC,EAAK3N,GAAO,ogDA+BzBhkB,GAAQg0B,UAAY/G,EACpBjtB,EAAQi0B,WAAavG,EACrB1tB,EAAQk0B,cAAgBlvB,EACxBhF,EAAQm0B,YAAcra,EACtB9Z,EAAQo0B,SAAW1yB,EACnB1B,EAAQq0B,aAAezH,EACvB5sB,EAAQs0B,cAAgBvH,EACxB/sB,EAAQu0B,SAAW1yB,EACnB7B,EAAQw0B,UAAY9vB,EACpB1E,EAAQy0B,cAAgB/E,EACxB1vB,EAAQ00B,cAAgB7J,EACxB7qB,EAAQ20B,eAAiB3uB,EACzBhG,EAAQ40B,UAAY9C,GACpB9xB,EAAQ60B,SAAWrC,GACnBxyB,EAAQ80B,iBAAmB3B,GAC3BnzB,EAAQ+0B,kBAAoB3B,GAC5BpzB,EAAQg1B,kBAAoB3B,GAC5BrzB,EAAQi1B,iBAAmB3B,GAC3BtzB,EAAQk1B,4BAA8BhO,GACtClnB,EAAQm1B,mBAAqBzB,GAC7B1zB,EAAQo1B,gBAAkB7B,GAC1BvzB,EAAQq1B,gBAAkB7B,GAC1BxzB,EAAQs1B,mBAAqB1B,GAC7B5zB,EAAQu1B,iBAAmB1B,GAC3B7zB,EAAQw1B,mBAAqB1B,GAC7B9zB,EAAQy1B,kBAAoB1B,GAC5B/zB,EAAQ01B,gBAAkB9D,EAE1BxpB,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,QAErDyxB,WAAY,EAAGC,gBAAiB,EAAGxJ,WAAY,EAAGyJ,YAAa,EAAGC,iBAAkB,EAAGC,UAAW,EAAGC,iBAAkB,IAAMC,GAAI,SAAUv2B,EAASU,EAAQJ,IAE/J,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,EAASN,EAAQ,YAAgC,kBAAXa,SAAyBA,OAAOC,IAAMD,QAAQ,UAAW,WAAYD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,OAAUJ,EAAOI,KAC3RC,KAAM,SAAUV,EAAS0sB,GAG1B,QAASwJ,GAAUt1B,GACjB,GAAI,GAAKA,EAAEmN,GAAKnN,EAAEmN,EAAI,IAAK,CACzB,GAAI+Z,GAAO,GAAIC,WAASnnB,EAAEwD,EAAGxD,EAAEA,EAAGA,EAAEu1B,EAAGv1B,EAAEw1B,EAAGx1B,EAAE4oB,EAAG5oB,EAAEy1B,EAEnD,OADAvO,GAAKwO,YAAY11B,EAAEmN,GACZ+Z,EAET,MAAO,IAAIC,MAAKnnB,EAAEmN,EAAGnN,EAAEwD,EAAGxD,EAAEA,EAAGA,EAAEu1B,EAAGv1B,EAAEw1B,EAAGx1B,EAAE4oB,EAAG5oB,EAAEy1B,GAGlD,QAASE,GAAQ31B,GACf,GAAI,GAAKA,EAAEmN,GAAKnN,EAAEmN,EAAI,IAAK,CACzB,GAAI+Z,GAAO,GAAIC,MAAKA,KAAKmL,OAAQtyB,EAAEwD,EAAGxD,EAAEA,EAAGA,EAAEu1B,EAAGv1B,EAAEw1B,EAAGx1B,EAAE4oB,EAAG5oB,EAAEy1B,GAE5D,OADAvO,GAAK0O,eAAe51B,EAAEmN,GACf+Z,EAET,MAAO,IAAIC,MAAKA,KAAKmL,IAAItyB,EAAEmN,EAAGnN,EAAEwD,EAAGxD,EAAEA,EAAGA,EAAEu1B,EAAGv1B,EAAEw1B,EAAGx1B,EAAE4oB,EAAG5oB,EAAEy1B,IAG3D,QAASI,GAAQ1oB,GACf,OAASA,EAAGA,EAAG3J,EAAG,EAAGxD,EAAG,EAAGu1B,EAAG,EAAGC,EAAG,EAAG5M,EAAG,EAAG6M,EAAG,GAGlD,QAASjW,GAAaD,GA6HpB,QAAS6B,GAAU5C,EAAWsX,GAC5B,MAAO,UAAU5O,GACf,GAIIpa,GACAipB,EACAprB,EANA6c,KACAzoB,KACAwH,EAAI,EACJ/H,EAAIggB,EAAUlf,MAOlB,KAFM4nB,YAAgBC,QAAOD,EAAO,GAAIC,QAAMD,OAErCnoB,EAAIP,GACqB,KAA5BggB,EAAUmD,WAAW5iB,KACvByoB,EAAO9hB,KAAK8Y,EAAUva,MAAMsC,EAAGxH,IACgB,OAA1Cg3B,EAAMC,GAAKlpB,EAAI0R,EAAUyX,SAASl3B,KAAc+N,EAAI0R,EAAUyX,SAASl3B,GAAQg3B,EAAY,MAANjpB,EAAY,IAAM,KACxGnC,EAASmrB,EAAQhpB,MAAIA,EAAInC,EAAOuc,EAAM6O,IAC1CvO,EAAO9hB,KAAKoH,GACZvG,EAAIxH,EAAI,EAKZ,OADAyoB,GAAO9hB,KAAK8Y,EAAUva,MAAMsC,EAAGxH,IACxByoB,EAAOrH,KAAK,KAIvB,QAAS+V,GAAS1X,EAAW2X,GAC3B,MAAO,UAAU3O,GACf,GAEI6H,GACAC,EAHAtvB,EAAI61B,EAAQ,MACZ92B,EAAIq3B,EAAep2B,EAAGwe,EAAWgJ,GAAU,GAAI,EAGnD,IAAIzoB,GAAKyoB,EAAOloB,OAAQ,MAAO,KAG/B,IAAI,KAAOU,GAAG,MAAO,IAAImnB,MAAKnnB,EAAEq2B,EAMhC,IAHI,KAAOr2B,KAAGA,EAAEu1B,EAAIv1B,EAAEu1B,EAAI,GAAW,GAANv1B,EAAEsC,GAG7B,KAAOtC,GAAG,CACZ,GAAIA,EAAEs2B,EAAI,GAAKt2B,EAAEs2B,EAAI,GAAI,MAAO,KAC1B,MAAOt2B,KAAIA,EAAEu2B,EAAI,GACnB,KAAOv2B,IACTqvB,EAAOsG,EAAQE,EAAQ71B,EAAEmN,IAAKmiB,EAAMD,EAAKmH,YACzCnH,EAAOC,EAAM,GAAa,IAARA,EAAYxD,EAAO2K,UAAUlyB,KAAK8qB,GAAQvD,EAAO2K,UAAUpH,GAC7EA,EAAOvD,EAAOkG,OAAO0E,OAAOrH,EAAkB,GAAXrvB,EAAEs2B,EAAI,IACzCt2B,EAAEmN,EAAIkiB,EAAKsH,iBACX32B,EAAEwD,EAAI6rB,EAAKuH,cACX52B,EAAEA,EAAIqvB,EAAKwH,cAAgB72B,EAAEu2B,EAAI,GAAK,IAEtClH,EAAO8G,EAAQN,EAAQ71B,EAAEmN,IAAKmiB,EAAMD,EAAKyH,SACzCzH,EAAOC,EAAM,GAAa,IAARA,EAAYxD,EAAOiL,WAAWxyB,KAAK8qB,GAAQvD,EAAOiL,WAAW1H,GAC/EA,EAAOvD,EAAOwF,QAAQoF,OAAOrH,EAAkB,GAAXrvB,EAAEs2B,EAAI,IAC1Ct2B,EAAEmN,EAAIkiB,EAAK2H,cACXh3B,EAAEwD,EAAI6rB,EAAK4H,WACXj3B,EAAEA,EAAIqvB,EAAK6H,WAAal3B,EAAEu2B,EAAI,GAAK,QAE5B,KAAOv2B,IAAK,KAAOA,MACtB,KAAOA,KAAIA,EAAEu2B,EAAI,KAAOv2B,GAAIA,EAAEpB,EAAI,EAAI,KAAOoB,GAAI,EAAI,GAC3DsvB,EAAM,KAAOtvB,GAAI21B,EAAQE,EAAQ71B,EAAEmN,IAAIqpB,YAAcL,EAAQN,EAAQ71B,EAAEmN,IAAI2pB,SAC3E92B,EAAEwD,EAAI,EACNxD,EAAEA,EAAI,KAAOA,IAAKA,EAAEu2B,EAAI,GAAK,EAAU,EAANv2B,EAAEm3B,GAAS7H,EAAM,GAAK,EAAItvB,EAAEu2B,EAAU,EAANv2B,EAAEo3B,GAAS9H,EAAM,GAAK,EAKzF,OAAI,KAAOtvB,IACTA,EAAEu1B,GAAKv1B,EAAEq3B,EAAI,IAAM,EACnBr3B,EAAEw1B,GAAKx1B,EAAEq3B,EAAI,IACN1B,EAAQ31B,IAIVm2B,EAAQn2B,IAInB,QAASo2B,GAAep2B,EAAGwe,EAAWgJ,EAAQjhB,GAO5C,IANA,GAGIuG,GACAgY,EAJA/lB,EAAI,EACJP,EAAIggB,EAAUlf,OACdkE,EAAIgkB,EAAOloB,OAIRP,EAAIP,GAAG,CACZ,GAAI+H,GAAK/C,EAAG,QAEZ,IADAsJ,EAAI0R,EAAUmD,WAAW5iB,KACf,KAAN+N,GAGF,GAFAA,EAAI0R,EAAUyX,OAAOl3B,KACrB+lB,EAAQwS,GAAOxqB,IAAKkpB,IAAOxX,EAAUyX,OAAOl3B,KAAO+N,IAC9CgY,IAAUve,EAAIue,EAAM9kB,EAAGwnB,EAAQjhB,IAAM,EAAG,aACxC,IAAIuG,GAAK0a,EAAO7F,WAAWpb,KAChC,SAIJ,MAAOA,GAGT,QAASgxB,IAAYv3B,EAAGwnB,EAAQzoB,GAC9B,GAAIP,GAAIg5B,GAASzsB,KAAKyc,EAAOvjB,MAAMlF,GACnC,OAAOP,IAAKwB,EAAEsC,EAAIm1B,GAAaj5B,EAAE,GAAGqM,eAAgB9L,EAAIP,EAAE,GAAGc,WAG/D,QAASo4B,IAAkB13B,EAAGwnB,EAAQzoB,GACpC,GAAIP,GAAIm5B,GAAe5sB,KAAKyc,EAAOvjB,MAAMlF,GACzC,OAAOP,IAAKwB,EAAEu2B,EAAIqB,GAAmBp5B,EAAE,GAAGqM,eAAgB9L,EAAIP,EAAE,GAAGc,WAGrE,QAASu4B,IAAa73B,EAAGwnB,EAAQzoB,GAC/B,GAAIP,GAAIs5B,GAAU/sB,KAAKyc,EAAOvjB,MAAMlF,GACpC,OAAOP,IAAKwB,EAAEu2B,EAAIwB,GAAcv5B,EAAE,GAAGqM,eAAgB9L,EAAIP,EAAE,GAAGc,WAGhE,QAAS04B,IAAgBh4B,EAAGwnB,EAAQzoB,GAClC,GAAIP,GAAIy5B,GAAaltB,KAAKyc,EAAOvjB,MAAMlF,GACvC,OAAOP,IAAKwB,EAAEwD,EAAI00B,GAAiB15B,EAAE,GAAGqM,eAAgB9L,EAAIP,EAAE,GAAGc,WAGnE,QAAS64B,IAAWn4B,EAAGwnB,EAAQzoB,GAC7B,GAAIP,GAAI45B,GAAQrtB,KAAKyc,EAAOvjB,MAAMlF,GAClC,OAAOP,IAAKwB,EAAEwD,EAAI60B,GAAY75B,EAAE,GAAGqM,eAAgB9L,EAAIP,EAAE,GAAGc,WAG9D,QAASg5B,IAAoBt4B,EAAGwnB,EAAQzoB,GACtC,MAAOq3B,GAAep2B,EAAGu4B,GAAiB/Q,EAAQzoB,GAGpD,QAASy5B,IAAgBx4B,EAAGwnB,EAAQzoB,GAClC,MAAOq3B,GAAep2B,EAAGy4B,GAAajR,EAAQzoB,GAGhD,QAAS25B,IAAgB14B,EAAGwnB,EAAQzoB,GAClC,MAAOq3B,GAAep2B,EAAG24B,GAAanR,EAAQzoB,GAGhD,QAAS65B,IAAmB54B,GAC1B,MAAO64B,IAAqB74B,EAAE82B,UAGhC,QAASgC,IAAc94B,GACrB,MAAO+4B,IAAgB/4B,EAAE82B,UAG3B,QAASkC,IAAiBh5B,GACxB,MAAOi5B,IAAmBj5B,EAAEi3B,YAG9B,QAAS/G,IAAYlwB,GACnB,MAAOk5B,IAAcl5B,EAAEi3B,YAGzB,QAASkC,IAAan5B,GACpB,MAAOo5B,MAAiBp5B,EAAEq5B,YAAc,KAG1C,QAASC,IAAsBt5B,GAC7B,MAAO64B,IAAqB74B,EAAEw2B,aAGhC,QAAS+C,IAAiBv5B,GACxB,MAAO+4B,IAAgB/4B,EAAEw2B,aAG3B,QAASgD,IAAoBx5B,GAC3B,MAAOi5B,IAAmBj5B,EAAE42B,eAG9B,QAAS6C,IAAez5B,GACtB,MAAOk5B,IAAcl5B,EAAE42B,eAGzB,QAAS8C,IAAgB15B,GACvB,MAAOo5B,MAAiBp5B,EAAE25B,eAAiB,KA5S7C,GAAIpB,IAAkBhZ,EAAOqa,SACzBnB,GAAclZ,EAAO2H,KACrByR,GAAcpZ,EAAO2R,KACrBkI,GAAiB7Z,EAAOsa,QACxBd,GAAkBxZ,EAAOua,KACzBjB,GAAuBtZ,EAAOwa,UAC9Bb,GAAgB3Z,EAAOya,OACvBf,GAAqB1Z,EAAO0a,YAE5BzC,GAAW0C,EAASd,IACpB3B,GAAe0C,EAAaf,IAC5BtB,GAAYoC,EAASnB,IACrBhB,GAAgBoC,EAAapB,IAC7BpB,GAAiBuC,EAASrB,IAC1BjB,GAAqBuC,EAAatB,IAClCT,GAAU8B,EAAShB,IACnBb,GAAc8B,EAAajB,IAC3BjB,GAAeiC,EAASjB,IACxBf,GAAmBiC,EAAalB,IAEhCnD,IACFj3B,EAAK+5B,GACL/f,EAAKigB,GACL14B,EAAK44B,GACLlgB,EAAKoX,GACLpjB,EAAK,KACL9M,EAAKo6B,EACL97B,EAAK87B,EACLp7B,EAAKq7B,EACL9E,EAAK+E,EACLC,EAAKC,EACLj0B,EAAKk0B,EACLhF,EAAKiF,EACLl3B,EAAKm3B,EACLnF,EAAKoF,EACLt4B,EAAK62B,GACL9C,EAAKwE,GACLn8B,EAAKo8B,GACLlS,EAAKmS,EACLn8B,EAAKo8B,EACL5D,EAAK6D,EACL3E,EAAK4E,EACL3E,EAAK4E,EACLhE,EAAKiE,EACLn7B,EAAK,KACL+gB,EAAK,KACL7T,EAAKgjB,EACLkL,EAAKC,EACLjE,EAAKkE,EACL1a,IAAK2a,IAGHC,IACF58B,EAAKy6B,GACLzgB,EAAK0gB,GACLn5B,EAAKo5B,GACL1gB,EAAK2gB,GACL3sB,EAAK,KACL9M,EAAK07B,EACLp9B,EAAKo9B,EACL18B,EAAK28B,EACLpG,EAAKqG,EACLrB,EAAKsB,EACLt1B,EAAKu1B,EACLrG,EAAKsG,EACLv4B,EAAKw4B,EACLxG,EAAKyG,EACL35B,EAAKo3B,GACLrD,EAAKwE,GACLn8B,EAAKo8B,GACLlS,EAAKsT,GACLt9B,EAAKu9B,GACL/E,EAAKgF,GACL9F,EAAK+F,GACL9F,EAAK+F,GACLnF,EAAKoF,GACLt8B,EAAK,KACL+gB,EAAK,KACL7T,EAAKqvB,GACLnB,EAAKoB,GACLpF,EAAKqF,GACL7b,IAAK2a,IAGHlE,IACFz4B,EAAK64B,GACL7e,EAAKgf,GACLz3B,EAAK43B,GACLlf,EAAKqf,GACLrrB,EAAKwrB,GACLt4B,EAAK28B,EACLr+B,EAAKq+B,EACL39B,EAAK49B,EACLrH,EAAKsH,EACLtC,EAAKsC,EACLt2B,EAAKu2B,EACLrH,EAAKsH,EACLv5B,EAAKw5B,EACLxH,EAAKyH,EACL36B,EAAKi1B,GACLlB,EAAK6G,EACLx+B,EAAKy+B,EACLvU,EAAKwU,EACLx+B,EAAKy+B,EACLjG,EAAKkG,EACLhH,EAAKiH,EACLhH,EAAKiH,EACLrG,EAAKsG,EACLx9B,EAAKu4B,GACLxX,EAAK0X,GACLvrB,EAAKuwB,EACLrC,EAAKsC,EACLtG,EAAKuG,EACL/c,IAAKgd,EA8LP,OA1LA/H,IAAQ71B,EAAImhB,EAAUqX,GAAa3C,IACnCA,GAAQ9U,EAAII,EAAUuX,GAAa7C,IACnCA,GAAQhpB,EAAIsU,EAAUmX,GAAiBzC,IACvC2F,GAAWx7B,EAAImhB,EAAUqX,GAAagD,IACtCA,GAAWza,EAAII,EAAUuX,GAAa8C,IACtCA,GAAW3uB,EAAIsU,EAAUmX,GAAiBkD,KAsLxC9wB,OAAQ,SAAgB6T,GACtB,GAAIxf,GAAIoiB,EAAU5C,GAAa,GAAIsX,GAInC,OAHA92B,GAAEuZ,SAAW,WACX,MAAOiG,IAEFxf,GAET8lB,MAAO,SAAetG,GACpB,GAAIlc,GAAI4zB,EAAS1X,GAAa,GAAI8W,EAIlC,OAHAhzB,GAAEiW,SAAW,WACX,MAAOiG,IAEFlc,GAET+vB,UAAW,SAAmB7T,GAC5B,GAAIxf,GAAIoiB,EAAU5C,GAAa,GAAIid,GAInC,OAHAz8B,GAAEuZ,SAAW,WACX,MAAOiG,IAEFxf,GAET8+B,SAAU,SAAkBtf,GAC1B,GAAIlc,GAAI4zB,EAAS1X,EAAWmX,EAI5B,OAHArzB,GAAEiW,SAAW,WACX,MAAOiG,IAEFlc,IAUb,QAASyzB,GAAIzyB,EAAOsb,EAAMK,GACxB,GAAIH,GAAOxb,EAAQ,EAAI,IAAM,GACzBkkB,GAAU1I,GAAQxb,EAAQA,GAAS,GACnChE,EAASkoB,EAAOloB,MACpB,OAAOwf,IAAQxf,EAAS2f,EAAQ,GAAI1c,OAAM0c,EAAQ3f,EAAS,GAAG6gB,KAAKvB,GAAQ4I,EAASA,GAGtF,QAASuW,GAAQr/B,GACf,MAAOA,GAAE4hB,QAAQ0d,GAAW,QAG9B,QAAS9D,GAAS+D,GAChB,MAAO,IAAIhvB,QAAO,OAASgvB,EAAM/5B,IAAI65B,GAAS5d,KAAK,KAAO,IAAK,KAGjE,QAASga,GAAa8D,GAIpB,IAHA,GAAI/5B,MACAnF,KACAP,EAAIy/B,EAAM3+B,SACLP,EAAIP,GACX0F,EAAI+5B,EAAMl/B,GAAG8L,eAAiB9L,CAC/B,OAAOmF,GAGV,QAASs5B,GAAyBx9B,EAAGwnB,EAAQzoB,GAC3C,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEu2B,GAAK/3B,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAAS+9B,GAAyBr9B,EAAGwnB,EAAQzoB,GAC3C,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEpB,GAAKJ,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAASg+B,GAAsBt9B,EAAGwnB,EAAQzoB,GACxC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEo3B,GAAK54B,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAASi+B,GAAmBv9B,EAAGwnB,EAAQzoB,GACrC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEs2B,GAAK93B,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAASm+B,GAAsBz9B,EAAGwnB,EAAQzoB,GACxC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEm3B,GAAK34B,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAASq+B,GAAc39B,EAAGwnB,EAAQzoB,GAChC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEmN,GAAK3O,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAASo+B,GAAU19B,EAAGwnB,EAAQzoB,GAC5B,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEmN,GAAK3O,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAOO,EAAIP,EAAE,GAAGc,WAGjE,QAASs+B,GAAU59B,EAAGwnB,EAAQzoB,GAC5B,GAAIP,GAAI,+BAA+BuM,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAChE,OAAOP,IAAKwB,EAAEq3B,EAAI74B,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQO,EAAIP,EAAE,GAAGc,WAGlE,QAAS09B,GAAiBh9B,EAAGwnB,EAAQzoB,GACnC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEwD,EAAIhF,EAAE,GAAK,EAAGO,EAAIP,EAAE,GAAGc,WAGvC,QAASq9B,GAAgB38B,EAAGwnB,EAAQzoB,GAClC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEA,GAAKxB,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAASw9B,GAAe98B,EAAGwnB,EAAQzoB,GACjC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEwD,EAAI,EAAGxD,EAAEA,GAAKxB,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAG7C,QAASu9B,GAAY78B,EAAGwnB,EAAQzoB,GAC9B,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEu1B,GAAK/2B,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAAS29B,GAAaj9B,EAAGwnB,EAAQzoB,GAC/B,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEw1B,GAAKh3B,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAAS89B,GAAap9B,EAAGwnB,EAAQzoB,GAC/B,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAE4oB,GAAKpqB,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAASy9B,GAAkB/8B,EAAGwnB,EAAQzoB,GACpC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEy1B,GAAKj3B,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAASs9B,GAAkB58B,EAAGwnB,EAAQzoB,GACpC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC1C,OAAOP,IAAKwB,EAAEy1B,EAAI/0B,KAAKG,MAAMrC,EAAE,GAAK,KAAOO,EAAIP,EAAE,GAAGc,WAGtD,QAASu+B,GAAoB79B,EAAGwnB,EAAQzoB,GACtC,GAAIP,GAAI2/B,GAAUpzB,KAAKyc,EAAOvjB,MAAMlF,EAAGA,EAAI,GAC3C,OAAOP,GAAIO,EAAIP,EAAE,GAAGc,UAGtB,QAAS49B,GAAmBl9B,EAAGwnB,EAAQzoB,GACrC,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,GACnC,OAAOP,IAAKwB,EAAEq2B,GAAK73B,EAAE,GAAIO,EAAIP,EAAE,GAAGc,WAGpC,QAAS69B,GAA0Bn9B,EAAGwnB,EAAQzoB,GAC5C,GAAIP,GAAI0/B,GAASnzB,KAAKyc,EAAOvjB,MAAMlF,GACnC,OAAOP,IAAKwB,EAAEq2B,EAAY,KAAP73B,EAAE,GAAWO,EAAIP,EAAE,GAAGc,WAG3C,QAAS86B,GAAiBp6B,EAAGsC,GAC3B,MAAOyzB,GAAI/1B,EAAEk3B,UAAW50B,EAAG,GAG7B,QAASg4B,GAAat6B,EAAGsC,GACvB,MAAOyzB,GAAI/1B,EAAEq5B,WAAY/2B,EAAG,GAG9B,QAASk4B,GAAax6B,EAAGsC,GACvB,MAAOyzB,GAAI/1B,EAAEq5B,WAAa,IAAM,GAAI/2B,EAAG,GAGzC,QAASm4B,GAAgBz6B,EAAGsC,GAC1B,MAAOyzB,GAAI,EAAIjK,EAAOwF,QAAQ9wB,MAAMsrB,EAAOqF,SAASnxB,GAAIA,GAAIsC,EAAG,GAGjE,QAASo4B,GAAmB16B,EAAGsC,GAC7B,MAAOyzB,GAAI/1B,EAAEo+B,kBAAmB97B,EAAG,GAGrC,QAAS+3B,GAAmBr6B,EAAGsC,GAC7B,MAAOo4B,GAAmB16B,EAAGsC,GAAK,MAGpC,QAASq4B,GAAkB36B,EAAGsC,GAC5B,MAAOyzB,GAAI/1B,EAAEi3B,WAAa,EAAG30B,EAAG,GAGlC,QAASs4B,GAAc56B,EAAGsC,GACxB,MAAOyzB,GAAI/1B,EAAEq+B,aAAc/7B,EAAG,GAGhC,QAASy4B,GAAc/6B,EAAGsC,GACxB,MAAOyzB,GAAI/1B,EAAEs+B,aAAch8B,EAAG,GAGhC,QAAS04B,GAA0Bh7B,GACjC,GAAIsvB,GAAMtvB,EAAE82B,QACZ,OAAe,KAARxH,EAAY,EAAIA,EAGzB,QAAS2L,GAAuBj7B,EAAGsC,GACjC,MAAOyzB,GAAIjK,EAAOyS,WAAW/9B,MAAMsrB,EAAOqF,SAASnxB,GAAIA,GAAIsC,EAAG,GAGhE,QAAS44B,GAAoBl7B,EAAGsC,GAC9B,GAAIgtB,GAAMtvB,EAAE82B,QAEZ,OADA92B,GAAIsvB,GAAO,GAAa,IAARA,EAAYxD,EAAO0S,aAAax+B,GAAK8rB,EAAO0S,aAAaj6B,KAAKvE,GACvE+1B,EAAIjK,EAAO0S,aAAah+B,MAAMsrB,EAAOqF,SAASnxB,GAAIA,IAAsC,IAAhC8rB,EAAOqF,SAASnxB,GAAG82B,UAAiBx0B,EAAG,GAGxG,QAAS64B,GAA0Bn7B,GACjC,MAAOA,GAAE82B,SAGX,QAASsE,GAAuBp7B,EAAGsC,GACjC,MAAOyzB,GAAIjK,EAAOiL,WAAWv2B,MAAMsrB,EAAOqF,SAASnxB,GAAIA,GAAIsC,EAAG,GAGhE,QAAS6tB,GAAWnwB,EAAGsC,GACrB,MAAOyzB,GAAI/1B,EAAEg3B,cAAgB,IAAK10B,EAAG,GAGvC,QAASg5B,GAAet7B,EAAGsC,GACzB,MAAOyzB,GAAI/1B,EAAEg3B,cAAgB,IAAO10B,EAAG,GAGzC,QAASi5B,GAAWv7B,GAClB,GAAIqN,GAAIrN,EAAEy+B,mBACV,QAAQpxB,EAAI,EAAI,KAAOA,MAAS,MAAQ0oB,EAAI1oB,EAAI,GAAK,EAAG,IAAK,GAAK0oB,EAAI1oB,EAAI,GAAI,IAAK,GAGrF,QAASquB,GAAoB17B,EAAGsC,GAC9B,MAAOyzB,GAAI/1B,EAAE62B,aAAcv0B,EAAG,GAGhC,QAASs5B,GAAgB57B,EAAGsC,GAC1B,MAAOyzB,GAAI/1B,EAAE25B,cAAer3B,EAAG,GAGjC,QAASu5B,GAAgB77B,EAAGsC,GAC1B,MAAOyzB,GAAI/1B,EAAE25B,cAAgB,IAAM,GAAIr3B,EAAG,GAG5C,QAASw5B,GAAmB97B,EAAGsC,GAC7B,MAAOyzB,GAAI,EAAIjK,EAAOkG,OAAOxxB,MAAMsrB,EAAO+F,QAAQ7xB,GAAIA,GAAIsC,EAAG,GAG/D,QAASy5B,GAAsB/7B,EAAGsC,GAChC,MAAOyzB,GAAI/1B,EAAE0+B,qBAAsBp8B,EAAG,GAGxC,QAASq5B,GAAsB37B,EAAGsC,GAChC,MAAOy5B,GAAsB/7B,EAAGsC,GAAK,MAGvC,QAAS05B,GAAqBh8B,EAAGsC,GAC/B,MAAOyzB,GAAI/1B,EAAE42B,cAAgB,EAAGt0B,EAAG,GAGrC,QAAS25B,GAAiBj8B,EAAGsC,GAC3B,MAAOyzB,GAAI/1B,EAAE2+B,gBAAiBr8B,EAAG,GAGnC,QAAS45B,IAAiBl8B,EAAGsC,GAC3B,MAAOyzB,GAAI/1B,EAAE4+B,gBAAiBt8B,EAAG,GAGnC,QAAS65B,IAA6Bn8B,GACpC,GAAI6+B,GAAM7+B,EAAEw2B,WACZ,OAAe,KAARqI,EAAY,EAAIA,EAGzB,QAASzC,IAA0Bp8B,EAAGsC,GACpC,MAAOyzB,GAAIjK,EAAOgT,UAAUt+B,MAAMsrB,EAAO+F,QAAQ7xB,GAAIA,GAAIsC,EAAG,GAG9D,QAAS+5B,IAAuBr8B,EAAGsC,GACjC,GAAIgtB,GAAMtvB,EAAEw2B,WAEZ,OADAx2B,GAAIsvB,GAAO,GAAa,IAARA,EAAYxD,EAAOiT,YAAY/+B,GAAK8rB,EAAOiT,YAAYx6B,KAAKvE,GACrE+1B,EAAIjK,EAAOiT,YAAYv+B,MAAMsrB,EAAO+F,QAAQ7xB,GAAIA,IAAwC,IAAlC8rB,EAAO+F,QAAQ7xB,GAAGw2B,aAAoBl0B,EAAG,GAGxG,QAASg6B,IAA6Bt8B,GACpC,MAAOA,GAAEw2B,YAGX,QAAS+F,IAA0Bv8B,EAAGsC,GACpC,MAAOyzB,GAAIjK,EAAO2K,UAAUj2B,MAAMsrB,EAAO+F,QAAQ7xB,GAAIA,GAAIsC,EAAG,GAG9D,QAASk6B,IAAcx8B,EAAGsC,GACxB,MAAOyzB,GAAI/1B,EAAE22B,iBAAmB,IAAKr0B,EAAG,GAG1C,QAASm6B,IAAkBz8B,EAAGsC,GAC5B,MAAOyzB,GAAI/1B,EAAE22B,iBAAmB,IAAOr0B,EAAG,GAG5C,QAASo6B,MACP,MAAO,QAGT,QAASlB,MACP,MAAO,IAGT,QAASX,IAAoB76B,GAC3B,OAAQA,EAGV,QAAS86B,IAA2B96B,GAClC,MAAOU,MAAKG,OAAOb,EAAI,KAgBzB,QAASsf,IAAc/U,GAMrB,MALAgV,IAASC,EAAajV,GACtBnL,EAAQuyB,WAAapS,GAAO5U,OAC5BvL,EAAQ4/B,UAAYzf,GAAOuF,MAC3B1lB,EAAQizB,UAAY9S,GAAO8S,UAC3BjzB,EAAQ0+B,SAAWve,GAAOue,SACnBve,GAKT,QAAS0f,IAAgB/X,GACvB,MAAOA,GAAKgY,cAKd,QAASC,IAAe3X,GACtB,GAAIN,GAAO,GAAIC,MAAKK,EACpB,OAAO7jB,OAAMujB,GAAQ,KAAOA,EAvT9B,GAuRI3H,IAvRAyW,IAASoJ,IAAK,GAAIz5B,EAAK,IAAK05B,EAAK,KACjCnB,GAAW,UACXC,GAAY,KACZH,GAAY,qBAsRhB1e,KACEsa,SAAU,SACV1S,KAAM,aACNgK,KAAM,eACN2I,SAAU,KAAM,MAChBC,MAAO,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDC,QAAS,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAY7F,IAAIqF,IAAe,wBAMfC,GAAYpY,KAAK9oB,UAAU6gC,YAAcD,GAAkB7/B,EAAQizB,UAAUiN,IAO7EE,IAAY,GAAIrY,MAAK,4BAA8BgY,GAAiB//B,EAAQ0+B,SAASwB,GAEzFlgC,GAAQqgC,wBAA0BngB,GAClClgB,EAAQsgC,iBAAmBlgB,EAC3BpgB,EAAQugC,UAAYJ,GACpBngC,EAAQwgC,SAAWJ,GAEnBh4B,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,QAErD6xB,UAAW,IAAM0K,GAAI,SAAU/gC,EAASU,EAAQJ,IAEnD,SAAWK,EAAQC,GACqD,YAAlD,mBAAZN,GAA0B,YAAcpB,QAAQoB,KAA4C,mBAAXI,GAAyBE,EAAQN,GAA6B,kBAAXO,SAAyBA,OAAOC,IAAMD,QAAQ,WAAYD,GAAWA,EAAQD,EAAOI,GAAKJ,EAAOI,SAC3OC,KAAM,SAAUV,GAMjB,QAAS0gC,GAAYC,EAAQC,EAASx/B,EAAOy/B,GAE3C,QAAS5P,GAASnJ,GAChB,MAAO6Y,GAAO7Y,EAAO,GAAIC,QAAMD,KAAQA,EA+DzC,MA5DAmJ,GAASxvB,MAAQwvB,EAEjBA,EAAS9rB,KAAO,SAAU2iB,GACxB,MAAO6Y,GAAO7Y,EAAO,GAAIC,MAAKD,EAAO,IAAK8Y,EAAQ9Y,EAAM,GAAI6Y,EAAO7Y,GAAOA,GAG5EmJ,EAAS3X,MAAQ,SAAUwO,GACzB,GAAImG,GAAKgD,EAASnJ,GACdoC,EAAK+G,EAAS9rB,KAAK2iB,EACvB,OAAOA,GAAOmG,EAAK/D,EAAKpC,EAAOmG,EAAK/D,GAGtC+G,EAASqG,OAAS,SAAUxP,EAAMzmB,GAChC,MAAOu/B,GAAQ9Y,EAAO,GAAIC,QAAMD,IAAe,MAARzmB,EAAe,EAAIC,KAAKG,MAAMJ,IAAQymB,GAG/EmJ,EAAShsB,MAAQ,SAAU/D,EAAOC,EAAME,GACtC,GAAI4D,KAGJ,IAFA/D,EAAQ+vB,EAAS9rB,KAAKjE,GACtBG,EAAe,MAARA,EAAe,EAAIC,KAAKG,MAAMJ,KAC/BH,EAAQC,GAAWE,EAAO,GAAI,MAAO4D,EAC3C,GACEA,GAAMqB,KAAK,GAAIyhB,QAAM7mB,WACb0/B,EAAQ1/B,EAAOG,GAAOs/B,EAAOz/B,GAAQA,EAAQC,EACvD,OAAO8D,IAGTgsB,EAAS6P,OAAS,SAAUje,GAC1B,MAAO6d,GAAY,SAAU5Y,GAC3B,GAAIA,GAAQA,EAAM,KAAO6Y,EAAO7Y,IAAQjF,EAAKiF,IAC3CA,EAAKE,QAAQF,EAAO,IAErB,SAAUA,EAAMzmB,GACjB,GAAIymB,GAAQA,EACV,GAAIzmB,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAOu/B,EAAQ9Y,OAAYjF,EAAKiF,SAC3B,QAASzmB,GAAQ,GACtB,KAAOu/B,EAAQ9Y,EAAM,IAAMjF,EAAKiF,SAMpC1mB,IACF6vB,EAAS7vB,MAAQ,SAAUF,EAAO6lB,GAGhC,MAFAzY,GAAG0Z,SAAS9mB,GAAQsN,EAAGwZ,SAASjB,GAChC4Z,EAAOryB,GAAKqyB,EAAOnyB,GACZlN,KAAKG,MAAML,EAAMkN,EAAIE,KAG9ByiB,EAASG,MAAQ,SAAU/vB,GAEzB,MADAA,GAAOC,KAAKG,MAAMJ,GACViE,SAASjE,IAAWA,EAAO,EAAcA,EAAO,EAAgB4vB,EAAS6P,OAAOD,EAAQ,SAAUjgC,GACxG,MAAOigC,GAAMjgC,GAAKS,IAAS,GACzB,SAAUT,GACZ,MAAOqwB,GAAS7vB,MAAM,EAAGR,GAAKS,IAAS,IAHoB4vB,EAArB,OAQrCA,EAmFT,QAAS8P,GAAQphC,GACf,MAAO+gC,GAAY,SAAU5Y,GAC3BA,EAAKkZ,QAAQlZ,EAAKgQ,WAAahQ,EAAK4P,SAAW,EAAI/3B,GAAK,GACxDmoB,EAAKmZ,SAAS,EAAG,EAAG,EAAG,IACtB,SAAUnZ,EAAMzmB,GACjBymB,EAAKkZ,QAAQlZ,EAAKgQ,UAAmB,EAAPz2B,IAC7B,SAAUH,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAAS6lB,EAAIsY,oBAAsBn+B,EAAMm+B,qBAAuB/N,GAAkBG,IA6FpG,QAASyP,GAAWvhC,GAClB,MAAO+gC,GAAY,SAAU5Y,GAC3BA,EAAKqZ,WAAWrZ,EAAK2P,cAAgB3P,EAAKsP,YAAc,EAAIz3B,GAAK,GACjEmoB,EAAKsZ,YAAY,EAAG,EAAG,EAAG,IACzB,SAAUtZ,EAAMzmB,GACjBymB,EAAKqZ,WAAWrZ,EAAK2P,aAAsB,EAAPp2B,IACnC,SAAUH,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAASuwB,IAnQ3B,GAAInjB,GAAK,GAAIyZ,MACTvZ,EAAK,GAAIuZ,MAuETuI,EAAcoQ,EAAY,aAE3B,SAAU5Y,EAAMzmB,GACjBymB,EAAKE,SAASF,EAAOzmB,IACpB,SAAUH,EAAO6lB,GAClB,MAAOA,GAAM7lB,GAIfovB,GAAYc,MAAQ,SAAU1mB,GAE5B,MADAA,GAAIpJ,KAAKG,MAAMiJ,GACVpF,SAASoF,IAAQA,EAAI,EACpBA,EAAI,EACHg2B,EAAY,SAAU5Y,GAC3BA,EAAKE,QAAQ1mB,KAAKG,MAAMqmB,EAAOpd,GAAKA,IACnC,SAAUod,EAAMzmB,GACjBymB,EAAKE,SAASF,EAAOzmB,EAAOqJ,IAC3B,SAAUxJ,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAASwJ,IANJ4lB,EADgB,KAWvC,IAAI+Q,GAAe/Q,EAAYrrB,MAE3BosB,EAAiB,IACjBC,EAAiB,IACjBC,EAAe,KACfC,EAAc,MACdC,EAAe,OAEfpB,EAASqQ,EAAY,SAAU5Y,GACjCA,EAAKE,QAAQ1mB,KAAKG,MAAMqmB,EAAOuJ,GAAkBA,IAChD,SAAUvJ,EAAMzmB,GACjBymB,EAAKE,SAASF,EAAOzmB,EAAOgwB,IAC3B,SAAUnwB,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAASmwB,GACtB,SAAUvJ,GACX,MAAOA,GAAK0X,kBAGV8B,EAAUjR,EAAOprB,MAEjBmrB,EAASsQ,EAAY,SAAU5Y,GACjCA,EAAKE,QAAQ1mB,KAAKG,MAAMqmB,EAAOwJ,GAAkBA,IAChD,SAAUxJ,EAAMzmB,GACjBymB,EAAKE,SAASF,EAAOzmB,EAAOiwB,IAC3B,SAAUpwB,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAASowB,GACtB,SAAUxJ,GACX,MAAOA,GAAKmX,eAGVsC,EAAUnR,EAAOnrB,MAEjBkrB,EAAOuQ,EAAY,SAAU5Y,GAC/B,GAAIwP,GAASxP,EAAKuX,oBAAsB/N,EAAiBC,CACrD+F,GAAS,IAAGA,GAAU/F,GAC1BzJ,EAAKE,QAAQ1mB,KAAKG,QAAQqmB,EAAOwP,GAAU/F,GAAgBA,EAAe+F,IACzE,SAAUxP,EAAMzmB,GACjBymB,EAAKE,SAASF,EAAOzmB,EAAOkwB,IAC3B,SAAUrwB,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAASqwB,GACtB,SAAUzJ,GACX,MAAOA,GAAKmS,aAGVuH,EAAQrR,EAAKlrB,MAEbirB,EAAMwQ,EAAY,SAAU5Y,GAC9BA,EAAKmZ,SAAS,EAAG,EAAG,EAAG,IACtB,SAAUnZ,EAAMzmB,GACjBymB,EAAKkZ,QAAQlZ,EAAKgQ,UAAYz2B;EAC7B,SAAUH,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAAS6lB,EAAIsY,oBAAsBn+B,EAAMm+B,qBAAuB/N,GAAkBE,GAC/F,SAAU1J,GACX,MAAOA,GAAKgQ,UAAY,IAGtB4C,EAAOxK,EAAIjrB,MAaXw8B,EAASV,EAAQ,GACjBW,EAASX,EAAQ,GACjBY,EAAUZ,EAAQ,GAClBa,EAAYb,EAAQ,GACpBc,EAAWd,EAAQ,GACnBe,EAASf,EAAQ,GACjBgB,EAAWhB,EAAQ,GAEnBiB,EAAUP,EAAOx8B,MACjBg9B,EAAUP,EAAOz8B,MACjBi9B,EAAWP,EAAQ18B,MACnBk9B,EAAaP,EAAU38B,MACvBm9B,EAAYP,EAAS58B,MACrBo9B,EAAUP,EAAO78B,MACjBq9B,EAAYP,EAAS98B,MAErB+qB,EAAQ0Q,EAAY,SAAU5Y,GAChCA,EAAKkZ,QAAQ,GACblZ,EAAKmZ,SAAS,EAAG,EAAG,EAAG,IACtB,SAAUnZ,EAAMzmB,GACjBymB,EAAKya,SAASza,EAAK+P,WAAax2B,IAC/B,SAAUH,EAAO6lB,GAClB,MAAOA,GAAI8Q,WAAa32B,EAAM22B,WAAyD,IAA3C9Q,EAAI6Q,cAAgB12B,EAAM02B,gBACrE,SAAU9P,GACX,MAAOA,GAAK+P,aAGV+C,EAAS5K,EAAM/qB,MAEf8qB,EAAO2Q,EAAY,SAAU5Y,GAC/BA,EAAKya,SAAS,EAAG,GACjBza,EAAKmZ,SAAS,EAAG,EAAG,EAAG,IACtB,SAAUnZ,EAAMzmB,GACjBymB,EAAKwO,YAAYxO,EAAK8P,cAAgBv2B,IACrC,SAAUH,EAAO6lB,GAClB,MAAOA,GAAI6Q,cAAgB12B,EAAM02B,eAChC,SAAU9P,GACX,MAAOA,GAAK8P,eAId7H,GAAKqB,MAAQ,SAAU1mB,GACrB,MAAQpF,UAASoF,EAAIpJ,KAAKG,MAAMiJ,KAASA,EAAI,EAAYg2B,EAAY,SAAU5Y,GAC7EA,EAAKwO,YAAYh1B,KAAKG,MAAMqmB,EAAK8P,cAAgBltB,GAAKA,GACtDod,EAAKya,SAAS,EAAG,GACjBza,EAAKmZ,SAAS,EAAG,EAAG,EAAG,IACtB,SAAUnZ,EAAMzmB,GACjBymB,EAAKwO,YAAYxO,EAAK8P,cAAgBv2B,EAAOqJ,KALG,KASpD,IAAI83B,GAAQzS,EAAK9qB,MAEb6tB,EAAY4N,EAAY,SAAU5Y,GACpCA,EAAK2a,cAAc,EAAG,IACrB,SAAU3a,EAAMzmB,GACjBymB,EAAKE,SAASF,EAAOzmB,EAAOiwB,IAC3B,SAAUpwB,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAASowB,GACtB,SAAUxJ,GACX,MAAOA,GAAKyX,kBAGVmD,EAAa5P,EAAU7tB,MAEvB4tB,EAAU6N,EAAY,SAAU5Y,GAClCA,EAAK6a,cAAc,EAAG,EAAG,IACxB,SAAU7a,EAAMzmB,GACjBymB,EAAKE,SAASF,EAAOzmB,EAAOkwB,IAC3B,SAAUrwB,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAASqwB,GACtB,SAAUzJ,GACX,MAAOA,GAAKyS,gBAGVqI,EAAW/P,EAAQ5tB,MAEnB2tB,EAAS8N,EAAY,SAAU5Y,GACjCA,EAAKsZ,YAAY,EAAG,EAAG,EAAG,IACzB,SAAUtZ,EAAMzmB,GACjBymB,EAAKqZ,WAAWrZ,EAAK2P,aAAep2B,IACnC,SAAUH,EAAO6lB,GAClB,OAAQA,EAAM7lB,GAASswB,GACtB,SAAU1J,GACX,MAAOA,GAAK2P,aAAe,IAGzBoL,EAAUjQ,EAAO3tB,MAajBy6B,EAAYwB,EAAW,GACvB7J,EAAY6J,EAAW,GACvB4B,EAAa5B,EAAW,GACxB6B,EAAe7B,EAAW,GAC1BvB,EAAcuB,EAAW,GACzB8B,EAAY9B,EAAW,GACvB+B,EAAc/B,EAAW,GAEzBgC,EAAaxD,EAAUz6B,MACvBk+B,EAAa9L,EAAUpyB,MACvBm+B,GAAcN,EAAW79B,MACzBo+B,GAAgBN,EAAa99B,MAC7Bq+B,GAAe3D,EAAY16B,MAC3Bs+B,GAAaP,EAAU/9B,MACvBu+B,GAAeP,EAAYh+B,MAE3BytB,GAAWgO,EAAY,SAAU5Y,GACnCA,EAAKqZ,WAAW,GAChBrZ,EAAKsZ,YAAY,EAAG,EAAG,EAAG,IACzB,SAAUtZ,EAAMzmB,GACjBymB,EAAK2b,YAAY3b,EAAK0P,cAAgBn2B,IACrC,SAAUH,EAAO6lB,GAClB,MAAOA,GAAIyQ,cAAgBt2B,EAAMs2B,cAAkE,IAAjDzQ,EAAIwQ,iBAAmBr2B,EAAMq2B,mBAC9E,SAAUzP,GACX,MAAOA,GAAK0P,gBAGVkM,GAAYhR,GAASztB,MAErBwtB,GAAUiO,EAAY,SAAU5Y,GAClCA,EAAK2b,YAAY,EAAG,GACpB3b,EAAKsZ,YAAY,EAAG,EAAG,EAAG,IACzB,SAAUtZ,EAAMzmB,GACjBymB,EAAK0O,eAAe1O,EAAKyP,iBAAmBl2B,IAC3C,SAAUH,EAAO6lB,GAClB,MAAOA,GAAIwQ,iBAAmBr2B,EAAMq2B,kBACnC,SAAUzP,GACX,MAAOA,GAAKyP,kBAId9E,IAAQrB,MAAQ,SAAU1mB,GACxB,MAAQpF,UAASoF,EAAIpJ,KAAKG,MAAMiJ,KAASA,EAAI,EAAYg2B,EAAY,SAAU5Y,GAC7EA,EAAK0O,eAAel1B,KAAKG,MAAMqmB,EAAKyP,iBAAmB7sB,GAAKA,GAC5Dod,EAAK2b,YAAY,EAAG,GACpB3b,EAAKsZ,YAAY,EAAG,EAAG,EAAG,IACzB,SAAUtZ,EAAMzmB,GACjBymB,EAAK0O,eAAe1O,EAAKyP,iBAAmBl2B,EAAOqJ,KALH,KASpD,IAAIi5B,IAAWlR,GAAQxtB,KAEvBjF,GAAQ4jC,aAAelD,EACvB1gC,EAAQsyB,gBAAkBhC,EAC1BtwB,EAAQ6jC,iBAAmBxC,EAC3BrhC,EAAQgzB,eAAiB1C,EACzBtwB,EAAQ8jC,gBAAkBzC,EAC1BrhC,EAAQqyB,WAAahC,EACrBrwB,EAAQ+jC,YAAczC,EACtBthC,EAAQ+yB,UAAY1C,EACpBrwB,EAAQgkC,WAAa1C,EACrBthC,EAAQoyB,WAAahC,EACrBpwB,EAAQikC,YAAc1C,EACtBvhC,EAAQmyB,SAAWhC,EACnBnwB,EAAQkkC,UAAY1C,EACpBxhC,EAAQkyB,QAAUhC,EAClBlwB,EAAQmkC,SAAWzJ,EACnB16B,EAAQiyB,SAAWwP,EACnBzhC,EAAQokC,UAAYpC,EACpBhiC,EAAQm/B,WAAasC,EACrBzhC,EAAQqkC,YAAcrC,EACtBhiC,EAAQ23B,WAAa+J,EACrB1hC,EAAQskC,YAAcrC,EACtBjiC,EAAQukC,YAAc5C,EACtB3hC,EAAQwkC,aAAetC,EACvBliC,EAAQykC,cAAgB7C,EACxB5hC,EAAQ0kC,eAAiBvC,EACzBniC,EAAQo/B,aAAeyC,EACvB7hC,EAAQ2kC,cAAgBvC,EACxBpiC,EAAQ4kC,WAAa9C,EACrB9hC,EAAQ6kC,YAAcxC,EACtBriC,EAAQ8kC,aAAe/C,EACvB/hC,EAAQ+kC,cAAgBzC,EACxBtiC,EAAQgyB,UAAYhC,EACpBhwB,EAAQglC,WAAapK,EACrB56B,EAAQ+xB,SAAWhC,EACnB/vB,EAAQilC,UAAYzC,EACpBxiC,EAAQ8yB,UAAYA,EACpB9yB,EAAQ0iC,WAAaA,EACrB1iC,EAAQ6yB,QAAUA,EAClB7yB,EAAQ4iC,SAAWA,EACnB5iC,EAAQ4yB,OAASA,EACjB5yB,EAAQ6iC,QAAUA,EAClB7iC,EAAQ2yB,QAAU+M,EAClB1/B,EAAQklC,SAAWhC,EACnBljC,EAAQ0/B,UAAYA,EACpB1/B,EAAQkjC,WAAaA,EACrBljC,EAAQq3B,UAAYA,EACpBr3B,EAAQmjC,WAAaA,EACrBnjC,EAAQ8iC,WAAaA,EACrB9iC,EAAQojC,YAAcA,GACtBpjC,EAAQ+iC,aAAeA,EACvB/iC,EAAQqjC,cAAgBA,GACxBrjC,EAAQ2/B,YAAcA,EACtB3/B,EAAQsjC,aAAeA,GACvBtjC,EAAQgjC,UAAYA,EACpBhjC,EAAQujC,WAAaA,GACrBvjC,EAAQijC,YAAcA,EACtBjjC,EAAQwjC,aAAeA,GACvBxjC,EAAQ0yB,SAAWA,GACnB1yB,EAAQ0jC,UAAYA,GACpB1jC,EAAQyyB,QAAUA,GAClBzyB,EAAQ2jC,SAAWA,GAEnBv7B,OAAOC,eAAerI,EAAS,cAAgBkE,OAAO,WAElDihC,IAAK,SAAUzlC,EAASU,EAAQJ,GA+BtC,QAAS8J,GAAMs7B,EAAMC,EAASC,GAC5B,OAAQA,EAAKplC,QACX,IAAK,GACH,MAAOklC,GAAKnlC,KAAKolC,EACnB,KAAK,GACH,MAAOD,GAAKnlC,KAAKolC,EAASC,EAAK,GACjC,KAAK,GACH,MAAOF,GAAKnlC,KAAKolC,EAASC,EAAK,GAAIA,EAAK,GAC1C,KAAK,GACH,MAAOF,GAAKnlC,KAAKolC,EAASC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErD,MAAOF,GAAKt7B,MAAMu7B,EAASC,GAY7B,QAASC,GAAUnmC,EAAGomC,GAIpB,IAHA,GAAI9c,MACApe,EAASnH,MAAM/D,KAEVspB,EAAQtpB,GACfkL,EAAOoe,GAAS8c,EAAS9c,EAE3B,OAAOpe,GAWT,QAASm7B,GAAQL,EAAMxgB,GACrB,MAAO,UAAU8gB,GACf,MAAON,GAAKxgB,EAAU8gB,KAmC1B,QAASC,GAAczhC,EAAO0hC,GAG5B,GAAIt7B,GAASrE,EAAQ/B,IAAU2hC,EAAY3hC,GAASqhC,EAAUrhC,EAAMhE,OAAQ4lC,WAExE5lC,EAASoK,EAAOpK,OAChB6lC,IAAgB7lC,CAEpB,KAAK,GAAIwI,KAAOxE,IACT0hC,IAAan5B,EAAexM,KAAKiE,EAAOwE,IAAWq9B,IAAuB,UAAPr9B,GAAmBs9B,EAAQt9B,EAAKxI,KACtGoK,EAAOhE,KAAKoC,EAGhB,OAAO4B,GAaT,QAAS27B,GAAYz9B,EAAQE,EAAKxE,GAChC,GAAIgiC,GAAW19B,EAAOE,EAChB+D,GAAexM,KAAKuI,EAAQE,IAAQy9B,EAAGD,EAAUhiC,KAAqBqpB,SAAVrpB,GAAyBwE,IAAOF,MAChGA,EAAOE,GAAOxE,GAWlB,QAASkiC,GAAS59B,GAChB,IAAK69B,EAAY79B,GACf,MAAO89B,GAAW99B,EAEpB,IAAI8B,KACJ,KAAK,GAAI5B,KAAON,QAAOI,GACjBiE,EAAexM,KAAKuI,EAAQE,IAAe,eAAPA,GACtC4B,EAAOhE,KAAKoC,EAGhB,OAAO4B,GAWT,QAASi8B,GAASnB,EAAMlkC,GAEtB,MADAA,GAAQslC,EAAoBjZ,SAAVrsB,EAAsBkkC,EAAKllC,OAAS,EAAIgB,EAAO,GAC1D,WAML,IALA,GAAIokC,GAAOpgC,UACPwjB,KACAxoB,EAASsmC,EAAUlB,EAAKplC,OAASgB,EAAO,GACxC+B,EAAQE,MAAMjD,KAETwoB,EAAQxoB,GACf+C,EAAMylB,GAAS4c,EAAKpkC,EAAQwnB,EAE9BA,KAEA,KADA,GAAI+d,GAAYtjC,MAAMjC,EAAQ,KACrBwnB,EAAQxnB,GACfulC,EAAU/d,GAAS4c,EAAK5c,EAG1B,OADA+d,GAAUvlC,GAAS+B,EACZ6G,EAAMs7B,EAAM1kC,KAAM+lC,IAc7B,QAASC,GAAWve,EAAQwe,EAAOn+B,EAAQo+B,GACzCp+B,IAAWA,KAKX,KAHA,GAAIkgB,MACAxoB,EAASymC,EAAMzmC,SAEVwoB,EAAQxoB,GAAQ,CACvB,GAAIwI,GAAMi+B,EAAMje,GAEZme,EAAWD,EAAaA,EAAWp+B,EAAOE,GAAMyf,EAAOzf,GAAMA,EAAKF,EAAQ2f,GAAUoF,MAExF0Y,GAAYz9B,EAAQE,EAAkB6kB,SAAbsZ,EAAyB1e,EAAOzf,GAAOm+B,GAElE,MAAOr+B,GAUT,QAASs+B,GAAeC,GACtB,MAAOR,GAAS,SAAU/9B,EAAQw+B,GAChC,GAAIte,MACAxoB,EAAS8mC,EAAQ9mC,OACjB0mC,EAAa1mC,EAAS,EAAI8mC,EAAQ9mC,EAAS,GAAKqtB,OAChD0Z,EAAQ/mC,EAAS,EAAI8mC,EAAQ,GAAKzZ,MAStC,KAPAqZ,EAAaG,EAAS7mC,OAAS,GAA0B,kBAAd0mC,IAA4B1mC,IAAU0mC,GAAcrZ,OAE3F0Z,GAASC,EAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDL,EAAa1mC,EAAS,EAAIqtB,OAAYqZ,EACtC1mC,EAAS,GAEXsI,EAASJ,OAAOI,KACPkgB,EAAQxoB,GAAQ,CACvB,GAAIioB,GAAS6e,EAAQte,EACjBP,IACF4e,EAASv+B,EAAQ2f,EAAQO,EAAOke,GAGpC,MAAOp+B,KAYX,QAASw9B,GAAQ9hC,EAAOhE,GAEtB,MADAA,GAAmB,MAAVA,EAAiBinC,EAAmBjnC,IACpCA,IAA2B,gBAATgE,IAAqBkjC,EAASvkB,KAAK3e,KAAWA,MAAcA,EAAQ,GAAK,GAAKA,EAAQhE,EAanH,QAASgnC,GAAehjC,EAAOwkB,EAAOlgB,GACpC,IAAK6+B,EAAS7+B,GACZ,OAAO,CAET,IAAIwX,GAAwB,mBAAV0I,GAAwB,YAAc9pB,QAAQ8pB,EAChE,UAAY,UAAR1I,EAAmBsnB,EAAY9+B,IAAWw9B,EAAQtd,EAAOlgB,EAAOtI,QAAkB,UAAR8f,GAAoB0I,IAASlgB,KAClG29B,EAAG39B,EAAOkgB,GAAQxkB,GAY7B,QAASmiC,GAAYniC,GACnB,GAAIqjC,GAAOrjC,GAASA,EAAMlF,YACtB+L,EAAuB,kBAARw8B,IAAsBA,EAAKtoC,WAAauoC,CAE3D,OAAOtjC,KAAU6G,EAmCnB,QAASo7B,GAAGjiC,EAAOujC,GACjB,MAAOvjC,KAAUujC,GAASvjC,IAAUA,GAASujC,IAAUA,EAqBzD,QAAS5B,GAAY3hC,GAEnB,MAAOwjC,GAAkBxjC,IAAUuI,EAAexM,KAAKiE,EAAO,aAAeyjC,EAAqB1nC,KAAKiE,EAAO,WAAa0jC,EAAe3nC,KAAKiE,IAAU2jC,GAqD3J,QAASP,GAAYpjC,GACnB,MAAgB,OAATA,GAAiB4jC,EAAS5jC,EAAMhE,UAAY6nC,EAAW7jC,GA4BhE,QAASwjC,GAAkBxjC,GACzB,MAAO8jC,GAAa9jC,IAAUojC,EAAYpjC,GAoB5C,QAAS6jC,GAAW7jC,GAGlB,GAAI+jC,GAAMZ,EAASnjC,GAAS0jC,EAAe3nC,KAAKiE,GAAS,EACzD,OAAO+jC,IAAOC,GAAWD,GAAOE,EA6BlC,QAASL,GAAS5jC,GAChB,MAAuB,gBAATA,IAAqBA,MAAcA,EAAQ,GAAK,GAAKA,GAASijC,EA4B9E,QAASE,GAASnjC,GAChB,GAAI8b,GAAwB,mBAAV9b,GAAwB,YAActF,QAAQsF,EAChE,SAASA,IAAkB,UAAR8b,GAA4B,YAARA,GA2BzC,QAASgoB,GAAa9jC,GACpB,QAASA,GAA0E,WAA/C,mBAAVA,GAAwB,YAActF,QAAQsF,IA2E1E,QAASuF,GAAKjB,GACZ,MAAO8+B,GAAY9+B,GAAUm9B,EAAcn9B,GAAU49B,EAAS59B,GApmBhE,GAAI2+B,GAAmB,iBAGnBU,EAAU,qBACVK,EAAU,oBACVC,EAAS,6BAGTf,EAAW,mBA4DXI,EAAcp/B,OAAOnJ,UAGrBwN,EAAiB+6B,EAAY/6B,eAO7Bm7B,EAAiBJ,EAAYruB,SAG7BwuB,EAAuBH,EAAYG,qBAGnCrB,EAAab,EAAQr9B,OAAOqB,KAAMrB,QAClCo+B,EAAYllC,KAAKC,IAGjB6mC,GAAkBT,EAAqB1nC,MAAO0oB,QAAW,GAAK,WAuR9D1iB,EAAU9C,MAAM8C,QA4MhBoiC,EAASvB,EAAe,SAAUt+B,EAAQ2f,GAC5C,GAAIigB,GAAkB/B,EAAYle,IAAWmf,EAAYnf,GAEvD,WADAue,GAAWve,EAAQ1e,EAAK0e,GAAS3f,EAGnC,KAAK,GAAIE,KAAOyf,GACV1b,EAAexM,KAAKkoB,EAAQzf,IAC9Bu9B,EAAYz9B,EAAQE,EAAKyf,EAAOzf,KAqCtCtI,GAAOJ,QAAUqoC,OACXC,IAAK,SAAU5oC,EAASU,EAAQJ,IACtC,SAAWK,GA+FT,QAASkoC,GAAYzjC,EAAK/D,GAGxB,MADA+D,GAAI6D,IAAI5H,EAAK,GAAIA,EAAK,IACf+D,EAWT,QAAS0jC,GAAY7/B,EAAKzE,GAGxB,MADAyE,GAAIO,IAAIhF,GACDyE,EAYT,QAAS8/B,GAAUxlC,EAAOuiC,GAIxB,IAHA,GAAI9c,MACAxoB,EAAS+C,EAAQA,EAAM/C,OAAS,IAE3BwoB,EAAQxoB,GACXslC,EAASviC,EAAMylB,GAAQA,EAAOzlB,MAAW,IAI/C,MAAOA,GAWT,QAASylC,GAAUzlC,EAAOY,GAKxB,IAJA,GAAI6kB,MACAxoB,EAAS2D,EAAO3D,OAChBo3B,EAASr0B,EAAM/C,SAEVwoB,EAAQxoB,GACf+C,EAAMq0B,EAAS5O,GAAS7kB,EAAO6kB,EAEjC,OAAOzlB,GAeT,QAAS0lC,GAAY1lC,EAAOuiC,EAAUoD,EAAaC,GACjD,GAAIngB,MACAxoB,EAAS+C,EAAQA,EAAM/C,OAAS,CAKpC,KAHI2oC,GAAa3oC,IACf0oC,EAAc3lC,IAAQylB,MAEfA,EAAQxoB,GACf0oC,EAAcpD,EAASoD,EAAa3lC,EAAMylB,GAAQA,EAAOzlB,EAE3D,OAAO2lC,GAYT,QAASrD,GAAUnmC,EAAGomC,GAIpB,IAHA,GAAI9c,MACApe,EAASnH,MAAM/D,KAEVspB,EAAQtpB,GACfkL,EAAOoe,GAAS8c,EAAS9c,EAE3B,OAAOpe,GAWT,QAASw+B,GAAStgC,EAAQE,GACxB,MAAiB,OAAVF,EAAiB+kB,OAAY/kB,EAAOE,GAU7C,QAASqgC,GAAa7kC,GAGpB,GAAIoG,IAAS,CACb,IAAa,MAATpG,GAA0C,kBAAlBA,GAAMiV,SAChC,IACE7O,KAAYpG,EAAQ,IACpB,MAAOhF,IAEX,MAAOoL,GAUT,QAAS0+B,GAAWlkC,GAClB,GAAI4jB,MACApe,EAASnH,MAAM2B,EAAI6E,KAKvB,OAHA7E,GAAImkC,QAAQ,SAAU/kC,EAAOwE,GAC3B4B,IAASoe,IAAUhgB,EAAKxE,KAEnBoG,EAWT,QAASm7B,GAAQL,EAAMxgB,GACrB,MAAO,UAAU8gB,GACf,MAAON,GAAKxgB,EAAU8gB,KAW1B,QAASwD,GAAWvgC,GAClB,GAAI+f,MACApe,EAASnH,MAAMwF,EAAIgB,KAKvB,OAHAhB,GAAIsgC,QAAQ,SAAU/kC,GACpBoG,IAASoe,GAASxkB,IAEboG,EAyET,QAAS6+B,GAAKz/B,GACZ,GAAIgf,MACAxoB,EAASwJ,EAAUA,EAAQxJ,OAAS,CAGxC,KADAQ,KAAK8I,UACIkf,EAAQxoB,GAAQ,CACvB,GAAIkpC,GAAQ1/B,EAAQgf,EACpBhoB,MAAKiI,IAAIygC,EAAM,GAAIA,EAAM,KAW7B,QAASC,KACP3oC,KAAK4oC,SAAWC,GAAeA,GAAa,SAa9C,QAASC,GAAW9gC,GAClB,MAAOhI,MAAK0I,IAAIV,UAAehI,MAAK4oC,SAAS5gC,GAY/C,QAAS+gC,GAAQ/gC,GACf,GAAIhD,GAAOhF,KAAK4oC,QAChB,IAAIC,GAAc,CAChB,GAAIj/B,GAAS5E,EAAKgD,EAClB,OAAO4B,KAAWo/B,GAAiBnc,OAAYjjB,EAEjD,MAAOmC,IAAexM,KAAKyF,EAAMgD,GAAOhD,EAAKgD,GAAO6kB,OAYtD,QAASoc,GAAQjhC,GACf,GAAIhD,GAAOhF,KAAK4oC,QAChB,OAAOC,IAA6Bhc,SAAd7nB,EAAKgD,GAAqB+D,GAAexM,KAAKyF,EAAMgD,GAa5E,QAASkhC,GAAQlhC,EAAKxE,GACpB,GAAIwB,GAAOhF,KAAK4oC,QAEhB,OADA5jC,GAAKgD,GAAO6gC,IAA0Bhc,SAAVrpB,EAAsBwlC,GAAiBxlC,EAC5DxD,KAiBT,QAASmpC,GAAUngC,GACjB,GAAIgf,MACAxoB,EAASwJ,EAAUA,EAAQxJ,OAAS,CAGxC,KADAQ,KAAK8I,UACIkf,EAAQxoB,GAAQ,CACvB,GAAIkpC,GAAQ1/B,EAAQgf,EACpBhoB,MAAKiI,IAAIygC,EAAM,GAAIA,EAAM,KAW7B,QAASU,KACPppC,KAAK4oC,YAYP,QAASS,GAAgBrhC,GACvB,GAAIhD,GAAOhF,KAAK4oC,SACZ5gB,EAAQshB,EAAatkC,EAAMgD,EAE/B,IAAIggB,EAAQ,EACV,OAAO,CAET,IAAID,GAAY/iB,EAAKxF,OAAS,CAM9B,OALIwoB,IAASD,EACX/iB,EAAKS,MAEL8jC,GAAOhqC,KAAKyF,EAAMgjB,EAAO,IAEpB,EAYT,QAASwhB,GAAaxhC,GACpB,GAAIhD,GAAOhF,KAAK4oC,SACZ5gB,EAAQshB,EAAatkC,EAAMgD,EAE/B,OAAOggB,GAAQ,EAAI6E,OAAY7nB,EAAKgjB,GAAO,GAY7C,QAASyhB,GAAazhC,GACpB,MAAOshC,GAAatpC,KAAK4oC,SAAU5gC,MAarC,QAAS0hC,GAAa1hC,EAAKxE,GACzB,GAAIwB,GAAOhF,KAAK4oC,SACZ5gB,EAAQshB,EAAatkC,EAAMgD,EAO/B,OALIggB,GAAQ,EACVhjB,EAAKY,MAAMoC,EAAKxE,IAEhBwB,EAAKgjB,GAAO,GAAKxkB,EAEZxD,KAiBT,QAAS2pC,GAAS3gC,GAChB,GAAIgf,MACAxoB,EAASwJ,EAAUA,EAAQxJ,OAAS,CAGxC,KADAQ,KAAK8I,UACIkf,EAAQxoB,GAAQ,CACvB,GAAIkpC,GAAQ1/B,EAAQgf,EACpBhoB,MAAKiI,IAAIygC,EAAM,GAAIA,EAAM,KAW7B,QAASkB,KACP5pC,KAAK4oC,UACHiB,KAAQ,GAAIpB,GACZrkC,IAAO,IAAKyD,IAAOshC,GACnBzhB,OAAU,GAAI+gB,IAalB,QAASqB,GAAe9hC,GACtB,MAAO+hC,IAAW/pC,KAAMgI,GAAK,UAAUA,GAYzC,QAASgiC,GAAYhiC,GACnB,MAAO+hC,IAAW/pC,KAAMgI,GAAKW,IAAIX,GAYnC,QAASiiC,GAAYjiC,GACnB,MAAO+hC,IAAW/pC,KAAMgI,GAAKU,IAAIV,GAanC,QAASkiC,GAAYliC,EAAKxE,GAExB,MADAumC,IAAW/pC,KAAMgI,GAAKC,IAAID,EAAKxE,GACxBxD,KAiBT,QAASmqC,GAAMnhC,GACbhJ,KAAK4oC,SAAW,GAAIO,GAAUngC,GAUhC,QAASohC,KACPpqC,KAAK4oC,SAAW,GAAIO,GAYtB,QAASkB,GAAYriC,GACnB,MAAOhI,MAAK4oC,SAAS,UAAU5gC,GAYjC,QAASsiC,GAAStiC,GAChB,MAAOhI,MAAK4oC,SAASjgC,IAAIX,GAY3B,QAASuiC,GAASviC,GAChB,MAAOhI,MAAK4oC,SAASlgC,IAAIV,GAa3B,QAASwiC,GAASxiC,EAAKxE,GACrB,GAAIinC,GAAQzqC,KAAK4oC,QACjB,IAAI6B,YAAiBtB,GAAW,CAC9B,GAAI7mC,GAAQmoC,EAAM7B,QAClB,KAAK/gC,IAAOvF,EAAM9C,OAASkrC,GAAmB,EAE5C,MADApoC,GAAMsD,MAAMoC,EAAKxE,IACVxD,IAETyqC,GAAQzqC,KAAK4oC,SAAW,GAAIe,GAASrnC,GAGvC,MADAmoC,GAAMxiC,IAAID,EAAKxE,GACRxD,KAkBT,QAASilC,GAAczhC,EAAO0hC,GAG5B,GAAIt7B,GAASrE,GAAQ/B,IAAU2hC,GAAY3hC,GAASqhC,EAAUrhC,EAAMhE,OAAQ4lC,WAExE5lC,EAASoK,EAAOpK,OAChB6lC,IAAgB7lC,CAEpB,KAAK,GAAIwI,KAAOxE,IACT0hC,IAAan5B,GAAexM,KAAKiE,EAAOwE,IAAWq9B,IAAuB,UAAPr9B,GAAmBs9B,GAAQt9B,EAAKxI,KACtGoK,EAAOhE,KAAKoC,EAGhB,OAAO4B,GAaT,QAAS27B,GAAYz9B,EAAQE,EAAKxE,GAChC,GAAIgiC,GAAW19B,EAAOE,EAChB+D,IAAexM,KAAKuI,EAAQE,IAAQy9B,GAAGD,EAAUhiC,KAAqBqpB,SAAVrpB,GAAyBwE,IAAOF,MAChGA,EAAOE,GAAOxE,GAYlB,QAAS8lC,GAAa/mC,EAAOyF,GAE3B,IADA,GAAIxI,GAAS+C,EAAM/C,OACZA,KACL,GAAIimC,GAAGljC,EAAM/C,GAAQ,GAAIwI,GACvB,MAAOxI,EAGX,UAYF,QAASmrC,GAAW7iC,EAAQ2f,GAC1B,MAAO3f,IAAUk+B,GAAWve,EAAQ1e,GAAK0e,GAAS3f,GAiBpD,QAAS8iC,GAAUpnC,EAAOqnC,EAAQC,EAAQ5E,EAAYl+B,EAAKF,EAAQijC,GACjE,GAAInhC,EAIJ,IAHIs8B,IACFt8B,EAAS9B,EAASo+B,EAAW1iC,EAAOwE,EAAKF,EAAQijC,GAAS7E,EAAW1iC,IAExDqpB,SAAXjjB,EACF,MAAOA,EAET,KAAK+8B,GAASnjC,GACZ,MAAOA,EAET,IAAIwnC,GAAQzlC,GAAQ/B,EACpB,IAAIwnC,GAEF,GADAphC,EAASqhC,GAAeznC,IACnBqnC,EACH,MAAOK,IAAU1nC,EAAOoG,OAErB,CACL,GAAI29B,GAAM4D,GAAO3nC,GACb4nC,EAAS7D,GAAOC,IAAWD,GAAOE,EAEtC,IAAI4D,GAAS7nC,GACX,MAAO8nC,GAAY9nC,EAAOqnC,EAE5B,IAAItD,GAAOgE,IAAahE,GAAOJ,IAAWiE,IAAWtjC,EAAQ,CAC3D,GAAIugC,EAAa7kC,GACf,MAAOsE,GAAStE,IAGlB,IADAoG,EAAS4hC,GAAgBJ,KAAc5nC,IAClCqnC,EACH,MAAOY,IAAYjoC,EAAOmnC,EAAW/gC,EAAQpG,QAE1C,CACL,IAAKkoC,GAAcnE,GACjB,MAAOz/B,GAAStE,IAElBoG,GAAS+hC,GAAenoC,EAAO+jC,EAAKqD,EAAWC,IAInDE,IAAUA,EAAQ,GAAIZ,GACtB,IAAIyB,GAAUb,EAAMpiC,IAAInF,EACxB,IAAIooC,EACF,MAAOA,EAIT,IAFAb,EAAM9iC,IAAIzE,EAAOoG,IAEZohC,EACH,GAAI/E,GAAQ6E,EAASe,GAAWroC,GAASuF,GAAKvF,EAUhD,OARAukC,GAAU9B,GAASziC,EAAO,SAAUsoC,EAAU9jC,GACxCi+B,IACFj+B,EAAM8jC,EACNA,EAAWtoC,EAAMwE,IAGnBu9B,EAAY37B,EAAQ5B,EAAK4iC,EAAUkB,EAAUjB,EAAQC,EAAQ5E,EAAYl+B,EAAKxE,EAAOunC,MAEhFnhC,EAWT,QAASmiC,GAAW1hC,GAClB,MAAOs8B,IAASt8B,GAAS2hC,GAAa3hC,MAcxC,QAAS4hC,GAAenkC,EAAQokC,EAAUC,GACxC,GAAIviC,GAASsiC,EAASpkC,EACtB,OAAOvC,IAAQuC,GAAU8B,EAASo+B,EAAUp+B,EAAQuiC,EAAYrkC,IAUlE,QAASskC,GAAW5oC,GAClB,MAAO0jC,IAAe3nC,KAAKiE,GAW7B,QAAS6oC,GAAa7oC,GACpB,IAAKmjC,GAASnjC,IAAU8oC,GAAS9oC,GAC/B,OAAO,CAET,IAAI+oC,GAAUlF,GAAW7jC,IAAU6kC,EAAa7kC,GAASgpC,GAAaC,EACtE,OAAOF,GAAQpqB,KAAKuqB,GAASlpC,IAU/B,QAASkiC,GAAS59B,GAChB,IAAK69B,GAAY79B,GACf,MAAO89B,IAAW99B,EAEpB,IAAI8B,KACJ,KAAK,GAAI5B,KAAON,QAAOI,GACjBiE,GAAexM,KAAKuI,EAAQE,IAAe,eAAPA,GACtC4B,EAAOhE,KAAKoC,EAGhB,OAAO4B,GAWT,QAAS0hC,GAAYqB,EAAQ9B,GAC3B,GAAIA,EACF,MAAO8B,GAAOxoC,OAEhB,IAAIyF,GAAS,GAAI+iC,GAAOruC,YAAYquC,EAAOntC,OAE3C,OADAmtC,GAAOrgB,KAAK1iB,GACLA,EAUT,QAASgjC,GAAiBC,GACxB,GAAIjjC,GAAS,GAAIijC,GAAYvuC,YAAYuuC,EAAYC,WAErD,OADA,IAAIC,IAAWnjC,GAAQ3B,IAAI,GAAI8kC,IAAWF,IACnCjjC,EAWT,QAASojC,GAAcC,EAAUpC,GAC/B,GAAI8B,GAAS9B,EAAS+B,EAAiBK,EAASN,QAAUM,EAASN,MACnE,OAAO,IAAIM,GAAS3uC,YAAYquC,EAAQM,EAASC,WAAYD,EAASH,YAYxE,QAASK,GAAS/oC,EAAKymC,EAAQuC,GAC7B,GAAI7qC,GAAQsoC,EAASuC,EAAU9E,EAAWlkC,IAAM,GAAQkkC,EAAWlkC,EACnE,OAAO6jC,GAAY1lC,EAAOslC,EAAa,GAAIzjC,GAAI9F,aAUjD,QAAS+uC,GAAYC,GACnB,GAAI1jC,GAAS,GAAI0jC,GAAOhvC,YAAYgvC,EAAO7lB,OAAQ8lB,GAAQtiC,KAAKqiC,GAEhE,OADA1jC,GAAOme,UAAYulB,EAAOvlB,UACnBne,EAYT,QAAS4jC,GAASvlC,EAAK4iC,EAAQuC,GAC7B,GAAI7qC,GAAQsoC,EAASuC,EAAU5E,EAAWvgC,IAAM,GAAQugC,EAAWvgC,EACnE,OAAOggC,GAAY1lC,EAAOulC,EAAa,GAAI7/B,GAAI3J,aAUjD,QAASmvC,IAAYxuB,GACnB,MAAOyuB,IAAgBhmC,OAAOgmC,GAAcnuC,KAAK0f,OAWnD,QAAS0uB,IAAgBC,EAAY/C,GACnC,GAAI8B,GAAS9B,EAAS+B,EAAiBgB,EAAWjB,QAAUiB,EAAWjB,MACvE,OAAO,IAAIiB,GAAWtvC,YAAYquC,EAAQiB,EAAWV,WAAYU,EAAWpuC,QAW9E,QAAS0rC,IAAUzjB,EAAQllB,GACzB,GAAIylB,MACAxoB,EAASioB,EAAOjoB,MAGpB,KADA+C,IAAUA,EAAQE,MAAMjD,MACfwoB,EAAQxoB,GACf+C,EAAMylB,GAASP,EAAOO,EAExB,OAAOzlB,GAaT,QAASyjC,IAAWve,EAAQwe,EAAOn+B,EAAQo+B,GACzCp+B,IAAWA,KAKX,KAHA,GAAIkgB,MACAxoB,EAASymC,EAAMzmC,SAEVwoB,EAAQxoB,GAAQ,CACvB,GAAIwI,GAAMi+B,EAAMje,GAEZme,EAAWD,EAAaA,EAAWp+B,EAAOE,GAAMyf,EAAOzf,GAAMA,EAAKF,EAAQ2f,GAAUoF,MAExF0Y,GAAYz9B,EAAQE,EAAkB6kB,SAAbsZ,EAAyB1e,EAAOzf,GAAOm+B,GAElE,MAAOr+B,GAWT,QAAS2jC,IAAYhkB,EAAQ3f,GAC3B,MAAOk+B,IAAWve,EAAQomB,GAAWpmB,GAAS3f,GAUhD,QAAS+jC,IAAW/jC,GAClB,MAAOmkC,GAAenkC,EAAQiB,GAAM8kC,IAWtC,QAAS9D,IAAW3lC,EAAK4D,GACvB,GAAIhD,GAAOZ,EAAIwkC,QACf,OAAOkF,IAAU9lC,GAAOhD,EAAmB,gBAAPgD,GAAkB,SAAW,QAAUhD,EAAKZ,IAWlF,QAAS2pC,IAAUjmC,EAAQE,GACzB,GAAIxE,GAAQ4kC,EAAStgC,EAAQE,EAC7B,OAAOqkC,GAAa7oC,GAASA,EAAQqpB,OAsDvC,QAASoe,IAAe1oC,GACtB,GAAI/C,GAAS+C,EAAM/C,OACfoK,EAASrH,EAAMjE,YAAYkB,EAO/B,OAJIA,IAA6B,gBAAZ+C,GAAM,IAAkBwJ,GAAexM,KAAKgD,EAAO,WACtEqH,EAAOoe,MAAQzlB,EAAMylB,MACrBpe,EAAOkkB,MAAQvrB,EAAMurB,OAEhBlkB,EAUT,QAAS4hC,IAAgB1jC,GACvB,MAAoC,kBAAtBA,GAAOxJ,aAA8BqnC,GAAY79B,MAAUikC,EAAWiC,GAAalmC,IAgBnG,QAAS6jC,IAAe7jC,EAAQy/B,EAAK6F,EAAWvC,GAC9C,GAAIhE,GAAO/+B,EAAOxJ,WAClB,QAAQipC,GACN,IAAK0G,IACH,MAAOrB,GAAiB9kC,EAE1B,KAAKomC,IACL,IAAKC,IACH,MAAO,IAAItH,KAAM/+B,GAEnB,KAAKsmC,IACH,MAAOpB,GAAcllC,EAAQ+iC,EAE/B,KAAKwD,IAAW,IAAKC,IACrB,IAAKC,IAAQ,IAAKC,IAAS,IAAKC,IAChC,IAAKC,IAAS,IAAKC,IAAgB,IAAKC,IAAU,IAAKC,IACrD,MAAOlB,IAAgB7lC,EAAQ+iC,EAEjC,KAAKiE,IACH,MAAO3B,GAASrlC,EAAQ+iC,EAAQuC,EAElC,KAAK2B,IACL,IAAKC,IACH,MAAO,IAAInI,GAAK/+B,EAElB,KAAKmnC,IACH,MAAO5B,GAAYvlC,EAErB,KAAKonC,IACH,MAAO1B,GAAS1lC,EAAQ+iC,EAAQuC,EAElC,KAAK+B,IACH,MAAO1B,IAAY3lC,IAYzB,QAASw9B,IAAQ9hC,EAAOhE,GAEtB,MADAA,GAAmB,MAAVA,EAAiBinC,GAAmBjnC,IACpCA,IAA2B,gBAATgE,IAAqBkjC,GAASvkB,KAAK3e,KAAWA,MAAcA,EAAQ,GAAK,GAAKA,EAAQhE,EAUnH,QAASsuC,IAAUtqC,GACjB,GAAI8b,GAAwB,mBAAV9b,GAAwB,YAActF,QAAQsF,EAChE,OAAe,UAAR8b,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EAA8B,cAAV9b,EAAkC,OAAVA,EAUjH,QAAS8oC,IAAS5H,GAChB,QAAS0K,IAAcA,KAAc1K,GAUvC,QAASiB,IAAYniC,GACnB,GAAIqjC,GAAOrjC,GAASA,EAAMlF,YACtB+L,EAAuB,kBAARw8B,IAAsBA,EAAKtoC,WAAauoC,EAE3D,OAAOtjC,KAAU6G,EAUnB,QAASqiC,IAAShI,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,MAAO2K,IAAa9vC,KAAKmlC,GACzB,MAAOlmC,IACT,IACE,MAAOkmC,GAAO,GACd,MAAOlmC,KAEX,MAAO,GA6BT,QAAS8wC,IAAM9rC,GACb,MAAOonC,GAAUpnC,GAAO,GAAO,GAmCjC,QAASiiC,IAAGjiC,EAAOujC,GACjB,MAAOvjC,KAAUujC,GAASvjC,IAAUA,GAASujC,IAAUA,EAqBzD,QAAS5B,IAAY3hC,GAEnB,MAAOwjC,IAAkBxjC,IAAUuI,GAAexM,KAAKiE,EAAO,aAAeyjC,GAAqB1nC,KAAKiE,EAAO,WAAa0jC,GAAe3nC,KAAKiE,IAAU2jC,IAqD3J,QAASP,IAAYpjC,GACnB,MAAgB,OAATA,GAAiB4jC,GAAS5jC,EAAMhE,UAAY6nC,GAAW7jC,GA4BhE,QAASwjC,IAAkBxjC,GACzB,MAAO8jC,IAAa9jC,IAAUojC,GAAYpjC,GAuC5C,QAAS6jC,IAAW7jC,GAGlB,GAAI+jC,GAAMZ,GAASnjC,GAAS0jC,GAAe3nC,KAAKiE,GAAS,EACzD,OAAO+jC,IAAOC,IAAWD,GAAOE,GA6BlC,QAASL,IAAS5jC,GAChB,MAAuB,gBAATA,IAAqBA,MAAcA,EAAQ,GAAK,GAAKA,GAASijC,GA4B9E,QAASE,IAASnjC,GAChB,GAAI8b,GAAwB,mBAAV9b,GAAwB,YAActF,QAAQsF,EAChE,SAASA,IAAkB,UAAR8b,GAA4B,YAARA,GA2BzC,QAASgoB,IAAa9jC,GACpB,QAASA,GAA0E,WAA/C,mBAAVA,GAAwB,YAActF,QAAQsF,IA+B1E,QAASuF,IAAKjB,GACZ,MAAO8+B,IAAY9+B,GAAUm9B,EAAcn9B,GAAU49B,EAAS59B,GAqBhE,QAASynC,MACP,SAgBF,QAASC,MACP,OAAO,EAjrDT,GAAI9E,IAAmB,IAGnB1B,GAAiB,4BAGjBvC,GAAmB,iBAGnBU,GAAU,qBACVsI,GAAW,iBACXvB,GAAU,mBACVC,GAAU,gBACVuB,GAAW,iBACXlI,GAAU,oBACVC,GAAS,6BACTqH,GAAS,eACTC,GAAY,kBACZxD,GAAY,kBACZoE,GAAa,mBACbV,GAAY,kBACZC,GAAS,eACTF,GAAY,kBACZG,GAAY,kBACZS,GAAa,mBAEb3B,GAAiB,uBACjBG,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAMZgB,GAAe,sBAGftC,GAAU,OAGVd,GAAe,8BAGf/F,GAAW,mBAGXgF,KACJA,IAAcvE,IAAWuE,GAAc+D,IAAY/D,GAAcuC,IAAkBvC,GAAc0C,IAAe1C,GAAcwC,IAAWxC,GAAcyC,IAAWzC,GAAc2C,IAAc3C,GAAc4C,IAAc5C,GAAc6C,IAAW7C,GAAc8C,IAAY9C,GAAc+C,IAAY/C,GAAcoD,IAAUpD,GAAcqD,IAAarD,GAAcH,IAAaG,GAAcuD,IAAavD,GAAcwD,IAAUxD,GAAcsD,IAAatD,GAAcyD,IAAazD,GAAcgD,IAAYhD,GAAciD,IAAmBjD,GAAckD,IAAalD,GAAcmD,KAAa,EAC/kBnD,GAAcgE,IAAYhE,GAAclE,IAAWkE,GAAckE,KAAc,CAG/E,IAAIE,IAAgF,WAAhD,mBAAXnwC,GAAyB,YAAczB,QAAQyB,KAAwBA,GAAUA,EAAO+H,SAAWA,QAAU/H,EAGlIowC,GAA0E,WAA9C,mBAATC,MAAuB,YAAc9xC,QAAQ8xC,QAAsBA,MAAQA,KAAKtoC,SAAWA,QAAUsoC,KAGxHC,GAAOH,IAAcC,IAAYG,SAAS,iBAG1CC,GAAmF,WAAjD,mBAAZ7wC,GAA0B,YAAcpB,QAAQoB,KAAyBA,IAAYA,EAAQ8wC,UAAY9wC,EAG/H+wC,GAAaF,IAAkF,WAAhD,mBAAXzwC,GAAyB,YAAcxB,QAAQwB,KAAwBA,IAAWA,EAAO0wC,UAAY1wC,EAGzI4wC,GAAgBD,IAAcA,GAAW/wC,UAAY6wC,GAkMrDI,GAAa9tC,MAAMlE,UACnBiyC,GAAYN,SAAS3xC,UACrBuoC,GAAcp/B,OAAOnJ,UAGrBkyC,GAAaR,GAAK,sBAGlBb,GAAa,WACf,GAAIsB,GAAM,SAASzlC,KAAKwlC,IAAcA,GAAW1nC,MAAQ0nC,GAAW1nC,KAAK4nC,UAAY,GACrF,OAAOD,GAAM,iBAAmBA,EAAM,MAIpCrB,GAAemB,GAAU/3B,SAGzB1M,GAAiB+6B,GAAY/6B,eAO7Bm7B,GAAiBJ,GAAYruB,SAG7B+zB,GAAar9B,OAAO,IAAMkgC,GAAa9vC,KAAKwM,IAAgByU,QAAQqvB,GAAc,QAAQrvB,QAAQ,yDAA0D,SAAW,KAGvKowB,GAASN,GAAgBL,GAAKW,OAAS/jB,OACvCgkB,GAAUZ,GAAK9xC,OACf4uC,GAAakD,GAAKlD,WAClBiB,GAAejJ,EAAQr9B,OAAOopC,eAAgBppC,QAC9CskC,GAAetkC,OAAOgD,OACtBu8B,GAAuBH,GAAYG,qBACnCsC,GAASgH,GAAWhH,OAGpBwH,GAAmBrpC,OAAOspC,sBAC1BC,GAAiBL,GAASA,GAAOvF,SAAWxe,OAC5C+Y,GAAab,EAAQr9B,OAAOqB,KAAMrB,QAGlCwpC,GAAWnD,GAAUkC,GAAM,YAC3BpoC,GAAMkmC,GAAUkC,GAAM,OACtBkB,GAAUpD,GAAUkC,GAAM,WAC1B1nC,GAAMwlC,GAAUkC,GAAM,OACtBmB,GAAUrD,GAAUkC,GAAM,WAC1BpH,GAAekF,GAAUrmC,OAAQ,UAGjC2pC,GAAqB3E,GAASwE,IAC9BI,GAAgB5E,GAAS7kC,IACzB0pC,GAAoB7E,GAASyE,IAC7BK,GAAgB9E,GAASnkC,IACzBkpC,GAAoB/E,GAAS0E,IAG7BM,GAAcb,GAAUA,GAAQtyC,UAAYsuB,OAC5C6gB,GAAgBgE,GAAcA,GAAYzpB,QAAU4E,MA8FxD4b,GAAKlqC,UAAUuK,MAAQ6/B,EACvBF,EAAKlqC,UAAU,UAAYuqC,EAC3BL,EAAKlqC,UAAUoK,IAAMogC,EACrBN,EAAKlqC,UAAUmK,IAAMugC,EACrBR,EAAKlqC,UAAU0J,IAAMihC,EA4GrBC,EAAU5qC,UAAUuK,MAAQsgC,EAC5BD,EAAU5qC,UAAU,UAAY8qC,EAChCF,EAAU5qC,UAAUoK,IAAM6gC,EAC1BL,EAAU5qC,UAAUmK,IAAM+gC,EAC1BN,EAAU5qC,UAAU0J,IAAMyhC,EA0F1BC,EAASprC,UAAUuK,MAAQ8gC,EAC3BD,EAASprC,UAAU,UAAYurC,EAC/BH,EAASprC,UAAUoK,IAAMqhC,EACzBL,EAASprC,UAAUmK,IAAMuhC,EACzBN,EAASprC,UAAU0J,IAAMiiC,EAwFzBC,EAAM5rC,UAAUuK,MAAQshC,EACxBD,EAAM5rC,UAAU,UAAY8rC,EAC5BF,EAAM5rC,UAAUoK,IAAM2hC,EACtBH,EAAM5rC,UAAUmK,IAAM6hC,EACtBJ,EAAM5rC,UAAU0J,IAAMuiC,CAibtB,IAAIqD,IAAakD,GAAmBhM,EAAQgM,GAAkBrpC,QAAU6nC,GASpEpE,GAASiB,GAIT8E,IAAY/F,GAAO,GAAI+F,IAAS,GAAIS,aAAY,MAAQvD,IAAevmC,IAAOsjC,GAAO,GAAItjC,MAAUinC,IAAUqC,IAAWhG,GAAOgG,GAAQS,YAAcjC,IAAcpnC,IAAO4iC,GAAO,GAAI5iC,MAAU2mC,IAAUkC,IAAWjG,GAAO,GAAIiG,MAAcxB,MAC/OzE,GAAS,SAAgB3nC,GACvB,GAAIoG,GAASs9B,GAAe3nC,KAAKiE,GAC7BqjC,EAAOj9B,GAAU2hC,GAAY/nC,EAAMlF,YAAcuuB,OACjDglB,EAAahL,EAAO6F,GAAS7F,GAAQha,MAEzC,IAAIglB,EACF,OAAQA,GACN,IAAKR,IACH,MAAOjD,GACT,KAAKkD,IACH,MAAOxC,GACT,KAAKyC,IACH,MAAO5B,GACT,KAAK6B,IACH,MAAOtC,GACT,KAAKuC,IACH,MAAO7B,IAGb,MAAOhmC,IAwQX,IAAIrE,IAAU9C,MAAM8C,QA6EhB8lC,GAAW4F,IAAkBzB,EAyLjC9vC,GAAOJ,QAAUgwC,KAChB/vC,KAAKS,KAAwB,mBAAXL,QAAyBA,OAAyB,mBAATqwC,MAAuBA,KAAyB,mBAAX8B,QAAyBA,gBACtHC,IAAK,SAAU/yC,EAASU,EAAQJ,GA8BtC,QAASyoC,GAAUxlC,EAAOuiC,GAIxB,IAHA,GAAI9c,MACAxoB,EAAS+C,EAAQA,EAAM/C,OAAS,IAE3BwoB,EAAQxoB,GACXslC,EAASviC,EAAMylB,GAAQA,EAAOzlB,MAAW,IAI/C,MAAOA,GAYT,QAASsiC,GAAUnmC,EAAGomC,GAIpB,IAHA,GAAI9c,MACApe,EAASnH,MAAM/D,KAEVspB,EAAQtpB,GACfkL,EAAOoe,GAAS8c,EAAS9c,EAE3B,OAAOpe,GAWT,QAASm7B,GAAQL,EAAMxgB,GACrB,MAAO,UAAU8gB,GACf,MAAON,GAAKxgB,EAAU8gB,KA+B1B,QAASC,GAAczhC,EAAO0hC,GAG5B,GAAIt7B,GAASrE,EAAQ/B,IAAU2hC,EAAY3hC,GAASqhC,EAAUrhC,EAAMhE,OAAQ4lC,WAExE5lC,EAASoK,EAAOpK,OAChB6lC,IAAgB7lC,CAEpB,KAAK,GAAIwI,KAAOxE,IACT0hC,IAAan5B,EAAexM,KAAKiE,EAAOwE,IAAWq9B,IAAuB,UAAPr9B,GAAmBs9B,EAAQt9B,EAAKxI,KACtGoK,EAAOhE,KAAKoC,EAGhB,OAAO4B,GAkCT,QAASooC,GAAWlqC,EAAQg9B,GAC1B,MAAOh9B,IAAUmqC,EAAQnqC,EAAQg9B,EAAU/7B,GAU7C,QAAS28B,GAAS59B,GAChB,IAAK69B,EAAY79B,GACf,MAAO89B,GAAW99B,EAEpB,IAAI8B,KACJ,KAAK,GAAI5B,KAAON,QAAOI,GACjBiE,EAAexM,KAAKuI,EAAQE,IAAe,eAAPA,GACtC4B,EAAOhE,KAAKoC,EAGhB,OAAO4B,GAWT,QAASsoC,GAAeC,EAAUC,GAChC,MAAO,UAAUC,EAAYvN,GAC3B,GAAkB,MAAduN,EACF,MAAOA,EAET,KAAKzL,EAAYyL,GACf,MAAOF,GAASE,EAAYvN,EAM9B,KAJA,GAAItlC,GAAS6yC,EAAW7yC,OACpBwoB,EAAQoqB,EAAY5yC,KACpB8yC,EAAW5qC,OAAO2qC,IAEfD,EAAYpqB,MAAYA,EAAQxoB,IACjCslC,EAASwN,EAAStqB,GAAQA,EAAOsqB,MAAc,IAIrD,MAAOD,IAWX,QAASE,GAAcH,GACrB,MAAO,UAAUtqC,EAAQg9B,EAAUoH,GAMjC,IALA,GAAIlkB,MACAsqB,EAAW5qC,OAAOI,GAClBm+B,EAAQiG,EAASpkC,GACjBtI,EAASymC,EAAMzmC,OAEZA,KAAU,CACf,GAAIwI,GAAMi+B,EAAMmM,EAAY5yC,IAAWwoB,EACvC,IAAI8c,EAASwN,EAAStqC,GAAMA,EAAKsqC,MAAc,EAC7C,MAGJ,MAAOxqC,IAYX,QAASw9B,GAAQ9hC,EAAOhE,GAEtB,MADAA,GAAmB,MAAVA,EAAiBinC,EAAmBjnC,IACpCA,IAA2B,gBAATgE,IAAqBkjC,EAASvkB,KAAK3e,KAAWA,MAAcA,EAAQ,GAAK,GAAKA,EAAQhE,EAUnH,QAASmmC,GAAYniC,GACnB,GAAIqjC,GAAOrjC,GAASA,EAAMlF,YACtB+L,EAAuB,kBAARw8B,IAAsBA,EAAKtoC,WAAauoC,CAE3D,OAAOtjC,KAAU6G,EAiCnB,QAASk+B,GAAQ8J,EAAYvN,GAC3B,GAAIJ,GAAOn/B,EAAQ8sC,GAActK,EAAYyK,CAC7C,OAAO9N,GAAK2N,EAA+B,kBAAZvN,GAAyBA,EAAWxgC,GAqBrE,QAAS6gC,GAAY3hC,GAEnB,MAAOwjC,GAAkBxjC,IAAUuI,EAAexM,KAAKiE,EAAO,aAAeyjC,EAAqB1nC,KAAKiE,EAAO,WAAa0jC,EAAe3nC,KAAKiE,IAAU2jC,GAqD3J,QAASP,GAAYpjC,GACnB,MAAgB,OAATA,GAAiB4jC,EAAS5jC,EAAMhE,UAAY6nC,EAAW7jC,GA4BhE,QAASwjC,GAAkBxjC,GACzB,MAAO8jC,GAAa9jC,IAAUojC,EAAYpjC,GAoB5C,QAAS6jC,GAAW7jC,GAGlB,GAAI+jC,GAAMZ,EAASnjC,GAAS0jC,EAAe3nC,KAAKiE,GAAS,EACzD,OAAO+jC,IAAOC,GAAWD,GAAOE,EA6BlC,QAASL,GAAS5jC,GAChB,MAAuB,gBAATA,IAAqBA,MAAcA,EAAQ,GAAK,GAAKA,GAASijC,EA4B9E,QAASE,GAASnjC,GAChB,GAAI8b,GAAwB,mBAAV9b,GAAwB,YAActF,QAAQsF,EAChE,SAASA,IAAkB,UAAR8b,GAA4B,YAARA,GA2BzC,QAASgoB,GAAa9jC,GACpB,QAASA,GAA0E,WAA/C,mBAAVA,GAAwB,YAActF,QAAQsF,IA+B1E,QAASuF,GAAKjB,GACZ,MAAO8+B,GAAY9+B,GAAUm9B,EAAcn9B,GAAU49B,EAAS59B,GAmBhE,QAASxD,GAASd,GAChB,MAAOA,GAhiBT,GAAIijC,GAAmB,iBAGnBU,EAAU,qBACVK,EAAU,oBACVC,EAAS,6BAGTf,EAAW,mBAyDXI,EAAcp/B,OAAOnJ,UAGrBwN,EAAiB+6B,EAAY/6B,eAO7Bm7B,EAAiBJ,EAAYruB,SAG7BwuB,EAAuBH,EAAYG,qBAGnCrB,EAAab,EAAQr9B,OAAOqB,KAAMrB,QAkClC8qC,EAAWN,EAAeF,GAa1BC,EAAUM,IAmMVhtC,EAAU9C,MAAM8C,OAgOpB7F,GAAOJ,QAAUipC,OACXkK,IAAK,SAAUzzC,EAASU,EAAQJ,IACtC,SAAWK,GA4DT,QAASyoC,GAAStgC,EAAQE,GACxB,MAAiB,OAAVF,EAAiB+kB,OAAY/kB,EAAOE,GAU7C,QAASqgC,GAAa7kC,GAGpB,GAAIoG,IAAS,CACb,IAAa,MAATpG,GAA0C,kBAAlBA,GAAMiV,SAChC,IACE7O,KAAYpG,EAAQ,IACpB,MAAOhF,IAEX,MAAOoL,GAWT,QAASm7B,GAAQL,EAAMxgB,GACrB,MAAO,UAAU8gB,GACf,MAAON,GAAKxgB,EAAU8gB,KAiE1B,QAASoH,GAAW5oC,GAClB,MAAO0jC,GAAe3nC,KAAKiE,GAW7B,QAAS6oC,GAAa7oC,GACpB,IAAKmjC,EAASnjC,IAAU8oC,EAAS9oC,GAC/B,OAAO,CAET,IAAI+oC,GAAUlF,EAAW7jC,IAAU6kC,EAAa7kC,GAASgpC,EAAaC,CACtE,OAAOF,GAAQpqB,KAAKuqB,EAASlpC,IAW/B,QAASuqC,GAAUjmC,EAAQE,GACzB,GAAIxE,GAAQ4kC,EAAStgC,EAAQE,EAC7B,OAAOqkC,GAAa7oC,GAASA,EAAQqpB,OA6CvC,QAASyf,GAAS5H,GAChB,QAAS0K,GAAcA,IAAc1K,GAUvC,QAASiB,GAAYniC,GACnB,GAAIqjC,GAAOrjC,GAASA,EAAMlF,YACtB+L,EAAuB,kBAARw8B,IAAsBA,EAAKtoC,WAAauoC,CAE3D,OAAOtjC,KAAU6G,EAUnB,QAASqiC,GAAShI,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,MAAO2K,GAAa9vC,KAAKmlC,GACzB,MAAOlmC,IACT,IACE,MAAOkmC,GAAO,GACd,MAAOlmC,KAEX,MAAO,GAqBT,QAAS2mC,GAAY3hC,GAEnB,MAAOwjC,GAAkBxjC,IAAUuI,EAAexM,KAAKiE,EAAO,aAAeyjC,EAAqB1nC,KAAKiE,EAAO,WAAa0jC,EAAe3nC,KAAKiE,IAAU2jC,GAqD3J,QAASP,GAAYpjC,GACnB,MAAgB,OAATA,GAAiB4jC,EAAS5jC,EAAMhE,UAAY6nC,EAAW7jC,GA4BhE,QAASwjC,GAAkBxjC,GACzB,MAAO8jC,GAAa9jC,IAAUojC,EAAYpjC,GAuD5C,QAASkvC,GAAQlvC,GACf,GAAIojC,EAAYpjC,KAAW+B,GAAQ/B,IAA0B,gBAATA,IAA4C,kBAAhBA,GAAM+lC,QAAwB8B,GAAS7nC,IAAU2hC,EAAY3hC,IAC3I,OAAQA,EAAMhE,MAEhB,IAAI+nC,GAAM4D,GAAO3nC,EACjB,IAAI+jC,GAAOuH,GAAUvH,GAAO2H,EAC1B,OAAQ1rC,EAAMyF,IAEhB,IAAIy+B,IAAkB/B,EAAYniC,GAChC,OAAQoiC,EAAWpiC,GAAOhE,MAE5B,KAAK,GAAIwI,KAAOxE,GACd,GAAIuI,EAAexM,KAAKiE,EAAOwE,GAC7B,OAAO,CAGX,QAAO,EAoBT,QAASq/B,GAAW7jC,GAGlB,GAAI+jC,GAAMZ,EAASnjC,GAAS0jC,EAAe3nC,KAAKiE,GAAS,EACzD,OAAO+jC,IAAOC,GAAWD,GAAOE,EA6BlC,QAASL,GAAS5jC,GAChB,MAAuB,gBAATA,IAAqBA,MAAcA,EAAQ,GAAK,GAAKA,GAASijC,EA4B9E,QAASE,GAASnjC,GAChB,GAAI8b,GAAwB,mBAAV9b,GAAwB,YAActF,QAAQsF,EAChE,SAASA,IAAkB,UAAR8b,GAA4B,YAARA,GA2BzC,QAASgoB,GAAa9jC,GACpB,QAASA,GAA0E,WAA/C,mBAAVA,GAAwB,YAActF,QAAQsF,IAgB1E,QAASgsC,KACP,OAAO,EAljBT,GAAI/I,GAAmB,iBAGnBU,EAAU,qBACVK,EAAU,oBACVC,EAAS,6BACTqH,EAAS,eACTvD,EAAY,kBACZoE,EAAa,mBACbT,EAAS,eACTU,EAAa,mBAEbxB,EAAc,oBAMdyB,EAAe,sBAGfpD,EAAe,8BAGfqD,EAAgF,WAAhD,mBAAXnwC,GAAyB,YAAczB,QAAQyB,KAAwBA,GAAUA,EAAO+H,SAAWA,QAAU/H,EAGlIowC,EAA0E,WAA9C,mBAATC,MAAuB,YAAc9xC,QAAQ8xC,QAAsBA,MAAQA,KAAKtoC,SAAWA,QAAUsoC,KAGxHC,EAAOH,GAAcC,GAAYG,SAAS,iBAG1CC,EAAmF,WAAjD,mBAAZ7wC,GAA0B,YAAcpB,QAAQoB,KAAyBA,IAAYA,EAAQ8wC,UAAY9wC,EAG/H+wC,EAAaF,GAAkF,WAAhD,mBAAXzwC,GAAyB,YAAcxB,QAAQwB,KAAwBA,IAAWA,EAAO0wC,UAAY1wC,EAGzI4wC,EAAgBD,GAAcA,EAAW/wC,UAAY6wC,EAgDrDK,EAAYN,SAAS3xC,UACrBuoC,EAAcp/B,OAAOnJ,UAGrBkyC,EAAaR,EAAK,sBAGlBb,EAAa,WACf,GAAIsB,GAAM,SAASzlC,KAAKwlC,GAAcA,EAAW1nC,MAAQ0nC,EAAW1nC,KAAK4nC,UAAY,GACrF,OAAOD,GAAM,iBAAmBA,EAAM,MAIpCrB,EAAemB,EAAU/3B,SAGzB1M,EAAiB+6B,EAAY/6B,eAO7Bm7B,EAAiBJ,EAAYruB,SAG7B+zB,EAAar9B,OAAO,IAAMkgC,EAAa9vC,KAAKwM,GAAgByU,QAAQqvB,EAAc,QAAQrvB,QAAQ,yDAA0D,SAAW,KAGvKowB,EAASN,EAAgBL,EAAKW,OAAS/jB,OACvCoa,EAAuBH,EAAYG,qBAGnCgK,EAAiBL,EAASA,EAAOvF,SAAWxe,OAC5C+Y,EAAab,EAAQr9B,OAAOqB,KAAMrB,QAGlCwpC,EAAWnD,EAAUkC,EAAM,YAC3BpoC,EAAMkmC,EAAUkC,EAAM,OACtBkB,EAAUpD,EAAUkC,EAAM,WAC1B1nC,GAAMwlC,EAAUkC,EAAM,OACtBmB,GAAUrD,EAAUkC,EAAM,WAG1BvI,IAAkBT,EAAqB1nC,MAAO0oB,QAAW,GAAK,WAG9DopB,GAAqB3E,EAASwE,GAC9BI,GAAgB5E,EAAS7kC,GACzB0pC,GAAoB7E,EAASyE,GAC7BK,GAAgB9E,EAASnkC,IACzBkpC,GAAoB/E,EAAS0E,IAiD7BjG,GAASiB,GAIT8E,GAAY/F,GAAO,GAAI+F,GAAS,GAAIS,aAAY,MAAQvD,GAAevmC,GAAOsjC,GAAO,GAAItjC,KAAUinC,GAAUqC,GAAWhG,GAAOgG,EAAQS,YAAcjC,GAAcpnC,IAAO4iC,GAAO,GAAI5iC,MAAU2mC,GAAUkC,IAAWjG,GAAO,GAAIiG,MAAcxB,KAC/OzE,GAAS,SAAgB3nC,GACvB,GAAIoG,GAASs9B,EAAe3nC,KAAKiE,GAC7BqjC,EAAOj9B,GAAU2hC,EAAY/nC,EAAMlF,YAAcuuB,OACjDglB,EAAahL,EAAO6F,EAAS7F,GAAQha,MAEzC,IAAIglB,EACF,OAAQA,GACN,IAAKR,IACH,MAAOjD,EACT,KAAKkD,IACH,MAAOxC,EACT,KAAKyC,IACH,MAAO5B,EACT,KAAK6B,IACH,MAAOtC,EACT,KAAKuC,IACH,MAAO7B,GAGb,MAAOhmC,IA8FX,IAAIrE,IAAU9C,MAAM8C,QA6EhB8lC,GAAW4F,GAAkBzB,CAuLjC9vC,GAAOJ,QAAUozC,IAChBnzC,KAAKS,KAAwB,mBAAXL,QAAyBA,OAAyB,mBAATqwC,MAAuBA,KAAyB,mBAAX8B,QAAyBA,gBACtHa,IAAK,SAAU3zC,EAASU,EAAQJ,IACtC,SAAWK,GAkHT,QAASizC,GAAYrwC,EAAOswC,GAM1B,IALA,GAAI7qB,MACAxoB,EAAkB,MAAT+C,EAAgB,EAAIA,EAAM/C,OACnCszC,EAAW,EACXlpC,OAEKoe,EAAQxoB,GAAQ,CACvB,GAAIgE,GAAQjB,EAAMylB,EACd6qB,GAAUrvC,EAAOwkB,EAAOzlB,KAC1BqH,EAAOkpC,KAActvC,GAGzB,MAAOoG,GAWT,QAASo+B,GAAUzlC,EAAOY,GAKxB,IAJA,GAAI6kB,MACAxoB,EAAS2D,EAAO3D,OAChBo3B,EAASr0B,EAAM/C,SAEVwoB,EAAQxoB,GACf+C,EAAMq0B,EAAS5O,GAAS7kB,EAAO6kB,EAEjC,OAAOzlB,GAaT,QAASwwC,GAAUxwC,EAAOswC,GAIxB,IAHA,GAAI7qB,MACAxoB,EAAkB,MAAT+C,EAAgB,EAAIA,EAAM/C,SAE9BwoB,EAAQxoB,GACf,GAAIqzC,EAAUtwC,EAAMylB,GAAQA,EAAOzlB,GACjC,OAAO,CAGX,QAAO,EAYT,QAASsiC,GAAUnmC,EAAGomC,GAIpB,IAHA,GAAI9c,MACApe,EAASnH,MAAM/D,KAEVspB,EAAQtpB,GACfkL,EAAOoe,GAAS8c,EAAS9c,EAE3B,OAAOpe,GAUT,QAASopC,GAAUtO,GACjB,MAAO,UAAUlhC,GACf,MAAOkhC,GAAKlhC,IAYhB,QAASyvC,GAASxI,EAAOziC,GACvB,MAAOyiC,GAAM/hC,IAAIV,GAWnB,QAASogC,GAAStgC,EAAQE,GACxB,MAAiB,OAAVF,EAAiB+kB,OAAY/kB,EAAOE,GAU7C,QAASsgC,GAAWlkC,GAClB,GAAI4jB,MACApe,EAASnH,MAAM2B,EAAI6E,KAKvB,OAHA7E,GAAImkC,QAAQ,SAAU/kC,EAAOwE,GAC3B4B,IAASoe,IAAUhgB,EAAKxE,KAEnBoG,EAWT,QAASm7B,GAAQL,EAAMxgB,GACrB,MAAO,UAAU8gB,GACf,MAAON,GAAKxgB,EAAU8gB,KAW1B,QAASwD,GAAWvgC,GAClB,GAAI+f,MACApe,EAASnH,MAAMwF,EAAIgB,KAKvB,OAHAhB,GAAIsgC,QAAQ,SAAU/kC,GACpBoG,IAASoe,GAASxkB,IAEboG,EAwET,QAAS6+B,GAAKz/B,GACZ,GAAIgf,MACAxoB,EAAoB,MAAXwJ,EAAkB,EAAIA,EAAQxJ,MAG3C,KADAQ,KAAK8I,UACIkf,EAAQxoB,GAAQ,CACvB,GAAIkpC,GAAQ1/B,EAAQgf,EACpBhoB,MAAKiI,IAAIygC,EAAM,GAAIA,EAAM,KAW7B,QAASC,KACP3oC,KAAK4oC,SAAWC,GAAeA,GAAa,SAC5C7oC,KAAKiJ,KAAO,EAad,QAAS6/B,GAAW9gC,GAClB,GAAI4B,GAAS5J,KAAK0I,IAAIV,UAAehI,MAAK4oC,SAAS5gC,EAEnD,OADAhI,MAAKiJ,MAAQW,EAAS,EAAI,EACnBA,EAYT,QAASm/B,GAAQ/gC,GACf,GAAIhD,GAAOhF,KAAK4oC,QAChB,IAAIC,GAAc,CAChB,GAAIj/B,GAAS5E,EAAKgD,EAClB,OAAO4B,KAAWo/B,GAAiBnc,OAAYjjB,EAEjD,MAAOmC,IAAexM,KAAKyF,EAAMgD,GAAOhD,EAAKgD,GAAO6kB,OAYtD,QAASoc,GAAQjhC,GACf,GAAIhD,GAAOhF,KAAK4oC,QAChB,OAAOC,IAA6Bhc,SAAd7nB,EAAKgD,GAAqB+D,GAAexM,KAAKyF,EAAMgD,GAa5E,QAASkhC,GAAQlhC,EAAKxE,GACpB,GAAIwB,GAAOhF,KAAK4oC,QAGhB,OAFA5oC,MAAKiJ,MAAQjJ,KAAK0I,IAAIV,GAAO,EAAI,EACjChD,EAAKgD,GAAO6gC,IAA0Bhc,SAAVrpB,EAAsBwlC,GAAiBxlC,EAC5DxD,KAiBT,QAASmpC,GAAUngC,GACjB,GAAIgf,MACAxoB,EAAoB,MAAXwJ,EAAkB,EAAIA,EAAQxJ,MAG3C,KADAQ,KAAK8I,UACIkf,EAAQxoB,GAAQ,CACvB,GAAIkpC,GAAQ1/B,EAAQgf,EACpBhoB,MAAKiI,IAAIygC,EAAM,GAAIA,EAAM,KAW7B,QAASU,KACPppC,KAAK4oC,YACL5oC,KAAKiJ,KAAO,EAYd,QAASogC,GAAgBrhC,GACvB,GAAIhD,GAAOhF,KAAK4oC,SACZ5gB,EAAQshB,EAAatkC,EAAMgD,EAE/B,IAAIggB,EAAQ,EACV,OAAO,CAET,IAAID,GAAY/iB,EAAKxF,OAAS,CAO9B,OANIwoB,IAASD,EACX/iB,EAAKS,MAEL8jC,GAAOhqC,KAAKyF,EAAMgjB,EAAO,KAEzBhoB,KAAKiJ,MACA,EAYT,QAASugC,GAAaxhC,GACpB,GAAIhD,GAAOhF,KAAK4oC,SACZ5gB,EAAQshB,EAAatkC,EAAMgD,EAE/B,OAAOggB,GAAQ,EAAI6E,OAAY7nB,EAAKgjB,GAAO,GAY7C,QAASyhB,GAAazhC,GACpB,MAAOshC,GAAatpC,KAAK4oC,SAAU5gC,MAarC,QAAS0hC,GAAa1hC,EAAKxE,GACzB,GAAIwB,GAAOhF,KAAK4oC,SACZ5gB,EAAQshB,EAAatkC,EAAMgD,EAQ/B,OANIggB,GAAQ,KACRhoB,KAAKiJ,KACPjE,EAAKY,MAAMoC,EAAKxE,KAEhBwB,EAAKgjB,GAAO,GAAKxkB,EAEZxD,KAiBT,QAAS2pC,GAAS3gC,GAChB,GAAIgf,MACAxoB,EAAoB,MAAXwJ,EAAkB,EAAIA,EAAQxJ,MAG3C,KADAQ,KAAK8I,UACIkf,EAAQxoB,GAAQ,CACvB,GAAIkpC,GAAQ1/B,EAAQgf,EACpBhoB,MAAKiI,IAAIygC,EAAM,GAAIA,EAAM,KAW7B,QAASkB,KACP5pC,KAAKiJ,KAAO,EACZjJ,KAAK4oC,UACHiB,KAAQ,GAAIpB,GACZrkC,IAAO,IAAKyD,IAAOshC,GACnBzhB,OAAU,GAAI+gB,IAalB,QAASqB,GAAe9hC,GACtB,GAAI4B,GAASmgC,GAAW/pC,KAAMgI,GAAK,UAAUA,EAE7C,OADAhI,MAAKiJ,MAAQW,EAAS,EAAI,EACnBA,EAYT,QAASogC,GAAYhiC,GACnB,MAAO+hC,IAAW/pC,KAAMgI,GAAKW,IAAIX,GAYnC,QAASiiC,GAAYjiC,GACnB,MAAO+hC,IAAW/pC,KAAMgI,GAAKU,IAAIV,GAanC,QAASkiC,GAAYliC,EAAKxE,GACxB,GAAIwB,GAAO+kC,GAAW/pC,KAAMgI,GACxBiB,EAAOjE,EAAKiE,IAIhB,OAFAjE,GAAKiD,IAAID,EAAKxE,GACdxD,KAAKiJ,MAAQjE,EAAKiE,MAAQA,EAAO,EAAI,EAC9BjJ,KAkBT,QAASkzC,GAAS/vC,GAChB,GAAI6kB,MACAxoB,EAAmB,MAAV2D,EAAiB,EAAIA,EAAO3D,MAGzC,KADAQ,KAAK4oC,SAAW,GAAIe,KACX3hB,EAAQxoB,GACfQ,KAAKwI,IAAIrF,EAAO6kB,IAcpB,QAASmrB,GAAY3vC,GAEnB,MADAxD,MAAK4oC,SAAS3gC,IAAIzE,EAAOwlC,IAClBhpC,KAYT,QAASozC,GAAY5vC,GACnB,MAAOxD,MAAK4oC,SAASlgC,IAAIlF,GAc3B,QAAS2mC,GAAMnhC,GACb,GAAIhE,GAAOhF,KAAK4oC,SAAW,GAAIO,GAAUngC,EACzChJ,MAAKiJ,KAAOjE,EAAKiE,KAUnB,QAASmhC,KACPpqC,KAAK4oC,SAAW,GAAIO,GACpBnpC,KAAKiJ,KAAO,EAYd,QAASohC,GAAYriC,GACnB,GAAIhD,GAAOhF,KAAK4oC,SACZh/B,EAAS5E,EAAK,UAAUgD,EAG5B,OADAhI,MAAKiJ,KAAOjE,EAAKiE,KACVW,EAYT,QAAS0gC,GAAStiC,GAChB,MAAOhI,MAAK4oC,SAASjgC,IAAIX,GAY3B,QAASuiC,GAASviC,GAChB,MAAOhI,MAAK4oC,SAASlgC,IAAIV,GAa3B,QAASwiC,GAASxiC,EAAKxE,GACrB,GAAIwB,GAAOhF,KAAK4oC,QAChB,IAAI5jC,YAAgBmkC,GAAW,CAC7B,GAAI7mC,GAAQ0C,EAAK4jC,QACjB,KAAK/gC,IAAOvF,EAAM9C,OAASkrC,GAAmB,EAG5C,MAFApoC,GAAMsD,MAAMoC,EAAKxE,IACjBxD,KAAKiJ,OAASjE,EAAKiE,KACZjJ,IAETgF,GAAOhF,KAAK4oC,SAAW,GAAIe,GAASrnC,GAItC,MAFA0C,GAAKiD,IAAID,EAAKxE,GACdxD,KAAKiJ,KAAOjE,EAAKiE,KACVjJ,KAkBT,QAASilC,GAAczhC,EAAO0hC,GAC5B,GAAI8F,GAAQzlC,GAAQ/B,GAChB6vC,GAASrI,GAAS7F,GAAY3hC,GAC9B8vC,GAAUtI,IAAUqI,GAAShI,GAAS7nC,GACtC+vC,GAAUvI,IAAUqI,IAAUC,GAAUE,GAAahwC,GACrD6hC,EAAc2F,GAASqI,GAASC,GAAUC,EAC1C3pC,EAASy7B,EAAcR,EAAUrhC,EAAMhE,OAAQ4lC,WAC/C5lC,EAASoK,EAAOpK,MAEpB,KAAK,GAAIwI,KAAOxE,IACT0hC,IAAan5B,GAAexM,KAAKiE,EAAOwE,IAAWq9B,IAEjD,UAAPr9B,GAEAsrC,IAAkB,UAAPtrC,GAA0B,UAAPA,IAE9BurC,IAAkB,UAAPvrC,GAA0B,cAAPA,GAA8B,cAAPA,IAErDs9B,GAAQt9B,EAAKxI,KACXoK,EAAOhE,KAAKoC,EAGhB,OAAO4B,GAWT,QAAS0/B,GAAa/mC,EAAOyF,GAE3B,IADA,GAAIxI,GAAS+C,EAAM/C,OACZA,KACL,GAAIimC,GAAGljC,EAAM/C,GAAQ,GAAIwI,GACvB,MAAOxI,EAGX,UAcF,QAASysC,GAAenkC,EAAQokC,EAAUC,GACxC,GAAIviC,GAASsiC,EAASpkC,EACtB,OAAOvC,IAAQuC,GAAU8B,EAASo+B,EAAUp+B,EAAQuiC,EAAYrkC,IAUlE,QAASskC,GAAW5oC,GAClB,MAAa,OAATA,EACeqpB,SAAVrpB,EAAsBiwC,GAAeC,GAEvCC,IAAkBA,KAAkBjsC,QAAOlE,GAASowC,GAAUpwC,GAAS0jC,GAAe1jC,GAU/F,QAASqwC,GAAgBrwC,GACvB,MAAO8jC,IAAa9jC,IAAU4oC,EAAW5oC,IAAU2jC,GAiBrD,QAAS2M,GAAYtwC,EAAOujC,EAAOgN,EAAS7N,EAAY6E,GACtD,MAAIvnC,KAAUujC,IAGD,MAATvjC,GAA0B,MAATujC,IAAkBO,GAAa9jC,KAAW8jC,GAAaP,GACnEvjC,IAAUA,GAASujC,IAAUA,EAE/BiN,EAAgBxwC,EAAOujC,EAAOgN,EAAS7N,EAAY4N,EAAa/I,IAiBzE,QAASiJ,GAAgBlsC,EAAQi/B,EAAOgN,EAAS7N,EAAY+N,EAAWlJ,GACtE,GAAImJ,GAAW3uC,GAAQuC,GACnBqsC,EAAW5uC,GAAQwhC,GACnBqN,EAASF,EAAWzE,GAAWtE,GAAOrjC,GACtCusC,EAASF,EAAW1E,GAAWtE,GAAOpE,EAE1CqN,GAASA,GAAUjN,GAAUoE,GAAY6I,EACzCC,EAASA,GAAUlN,GAAUoE,GAAY8I,CAEzC,IAAIC,GAAWF,GAAU7I,GACrBgJ,EAAWF,GAAU9I,GACrBiJ,EAAYJ,GAAUC,CAE1B,IAAIG,GAAanJ,GAASvjC,GAAS,CACjC,IAAKujC,GAAStE,GACZ,OAAO,CAETmN,IAAW,EACXI,GAAW,EAEb,GAAIE,IAAcF,EAEhB,MADAvJ,KAAUA,EAAQ,GAAIZ,IACf+J,GAAYV,GAAa1rC,GAAU2sC,EAAY3sC,EAAQi/B,EAAOgN,EAAS7N,EAAY+N,EAAWlJ,GAAS2J,EAAW5sC,EAAQi/B,EAAOqN,EAAQL,EAAS7N,EAAY+N,EAAWlJ,EAElL,MAAMgJ,EAAUY,IAAuB,CACrC,GAAIC,GAAeN,GAAYvoC,GAAexM,KAAKuI,EAAQ,eACvD+sC,EAAeN,GAAYxoC,GAAexM,KAAKwnC,EAAO,cAE1D,IAAI6N,GAAgBC,EAAc,CAChC,GAAIC,GAAeF,EAAe9sC,EAAOtE,QAAUsE,EAC/CitC,EAAeF,EAAe9N,EAAMvjC,QAAUujC,CAGlD,OADAgE,KAAUA,EAAQ,GAAIZ,IACf8J,EAAUa,EAAcC,EAAchB,EAAS7N,EAAY6E,IAGtE,QAAKyJ,IAGLzJ,IAAUA,EAAQ,GAAIZ,IACf6K,EAAaltC,EAAQi/B,EAAOgN,EAAS7N,EAAY+N,EAAWlJ,IAWrE,QAASsB,GAAa7oC,GACpB,IAAKmjC,GAASnjC,IAAU8oC,GAAS9oC,GAC/B,OAAO,CAET,IAAI+oC,GAAUlF,GAAW7jC,GAASgpC,GAAaC,EAC/C,OAAOF,GAAQpqB,KAAKuqB,GAASlpC,IAU/B,QAASyxC,GAAiBzxC,GACxB,MAAO8jC,IAAa9jC,IAAU4jC,GAAS5jC,EAAMhE,WAAa01C,GAAe9I,EAAW5oC,IAUtF,QAASkiC,GAAS59B,GAChB,IAAK69B,GAAY79B,GACf,MAAO89B,IAAW99B,EAEpB,IAAI8B,KACJ,KAAK,GAAI5B,KAAON,QAAOI,GACjBiE,GAAexM,KAAKuI,EAAQE,IAAe,eAAPA,GACtC4B,EAAOhE,KAAKoC,EAGhB,OAAO4B,GAgBT,QAAS6qC,GAAYlyC,EAAOwkC,EAAOgN,EAAS7N,EAAY+N,EAAWlJ,GACjE,GAAIoK,GAAYpB,EAAUY,GACtBS,EAAY7yC,EAAM/C,OAClB61C,EAAYtO,EAAMvnC,MAEtB,IAAI41C,GAAaC,KAAeF,GAAaE,EAAYD,GACvD,OAAO,CAGT,IAAIxJ,GAAUb,EAAMpiC,IAAIpG,EACxB,IAAIqpC,GAAWb,EAAMpiC,IAAIo+B,GACvB,MAAO6E,IAAW7E,CAEpB,IAAI/e,MACApe,GAAS,EACT0rC,EAAOvB,EAAUwB,GAAyB,GAAIrC,GAAarmB,MAM/D,KAJAke,EAAM9iC,IAAI1F,EAAOwkC,GACjBgE,EAAM9iC,IAAI8+B,EAAOxkC,KAGRylB,EAAQotB,GAAW,CAC1B,GAAII,GAAWjzC,EAAMylB,GACjBytB,EAAW1O,EAAM/e,EAErB,IAAIke,EACF,GAAIwP,GAAWP,EAAYjP,EAAWuP,EAAUD,EAAUxtB,EAAO+e,EAAOxkC,EAAOwoC,GAAS7E,EAAWsP,EAAUC,EAAUztB,EAAOzlB,EAAOwkC,EAAOgE,EAE9I,IAAiBle,SAAb6oB,EAAwB,CAC1B,GAAIA,EACF,QAEF9rC,IAAS,CACT,OAGF,GAAI0rC,GACF,IAAKvC,EAAUhM,EAAO,SAAU0O,EAAUE,GACxC,IAAK1C,EAASqC,EAAMK,KAAcH,IAAaC,GAAYxB,EAAUuB,EAAUC,EAAU1B,EAAS7N,EAAY6E,IAC5G,MAAOuK,GAAK1vC,KAAK+vC,KAEjB,CACF/rC,GAAS,CACT,YAEG,IAAM4rC,IAAaC,IAAYxB,EAAUuB,EAAUC,EAAU1B,EAAS7N,EAAY6E,GAAS,CAChGnhC,GAAS,CACT,QAKJ,MAFAmhC,GAAM,UAAUxoC,GAChBwoC,EAAM,UAAUhE,GACTn9B,EAoBT,QAAS8qC,GAAW5sC,EAAQi/B,EAAOQ,EAAKwM,EAAS7N,EAAY+N,EAAWlJ,GACtE,OAAQxD,GACN,IAAK6G,IACH,GAAItmC,EAAOglC,YAAc/F,EAAM+F,YAAchlC,EAAOolC,YAAcnG,EAAMmG,WACtE,OAAO,CAETplC,GAASA,EAAO6kC,OAChB5F,EAAQA,EAAM4F,MAEhB,KAAKsB,IACH,QAAInmC,EAAOglC,YAAc/F,EAAM+F,aAAemH,EAAU,GAAIlH,IAAWjlC,GAAS,GAAIilC,IAAWhG,IAKjG,KAAKmH,IACL,IAAKC,IACL,IAAKY,IAGH,MAAOtJ,KAAI39B,GAASi/B,EAEtB,KAAK2I,IACH,MAAO5nC,GAAOqpB,MAAQ4V,EAAM5V,MAAQrpB,EAAO8tC,SAAW7O,EAAM6O,OAE9D,KAAK3G,IACL,IAAKD,IAIH,MAAOlnC,IAAUi/B,EAAQ,EAE3B,KAAK+H,IACH,GAAI+G,GAAUvN,CAEhB,KAAK4G,IACH,GAAIiG,GAAYpB,EAAUY,EAG1B,IAFAkB,IAAYA,EAAUrN,GAElB1gC,EAAOmB,MAAQ89B,EAAM99B,OAASksC,EAChC,OAAO,CAGT,IAAIvJ,GAAUb,EAAMpiC,IAAIb,EACxB,IAAI8jC,EACF,MAAOA,IAAW7E,CAEpBgN,IAAWwB,GAGXxK,EAAM9iC,IAAIH,EAAQi/B,EAClB,IAAIn9B,GAAS6qC,EAAYoB,EAAQ/tC,GAAS+tC,EAAQ9O,GAAQgN,EAAS7N,EAAY+N,EAAWlJ,EAE1F,OADAA,GAAM,UAAUjjC,GACT8B,CAET,KAAKulC,IACH,GAAIzB,GACF,MAAOA,IAAcnuC,KAAKuI,IAAW4lC,GAAcnuC,KAAKwnC,GAG9D,OAAO,EAgBT,QAASiO,GAAaltC,EAAQi/B,EAAOgN,EAAS7N,EAAY+N,EAAWlJ,GACnE,GAAIoK,GAAYpB,EAAUY,GACtBmB,EAAWjK,EAAW/jC,GACtBiuC,EAAYD,EAASt2C,OACrBw2C,EAAWnK,EAAW9E,GACtBsO,EAAYW,EAASx2C,MAEzB,IAAIu2C,GAAaV,IAAcF,EAC7B,OAAO,CAGT,KADA,GAAIntB,GAAQ+tB,EACL/tB,KAAS,CACd,GAAIhgB,GAAM8tC,EAAS9tB,EACnB,MAAMmtB,EAAYntC,IAAO++B,GAAQh7B,GAAexM,KAAKwnC,EAAO/+B,IAC1D,OAAO,EAIX,GAAI4jC,GAAUb,EAAMpiC,IAAIb,EACxB,IAAI8jC,GAAWb,EAAMpiC,IAAIo+B,GACvB,MAAO6E,IAAW7E,CAEpB,IAAIn9B,IAAS,CACbmhC,GAAM9iC,IAAIH,EAAQi/B,GAClBgE,EAAM9iC,IAAI8+B,EAAOj/B,EAGjB,KADA,GAAImuC,GAAWd,IACNntB,EAAQ+tB,GAAW,CAC1B/tC,EAAM8tC,EAAS9tB,EACf,IAAIwd,GAAW19B,EAAOE,GAClBytC,EAAW1O,EAAM/+B,EAErB,IAAIk+B,EACF,GAAIwP,GAAWP,EAAYjP,EAAWuP,EAAUjQ,EAAUx9B,EAAK++B,EAAOj/B,EAAQijC,GAAS7E,EAAWV,EAAUiQ,EAAUztC,EAAKF,EAAQi/B,EAAOgE,EAG5I,MAAmBle,SAAb6oB,EAAyBlQ,IAAaiQ,GAAYxB,EAAUzO,EAAUiQ,EAAU1B,EAAS7N,EAAY6E,GAAS2K,GAAW,CAC7H9rC,GAAS,CACT,OAEFqsC,IAAaA,EAAkB,eAAPjuC,GAE1B,GAAI4B,IAAWqsC,EAAU,CACvB,GAAIC,GAAUpuC,EAAOxJ,YACjB63C,EAAUpP,EAAMzoC,WAGhB43C,IAAWC,GAAW,eAAiBruC,IAAU,eAAiBi/B,MAA6B,kBAAXmP,IAAyBA,YAAmBA,IAA6B,kBAAXC,IAAyBA,YAAmBA,MAChMvsC,GAAS,GAKb,MAFAmhC,GAAM,UAAUjjC,GAChBijC,EAAM,UAAUhE,GACTn9B,EAUT,QAASiiC,GAAW/jC,GAClB,MAAOmkC,GAAenkC,EAAQiB,GAAM8kC,IAWtC,QAAS9D,IAAW3lC,EAAK4D,GACvB,GAAIhD,GAAOZ,EAAIwkC,QACf,OAAOkF,IAAU9lC,GAAOhD,EAAmB,gBAAPgD,GAAkB,SAAW,QAAUhD,EAAKZ,IAWlF,QAAS2pC,IAAUjmC,EAAQE,GACzB,GAAIxE,GAAQ4kC,EAAStgC,EAAQE,EAC7B,OAAOqkC,GAAa7oC,GAASA,EAAQqpB,OAUvC,QAAS+mB,IAAUpwC,GACjB,GAAI4yC,GAAQrqC,GAAexM,KAAKiE,EAAOmwC,IACnCpM,EAAM/jC,EAAMmwC,GAEhB,KACEnwC,EAAMmwC,IAAkB9mB,MACxB,IAAIwpB,IAAW,EACf,MAAO73C,IAET,GAAIoL,GAAS0sC,GAAqB/2C,KAAKiE,EAQvC,OAPI6yC,KACED,EACF5yC,EAAMmwC,IAAkBpM,QAEjB/jC,GAAMmwC,KAGV/pC,EA8DT,QAAS07B,IAAQ9hC,EAAOhE,GAEtB,MADAA,GAAmB,MAAVA,EAAiBinC,GAAmBjnC,IACpCA,IAA2B,gBAATgE,IAAqBkjC,GAASvkB,KAAK3e,KAAWA,MAAcA,EAAQ,GAAK,GAAKA,EAAQhE,EAUnH,QAASsuC,IAAUtqC,GACjB,GAAI8b,GAAwB,mBAAV9b,GAAwB,YAActF,QAAQsF,EAChE,OAAe,UAAR8b,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EAA8B,cAAV9b,EAAkC,OAAVA,EAUjH,QAAS8oC,IAAS5H,GAChB,QAAS0K,IAAcA,KAAc1K,GAUvC,QAASiB,IAAYniC,GACnB,GAAIqjC,GAAOrjC,GAASA,EAAMlF,YACtB+L,EAAuB,kBAARw8B,IAAsBA,EAAKtoC,WAAauoC,EAE3D,OAAOtjC,KAAU6G,EAUnB,QAAS68B,IAAe1jC,GACtB,MAAO8yC,IAAqB/2C,KAAKiE,GAUnC,QAASkpC,IAAShI,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,MAAO2K,IAAa9vC,KAAKmlC,GACzB,MAAOlmC,IACT,IACE,MAAOkmC,GAAO,GACd,MAAOlmC,KAEX,MAAO,GAmCT,QAASinC,IAAGjiC,EAAOujC,GACjB,MAAOvjC,KAAUujC,GAASvjC,IAAUA,GAASujC,IAAUA,EA6EzD,QAASH,IAAYpjC,GACnB,MAAgB,OAATA,GAAiB4jC,GAAS5jC,EAAMhE,UAAY6nC,GAAW7jC,GAkDhE,QAAS+yC,IAAQ/yC,EAAOujC,GACtB,MAAO+M,GAAYtwC,EAAOujC,GAoB5B,QAASM,IAAW7jC,GAClB,IAAKmjC,GAASnjC,GACZ,OAAO,CAIT,IAAI+jC,GAAM6E,EAAW5oC,EACrB,OAAO+jC,IAAOC,IAAWD,GAAOE,IAAUF,GAAOiP,IAAYjP,GAAOkP,GA6BtE,QAASrP,IAAS5jC,GAChB,MAAuB,gBAATA,IAAqBA,MAAcA,EAAQ,GAAK,GAAKA,GAASijC,GA4B9E,QAASE,IAASnjC,GAChB,GAAI8b,GAAwB,mBAAV9b,GAAwB,YAActF,QAAQsF,EAChE,OAAgB,OAATA,IAA0B,UAAR8b,GAA4B,YAARA,GA2B/C,QAASgoB,IAAa9jC,GACpB,MAAgB,OAATA,GAAkF,WAA/C,mBAAVA,GAAwB,YAActF,QAAQsF,IAkDhF,QAASuF,IAAKjB,GACZ,MAAO8+B,IAAY9+B,GAAUm9B,EAAcn9B,GAAU49B,EAAS59B,GAqBhE,QAASynC,MACP,SAgBF,QAASC,MACP,OAAO,EAhwDT,GAAI9E,IAAmB,IAGnB1B,GAAiB,4BAGjB2L,GAAuB,EACvBY,GAAyB,EAGzB9O,GAAmB,iBAGnBU,GAAU,qBACVsI,GAAW,iBACX+G,GAAW,yBACXtI,GAAU,mBACVC,GAAU,gBACVuB,GAAW,iBACXlI,GAAU,oBACVC,GAAS,6BACTqH,GAAS,eACTC,GAAY,kBACZ2E,GAAU,gBACVnI,GAAY,kBACZoE,GAAa,mBACb8G,GAAW,iBACXxH,GAAY,kBACZC,GAAS,eACTF,GAAY,kBACZG,GAAY,kBACZsE,GAAe,qBACf7D,GAAa,mBAEb3B,GAAiB,uBACjBG,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAMZgB,GAAe,sBAGfpD,GAAe,8BAGf/F,GAAW,mBAGXwO,KACJA,IAAe7G,IAAc6G,GAAe5G,IAAc4G,GAAe3G,IAAW2G,GAAe1G,IAAY0G,GAAezG,IAAYyG,GAAexG,IAAYwG,GAAevG,IAAmBuG,GAAetG,IAAasG,GAAerG,KAAa,EAC/PqG,GAAe/N,IAAW+N,GAAezF,IAAYyF,GAAejH,IAAkBiH,GAAehH,IAAWgH,GAAe9G,IAAe8G,GAAe/G,IAAW+G,GAAexF,IAAYwF,GAAe1N,IAAW0N,GAAepG,IAAUoG,GAAenG,IAAamG,GAAe3J,IAAa2J,GAAejG,IAAaiG,GAAehG,IAAUgG,GAAelG,IAAakG,GAAetF,KAAc,CAG5Z,IAAIE,IAAgF,WAAhD,mBAAXnwC,GAAyB,YAAczB,QAAQyB,KAAwBA,GAAUA,EAAO+H,SAAWA,QAAU/H,EAGlIowC,GAA0E,WAA9C,mBAATC,MAAuB,YAAc9xC,QAAQ8xC,QAAsBA,MAAQA,KAAKtoC,SAAWA,QAAUsoC,KAGxHC,GAAOH,IAAcC,IAAYG,SAAS,iBAG1CC,GAAmF,WAAjD,mBAAZ7wC,GAA0B,YAAcpB,QAAQoB,KAAyBA,IAAYA,EAAQ8wC,UAAY9wC,EAG/H+wC,GAAaF,IAAkF,WAAhD,mBAAXzwC,GAAyB,YAAcxB,QAAQwB,KAAwBA,IAAWA,EAAO0wC,UAAY1wC,EAGzI4wC,GAAgBD,IAAcA,GAAW/wC,UAAY6wC,GAGrDuG,GAAcpG,IAAiBR,GAAW6G,QAG1CC,GAAW,WACb,IACE,MAAOF,KAAeA,GAAYG,SAAWH,GAAYG,QAAQ,QACjE,MAAOr4C,QAIPs4C,GAAmBF,IAAYA,GAASpD,aA4KxCjD,GAAa9tC,MAAMlE,UACnBiyC,GAAYN,SAAS3xC,UACrBuoC,GAAcp/B,OAAOnJ,UAGrBkyC,GAAaR,GAAK,sBAGlBZ,GAAemB,GAAU/3B,SAGzB1M,GAAiB+6B,GAAY/6B,eAG7BqjC,GAAa,WACf,GAAIsB,GAAM,SAASzlC,KAAKwlC,IAAcA,GAAW1nC,MAAQ0nC,GAAW1nC,KAAK4nC,UAAY,GACrF,OAAOD,GAAM,iBAAmBA,EAAM,MAQpC4F,GAAuBxP,GAAYruB,SAGnC+zB,GAAar9B,OAAO,IAAMkgC,GAAa9vC,KAAKwM,IAAgByU,QAAQqvB,GAAc,QAAQrvB,QAAQ,yDAA0D,SAAW,KAGvKowB,GAASN,GAAgBL,GAAKW,OAAS/jB,OACvCkqB,GAAW9G,GAAK9xC,OAChB4uC,GAAakD,GAAKlD,WAClB9F,GAAuBH,GAAYG,qBACnCsC,GAASgH,GAAWhH,OACpBoK,GAAiBoD,GAAWA,GAASC,YAAcnqB,OAGnDkkB,GAAmBrpC,OAAOspC,sBAC1BC,GAAiBL,GAASA,GAAOvF,SAAWxe,OAC5C+Y,GAAab,EAAQr9B,OAAOqB,KAAMrB,QAGlCwpC,GAAWnD,GAAUkC,GAAM,YAC3BpoC,GAAMkmC,GAAUkC,GAAM,OACtBkB,GAAUpD,GAAUkC,GAAM,WAC1B1nC,GAAMwlC,GAAUkC,GAAM,OACtBmB,GAAUrD,GAAUkC,GAAM,WAC1BpH,GAAekF,GAAUrmC,OAAQ,UAGjC2pC,GAAqB3E,GAASwE,IAC9BI,GAAgB5E,GAAS7kC,IACzB0pC,GAAoB7E,GAASyE,IAC7BK,GAAgB9E,GAASnkC,IACzBkpC,GAAoB/E,GAAS0E,IAG7BM,GAAcqF,GAAWA,GAASx4C,UAAYsuB,OAC9C6gB,GAAgBgE,GAAcA,GAAYzpB,QAAU4E,MAkGxD4b,GAAKlqC,UAAUuK,MAAQ6/B,EACvBF,EAAKlqC,UAAU,UAAYuqC,EAC3BL,EAAKlqC,UAAUoK,IAAMogC,EACrBN,EAAKlqC,UAAUmK,IAAMugC,EACrBR,EAAKlqC,UAAU0J,IAAMihC,EA+GrBC,EAAU5qC,UAAUuK,MAAQsgC,EAC5BD,EAAU5qC,UAAU,UAAY8qC,EAChCF,EAAU5qC,UAAUoK,IAAM6gC,EAC1BL,EAAU5qC,UAAUmK,IAAM+gC,EAC1BN,EAAU5qC,UAAU0J,IAAMyhC,EAiG1BC,EAASprC,UAAUuK,MAAQ8gC,EAC3BD,EAASprC,UAAU,UAAYurC,EAC/BH,EAASprC,UAAUoK,IAAMqhC,EACzBL,EAASprC,UAAUmK,IAAMuhC,EACzBN,EAASprC,UAAU0J,IAAMiiC,EAiDzBgJ,EAAS30C,UAAUiK,IAAM0qC,EAAS30C,UAAUqH,KAAOutC,EACnDD,EAAS30C,UAAUmK,IAAM0qC,EAgGzBjJ,EAAM5rC,UAAUuK,MAAQshC,EACxBD,EAAM5rC,UAAU,UAAY8rC,EAC5BF,EAAM5rC,UAAUoK,IAAM2hC,EACtBH,EAAM5rC,UAAUmK,IAAM6hC,EACtBJ,EAAM5rC,UAAU0J,IAAMuiC,CA8ftB,IAAIqD,IAAckD,GAA+B,SAAUjpC,GACzD,MAAc,OAAVA,MAGJA,EAASJ,OAAOI,GACT8qC,EAAY7B,GAAiBjpC,GAAS,SAAUmX,GACrD,MAAOgoB,IAAqB1nC,KAAKuI,EAAQmX,OANRswB,GAiBjCpE,GAASiB,GAGT8E,IAAY/F,GAAO,GAAI+F,IAAS,GAAIS,aAAY,MAAQvD,IAAevmC,IAAOsjC,GAAO,GAAItjC,MAAUinC,IAAUqC,IAAWhG,GAAOgG,GAAQS,YAAcjC,IAAcpnC,IAAO4iC,GAAO,GAAI5iC,MAAU2mC,IAAUkC,IAAWjG,GAAO,GAAIiG,MAAcxB,MAC/OzE,GAAS,SAAgB3nC,GACvB,GAAIoG,GAASwiC,EAAW5oC,GACpBqjC,EAAOj9B,GAAU2hC,GAAY/nC,EAAMlF,YAAcuuB,OACjDglB,EAAahL,EAAO6F,GAAS7F,GAAQ,EAEzC,IAAIgL,EACF,OAAQA,GACN,IAAKR,IACH,MAAOjD,GACT,KAAKkD,IACH,MAAOxC,GACT,KAAKyC,IACH,MAAO5B,GACT,KAAK6B,IACH,MAAOtC,GACT,KAAKuC,IACH,MAAO7B,IAGb,MAAOhmC,IA0IX,IAAIu7B,IAAc0O,EAAgB,WAChC,MAAOrvC,eACFqvC,EAAkB,SAAUrwC,GACjC,MAAO8jC,IAAa9jC,IAAUuI,GAAexM,KAAKiE,EAAO,YAAcyjC,GAAqB1nC,KAAKiE,EAAO,WA0BtG+B,GAAU9C,MAAM8C,QAgDhB8lC,GAAW4F,IAAkBzB,GAsK7BgE,GAAesD,GAAmB9D,EAAU8D,IAAoB7B,CAyEpEv1C,GAAOJ,QAAUi3C,KAChBh3C,KAAKS,KAAwB,mBAAXL,QAAyBA,OAAyB,mBAATqwC,MAAuBA,KAAyB,mBAAX8B,QAAyBA,gBACtHmF,IAAK,SAAUj4C,EAASU,EAAQJ,GAQtC,QAAS43C,GAAUC,GACjBn3C,KAAKm3C,SAAWA,EAChBn3C,KAAKo3C,SAAU,EATjBtF,OAAOuF,sBAAwBvF,OAAOuF,uBAAyBvF,OAAOwF,6BAA+BxF,OAAOyF,yBAW5GL,EAAU34C,WACRD,YAAa44C,EAMbM,OAAQ,WACNx3C,KAAKm3C,UAAYn3C,KAAKm3C,WACtBn3C,KAAKo3C,SAAU,GAOjBK,YAAa,WACNz3C,KAAKo3C,UACRC,sBAAsBr3C,KAAK03C,cAAgB13C,KAAK03C,YAAc13C,KAAKw3C,OAAOG,KAAK33C,QAC/EA,KAAKo3C,SAAU,IAOnBQ,YAAa,WACX53C,KAAKy3C,gBAIT/3C,EAAOJ,QAAU43C,OACXW,IAAK,SAAU74C,EAASU,EAAQJ,GAQtC,QAASw4C,GAAOC,GACdA,EAAUC,EAAaF,EAAOC,QAASA,GAEvC/3C,KAAKi4C,iBAAmB,EACxBj4C,KAAKk4C,aAAc,EACnBl4C,KAAKm4C,iBAAmBJ,EAAQI,iBAZlC,GAIIH,IAJUh5C,EAAQ,kBACRA,EAAQ,kBACRA,EAAQ,kBACJA,EAAQ,gBACPA,EAAQ,kBACvBo5C,EAAYp5C,EAAQ,cAUxB84C,GAAOv5C,WACLD,YAAaw5C,EAEbO,KAAM,WAOJ,MANAr4C,MAAKo4C,UAAY,GAAIA,GAAUp4C,KAAKw3C,OAAOG,KAAK33C,OAIhDs4C,WAAWt4C,KAAKu4C,YAAYZ,KAAK33C,MAAO,KAEjCA,MAGTu4C,YAAa,WACNv4C,KAAKk4C,cACRl4C,KAAKi4C,iBAAmBj4C,KAAKw4C,aAC7Bx4C,KAAKk4C,aAAc,EAEnBpG,OAAO2G,iBAAiB,SAAUz4C,KAAKo4C,WAAW,GAClDp4C,KAAKo4C,UAAUR,gBAInBY,WAAY,WACV,MAA8B3rB,UAAvBilB,OAAO4G,YAA4B5G,OAAO4G,YAAmC7rB,SAArBilB,OAAO6G,UAA0B7G,OAAO6G,WAAah1B,SAASG,iBAAmBH,SAASi1B,KAAKC,YAAcl1B,SAASi1B,MAAMD,WAG7LnB,OAAQ,WACN,GAAIsB,GAAiB94C,KAAKw4C,YACJM,GAAiB94C,KAAKi4C,iBAAmB,OAAS,IAExEj4C,MAAKm4C,iBAAiBW,GACtB94C,KAAKi4C,iBAAmBa;EAG1BC,QAAS,WACP/4C,KAAKk4C,aAAc,EACnBpG,OAAOkH,oBAAoB,SAAUh5C,KAAKo4C,WAAW,KAKzDN,EAAOC,SACLI,iBAAkB,cAGpBz4C,EAAOJ,QAAUw4C,IACdmB,cAAe,GAAIC,gBAAiB,GAAIC,eAAgB,GAAIC,iBAAkB,GAAIC,iBAAkB,GAAIC,iBAAkB,KAAOC,IAAK,SAAUv6C,EAASU,EAAQJ,GAMpK,QAASk6C,GAAWzB,GAClBA,EAAUxtC,EAAOwtC,EAASyB,EAAWzB,SACrC/3C,KAAKy5C,YAAc,aAAc,aAAc,UAAW,SAC1Dz5C,KAAK05C,UAAY3B,EAAQ2B,UAuHzB,QAASnvC,GAAOzC,GAChB,GAAItD,UAAUhF,QAAU,EACtB,KAAM,IAAIL,OAAM,uCAGlB,IACI6I,GACA/I,EAFA2K,EAAS9B,KAIb,KAAK7I,EAAI,EAAGA,EAAIuF,UAAUhF,OAAQP,IAAK,CACrC,GAAI06C,GAAcn1C,UAAUvF,MAE5B,KAAK+I,IAAO2xC,GAEmB,WAAzBz7C,QAAQ0L,EAAO5B,KAAuB4xC,EAAahwC,EAAO5B,IAG5D4B,EAAO5B,GAAO4B,EAAO5B,IAAQ2xC,EAAY3xC,GAFzC4B,EAAO5B,GAAOuC,EAAOX,EAAO5B,GAAM2xC,EAAY3xC,IAOpD,MAAO4B,GAQT,QAASgwC,GAAav7C,GACpB,MAAOA,IAAyB,mBAAXyzC,UAA2BzzC,IAAQyzC,QAAUzzC,EAAI+xC,UA9JxE,GAAI0H,GAAS94C,EAAQ,eACjB66C,EAAQ76C,EAAQ,YAChB86C,EAAe96C,EAAQ,kBACvB+6C,EAAO/6C,EAAQ,UAQnBw6C,GAAWj7C,WACTD,YAAak7C,EAEbnB,KAAM,WAkBJ,QAASb,GAAOwC,GACd,GAAIC,GAASj6C,IAEbA,MAAKk6C,UAAU3R,QAAQ,SAAU4R,GAC3BA,GAAUF,EAAOG,gBAAgBD,EAASE,QAASJ,EAAOK,wBAAwBH,EAASI,QAASP,MAG1Gh6C,KAAKw6C,SAASjS,QAAQ,SAAU4R,GAC1BA,GACEH,GAAWG,EAASM,OAAOC,MAAMT,EAAOU,eAAeR,EAASE,QAASF,EAASM,OAAOG,aA1BnG,GAAIC,GAAQ76C,IA+BZ,OA7BA,IAAI83C,IAASK,iBAAkBX,EAAOG,KAAK33C,QAASq4C,OAEpDr4C,KAAKk6C,UAAYl6C,KAAK05C,UAAUtZ,OAAO,SAAU0a,GAC/C,MAAOA,GAAKP,UAEdv6C,KAAKw6C,SAAWx6C,KAAK05C,UAAUtZ,OAAO,SAAU0a,GAC9C,MAAOA,GAAKL,SAGdz6C,KAAKk6C,UAAU3R,QAAQ,SAAU4R,GAC3BA,GAAUA,EAASI,QAAQhS,QAAQ,SAAU1/B,GAC/CA,EAAS+c,MAAQi1B,EAAME,YAAYlyC,EAASA,SAAUsxC,EAASj1C,OAAQ2D,EAAStE,WAkB7EvE,MAGTs6C,wBAAyB,SAAiCU,EAAYhB,GACpE,GAAIiB,GAASj7C,KAETk7C,EAAY,GAAIxzC,OASpB,OAPA1H,MAAKy5C,WAAWlR,QAAQ,SAAU4S,GAChCD,EAAUC,GAAgBF,EAAOG,wBAAwBD,GACzDH,EAAWzS,QAAQ,SAAU8S,GACvBA,EAAUxyC,UAAYsyC,IAAcD,EAAUC,GAAgBF,EAAOK,WAAWD,EAAUz1B,MAAOo0B,QAIlGkB,GAGTI,WAAY,SAAoB11B,EAAOo0B,GACrC,MAAOp0B,GAAMo0B,IAGfI,gBAAiB,SAAyBC,EAASkB,GAIjD,MAHAlB,GAAQp2B,MAAMC,UAAY,eAAiBq3B,EAAI11B,WAAa,OAAS01B,EAAIz1B,WAAa,gBAAkBy1B,EAAI31B,MAAQ,IACpHy0B,EAAQp2B,MAAM9X,QAAUovC,EAAIpvC,QAErBkuC,GAGTM,eAAgB,SAAwBN,EAASO,GAG/C,MAFAP,GAAQmB,UAAYnB,EAAQmB,UAAUhzC,IAAIoyC,GAAaP,EAAQO,WAAa,IAAMA,EAE3EP,GAGTe,wBAAyB,SAAiCD,GACxD,OAAQA,GACN,IAAK,aACH,MAAO,EACT,KAAK,aACH,MAAO,EACT,KAAK,QACH,MAAO,EACT,KAAK,SACH,MAAO,EACT,KAAK,UACH,MAAO,EACT,SACE,MAAO,QAIbJ,YAAa,SAAqBI,EAAcj2C,EAAQX,GACtD,OAAQ42C,GACN,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,UACH,MAAOtB,GAAMpmB,cAAcvuB,OAAOA,GAAQX,MAAMA,GAAO+lB,YAAYtqB,KAAKy7C,gBAAgB1B,EAAKr9B,eAAegR,OAAM,EACpH,SACE,MAAO,QAIb+tB,gBAAiB,SAAyBC,GACxC,MAAO,UAAU38C,EAAGuB,GAClB,GAAIrB,GAAI66C,EAAaxvB,YAAYvrB,EAAGuB,EACpC,OAAO,UAAU7B,GACf,MAAOmC,MAAKgY,MAAmB,IAAb3Z,EAAEy8C,EAAKj9C,KAAa,QAO9C+6C,EAAWzB,SACT2B,cAuCFh6C,EAAOJ,QAAUk6C,IACdmC,cAAe,GAAIC,UAAW,EAAGxmB,iBAAkB,EAAGymB,WAAY,IAAMC,IAAK,SAAU98C,EAASU,EAAQJ,GAI3G,QAASy8C,GAActuB,EAAQ7D,EAAUoyB,EAAQ/5B,EAASlD,EAAOk9B,GAC/Dh6B,EAAUA,EAAUA,EAAU,CAC9B,IAAIi6B,GAAUv4B,SAASG,gBACnBq4B,EAAeD,EAAQE,aACvBC,EAAY,cAAgBvK,QAASA,OAAOwK,WAAaJ,EAAQK,aAAeJ,EAChFK,EAAW1K,OAAO4G,YAElB+D,EAAUD,EACVE,EAAgB74C,MAAM4pB,GAAUA,EAAOkvB,wBAA0B,CAEvD,YAAV59B,GACF09B,GAAW54C,MAAM4pB,GAAUivB,EAAcE,IAAMF,EAAcG,OAAS,EAAIpvB,EAC1EgvB,GAAWN,EAAe,EAC1BM,GAAWx6B,GACQ,WAAVlD,GACT09B,GAAWC,EAAcI,QAAUrvB,EACnCgvB,GAAWN,EACXM,GAAWx6B,IAGXw6B,GAAWC,EAAcE,KAAOnvB,EAChCgvB,GAAWx6B,GAEbw6B,EAAU77C,KAAKC,IAAID,KAAKsD,IAAIm4C,EAAWI,GAAU,EAEjD,IAAIM,GAASN,EAAUD,EAEnBn+C,GACFo+C,QAASA,EACTM,OAAQA,EACRnzB,SAAUA,EAAWA,EAAW,EAChCoyB,OAAQA,IAAUD,GAAciB,OAASjB,EAAciB,OAAOhB,GAAUD,EAAciB,OAAO5jC,OAC7F6iC,SAAUA,EACVgB,UAAW51B,KAAK61B,MAChBC,MAAOX,EACP77C,KAAMo7C,EAAcp7C,KAGtBmxC,QAAOuF,sBAAsBh5C,EAAIsC,KAAKg3C,KAAKt5C,IAK7C09C,EAAciB,QACZ5jC,OAAQ,SAAgB3a,GACtB,MAAOA,IAET2+C,WAAY,SAAoB3+C,GAC9B,MAAOA,GAAIA,GAEb4+C,YAAa,SAAqB5+C,GAChC,MAAOA,IAAK,EAAIA,IAElB6+C,cAAe,SAAuB7+C,GACpC,MAAOA,GAAI,GAAK,EAAIA,EAAIA,MAAU,EAAI,EAAIA,GAAKA,GAEjD8+C,YAAa,SAAqB9+C,GAChC,MAAOA,GAAIA,EAAIA,GAEjB++C,aAAc,SAAsB/+C,GAClC,QAASA,EAAIA,EAAIA,EAAI,GAEvBg/C,eAAgB,SAAwBh/C,GACtC,MAAOA,GAAI,GAAK,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAExEi/C,YAAa,SAAqBj/C,GAChC,MAAOA,GAAIA,EAAIA,EAAIA,GAErBk/C,aAAc,SAAsBl/C,GAClC,MAAO,MAAMA,EAAIA,EAAIA,EAAIA,GAE3Bm/C,eAAgB,SAAwBn/C,GACtC,MAAOA,GAAI,GAAK,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAMA,EAAIA,EAAIA,EAAIA,GAE5Do/C,YAAa,SAAqBp/C,GAChC,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAEzBq/C,aAAc,SAAsBr/C,GAClC,MAAO,KAAMA,EAAIA,EAAIA,EAAIA,EAAIA,GAE/Bs/C,eAAgB,SAAwBt/C,GACtC,MAAOA,GAAI,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAOA,EAAIA,EAAIA,EAAIA,EAAIA,IAIxEs9C,EAAcp7C,KAAO,WACnB,GAAIX,KAAKm9C,QAAUrL,OAAO4G,aAAe14C,KAAKi8C,SAE5C,WADAj8C,MAAKi8C,UAKP,IAAIx9C,GAAImC,KAAKsD,KAAKmjB,KAAK61B,MAAQl9C,KAAKi9C,WAAaj9C,KAAK4pB,SAAU,GAG5Dvc,EAAIrN,KAAKy8C,SAAW,EAAIz8C,KAAKg8C,OAAOv9C,IAAMuB,KAAK+8C,MACnDjL,QAAOkM,SAASlM,OAAOmM,QAAS5wC,GAGtB,IAAN5O,GACFuB,KAAKm9C,MAAQrL,OAAO4G,YACpB5G,OAAOuF,sBAAsBr3C,KAAKW,KAAKg3C,KAAK33C,QAExCA,KAAKi8C,UAAUj8C,KAAKi8C,YAI5Bv8C,EAAOJ,QAAUy8C,OACXmC,IAAK,SAAUl/C,EAASU,EAAQJ,GA2FtC,QAAS6+C,KACPC,EAAkBz6B,SAAS06B,iBAAiB,aAAa,GAAI,mBAG/D,QAASC,KACPC,EAAuB56B,SAAS06B,iBAAiB,aAAa,GAAI,mBAcpE,QAASD,GAAkB/D,EAASO,GAElC,MADAP,GAAQmB,UAAYnB,EAAQmB,UAAUhzC,IAAIoyC,GAAaP,EAAQO,WAAa,IAAMA,EAC3EP,EAGT,QAASkE,GAAuBlE,EAASO,GAMvC,MALIP,GAAQmB,UACVnB,EAAQmB,UAAU5yC,OAAOgyC,GAEzBP,EAAQO,UAAYP,EAAQO,UAAUp6B,QAAQ,GAAIrR,QAAO,UAAYyrC,EAAUr2B,MAAM,KAAKlE,KAAK,KAAO,UAAW,MAAO,KAEnHg6B,EAxHT,GAAIb,GAAax6C,EAAQ,uBACrB+8C,EAAgB/8C,EAAQ,0BAExB45C,EAAOj1B,SAAS06B,iBAAiB,QAAQ,GAGzCG,GAFU76B,SAAS06B,iBAAiB,YAAY,GAEvC16B,SAAS06B,iBAAiB,uBAAuB,IAC1DI,EAAU96B,SAAS06B,iBAAiB,wBAAwB,GAC5DK,EAAW/6B,SAAS06B,iBAAiB,kBAAkB,GACvDM,EAAWh7B,SAAS06B,iBAAiB,eAAe,GACpDO,EAAaj7B,SAAS06B,iBAAiB,iBAAiB,GACxDQ,EAAWl7B,SAAS06B,iBAAiB,eAAe,GACpDS,EAAiBn7B,SAAS06B,iBAAiB,sBAAsB,EAErE/F,YAAW,WACT,MAAOM,GAAK4C,UAAUhzC,IAAI,UACzB,KAEHmb,SAAS06B,iBAAiB,iBAAiB,GAAG5F,iBAAiB,QAAS,SAAUsG,GAChFhD,EAAc4C,EAAU,IAAK,iBAAkB,GAC/CI,EAAMC,mBAcR,GAAIxF,IACFE,YACEW,QAASmE,EACTt5C,QAAS,EAAG,KACZq1C,UACE1xC,SAAU,aACVtE,OAAQ,EAAG,QAGb81C,QAASoE,EACTv5C,QAAS,EAAG,KACZq1C,UACE1xC,SAAU,aACVtE,OAAQ,EAAG,SAGb81C,QAASqE,EACTx5C,QAAS,IAAK,KACdq1C,UACE1xC,SAAU,aACVtE,OAAQ,WAGV81C,QAASsE,EACTlE,QACEC,KAAM,IACNE,UAAW,kBAIbP,QAASuE,EACTnE,QACEC,KAAM,KACNE,UAAW,kBAGbP,QAASwE,EACTpE,QACEC,KAAM,KACNE,UAAW,oBAGdvC,OAIC10B,SAAS06B,iBAAiB,wBAAwB,KACpD16B,SAAS06B,iBAAiB,wBAAwB,GAAG5F,iBAAiB,YAAa,SAAUsG,GAC3FZ,MAGFx6B,SAAS06B,iBAAiB,wBAAwB,GAAG5F,iBAAiB,WAAY,SAAUsG,GAC1FT,OAaJQ,EAAerG,iBAAiB,SAAU,WACxC,GAAIwG,GAAOH,EAAe/G,QAAQ+G,EAAeI,eAAe17C,KAChE,OAAY,MAARy7C,MACFnN,QAAOqN,SAAS3+B,QAAQ,0BAG1BsxB,QAAOqN,SAAS3+B,QAAQ,qBAAuBy+B,EAAO,aAiBrDG,sBAAuB,GAAIC,yBAA0B,UAAc","file":"main.js","sourcesContent":["\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;if (!u && a) return a(o, !0);if (i) return i(o, !0);var f = new Error(\"Cannot find module '\" + o + \"'\");throw f.code = \"MODULE_NOT_FOUND\", f;\n }var l = n[o] = { exports: {} };t[o][0].call(l.exports, function (e) {\n var n = t[o][1][e];return s(n ? n : e);\n }, l, l.exports, e, t, n, r);\n }return n[o].exports;\n }var i = typeof require == \"function\" && require;for (var o = 0; o < r.length; o++) {\n s(r[o]);\n }return s;\n})({ 1: [function (require, module, exports) {\n // https://d3js.org/d3-array/ Version 1.2.1. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n var ascending = function ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n };\n\n var bisector = function bisector(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n }\n return lo;\n },\n right: function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;else lo = mid + 1;\n }\n return lo;\n }\n };\n };\n\n function ascendingComparator(f) {\n return function (d, x) {\n return ascending(f(d), x);\n };\n }\n\n var ascendingBisect = bisector(ascending);\n var bisectRight = ascendingBisect.right;\n var bisectLeft = ascendingBisect.left;\n\n var pairs = function pairs(array, f) {\n if (f == null) f = pair;\n var i = 0,\n n = array.length - 1,\n p = array[0],\n pairs = new Array(n < 0 ? 0 : n);\n while (i < n) {\n pairs[i] = f(p, p = array[++i]);\n }return pairs;\n };\n\n function pair(a, b) {\n return [a, b];\n }\n\n var cross = function cross(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n };\n\n var descending = function descending(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n\n var number = function number(x) {\n return x === null ? NaN : +x;\n };\n\n var variance = function variance(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n } else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n };\n\n var deviation = function deviation(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n };\n\n var extent = function extent(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n } else {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n };\n\n var array = Array.prototype;\n\n var slice = array.slice;\n var map = array.map;\n\n var constant = function constant(x) {\n return function () {\n return x;\n };\n };\n\n var identity = function identity(x) {\n return x;\n };\n\n var range = function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n };\n\n var e10 = Math.sqrt(50);\n var e5 = Math.sqrt(10);\n var e2 = Math.sqrt(2);\n\n var ticks = function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n };\n\n function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n }\n\n function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;else if (error >= e5) step1 *= 5;else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n }\n\n var sturges = function sturges(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n };\n\n var histogram = function histogram() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) {\n tz.shift(), --m;\n }while (tz[m - 1] > x1) {\n tz.pop(), --m;\n }var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisectRight(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function (_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function (_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function (_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n };\n\n var quantile = function quantile(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n };\n\n var freedmanDiaconis = function freedmanDiaconis(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n };\n\n var scott = function scott(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n };\n\n var max = function max(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n } else {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n };\n\n var mean = function mean(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;else --m;\n }\n } else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;else --m;\n }\n }\n\n if (m) return sum / m;\n };\n\n var median = function median(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n } else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n };\n\n var merge = function merge(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) {\n j += arrays[i].length;\n }merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n };\n\n var min = function min(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n } else {\n while (++i < n) {\n // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) {\n // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n };\n\n var permute = function permute(array, indexes) {\n var i = indexes.length,\n permutes = new Array(i);\n while (i--) {\n permutes[i] = array[indexes[i]];\n }return permutes;\n };\n\n var scan = function scan(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n };\n\n var shuffle = function shuffle(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n };\n\n var sum = function sum(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n } else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n };\n\n var transpose = function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n\n function length(d) {\n return d.length;\n }\n\n var zip = function zip() {\n return transpose(arguments);\n };\n\n exports.bisect = bisectRight;\n exports.bisectRight = bisectRight;\n exports.bisectLeft = bisectLeft;\n exports.ascending = ascending;\n exports.bisector = bisector;\n exports.cross = cross;\n exports.descending = descending;\n exports.deviation = deviation;\n exports.extent = extent;\n exports.histogram = histogram;\n exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n exports.thresholdScott = scott;\n exports.thresholdSturges = sturges;\n exports.max = max;\n exports.mean = mean;\n exports.median = median;\n exports.merge = merge;\n exports.min = min;\n exports.pairs = pairs;\n exports.permute = permute;\n exports.quantile = quantile;\n exports.range = range;\n exports.scan = scan;\n exports.shuffle = shuffle;\n exports.sum = sum;\n exports.ticks = ticks;\n exports.tickIncrement = tickIncrement;\n exports.tickStep = tickStep;\n exports.transpose = transpose;\n exports.variance = variance;\n exports.zip = zip;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 2: [function (require, module, exports) {\n // https://d3js.org/d3-collection/ Version 1.0.4. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n var prefix = \"$\";\n\n function Map() {}\n\n Map.prototype = map.prototype = {\n constructor: Map,\n has: function has(key) {\n return prefix + key in this;\n },\n get: function get(key) {\n return this[prefix + key];\n },\n set: function set(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function remove(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function clear() {\n for (var property in this) {\n if (property[0] === prefix) delete this[property];\n }\n },\n keys: function keys() {\n var keys = [];\n for (var property in this) {\n if (property[0] === prefix) keys.push(property.slice(1));\n }return keys;\n },\n values: function values() {\n var values = [];\n for (var property in this) {\n if (property[0] === prefix) values.push(this[property]);\n }return values;\n },\n entries: function entries() {\n var entries = [];\n for (var property in this) {\n if (property[0] === prefix) entries.push({ key: property.slice(1), value: this[property] });\n }return entries;\n },\n size: function size() {\n var size = 0;\n for (var property in this) {\n if (property[0] === prefix) ++size;\n }return size;\n },\n empty: function empty() {\n for (var property in this) {\n if (property[0] === prefix) return false;\n }return true;\n },\n each: function each(f) {\n for (var property in this) {\n if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n }\n };\n\n function map(object, f) {\n var map = new Map();\n\n // Copy constructor.\n if (object instanceof Map) object.each(function (value, key) {\n map.set(key, value);\n });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) {\n map.set(i, object[i]);\n } else while (++i < n) {\n map.set(f(o = object[i], i, object), o);\n }\n }\n\n // Convert object to map.\n else if (object) for (var key in object) {\n map.set(key, object[key]);\n }return map;\n }\n\n var nest = function nest() {\n var keys = [],\n _sortKeys = [],\n _sortValues,\n _rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (_sortValues != null) array.sort(_sortValues);\n return _rollup != null ? _rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function (values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function _entries(map$$1, depth) {\n if (++depth > keys.length) return map$$1;\n var array,\n sortKey = _sortKeys[depth - 1];\n if (_rollup != null && depth >= keys.length) array = map$$1.entries();else array = [], map$$1.each(function (v, k) {\n array.push({ key: k, values: _entries(v, depth) });\n });\n return sortKey != null ? array.sort(function (a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n\n return nest = {\n object: function object(array) {\n return apply(array, 0, createObject, setObject);\n },\n map: function map(array) {\n return apply(array, 0, createMap, setMap);\n },\n entries: function entries(array) {\n return _entries(apply(array, 0, createMap, setMap), 0);\n },\n key: function key(d) {\n keys.push(d);return nest;\n },\n sortKeys: function sortKeys(order) {\n _sortKeys[keys.length - 1] = order;return nest;\n },\n sortValues: function sortValues(order) {\n _sortValues = order;return nest;\n },\n rollup: function rollup(f) {\n _rollup = f;return nest;\n }\n };\n };\n\n function createObject() {\n return {};\n }\n\n function setObject(object, key, value) {\n object[key] = value;\n }\n\n function createMap() {\n return map();\n }\n\n function setMap(map$$1, key, value) {\n map$$1.set(key, value);\n }\n\n function Set() {}\n\n var proto = map.prototype;\n\n Set.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function add(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n };\n\n function set(object, f) {\n var set = new Set();\n\n // Copy constructor.\n if (object instanceof Set) object.each(function (value) {\n set.add(value);\n });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1,\n n = object.length;\n if (f == null) while (++i < n) {\n set.add(object[i]);\n } else while (++i < n) {\n set.add(f(object[i], i, object));\n }\n }\n\n return set;\n }\n\n var keys = function keys(map) {\n var keys = [];\n for (var key in map) {\n keys.push(key);\n }return keys;\n };\n\n var values = function values(map) {\n var values = [];\n for (var key in map) {\n values.push(map[key]);\n }return values;\n };\n\n var entries = function entries(map) {\n var entries = [];\n for (var key in map) {\n entries.push({ key: key, value: map[key] });\n }return entries;\n };\n\n exports.nest = nest;\n exports.set = set;\n exports.map = map;\n exports.keys = keys;\n exports.values = values;\n exports.entries = entries;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 3: [function (require, module, exports) {\n // https://d3js.org/d3-color/ Version 1.0.3. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n var define = function define(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n };\n\n function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) {\n prototype[key] = definition[key];\n }return prototype;\n }\n\n function Color() {}\n\n var _darker = 0.7;\n var _brighter = 1 / _darker;\n\n var reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\";\n var reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\";\n var reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\";\n var reHex3 = /^#([0-9a-f]{3})$/;\n var reHex6 = /^#([0-9a-f]{6})$/;\n var reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\");\n var reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\");\n var reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\");\n var reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\");\n var reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\");\n var reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\n var named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n };\n\n define(Color, color, {\n displayable: function displayable() {\n return this.rgb().displayable();\n },\n toString: function toString() {\n return this.rgb() + \"\";\n }\n });\n\n function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb(m >> 8 & 0xf | m >> 4 & 0x0f0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n ) : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n }\n\n function rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n }\n\n function rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n }\n\n function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n }\n\n function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n }\n\n function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n }\n\n define(Rgb, rgb, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function rgb() {\n return this;\n },\n displayable: function displayable() {\n return 0 <= this.r && this.r <= 255 && 0 <= this.g && this.g <= 255 && 0 <= this.b && this.b <= 255 && 0 <= this.opacity && this.opacity <= 1;\n },\n toString: function toString() {\n var a = this.opacity;a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \" + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \" + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n }));\n\n function hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n }\n\n function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n }\n\n function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n }\n\n function Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n }\n\n define(Hsl, hsl, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n },\n displayable: function displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n }\n }));\n\n /* From FvD 13.37, CSS Color Module Level 3 */\n function hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n }\n\n var deg2rad = Math.PI / 180;\n var rad2deg = 180 / Math.PI;\n\n var Kn = 18;\n var Xn = 0.950470;\n var Yn = 1;\n var Zn = 1.088830;\n var t0 = 4 / 29;\n var t1 = 6 / 29;\n var t2 = 3 * t1 * t1;\n var t3 = t1 * t1 * t1;\n\n function labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var b = rgb2xyz(o.r),\n a = rgb2xyz(o.g),\n l = rgb2xyz(o.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n }\n\n function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n }\n\n function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n }\n\n define(Lab, lab, extend(Color, {\n brighter: function brighter(k) {\n return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function darker(k) {\n return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Rgb(xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z), xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z), this.opacity);\n }\n }));\n\n function xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n }\n\n function lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n }\n\n function xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n }\n\n function rgb2xyz(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n }\n\n function hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n }\n\n function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n }\n\n function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n }\n\n define(Hcl, hcl, extend(Color, {\n brighter: function brighter(k) {\n return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n },\n darker: function darker(k) {\n return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n },\n rgb: function rgb() {\n return labConvert(this).rgb();\n }\n }));\n\n var A = -0.14861;\n var B = +1.78277;\n var C = -0.29227;\n var D = -0.90649;\n var E = +1.97294;\n var ED = E * D;\n var EB = E * B;\n var BC_DA = B * C - D * A;\n\n function cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)),\n // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n }\n\n function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n }\n\n function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n }\n\n define(Cubehelix, cubehelix, extend(Color, {\n brighter: function brighter(k) {\n k = k == null ? _brighter : Math.pow(_brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function darker(k) {\n k = k == null ? _darker : Math.pow(_darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity);\n }\n }));\n\n exports.color = color;\n exports.rgb = rgb;\n exports.hsl = hsl;\n exports.lab = lab;\n exports.hcl = hcl;\n exports.cubehelix = cubehelix;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 4: [function (require, module, exports) {\n // https://d3js.org/d3-ease/ Version 1.0.3. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n function linear(t) {\n return +t;\n }\n\n function quadIn(t) {\n return t * t;\n }\n\n function quadOut(t) {\n return t * (2 - t);\n }\n\n function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n }\n\n function cubicIn(t) {\n return t * t * t;\n }\n\n function cubicOut(t) {\n return --t * t * t + 1;\n }\n\n function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n }\n\n var exponent = 3;\n\n var polyIn = function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n }(exponent);\n\n var polyOut = function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n }(exponent);\n\n var polyInOut = function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n }(exponent);\n\n var pi = Math.PI;\n var halfPi = pi / 2;\n\n function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n }\n\n function sinOut(t) {\n return Math.sin(t * halfPi);\n }\n\n function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n }\n\n function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n }\n\n function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n }\n\n function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n }\n\n function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n\n function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n }\n\n function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n }\n\n var b1 = 4 / 11;\n var b2 = 6 / 11;\n var b3 = 8 / 11;\n var b4 = 3 / 4;\n var b5 = 9 / 11;\n var b6 = 10 / 11;\n var b7 = 15 / 16;\n var b8 = 21 / 22;\n var b9 = 63 / 64;\n var b0 = 1 / b1 / b1;\n\n function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n }\n\n function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n }\n\n function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n }\n\n var overshoot = 1.70158;\n\n var backIn = function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n }(overshoot);\n\n var backOut = function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n }(overshoot);\n\n var backInOut = function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n }(overshoot);\n\n var tau = 2 * Math.PI;\n var amplitude = 1;\n var period = 0.3;\n\n var elasticIn = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticIn.period = function (p) {\n return custom(a, p);\n };\n\n return elasticIn;\n }(amplitude, period);\n\n var elasticOut = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticOut.period = function (p) {\n return custom(a, p);\n };\n\n return elasticOut;\n }(amplitude, period);\n\n var elasticInOut = function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0 ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p) : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function (a) {\n return custom(a, p * tau);\n };\n elasticInOut.period = function (p) {\n return custom(a, p);\n };\n\n return elasticInOut;\n }(amplitude, period);\n\n exports.easeLinear = linear;\n exports.easeQuad = quadInOut;\n exports.easeQuadIn = quadIn;\n exports.easeQuadOut = quadOut;\n exports.easeQuadInOut = quadInOut;\n exports.easeCubic = cubicInOut;\n exports.easeCubicIn = cubicIn;\n exports.easeCubicOut = cubicOut;\n exports.easeCubicInOut = cubicInOut;\n exports.easePoly = polyInOut;\n exports.easePolyIn = polyIn;\n exports.easePolyOut = polyOut;\n exports.easePolyInOut = polyInOut;\n exports.easeSin = sinInOut;\n exports.easeSinIn = sinIn;\n exports.easeSinOut = sinOut;\n exports.easeSinInOut = sinInOut;\n exports.easeExp = expInOut;\n exports.easeExpIn = expIn;\n exports.easeExpOut = expOut;\n exports.easeExpInOut = expInOut;\n exports.easeCircle = circleInOut;\n exports.easeCircleIn = circleIn;\n exports.easeCircleOut = circleOut;\n exports.easeCircleInOut = circleInOut;\n exports.easeBounce = bounceOut;\n exports.easeBounceIn = bounceIn;\n exports.easeBounceOut = bounceOut;\n exports.easeBounceInOut = bounceInOut;\n exports.easeBack = backInOut;\n exports.easeBackIn = backIn;\n exports.easeBackOut = backOut;\n exports.easeBackInOut = backInOut;\n exports.easeElastic = elasticOut;\n exports.easeElasticIn = elasticIn;\n exports.easeElasticOut = elasticOut;\n exports.easeElasticInOut = elasticInOut;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 5: [function (require, module, exports) {\n // https://d3js.org/d3-format/ Version 1.2.0. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n // Computes the decimal coefficient and exponent of the specified number x with\n // significant digits p, where x is positive and p is in [1, 21] or undefined.\n // For example, formatDecimal(1.23) returns [\"123\", 0].\n\n var formatDecimal = function formatDecimal(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i,\n coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)];\n };\n\n var exponent = function exponent(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n };\n\n var formatGroup = function formatGroup(grouping, thousands) {\n return function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n };\n\n var formatNumerals = function formatNumerals(numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n };\n\n var formatDefault = function formatDefault(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\":\n i0 = i1 = i;break;\n case \"0\":\n if (i0 === 0) i0 = i;i1 = i;break;\n case \"e\":\n break out;\n default:\n if (i0 > 0) i0 = 0;break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n };\n\n var prefixExponent;\n\n var formatPrefixAuto = function formatPrefixAuto(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n };\n\n var formatRounded = function formatRounded(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n };\n\n var formatTypes = {\n \"\": formatDefault,\n \"%\": function _(x, p) {\n return (x * 100).toFixed(p);\n },\n \"b\": function b(x) {\n return Math.round(x).toString(2);\n },\n \"c\": function c(x) {\n return x + \"\";\n },\n \"d\": function d(x) {\n return Math.round(x).toString(10);\n },\n \"e\": function e(x, p) {\n return x.toExponential(p);\n },\n \"f\": function f(x, p) {\n return x.toFixed(p);\n },\n \"g\": function g(x, p) {\n return x.toPrecision(p);\n },\n \"o\": function o(x) {\n return Math.round(x).toString(8);\n },\n \"p\": function p(x, _p) {\n return formatRounded(x * 100, _p);\n },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function X(x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n \"x\": function x(_x) {\n return Math.round(_x).toString(16);\n }\n };\n\n // [[fill]align][sign][symbol][0][width][,][.precision][type]\n var re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\n function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n }\n\n formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\n function FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n }\n\n FormatSpecifier.prototype.toString = function () {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width == null ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0)) + this.type;\n };\n\n var identity = function identity(x) {\n return x;\n };\n\n var prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n\n var formatLocale = function formatLocale(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? type ? 6 : 12 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i,\n n,\n c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : \"-\" : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;break;\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;break;\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);break;\n default:\n value = padding + valuePrefix + value + valueSuffix;break;\n }\n\n return numerals(value);\n }\n\n format.toString = function () {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n };\n\n var locale;\n\n defaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n });\n\n function defaultLocale(definition) {\n locale = formatLocale(definition);\n exports.format = locale.format;\n exports.formatPrefix = locale.formatPrefix;\n return locale;\n }\n\n var precisionFixed = function precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n };\n\n var precisionPrefix = function precisionPrefix(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n };\n\n var precisionRound = function precisionRound(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n };\n\n exports.formatDefaultLocale = defaultLocale;\n exports.formatLocale = formatLocale;\n exports.formatSpecifier = formatSpecifier;\n exports.precisionFixed = precisionFixed;\n exports.precisionPrefix = precisionPrefix;\n exports.precisionRound = precisionRound;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 6: [function (require, module, exports) {\n // https://d3js.org/d3-interpolate/ Version 1.1.5. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) : typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) : factory(global.d3 = global.d3 || {}, global.d3);\n })(this, function (exports, d3Color) {\n 'use strict';\n\n function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1,\n t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;\n }\n\n var basis$1 = function basis$1(values) {\n var n = values.length - 1;\n return function (t) {\n var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n };\n\n var basisClosed = function basisClosed(values) {\n var n = values.length;\n return function (t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n };\n\n var constant = function constant(x) {\n return function () {\n return x;\n };\n };\n\n function linear(a, d) {\n return function (t) {\n return a + t * d;\n };\n }\n\n function exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n return Math.pow(a + t * b, y);\n };\n }\n\n function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n }\n\n function gamma(y) {\n return (y = +y) === 1 ? nogamma : function (a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n }\n\n function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n }\n\n var rgb$1 = function rgbGamma(y) {\n var color$$1 = gamma(y);\n\n function rgb$$1(start, end) {\n var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),\n g = color$$1(start.g, end.g),\n b = color$$1(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb$$1.gamma = rgbGamma;\n\n return rgb$$1;\n }(1);\n\n function rgbSpline(spline) {\n return function (colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i,\n color$$1;\n for (i = 0; i < n; ++i) {\n color$$1 = d3Color.rgb(colors[i]);\n r[i] = color$$1.r || 0;\n g[i] = color$$1.g || 0;\n b[i] = color$$1.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color$$1.opacity = 1;\n return function (t) {\n color$$1.r = r(t);\n color$$1.g = g(t);\n color$$1.b = b(t);\n return color$$1 + \"\";\n };\n };\n }\n\n var rgbBasis = rgbSpline(basis$1);\n var rgbBasisClosed = rgbSpline(basisClosed);\n\n var array = function array(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(nb),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) {\n x[i] = value(a[i], b[i]);\n }for (; i < nb; ++i) {\n c[i] = b[i];\n }return function (t) {\n for (i = 0; i < na; ++i) {\n c[i] = x[i](t);\n }return c;\n };\n };\n\n var date = function date(a, b) {\n var d = new Date();\n return a = +a, b -= a, function (t) {\n return d.setTime(a + b * t), d;\n };\n };\n\n var number = function number(a, b) {\n return a = +a, b -= a, function (t) {\n return a + b * t;\n };\n };\n\n var object = function object(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || (typeof a === \"undefined\" ? \"undefined\" : _typeof(a)) !== \"object\") a = {};\n if (b === null || (typeof b === \"undefined\" ? \"undefined\" : _typeof(b)) !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }return c;\n };\n };\n\n var reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\n var reB = new RegExp(reA.source, \"g\");\n\n function zero(b) {\n return function () {\n return b;\n };\n }\n\n function one(b) {\n return function (t) {\n return b(t) + \"\";\n };\n }\n\n var string = function string(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0,\n // scan index for next number in b\n am,\n // current match in a\n bm,\n // current match in b\n bs,\n // string preceding current number in b, if any\n i = -1,\n // index in s\n s = [],\n // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else {\n // interpolate non-matching numbers\n s[++i] = null;\n q.push({ i: i, x: number(am, bm) });\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) {\n s[(o = q[i]).i] = o.x(t);\n }return s.join(\"\");\n });\n };\n\n var value = function value(a, b) {\n var t = typeof b === \"undefined\" ? \"undefined\" : _typeof(b),\n c;\n return b == null || t === \"boolean\" ? constant(b) : (t === \"number\" ? number : t === \"string\" ? (c = d3Color.color(b)) ? (b = c, rgb$1) : string : b instanceof d3Color.color ? rgb$1 : b instanceof Date ? date : Array.isArray(b) ? array : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : number)(a, b);\n };\n\n var round = function round(a, b) {\n return a = +a, b -= a, function (t) {\n return Math.round(a + b * t);\n };\n };\n\n var degrees = 180 / Math.PI;\n\n var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n };\n\n var decompose = function decompose(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n };\n\n var cssNode;\n var cssRoot;\n var cssView;\n var svgNode;\n\n function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n }\n\n function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n }\n\n function interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({ i: i - 4, x: number(xa, xb) }, { i: i - 2, x: number(ya, yb) });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path\n q.push({ i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b) });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({ i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b) });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({ i: i - 4, x: number(xa, xb) }, { i: i - 2, x: number(ya, yb) });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function (a, b) {\n var s = [],\n // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n while (++i < n) {\n s[(o = q[i]).i] = o.x(t);\n }return s.join(\"\");\n };\n };\n }\n\n var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\n var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\n var rho = Math.SQRT2;\n var rho2 = 2;\n var rho4 = 4;\n var epsilon2 = 1e-12;\n\n function cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n\n function sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n\n function tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n var zoom = function zoom(p0, p1) {\n var ux0 = p0[0],\n uy0 = p0[1],\n w0 = p0[2],\n ux1 = p1[0],\n uy1 = p1[1],\n w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function i(t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(rho * t * S)];\n };\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function i(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / cosh(rho * s + r0)];\n };\n }\n\n i.duration = S * 1000;\n\n return i;\n };\n\n function hsl$1(hue$$1) {\n return function (start, end) {\n var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n }\n\n var hsl$2 = hsl$1(hue);\n var hslLong = hsl$1(nogamma);\n\n function lab$1(start, end) {\n var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),\n a = nogamma(start.a, end.a),\n b = nogamma(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n function hcl$1(hue$$1) {\n return function (start, end) {\n var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),\n c = nogamma(start.c, end.c),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n }\n\n var hcl$2 = hcl$1(hue);\n var hclLong = hcl$1(nogamma);\n\n function cubehelix$1(hue$$1) {\n return function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix$$1(start, end) {\n var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix$$1.gamma = cubehelixGamma;\n\n return cubehelix$$1;\n }(1);\n }\n\n var cubehelix$2 = cubehelix$1(hue);\n var cubehelixLong = cubehelix$1(nogamma);\n\n var quantize = function quantize(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) {\n samples[i] = interpolator(i / (n - 1));\n }return samples;\n };\n\n exports.interpolate = value;\n exports.interpolateArray = array;\n exports.interpolateBasis = basis$1;\n exports.interpolateBasisClosed = basisClosed;\n exports.interpolateDate = date;\n exports.interpolateNumber = number;\n exports.interpolateObject = object;\n exports.interpolateRound = round;\n exports.interpolateString = string;\n exports.interpolateTransformCss = interpolateTransformCss;\n exports.interpolateTransformSvg = interpolateTransformSvg;\n exports.interpolateZoom = zoom;\n exports.interpolateRgb = rgb$1;\n exports.interpolateRgbBasis = rgbBasis;\n exports.interpolateRgbBasisClosed = rgbBasisClosed;\n exports.interpolateHsl = hsl$2;\n exports.interpolateHslLong = hslLong;\n exports.interpolateLab = lab$1;\n exports.interpolateHcl = hcl$2;\n exports.interpolateHclLong = hclLong;\n exports.interpolateCubehelix = cubehelix$2;\n exports.interpolateCubehelixLong = cubehelixLong;\n exports.quantize = quantize;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, { \"d3-color\": 3 }], 7: [function (require, module, exports) {\n // https://d3js.org/d3-scale/ Version 1.0.6. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array'), require('d3-collection'), require('d3-interpolate'), require('d3-format'), require('d3-time'), require('d3-time-format'), require('d3-color')) : typeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-collection', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format', 'd3-color'], factory) : factory(global.d3 = global.d3 || {}, global.d3, global.d3, global.d3, global.d3, global.d3, global.d3, global.d3);\n })(this, function (exports, d3Array, d3Collection, d3Interpolate, d3Format, d3Time, d3TimeFormat, d3Color) {\n 'use strict';\n\n var array = Array.prototype;\n\n var map$1 = array.map;\n var slice = array.slice;\n\n var implicit = { name: \"implicit\" };\n\n function ordinal(range$$1) {\n var index = d3Collection.map(),\n domain = [],\n unknown = implicit;\n\n range$$1 = range$$1 == null ? [] : slice.call(range$$1);\n\n function scale(d) {\n var key = d + \"\",\n i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range$$1[(i - 1) % range$$1.length];\n }\n\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = d3Collection.map();\n var i = -1,\n n = _.length,\n d,\n key;\n while (++i < n) {\n if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n }return scale;\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = slice.call(_), scale) : range$$1.slice();\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function () {\n return ordinal().domain(domain).range(range$$1).unknown(unknown);\n };\n\n return scale;\n }\n\n function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range$$1 = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range$$1[1] < range$$1[0],\n start = range$$1[reverse - 0],\n stop = range$$1[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = d3Array.range(n).map(function (i) {\n return start + step * i;\n });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice();\n };\n\n scale.rangeRound = function (_) {\n return range$$1 = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function () {\n return bandwidth;\n };\n\n scale.step = function () {\n return step;\n };\n\n scale.round = function (_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function (_) {\n return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function (_) {\n return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function (_) {\n return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n };\n\n scale.align = function (_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function () {\n return band().domain(domain()).range(range$$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n\n return rescale();\n }\n\n function pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function () {\n return pointish(copy());\n };\n\n return scale;\n }\n\n function point() {\n return pointish(band().paddingInner(1));\n }\n\n var constant = function constant(x) {\n return function () {\n return x;\n };\n };\n\n var number = function number(x) {\n return +x;\n };\n\n var unit = [0, 1];\n\n function deinterpolateLinear(a, b) {\n return (b -= a = +a) ? function (x) {\n return (x - a) / b;\n } : constant(b);\n }\n\n function deinterpolateClamp(deinterpolate) {\n return function (a, b) {\n var d = deinterpolate(a = +a, b = +b);\n return function (x) {\n return x <= a ? 0 : x >= b ? 1 : d(x);\n };\n };\n }\n\n function reinterpolateClamp(reinterpolate) {\n return function (a, b) {\n var r = reinterpolate(a = +a, b = +b);\n return function (t) {\n return t <= 0 ? a : t >= 1 ? b : r(t);\n };\n };\n }\n\n function bimap(domain, range$$1, deinterpolate, reinterpolate) {\n var d0 = domain[0],\n d1 = domain[1],\n r0 = range$$1[0],\n r1 = range$$1[1];\n if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n return function (x) {\n return r0(d0(x));\n };\n }\n\n function polymap(domain, range$$1, deinterpolate, reinterpolate) {\n var j = Math.min(domain.length, range$$1.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range$$1 = range$$1.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = deinterpolate(domain[i], domain[i + 1]);\n r[i] = reinterpolate(range$$1[i], range$$1[i + 1]);\n }\n\n return function (x) {\n var i = d3Array.bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n }\n\n function copy(source, target) {\n return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp());\n }\n\n // deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n // reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\n function continuous(deinterpolate, reinterpolate) {\n var domain = unit,\n range$$1 = unit,\n interpolate$$1 = d3Interpolate.interpolate,\n clamp = false,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range$$1.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return (output || (output = piecewise(domain, range$$1, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x);\n }\n\n scale.invert = function (y) {\n return (input || (input = piecewise(range$$1, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n };\n\n scale.domain = function (_) {\n return arguments.length ? (domain = map$1.call(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();\n };\n\n scale.rangeRound = function (_) {\n return range$$1 = slice.call(_), interpolate$$1 = d3Interpolate.interpolateRound, rescale();\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, rescale()) : clamp;\n };\n\n scale.interpolate = function (_) {\n return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;\n };\n\n return rescale();\n }\n\n var tickFormat = function tickFormat(domain, count, specifier) {\n var start = domain[0],\n stop = domain[domain.length - 1],\n step = d3Array.tickStep(start, stop, count == null ? 10 : count),\n precision;\n specifier = d3Format.formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\":\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision;\n return d3Format.formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\":\n {\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\":\n {\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return d3Format.format(specifier);\n };\n\n function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function (count) {\n var d = domain();\n return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function (count, specifier) {\n return tickFormat(domain(), count, specifier);\n };\n\n scale.nice = function (count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = d3Array.tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = d3Array.tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = d3Array.tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n }\n\n function linear() {\n var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber);\n\n scale.copy = function () {\n return copy(scale, linear());\n };\n\n return linearish(scale);\n }\n\n function identity() {\n var domain = [0, 1];\n\n function scale(x) {\n return +x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function (_) {\n return arguments.length ? (domain = map$1.call(_, number), scale) : domain.slice();\n };\n\n scale.copy = function () {\n return identity().domain(domain);\n };\n\n return linearish(scale);\n }\n\n var nice = function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n };\n\n function deinterpolate(a, b) {\n return (b = Math.log(b / a)) ? function (x) {\n return Math.log(x / a) / b;\n } : constant(b);\n }\n\n function reinterpolate(a, b) {\n return a < 0 ? function (t) {\n return -Math.pow(-b, t) * Math.pow(-a, 1 - t);\n } : function (t) {\n return Math.pow(b, t) * Math.pow(a, 1 - t);\n };\n }\n\n function pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n }\n\n function powp(base) {\n return base === 10 ? pow10 : base === Math.E ? Math.exp : function (x) {\n return Math.pow(base, x);\n };\n }\n\n function logp(base) {\n return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), function (x) {\n return Math.log(x) / base;\n });\n }\n\n function reflect(f) {\n return function (x) {\n return -f(-x);\n };\n }\n\n function log() {\n var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n domain = scale.domain,\n base = 10,\n logs = logp(10),\n pows = powp(10);\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n return scale;\n }\n\n scale.base = function (_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function (count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function (count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = d3Format.format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function (d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function () {\n return domain(nice(domain(), {\n floor: function floor(x) {\n return pows(Math.floor(logs(x)));\n },\n ceil: function ceil(x) {\n return pows(Math.ceil(logs(x)));\n }\n }));\n };\n\n scale.copy = function () {\n return copy(scale, log().base(base));\n };\n\n return scale;\n }\n\n function raise(x, exponent) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n }\n\n function pow() {\n var exponent = 1,\n scale = continuous(deinterpolate, reinterpolate),\n domain = scale.domain;\n\n function deinterpolate(a, b) {\n return (b = raise(b, exponent) - (a = raise(a, exponent))) ? function (x) {\n return (raise(x, exponent) - a) / b;\n } : constant(b);\n }\n\n function reinterpolate(a, b) {\n b = raise(b, exponent) - (a = raise(a, exponent));\n return function (t) {\n return raise(a + b * t, 1 / exponent);\n };\n }\n\n scale.exponent = function (_) {\n return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n };\n\n scale.copy = function () {\n return copy(scale, pow().exponent(exponent));\n };\n\n return linearish(scale);\n }\n\n function sqrt() {\n return pow().exponent(0.5);\n }\n\n function quantile$1() {\n var domain = [],\n range$$1 = [],\n thresholds = [];\n\n function rescale() {\n var i = 0,\n n = Math.max(1, range$$1.length);\n thresholds = new Array(n - 1);\n while (++i < n) {\n thresholds[i - 1] = d3Array.quantile(domain, i / n);\n }return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range$$1[d3Array.bisect(thresholds, x)];\n }\n\n scale.invertExtent = function (y) {\n var i = range$$1.indexOf(y);\n return i < 0 ? [NaN, NaN] : [i > 0 ? thresholds[i - 1] : domain[0], i < thresholds.length ? thresholds[i] : domain[domain.length - 1]];\n };\n\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) {\n if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n }domain.sort(d3Array.ascending);\n return rescale();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();\n };\n\n scale.quantiles = function () {\n return thresholds.slice();\n };\n\n scale.copy = function () {\n return quantile$1().domain(domain).range(range$$1);\n };\n\n return scale;\n }\n\n function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range$$1 = [0, 1];\n\n function scale(x) {\n if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) {\n domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n }return scale;\n }\n\n scale.domain = function (_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function (_) {\n return arguments.length ? (n = (range$$1 = slice.call(_)).length - 1, rescale()) : range$$1.slice();\n };\n\n scale.invertExtent = function (y) {\n var i = range$$1.indexOf(y);\n return i < 0 ? [NaN, NaN] : i < 1 ? [x0, domain[0]] : i >= n ? [domain[n - 1], x1] : [domain[i - 1], domain[i]];\n };\n\n scale.copy = function () {\n return quantize().domain([x0, x1]).range(range$$1);\n };\n\n return linearish(scale);\n }\n\n function threshold() {\n var domain = [0.5],\n range$$1 = [0, 1],\n n = 1;\n\n function scale(x) {\n if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];\n }\n\n scale.domain = function (_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : domain.slice();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range$$1 = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : range$$1.slice();\n };\n\n scale.invertExtent = function (y) {\n var i = range$$1.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.copy = function () {\n return threshold().domain(domain).range(range$$1);\n };\n\n return scale;\n }\n\n var durationSecond = 1000;\n var durationMinute = durationSecond * 60;\n var durationHour = durationMinute * 60;\n var durationDay = durationHour * 24;\n var durationWeek = durationDay * 7;\n var durationMonth = durationDay * 30;\n var durationYear = durationDay * 365;\n\n function date(t) {\n return new Date(t);\n }\n\n function number$1(t) {\n return t instanceof Date ? +t : +new Date(+t);\n }\n\n function calendar(year, month, week, day, hour, minute, second, millisecond, format$$1) {\n var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format$$1(\".%L\"),\n formatSecond = format$$1(\":%S\"),\n formatMinute = format$$1(\"%I:%M\"),\n formatHour = format$$1(\"%I %p\"),\n formatDay = format$$1(\"%a %d\"),\n formatWeek = format$$1(\"%b %d\"),\n formatMonth = format$$1(\"%B\"),\n formatYear = format$$1(\"%Y\");\n\n var tickIntervals = [[second, 1, durationSecond], [second, 5, 5 * durationSecond], [second, 15, 15 * durationSecond], [second, 30, 30 * durationSecond], [minute, 1, durationMinute], [minute, 5, 5 * durationMinute], [minute, 15, 15 * durationMinute], [minute, 30, 30 * durationMinute], [hour, 1, durationHour], [hour, 3, 3 * durationHour], [hour, 6, 6 * durationHour], [hour, 12, 12 * durationHour], [day, 1, durationDay], [day, 2, 2 * durationDay], [week, 1, durationWeek], [month, 1, durationMonth], [month, 3, 3 * durationMonth], [year, 1, durationYear]];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = d3Array.bisector(function (i) {\n return i[2];\n }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = d3Array.tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = d3Array.tickStep(start, stop, interval);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function (y) {\n return new Date(invert(y));\n };\n\n scale.domain = function (_) {\n return arguments.length ? domain(map$1.call(_, number$1)) : domain().map(date);\n };\n\n scale.ticks = function (interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function (count, specifier) {\n return specifier == null ? tickFormat : format$$1(specifier);\n };\n\n scale.nice = function (interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step)) ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function () {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format$$1));\n };\n\n return scale;\n }\n\n var time = function time() {\n return calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n };\n\n var utcTime = function utcTime() {\n return calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n };\n\n var colors = function colors(s) {\n return s.match(/.{6}/g).map(function (x) {\n return \"#\" + x;\n });\n };\n\n var category10 = colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n\n var category20b = colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n\n var category20c = colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n\n var category20 = colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n\n var cubehelix$1 = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(300, 0.5, 0.0), d3Color.cubehelix(-240, 0.5, 1.0));\n\n var warm = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(-100, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\n var cool = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(260, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\n var rainbow = d3Color.cubehelix();\n\n var rainbow$1 = function rainbow$1(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n };\n\n function ramp(range$$1) {\n var n = range$$1.length;\n return function (t) {\n return range$$1[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n }\n\n var viridis = ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\n var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\n var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\n var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n\n function sequential(interpolator) {\n var x0 = 0,\n x1 = 1,\n clamp = false;\n\n function scale(x) {\n var t = (x - x0) / (x1 - x0);\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.domain = function (_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function () {\n return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n };\n\n return linearish(scale);\n }\n\n exports.scaleBand = band;\n exports.scalePoint = point;\n exports.scaleIdentity = identity;\n exports.scaleLinear = linear;\n exports.scaleLog = log;\n exports.scaleOrdinal = ordinal;\n exports.scaleImplicit = implicit;\n exports.scalePow = pow;\n exports.scaleSqrt = sqrt;\n exports.scaleQuantile = quantile$1;\n exports.scaleQuantize = quantize;\n exports.scaleThreshold = threshold;\n exports.scaleTime = time;\n exports.scaleUtc = utcTime;\n exports.schemeCategory10 = category10;\n exports.schemeCategory20b = category20b;\n exports.schemeCategory20c = category20c;\n exports.schemeCategory20 = category20;\n exports.interpolateCubehelixDefault = cubehelix$1;\n exports.interpolateRainbow = rainbow$1;\n exports.interpolateWarm = warm;\n exports.interpolateCool = cool;\n exports.interpolateViridis = viridis;\n exports.interpolateMagma = magma;\n exports.interpolateInferno = inferno;\n exports.interpolatePlasma = plasma;\n exports.scaleSequential = sequential;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, { \"d3-array\": 1, \"d3-collection\": 2, \"d3-color\": 3, \"d3-format\": 5, \"d3-interpolate\": 6, \"d3-time\": 9, \"d3-time-format\": 8 }], 8: [function (require, module, exports) {\n // https://d3js.org/d3-time-format/ Version 2.1.0. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) : typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) : factory(global.d3 = global.d3 || {}, global.d3);\n })(this, function (exports, d3Time) {\n 'use strict';\n\n function localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n }\n\n function utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n }\n\n function newYear(y) {\n return { y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0 };\n }\n\n function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function (string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week);\n week = d3Time.utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week);\n week = d3Time.timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function format(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function parse(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function utcFormat(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function utcParse(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n }\n\n var pads = { \"-\": \"\", \"_\": \" \", \"0\": \"0\" };\n var numberRe = /^\\s*\\d+/;\n var percentRe = /^%/;\n var requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\n function pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n\n function requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n }\n\n function formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n }\n\n function formatLookup(names) {\n var map = {},\n i = -1,\n n = names.length;\n while (++i < n) {\n map[names[i].toLowerCase()] = i;\n }return map;\n }\n\n function parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n }\n\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n\n function parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n }\n\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n }\n\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n\n function parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n }\n\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n\n function parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n }\n\n function parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0] * 1000, i + n[0].length) : -1;\n }\n\n function formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n }\n\n function formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n }\n\n function formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n }\n\n function formatDayOfYear(d, p) {\n return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n }\n\n function formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n }\n\n function formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n }\n\n function formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n }\n\n function formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n }\n\n function formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n }\n\n function formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n }\n\n function formatWeekNumberSunday(d, p) {\n return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);\n }\n\n function formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);\n return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2);\n }\n\n function formatWeekdayNumberSunday(d) {\n return d.getDay();\n }\n\n function formatWeekNumberMonday(d, p) {\n return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);\n }\n\n function formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n }\n\n function formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n }\n\n function formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n }\n\n function formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n }\n\n function formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n }\n\n function formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n }\n\n function formatUTCDayOfYear(d, p) {\n return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n }\n\n function formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n }\n\n function formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n }\n\n function formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n }\n\n function formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n }\n\n function formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n }\n\n function formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n }\n\n function formatUTCWeekNumberSunday(d, p) {\n return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n }\n\n function formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);\n return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2);\n }\n\n function formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n }\n\n function formatUTCWeekNumberMonday(d, p) {\n return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n }\n\n function formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n }\n\n function formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n }\n\n function formatUTCZone() {\n return \"+0000\";\n }\n\n function formatLiteralPercent() {\n return \"%\";\n }\n\n function formatUnixTimestamp(d) {\n return +d;\n }\n\n function formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n }\n\n var locale;\n\n defaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n\n function defaultLocale(definition) {\n locale = formatLocale(definition);\n exports.timeFormat = locale.format;\n exports.timeParse = locale.parse;\n exports.utcFormat = locale.utcFormat;\n exports.utcParse = locale.utcParse;\n return locale;\n }\n\n var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\n function formatIsoNative(date) {\n return date.toISOString();\n }\n\n var formatIso = Date.prototype.toISOString ? formatIsoNative : exports.utcFormat(isoSpecifier);\n\n function parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n }\n\n var parseIso = +new Date(\"2000-01-01T00:00:00.000Z\") ? parseIsoNative : exports.utcParse(isoSpecifier);\n\n exports.timeFormatDefaultLocale = defaultLocale;\n exports.timeFormatLocale = formatLocale;\n exports.isoFormat = formatIso;\n exports.isoParse = parseIso;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, { \"d3-time\": 9 }], 9: [function (require, module, exports) {\n // https://d3js.org/d3-time/ Version 1.0.7. Copyright 2017 Mike Bostock.\n (function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.d3 = global.d3 || {});\n })(this, function (exports) {\n 'use strict';\n\n var t0 = new Date();\n var t1 = new Date();\n\n function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function (date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function (date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function (date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function (start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do {\n range.push(new Date(+start));\n } while ((offseti(start, step), floori(start), start < stop));\n return range;\n };\n\n interval.filter = function (test) {\n return newInterval(function (date) {\n if (date >= date) while (floori(date), !test(date)) {\n date.setTime(date - 1);\n }\n }, function (date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function (start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function (step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? function (d) {\n return field(d) % step === 0;\n } : function (d) {\n return interval.count(0, d) % step === 0;\n });\n };\n }\n\n return interval;\n }\n\n var millisecond = newInterval(function () {\n // noop\n }, function (date, step) {\n date.setTime(+date + step);\n }, function (start, end) {\n return end - start;\n });\n\n // An optimized implementation for this simple case.\n millisecond.every = function (k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function (date) {\n date.setTime(Math.floor(date / k) * k);\n }, function (date, step) {\n date.setTime(+date + step * k);\n }, function (start, end) {\n return (end - start) / k;\n });\n };\n\n var milliseconds = millisecond.range;\n\n var durationSecond = 1e3;\n var durationMinute = 6e4;\n var durationHour = 36e5;\n var durationDay = 864e5;\n var durationWeek = 6048e5;\n\n var second = newInterval(function (date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n }, function (date, step) {\n date.setTime(+date + step * durationSecond);\n }, function (start, end) {\n return (end - start) / durationSecond;\n }, function (date) {\n return date.getUTCSeconds();\n });\n\n var seconds = second.range;\n\n var minute = newInterval(function (date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n }, function (date, step) {\n date.setTime(+date + step * durationMinute);\n }, function (start, end) {\n return (end - start) / durationMinute;\n }, function (date) {\n return date.getMinutes();\n });\n\n var minutes = minute.range;\n\n var hour = newInterval(function (date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n }, function (date, step) {\n date.setTime(+date + step * durationHour);\n }, function (start, end) {\n return (end - start) / durationHour;\n }, function (date) {\n return date.getHours();\n });\n\n var hours = hour.range;\n\n var day = newInterval(function (date) {\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setDate(date.getDate() + step);\n }, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n }, function (date) {\n return date.getDate() - 1;\n });\n\n var days = day.range;\n\n function weekday(i) {\n return newInterval(function (date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n }\n\n var sunday = weekday(0);\n var monday = weekday(1);\n var tuesday = weekday(2);\n var wednesday = weekday(3);\n var thursday = weekday(4);\n var friday = weekday(5);\n var saturday = weekday(6);\n\n var sundays = sunday.range;\n var mondays = monday.range;\n var tuesdays = tuesday.range;\n var wednesdays = wednesday.range;\n var thursdays = thursday.range;\n var fridays = friday.range;\n var saturdays = saturday.range;\n\n var month = newInterval(function (date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setMonth(date.getMonth() + step);\n }, function (start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n }, function (date) {\n return date.getMonth();\n });\n\n var months = month.range;\n\n var year = newInterval(function (date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setFullYear(date.getFullYear() + step);\n }, function (start, end) {\n return end.getFullYear() - start.getFullYear();\n }, function (date) {\n return date.getFullYear();\n });\n\n // An optimized implementation for this simple case.\n year.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function (date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n };\n\n var years = year.range;\n\n var utcMinute = newInterval(function (date) {\n date.setUTCSeconds(0, 0);\n }, function (date, step) {\n date.setTime(+date + step * durationMinute);\n }, function (start, end) {\n return (end - start) / durationMinute;\n }, function (date) {\n return date.getUTCMinutes();\n });\n\n var utcMinutes = utcMinute.range;\n\n var utcHour = newInterval(function (date) {\n date.setUTCMinutes(0, 0, 0);\n }, function (date, step) {\n date.setTime(+date + step * durationHour);\n }, function (start, end) {\n return (end - start) / durationHour;\n }, function (date) {\n return date.getUTCHours();\n });\n\n var utcHours = utcHour.range;\n\n var utcDay = newInterval(function (date) {\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n }, function (start, end) {\n return (end - start) / durationDay;\n }, function (date) {\n return date.getUTCDate() - 1;\n });\n\n var utcDays = utcDay.range;\n\n function utcWeekday(i) {\n return newInterval(function (date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function (start, end) {\n return (end - start) / durationWeek;\n });\n }\n\n var utcSunday = utcWeekday(0);\n var utcMonday = utcWeekday(1);\n var utcTuesday = utcWeekday(2);\n var utcWednesday = utcWeekday(3);\n var utcThursday = utcWeekday(4);\n var utcFriday = utcWeekday(5);\n var utcSaturday = utcWeekday(6);\n\n var utcSundays = utcSunday.range;\n var utcMondays = utcMonday.range;\n var utcTuesdays = utcTuesday.range;\n var utcWednesdays = utcWednesday.range;\n var utcThursdays = utcThursday.range;\n var utcFridays = utcFriday.range;\n var utcSaturdays = utcSaturday.range;\n\n var utcMonth = newInterval(function (date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n }, function (start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n }, function (date) {\n return date.getUTCMonth();\n });\n\n var utcMonths = utcMonth.range;\n\n var utcYear = newInterval(function (date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n }, function (start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n }, function (date) {\n return date.getUTCFullYear();\n });\n\n // An optimized implementation for this simple case.\n utcYear.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function (date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n };\n\n var utcYears = utcYear.range;\n\n exports.timeInterval = newInterval;\n exports.timeMillisecond = millisecond;\n exports.timeMilliseconds = milliseconds;\n exports.utcMillisecond = millisecond;\n exports.utcMilliseconds = milliseconds;\n exports.timeSecond = second;\n exports.timeSeconds = seconds;\n exports.utcSecond = second;\n exports.utcSeconds = seconds;\n exports.timeMinute = minute;\n exports.timeMinutes = minutes;\n exports.timeHour = hour;\n exports.timeHours = hours;\n exports.timeDay = day;\n exports.timeDays = days;\n exports.timeWeek = sunday;\n exports.timeWeeks = sundays;\n exports.timeSunday = sunday;\n exports.timeSundays = sundays;\n exports.timeMonday = monday;\n exports.timeMondays = mondays;\n exports.timeTuesday = tuesday;\n exports.timeTuesdays = tuesdays;\n exports.timeWednesday = wednesday;\n exports.timeWednesdays = wednesdays;\n exports.timeThursday = thursday;\n exports.timeThursdays = thursdays;\n exports.timeFriday = friday;\n exports.timeFridays = fridays;\n exports.timeSaturday = saturday;\n exports.timeSaturdays = saturdays;\n exports.timeMonth = month;\n exports.timeMonths = months;\n exports.timeYear = year;\n exports.timeYears = years;\n exports.utcMinute = utcMinute;\n exports.utcMinutes = utcMinutes;\n exports.utcHour = utcHour;\n exports.utcHours = utcHours;\n exports.utcDay = utcDay;\n exports.utcDays = utcDays;\n exports.utcWeek = utcSunday;\n exports.utcWeeks = utcSundays;\n exports.utcSunday = utcSunday;\n exports.utcSundays = utcSundays;\n exports.utcMonday = utcMonday;\n exports.utcMondays = utcMondays;\n exports.utcTuesday = utcTuesday;\n exports.utcTuesdays = utcTuesdays;\n exports.utcWednesday = utcWednesday;\n exports.utcWednesdays = utcWednesdays;\n exports.utcThursday = utcThursday;\n exports.utcThursdays = utcThursdays;\n exports.utcFriday = utcFriday;\n exports.utcFridays = utcFridays;\n exports.utcSaturday = utcSaturday;\n exports.utcSaturdays = utcSaturdays;\n exports.utcMonth = utcMonth;\n exports.utcMonths = utcMonths;\n exports.utcYear = utcYear;\n exports.utcYears = utcYears;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n });\n }, {}], 10: [function (require, module, exports) {\n /**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /** Used for built-in method references. */\n var objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objectToString = objectProto.toString;\n\n /** Built-in value references. */\n var propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n /** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\n var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function (object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index === \"undefined\" ? \"undefined\" : _typeof(index);\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return !!value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function (object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n module.exports = assign;\n }, {}], 11: [function (require, module, exports) {\n (function (global) {\n /**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\n function addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n }\n\n /**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\n function addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\n function isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n }\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = root['__core-js_shared__'];\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objectToString = objectProto.toString;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n /** Built-in value references. */\n var Buffer = moduleExports ? root.Buffer : undefined,\n _Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n this.__data__ = new ListCache(entries);\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache();\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n return this.__data__['delete'](key);\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n object[key] = value;\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || isFunc && !object) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function (subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n function baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n return objectToString.call(value);\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\n function cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor());\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\n function cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor());\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n }\n\n /**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11,\n // for data views in Edge < 14, and promises in Node.js.\n if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag:case float64Tag:\n case int8Tag:case int16Tag:case int32Tag:\n case uint8Tag:case uint8ClampedTag:case uint16Tag:case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, false, true);\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return !!value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n module.exports = clone;\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}], 12: [function (require, module, exports) {\n /**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /** Used for built-in method references. */\n var objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objectToString = objectProto.toString;\n\n /** Built-in value references. */\n var propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeKeys = overArg(Object.keys, Object);\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _([1, 2]).forEach(function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, typeof iteratee == 'function' ? iteratee : identity);\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return !!value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n module.exports = forEach;\n }, {}], 13: [function (require, module, exports) {\n (function (global) {\n /**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\n var dataViewTag = '[object DataView]';\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\n function isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /** Used for built-in method references. */\n var funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = root['__core-js_shared__'];\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objectToString = objectProto.toString;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n /** Built-in value references. */\n var Buffer = moduleExports ? root.Buffer : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap');\n\n /** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\n var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n return objectToString.call(value);\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11,\n // for data views in Edge < 14, and promises in Node.js.\n if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (isArrayLike(value) && (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || isBuffer(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (nonEnumShadows || isPrototype(value)) {\n return !nativeKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return !!value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n module.exports = isEmpty;\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}], 14: [function (require, module, exports) {\n (function (global) {\n /**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = function () {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }();\n\n /* Node.js helper references. */\n var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function (value) {\n return func(value);\n };\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n }\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = root['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n /** Built-in value references. */\n var Buffer = moduleExports ? root.Buffer : undefined,\n _Symbol2 = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = _Symbol2 ? _Symbol2.toStringTag : undefined;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = _Symbol2 ? _Symbol2.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache();\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') ||\n // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n\n return value === proto;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function () {\n return arguments;\n }()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) == 'object';\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n module.exports = isEqual;\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}], 15: [function (require, module, exports) {\n window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n\n /**\n * Handles debouncing of events via requestAnimationFrame\n * @see http://www.html5rocks.com/en/tutorials/speed/animations/\n * @param {Function} callback The callback to handle whichever event\n */\n function Debouncer(callback) {\n this.callback = callback;\n this.ticking = false;\n }\n Debouncer.prototype = {\n constructor: Debouncer,\n\n /**\n * dispatches the event to the supplied callback\n * @private\n */\n update: function update() {\n this.callback && this.callback();\n this.ticking = false;\n },\n\n /**\n * ensures events don't get stacked\n * @private\n */\n requestTick: function requestTick() {\n if (!this.ticking) {\n requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this)));\n this.ticking = true;\n }\n },\n\n /**\n * Attach this as the event listeners\n */\n handleEvent: function handleEvent() {\n this.requestTick();\n }\n };\n\n module.exports = Debouncer;\n }, {}], 16: [function (require, module, exports) {\n var isEqual = require('lodash.isequal'),\n forEach = require('lodash.foreach'),\n isEmpty = require('lodash.isempty'),\n cloneObject = require('lodash.clone'),\n extendObject = require('lodash.assign'),\n debouncer = require(\"./Debouncer\");\n\n function Scrllr(options) {\n options = extendObject(Scrllr.options, options);\n\n this.lastKnownScrollY = 0;\n this.initialised = false;\n this.onScrollCallback = options.onScrollCallback;\n }\n\n Scrllr.prototype = {\n constructor: Scrllr,\n\n init: function init() {\n this.debouncer = new debouncer(this.update.bind(this));\n\n // defer event registration to handle browser\n // potentially restoring previous scroll position\n setTimeout(this.attachEvent.bind(this), 100);\n\n return this;\n },\n\n attachEvent: function attachEvent() {\n if (!this.initialised) {\n this.lastKnownScrollY = this.getScrollY();\n this.initialised = true;\n\n window.addEventListener('scroll', this.debouncer, false);\n this.debouncer.handleEvent();\n }\n },\n\n getScrollY: function getScrollY() {\n return window.pageYOffset !== undefined ? window.pageYOffset : window.scrollTop !== undefined ? window.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop;\n },\n\n update: function update() {\n var currentScrollY = this.getScrollY(),\n scrollDirection = currentScrollY > this.lastKnownScrollY ? 'down' : 'up';\n\n this.onScrollCallback(currentScrollY);\n this.lastKnownScrollY = currentScrollY;\n },\n\n destroy: function destroy() {\n this.initialised = false;\n window.removeEventListener('scroll', this.debouncer, false);\n }\n\n };\n\n Scrllr.options = {\n onScrollCallback: function onScrollCallback() {}\n };\n\n module.exports = Scrllr;\n }, { \"./Debouncer\": 15, \"lodash.assign\": 10, \"lodash.clone\": 11, \"lodash.foreach\": 12, \"lodash.isempty\": 13, \"lodash.isequal\": 14 }], 17: [function (require, module, exports) {\n var Scrllr = require(\"./Scrllr.js\"),\n Scale = require(\"d3-scale\"),\n Interpolator = require(\"d3-interpolate\"),\n Ease = require(\"d3-ease\");\n\n function ScrollOver(options) {\n options = extend(options, ScrollOver.options);\n this.PROPERTIES = ['translateX', 'translateY', 'opacity', 'scale'];\n this.keyframes = options.keyframes;\n }\n\n ScrollOver.prototype = {\n constructor: ScrollOver,\n\n init: function init() {\n var _this = this;\n\n new Scrllr({ onScrollCallback: update.bind(this) }).init();\n\n this.toAnimate = this.keyframes.filter(function (item) {\n return item.animate;\n });\n this.toReveal = this.keyframes.filter(function (item) {\n return item.reveal;\n });\n\n this.toAnimate.forEach(function (keyframe) {\n if (keyframe) keyframe.animate.forEach(function (property) {\n property.scale = _this.createScale(property.property, keyframe.domain, property.range);\n });\n });\n\n function update(scrollY) {\n var _this2 = this;\n\n this.toAnimate.forEach(function (keyframe) {\n if (keyframe) _this2.updateCSSValues(keyframe.element, _this2.calculatePropertyValues(keyframe.animate, scrollY));\n });\n\n this.toReveal.forEach(function (keyframe) {\n if (keyframe) {\n if (scrollY >= keyframe.reveal.when) _this2.updateCSSClass(keyframe.element, keyframe.reveal.className);\n }\n });\n }\n\n return this;\n },\n\n calculatePropertyValues: function calculatePropertyValues(animations, scrollY) {\n var _this3 = this;\n\n var CSSValues = new Object();\n\n this.PROPERTIES.forEach(function (propertyName) {\n CSSValues[propertyName] = _this3.getDefaultPropertyValue(propertyName);\n animations.forEach(function (animation) {\n if (animation.property == propertyName) CSSValues[propertyName] = _this3.scaleValue(animation.scale, scrollY);\n });\n });\n\n return CSSValues;\n },\n\n scaleValue: function scaleValue(scale, scrollY) {\n return scale(scrollY);\n },\n\n updateCSSValues: function updateCSSValues(element, CSS) {\n element.style.transform = 'translate3d(' + CSS.translateX + 'px, ' + CSS.translateY + 'px, 0) scale(' + CSS.scale + ')';\n element.style.opacity = CSS.opacity;\n\n return element;\n },\n\n updateCSSClass: function updateCSSClass(element, className) {\n element.classList ? element.classList.add(className) : element.className += ' ' + className;\n\n return element;\n },\n\n getDefaultPropertyValue: function getDefaultPropertyValue(propertyName) {\n switch (propertyName) {\n case 'translateX':\n return 0;\n case 'translateY':\n return 0;\n case 'scale':\n return 1;\n case 'rotate':\n return 0;\n case 'opacity':\n return 1;\n default:\n return null;\n }\n },\n\n createScale: function createScale(propertyName, domain, range) {\n switch (propertyName) {\n case 'translateX':\n case 'translateY':\n case 'scale':\n case 'opacity':\n return Scale.scaleLinear().domain(domain).range(range).interpolate(this.easeInterpolate(Ease.easeCubicOut)).clamp(true);\n default:\n return null;\n }\n },\n\n easeInterpolate: function easeInterpolate(ease) {\n return function (a, b) {\n var i = Interpolator.interpolate(a, b);\n return function (t) {\n return Math.round(i(ease(t)) * 100) / 100;\n };\n };\n }\n\n };\n\n ScrollOver.options = {\n keyframes: {}\n\n /**\n * Helper function for extending objects\n */\n };function extend(object /*, objectN ... */) {\n if (arguments.length <= 0) {\n throw new Error('Missing arguments in extend function');\n }\n\n var result = object || {},\n key,\n i;\n\n for (i = 1; i < arguments.length; i++) {\n var replacement = arguments[i] || {};\n\n for (key in replacement) {\n // Recurse into object except if the object is a DOM element\n if (_typeof(result[key]) === 'object' && !isDOMElement(result[key])) {\n result[key] = extend(result[key], replacement[key]);\n } else {\n result[key] = result[key] || replacement[key];\n }\n }\n }\n\n return result;\n }\n\n /**\n * Check if object is part of the DOM\n * @constructor\n * @param {Object} obj element to check\n */\n function isDOMElement(obj) {\n return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType);\n }\n\n module.exports = ScrollOver;\n }, { \"./Scrllr.js\": 16, \"d3-ease\": 4, \"d3-interpolate\": 6, \"d3-scale\": 7 }], 18: [function (require, module, exports) {\n // AnimateScroll.js\n // Sunmock Yang Nov. 2015\n\n function animateScroll(target, duration, easing, padding, align, onFinish) {\n padding = padding ? padding : 0;\n var docElem = document.documentElement; // to facilitate minification better\n var windowHeight = docElem.clientHeight;\n var maxScroll = 'scrollMaxY' in window ? window.scrollMaxY : docElem.scrollHeight - windowHeight;\n var currentY = window.pageYOffset;\n\n var targetY = currentY;\n var elementBounds = isNaN(target) ? target.getBoundingClientRect() : 0;\n\n if (align === \"center\") {\n targetY += isNaN(target) ? elementBounds.top + elementBounds.height / 2 : target;\n targetY -= windowHeight / 2;\n targetY -= padding;\n } else if (align === \"bottom\") {\n targetY += elementBounds.bottom || target;\n targetY -= windowHeight;\n targetY += padding;\n } else {\n // top, undefined\n targetY += elementBounds.top || target;\n targetY -= padding;\n }\n targetY = Math.max(Math.min(maxScroll, targetY), 0);\n\n var deltaY = targetY - currentY;\n\n var obj = {\n targetY: targetY,\n deltaY: deltaY,\n duration: duration ? duration : 0,\n easing: easing in animateScroll.Easing ? animateScroll.Easing[easing] : animateScroll.Easing.linear,\n onFinish: onFinish,\n startTime: Date.now(),\n lastY: currentY,\n step: animateScroll.step\n };\n\n window.requestAnimationFrame(obj.step.bind(obj));\n }\n\n // Taken from gre/easing.js\n // https://gist.github.com/gre/1650294\n animateScroll.Easing = {\n linear: function linear(t) {\n return t;\n },\n easeInQuad: function easeInQuad(t) {\n return t * t;\n },\n easeOutQuad: function easeOutQuad(t) {\n return t * (2 - t);\n },\n easeInOutQuad: function easeInOutQuad(t) {\n return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n },\n easeInCubic: function easeInCubic(t) {\n return t * t * t;\n },\n easeOutCubic: function easeOutCubic(t) {\n return --t * t * t + 1;\n },\n easeInOutCubic: function easeInOutCubic(t) {\n return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n },\n easeInQuart: function easeInQuart(t) {\n return t * t * t * t;\n },\n easeOutQuart: function easeOutQuart(t) {\n return 1 - --t * t * t * t;\n },\n easeInOutQuart: function easeInOutQuart(t) {\n return t < .5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n },\n easeInQuint: function easeInQuint(t) {\n return t * t * t * t * t;\n },\n easeOutQuint: function easeOutQuint(t) {\n return 1 + --t * t * t * t * t;\n },\n easeInOutQuint: function easeInOutQuint(t) {\n return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n }\n };\n\n animateScroll.step = function () {\n if (this.lastY !== window.pageYOffset && this.onFinish) {\n this.onFinish();\n return;\n }\n\n // Calculate how much time has passed\n var t = Math.min((Date.now() - this.startTime) / this.duration, 1);\n\n // Scroll window amount determined by easing\n var y = this.targetY - (1 - this.easing(t)) * this.deltaY;\n window.scrollTo(window.scrollX, y);\n\n // Continue animation as long as duration hasn't surpassed\n if (t !== 1) {\n this.lastY = window.pageYOffset;\n window.requestAnimationFrame(this.step.bind(this));\n } else {\n if (this.onFinish) this.onFinish();\n }\n };\n\n module.exports = animateScroll;\n }, {}], 19: [function (require, module, exports) {\n var ScrollOver = require(\"./lib/ScrollOver.js\");\n var animateScroll = require(\"./lib/animatescroll.js\");\n\n var body = document.querySelectorAll(\"body\")[0];\n var tagline = document.querySelectorAll(\".tagline\")[0];\n\n var iphone = document.querySelectorAll(\".phone-wrap--iphone\")[0],\n android = document.querySelectorAll(\".phone-wrap--android\")[0],\n features = document.querySelectorAll(\".features-wrap\")[0],\n slideTwo = document.querySelectorAll(\".slide--two\")[0],\n slideThree = document.querySelectorAll(\".slide--three\")[0],\n slideSix = document.querySelectorAll(\".slide--six\")[0],\n languageSelect = document.querySelectorAll('.language-switcher')[0];\n\n setTimeout(function () {\n return body.classList.add(\"shown\");\n }, 400);\n\n document.querySelectorAll(\".button--more\")[0].addEventListener('click', function (event) {\n animateScroll(slideTwo, 600, \"easeInOutCubic\", 0);\n event.preventDefault();\n });\n\n // document.querySelectorAll(\".nav__item--features\")[0].addEventListener('click', function(event){\n // animateScroll(slideTwo, 600, \"easeInOutCubic\", 0)\n // event.preventDefault()\n // })\n //\n // document.querySelectorAll(\".nav__item--about\")[0].addEventListener('click', function(event){\n // animateScroll(slideThree, 600, \"easeInOutCubic\", 0)\n // event.preventDefault()\n // })\n\n\n new ScrollOver({\n keyframes: [{\n element: iphone,\n domain: [0, 800],\n animate: [{\n property: \"translateY\",\n range: [0, 60]\n }]\n }, {\n element: android,\n domain: [0, 800],\n animate: [{\n property: \"translateY\",\n range: [0, 110]\n }]\n }, {\n element: features,\n domain: [200, 800],\n animate: [{\n property: \"translateY\",\n range: [0, -40]\n }]\n }, {\n element: slideTwo,\n reveal: {\n when: 440,\n className: \"slide--shown\"\n }\n\n }, {\n element: slideThree,\n reveal: {\n when: 1200,\n className: \"slide--shown\"\n }\n }, {\n element: slideSix,\n reveal: {\n when: 2190,\n className: \"slide--shown\"\n }\n }]\n }).init();\n\n /*--- QR popup ---*/\n\n if (document.querySelectorAll(\".nav__item--download\")[0]) {\n document.querySelectorAll(\".nav__item--download\")[0].addEventListener('mouseover', function (event) {\n showQRPopup();\n });\n\n document.querySelectorAll(\".nav__item--download\")[0].addEventListener('mouseout', function (event) {\n hideQRPopup();\n });\n }\n\n function showQRPopup() {\n addClassToElement(document.querySelectorAll(\".qr-popup\")[0], \"qr-popup--shown\");\n }\n\n function hideQRPopup() {\n removeClassFromElement(document.querySelectorAll(\".qr-popup\")[0], \"qr-popup--shown\");\n }\n\n /*--- Language switcher ---*/\n languageSelect.addEventListener(\"change\", function () {\n var lang = languageSelect.options[languageSelect.selectedIndex].value;\n if (lang == \"en\") {\n window.location.replace(\"https://status.im/\");\n return;\n }\n window.location.replace(\"https://status.im/\" + lang + \".html\");\n });\n\n /*--- Utils ---*/\n function addClassToElement(element, className) {\n element.classList ? element.classList.add(className) : element.className += ' ' + className;\n return element;\n }\n\n function removeClassFromElement(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n return element;\n }\n }, { \"./lib/ScrollOver.js\": 17, \"./lib/animatescroll.js\": 18 }] }, {}, [19]);"]}
\ No newline at end of file
diff --git a/dist/js/mc-validate.js b/dist/js/mc-validate.js
new file mode 100644
index 0000000..406386d
--- /dev/null
+++ b/dist/js/mc-validate.js
@@ -0,0 +1,6 @@
+"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function e(t,n,r){function i(o,s){if(!n[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[o]={exports:{}};t[o][0].call(c.exports,function(e){var n=t[o][1][e];return i(n?n:e)},c,c.exports,e,t,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o0&&t-1 in e)))}function r(e){var t=we[e]={};return se.each(e.match(le)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(se.acceptData(e)){var a,o,s=se.expando,u="string"==typeof n,l=e.nodeType,c=l?se.cache:e,d=l?e[s]:e[s]&&s;if(d&&c[d]&&(i||c[d].data)||!u||r!==t)return d||(l?e[s]=d=Z.pop()||se.guid++:d=s),c[d]||(c[d]={},l||(c[d].toJSON=se.noop)),("object"==("undefined"==typeof n?"undefined":_typeof(n))||"function"==typeof n)&&(i?c[d]=se.extend(c[d],n):c[d].data=se.extend(c[d].data,n)),a=c[d],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[se.camelCase(n)]=r),u?(o=a[n],null==o&&(o=a[se.camelCase(n)])):o=a,o}}function a(e,t,n){if(se.acceptData(e)){var r,i,a,o=e.nodeType,u=o?se.cache:e,l=o?e[se.expando]:se.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){se.isArray(t)?t=t.concat(se.map(t,se.camelCase)):t in r?t=[t]:(t=se.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,a=t.length;a>i;i++)delete r[t[i]];if(!(n?s:se.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(o?se.cleanData([e],!0):se.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function o(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Ce,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r||"false"!==r&&("null"===r?null:+r+""===r?+r:Te.test(r)?se.parseJSON(r):r)}catch(a){}se.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!se.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function d(e,t,n){if(t=t||0,se.isFunction(t))return se.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return se.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=se.grep(e,function(e){return 1===e.nodeType});if(Ie.test(t))return se.filter(t,r,!n);t=se.filter(t,r)}return se.grep(e,function(e){return se.inArray(e,t)>=0===n})}function f(e){var t=$e.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function p(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function m(e){var t=nt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)se._data(n,"globalEval",!t||se._data(t[r],"globalEval"))}function v(e,t){if(1===t.nodeType&&se.hasData(e)){var n,r,i,a=se._data(e),o=se._data(t,a),s=a.events;if(s){delete o.handle,o.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)se.event.add(t,n,s[n][r])}o.data&&(o.data=se.extend({},o.data))}}function y(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!se.support.noCloneEvent&&t[se.expando]){r=se._data(t);for(i in r.events)se.removeEvent(t,i,r.handle);t.removeAttribute(se.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,m(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),se.support.html5Clone&&e.innerHTML&&!se.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ke.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,a=0,o=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!o)for(o=[],r=e.childNodes||e;null!=(i=r[a]);a++)!n||se.nodeName(i,n)?o.push(i):se.merge(o,b(i,n));return n===t||n&&se.nodeName(e,n)?se.merge([e],o):o}function x(e){Ke.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Tt.length;i--;)if(t=Tt[i]+n,t in e)return t;return r}function T(e,t){return e=t||e,"none"===se.css(e,"display")||!se.contains(e.ownerDocument,e)}function C(e,t){for(var n,r=[],i=0,a=e.length;a>i;i++)n=e[i],n.style&&(r[i]=se._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&T(n)&&(r[i]=se._data(n,"olddisplay",N(n.nodeName)))):r[i]||T(n)||se._data(n,"olddisplay",se.css(n,"display")));for(i=0;a>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function k(e,t,n){var r=mt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function F(e,t,n,r,i){for(var a=n===(r?"border":"content")?4:"width"===t?1:0,o=0;4>a;a+=2)"margin"===n&&(o+=se.css(e,n+wt[a],!0,i)),r?("content"===n&&(o-=se.css(e,"padding"+wt[a],!0,i)),"margin"!==n&&(o-=se.css(e,"border"+wt[a]+"Width",!0,i))):(o+=se.css(e,"padding"+wt[a],!0,i),"padding"!==n&&(o+=se.css(e,"border"+wt[a]+"Width",!0,i)));return o}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,a=ut(e),o=se.support.boxSizing&&"border-box"===se.css(e,"boxSizing",!1,a);if(0>=i||null==i){if(i=st(e,t,a),(0>i||null==i)&&(i=e.style[t]),gt.test(i))return i;r=o&&(se.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+F(e,t,n||(o?"border":"content"),r,a)+"px"}function N(e){var t=V,n=yt[e];return n||(n=S(e,t),"none"!==n&&n||(lt=(lt||se("").css("cssText","display:block !important")).appendTo(t.documentElement),t=(lt[0].contentWindow||lt[0].contentDocument).document,t.write(""),t.close(),n=S(e,t),lt.detach()),yt[e]=n),n}function S(e,t){var n=se(t.createElement(e)).appendTo(t.body),r=se.css(n[0],"display");return n.remove(),r}function A(e,t,n,r){var i;if(se.isArray(t))se.each(t,function(t,i){n||kt.test(e)?r(e,i):A(e+"["+("object"==("undefined"==typeof i?"undefined":_typeof(i))?t:"")+"]",i,n,r)});else if(n||"object"!==se.type(t))r(e,t);else for(i in t)A(e+"["+i+"]",t[i],n,r)}function D(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,a=t.toLowerCase().match(le)||[];if(se.isFunction(n))for(;r=a[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function j(e,n,r,i){function a(u){var l;return o[u]=!0,se.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||s||o[c]?s?!(l=c):t:(n.dataTypes.unshift(c),a(c),!1)}),l}var o={},s=e===It;return a(n.dataTypes[0])||!o["*"]&&a("*")}function _(e,n){var r,i,a=se.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((a[r]?e:i||(i={}))[r]=n[r]);return i&&se.extend(!0,e,i),e}function L(e,n,r){var i,a,o,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(a in c)a in r&&(n[c[a]]=r[a]);for(;"*"===l[0];)l.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("Content-Type"));if(i)for(a in u)if(u[a]&&u[a].test(i)){l.unshift(a);break}if(l[0]in r)o=l[0];else{for(a in r){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}s||(s=a)}o=o||s}return o?(o!==l[0]&&l.unshift(o),r[o]):t}function M(e,t){var n,r,i,a,o={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(n in e.converters)o[n.toLowerCase()]=e.converters[n];for(;i=u[++s];)if("*"!==i){if("*"!==l&&l!==i){if(n=o[l+" "+i]||o["* "+i],!n)for(r in o)if(a=r.split(" "),a[1]===i&&(n=o[l+" "+a[0]]||o["* "+a[0]])){n===!0?n=o[r]:o[r]!==!0&&(i=a[0],u.splice(s--,0,i));break}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(c){return{state:"parsererror",error:n?c:"No conversion from "+l+" to "+i}}}l=i}return{state:"success",data:t}}function q(){try{return new e.XMLHttpRequest}catch(t){}}function H(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function O(){return setTimeout(function(){Gt=t}),Gt=se.now()}function P(e,t){se.each(t,function(t,n){for(var r=(nn[t]||[]).concat(nn["*"]),i=0,a=r.length;a>i;i++)if(r[i].call(e,t,n))return})}function R(e,t,n){var r,i,a=0,o=tn.length,s=se.Deferred().always(function(){delete u.elem}),u=function d(){if(i)return!1;for(var t=Gt||O(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,a=1-r,o=0,d=l.tweens.length;d>o;o++)l.tweens[o].run(a);return s.notifyWith(e,[l,a,n]),1>a&&d?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:se.extend({},t),opts:se.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Gt||O(),duration:n.duration,tweens:[],createTween:function(t,n){var r=se.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(B(c,l.opts.specialEasing);o>a;a++)if(r=tn[a].call(l,e,c,l.opts))return r;return P(l,c),se.isFunction(l.opts.start)&&l.opts.start.call(e,l),se.fx.timer(se.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function B(e,t){var n,r,i,a,o;for(n in e)if(r=se.camelCase(n),i=t[r],a=e[n],se.isArray(a)&&(i=a[1],a=e[n]=a[0]),n!==r&&(e[r]=a,delete e[n]),o=se.cssHooks[r],o&&"expand"in o){a=o.expand(a),delete e[r];for(n in a)n in e||(e[n]=a[n],t[n]=i)}else t[r]=i}function I(e,t,n){var r,i,a,o,s,u,l,c,d,f=this,p=e.style,h={},m=[],g=e.nodeType&&T(e);n.queue||(c=se._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,d=c.empty.fire,c.empty.fire=function(){c.unqueued||d()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,se.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===se.css(e,"display")&&"none"===se.css(e,"float")&&(se.support.inlineBlockNeedsLayout&&"inline"!==N(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",se.support.shrinkWrapBlocks||f.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(a=t[r],Zt.exec(a)){if(delete t[r],u=u||"toggle"===a,a===(g?"hide":"show"))continue;m.push(r)}if(o=m.length){s=se._data(e,"fxshow")||se._data(e,"fxshow",{}),"hidden"in s&&(g=s.hidden),u&&(s.hidden=!g),g?se(e).show():f.done(function(){se(e).hide()}),f.done(function(){var t;se._removeData(e,"fxshow");for(t in h)se.style(e,t,h[t])});for(r=0;o>r;r++)i=m[r],l=f.createTween(i,g?s[i]:0),h[i]=s[i]||se.style(e,i),i in s||(s[i]=l.start,g&&(l.end=l.start,l.start="width"===i||"height"===i?1:0))}}function z(e,t,n,r,i){return new z.prototype.init(e,t,n,r,i)}function W(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=wt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function $(e){return se.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}var X,U,V=e.document,Q=e.location,Y=e.jQuery,G=e.$,J={},Z=[],K="1.9.0",ee=Z.concat,te=Z.push,ne=Z.slice,re=Z.indexOf,ie=J.toString,ae=J.hasOwnProperty,oe=K.trim,se=function rn(e,t){return new rn.fn.init(e,t,X)},ue=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,le=/\S+/g,ce=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,de=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,fe=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,pe=/^[\],:{}\s]*$/,he=/(?:^|:|,)(?:\s*\[)+/g,me=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,ge=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,ve=/^-ms-/,ye=/-([\da-z])/gi,be=function(e,t){return t.toUpperCase()},xe=function an(){V.addEventListener?(V.removeEventListener("DOMContentLoaded",an,!1),se.ready()):"complete"===V.readyState&&(V.detachEvent("onreadystatechange",an),se.ready())};se.fn=se.prototype={jquery:K,constructor:se,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:de.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof se?n[0]:n,se.merge(this,se.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:V,!0)),fe.test(i[1])&&se.isPlainObject(n))for(i in n)se.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=V.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=V,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):se.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),se.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return ne.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=se.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return se.each(this,e,t)},ready:function(e){return se.ready.promise().done(e),this},slice:function(){return this.pushStack(ne.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(se.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:te,sort:[].sort,splice:[].splice},se.fn.init.prototype=se.fn,se.extend=se.fn.extend=function(){var e,n,r,i,a,o,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==("undefined"==typeof s?"undefined":_typeof(s))||se.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(e=arguments[u]))for(n in e)r=s[n],i=e[n],s!==i&&(c&&i&&(se.isPlainObject(i)||(a=se.isArray(i)))?(a?(a=!1,o=r&&se.isArray(r)?r:[]):o=r&&se.isPlainObject(r)?r:{},s[n]=se.extend(c,o,i)):i!==t&&(s[n]=i));return s},se.extend({noConflict:function(t){return e.$===se&&(e.$=G),t&&e.jQuery===se&&(e.jQuery=Y),se},isReady:!1,readyWait:1,holdReady:function(e){e?se.readyWait++:se.ready(!0)},ready:function(e){if(e===!0?!--se.readyWait:!se.isReady){if(!V.body)return setTimeout(se.ready);se.isReady=!0,e!==!0&&--se.readyWait>0||(U.resolveWith(V,[se]),se.fn.trigger&&se(V).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===se.type(e)},isArray:Array.isArray||function(e){return"array"===se.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==("undefined"==typeof e?"undefined":_typeof(e))||"function"==typeof e?J[ie.call(e)]||"object":"undefined"==typeof e?"undefined":_typeof(e)},isPlainObject:function(e){if(!e||"object"!==se.type(e)||e.nodeType||se.isWindow(e))return!1;try{if(e.constructor&&!ae.call(e,"constructor")&&!ae.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||ae.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||V;var r=fe.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=se.buildFragment([e],t,i),i&&se(i).remove(),se.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=se.trim(n),n&&pe.test(n.replace(me,"@").replace(ge,"]").replace(he,"")))?Function("return "+n)():(se.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(a){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||se.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&se.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ve,"ms-").replace(ye,be)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,r){var i,a=0,o=e.length,s=n(e);if(r){if(s)for(;o>a&&(i=t.apply(e[a],r),i!==!1);a++);else for(a in e)if(i=t.apply(e[a],r),i===!1)break}else if(s)for(;o>a&&(i=t.call(e[a],a,e[a]),i!==!1);a++);else for(a in e)if(i=t.call(e[a],a,e[a]),i===!1)break;return e},trim:oe&&!oe.call("\ufeff ")?function(e){return null==e?"":oe.call(e)}:function(e){return null==e?"":(e+"").replace(ce,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?se.merge(r,"string"==typeof e?[e]:e):te.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(re)return re.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,a=0;if("number"==typeof r)for(;r>a;a++)e[i++]=n[a];else for(;n[a]!==t;)e[i++]=n[a++];return e.length=i,e},grep:function(e,t,n){var r,i=[],a=0,o=e.length;for(n=!!n;o>a;a++)r=!!t(e[a],a),n!==r&&i.push(e[a]);return i},map:function(e,t,r){var i,a=0,o=e.length,s=n(e),u=[];if(s)for(;o>a;a++)i=t(e[a],a,r),null!=i&&(u[u.length]=i);else for(a in e)i=t(e[a],a,r),null!=i&&(u[u.length]=i);return ee.apply([],u)},guid:1,proxy:function(e,n){var r,i,a;return"string"==typeof n&&(r=e[n],n=e,e=r),se.isFunction(e)?(i=ne.call(arguments,2),a=function(){return e.apply(n||this,i.concat(ne.call(arguments)))},a.guid=e.guid=e.guid||se.guid++,a):t},access:function(e,n,r,i,a,o,s){var u=0,l=e.length,c=null==r;if("object"===se.type(r)){a=!0;for(u in r)se.access(e,n,u,r[u],!0,o,s)}else if(i!==t&&(a=!0,se.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(se(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return a?e:c?n.call(e):l?n(e[0],r):o},now:function(){return(new Date).getTime()}}),se.ready.promise=function(t){if(!U)if(U=se.Deferred(),"complete"===V.readyState)setTimeout(se.ready);else if(V.addEventListener)V.addEventListener("DOMContentLoaded",xe,!1),e.addEventListener("load",se.ready,!1);else{V.attachEvent("onreadystatechange",xe),e.attachEvent("onload",se.ready);var n=!1;try{n=null==e.frameElement&&V.documentElement}catch(r){}n&&n.doScroll&&function i(){if(!se.isReady){try{n.doScroll("left")}catch(e){return setTimeout(i,50)}se.ready()}}()}return U.promise(t)},se.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){J["[object "+t+"]"]=t.toLowerCase()}),X=se(V);var we={};se.Callbacks=function(e){e="string"==typeof e?we[e]||r(e):se.extend({},e);var n,i,a,o,s,u,l=[],c=!e.once&&[],d=function p(t){for(n=e.memory&&t,i=!0,u=o||0,o=0,s=l.length,a=!0;l&&s>u;u++)if(l[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}a=!1,l&&(c?c.length&&p(c.shift()):n?l=[]:f.disable())},f={add:function(){if(l){var t=l.length;!function r(t){se.each(t,function(t,n){var i=se.type(n);"function"===i?e.unique&&f.has(n)||l.push(n):n&&n.length&&"string"!==i&&r(n)})}(arguments),a?s=l.length:n&&(o=t,d(n))}return this},remove:function(){return l&&se.each(arguments,function(e,t){for(var n;(n=se.inArray(t,l,n))>-1;)l.splice(n,1),a&&(s>=n&&s--,u>=n&&u--)}),this},has:function(e){return se.inArray(e,l)>-1},empty:function(){return l=[],this},disable:function(){return l=c=n=t,this},disabled:function(){return!l},lock:function(){return c=t,n||f.disable(),this},locked:function(){return!c},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!c||(a?c.push(t):d(t)),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!i}};return f},se.extend({Deferred:function(e){var t=[["resolve","done",se.Callbacks("once memory"),"resolved"],["reject","fail",se.Callbacks("once memory"),"rejected"],["notify","progress",se.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return se.Deferred(function(n){se.each(t,function(t,a){var o=a[0],s=se.isFunction(e[t])&&e[t];i[a[1]](function(){var e=s&&s.apply(this,arguments);e&&se.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?se.extend(e,r):r}},i={};return r.pipe=r.then,se.each(t,function(e,a){var o=a[2],s=a[3];r[a[1]]=o.add,s&&o.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[a[0]]=function(){return i[a[0]+"With"](this===i?r:this,arguments),this},i[a[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,a=ne.call(arguments),o=a.length,s=1!==o||e&&se.isFunction(e.promise)?o:0,u=1===s?e:se.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ne.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(o>1)for(t=Array(o),n=Array(o),r=Array(o);o>i;i++)a[i]&&se.isFunction(a[i].promise)?a[i].promise().done(l(i,r,a)).fail(u.reject).progress(l(i,n,t)):--s;return s||u.resolveWith(r,a),u.promise()}}),se.support=function(){var n,r,i,a,o,s,u,l,c,d,f=V.createElement("div");if(f.setAttribute("className","t"),f.innerHTML=" a",r=f.getElementsByTagName("*"),i=f.getElementsByTagName("a")[0],!r||!i||!r.length)return{};a=V.createElement("select"),o=a.appendChild(V.createElement("option")),s=f.getElementsByTagName("input")[0],i.style.cssText="top:1px;float:left;opacity:.5",n={getSetAttribute:"t"!==f.className,leadingWhitespace:3===f.firstChild.nodeType,tbody:!f.getElementsByTagName("tbody").length,htmlSerialize:!!f.getElementsByTagName("link").length,style:/top/.test(i.getAttribute("style")),hrefNormalized:"/a"===i.getAttribute("href"),opacity:/^0.5/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:!!s.value,optSelected:o.selected,enctype:!!V.createElement("form").enctype,html5Clone:"<:nav>"!==V.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===V.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},s.checked=!0,n.noCloneChecked=s.cloneNode(!0).checked,a.disabled=!0,n.optDisabled=!o.disabled;try{delete f.test}catch(p){n.deleteExpando=!1}s=V.createElement("input"),s.setAttribute("value",""),n.input=""===s.getAttribute("value"),s.value="t",s.setAttribute("type","radio"),n.radioValue="t"===s.value,s.setAttribute("checked","t"),s.setAttribute("name","t"),u=V.createDocumentFragment(),u.appendChild(s),n.appendChecked=s.checked,n.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,f.attachEvent&&(f.attachEvent("onclick",function(){n.noCloneEvent=!1}),f.cloneNode(!0).click());for(d in{submit:!0,change:!0,focusin:!0})f.setAttribute(l="on"+d,"t"),n[d+"Bubbles"]=l in e||f.attributes[l].expando===!1;return f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",n.clearCloneStyle="content-box"===f.style.backgroundClip,se(function(){var r,i,a,o="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",s=V.getElementsByTagName("body")[0];s&&(r=V.createElement("div"),r.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",s.appendChild(r).appendChild(f),f.innerHTML="",a=f.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",c=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",n.reliableHiddenOffsets=c&&0===a[0].offsetHeight,f.innerHTML="",f.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",n.boxSizing=4===f.offsetWidth,n.doesNotIncludeMarginInBodyOffset=1!==s.offsetTop,e.getComputedStyle&&(n.pixelPosition="1%"!==(e.getComputedStyle(f,null)||{}).top,n.boxSizingReliable="4px"===(e.getComputedStyle(f,null)||{width:"4px"}).width,i=f.appendChild(V.createElement("div")),i.style.cssText=f.style.cssText=o,i.style.marginRight=i.style.width="0",f.style.width="1px",n.reliableMarginRight=!parseFloat((e.getComputedStyle(i,null)||{}).marginRight)),f.style.zoom!==t&&(f.innerHTML="",f.style.cssText=o+"width:1px;padding:1px;display:inline;zoom:1",n.inlineBlockNeedsLayout=3===f.offsetWidth,f.style.display="block",f.innerHTML="",f.firstChild.style.width="5px",n.shrinkWrapBlocks=3!==f.offsetWidth,s.style.zoom=1),s.removeChild(r),r=f=a=i=null)}),r=a=u=o=i=s=null,n}();var Te=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,Ce=/([A-Z])/g;se.extend({cache:{},expando:"jQuery"+(K+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?se.cache[e[se.expando]]:e[se.expando],!!e&&!s(e)},data:function(e,t,n){return i(e,t,n,!1)},removeData:function(e,t){return a(e,t,!1)},_data:function(e,t,n){return i(e,t,n,!0)},_removeData:function(e,t){return a(e,t,!0)},acceptData:function(e){var t=e.nodeName&&se.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),se.fn.extend({data:function(e,n){var r,i,a=this[0],s=0,u=null;if(e===t){if(this.length&&(u=se.data(a),1===a.nodeType&&!se._data(a,"parsedAttrs"))){for(r=a.attributes;r.length>s;s++)i=r[s].name,i.indexOf("data-")||(i=se.camelCase(i.substring(5)),o(a,i,u[i]));se._data(a,"parsedAttrs",!0)}return u}return"object"==("undefined"==typeof e?"undefined":_typeof(e))?this.each(function(){se.data(this,e)}):se.access(this,function(n){return n===t?a?o(a,e,se.data(a,e)):null:(this.each(function(){se.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){se.removeData(this,e)})}}),se.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=se._data(e,n),r&&(!i||se.isArray(r)?i=se._data(e,n,se.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=se.queue(e,t),r=n.length,i=n.shift(),a=se._queueHooks(e,t),o=function(){se.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),a.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete a.stop,i.call(e,o,a)),!r&&a&&a.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return se._data(e,n)||se._data(e,n,{empty:se.Callbacks("once memory").add(function(){se._removeData(e,t+"queue"),se._removeData(e,n)})})}}),se.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?se.queue(this[0],e):n===t?this:this.each(function(){var t=se.queue(this,e,n);se._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&se.dequeue(this,e)})},dequeue:function(e){return this.each(function(){se.dequeue(this,e)})},delay:function(e,t){return e=se.fx?se.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,a=se.Deferred(),o=this,s=this.length,u=function(){--i||a.resolveWith(o,[o])};for("string"!=typeof e&&(n=e,e=t),e=e||"fx";s--;)r=se._data(o[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),a.promise(n)}});var ke,Fe,Ee=/[\t\r\n]/g,Ne=/\r/g,Se=/^(?:input|select|textarea|button|object)$/i,Ae=/^(?:a|area)$/i,De=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,je=/^(?:checked|selected)$/i,_e=se.support.getSetAttribute,Le=se.support.input;se.fn.extend({attr:function(e,t){return se.access(this,se.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){se.removeAttr(this,e)})},prop:function(e,t){return se.access(this,se.prop,e,t,arguments.length>1)},removeProp:function(e){return e=se.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,a,o=0,s=this.length,u="string"==typeof e&&e;if(se.isFunction(e))return this.each(function(t){se(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(le)||[];s>o;o++)if(n=this[o],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Ee," "):" ")){for(a=0;i=t[a++];)0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=se.trim(r)}return this},removeClass:function(e){var t,n,r,i,a,o=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(se.isFunction(e))return this.each(function(t){se(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(le)||[];s>o;o++)if(n=this[o],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Ee," "):"")){for(a=0;i=t[a++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");n.className=e?se.trim(r):""}return this},toggleClass:function(e,t){var n="undefined"==typeof e?"undefined":_typeof(e),r="boolean"==typeof t;return se.isFunction(e)?this.each(function(n){se(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n)for(var i,a=0,o=se(this),s=t,u=e.match(le)||[];i=u[a++];)s=r?s:!o.hasClass(i),o[s?"addClass":"removeClass"](i);else("undefined"===n||"boolean"===n)&&(this.className&&se._data(this,"__className__",this.className),this.className=this.className||e===!1?"":se._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(Ee," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,a=this[0];return arguments.length?(i=se.isFunction(e),this.each(function(r){var a,o=se(this);1===this.nodeType&&(a=i?e.call(this,r,o.val()):e,null==a?a="":"number"==typeof a?a+="":se.isArray(a)&&(a=se.map(a,function(e){return null==e?"":e+""})),n=se.valHooks[this.type]||se.valHooks[this.nodeName.toLowerCase()],n&&"set"in n&&n.set(this,a,"value")!==t||(this.value=a))})):a?(n=se.valHooks[a.type]||se.valHooks[a.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(a,"value"))!==t?r:(r=a.value,"string"==typeof r?r.replace(Ne,""):null==r?"":r)):void 0}}),se.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,a="select-one"===e.type||0>i,o=a?null:[],s=a?i+1:r.length,u=0>i?s:a?i:0;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(se.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&se.nodeName(n.parentNode,"optgroup"))){if(t=se(n).val(),a)return t;o.push(t)}return o},set:function(e,t){var n=se.makeArray(t);return se(e).find("option").each(function(){this.selected=se.inArray(se(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var i,a,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return e.getAttribute===t?se.prop(e,n,r):(o=1!==s||!se.isXMLDoc(e),o&&(n=n.toLowerCase(),a=se.attrHooks[n]||(De.test(n)?Fe:ke)),r===t?a&&o&&"get"in a&&null!==(i=a.get(e,n))?i:(e.getAttribute!==t&&(i=e.getAttribute(n)),null==i?t:i):null!==r?a&&o&&"set"in a&&(i=a.set(e,r,n))!==t?i:(e.setAttribute(n,r+""),r):(se.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,a=t&&t.match(le);if(a&&1===e.nodeType)for(;n=a[i++];)r=se.propFix[n]||n,De.test(n)?!_e&&je.test(n)?e[se.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:se.attr(e,n,""),e.removeAttribute(_e?n:r)},attrHooks:{type:{set:function(e,t){if(!se.support.radioValue&&"radio"===t&&se.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",
+contenteditable:"contentEditable"},prop:function(e,n,r){var i,a,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!se.isXMLDoc(e),o&&(n=se.propFix[n]||n,a=se.propHooks[n]),r!==t?a&&"set"in a&&(i=a.set(e,r,n))!==t?i:e[n]=r:a&&"get"in a&&null!==(i=a.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):Se.test(e.nodeName)||Ae.test(e.nodeName)&&e.href?0:t}}}}),Fe={get:function(e,n){var r=se.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),a="boolean"==typeof r?Le&&_e?null!=i:je.test(n)?e[se.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return a&&a.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?se.removeAttr(e,n):Le&&_e||!je.test(n)?e.setAttribute(!_e&&se.propFix[n]||n,n):e[se.camelCase("default-"+n)]=e[n]=!0,n}},Le&&_e||(se.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return se.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return se.nodeName(e,"input")?(e.defaultValue=n,t):ke&&ke.set(e,n,r)}}),_e||(ke=se.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},se.attrHooks.contenteditable={get:ke.get,set:function(e,t,n){ke.set(e,""!==t&&t,n)}},se.each(["width","height"],function(e,n){se.attrHooks[n]=se.extend(se.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),se.support.hrefNormalized||(se.each(["href","src","width","height"],function(e,n){se.attrHooks[n]=se.extend(se.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),se.each(["href","src"],function(e,t){se.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),se.support.style||(se.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),se.support.optSelected||(se.propHooks.selected=se.extend(se.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),se.support.enctype||(se.propFix.enctype="encoding"),se.support.checkOn||se.each(["radio","checkbox"],function(){se.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),se.each(["radio","checkbox"],function(){se.valHooks[this]=se.extend(se.valHooks[this],{set:function(e,n){return se.isArray(n)?e.checked=se.inArray(se(e).val(),n)>=0:t}})});var Me=/^(?:input|select|textarea)$/i,qe=/^key/,He=/^(?:mouse|contextmenu)|click/,Oe=/^(?:focusinfocus|focusoutblur)$/,Pe=/^([^.]*)(?:\.(.+)|)$/;se.event={global:{},add:function(e,n,r,i,a){var o,s,u,l,c,d,f,p,h,m,g,v=3!==e.nodeType&&8!==e.nodeType&&se._data(e);if(v){for(r.handler&&(o=r,r=o.handler,a=o.selector),r.guid||(r.guid=se.guid++),(l=v.events)||(l=v.events={}),(s=v.handle)||(s=v.handle=function(e){return se===t||e&&se.event.triggered===e.type?t:se.event.dispatch.apply(s.elem,arguments)},s.elem=e),n=(n||"").match(le)||[""],c=n.length;c--;)u=Pe.exec(n[c])||[],h=g=u[1],m=(u[2]||"").split(".").sort(),f=se.event.special[h]||{},h=(a?f.delegateType:f.bindType)||h,f=se.event.special[h]||{},d=se.extend({type:h,origType:g,data:i,handler:r,guid:r.guid,selector:a,needsContext:a&&se.expr.match.needsContext.test(a),namespace:m.join(".")},o),(p=l[h])||(p=l[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,i,m,s)!==!1||(e.addEventListener?e.addEventListener(h,s,!1):e.attachEvent&&e.attachEvent("on"+h,s))),f.add&&(f.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?p.splice(p.delegateCount++,0,d):p.push(d),se.event.global[h]=!0;e=null}},remove:function(e,t,n,r,i){var a,o,s,u,l,c,d,f,p,h,m,g=se.hasData(e)&&se._data(e);if(g&&(u=g.events)){for(t=(t||"").match(le)||[""],l=t.length;l--;)if(s=Pe.exec(t[l])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p){for(d=se.event.special[p]||{},p=(r?d.delegateType:d.bindType)||p,f=u[p]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=a=f.length;a--;)c=f[a],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(a,1),c.selector&&f.delegateCount--,d.remove&&d.remove.call(e,c));o&&!f.length&&(d.teardown&&d.teardown.call(e,h,g.handle)!==!1||se.removeEvent(e,p,g.handle),delete u[p])}else for(p in u)se.event.remove(e,p+t[l],n,r,!0);se.isEmptyObject(u)&&(delete g.handle,se._removeData(e,"events"))}},trigger:function(n,r,i,a){var o,s,u,l,c,d,f,p=[i||V],h=n.type||n,m=n.namespace?n.namespace.split("."):[];if(s=u=i=i||V,3!==i.nodeType&&8!==i.nodeType&&!Oe.test(h+se.event.triggered)&&(h.indexOf(".")>=0&&(m=h.split("."),h=m.shift(),m.sort()),c=0>h.indexOf(":")&&"on"+h,n=n[se.expando]?n:new se.Event(h,"object"==("undefined"==typeof n?"undefined":_typeof(n))&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:se.makeArray(r,[n]),f=se.event.special[h]||{},a||!f.trigger||f.trigger.apply(i,r)!==!1)){if(!a&&!f.noBubble&&!se.isWindow(i)){for(l=f.delegateType||h,Oe.test(l+h)||(s=s.parentNode);s;s=s.parentNode)p.push(s),u=s;u===(i.ownerDocument||V)&&p.push(u.defaultView||u.parentWindow||e)}for(o=0;(s=p[o++])&&!n.isPropagationStopped();)n.type=o>1?l:f.bindType||h,d=(se._data(s,"events")||{})[n.type]&&se._data(s,"handle"),d&&d.apply(s,r),d=c&&s[c],d&&se.acceptData(s)&&d.apply&&d.apply(s,r)===!1&&n.preventDefault();if(n.type=h,!(a||n.isDefaultPrevented()||f._default&&f._default.apply(i.ownerDocument,r)!==!1||"click"===h&&se.nodeName(i,"a")||!se.acceptData(i)||!c||!i[h]||se.isWindow(i))){u=i[c],u&&(i[c]=null),se.event.triggered=h;try{i[h]()}catch(g){}se.event.triggered=t,u&&(i[c]=u)}return n.result}},dispatch:function(e){e=se.event.fix(e);var n,r,i,a,o,s=[],u=ne.call(arguments),l=(se._data(this,"events")||{})[e.type]||[],c=se.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=se.event.handlers.call(this,e,l),n=0;(a=s[n++])&&!e.isPropagationStopped();)for(e.currentTarget=a.elem,r=0;(o=a.handlers[r++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,i=((se.event.special[o.origType]||{}).handle||o.handler).apply(a.elem,u),i!==t&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,a,o,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(l.disabled!==!0||"click"!==e.type){for(i=[],r=0;u>r;r++)o=n[r],a=o.selector+" ",i[a]===t&&(i[a]=o.needsContext?se(a,this).index(l)>=0:se.find(a,this,null,[l]).length),i[a]&&i.push(o);i.length&&s.push({elem:l,handlers:i})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[se.expando])return e;var t,n,r=e,i=se.event.fixHooks[e.type]||{},a=i.props?this.props.concat(i.props):this.props;for(e=new se.Event(r),t=a.length;t--;)n=a[t],e[n]=r[n];return e.target||(e.target=r.srcElement||V),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,i.filter?i.filter(e,r):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,o=n.button,s=n.fromElement;return null==e.pageX&&null!=n.clientX&&(r=e.target.ownerDocument||V,i=r.documentElement,a=r.body,e.pageX=n.clientX+(i&&i.scrollLeft||a&&a.scrollLeft||0)-(i&&i.clientLeft||a&&a.clientLeft||0),e.pageY=n.clientY+(i&&i.scrollTop||a&&a.scrollTop||0)-(i&&i.clientTop||a&&a.clientTop||0)),!e.relatedTarget&&s&&(e.relatedTarget=s===e.target?n.toElement:s),e.which||o===t||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return se.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==V.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===V.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=se.extend(new se.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?se.event.trigger(i,null,t):se.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},se.removeEvent=V.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,n,r){var i="on"+n;e.detachEvent&&(e[i]===t&&(e[i]=null),e.detachEvent(i,r))},se.Event=function(e,n){return this instanceof se.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?u:l):this.type=e,n&&se.extend(this,n),this.timeStamp=e&&e.timeStamp||se.now(),this[se.expando]=!0,t):new se.Event(e,n)},se.Event.prototype={isDefaultPrevented:l,isPropagationStopped:l,isImmediatePropagationStopped:l,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=u,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=u,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u,this.stopPropagation()}},se.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){se.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,a=e.handleObj;return(!i||i!==r&&!se.contains(r,i))&&(e.type=a.origType,n=a.handler.apply(this,arguments),e.type=t),n}}}),se.support.submitBubbles||(se.event.special.submit={setup:function(){return!se.nodeName(this,"form")&&(se.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=se.nodeName(n,"input")||se.nodeName(n,"button")?n.form:t;r&&!se._data(r,"submitBubbles")&&(se.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),se._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&se.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return!se.nodeName(this,"form")&&(se.event.remove(this,"._submit"),t)}}),se.support.changeBubbles||(se.event.special.change={setup:function(){return Me.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(se.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),se.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),se.event.simulate("change",this,e,!0)})),!1):(se.event.add(this,"beforeactivate._change",function(e){var t=e.target;Me.test(t.nodeName)&&!se._data(t,"changeBubbles")&&(se.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||se.event.simulate("change",this.parentNode,e,!0)}),se._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return se.event.remove(this,"._change"),!Me.test(this.nodeName)}}),se.support.focusinBubbles||se.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){se.event.simulate(t,e.target,se.event.fix(e),!0)};se.event.special[t]={setup:function(){0===n++&&V.addEventListener(e,r,!0)},teardown:function(){0===--n&&V.removeEventListener(e,r,!0)}}}),se.fn.extend({on:function(e,n,r,i,a){var o,s;if("object"==("undefined"==typeof e?"undefined":_typeof(e))){"string"!=typeof n&&(r=r||n,n=t);for(s in e)this.on(s,n,r,e[s],a);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=l;else if(!i)return this;return 1===a&&(o=i,i=function(e){return se().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=se.guid++)),this.each(function(){se.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,a;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,se(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==("undefined"==typeof e?"undefined":_typeof(e))){for(a in e)this.off(a,n,e[a]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=l),this.each(function(){se.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){se.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?se.event.trigger(e,n,r,!0):t},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),se.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){se.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)},qe.test(t)&&(se.event.fixHooks[t]=se.event.keyHooks),He.test(t)&&(se.event.fixHooks[t]=se.event.mouseHooks)}),function(e,t){function n(e){return he.test(e+"")}function r(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>k.cacheLength&&delete e[t.shift()],e[n]=r}}function i(e){return e[R]=!0,e}function a(e){var t=j.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function o(e,t,n,r){var i,a,o,s,u,l,c,p,h,m;if((t?t.ownerDocument||t:B)!==j&&D(t),t=t||j,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!L&&!r){if(i=me.exec(e))if(o=i[1]){if(9===s){if(a=t.getElementById(o),!a||!a.parentNode)return n;if(a.id===o)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(o))&&O(t,a)&&a.id===o)return n.push(a),n}else{if(i[2])return J.apply(n,Z.call(t.getElementsByTagName(e),0)),n;if((o=i[3])&&I.getByClassName&&t.getElementsByClassName)return J.apply(n,Z.call(t.getElementsByClassName(o),0)),n}if(I.qsa&&!M.test(e)){if(c=!0,p=R,h=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(l=d(e),(c=t.getAttribute("id"))?p=c.replace(ye,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"'] ",u=l.length;u--;)l[u]=p+f(l[u]);h=pe.test(e)&&t.parentNode||t,m=l.join(",")}if(m)try{return J.apply(n,Z.call(h.querySelectorAll(m),0)),n}catch(g){}finally{c||t.removeAttribute("id")}}}return x(e.replace(oe,"$1"),t,n,r)}function s(e,t){for(var n=e&&t&&e.nextSibling;n;n=n.nextSibling)if(n===t)return-1;return e?1:-1}function u(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,r){for(var i,a=e([],n.length,t),o=a.length;o--;)n[i=a[o]]&&(n[i]=!(r[i]=n[i]))})})}function d(e,t){var n,r,i,a,s,u,l,c=X[e+" "];if(c)return t?0:c.slice(0);for(s=e,u=[],l=k.preFilter;s;){(!n||(r=ue.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(i=[])),n=!1,(r=le.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(oe," ")}),s=s.slice(n.length));for(a in k.filter)!(r=fe[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?o.error(e):X(e,u).slice(0)}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&"parentNode"===t.dir,a=W++;return t.first?function(t,n,a){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,a)}:function(t,n,o){var s,u,l,c=z+" "+a;if(o){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,o))return!0}else for(;t=t[r];)if(1===t.nodeType||i)if(l=t[R]||(t[R]={}),(u=l[r])&&u[0]===c){if((s=u[1])===!0||s===C)return s===!0}else if(u=l[r]=[c],u[1]=e(t,n,o)||C,u[1]===!0)return!0}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(e,t,n,r,i){for(var a,o=[],s=0,u=e.length,l=null!=t;u>s;s++)(a=e[s])&&(!n||n(a,r,i))&&(o.push(a),l&&t.push(s));return o}function g(e,t,n,r,a,o){return r&&!r[R]&&(r=g(r)),a&&!a[R]&&(a=g(a,o)),i(function(i,o,s,u){var l,c,d,f=[],p=[],h=o.length,g=i||b(t||"*",s.nodeType?[s]:s,[]),v=!e||!i&&t?g:m(g,f,e,s,u),y=n?a||(i?e:h||r)?[]:o:v;if(n&&n(v,y,s,u),r)for(l=m(y,p),r(l,[],s,u),c=l.length;c--;)(d=l[c])&&(y[p[c]]=!(v[p[c]]=d));if(i){if(a||e){if(a){for(l=[],c=y.length;c--;)(d=y[c])&&l.push(v[c]=d);a(null,y=[],l,u)}for(c=y.length;c--;)(d=y[c])&&(l=a?K.call(i,d):f[c])>-1&&(i[l]=!(o[l]=d))}}else y=m(y===o?y.splice(h,y.length):y),a?a(null,o,y,u):J.apply(o,y)})}function v(e){for(var t,n,r,i=e.length,a=k.relative[e[0].type],o=a||k.relative[" "],s=a?1:0,u=p(function(e){return e===t},o,!0),l=p(function(e){return K.call(t,e)>-1},o,!0),c=[function(e,n,r){return!a&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r))}];i>s;s++)if(n=k.relative[e[s].type])c=[p(h(c),n)];else{if(n=k.filter[e[s].type].apply(null,e[s].matches),n[R]){for(r=++s;i>r&&!k.relative[e[r].type];r++);return g(s>1&&h(c),s>1&&f(e.slice(0,s-1)).replace(oe,"$1"),n,r>s&&v(e.slice(s,r)),i>r&&v(e=e.slice(r)),i>r&&f(e))}c.push(n)}return h(c)}function y(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(i,s,u,l,c){var d,f,p,h=[],g=0,v="0",y=i&&[],b=null!=c,x=A,w=i||a&&k.find.TAG("*",c&&s.parentNode||s),T=z+=null==x?1:Math.E;for(b&&(A=s!==j&&s,C=n);null!=(d=w[v]);v++){if(a&&d){for(f=0;p=e[f];f++)if(p(d,s,u)){l.push(d);break}b&&(z=T,C=++n)}r&&((d=!p&&d)&&g--,i&&y.push(d))}if(g+=v,r&&v!==g){for(f=0;p=t[f];f++)p(y,h,s,u);if(i){if(g>0)for(;v--;)y[v]||h[v]||(h[v]=G.call(l));h=m(h)}J.apply(l,h),b&&!i&&h.length>0&&g+t.length>1&&o.uniqueSort(l)}return b&&(z=T,A=x),y};return r?i(s):s}function b(e,t,n){for(var r=0,i=t.length;i>r;r++)o(e,t[r],n);return n}function x(e,t,n,r){var i,a,o,s,u,l=d(e);if(!r&&1===l.length){if(a=l[0]=l[0].slice(0),a.length>2&&"ID"===(o=a[0]).type&&9===t.nodeType&&!L&&k.relative[a[1].type]){if(t=k.find.ID(o.matches[0].replace(xe,we),t)[0],!t)return n;e=e.slice(a.shift().value.length)}for(i=fe.needsContext.test(e)?-1:a.length-1;i>=0&&(o=a[i],!k.relative[s=o.type]);i--)if((u=k.find[s])&&(r=u(o.matches[0].replace(xe,we),pe.test(a[0].type)&&t.parentNode||t))){if(a.splice(i,1),e=r.length&&f(a),!e)return J.apply(n,Z.call(r,0)),n;break}}return N(e,l)(r,t,L,n,pe.test(e)),n}function w(){}var T,C,k,F,E,N,S,A,D,j,_,L,M,q,H,O,P,R="sizzle"+-new Date,B=e.document,I={},z=0,W=0,$=r(),X=r(),U=r(),V="undefined"==typeof t?"undefined":_typeof(t),Q=1<<31,Y=[],G=Y.pop,J=Y.push,Z=Y.slice,K=Y.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},ee="[\\x20\\t\\r\\n\\f]",te="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ne=te.replace("w","w#"),re="([*^$|!~]?=)",ie="\\["+ee+"*("+te+")"+ee+"*(?:"+re+ee+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+ne+")|)|)"+ee+"*\\]",ae=":("+te+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+ie.replace(3,8)+")*)|.*)\\)|)",oe=RegExp("^"+ee+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ee+"+$","g"),ue=RegExp("^"+ee+"*,"+ee+"*"),le=RegExp("^"+ee+"*([\\x20\\t\\r\\n\\f>+~])"+ee+"*"),ce=RegExp(ae),de=RegExp("^"+ne+"$"),fe={ID:RegExp("^#("+te+")"),CLASS:RegExp("^\\.("+te+")"),NAME:RegExp("^\\[name=['\"]?("+te+")['\"]?\\]"),TAG:RegExp("^("+te.replace("w","w*")+")"),ATTR:RegExp("^"+ie),PSEUDO:RegExp("^"+ae),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ee+"*(even|odd|(([+-]|)(\\d*)n|)"+ee+"*(?:([+-]|)"+ee+"*(\\d+)|))"+ee+"*\\)|)","i"),needsContext:RegExp("^"+ee+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ee+"*((?:-\\d)?\\d*)"+ee+"*\\)|)(?=[^-]|$)","i")},pe=/[\x20\t\r\n\f]*[+~]/,he=/\{\s*\[native code\]\s*\}/,me=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ge=/^(?:input|select|textarea|button)$/i,ve=/^h\d$/i,ye=/'|\\/g,be=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,xe=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,we=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{Z.call(_.childNodes,0)[0].nodeType}catch(Te){Z=function(e){for(var t,n=[];t=this[e];e++)n.push(t);return n}}E=o.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},D=o.setDocument=function(e){var r=e?e.ownerDocument||e:B;return r!==j&&9===r.nodeType&&r.documentElement?(j=r,_=r.documentElement,L=E(r),I.tagNameNoComments=a(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),I.attributes=a(function(e){e.innerHTML="";var t=_typeof(e.lastChild.getAttribute("multiple"));return"boolean"!==t&&"string"!==t}),I.getByClassName=a(function(e){return e.innerHTML="",!(!e.getElementsByClassName||!e.getElementsByClassName("e").length)&&(e.lastChild.className="e",2===e.getElementsByClassName("e").length)}),I.getByName=a(function(e){e.id=R+0,e.innerHTML="",_.insertBefore(e,_.firstChild);var t=r.getElementsByName&&r.getElementsByName(R).length===2+r.getElementsByName(R+0).length;return I.getIdNotName=!r.getElementById(R),_.removeChild(e),t}),k.attrHandle=a(function(e){return e.innerHTML="",e.firstChild&&_typeof(e.firstChild.getAttribute)!==V&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},I.getIdNotName?(k.find.ID=function(e,t){if(_typeof(t.getElementById)!==V&&!L){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){return e.getAttribute("id")===t}}):(k.find.ID=function(e,n){if(_typeof(n.getElementById)!==V&&!L){var r=n.getElementById(e);return r?r.id===e||_typeof(r.getAttributeNode)!==V&&r.getAttributeNode("id").value===e?[r]:t:[]}},k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){var n=_typeof(e.getAttributeNode)!==V&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=I.tagNameNoComments?function(e,n){return _typeof(n.getElementsByTagName)!==V?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,a=t.getElementsByTagName(e);if("*"===e){for(;n=a[i];i++)1===n.nodeType&&r.push(n);return r}return a},k.find.NAME=I.getByName&&function(e,n){return _typeof(n.getElementsByName)!==V?n.getElementsByName(name):t},k.find.CLASS=I.getByClassName&&function(e,n){return _typeof(n.getElementsByClassName)===V||L?t:n.getElementsByClassName(e)},q=[],M=[":focus"],(I.qsa=n(r.querySelectorAll))&&(a(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||M.push("\\["+ee+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||M.push(":checked")}),a(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&M.push("[*^$]="+ee+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||M.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),M.push(",.*:")})),(I.matchesSelector=n(H=_.matchesSelector||_.mozMatchesSelector||_.webkitMatchesSelector||_.oMatchesSelector||_.msMatchesSelector))&&a(function(e){I.disconnectedMatch=H.call(e,"div"),H.call(e,"[s!='']:x"),q.push("!=",ae)}),M=RegExp(M.join("|")),q=RegExp(q.join("|")),O=n(_.contains)||_.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},P=_.compareDocumentPosition?function(e,t){var n;return e===t?(S=!0,0):(n=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&n||e.parentNode&&11===e.parentNode.nodeType?e===r||O(B,e)?-1:t===r||O(B,t)?1:0:4&n?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var n,i=0,a=e.parentNode,o=t.parentNode,u=[e],l=[t];if(e===t)return S=!0,0;if(e.sourceIndex&&t.sourceIndex)return(~t.sourceIndex||Q)-(O(B,e)&&~e.sourceIndex||Q);if(!a||!o)return e===r?-1:t===r?1:a?-1:o?1:0;if(a===o)return s(e,t);for(n=e;n=n.parentNode;)u.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;u[i]===l[i];)i++;return i?s(u[i],l[i]):u[i]===B?-1:l[i]===B?1:0},S=!1,[0,0].sort(P),I.detectDuplicates=S,j):j},o.matches=function(e,t){return o(e,null,null,t)},o.matchesSelector=function(e,t){if((e.ownerDocument||e)!==j&&D(e),t=t.replace(be,"='$1']"),!(!I.matchesSelector||L||q&&q.test(t)||M.test(t)))try{var n=H.call(e,t);if(n||I.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return o(t,j,null,[e]).length>0},o.contains=function(e,t){return(e.ownerDocument||e)!==j&&D(e),O(e,t)},o.attr=function(e,t){var n;return(e.ownerDocument||e)!==j&&D(e),L||(t=t.toLowerCase()),(n=k.attrHandle[t])?n(e):L||I.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},o.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},o.uniqueSort=function(e){var t,n=[],r=1,i=0;if(S=!I.detectDuplicates,e.sort(P),S){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return e},F=o.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=F(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=F(t);return n},k=o.selectors={cacheLength:50,createPseudo:i,match:fe,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,we),e[3]=(e[4]||e[5]||"").replace(xe,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||o.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&o.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return fe.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&ce.test(n)&&(t=d(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(xe,we).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=$[e+" "];return t||(t=RegExp("(^|"+ee+")"+e+"("+ee+"|$)"))&&$(e,function(e){return t.test(e.className||_typeof(e.getAttribute)!==V&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=o.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.substr(i.length-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t&&(i===n||i.substr(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var a="nth"!==e.slice(0,3),o="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,d,f,p,h,m=a!==o?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!u&&!s;if(g){if(a){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[o?g.firstChild:g.lastChild],o&&y){for(c=g[R]||(g[R]={}),l=c[e]||[],p=l[0]===z&&l[1],f=l[0]===z&&l[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){c[e]=[z,p,f];break}}else if(y&&(l=(t[R]||(t[R]={}))[e])&&l[0]===z)f=l[1];else for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[R]||(d[R]={}))[e]=[z,f]),d!==t)););return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=k.pseudos[e]||k.setFilters[e.toLowerCase()]||o.error("unsupported pseudo: "+e);return r[R]?r(t):r.length>1?(n=[e,e,"",t],k.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,n){for(var i,a=r(e,t),o=a.length;o--;)i=K.call(e,a[o]),e[i]=!(n[i]=a[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:i(function(e){var t=[],n=[],r=N(e.replace(oe,"$1"));return r[R]?i(function(e,t,n,i){for(var a,o=r(e,null,i,[]),s=e.length;s--;)(a=o[s])&&(e[s]=!(t[s]=a))}):function(e,i,a){return t[0]=e,r(t,null,a,n),!n.pop()}}),has:i(function(e){return function(t){return o(e,t).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||F(t)).indexOf(e)>-1}}),lang:i(function(e){return de.test(e||"")||o.error("unsupported lang: "+e),e=e.replace(xe,we).toLowerCase(),function(t){var n;do if(n=L?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===_},focus:function(e){return e===j.activeElement&&(!j.hasFocus||j.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return ve.test(e.nodeName)},input:function(e){return ge.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(T in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[T]=u(T);for(T in{submit:!0,reset:!0})k.pseudos[T]=l(T);N=o.compile=function(e,t){var n,r=[],i=[],a=U[e+" "];if(!a){for(t||(t=d(e)),n=t.length;n--;)a=v(t[n]),a[R]?r.push(a):i.push(a);a=U(e,y(i,r))}return a},k.pseudos.nth=k.pseudos.eq,k.filters=w.prototype=k.pseudos,k.setFilters=new w,D(),o.attr=se.attr,se.find=o,se.expr=o.selectors,se.expr[":"]=se.expr.pseudos,se.unique=o.uniqueSort,se.text=o.getText,se.isXMLDoc=o.isXML,se.contains=o.contains}(e);var Re=/Until$/,Be=/^(?:parents|prev(?:Until|All))/,Ie=/^.[^:#\[\.,]*$/,ze=se.expr.match.needsContext,We={children:!0,contents:!0,next:!0,prev:!0};se.fn.extend({find:function(e){var t,n,r;if("string"!=typeof e)return r=this,this.pushStack(se(e).filter(function(){for(t=0;r.length>t;t++)if(se.contains(r[t],this))return!0}));for(n=[],t=0;this.length>t;t++)se.find(e,this[t],n);return n=this.pushStack(se.unique(n)),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=se(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(se.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(d(this,e,!1))},filter:function(e){return this.pushStack(d(this,e,!0));
+},is:function(e){return!!e&&("string"==typeof e?ze.test(e)?se(e,this.context).index(this[0])>=0:se.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){for(var n,r=0,i=this.length,a=[],o=ze.test(e)||"string"!=typeof e?se(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n.ownerDocument&&n!==t&&11!==n.nodeType;){if(o?o.index(n)>-1:se.find.matchesSelector(n,e)){a.push(n);break}n=n.parentNode}return this.pushStack(a.length>1?se.unique(a):a)},index:function(e){return e?"string"==typeof e?se.inArray(this[0],se(e)):se.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?se(e,t):se.makeArray(e&&e.nodeType?[e]:e),r=se.merge(this.get(),n);return this.pushStack(se.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),se.fn.andSelf=se.fn.addBack,se.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return se.dir(e,"parentNode")},parentsUntil:function(e,t,n){return se.dir(e,"parentNode",n)},next:function(e){return c(e,"nextSibling")},prev:function(e){return c(e,"previousSibling")},nextAll:function(e){return se.dir(e,"nextSibling")},prevAll:function(e){return se.dir(e,"previousSibling")},nextUntil:function(e,t,n){return se.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return se.dir(e,"previousSibling",n)},siblings:function(e){return se.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return se.sibling(e.firstChild)},contents:function(e){return se.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:se.merge([],e.childNodes)}},function(e,t){se.fn[e]=function(n,r){var i=se.map(this,t,n);return Re.test(e)||(r=n),r&&"string"==typeof r&&(i=se.filter(r,i)),i=this.length>1&&!We[e]?se.unique(i):i,this.length>1&&Be.test(e)&&(i=i.reverse()),this.pushStack(i)}}),se.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?se.find.matchesSelector(t[0],e)?[t[0]]:[]:se.find.matches(e,t)},dir:function(e,n,r){for(var i=[],a=e[n];a&&9!==a.nodeType&&(r===t||1!==a.nodeType||!se(a).is(r));)1===a.nodeType&&i.push(a),a=a[n];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var $e="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Xe=/ jQuery\d+="(?:null|\d+)"/g,Ue=RegExp("<(?:"+$e+")[\\s/>]","i"),Ve=/^\s+/,Qe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Ye=/<([\w:]+)/,Ge=/\s*$/g,it={option:[1,""],legend:[1,""],area:[1,""],param:[1,""],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:se.support.htmlSerialize?[0,"",""]:[1,"X","
"]},at=f(V),ot=at.appendChild(V.createElement("div"));it.optgroup=it.option,it.tbody=it.tfoot=it.colgroup=it.caption=it.thead,it.th=it.td,se.fn.extend({text:function(e){return se.access(this,function(e){return e===t?se.text(this):this.empty().append((this[0]&&this[0].ownerDocument||V).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(se.isFunction(e))return this.each(function(t){se(this).wrapAll(e.call(this,t))});if(this[0]){var t=se(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return se.isFunction(e)?this.each(function(t){se(this).wrapInner(e.call(this,t))}):this.each(function(){var t=se(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=se.isFunction(e);return this.each(function(n){se(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){se.nodeName(this,"body")||se(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=0;null!=(n=this[r]);r++)(!e||se.filter(e,[n]).length>0)&&(t||1!==n.nodeType||se.cleanData(b(n)),n.parentNode&&(t&&se.contains(n.ownerDocument,n)&&g(b(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&se.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&se.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return se.clone(this,e,t)})},html:function(e){return se.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(Xe,""):t;if(!("string"!=typeof e||Ze.test(e)||!se.support.htmlSerialize&&Ue.test(e)||!se.support.leadingWhitespace&&Ve.test(e)||it[(Ye.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Qe,"<$1>$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(se.cleanData(b(n,!1)),n.innerHTML=e);n=0}catch(a){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=se.isFunction(e);return t||"string"==typeof e||(e=se(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;(n&&1===this.nodeType||11===this.nodeType)&&(se(this).remove(),t?t.parentNode.insertBefore(e,t):n.appendChild(e))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=ee.apply([],e);var i,a,o,s,u,l,c=0,d=this.length,f=this,g=d-1,v=e[0],y=se.isFunction(v);if(y||!(1>=d||"string"!=typeof v||se.support.checkClone)&&et.test(v))return this.each(function(i){var a=f.eq(i);y&&(e[0]=v.call(this,i,n?a.html():t)),a.domManip(e,n,r)});if(d&&(i=se.buildFragment(e,this[0].ownerDocument,!1,this),a=i.firstChild,1===i.childNodes.length&&(i=a),a)){for(n=n&&se.nodeName(a,"tr"),o=se.map(b(i,"script"),h),s=o.length;d>c;c++)u=i,c!==g&&(u=se.clone(u,!0,!0),s&&se.merge(o,b(u,"script"))),r.call(n&&se.nodeName(this[c],"table")?p(this[c],"tbody"):this[c],u,c);if(s)for(l=o[o.length-1].ownerDocument,se.map(o,m),c=0;s>c;c++)u=o[c],tt.test(u.type||"")&&!se._data(u,"globalEval")&&se.contains(l,u)&&(u.src?se.ajax({url:u.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):se.globalEval((u.text||u.textContent||u.innerHTML||"").replace(rt,"")));i=a=null}return this}}),se.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){se.fn[e]=function(e){for(var n,r=0,i=[],a=se(e),o=a.length-1;o>=r;r++)n=r===o?this:this.clone(!0),se(a[r])[t](n),te.apply(i,n.get());return this.pushStack(i)}}),se.extend({clone:function(e,t,n){var r,i,a,o,s,u=se.contains(e.ownerDocument,e);if(se.support.html5Clone||se.isXMLDoc(e)||!Ue.test("<"+e.nodeName+">")?s=e.cloneNode(!0):(ot.innerHTML=e.outerHTML,ot.removeChild(s=ot.firstChild)),!(se.support.noCloneEvent&&se.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||se.isXMLDoc(e)))for(r=b(s),i=b(e),o=0;null!=(a=i[o]);++o)r[o]&&y(a,r[o]);if(t)if(n)for(i=i||b(e),r=r||b(s),o=0;null!=(a=i[o]);o++)v(a,r[o]);else v(e,s);return r=b(s,"script"),r.length>0&&g(r,!u&&b(e,"script")),r=i=a=null,s},buildFragment:function(e,t,n,r){for(var i,a,o,s,u,l,c,d=e.length,p=f(t),h=[],m=0;d>m;m++)if(a=e[m],a||0===a)if("object"===se.type(a))se.merge(h,a.nodeType?[a]:a);else if(Je.test(a)){for(s=s||p.appendChild(t.createElement("div")),o=(Ye.exec(a)||["",""])[1].toLowerCase(),u=it[o]||it._default,s.innerHTML=u[1]+a.replace(Qe,"<$1>$2>")+u[2],c=u[0];c--;)s=s.lastChild;if(!se.support.leadingWhitespace&&Ve.test(a)&&h.push(t.createTextNode(Ve.exec(a)[0])),!se.support.tbody)for(a="table"!==o||Ge.test(a)?""!==u[1]||Ge.test(a)?0:s:s.firstChild,c=a&&a.childNodes.length;c--;)se.nodeName(l=a.childNodes[c],"tbody")&&!l.childNodes.length&&a.removeChild(l);for(se.merge(h,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=p.lastChild}else h.push(t.createTextNode(a));for(s&&p.removeChild(s),se.support.appendChecked||se.grep(b(h,"input"),x),m=0;a=h[m++];)if((!r||-1===se.inArray(a,r))&&(i=se.contains(a.ownerDocument,a),s=b(p.appendChild(a),"script"),i&&g(s),n))for(c=0;a=s[c++];)tt.test(a.type||"")&&n.push(a);return s=null,p},cleanData:function(e,n){for(var r,i,a,o,s=0,u=se.expando,l=se.cache,c=se.support.deleteExpando,d=se.event.special;null!=(a=e[s]);s++)if((n||se.acceptData(a))&&(i=a[u],r=i&&l[i])){if(r.events)for(o in r.events)d[o]?se.event.remove(a,o):se.removeEvent(a,o,r.handle);l[i]&&(delete l[i],c?delete a[u]:a.removeAttribute!==t?a.removeAttribute(u):a[u]=null,Z.push(i))}}});var st,ut,lt,ct=/alpha\([^)]*\)/i,dt=/opacity\s*=\s*([^)]*)/,ft=/^(top|right|bottom|left)$/,pt=/^(none|table(?!-c[ea]).+)/,ht=/^margin/,mt=RegExp("^("+ue+")(.*)$","i"),gt=RegExp("^("+ue+")(?!px)[a-z%]+$","i"),vt=RegExp("^([+-])=("+ue+")","i"),yt={BODY:"block"},bt={position:"absolute",visibility:"hidden",display:"block"},xt={letterSpacing:0,fontWeight:400},wt=["Top","Right","Bottom","Left"],Tt=["Webkit","O","Moz","ms"];se.fn.extend({css:function(e,n){return se.access(this,function(e,n,r){var i,a,o={},s=0;if(se.isArray(n)){for(i=ut(e),a=n.length;a>s;s++)o[n[s]]=se.css(e,n[s],!1,i);return o}return r!==t?se.style(e,n,r):se.css(e,n)},e,n,arguments.length>1)},show:function(){return C(this,!0)},hide:function(){return C(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:T(this))?se(this).show():se(this).hide()})}}),se.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=st(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":se.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var a,o,s,u=se.camelCase(n),l=e.style;if(n=se.cssProps[u]||(se.cssProps[u]=w(l,u)),s=se.cssHooks[n]||se.cssHooks[u],r===t)return s&&"get"in s&&(a=s.get(e,!1,i))!==t?a:l[n];if(o="undefined"==typeof r?"undefined":_typeof(r),"string"===o&&(a=vt.exec(r))&&(r=(a[1]+1)*a[2]+parseFloat(se.css(e,n)),o="number"),!(null==r||"number"===o&&isNaN(r)||("number"!==o||se.cssNumber[u]||(r+="px"),se.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var a,o,s,u=se.camelCase(n);return n=se.cssProps[u]||(se.cssProps[u]=w(e.style,u)),s=se.cssHooks[n]||se.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=st(e,n,i)),"normal"===a&&n in xt&&(a=xt[n]),r?(o=parseFloat(a),r===!0||se.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,a,o={};for(a in t)o[a]=e.style[a],e.style[a]=t[a];i=n.apply(e,r||[]);for(a in t)e.style[a]=o[a];return i}}),e.getComputedStyle?(ut=function(t){return e.getComputedStyle(t,null)},st=function(e,n,r){var i,a,o,s=r||ut(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||se.contains(e.ownerDocument,e)||(u=se.style(e,n)),gt.test(u)&&ht.test(n)&&(i=l.width,a=l.minWidth,o=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=a,l.maxWidth=o)),u}):V.documentElement.currentStyle&&(ut=function(e){return e.currentStyle},st=function(e,n,r){var i,a,o,s=r||ut(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),gt.test(u)&&!ft.test(n)&&(i=l.left,a=e.runtimeStyle,o=a&&a.left,o&&(a.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,o&&(a.left=o)),""===u?"auto":u}),se.each(["height","width"],function(e,n){se.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&pt.test(se.css(e,"display"))?se.swap(e,bt,function(){return E(e,n,i)}):E(e,n,i):t},set:function(e,t,r){var i=r&&ut(e);return k(e,t,r?F(e,n,r,se.support.boxSizing&&"border-box"===se.css(e,"boxSizing",!1,i),i):0)}}}),se.support.opacity||(se.cssHooks.opacity={get:function(e,t){return dt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=se.isNumeric(t)?"alpha(opacity="+100*t+")":"",a=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===se.trim(a.replace(ct,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=ct.test(a)?a.replace(ct,i):a+" "+i)}}),se(function(){se.support.reliableMarginRight||(se.cssHooks.marginRight={get:function(e,n){return n?se.swap(e,{display:"inline-block"},st,[e,"marginRight"]):t}}),!se.support.pixelPosition&&se.fn.position&&se.each(["top","left"],function(e,n){se.cssHooks[n]={get:function(e,r){return r?(r=st(e,n),gt.test(r)?se(e).position()[n]+"px":r):t}}})}),se.expr&&se.expr.filters&&(se.expr.filters.hidden=function(e){return 0===e.offsetWidth&&0===e.offsetHeight||!se.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||se.css(e,"display"))},se.expr.filters.visible=function(e){return!se.expr.filters.hidden(e)}),se.each({margin:"",padding:"",border:"Width"},function(e,t){se.cssHooks[e+t]={expand:function(n){for(var r=0,i={},a="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+wt[r]+t]=a[r]||a[r-2]||a[0];return i}},ht.test(e)||(se.cssHooks[e+t].set=k)});var Ct=/%20/g,kt=/\[\]$/,Ft=/\r?\n/g,Et=/^(?:submit|button|image|reset)$/i,Nt=/^(?:input|select|textarea|keygen)/i;se.fn.extend({serialize:function(){return se.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=se.prop(this,"elements");return e?se.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!se(this).is(":disabled")&&Nt.test(this.nodeName)&&!Et.test(e)&&(this.checked||!Ke.test(e))}).map(function(e,t){var n=se(this).val();return null==n?null:se.isArray(n)?se.map(n,function(e){return{name:t.name,value:e.replace(Ft,"\r\n")}}):{name:t.name,value:n.replace(Ft,"\r\n")}}).get()}}),se.param=function(e,n){var r,i=[],a=function(e,t){t=se.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=se.ajaxSettings&&se.ajaxSettings.traditional),se.isArray(e)||e.jquery&&!se.isPlainObject(e))se.each(e,function(){a(this.name,this.value)});else for(r in e)A(r,e[r],n,a);return i.join("&").replace(Ct,"+")};var St,At,Dt=se.now(),jt=/\?/,_t=/#.*$/,Lt=/([?&])_=[^&]*/,Mt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ht=/^(?:GET|HEAD)$/,Ot=/^\/\//,Pt=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Rt=se.fn.load,Bt={},It={},zt="*/".concat("*");try{At=Q.href}catch(Wt){At=V.createElement("a"),At.href="",At=At.href}St=Pt.exec(At.toLowerCase())||[],se.fn.load=function(e,n,r){if("string"!=typeof e&&Rt)return Rt.apply(this,arguments);var i,a,o,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),se.isFunction(n)?(r=n,n=t):n&&"object"==("undefined"==typeof n?"undefined":_typeof(n))&&(a="POST"),s.length>0&&se.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?se("").append(se.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},se.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){se.fn[t]=function(e){return this.on(t,e)}}),se.each(["get","post"],function(e,n){se[n]=function(e,r,i,a){return se.isFunction(r)&&(a=a||i,i=r,r=t),se.ajax({url:e,type:n,dataType:a,data:r,success:i})}}),se.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:At,type:"GET",isLocal:qt.test(St[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":se.parseJSON,"text xml":se.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_(_(e,se.ajaxSettings),t):_(se.ajaxSettings,e)},ajaxPrefilter:D(Bt),ajaxTransport:D(It),ajax:function(e,n){function r(e,n,r,s){var l,d,y,b,w,C=n;2!==x&&(x=2,u&&clearTimeout(u),i=t,o=s||"",T.readyState=e>0?4:0,r&&(b=L(f,T,r)),e>=200&&300>e||304===e?(f.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(se.lastModified[a]=w),w=T.getResponseHeader("etag"),w&&(se.etag[a]=w)),304===e?(l=!0,C="notmodified"):(l=M(f,b),C=l.state,d=l.data,y=l.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(n||C)+"",l?m.resolveWith(p,[d,C,T]):m.rejectWith(p,[T,C,y]),T.statusCode(v),v=t,c&&h.trigger(l?"ajaxSuccess":"ajaxError",[T,f,l?d:y]),g.fireWith(p,[T,C]),c&&(h.trigger("ajaxComplete",[T,f]),--se.active||se.event.trigger("ajaxStop")))}"object"==("undefined"==typeof e?"undefined":_typeof(e))&&(n=e,e=t),n=n||{};var i,a,o,s,u,l,c,d,f=se.ajaxSetup({},n),p=f.context||f,h=f.context&&(p.nodeType||p.jquery)?se(p):se.event,m=se.Deferred(),g=se.Callbacks("once memory"),v=f.statusCode||{},y={},b={},x=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!s)for(s={};t=Mt.exec(o);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?o:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return i&&i.abort(t),r(0,t),this}};if(m.promise(T).complete=g.add,T.success=T.done,T.error=T.fail,f.url=((e||f.url||At)+"").replace(_t,"").replace(Ot,St[1]+"//"),f.type=n.method||n.type||f.method||f.type,f.dataTypes=se.trim(f.dataType||"*").toLowerCase().match(le)||[""],null==f.crossDomain&&(l=Pt.exec(f.url.toLowerCase()),f.crossDomain=!(!l||l[1]===St[1]&&l[2]===St[2]&&(l[3]||("http:"===l[1]?80:443))==(St[3]||("http:"===St[1]?80:443)))),f.data&&f.processData&&"string"!=typeof f.data&&(f.data=se.param(f.data,f.traditional)),j(Bt,f,n,T),2===x)return T;c=f.global,c&&0===se.active++&&se.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Ht.test(f.type),a=f.url,f.hasContent||(f.data&&(a=f.url+=(jt.test(a)?"&":"?")+f.data,delete f.data),f.cache===!1&&(f.url=Lt.test(a)?a.replace(Lt,"$1_="+Dt++):a+(jt.test(a)?"&":"?")+"_="+Dt++)),f.ifModified&&(se.lastModified[a]&&T.setRequestHeader("If-Modified-Since",se.lastModified[a]),se.etag[a]&&T.setRequestHeader("If-None-Match",se.etag[a])),(f.data&&f.hasContent&&f.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",f.contentType),T.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+zt+"; q=0.01":""):f.accepts["*"]);for(d in f.headers)T.setRequestHeader(d,f.headers[d]);if(f.beforeSend&&(f.beforeSend.call(p,T,f)===!1||2===x))return T.abort();w="abort";for(d in{success:1,error:1,complete:1})T[d](f[d]);if(i=j(It,f,n,T)){T.readyState=1,c&&h.trigger("ajaxSend",[T,f]),f.async&&f.timeout>0&&(u=setTimeout(function(){T.abort("timeout")},f.timeout));try{x=1,i.send(y,r)}catch(C){if(!(2>x))throw C;r(-1,C)}}else r(-1,"No Transport");return T},getScript:function(e,n){return se.get(e,t,n,"script")},getJSON:function(e,t,n){return se.get(e,t,n,"json")}}),se.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return se.globalEval(e),e}}}),se.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),se.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=V.head||se("head")[0]||V.documentElement;return{send:function(t,i){n=V.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var $t=[],Xt=/(=)\?(?=&|$)|\?\?/;se.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=$t.pop()||se.expando+"_"+Dt++;return this[e]=!0,e}}),se.ajaxPrefilter("json jsonp",function(n,r,i){var a,o,s,u=n.jsonp!==!1&&(Xt.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Xt.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(a=n.jsonpCallback=se.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Xt,"$1"+a):n.jsonp!==!1&&(n.url+=(jt.test(n.url)?"&":"?")+n.jsonp+"="+a),n.converters["script json"]=function(){return s||se.error(a+" was not called"),s[0]},n.dataTypes[0]="json",o=e[a],e[a]=function(){s=arguments},i.always(function(){e[a]=o,n[a]&&(n.jsonpCallback=r.jsonpCallback,$t.push(a)),s&&se.isFunction(o)&&o(s[0]),s=o=t}),"script"):t});var Ut,Vt,Qt=0,Yt=e.ActiveXObject&&function(){var e;for(e in Ut)Ut[e](t,!0)};se.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&q()||H()}:q,Vt=se.ajaxSettings.xhr(),se.support.cors=!!Vt&&"withCredentials"in Vt,Vt=se.support.ajax=!!Vt,Vt&&se.ajaxTransport(function(n){if(!n.crossDomain||se.support.cors){var r;return{send:function(i,a){var o,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,d,f;try{if(r&&(i||4===u.readyState))if(r=t,o&&(u.onreadystatechange=se.noop,Yt&&delete Ut[o]),i)4!==u.readyState&&u.abort();else{d={},s=u.status,f=u.responseXML,c=u.getAllResponseHeaders(),f&&f.documentElement&&(d.xml=f),"string"==typeof u.responseText&&(d.text=u.responseText);try{l=u.statusText}catch(p){l=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=d.text?200:404}}catch(h){i||a(-1,h)}d&&a(s,l,d,c)},n.async?4===u.readyState?setTimeout(r):(o=++Qt,Yt&&(Ut||(Ut={},se(e).unload(Yt)),Ut[o]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Gt,Jt,Zt=/^(?:toggle|show|hide)$/,Kt=RegExp("^(?:([+-])=|)("+ue+")([a-z%]*)$","i"),en=/queueHooks$/,tn=[I],nn={"*":[function(e,t){var n,r,i=this.createTween(e,t),a=Kt.exec(t),o=i.cur(),s=+o||0,u=1,l=20;if(a){if(n=+a[2],r=a[3]||(se.cssNumber[e]?"":"px"),"px"!==r&&s){s=se.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,se.style(i.elem,e,s+r);while(u!==(u=i.cur()/o)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=a[1]?s+(a[1]+1)*n:n}return i}]};se.Animation=se.extend(R,{tweener:function(e,t){se.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],nn[n]=nn[n]||[],nn[n].unshift(t)},prefilter:function(e,t){t?tn.unshift(e):tn.push(e)}}),se.Tween=z,z.prototype={constructor:z,init:function(e,t,n,r,i,a){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=a||(se.cssNumber[n]?"":"px")},cur:function(){var e=z.propHooks[this.prop];return e&&e.get?e.get(this):z.propHooks._default.get(this)},run:function(e){var t,n=z.propHooks[this.prop];return this.pos=t=this.options.duration?se.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):z.propHooks._default.set(this),this}},z.prototype.init.prototype=z.prototype,z.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=se.css(e.elem,e.prop,"auto"),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){se.fx.step[e.prop]?se.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[se.cssProps[e.prop]]||se.cssHooks[e.prop])?se.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},z.propHooks.scrollTop=z.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},se.each(["toggle","show","hide"],function(e,t){var n=se.fn[t];se.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(W(t,!0),e,r,i)}}),se.fn.extend({fadeTo:function(e,t,n,r){return this.filter(T).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=se.isEmptyObject(e),a=se.speed(t,n,r),o=function s(){var t=R(this,se.extend({},e),a);s.finish=function(){t.stop(!0)},(i||se._data(this,"finish"))&&t.stop(!0)};return o.finish=o,i||a.queue===!1?this.each(o):this.queue(a.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",a=se.timers,o=se._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&en.test(n)&&i(o[n]);for(n=a.length;n--;)a[n].elem!==this||null!=e&&a[n].queue!==e||(a[n].anim.stop(r),t=!1,a.splice(n,1));(t||!r)&&se.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=se._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],a=se.timers,o=r?r.length:0;for(n.finish=!0,se.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=a.length;t--;)a[t].elem===this&&a[t].queue===e&&(a[t].anim.stop(!0),a.splice(t,1));for(t=0;o>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),se.each({slideDown:W("show"),slideUp:W("hide"),slideToggle:W("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){se.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),se.speed=function(e,t,n){var r=e&&"object"==("undefined"==typeof e?"undefined":_typeof(e))?se.extend({},e):{complete:n||!n&&t||se.isFunction(e)&&e,duration:e,easing:n&&t||t&&!se.isFunction(t)&&t};return r.duration=se.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in se.fx.speeds?se.fx.speeds[r.duration]:se.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){se.isFunction(r.old)&&r.old.call(this),r.queue&&se.dequeue(this,r.queue)},r},se.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},se.timers=[],se.fx=z.prototype.init,se.fx.tick=function(){var e,n=se.timers,r=0;for(Gt=se.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||se.fx.stop(),Gt=t},se.fx.timer=function(e){e()&&se.timers.push(e)&&se.fx.start()},se.fx.interval=13,se.fx.start=function(){Jt||(Jt=setInterval(se.fx.tick,se.fx.interval))},se.fx.stop=function(){clearInterval(Jt),Jt=null},se.fx.speeds={slow:600,fast:200,_default:400},se.fx.step={},se.expr&&se.expr.filters&&(se.expr.filters.animated=function(e){return se.grep(se.timers,function(t){return e===t.elem}).length}),se.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){se.offset.setOffset(this,e,t)});var n,r,i={top:0,left:0},a=this[0],o=a&&a.ownerDocument;return o?(n=o.documentElement,se.contains(n,a)?(a.getBoundingClientRect!==t&&(i=a.getBoundingClientRect()),r=$(o),{top:i.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:i.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):i):void 0},se.offset={setOffset:function(e,t,n){var r=se.css(e,"position");"static"===r&&(e.style.position="relative");var i,a,o=se(e),s=o.offset(),u=se.css(e,"top"),l=se.css(e,"left"),c=("absolute"===r||"fixed"===r)&&se.inArray("auto",[u,l])>-1,d={},f={};c?(f=o.position(),i=f.top,a=f.left):(i=parseFloat(u)||0,a=parseFloat(l)||0),se.isFunction(t)&&(t=t.call(e,n,s)),null!=t.top&&(d.top=t.top-s.top+i),null!=t.left&&(d.left=t.left-s.left+a),"using"in t?t.using.call(e,d):o.css(d)}},se.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===se.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),se.nodeName(e[0],"html")||(n=e.offset()),n.top+=se.css(e[0],"borderTopWidth",!0),n.left+=se.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-se.css(r,"marginTop",!0),left:t.left-n.left-se.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||V.documentElement;e&&!se.nodeName(e,"html")&&"static"===se.css(e,"position");)e=e.offsetParent;return e||V.documentElement})}}),se.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);se.fn[e]=function(i){return se.access(this,function(e,i,a){var o=$(e);return a===t?o?n in o?o[n]:o.document.documentElement[i]:e[i]:(o?o.scrollTo(r?se(o).scrollLeft():a,r?a:se(o).scrollTop()):e[i]=a,t)},e,i,arguments.length,null)}}),se.each({Height:"height",Width:"width"},function(e,n){se.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){se.fn[i]=function(i,a){var o=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||a===!0?"margin":"border");return se.access(this,function(n,r,i){var a;return se.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(a=n.documentElement,Math.max(n.body["scroll"+e],a["scroll"+e],n.body["offset"+e],a["offset"+e],a["client"+e])):i===t?se.css(n,r,s):se.style(n,r,i,s)},n,o?i:t,o,null)}})}),e.jQuery=e.$=se,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return se})}(window),!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("undefined"!=typeof jQuery?jQuery:window.Zepto)}(function(e){function t(t){var n=t.data;t.isDefaultPrevented()||(t.preventDefault(),e(t.target).ajaxSubmit(n))}function n(t){var n=t.target,r=e(n);if(!r.is("[type=submit],[type=image]")){var i=r.closest("[type=submit]");if(0===i.length)return;n=i[0]}var a=this;if(a.clk=n,"image"==n.type)if(void 0!==t.offsetX)a.clk_x=t.offsetX,a.clk_y=t.offsetY;else if("function"==typeof e.fn.offset){var o=r.offset();a.clk_x=t.pageX-o.left,a.clk_y=t.pageY-o.top}else a.clk_x=t.pageX-n.offsetLeft,a.clk_y=t.pageY-n.offsetTop;setTimeout(function(){a.clk=a.clk_x=a.clk_y=null},100)}function r(){if(e.fn.ajaxSubmit.debug){var t="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(t):window.opera&&window.opera.postError&&window.opera.postError(t)}}var i={};i.fileapi=void 0!==e("
").get(0).files,i.formdata=void 0!==window.FormData;var a=!!e.fn.prop;e.fn.attr2=function(){if(!a)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},e.fn.ajaxSubmit=function(t){function n(n){var r,i,a=e.param(n,t.traditional).split("&"),o=a.length,s=[];for(r=0;o>r;r++)a[r]=a[r].replace(/\+/g," "),i=a[r].split("="),s.push([decodeURIComponent(i[0]),decodeURIComponent(i[1])]);return s}function o(r){for(var i=new FormData,a=0;a
').val(f.extraData[p].value).appendTo(C)[0]:e('').val(f.extraData[p]).appendTo(C)[0]);f.iframeTarget||g.appendTo("body"),v.attachEvent?v.attachEvent("onload",s):v.addEventListener("load",s,!1),setTimeout(t,15);try{C.submit()}catch(m){var y=document.createElement("form").submit;y.apply(C)}}finally{C.setAttribute("action",a),C.setAttribute("enctype",l),n?C.setAttribute("target",n):d.removeAttr("target"),e(c).remove()}}function s(t){if(!y.aborted&&!j){if(D=i(v),D||(r("cannot access response document"),t=E),t===F&&y)return y.abort("timeout"),void k.reject(y,"timeout");if(t==E&&y)return y.abort("server abort"),void k.reject(y,"error","server abort");if(D&&D.location.href!=f.iframeSrc||w){v.detachEvent?v.detachEvent("onload",s):v.removeEventListener("load",s,!1);var n,a="success";try{if(w)throw"timeout";var o="xml"==f.dataType||D.XMLDocument||e.isXMLDoc(D);if(r("isXml="+o),!o&&window.opera&&(null===D.body||!D.body.innerHTML)&&--_)return r("requeing onLoad callback, DOM not available"),void setTimeout(s,250);var u=D.body?D.body:D.documentElement;y.responseText=u?u.innerHTML:null,y.responseXML=D.XMLDocument?D.XMLDocument:D,o&&(f.dataType="xml"),y.getResponseHeader=function(e){var t={"content-type":f.dataType};return t[e.toLowerCase()]},u&&(y.status=Number(u.getAttribute("status"))||y.status,y.statusText=u.getAttribute("statusText")||y.statusText);var l=(f.dataType||"").toLowerCase(),c=/(json|script|text)/.test(l);if(c||f.textarea){var d=D.getElementsByTagName("textarea")[0];if(d)y.responseText=d.value,y.status=Number(d.getAttribute("status"))||y.status,y.statusText=d.getAttribute("statusText")||y.statusText;else if(c){var h=D.getElementsByTagName("pre")[0],m=D.getElementsByTagName("body")[0];h?y.responseText=h.textContent?h.textContent:h.innerText:m&&(y.responseText=m.textContent?m.textContent:m.innerText)}}else"xml"==l&&!y.responseXML&&y.responseText&&(y.responseXML=L(y.responseText));try{A=q(y,l,f)}catch(b){a="parsererror",y.error=n=b||a}}catch(b){r("error caught: ",b),a="error",y.error=n=b||a}y.aborted&&(r("upload aborted"),a=null),y.status&&(a=y.status>=200&&y.status<300||304===y.status?"success":"error"),"success"===a?(f.success&&f.success.call(f.context,A,"success",y),k.resolve(y.responseText,"success",y),p&&e.event.trigger("ajaxSuccess",[y,f])):a&&(void 0===n&&(n=y.statusText),f.error&&f.error.call(f.context,y,a,n),k.reject(y,"error",n),p&&e.event.trigger("ajaxError",[y,f,n])),p&&e.event.trigger("ajaxComplete",[y,f]),p&&!--e.active&&e.event.trigger("ajaxStop"),f.complete&&f.complete.call(f.context,y,a),j=!0,f.timeout&&clearTimeout(T),setTimeout(function(){f.iframeTarget?g.attr("src",f.iframeSrc):g.remove(),y.responseXML=null},100)}}}var l,c,f,p,h,g,v,y,b,x,w,T,C=d[0],k=e.Deferred();if(k.abort=function(e){y.abort(e)},n)for(c=0;c'),g.css({position:"absolute",top:"-1000px",left:"-1000px"})),v=g[0],y={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(t){var n="timeout"===t?"timeout":"aborted";r("aborting upload... "+n),this.aborted=1;try{v.contentWindow.document.execCommand&&v.contentWindow.document.execCommand("Stop")}catch(i){}g.attr("src",f.iframeSrc),y.error=n,f.error&&f.error.call(f.context,y,n,t),p&&e.event.trigger("ajaxError",[y,f,n]),f.complete&&f.complete.call(f.context,y,n)}},p=f.global,p&&0===e.active++&&e.event.trigger("ajaxStart"),p&&e.event.trigger("ajaxSend",[y,f]),f.beforeSend&&f.beforeSend.call(f.context,y,f)===!1)return f.global&&e.active--,k.reject(),k;if(y.aborted)return k.reject(),k;b=C.clk,b&&(x=b.name,x&&!b.disabled&&(f.extraData=f.extraData||{},f.extraData[x]=b.value,"image"==b.type&&(f.extraData[x+".x"]=C.clk_x,f.extraData[x+".y"]=C.clk_y)));var F=1,E=2,N=e("meta[name=csrf-token]").attr("content"),S=e("meta[name=csrf-param]").attr("content");S&&N&&(f.extraData=f.extraData||{},f.extraData[S]=N),f.forceSync?o():setTimeout(o,10);var A,D,j,_=50,L=e.parseXML||function(e,t){return window.ActiveXObject?(t=new ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!=t.documentElement.nodeName?t:null},M=e.parseJSON||function(e){return window.eval("("+e+")")},q=function(t,n,r){var i=t.getResponseHeader("content-type")||"",a="xml"===n||!n&&i.indexOf("xml")>=0,o=a?t.responseXML:t.responseText;return a&&"parsererror"===o.documentElement.nodeName&&e.error&&e.error("parsererror"),r&&r.dataFilter&&(o=r.dataFilter(o,n)),"string"==typeof o&&("json"===n||!n&&i.indexOf("json")>=0?o=M(o):("script"===n||!n&&i.indexOf("javascript")>=0)&&e.globalEval(o)),o};return k}if(!this.length)return r("ajaxSubmit: skipping submit process - no element selected"),this;var u,l,c,d=this;"function"==typeof t?t={success:t}:void 0===t&&(t={}),u=t.type||this.attr2("method"),l=t.url||this.attr2("action"),c="string"==typeof l?e.trim(l):"",c=c||window.location.href||"",c&&(c=(c.match(/^([^#]+)/)||[])[1]),t=e.extend(!0,{url:c,success:e.ajaxSettings.success,type:u||e.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},t);var f={};if(this.trigger("form-pre-serialize",[this,t,f]),f.veto)return r("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(t.beforeSerialize&&t.beforeSerialize(this,t)===!1)return r("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var p=t.traditional;void 0===p&&(p=e.ajaxSettings.traditional);var h,m=[],g=this.formToArray(t.semantic,m);if(t.data&&(t.extraData=t.data,h=e.param(t.data,p)),t.beforeSubmit&&t.beforeSubmit(g,this,t)===!1)return r("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[g,this,t,f]),f.veto)return r("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var v=e.param(g,p);h&&(v=v?v+"&"+h:h),"GET"==t.type.toUpperCase()?(t.url+=(t.url.indexOf("?")>=0?"&":"?")+v,t.data=null):t.data=v;var y=[];if(t.resetForm&&y.push(function(){d.resetForm()}),t.clearForm&&y.push(function(){d.clearForm(t.includeHidden)}),!t.dataType&&t.target){var b=t.success||function(){};y.push(function(n){var r=t.replaceTarget?"replaceWith":"html";e(t.target)[r](n).each(b,arguments)})}else t.success&&y.push(t.success);if(t.success=function(e,n,r){for(var i=t.context||this,a=0,o=y.length;o>a;a++)y[a].apply(i,[e,n,r||d,d])},t.error){var x=t.error;t.error=function(e,n,r){var i=t.context||this;x.apply(i,[e,n,r,d])}}if(t.complete){var w=t.complete;t.complete=function(e,n){var r=t.context||this;w.apply(r,[e,n,d])}}var T=e("input[type=file]:enabled",this).filter(function(){return""!==e(this).val()}),C=T.length>0,k="multipart/form-data",F=d.attr("enctype")==k||d.attr("encoding")==k,E=i.fileapi&&i.formdata;r("fileAPI :"+E);var N,S=(C||F)&&!E;t.iframe!==!1&&(t.iframe||S)?t.closeKeepAlive?e.get(t.closeKeepAlive,function(){N=s(g)}):N=s(g):N=(C||F)&&E?o(g):e.ajax(t),d.removeData("jqxhr").data("jqxhr",N);for(var A=0;Al;l++)if(p=u[l],d=p.name,d&&!p.disabled)if(t&&o.clk&&"image"==p.type)o.clk==p&&(r.push({name:d,value:e(p).val(),type:p.type}),r.push({name:d+".x",value:o.clk_x},{name:d+".y",value:o.clk_y}));else if(f=e.fieldValue(p,!0),f&&f.constructor==Array)for(n&&n.push(p),c=0,m=f.length;m>c;c++)r.push({name:d,value:f[c]});else if(i.fileapi&&"file"==p.type){n&&n.push(p);var g=p.files;if(g.length)for(c=0;ca;a++)n.push({name:r,value:i[a]});else null!==i&&"undefined"!=typeof i&&n.push({name:this.name,value:i})}}),e.param(n)},e.fn.fieldValue=function(t){for(var n=[],r=0,i=this.length;i>r;r++){var a=this[r],o=e.fieldValue(a,t);null===o||"undefined"==typeof o||o.constructor==Array&&!o.length||(o.constructor==Array?e.merge(n,o):n.push(o))}return n},e.fieldValue=function(t,n){var r=t.name,i=t.type,a=t.tagName.toLowerCase();if(void 0===n&&(n=!0),n&&(!r||t.disabled||"reset"==i||"button"==i||("checkbox"==i||"radio"==i)&&!t.checked||("submit"==i||"image"==i)&&t.form&&t.form.clk!=t||"select"==a&&-1==t.selectedIndex))return null;if("select"==a){var o=t.selectedIndex;if(0>o)return null;for(var s=[],u=t.options,l="select-one"==i,c=l?o+1:u.length,d=l?o:0;c>d;d++){var f=u[d];if(f.selected){var p=f.value;if(p||(p=f.attributes&&f.attributes.value&&!f.attributes.value.specified?f.text:f.value),l)return p;s.push(p)}}return s}return e(t).val()},e.fn.clearForm=function(t){return this.each(function(){e("input,select,textarea",this).clearFields(t)})},e.fn.clearFields=e.fn.clearInputs=function(t){var n=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var r=this.type,i=this.tagName.toLowerCase();n.test(r)||"textarea"==i?this.value="":"checkbox"==r||"radio"==r?this.checked=!1:"select"==i?this.selectedIndex=-1:"file"==r?/MSIE/.test(navigator.userAgent)?e(this).replaceWith(e(this).clone(!0)):e(this).val(""):t&&(t===!0&&/hidden/.test(r)||"string"==typeof t&&e(this).is(t))&&(this.value="")})},e.fn.resetForm=function(){return this.each(function(){("function"==typeof this.reset||"object"==_typeof(this.reset)&&!this.reset.nodeType)&&this.reset()})},e.fn.enable=function(e){return void 0===e&&(e=!0),this.each(function(){this.disabled=!e})},e.fn.selected=function(t){return void 0===t&&(t=!0),this.each(function(){var n=this.type;if("checkbox"==n||"radio"==n)this.checked=t;else if("option"==this.tagName.toLowerCase()){var r=e(this).parent("select");t&&r[0]&&"select-one"==r[0].type&&r.find("option").selected(!1),this.selected=t}})},e.fn.ajaxSubmit.debug=!1}),!function(e){e.extend(e.fn,{validate:function(t){if(!this.length)return void(t&&t.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var n=e.data(this[0],"validator");return n?n:(this.attr("novalidate","novalidate"),n=new e.validator(t,this[0]),e.data(this[0],"validator",n),n.settings.onsubmit&&(this.validateDelegate(":submit","click",function(t){n.settings.submitHandler&&(n.submitButton=t.target),e(t.target).hasClass("cancel")&&(n.cancelSubmit=!0),void 0!==e(t.target).attr("formnovalidate")&&(n.cancelSubmit=!0)}),this.submit(function(t){function r(){var r;return!n.settings.submitHandler||(n.submitButton&&(r=e("").attr("name",n.submitButton.name).val(e(n.submitButton).val()).appendTo(n.currentForm)),n.settings.submitHandler.call(n,n.currentForm,t),n.submitButton&&r.remove(),!1)}return n.settings.debug&&t.preventDefault(),n.cancelSubmit?(n.cancelSubmit=!1,r()):n.form()?n.pendingRequest?(n.formSubmitted=!0,!1):r():(n.focusInvalid(),!1)})),n)},valid:function(){var t,n;return e(this[0]).is("form")?t=this.validate().form():(t=!0,n=e(this[0].form).validate(),this.each(function(){t=n.element(this)&&t})),t},removeAttrs:function(t){var n={},r=this;return e.each(t.split(/\s/),function(e,t){n[t]=r.attr(t),r.removeAttr(t)}),n},rules:function(t,n){var r,i,a,o,s,u,l=this[0];if(t)switch(r=e.data(l.form,"validator").settings,i=r.rules,a=e.validator.staticRules(l),t){case"add":e.extend(a,e.validator.normalizeRule(n)),delete a.messages,i[l.name]=a,n.messages&&(r.messages[l.name]=e.extend(r.messages[l.name],n.messages));break;case"remove":return n?(u={},e.each(n.split(/\s/),function(t,n){u[n]=a[n],delete a[n],"required"===n&&e(l).removeAttr("aria-required")}),u):(delete i[l.name],a)}return o=e.validator.normalizeRules(e.extend({},e.validator.classRules(l),e.validator.attributeRules(l),e.validator.dataRules(l),e.validator.staticRules(l)),l),o.required&&(s=o.required,delete o.required,o=e.extend({required:s},o),e(l).attr("aria-required","true")),o.remote&&(s=o.remote,delete o.remote,o=e.extend(o,{remote:s})),o}}),e.extend(e.expr[":"],{blank:function(t){return!e.trim(""+e(t).val())},filled:function(t){return!!e.trim(""+e(t).val())},unchecked:function(t){return!e(t).prop("checked")}}),e.validator=function(t,n){this.settings=e.extend(!0,{},e.validator.defaults,t),this.currentForm=n,this.init()},e.validator.format=function(t,n){return 1===arguments.length?function(){var n=e.makeArray(arguments);return n.unshift(t),e.validator.format.apply(this,n)}:(arguments.length>2&&n.constructor!==Array&&(n=e.makeArray(arguments).slice(1)),n.constructor!==Array&&(n=[n]),e.each(n,function(e,n){t=t.replace(new RegExp("\\{"+e+"\\}","g"),function(){return n})}),t)},e.extend(e.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:e([]),errorLabelContainer:e([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(e){this.lastActive=e,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,e,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(e)).hide())},onfocusout:function(e){this.checkable(e)||!(e.name in this.submitted)&&this.optional(e)||this.element(e)},onkeyup:function(e,t){(9!==t.which||""!==this.elementValue(e))&&(e.name in this.submitted||e===this.lastElement)&&this.element(e)},onclick:function(e){e.name in this.submitted?this.element(e):e.parentNode.name in this.submitted&&this.element(e.parentNode)},highlight:function(t,n,r){"radio"===t.type?this.findByName(t.name).addClass(n).removeClass(r):e(t).addClass(n).removeClass(r)},unhighlight:function(t,n,r){"radio"===t.type?this.findByName(t.name).removeClass(n).addClass(r):e(t).removeClass(n).addClass(r)}},setDefaults:function(t){e.extend(e.validator.defaults,t)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:e.validator.format("Please enter no more than {0} characters."),minlength:e.validator.format("Please enter at least {0} characters."),rangelength:e.validator.format("Please enter a value between {0} and {1} characters long."),range:e.validator.format("Please enter a value between {0} and {1}."),max:e.validator.format("Please enter a value less than or equal to {0}."),min:e.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function t(t){var n=e.data(this[0].form,"validator"),r="on"+t.type.replace(/^validate/,""),i=n.settings;i[r]&&!this.is(i.ignore)&&i[r].call(n,this[0],t)}this.labelContainer=e(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||e(this.currentForm),this.containers=e(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var n,r=this.groups={};e.each(this.settings.groups,function(t,n){"string"==typeof n&&(n=n.split(/\s/)),e.each(n,function(e,n){r[n]=t})}),n=this.settings.rules,e.each(n,function(t,r){n[t]=e.validator.normalizeRule(r)}),e(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",t).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",t),this.settings.invalidHandler&&e(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler),e(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),e.extend(this.submitted,this.errorMap),this.invalid=e.extend({},this.errorMap),this.valid()||e(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var e=0,t=this.currentElements=this.elements();t[e];e++)this.check(t[e]);return this.valid()},element:function(t){var n=this.clean(t),r=this.validationTargetFor(n),i=!0;return this.lastElement=r,void 0===r?delete this.invalid[n.name]:(this.prepareElement(r),this.currentElements=e(r),i=this.check(r)!==!1,i?delete this.invalid[r.name]:this.invalid[r.name]=!0),e(t).attr("aria-invalid",!i),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),i},showErrors:function(t){if(t){e.extend(this.errorMap,t),this.errorList=[];for(var n in t)this.errorList.push({message:t[n],element:this.findByName(n)[0]});this.successList=e.grep(this.successList,function(e){return!(e.name in t)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){e.fn.resetForm&&e(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue").removeAttr("aria-invalid")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(e){var t,n=0;for(t in e)n++;return n},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{e(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(t){}},findLastActive:function(){var t=this.lastActive;return t&&1===e.grep(this.errorList,function(e){return e.element.name===t.name}).length&&t},elements:function(){var t=this,n={};return e(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&t.settings.debug&&window.console&&console.error("%o has no name assigned",this),!(this.name in n||!t.objectLength(e(this).rules()))&&(n[this.name]=!0,!0)})},clean:function(t){return e(t)[0]},errors:function(){var t=this.settings.errorClass.split(" ").join(".");return e(this.settings.errorElement+"."+t,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=e([]),this.toHide=e([]),this.currentElements=e([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(e){this.reset(),this.toHide=this.errorsFor(e)},elementValue:function(t){var n,r=e(t),i=r.attr("type");return"radio"===i||"checkbox"===i?e("input[name='"+r.attr("name")+"']:checked").val():(n=r.val(),"string"==typeof n?n.replace(/\r/g,""):n)},check:function(t){t=this.validationTargetFor(this.clean(t));var n,r,i,a=e(t).rules(),o=e.map(a,function(e,t){return t}).length,s=!1,u=this.elementValue(t);for(r in a){i={method:r,parameters:a[r]};try{if(n=e.validator.methods[r].call(this,u,t,i.parameters),"dependency-mismatch"===n&&1===o){s=!0;continue}if(s=!1,"pending"===n)return void(this.toHide=this.toHide.not(this.errorsFor(t)));if(!n)return this.formatAndAdd(t,i),!1}catch(l){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+t.id+", check the '"+i.method+"' method.",l),l}}if(!s)return this.objectLength(a)&&this.successList.push(t),!0},customDataMessage:function(t,n){return e(t).data("msg"+n[0].toUpperCase()+n.substring(1).toLowerCase())||e(t).data("msg")},customMessage:function(e,t){var n=this.settings.messages[e];return n&&(n.constructor===String?n:n[t])},findDefined:function(){for(var e=0;eWarning: No message defined for "+t.name+"")},formatAndAdd:function(t,n){var r=this.defaultMessage(t,n.method),i=/\$?\{(\d+)\}/g;"function"==typeof r?r=r.call(this,n.parameters,t):i.test(r)&&(r=e.validator.format(r.replace(i,"{$1}"),n.parameters)),this.errorList.push({message:r,element:t,method:n.method}),this.errorMap[t.name]=r,this.submitted[t.name]=r},addWrapper:function(e){return this.settings.wrapper&&(e=e.add(e.parent(this.settings.wrapper))),e},defaultShowErrors:function(){var e,t,n;for(e=0;this.errorList[e];e++)n=this.errorList[e],this.settings.highlight&&this.settings.highlight.call(this,n.element,this.settings.errorClass,this.settings.validClass),this.showLabel(n.element,n.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(e=0;this.successList[e];e++)this.showLabel(this.successList[e]);if(this.settings.unhighlight)for(e=0,t=this.validElements();t[e];e++)this.settings.unhighlight.call(this,t[e],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return e(this.errorList).map(function(){return this.element})},showLabel:function(t,n){var r=this.errorsFor(t);r.length?(r.removeClass(this.settings.validClass).addClass(this.settings.errorClass),r.html(n)):(r=e("<"+this.settings.errorElement+">").attr("for",this.idOrName(t)).addClass(this.settings.errorClass).html(n||""),this.settings.wrapper&&(r=r.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(r).length||(this.settings.errorPlacement?this.settings.errorPlacement(r,e(t)):r.insertAfter(t))),!n&&this.settings.success&&(r.text(""),"string"==typeof this.settings.success?r.addClass(this.settings.success):this.settings.success(r,t)),this.toShow=this.toShow.add(r)},errorsFor:function(t){var n=this.idOrName(t);return this.errors().filter(function(){return e(this).attr("for")===n})},idOrName:function(e){return this.groups[e.name]||(this.checkable(e)?e.name:e.id||e.name)},validationTargetFor:function(e){return this.checkable(e)&&(e=this.findByName(e.name).not(this.settings.ignore)[0]),e},checkable:function(e){return/radio|checkbox/i.test(e.type)},findByName:function(t){return e(this.currentForm).find("[name='"+t+"']")},getLength:function(t,n){switch(n.nodeName.toLowerCase()){case"select":return e("option:selected",n).length;case"input":if(this.checkable(n))return this.findByName(n.name).filter(":checked").length}return t.length},depend:function(e,t){return!this.dependTypes["undefined"==typeof e?"undefined":_typeof(e)]||this.dependTypes["undefined"==typeof e?"undefined":_typeof(e)](e,t)},dependTypes:{"boolean":function(e){return e},string:function(t,n){return!!e(t,n.form).length},"function":function(e,t){return e(t)}},optional:function(t){var n=this.elementValue(t);return!e.validator.methods.required.call(this,n,t)&&"dependency-mismatch"},startRequest:function(e){this.pending[e.name]||(this.pendingRequest++,this.pending[e.name]=!0)},stopRequest:function(t,n){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[t.name],n&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(e(this.currentForm).submit(),this.formSubmitted=!1):!n&&0===this.pendingRequest&&this.formSubmitted&&(e(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(t){return e.data(t,"previousValue")||e.data(t,"previousValue",{old:null,valid:!0,message:this.defaultMessage(t,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(t,n){t.constructor===String?this.classRuleSettings[t]=n:e.extend(this.classRuleSettings,t)},classRules:function(t){var n={},r=e(t).attr("class");return r&&e.each(r.split(" "),function(){this in e.validator.classRuleSettings&&e.extend(n,e.validator.classRuleSettings[this])}),n},attributeRules:function(t){var n,r,i={},a=e(t),o=t.getAttribute("type");for(n in e.validator.methods)"required"===n?(r=t.getAttribute(n),""===r&&(r=!0),r=!!r):r=a.attr(n),/min|max/.test(n)&&(null===o||/number|range|text/.test(o))&&(r=Number(r)),r||0===r?i[n]=r:o===n&&"range"!==o&&(i[n]=!0);return i.maxlength&&/-1|2147483647|524288/.test(i.maxlength)&&delete i.maxlength,i},dataRules:function(t){var n,r,i={},a=e(t);for(n in e.validator.methods)r=a.data("rule"+n[0].toUpperCase()+n.substring(1).toLowerCase()),void 0!==r&&(i[n]=r);return i},staticRules:function(t){var n={},r=e.data(t.form,"validator");return r.settings.rules&&(n=e.validator.normalizeRule(r.settings.rules[t.name])||{}),n},normalizeRules:function(t,n){return e.each(t,function(r,i){if(i===!1)return void delete t[r];if(i.param||i.depends){var a=!0;switch(_typeof(i.depends)){case"string":a=!!e(i.depends,n.form).length;break;case"function":a=i.depends.call(n,n)}a?t[r]=void 0===i.param||i.param:delete t[r]}}),e.each(t,function(r,i){t[r]=e.isFunction(i)?i(n):i}),e.each(["minlength","maxlength"],function(){t[this]&&(t[this]=Number(t[this]))}),e.each(["rangelength","range"],function(){var n;t[this]&&(e.isArray(t[this])?t[this]=[Number(t[this][0]),Number(t[this][1])]:"string"==typeof t[this]&&(n=t[this].split(/[\s,]+/),t[this]=[Number(n[0]),Number(n[1])]))}),e.validator.autoCreateRanges&&(t.min&&t.max&&(t.range=[t.min,t.max],delete t.min,delete t.max),t.minlength&&t.maxlength&&(t.rangelength=[t.minlength,t.maxlength],delete t.minlength,delete t.maxlength)),t},normalizeRule:function(t){if("string"==typeof t){var n={};e.each(t.split(/\s/),function(){n[this]=!0}),t=n}return t},addMethod:function(t,n,r){e.validator.methods[t]=n,e.validator.messages[t]=void 0!==r?r:e.validator.messages[t],n.length<3&&e.validator.addClassRules(t,e.validator.normalizeRule(t))},methods:{required:function(t,n,r){if(!this.depend(r,n))return"dependency-mismatch";if("select"===n.nodeName.toLowerCase()){var i=e(n).val();return i&&i.length>0}return this.checkable(n)?this.getLength(t,n)>0:e.trim(t).length>0},email:function(e,t){return this.optional(t)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)},url:function(e,t){return this.optional(t)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(e)},date:function(e,t){return this.optional(t)||!/Invalid|NaN/.test(new Date(e).toString())},dateISO:function(e,t){return this.optional(t)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(e)},number:function(e,t){return this.optional(t)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(e)},digits:function(e,t){return this.optional(t)||/^\d+$/.test(e)},creditcard:function(e,t){if(this.optional(t))return"dependency-mismatch";if(/[^0-9 \-]+/.test(e))return!1;var n,r,i=0,a=0,o=!1;if(e=e.replace(/\D/g,""),e.length<13||e.length>19)return!1;for(n=e.length-1;n>=0;n--)r=e.charAt(n),a=parseInt(r,10),o&&(a*=2)>9&&(a-=9),i+=a,o=!o;return i%10===0},minlength:function(t,n,r){var i=e.isArray(t)?t.length:this.getLength(e.trim(t),n);return this.optional(n)||i>=r},maxlength:function(t,n,r){var i=e.isArray(t)?t.length:this.getLength(e.trim(t),n);return this.optional(n)||r>=i},rangelength:function(t,n,r){var i=e.isArray(t)?t.length:this.getLength(e.trim(t),n);return this.optional(n)||i>=r[0]&&i<=r[1]},min:function(e,t,n){return this.optional(t)||e>=n},max:function(e,t,n){return this.optional(t)||n>=e},range:function(e,t,n){
+return this.optional(t)||e>=n[0]&&e<=n[1]},equalTo:function(t,n,r){var i=e(r);return this.settings.onfocusout&&i.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){e(n).valid()}),t===i.val()},remote:function(t,n,r){if(this.optional(n))return"dependency-mismatch";var i,a,o=this.previousValue(n);return this.settings.messages[n.name]||(this.settings.messages[n.name]={}),o.originalMessage=this.settings.messages[n.name].remote,this.settings.messages[n.name].remote=o.message,r="string"==typeof r&&{url:r}||r,o.old===t?o.valid:(o.old=t,i=this,this.startRequest(n),a={},a[n.name]=t,e.ajax(e.extend(!0,{url:r,mode:"abort",port:"validate"+n.name,dataType:"json",data:a,context:i.currentForm,success:function(r){var a,s,u,l=r===!0||"true"===r;i.settings.messages[n.name].remote=o.originalMessage,l?(u=i.formSubmitted,i.prepareElement(n),i.formSubmitted=u,i.successList.push(n),delete i.invalid[n.name],i.showErrors()):(a={},s=r||i.defaultMessage(n,"remote"),a[n.name]=o.message=e.isFunction(s)?s(t):s,i.invalid[n.name]=!0,i.showErrors(a)),o.valid=l,i.stopRequest(n,l)}},r)),"pending")}}}),e.format=function(){throw"$.format has been deprecated. Please use $.validator.format instead."}}(jQuery),function(e){var t,n={};e.ajaxPrefilter?e.ajaxPrefilter(function(e,t,r){var i=e.port;"abort"===e.mode&&(n[i]&&n[i].abort(),n[i]=r)}):(t=e.ajax,e.ajax=function(r){var i=("mode"in r?r:e.ajaxSettings).mode,a=("port"in r?r:e.ajaxSettings).port;return"abort"===i?(n[a]&&n[a].abort(),n[a]=t.apply(this,arguments),n[a]):t.apply(this,arguments)})}(jQuery),function(e){e.extend(e.fn,{validateDelegate:function(t,n,r){return this.bind(n,function(n){var i=e(n.target);return i.is(t)?r.apply(i,arguments):void 0})}})}(jQuery),function(e){e.validator.addMethod("mc_birthday",function(t,n,r){var i=!1,a=e("input:not(:hidden)",e(n).closest(r));if(0==a.filter(":filled").length&&this.optional(n))i=!0;else{var o=new Array;o.month=a.filter("input[name*='[month]']").val(),o.day=a.filter("input[name*='[day]']").val(),o.month=o.month-1;var s=new Date(1970,o.month,o.day);i=s.getDate()==o.day&&s.getMonth()==o.month}return i},"Please enter a valid month and day."),e.validator.addMethod("mc_date",function(t,n,r){var i=!1,a=e("input:not(:hidden)",e(n).closest(r));if(0==a.filter(":filled").length&&this.optional(n))i=!0;else{var o=new Array;o.month=a.filter("input[name*='[month]']").val(),o.day=a.filter("input[name*='[day]']").val(),o.year=a.filter("input[name*='[year]']").val(),o.month=o.month-1,o.year.length<4&&(o.year=parseInt(o.year)<50?2e3+parseInt(o.year):1900+parseInt(o.year));var s=new Date(o.year,o.month,o.day);i=s.getDate()==o.day&&s.getMonth()==o.month&&s.getFullYear()==o.year}return i},"Please enter a valid date"),e.validator.addMethod("mc_phone",function(t,n,r){var i=!1,a=e("input:filled:not(:hidden)",e(n).closest(r));return 0==a.length&&this.optional(n)?i=!0:(t=a.eq(0).val()+a.eq(1).val()+a.eq(2).val(),i=10==t.length&&t.match(/[0-9]{9}/)),i},"Please specify a valid phone number"),e.validator.addMethod("skip_or_complete_group",function(t,n,r){var i=e("input:not(:hidden)",e(n).closest(r)),a=i.eq(0),o=a.data("valid_skip")?a.data("valid_skip"):e.extend({},this),s=i.filter(function(){return o.elementValue(this)}).length,u=0===s||s===i.length;return a.data("valid_skip",o),e(n).data("being_validated")||(i.data("being_validated",!0),i.each(function(){o.element(this)}),i.data("being_validated",!1)),u},e.validator.format("Please supply missing fields.")),e.validator.addMethod("skip_or_fill_minimum",function(t,n,r){var i=e(r[1],n.form),a=i.eq(0),o=a.data("valid_skip")?a.data("valid_skip"):e.extend({},this),s=i.filter(function(){return o.elementValue(this)}).length,u=0===s||s>=r[0];return console.log(i.eq(0)),a.data("valid_skip",o),e(n).data("being_validated")||(i.data("being_validated",!0),i.each(function(){o.element(this)}),i.data("being_validated",!1)),u},e.validator.format("Please either skip these fields or fill at least {0} of them.")),e.validator.addMethod("zipcodeUS",function(e,t){return this.optional(t)||/^\d{5}-\d{4}$|^\d{5}$/.test(e)},"The specified US ZIP Code is invalid")}(jQuery),function(e){function t(){e(".email-form__input--email").prop("disabled",!0),e(".email-form__input--sumbit").prop("disabled",!0)}function n(){e(".email-form__input--email").prop("disabled",!1),e(".email-form__input--sumbit").prop("disabled",!1)}function r(){u(),c()}function a(){e(".email-form__input--email").focus()}function o(){d||(e(".email-form").addClass("email-form--error"),d=!0),setTimeout(function(){e(".email-form").removeClass("email-form--error"),d=!1},600)}function s(t){f||(e(".email-form__error-message").addClass("email-form__error-message--shown"),e(".email-form__error-message").html(t),f=!0)}function u(){f&&(e(".email-form__error-message").removeClass("email-form__error-message--shown"),e(".email-form__error-message").html(""),f=!1)}function l(t){p||(e(".email-form__success-message").addClass("email-form__success-message--shown"),e(".email-form__success-message").html(t),p=!0)}function c(){p&&(e(".email-form__success-message").removeClass("email-form__success-message--shown"),e(".email-form__success-message").html(""),p=!1)}window.mc={openPopup:function(){e("#mc_embed_signup a.mc_embed_close").show(),setTimeout(function(){e("#mc_embed_signup").fadeIn()},mc.delayPopup)},closePopup:function(){e("#mc_embed_signup").hide();var t=new Date,n=new Date(t.getTime()+31536e6);document.cookie="MCEvilPopupClosed=yes;expires="+n.toGMTString()+";path=/"},evalPopup:function(){for(e("#mc_embed_signup").hide(),cks=document.cookie.split(";"),i=0;i1){var i=r.first().attr("name"),a=e.map(r,function(e){return e.name});t[i.substring(0,i.indexOf("["))]=a.join(" ")}}),t},isMultiPartField:function(t){return e("input:not(:hidden)",e(t).closest(".mc-field-group")).length>1},isTooEarly:function(t){var n=e("input:not(:hidden)",e(t).closest(".mc-field-group"));return e(n).eq(-1).attr("id")!=e(t).attr("id")},mce_success_cb:function(o){if(r(),"success"==o.result){l(o.msg),e(".email-form__input--email").blur(),e(".email-form").addClass("email-form--valid"),t();try{ga("send","event","Waitlist","Sign Up","Waitlist")}catch(u){}}else{n();var c,d,f=-1;try{d=o.msg.split(" - ",2),void 0==d[1]?c=o.msg:(i=parseInt(d[0]),i.toString()==d[0]?(f=d[0],c=d[1]):(f=-1,c=o.msg))}catch(u){f=-1,c=o.msg}try{if(f==-1)e("#mce-"+o.result+"-response").html(c);else{var p=e("input[name*='"+fnames[f]+"']").attr("name"),h={};h[p]=c,console.log(h),mc.mce_validator.showErrors(h)}a(),s()}catch(u){e("#mce-"+o.result+"-response").html(c),s()}}}},window.mc.mce_validator=e("#mc-embedded-subscribe-form").validate({errorClass:"form-error",errorElement:"div",onkeyup:!1,onfocusout:function(e){!mc.isTooEarly(e)},onblur:function(e){!mc.isTooEarly(e)},groups:mc.getGroups(),highlight:function(e,t,n){},errorPlacement:function(e,t){n()},invalidHandler:function(){n(),r()},showErrors:function(e,t){if(e.hasOwnProperty("EMAIL")){o();var n=e.EMAIL;s(n)}},submitHandler:function(n){e(n).ajaxSubmit(mc.ajaxOptions),r(),t()}}),window.mc.ajaxOptions={url:mc.getAjaxSubmitUrl(),type:"GET",dataType:"json",contentType:"application/json; charset=utf-8",success:mc.mce_success_cb},e.validator.addClassRules("birthday",{digits:!0,mc_birthday:".datefield"}),e.validator.addClassRules("datepart",{digits:!0,mc_date:".datefield"}),e.validator.addClassRules("phonepart",{digits:!0,mc_phone:".phonefield"}),e("#mc_embed_signup a.mc_embed_close").click(function(){mc.closePopup()}),e(document).keydown(function(e){var t=null==e?event.keyCode:e.which;27==t&&"undefined"!=typeof mc.showPopup&&mc.closePopup()});var d=!1,f=!1,p=!1}(jQuery),function(e){window.fnames=new Array,window.ftypes=new Array,fnames[0]="EMAIL",ftypes[0]="email",fnames[1]="FNAME",ftypes[1]="text",fnames[2]="LNAME",ftypes[2]="text"}(jQuery);jQuery.noConflict(!0)},{}]},{},[1]);
+//# sourceMappingURL=mc-validate.js.map
diff --git a/dist/js/mc-validate.js.map b/dist/js/mc-validate.js.map
new file mode 100644
index 0000000..e555d44
--- /dev/null
+++ b/dist/js/mc-validate.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["js/mc-validate.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","st","type","isWindow","nodeType","Tt","each","match","lt","acceptData","expando","c","cache","data","K","pop","guid","toJSON","noop","extend","camelCase","isArray","concat","map","split","isEmptyObject","cleanData","support","deleteExpando","window","replace","Nt","toLowerCase","getAttribute","wt","test","parseJSON","isFunction","grep","Wt","filter","inArray","p","zt","createDocumentFragment","createElement","d","getElementsByTagName","appendChild","ownerDocument","h","getAttributeNode","specified","g","nn","exec","removeAttribute","m","_data","y","hasData","events","handle","event","add","v","nodeName","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","trim","Zt","defaultChecked","checked","value","defaultSelected","selected","defaultValue","b","querySelectorAll","childNodes","push","merge","x","T","charAt","toUpperCase","slice","Nn","w","css","contains","N","style","display","S","C","mn","Math","max","k","wn","E","offsetWidth","offsetHeight","ln","boxSizing","un","yn","boxSizingReliable","parseFloat","V","bn","A","cn","appendTo","documentElement","contentWindow","contentDocument","document","write","close","detach","body","remove","j","kn","D","unshift","L","dataTypes","$n","H","ajaxSettings","flatOptions","M","contents","responseFields","shift","mimeType","getResponseHeader","converters","q","dataFilter","dataType","splice","state","error","_","XMLHttpRequest","F","ActiveXObject","O","setTimeout","Qn","now","B","rr","P","nr","Deferred","always","elem","startTime","duration","tweens","run","notifyWith","resolveWith","promise","props","opts","specialEasing","originalProperties","originalOptions","createTween","Tween","easing","stop","this","rejectWith","R","start","fx","timer","anim","queue","progress","done","complete","fail","cssHooks","expand","W","_queueHooks","unqueued","empty","fire","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","Zn","hidden","show","hide","_removeData","end","$","init","I","height","opacity","width","z","defaultView","parentWindow","X","U","Y","location","J","jQuery","G","Q","Z","et","tt","nt","rt","indexOf","it","toString","ot","hasOwnProperty","at","fn","ut","source","ct","ft","pt","dt","ht","gt","mt","yt","vt","bt","xt","addEventListener","removeEventListener","ready","readyState","detachEvent","jquery","find","parseHTML","isPlainObject","attr","getElementById","id","context","selector","makeArray","size","toArray","get","pushStack","prevObject","apply","arguments","first","eq","last","sort","noConflict","isReady","readyWait","holdReady","trigger","off","Array","isNumeric","isNaN","isFinite","buildFragment","JSON","parse","Function","parseXML","DOMParser","parseFromString","async","loadXML","globalEval","execScript","eval","Object","proxy","access","_n2","Date","getTime","attachEvent","frameElement","doScroll","Callbacks","once","memory","stopOnFalse","disable","unique","has","disabled","lock","locked","fireWith","fired","then","resolve","reject","notify","pipe","when","setAttribute","cssText","getSetAttribute","className","leadingWhitespace","firstChild","tbody","htmlSerialize","hrefNormalized","cssFloat","checkOn","optSelected","enctype","cloneNode","boxModel","compatMode","reliableMarginRight","pixelPosition","noCloneChecked","optDisabled","input","radioValue","appendChecked","checkClone","lastChild","click","submit","change","focusin","attributes","backgroundClip","clearCloneStyle","reliableHiddenOffsets","doesNotIncludeMarginInBodyOffset","offsetTop","getComputedStyle","top","marginRight","removeChild","random","noData","embed","object","applet","removeData","name","substring","dequeue","cur","delay","speeds","clearTimeout","clearQueue","Ct","kt","Et","St","At","jt","Dt","Lt","Ht","Mt","removeAttr","prop","removeProp","propFix","addClass","removeClass","toggleClass","hasClass","val","valHooks","set","option","select","options","selectedIndex","isXMLDoc","attrHooks","tabindex","readonly","for","class","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","contenteditable","propHooks","tabIndex","parseInt","href","button","setAttributeNode","createAttribute","qt","_t","Ft","Ot","Bt","global","handler","triggered","dispatch","special","delegateType","bindType","origType","needsContext","expr","namespace","join","delegateCount","setup","RegExp","teardown","Event","isTrigger","namespace_re","result","target","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","delegateTarget","preDispatch","handlers","currentTarget","isImmediatePropagationStopped","handleObj","stopPropagation","postDispatch","index","fixHooks","srcElement","metaKey","keyHooks","which","charCode","keyCode","mouseHooks","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","focus","activeElement","blur","beforeunload","originalEvent","returnValue","simulate","isSimulated","defaultPrevented","getPreventDefault","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","on","one","bind","unbind","delegate","undelegate","triggerHandler","hover","_e","cacheLength","getByClassName","getElementsByClassName","qsa","nextSibling","preFilter","matches","dir","relative","_s","TAG","uniqueSort","ID","CLASS","NAME","ATTR","PSEUDO","CHILD","String","fromCharCode","isXML","setDocument","tagNameNoComments","createComment","getByName","insertBefore","getElementsByName","getIdNotName","attrHandle","matchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","sourceIndex","detectDuplicates","getText","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","substr","pseudos","setFilters","not","innerText","lang","hash","root","hasFocus","enabled","parent","header","even","odd","radio","checkbox","file","password","image","reset","compile","nth","filters","Pt","Rt","$t","It","children","next","prev","is","closest","prevAll","addBack","andSelf","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","sibling","reverse","Xt","Ut","Vt","Yt","Jt","Gt","Qt","Kt","en","tn","rn","legend","area","param","thead","tr","col","td","an","sn","optgroup","tfoot","colgroup","caption","th","append","createTextNode","wrapAll","clone","wrapInner","wrap","unwrap","replaceWith","domManip","prepend","before","after","html","src","ajax","url","throws","prependTo","insertAfter","replaceAll","pn","dn","hn","gn","vn","BODY","xn","position","visibility","Tn","letterSpacing","fontWeight","toggle","cssNumber","columnCount","fillOpacity","lineHeight","orphans","widows","zIndex","cssProps","float","swap","getPropertyValue","minWidth","maxWidth","currentStyle","left","runtimeStyle","pixelLeft","$1","visible","margin","padding","border","Cn","En","Sn","An","serialize","serializeArray","encodeURIComponent","traditional","jn","Dn","Ln","Hn","Mn","qn","_n","Fn","On","Bn","Pn","Rn","Wn","In","zn","responseText","success","active","lastModified","etag","isLocal","processData","contentType","accepts","*","xml","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ifModified","status","statusText","statusCode","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","method","crossDomain","hasContent","headers","beforeSend","timeout","send","getScript","getJSON","script","text script","head","scriptCharset","charset","onload","onreadystatechange","Xn","Un","jsonp","jsonpCallback","Vn","Yn","Jn","Gn","xhr","cors","_r","username","open","xhrFields","responseXML","unload","Kn","er","unit","Animation","tweener","prefilter","pos","step","animate","fadeTo","speed","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","old","linear","swing","cos","PI","tick","interval","setInterval","clearInterval","slow","fast","animated","offset","setOffset","getBoundingClientRect","pageYOffset","pageXOffset","using","offsetParent","scrollTo","Height","Width","content","","define","amd","Zepto","ajaxSubmit","clk","offsetX","clk_x","clk_y","offsetY","offsetLeft","debug","console","log","opera","postError","fileapi","files","formdata","FormData","attr2","decodeURIComponent","extraData","uploadProgress","upload","loaded","total","lengthComputable","ceil","formData","skipEncodingOverride","encoding","iframeTarget","aborted","iframeSrc","XMLDocument","content-type","Number","textarea","execCommand","forceSync","veto","beforeSerialize","formToArray","semantic","beforeSubmit","resetForm","clearForm","includeHidden","replaceTarget","iframe","closeKeepAlive","ajaxForm","delegation","ajaxFormUnbind","elements","navigator","userAgent","fieldValue","required","formSerialize","fieldSerialize","tagName","clearFields","clearInputs","enable","validate","warn","validator","settings","onsubmit","validateDelegate","submitHandler","submitButton","cancelSubmit","currentForm","pendingRequest","formSubmitted","focusInvalid","valid","element","removeAttrs","rules","staticRules","normalizeRule","messages","normalizeRules","classRules","attributeRules","dataRules","remote","blank","filled","unchecked","defaults","format","groups","errorClass","validClass","errorElement","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","focusCleanup","blockFocusCleanup","unhighlight","addWrapper","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","elementValue","lastElement","onclick","highlight","findByName","setDefaults","email","date","dateISO","number","digits","creditcard","equalTo","minlength","rangelength","range","min","autoCreateRanges","labelContainer","errorContext","containers","valueCache","pending","invalid","invalidHandler","checkForm","errorMap","showErrors","prepareForm","currentElements","check","clean","validationTargetFor","prepareElement","numberOfInvalids","toHide","errorList","message","successList","defaultShowErrors","hideErrors","objectLength","findLastActive","errors","toShow","parameters","methods","formatAndAdd","customDataMessage","customMessage","findDefined","defaultMessage","title","wrapper","showLabel","validElements","invalidElements","idOrName","errorPlacement","getLength","depend","dependTypes","boolean","string","function","startRequest","stopRequest","previousValue","classRuleSettings","addClassRules","depends","addMethod","originalMessage","mode","port","grouping_class","isValid","$fields","dateArray","testDate","getDate","getMonth","getFullYear","phone_number","$fieldsFirst","numberFilled","disableInputs","enableInputs","hideAllMessages","hideErrorMessage","hideSuccessMessage","focusOnEmailInput","shakeForm","formShaking","showErrorMessage","errorMessageShown","showSuccessMessage","successMessageShown","mc","openPopup","delayPopup","closePopup","expires_date","cookie","toGMTString","evalPopup","cks","parts","showPopup","getAjaxSubmitUrl","getGroups","inputs","mergeName","fieldNames","isMultiPartField","isTooEarly","fields","mce_success_cb","resp","msg","ga","undefined","fieldName","fnames","mce_validator","onblur","EMAIL","ajaxOptions","mc_birthday","mc_date","mc_phone","keydown","keycode","ftypes"],"mappings":"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","file":"mc-validate.js","sourcesContent":["\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function e(t, n, r) {\n\tfunction s(o, u) {\n\t\tif (!n[o]) {\n\t\t\tif (!t[o]) {\n\t\t\t\tvar a = typeof require == \"function\" && require;if (!u && a) return a(o, !0);if (i) return i(o, !0);var f = new Error(\"Cannot find module '\" + o + \"'\");throw f.code = \"MODULE_NOT_FOUND\", f;\n\t\t\t}var l = n[o] = { exports: {} };t[o][0].call(l.exports, function (e) {\n\t\t\t\tvar n = t[o][1][e];return s(n ? n : e);\n\t\t\t}, l, l.exports, e, t, n, r);\n\t\t}return n[o].exports;\n\t}var i = typeof require == \"function\" && require;for (var o = 0; o < r.length; o++) {\n\t\ts(r[o]);\n\t}return s;\n})({ 1: [function (require, module, exports) {\n\t\t/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function (e, t) {\n\t\t\t\"use strict\";\n\t\t\tfunction n(e) {\n\t\t\t\tvar t = e.length,\n\t\t\t\t n = st.type(e);return st.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : \"array\" === n || \"function\" !== n && (0 === t || \"number\" == typeof t && t > 0 && t - 1 in e);\n\t\t\t}function r(e) {\n\t\t\t\tvar t = Tt[e] = {};return st.each(e.match(lt) || [], function (e, n) {\n\t\t\t\t\tt[n] = !0;\n\t\t\t\t}), t;\n\t\t\t}function i(e, n, r, i) {\n\t\t\t\tif (st.acceptData(e)) {\n\t\t\t\t\tvar o,\n\t\t\t\t\t a,\n\t\t\t\t\t s = st.expando,\n\t\t\t\t\t u = \"string\" == typeof n,\n\t\t\t\t\t l = e.nodeType,\n\t\t\t\t\t c = l ? st.cache : e,\n\t\t\t\t\t f = l ? e[s] : e[s] && s;if (f && c[f] && (i || c[f].data) || !u || r !== t) return f || (l ? e[s] = f = K.pop() || st.guid++ : f = s), c[f] || (c[f] = {}, l || (c[f].toJSON = st.noop)), (\"object\" == (typeof n === \"undefined\" ? \"undefined\" : _typeof(n)) || \"function\" == typeof n) && (i ? c[f] = st.extend(c[f], n) : c[f].data = st.extend(c[f].data, n)), o = c[f], i || (o.data || (o.data = {}), o = o.data), r !== t && (o[st.camelCase(n)] = r), u ? (a = o[n], null == a && (a = o[st.camelCase(n)])) : a = o, a;\n\t\t\t\t}\n\t\t\t}function o(e, t, n) {\n\t\t\t\tif (st.acceptData(e)) {\n\t\t\t\t\tvar r,\n\t\t\t\t\t i,\n\t\t\t\t\t o,\n\t\t\t\t\t a = e.nodeType,\n\t\t\t\t\t u = a ? st.cache : e,\n\t\t\t\t\t l = a ? e[st.expando] : st.expando;if (u[l]) {\n\t\t\t\t\t\tif (t && (r = n ? u[l] : u[l].data)) {\n\t\t\t\t\t\t\tst.isArray(t) ? t = t.concat(st.map(t, st.camelCase)) : t in r ? t = [t] : (t = st.camelCase(t), t = t in r ? [t] : t.split(\" \"));for (i = 0, o = t.length; o > i; i++) {\n\t\t\t\t\t\t\t\tdelete r[t[i]];\n\t\t\t\t\t\t\t}if (!(n ? s : st.isEmptyObject)(r)) return;\n\t\t\t\t\t\t}(n || (delete u[l].data, s(u[l]))) && (a ? st.cleanData([e], !0) : st.support.deleteExpando || u != u.window ? delete u[l] : u[l] = null);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}function a(e, n, r) {\n\t\t\t\tif (r === t && 1 === e.nodeType) {\n\t\t\t\t\tvar i = \"data-\" + n.replace(Nt, \"-$1\").toLowerCase();if (r = e.getAttribute(i), \"string\" == typeof r) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tr = \"true\" === r ? !0 : \"false\" === r ? !1 : \"null\" === r ? null : +r + \"\" === r ? +r : wt.test(r) ? st.parseJSON(r) : r;\n\t\t\t\t\t\t} catch (o) {}st.data(e, n, r);\n\t\t\t\t\t} else r = t;\n\t\t\t\t}return r;\n\t\t\t}function s(e) {\n\t\t\t\tvar t;for (t in e) {\n\t\t\t\t\tif ((\"data\" !== t || !st.isEmptyObject(e[t])) && \"toJSON\" !== t) return !1;\n\t\t\t\t}return !0;\n\t\t\t}function u() {\n\t\t\t\treturn !0;\n\t\t\t}function l() {\n\t\t\t\treturn !1;\n\t\t\t}function c(e, t) {\n\t\t\t\tdo {\n\t\t\t\t\te = e[t];\n\t\t\t\t} while (e && 1 !== e.nodeType);return e;\n\t\t\t}function f(e, t, n) {\n\t\t\t\tif (t = t || 0, st.isFunction(t)) return st.grep(e, function (e, r) {\n\t\t\t\t\tvar i = !!t.call(e, r, e);return i === n;\n\t\t\t\t});if (t.nodeType) return st.grep(e, function (e) {\n\t\t\t\t\treturn e === t === n;\n\t\t\t\t});if (\"string\" == typeof t) {\n\t\t\t\t\tvar r = st.grep(e, function (e) {\n\t\t\t\t\t\treturn 1 === e.nodeType;\n\t\t\t\t\t});if (Wt.test(t)) return st.filter(t, r, !n);t = st.filter(t, r);\n\t\t\t\t}return st.grep(e, function (e) {\n\t\t\t\t\treturn st.inArray(e, t) >= 0 === n;\n\t\t\t\t});\n\t\t\t}function p(e) {\n\t\t\t\tvar t = zt.split(\"|\"),\n\t\t\t\t n = e.createDocumentFragment();if (n.createElement) for (; t.length;) {\n\t\t\t\t\tn.createElement(t.pop());\n\t\t\t\t}return n;\n\t\t\t}function d(e, t) {\n\t\t\t\treturn e.getElementsByTagName(t)[0] || e.appendChild(e.ownerDocument.createElement(t));\n\t\t\t}function h(e) {\n\t\t\t\tvar t = e.getAttributeNode(\"type\");return e.type = (t && t.specified) + \"/\" + e.type, e;\n\t\t\t}function g(e) {\n\t\t\t\tvar t = nn.exec(e.type);return t ? e.type = t[1] : e.removeAttribute(\"type\"), e;\n\t\t\t}function m(e, t) {\n\t\t\t\tfor (var n, r = 0; null != (n = e[r]); r++) {\n\t\t\t\t\tst._data(n, \"globalEval\", !t || st._data(t[r], \"globalEval\"));\n\t\t\t\t}\n\t\t\t}function y(e, t) {\n\t\t\t\tif (1 === t.nodeType && st.hasData(e)) {\n\t\t\t\t\tvar n,\n\t\t\t\t\t r,\n\t\t\t\t\t i,\n\t\t\t\t\t o = st._data(e),\n\t\t\t\t\t a = st._data(t, o),\n\t\t\t\t\t s = o.events;if (s) {\n\t\t\t\t\t\tdelete a.handle, a.events = {};for (n in s) {\n\t\t\t\t\t\t\tfor (r = 0, i = s[n].length; i > r; r++) {\n\t\t\t\t\t\t\t\tst.event.add(t, n, s[n][r]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}a.data && (a.data = st.extend({}, a.data));\n\t\t\t\t}\n\t\t\t}function v(e, t) {\n\t\t\t\tvar n, r, i;if (1 === t.nodeType) {\n\t\t\t\t\tif (n = t.nodeName.toLowerCase(), !st.support.noCloneEvent && t[st.expando]) {\n\t\t\t\t\t\tr = st._data(t);for (i in r.events) {\n\t\t\t\t\t\t\tst.removeEvent(t, i, r.handle);\n\t\t\t\t\t\t}t.removeAttribute(st.expando);\n\t\t\t\t\t}\"script\" === n && t.text !== e.text ? (h(t).text = e.text, g(t)) : \"object\" === n ? (t.parentNode && (t.outerHTML = e.outerHTML), st.support.html5Clone && e.innerHTML && !st.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : \"input\" === n && Zt.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : \"option\" === n ? t.defaultSelected = t.selected = e.defaultSelected : (\"input\" === n || \"textarea\" === n) && (t.defaultValue = e.defaultValue);\n\t\t\t\t}\n\t\t\t}function b(e, n) {\n\t\t\t\tvar r,\n\t\t\t\t i,\n\t\t\t\t o = 0,\n\t\t\t\t a = e.getElementsByTagName !== t ? e.getElementsByTagName(n || \"*\") : e.querySelectorAll !== t ? e.querySelectorAll(n || \"*\") : t;if (!a) for (a = [], r = e.childNodes || e; null != (i = r[o]); o++) {\n\t\t\t\t\t!n || st.nodeName(i, n) ? a.push(i) : st.merge(a, b(i, n));\n\t\t\t\t}return n === t || n && st.nodeName(e, n) ? st.merge([e], a) : a;\n\t\t\t}function x(e) {\n\t\t\t\tZt.test(e.type) && (e.defaultChecked = e.checked);\n\t\t\t}function T(e, t) {\n\t\t\t\tif (t in e) return t;for (var n = t.charAt(0).toUpperCase() + t.slice(1), r = t, i = Nn.length; i--;) {\n\t\t\t\t\tif (t = Nn[i] + n, t in e) return t;\n\t\t\t\t}return r;\n\t\t\t}function w(e, t) {\n\t\t\t\treturn e = t || e, \"none\" === st.css(e, \"display\") || !st.contains(e.ownerDocument, e);\n\t\t\t}function N(e, t) {\n\t\t\t\tfor (var n, r = [], i = 0, o = e.length; o > i; i++) {\n\t\t\t\t\tn = e[i], n.style && (r[i] = st._data(n, \"olddisplay\"), t ? (r[i] || \"none\" !== n.style.display || (n.style.display = \"\"), \"\" === n.style.display && w(n) && (r[i] = st._data(n, \"olddisplay\", S(n.nodeName)))) : r[i] || w(n) || st._data(n, \"olddisplay\", st.css(n, \"display\")));\n\t\t\t\t}for (i = 0; o > i; i++) {\n\t\t\t\t\tn = e[i], n.style && (t && \"none\" !== n.style.display && \"\" !== n.style.display || (n.style.display = t ? r[i] || \"\" : \"none\"));\n\t\t\t\t}return e;\n\t\t\t}function C(e, t, n) {\n\t\t\t\tvar r = mn.exec(t);return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || \"px\") : t;\n\t\t\t}function k(e, t, n, r, i) {\n\t\t\t\tfor (var o = n === (r ? \"border\" : \"content\") ? 4 : \"width\" === t ? 1 : 0, a = 0; 4 > o; o += 2) {\n\t\t\t\t\t\"margin\" === n && (a += st.css(e, n + wn[o], !0, i)), r ? (\"content\" === n && (a -= st.css(e, \"padding\" + wn[o], !0, i)), \"margin\" !== n && (a -= st.css(e, \"border\" + wn[o] + \"Width\", !0, i))) : (a += st.css(e, \"padding\" + wn[o], !0, i), \"padding\" !== n && (a += st.css(e, \"border\" + wn[o] + \"Width\", !0, i)));\n\t\t\t\t}return a;\n\t\t\t}function E(e, t, n) {\n\t\t\t\tvar r = !0,\n\t\t\t\t i = \"width\" === t ? e.offsetWidth : e.offsetHeight,\n\t\t\t\t o = ln(e),\n\t\t\t\t a = st.support.boxSizing && \"border-box\" === st.css(e, \"boxSizing\", !1, o);if (0 >= i || null == i) {\n\t\t\t\t\tif (i = un(e, t, o), (0 > i || null == i) && (i = e.style[t]), yn.test(i)) return i;r = a && (st.support.boxSizingReliable || i === e.style[t]), i = parseFloat(i) || 0;\n\t\t\t\t}return i + k(e, t, n || (a ? \"border\" : \"content\"), r, o) + \"px\";\n\t\t\t}function S(e) {\n\t\t\t\tvar t = V,\n\t\t\t\t n = bn[e];return n || (n = A(e, t), \"none\" !== n && n || (cn = (cn || st(\"\").css(\"cssText\", \"display:block !important\")).appendTo(t.documentElement), t = (cn[0].contentWindow || cn[0].contentDocument).document, t.write(\"\"), t.close(), n = A(e, t), cn.detach()), bn[e] = n), n;\n\t\t\t}function A(e, t) {\n\t\t\t\tvar n = st(t.createElement(e)).appendTo(t.body),\n\t\t\t\t r = st.css(n[0], \"display\");return n.remove(), r;\n\t\t\t}function j(e, t, n, r) {\n\t\t\t\tvar i;if (st.isArray(t)) st.each(t, function (t, i) {\n\t\t\t\t\tn || kn.test(e) ? r(e, i) : j(e + \"[\" + (\"object\" == (typeof i === \"undefined\" ? \"undefined\" : _typeof(i)) ? t : \"\") + \"]\", i, n, r);\n\t\t\t\t});else if (n || \"object\" !== st.type(t)) r(e, t);else for (i in t) {\n\t\t\t\t\tj(e + \"[\" + i + \"]\", t[i], n, r);\n\t\t\t\t}\n\t\t\t}function D(e) {\n\t\t\t\treturn function (t, n) {\n\t\t\t\t\t\"string\" != typeof t && (n = t, t = \"*\");var r,\n\t\t\t\t\t i = 0,\n\t\t\t\t\t o = t.toLowerCase().match(lt) || [];if (st.isFunction(n)) for (; r = o[i++];) {\n\t\t\t\t\t\t\"+\" === r[0] ? (r = r.slice(1) || \"*\", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}function L(e, n, r, i) {\n\t\t\t\tfunction o(u) {\n\t\t\t\t\tvar l;return a[u] = !0, st.each(e[u] || [], function (e, u) {\n\t\t\t\t\t\tvar c = u(n, r, i);return \"string\" != typeof c || s || a[c] ? s ? !(l = c) : t : (n.dataTypes.unshift(c), o(c), !1);\n\t\t\t\t\t}), l;\n\t\t\t\t}var a = {},\n\t\t\t\t s = e === $n;return o(n.dataTypes[0]) || !a[\"*\"] && o(\"*\");\n\t\t\t}function H(e, n) {\n\t\t\t\tvar r,\n\t\t\t\t i,\n\t\t\t\t o = st.ajaxSettings.flatOptions || {};for (r in n) {\n\t\t\t\t\tn[r] !== t && ((o[r] ? e : i || (i = {}))[r] = n[r]);\n\t\t\t\t}return i && st.extend(!0, e, i), e;\n\t\t\t}function M(e, n, r) {\n\t\t\t\tvar i,\n\t\t\t\t o,\n\t\t\t\t a,\n\t\t\t\t s,\n\t\t\t\t u = e.contents,\n\t\t\t\t l = e.dataTypes,\n\t\t\t\t c = e.responseFields;for (o in c) {\n\t\t\t\t\to in r && (n[c[o]] = r[o]);\n\t\t\t\t}for (; \"*\" === l[0];) {\n\t\t\t\t\tl.shift(), i === t && (i = e.mimeType || n.getResponseHeader(\"Content-Type\"));\n\t\t\t\t}if (i) for (o in u) {\n\t\t\t\t\tif (u[o] && u[o].test(i)) {\n\t\t\t\t\t\tl.unshift(o);break;\n\t\t\t\t\t}\n\t\t\t\t}if (l[0] in r) a = l[0];else {\n\t\t\t\t\tfor (o in r) {\n\t\t\t\t\t\tif (!l[0] || e.converters[o + \" \" + l[0]]) {\n\t\t\t\t\t\t\ta = o;break;\n\t\t\t\t\t\t}s || (s = o);\n\t\t\t\t\t}a = a || s;\n\t\t\t\t}return a ? (a !== l[0] && l.unshift(a), r[a]) : t;\n\t\t\t}function q(e, t) {\n\t\t\t\tvar n,\n\t\t\t\t r,\n\t\t\t\t i,\n\t\t\t\t o,\n\t\t\t\t a = {},\n\t\t\t\t s = 0,\n\t\t\t\t u = e.dataTypes.slice(),\n\t\t\t\t l = u[0];if (e.dataFilter && (t = e.dataFilter(t, e.dataType)), u[1]) for (n in e.converters) {\n\t\t\t\t\ta[n.toLowerCase()] = e.converters[n];\n\t\t\t\t}for (; i = u[++s];) {\n\t\t\t\t\tif (\"*\" !== i) {\n\t\t\t\t\t\tif (\"*\" !== l && l !== i) {\n\t\t\t\t\t\t\tif (n = a[l + \" \" + i] || a[\"* \" + i], !n) for (r in a) {\n\t\t\t\t\t\t\t\tif (o = r.split(\" \"), o[1] === i && (n = a[l + \" \" + o[0]] || a[\"* \" + o[0]])) {\n\t\t\t\t\t\t\t\t\tn === !0 ? n = a[r] : a[r] !== !0 && (i = o[0], u.splice(s--, 0, i));break;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}if (n !== !0) if (n && e[\"throws\"]) t = n(t);else try {\n\t\t\t\t\t\t\t\tt = n(t);\n\t\t\t\t\t\t\t} catch (c) {\n\t\t\t\t\t\t\t\treturn { state: \"parsererror\", error: n ? c : \"No conversion from \" + l + \" to \" + i };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}l = i;\n\t\t\t\t\t}\n\t\t\t\t}return { state: \"success\", data: t };\n\t\t\t}function _() {\n\t\t\t\ttry {\n\t\t\t\t\treturn new e.XMLHttpRequest();\n\t\t\t\t} catch (t) {}\n\t\t\t}function F() {\n\t\t\t\ttry {\n\t\t\t\t\treturn new e.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t\t\t\t} catch (t) {}\n\t\t\t}function O() {\n\t\t\t\treturn setTimeout(function () {\n\t\t\t\t\tQn = t;\n\t\t\t\t}), Qn = st.now();\n\t\t\t}function B(e, t) {\n\t\t\t\tst.each(t, function (t, n) {\n\t\t\t\t\tfor (var r = (rr[t] || []).concat(rr[\"*\"]), i = 0, o = r.length; o > i; i++) {\n\t\t\t\t\t\tif (r[i].call(e, t, n)) return;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}function P(e, t, n) {\n\t\t\t\tvar r,\n\t\t\t\t i,\n\t\t\t\t o = 0,\n\t\t\t\t a = nr.length,\n\t\t\t\t s = st.Deferred().always(function () {\n\t\t\t\t\tdelete u.elem;\n\t\t\t\t}),\n\t\t\t\t u = function u() {\n\t\t\t\t\tif (i) return !1;for (var t = Qn || O(), n = Math.max(0, l.startTime + l.duration - t), r = n / l.duration || 0, o = 1 - r, a = 0, u = l.tweens.length; u > a; a++) {\n\t\t\t\t\t\tl.tweens[a].run(o);\n\t\t\t\t\t}return s.notifyWith(e, [l, o, n]), 1 > o && u ? n : (s.resolveWith(e, [l]), !1);\n\t\t\t\t},\n\t\t\t\t l = s.promise({ elem: e, props: st.extend({}, t), opts: st.extend(!0, { specialEasing: {} }, n), originalProperties: t, originalOptions: n, startTime: Qn || O(), duration: n.duration, tweens: [], createTween: function createTween(t, n) {\n\t\t\t\t\t\tvar r = st.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);return l.tweens.push(r), r;\n\t\t\t\t\t}, stop: function stop(t) {\n\t\t\t\t\t\tvar n = 0,\n\t\t\t\t\t\t r = t ? l.tweens.length : 0;if (i) return this;for (i = !0; r > n; n++) {\n\t\t\t\t\t\t\tl.tweens[n].run(1);\n\t\t\t\t\t\t}return t ? s.resolveWith(e, [l, t]) : s.rejectWith(e, [l, t]), this;\n\t\t\t\t\t} }),\n\t\t\t\t c = l.props;for (R(c, l.opts.specialEasing); a > o; o++) {\n\t\t\t\t\tif (r = nr[o].call(l, e, c, l.opts)) return r;\n\t\t\t\t}return B(l, c), st.isFunction(l.opts.start) && l.opts.start.call(e, l), st.fx.timer(st.extend(u, { elem: e, anim: l, queue: l.opts.queue })), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always);\n\t\t\t}function R(e, t) {\n\t\t\t\tvar n, r, i, o, a;for (n in e) {\n\t\t\t\t\tif (r = st.camelCase(n), i = t[r], o = e[n], st.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), a = st.cssHooks[r], a && \"expand\" in a) {\n\t\t\t\t\t\to = a.expand(o), delete e[r];for (n in o) {\n\t\t\t\t\t\t\tn in e || (e[n] = o[n], t[n] = i);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else t[r] = i;\n\t\t\t\t}\n\t\t\t}function W(e, t, n) {\n\t\t\t\tvar r,\n\t\t\t\t i,\n\t\t\t\t o,\n\t\t\t\t a,\n\t\t\t\t s,\n\t\t\t\t u,\n\t\t\t\t l,\n\t\t\t\t c,\n\t\t\t\t f,\n\t\t\t\t p = this,\n\t\t\t\t d = e.style,\n\t\t\t\t h = {},\n\t\t\t\t g = [],\n\t\t\t\t m = e.nodeType && w(e);n.queue || (c = st._queueHooks(e, \"fx\"), null == c.unqueued && (c.unqueued = 0, f = c.empty.fire, c.empty.fire = function () {\n\t\t\t\t\tc.unqueued || f();\n\t\t\t\t}), c.unqueued++, p.always(function () {\n\t\t\t\t\tp.always(function () {\n\t\t\t\t\t\tc.unqueued--, st.queue(e, \"fx\").length || c.empty.fire();\n\t\t\t\t\t});\n\t\t\t\t})), 1 === e.nodeType && (\"height\" in t || \"width\" in t) && (n.overflow = [d.overflow, d.overflowX, d.overflowY], \"inline\" === st.css(e, \"display\") && \"none\" === st.css(e, \"float\") && (st.support.inlineBlockNeedsLayout && \"inline\" !== S(e.nodeName) ? d.zoom = 1 : d.display = \"inline-block\")), n.overflow && (d.overflow = \"hidden\", st.support.shrinkWrapBlocks || p.done(function () {\n\t\t\t\t\td.overflow = n.overflow[0], d.overflowX = n.overflow[1], d.overflowY = n.overflow[2];\n\t\t\t\t}));for (r in t) {\n\t\t\t\t\tif (o = t[r], Zn.exec(o)) {\n\t\t\t\t\t\tif (delete t[r], u = u || \"toggle\" === o, o === (m ? \"hide\" : \"show\")) continue;g.push(r);\n\t\t\t\t\t}\n\t\t\t\t}if (a = g.length) {\n\t\t\t\t\ts = st._data(e, \"fxshow\") || st._data(e, \"fxshow\", {}), \"hidden\" in s && (m = s.hidden), u && (s.hidden = !m), m ? st(e).show() : p.done(function () {\n\t\t\t\t\t\tst(e).hide();\n\t\t\t\t\t}), p.done(function () {\n\t\t\t\t\t\tvar t;st._removeData(e, \"fxshow\");for (t in h) {\n\t\t\t\t\t\t\tst.style(e, t, h[t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t});for (r = 0; a > r; r++) {\n\t\t\t\t\t\ti = g[r], l = p.createTween(i, m ? s[i] : 0), h[i] = s[i] || st.style(e, i), i in s || (s[i] = l.start, m && (l.end = l.start, l.start = \"width\" === i || \"height\" === i ? 1 : 0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}function $(e, t, n, r, i) {\n\t\t\t\treturn new $.prototype.init(e, t, n, r, i);\n\t\t\t}function I(e, t) {\n\t\t\t\tvar n,\n\t\t\t\t r = { height: e },\n\t\t\t\t i = 0;for (t = t ? 1 : 0; 4 > i; i += 2 - t) {\n\t\t\t\t\tn = wn[i], r[\"margin\" + n] = r[\"padding\" + n] = e;\n\t\t\t\t}return t && (r.opacity = r.width = e), r;\n\t\t\t}function z(e) {\n\t\t\t\treturn st.isWindow(e) ? e : 9 === e.nodeType ? e.defaultView || e.parentWindow : !1;\n\t\t\t}var X,\n\t\t\t U,\n\t\t\t V = e.document,\n\t\t\t Y = e.location,\n\t\t\t J = e.jQuery,\n\t\t\t G = e.$,\n\t\t\t Q = {},\n\t\t\t K = [],\n\t\t\t Z = \"1.9.0\",\n\t\t\t et = K.concat,\n\t\t\t tt = K.push,\n\t\t\t nt = K.slice,\n\t\t\t rt = K.indexOf,\n\t\t\t it = Q.toString,\n\t\t\t ot = Q.hasOwnProperty,\n\t\t\t at = Z.trim,\n\t\t\t st = function st(e, t) {\n\t\t\t\treturn new st.fn.init(e, t, X);\n\t\t\t},\n\t\t\t ut = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,\n\t\t\t lt = /\\S+/g,\n\t\t\t ct = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\t\t\t ft = /^(?:(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\t\t\t pt = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\t\t\t dt = /^[\\],:{}\\s]*$/,\n\t\t\t ht = /(?:^|:|,)(?:\\s*\\[)+/g,\n\t\t\t gt = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\t\t\t mt = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d+\\.|)\\d+(?:[eE][+-]?\\d+|)/g,\n\t\t\t yt = /^-ms-/,\n\t\t\t vt = /-([\\da-z])/gi,\n\t\t\t bt = function bt(e, t) {\n\t\t\t\treturn t.toUpperCase();\n\t\t\t},\n\t\t\t xt = function xt() {\n\t\t\t\tV.addEventListener ? (V.removeEventListener(\"DOMContentLoaded\", xt, !1), st.ready()) : \"complete\" === V.readyState && (V.detachEvent(\"onreadystatechange\", xt), st.ready());\n\t\t\t};st.fn = st.prototype = { jquery: Z, constructor: st, init: function init(e, n, r) {\n\t\t\t\t\tvar i, o;if (!e) return this;if (\"string\" == typeof e) {\n\t\t\t\t\t\tif (i = \"<\" === e.charAt(0) && \">\" === e.charAt(e.length - 1) && e.length >= 3 ? [null, e, null] : ft.exec(e), !i || !i[1] && n) return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e);if (i[1]) {\n\t\t\t\t\t\t\tif (n = n instanceof st ? n[0] : n, st.merge(this, st.parseHTML(i[1], n && n.nodeType ? n.ownerDocument || n : V, !0)), pt.test(i[1]) && st.isPlainObject(n)) for (i in n) {\n\t\t\t\t\t\t\t\tst.isFunction(this[i]) ? this[i](n[i]) : this.attr(i, n[i]);\n\t\t\t\t\t\t\t}return this;\n\t\t\t\t\t\t}if (o = V.getElementById(i[2]), o && o.parentNode) {\n\t\t\t\t\t\t\tif (o.id !== i[2]) return r.find(e);this.length = 1, this[0] = o;\n\t\t\t\t\t\t}return this.context = V, this.selector = e, this;\n\t\t\t\t\t}return e.nodeType ? (this.context = this[0] = e, this.length = 1, this) : st.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), st.makeArray(e, this));\n\t\t\t\t}, selector: \"\", length: 0, size: function size() {\n\t\t\t\t\treturn this.length;\n\t\t\t\t}, toArray: function toArray() {\n\t\t\t\t\treturn nt.call(this);\n\t\t\t\t}, get: function get(e) {\n\t\t\t\t\treturn null == e ? this.toArray() : 0 > e ? this[this.length + e] : this[e];\n\t\t\t\t}, pushStack: function pushStack(e) {\n\t\t\t\t\tvar t = st.merge(this.constructor(), e);return t.prevObject = this, t.context = this.context, t;\n\t\t\t\t}, each: function each(e, t) {\n\t\t\t\t\treturn st.each(this, e, t);\n\t\t\t\t}, ready: function ready(e) {\n\t\t\t\t\treturn st.ready.promise().done(e), this;\n\t\t\t\t}, slice: function slice() {\n\t\t\t\t\treturn this.pushStack(nt.apply(this, arguments));\n\t\t\t\t}, first: function first() {\n\t\t\t\t\treturn this.eq(0);\n\t\t\t\t}, last: function last() {\n\t\t\t\t\treturn this.eq(-1);\n\t\t\t\t}, eq: function eq(e) {\n\t\t\t\t\tvar t = this.length,\n\t\t\t\t\t n = +e + (0 > e ? t : 0);return this.pushStack(n >= 0 && t > n ? [this[n]] : []);\n\t\t\t\t}, map: function map(e) {\n\t\t\t\t\treturn this.pushStack(st.map(this, function (t, n) {\n\t\t\t\t\t\treturn e.call(t, n, t);\n\t\t\t\t\t}));\n\t\t\t\t}, end: function end() {\n\t\t\t\t\treturn this.prevObject || this.constructor(null);\n\t\t\t\t}, push: tt, sort: [].sort, splice: [].splice }, st.fn.init.prototype = st.fn, st.extend = st.fn.extend = function () {\n\t\t\t\tvar e,\n\t\t\t\t n,\n\t\t\t\t r,\n\t\t\t\t i,\n\t\t\t\t o,\n\t\t\t\t a,\n\t\t\t\t s = arguments[0] || {},\n\t\t\t\t u = 1,\n\t\t\t\t l = arguments.length,\n\t\t\t\t c = !1;for (\"boolean\" == typeof s && (c = s, s = arguments[1] || {}, u = 2), \"object\" == (typeof s === \"undefined\" ? \"undefined\" : _typeof(s)) || st.isFunction(s) || (s = {}), l === u && (s = this, --u); l > u; u++) {\n\t\t\t\t\tif (null != (e = arguments[u])) for (n in e) {\n\t\t\t\t\t\tr = s[n], i = e[n], s !== i && (c && i && (st.isPlainObject(i) || (o = st.isArray(i))) ? (o ? (o = !1, a = r && st.isArray(r) ? r : []) : a = r && st.isPlainObject(r) ? r : {}, s[n] = st.extend(c, a, i)) : i !== t && (s[n] = i));\n\t\t\t\t\t}\n\t\t\t\t}return s;\n\t\t\t}, st.extend({ noConflict: function noConflict(t) {\n\t\t\t\t\treturn e.$ === st && (e.$ = G), t && e.jQuery === st && (e.jQuery = J), st;\n\t\t\t\t}, isReady: !1, readyWait: 1, holdReady: function holdReady(e) {\n\t\t\t\t\te ? st.readyWait++ : st.ready(!0);\n\t\t\t\t}, ready: function ready(e) {\n\t\t\t\t\tif (e === !0 ? ! --st.readyWait : !st.isReady) {\n\t\t\t\t\t\tif (!V.body) return setTimeout(st.ready);st.isReady = !0, e !== !0 && --st.readyWait > 0 || (U.resolveWith(V, [st]), st.fn.trigger && st(V).trigger(\"ready\").off(\"ready\"));\n\t\t\t\t\t}\n\t\t\t\t}, isFunction: function isFunction(e) {\n\t\t\t\t\treturn \"function\" === st.type(e);\n\t\t\t\t}, isArray: Array.isArray || function (e) {\n\t\t\t\t\treturn \"array\" === st.type(e);\n\t\t\t\t}, isWindow: function isWindow(e) {\n\t\t\t\t\treturn null != e && e == e.window;\n\t\t\t\t}, isNumeric: function isNumeric(e) {\n\t\t\t\t\treturn !isNaN(parseFloat(e)) && isFinite(e);\n\t\t\t\t}, type: function type(e) {\n\t\t\t\t\treturn null == e ? e + \"\" : \"object\" == (typeof e === \"undefined\" ? \"undefined\" : _typeof(e)) || \"function\" == typeof e ? Q[it.call(e)] || \"object\" : typeof e === \"undefined\" ? \"undefined\" : _typeof(e);\n\t\t\t\t}, isPlainObject: function isPlainObject(e) {\n\t\t\t\t\tif (!e || \"object\" !== st.type(e) || e.nodeType || st.isWindow(e)) return !1;try {\n\t\t\t\t\t\tif (e.constructor && !ot.call(e, \"constructor\") && !ot.call(e.constructor.prototype, \"isPrototypeOf\")) return !1;\n\t\t\t\t\t} catch (n) {\n\t\t\t\t\t\treturn !1;\n\t\t\t\t\t}var r;for (r in e) {}return r === t || ot.call(e, r);\n\t\t\t\t}, isEmptyObject: function isEmptyObject(e) {\n\t\t\t\t\tvar t;for (t in e) {\n\t\t\t\t\t\treturn !1;\n\t\t\t\t\t}return !0;\n\t\t\t\t}, error: function error(e) {\n\t\t\t\t\tthrow Error(e);\n\t\t\t\t}, parseHTML: function parseHTML(e, t, n) {\n\t\t\t\t\tif (!e || \"string\" != typeof e) return null;\"boolean\" == typeof t && (n = t, t = !1), t = t || V;var r = pt.exec(e),\n\t\t\t\t\t i = !n && [];return r ? [t.createElement(r[1])] : (r = st.buildFragment([e], t, i), i && st(i).remove(), st.merge([], r.childNodes));\n\t\t\t\t}, parseJSON: function parseJSON(n) {\n\t\t\t\t\treturn e.JSON && e.JSON.parse ? e.JSON.parse(n) : null === n ? n : \"string\" == typeof n && (n = st.trim(n), n && dt.test(n.replace(gt, \"@\").replace(mt, \"]\").replace(ht, \"\"))) ? Function(\"return \" + n)() : (st.error(\"Invalid JSON: \" + n), t);\n\t\t\t\t}, parseXML: function parseXML(n) {\n\t\t\t\t\tvar r, i;if (!n || \"string\" != typeof n) return null;try {\n\t\t\t\t\t\te.DOMParser ? (i = new DOMParser(), r = i.parseFromString(n, \"text/xml\")) : (r = new ActiveXObject(\"Microsoft.XMLDOM\"), r.async = \"false\", r.loadXML(n));\n\t\t\t\t\t} catch (o) {\n\t\t\t\t\t\tr = t;\n\t\t\t\t\t}return r && r.documentElement && !r.getElementsByTagName(\"parsererror\").length || st.error(\"Invalid XML: \" + n), r;\n\t\t\t\t}, noop: function noop() {}, globalEval: function globalEval(t) {\n\t\t\t\t\tt && st.trim(t) && (e.execScript || function (t) {\n\t\t\t\t\t\te.eval.call(e, t);\n\t\t\t\t\t})(t);\n\t\t\t\t}, camelCase: function camelCase(e) {\n\t\t\t\t\treturn e.replace(yt, \"ms-\").replace(vt, bt);\n\t\t\t\t}, nodeName: function nodeName(e, t) {\n\t\t\t\t\treturn e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase();\n\t\t\t\t}, each: function each(e, t, r) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t o = 0,\n\t\t\t\t\t a = e.length,\n\t\t\t\t\t s = n(e);if (r) {\n\t\t\t\t\t\tif (s) for (; a > o && (i = t.apply(e[o], r), i !== !1); o++) {} else for (o in e) {\n\t\t\t\t\t\t\tif (i = t.apply(e[o], r), i === !1) break;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (s) for (; a > o && (i = t.call(e[o], o, e[o]), i !== !1); o++) {} else for (o in e) {\n\t\t\t\t\t\tif (i = t.call(e[o], o, e[o]), i === !1) break;\n\t\t\t\t\t}return e;\n\t\t\t\t}, trim: at && !at.call(\"\\uFEFF\\xA0\") ? function (e) {\n\t\t\t\t\treturn null == e ? \"\" : at.call(e);\n\t\t\t\t} : function (e) {\n\t\t\t\t\treturn null == e ? \"\" : (e + \"\").replace(ct, \"\");\n\t\t\t\t}, makeArray: function makeArray(e, t) {\n\t\t\t\t\tvar r = t || [];return null != e && (n(Object(e)) ? st.merge(r, \"string\" == typeof e ? [e] : e) : tt.call(r, e)), r;\n\t\t\t\t}, inArray: function inArray(e, t, n) {\n\t\t\t\t\tvar r;if (t) {\n\t\t\t\t\t\tif (rt) return rt.call(t, e, n);for (r = t.length, n = n ? 0 > n ? Math.max(0, r + n) : n : 0; r > n; n++) {\n\t\t\t\t\t\t\tif (n in t && t[n] === e) return n;\n\t\t\t\t\t\t}\n\t\t\t\t\t}return -1;\n\t\t\t\t}, merge: function merge(e, n) {\n\t\t\t\t\tvar r = n.length,\n\t\t\t\t\t i = e.length,\n\t\t\t\t\t o = 0;if (\"number\" == typeof r) for (; r > o; o++) {\n\t\t\t\t\t\te[i++] = n[o];\n\t\t\t\t\t} else for (; n[o] !== t;) {\n\t\t\t\t\t\te[i++] = n[o++];\n\t\t\t\t\t}return e.length = i, e;\n\t\t\t\t}, grep: function grep(e, t, n) {\n\t\t\t\t\tvar r,\n\t\t\t\t\t i = [],\n\t\t\t\t\t o = 0,\n\t\t\t\t\t a = e.length;for (n = !!n; a > o; o++) {\n\t\t\t\t\t\tr = !!t(e[o], o), n !== r && i.push(e[o]);\n\t\t\t\t\t}return i;\n\t\t\t\t}, map: function map(e, t, r) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t o = 0,\n\t\t\t\t\t a = e.length,\n\t\t\t\t\t s = n(e),\n\t\t\t\t\t u = [];if (s) for (; a > o; o++) {\n\t\t\t\t\t\ti = t(e[o], o, r), null != i && (u[u.length] = i);\n\t\t\t\t\t} else for (o in e) {\n\t\t\t\t\t\ti = t(e[o], o, r), null != i && (u[u.length] = i);\n\t\t\t\t\t}return et.apply([], u);\n\t\t\t\t}, guid: 1, proxy: function proxy(e, n) {\n\t\t\t\t\tvar r, i, o;return \"string\" == typeof n && (r = e[n], n = e, e = r), st.isFunction(e) ? (i = nt.call(arguments, 2), o = function o() {\n\t\t\t\t\t\treturn e.apply(n || this, i.concat(nt.call(arguments)));\n\t\t\t\t\t}, o.guid = e.guid = e.guid || st.guid++, o) : t;\n\t\t\t\t}, access: function access(e, n, r, i, o, a, s) {\n\t\t\t\t\tvar u = 0,\n\t\t\t\t\t l = e.length,\n\t\t\t\t\t c = null == r;if (\"object\" === st.type(r)) {\n\t\t\t\t\t\to = !0;for (u in r) {\n\t\t\t\t\t\t\tst.access(e, n, u, r[u], !0, a, s);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (i !== t && (o = !0, st.isFunction(i) || (s = !0), c && (s ? (n.call(e, i), n = null) : (c = n, n = function n(e, t, _n2) {\n\t\t\t\t\t\treturn c.call(st(e), _n2);\n\t\t\t\t\t})), n)) for (; l > u; u++) {\n\t\t\t\t\t\tn(e[u], r, s ? i : i.call(e[u], u, n(e[u], r)));\n\t\t\t\t\t}return o ? e : c ? n.call(e) : l ? n(e[0], r) : a;\n\t\t\t\t}, now: function now() {\n\t\t\t\t\treturn new Date().getTime();\n\t\t\t\t} }), st.ready.promise = function (t) {\n\t\t\t\tif (!U) if (U = st.Deferred(), \"complete\" === V.readyState) setTimeout(st.ready);else if (V.addEventListener) V.addEventListener(\"DOMContentLoaded\", xt, !1), e.addEventListener(\"load\", st.ready, !1);else {\n\t\t\t\t\tV.attachEvent(\"onreadystatechange\", xt), e.attachEvent(\"onload\", st.ready);var n = !1;try {\n\t\t\t\t\t\tn = null == e.frameElement && V.documentElement;\n\t\t\t\t\t} catch (r) {}n && n.doScroll && function i() {\n\t\t\t\t\t\tif (!st.isReady) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tn.doScroll(\"left\");\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn setTimeout(i, 50);\n\t\t\t\t\t\t\t}st.ready();\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t}return U.promise(t);\n\t\t\t}, st.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function (e, t) {\n\t\t\t\tQ[\"[object \" + t + \"]\"] = t.toLowerCase();\n\t\t\t}), X = st(V);var Tt = {};st.Callbacks = function (e) {\n\t\t\t\te = \"string\" == typeof e ? Tt[e] || r(e) : st.extend({}, e);var n,\n\t\t\t\t i,\n\t\t\t\t o,\n\t\t\t\t a,\n\t\t\t\t s,\n\t\t\t\t u,\n\t\t\t\t l = [],\n\t\t\t\t c = !e.once && [],\n\t\t\t\t f = function f(t) {\n\t\t\t\t\tfor (n = e.memory && t, i = !0, u = a || 0, a = 0, s = l.length, o = !0; l && s > u; u++) {\n\t\t\t\t\t\tif (l[u].apply(t[0], t[1]) === !1 && e.stopOnFalse) {\n\t\t\t\t\t\t\tn = !1;break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}o = !1, l && (c ? c.length && f(c.shift()) : n ? l = [] : p.disable());\n\t\t\t\t},\n\t\t\t\t p = { add: function add() {\n\t\t\t\t\t\tif (l) {\n\t\t\t\t\t\t\tvar t = l.length;(function r(t) {\n\t\t\t\t\t\t\t\tst.each(t, function (t, n) {\n\t\t\t\t\t\t\t\t\tvar i = st.type(n);\"function\" === i ? e.unique && p.has(n) || l.push(n) : n && n.length && \"string\" !== i && r(n);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})(arguments), o ? s = l.length : n && (a = t, f(n));\n\t\t\t\t\t\t}return this;\n\t\t\t\t\t}, remove: function remove() {\n\t\t\t\t\t\treturn l && st.each(arguments, function (e, t) {\n\t\t\t\t\t\t\tfor (var n; (n = st.inArray(t, l, n)) > -1;) {\n\t\t\t\t\t\t\t\tl.splice(n, 1), o && (s >= n && s--, u >= n && u--);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}), this;\n\t\t\t\t\t}, has: function has(e) {\n\t\t\t\t\t\treturn st.inArray(e, l) > -1;\n\t\t\t\t\t}, empty: function empty() {\n\t\t\t\t\t\treturn l = [], this;\n\t\t\t\t\t}, disable: function disable() {\n\t\t\t\t\t\treturn l = c = n = t, this;\n\t\t\t\t\t}, disabled: function disabled() {\n\t\t\t\t\t\treturn !l;\n\t\t\t\t\t}, lock: function lock() {\n\t\t\t\t\t\treturn c = t, n || p.disable(), this;\n\t\t\t\t\t}, locked: function locked() {\n\t\t\t\t\t\treturn !c;\n\t\t\t\t\t}, fireWith: function fireWith(e, t) {\n\t\t\t\t\t\treturn t = t || [], t = [e, t.slice ? t.slice() : t], !l || i && !c || (o ? c.push(t) : f(t)), this;\n\t\t\t\t\t}, fire: function fire() {\n\t\t\t\t\t\treturn p.fireWith(this, arguments), this;\n\t\t\t\t\t}, fired: function fired() {\n\t\t\t\t\t\treturn !!i;\n\t\t\t\t\t} };return p;\n\t\t\t}, st.extend({ Deferred: function Deferred(e) {\n\t\t\t\t\tvar t = [[\"resolve\", \"done\", st.Callbacks(\"once memory\"), \"resolved\"], [\"reject\", \"fail\", st.Callbacks(\"once memory\"), \"rejected\"], [\"notify\", \"progress\", st.Callbacks(\"memory\")]],\n\t\t\t\t\t n = \"pending\",\n\t\t\t\t\t r = { state: function state() {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}, always: function always() {\n\t\t\t\t\t\t\treturn i.done(arguments).fail(arguments), this;\n\t\t\t\t\t\t}, then: function then() {\n\t\t\t\t\t\t\tvar e = arguments;return st.Deferred(function (n) {\n\t\t\t\t\t\t\t\tst.each(t, function (t, o) {\n\t\t\t\t\t\t\t\t\tvar a = o[0],\n\t\t\t\t\t\t\t\t\t s = st.isFunction(e[t]) && e[t];i[o[1]](function () {\n\t\t\t\t\t\t\t\t\t\tvar e = s && s.apply(this, arguments);e && st.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[a + \"With\"](this === r ? n.promise() : this, s ? [e] : arguments);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}), e = null;\n\t\t\t\t\t\t\t}).promise();\n\t\t\t\t\t\t}, promise: function promise(e) {\n\t\t\t\t\t\t\treturn null != e ? st.extend(e, r) : r;\n\t\t\t\t\t\t} },\n\t\t\t\t\t i = {};return r.pipe = r.then, st.each(t, function (e, o) {\n\t\t\t\t\t\tvar a = o[2],\n\t\t\t\t\t\t s = o[3];r[o[1]] = a.add, s && a.add(function () {\n\t\t\t\t\t\t\tn = s;\n\t\t\t\t\t\t}, t[1 ^ e][2].disable, t[2][2].lock), i[o[0]] = function () {\n\t\t\t\t\t\t\treturn i[o[0] + \"With\"](this === i ? r : this, arguments), this;\n\t\t\t\t\t\t}, i[o[0] + \"With\"] = a.fireWith;\n\t\t\t\t\t}), r.promise(i), e && e.call(i, i), i;\n\t\t\t\t}, when: function when(e) {\n\t\t\t\t\tvar t,\n\t\t\t\t\t n,\n\t\t\t\t\t r,\n\t\t\t\t\t i = 0,\n\t\t\t\t\t o = nt.call(arguments),\n\t\t\t\t\t a = o.length,\n\t\t\t\t\t s = 1 !== a || e && st.isFunction(e.promise) ? a : 0,\n\t\t\t\t\t u = 1 === s ? e : st.Deferred(),\n\t\t\t\t\t l = function l(e, n, r) {\n\t\t\t\t\t\treturn function (i) {\n\t\t\t\t\t\t\tn[e] = this, r[e] = arguments.length > 1 ? nt.call(arguments) : i, r === t ? u.notifyWith(n, r) : --s || u.resolveWith(n, r);\n\t\t\t\t\t\t};\n\t\t\t\t\t};if (a > 1) for (t = Array(a), n = Array(a), r = Array(a); a > i; i++) {\n\t\t\t\t\t\to[i] && st.isFunction(o[i].promise) ? o[i].promise().done(l(i, r, o)).fail(u.reject).progress(l(i, n, t)) : --s;\n\t\t\t\t\t}return s || u.resolveWith(r, o), u.promise();\n\t\t\t\t} }), st.support = function () {\n\t\t\t\tvar n,\n\t\t\t\t r,\n\t\t\t\t i,\n\t\t\t\t o,\n\t\t\t\t a,\n\t\t\t\t s,\n\t\t\t\t u,\n\t\t\t\t l,\n\t\t\t\t c,\n\t\t\t\t f,\n\t\t\t\t p = V.createElement(\"div\");if (p.setAttribute(\"className\", \"t\"), p.innerHTML = \" a\", r = p.getElementsByTagName(\"*\"), i = p.getElementsByTagName(\"a\")[0], !r || !i || !r.length) return {};o = V.createElement(\"select\"), a = o.appendChild(V.createElement(\"option\")), s = p.getElementsByTagName(\"input\")[0], i.style.cssText = \"top:1px;float:left;opacity:.5\", n = { getSetAttribute: \"t\" !== p.className, leadingWhitespace: 3 === p.firstChild.nodeType, tbody: !p.getElementsByTagName(\"tbody\").length, htmlSerialize: !!p.getElementsByTagName(\"link\").length, style: /top/.test(i.getAttribute(\"style\")), hrefNormalized: \"/a\" === i.getAttribute(\"href\"), opacity: /^0.5/.test(i.style.opacity), cssFloat: !!i.style.cssFloat, checkOn: !!s.value, optSelected: a.selected, enctype: !!V.createElement(\"form\").enctype, html5Clone: \"<:nav>\" !== V.createElement(\"nav\").cloneNode(!0).outerHTML, boxModel: \"CSS1Compat\" === V.compatMode, deleteExpando: !0, noCloneEvent: !0, inlineBlockNeedsLayout: !1, shrinkWrapBlocks: !1, reliableMarginRight: !0, boxSizingReliable: !0, pixelPosition: !1 }, s.checked = !0, n.noCloneChecked = s.cloneNode(!0).checked, o.disabled = !0, n.optDisabled = !a.disabled;try {\n\t\t\t\t\tdelete p.test;\n\t\t\t\t} catch (d) {\n\t\t\t\t\tn.deleteExpando = !1;\n\t\t\t\t}s = V.createElement(\"input\"), s.setAttribute(\"value\", \"\"), n.input = \"\" === s.getAttribute(\"value\"), s.value = \"t\", s.setAttribute(\"type\", \"radio\"), n.radioValue = \"t\" === s.value, s.setAttribute(\"checked\", \"t\"), s.setAttribute(\"name\", \"t\"), u = V.createDocumentFragment(), u.appendChild(s), n.appendChecked = s.checked, n.checkClone = u.cloneNode(!0).cloneNode(!0).lastChild.checked, p.attachEvent && (p.attachEvent(\"onclick\", function () {\n\t\t\t\t\tn.noCloneEvent = !1;\n\t\t\t\t}), p.cloneNode(!0).click());for (f in { submit: !0, change: !0, focusin: !0 }) {\n\t\t\t\t\tp.setAttribute(l = \"on\" + f, \"t\"), n[f + \"Bubbles\"] = l in e || p.attributes[l].expando === !1;\n\t\t\t\t}return p.style.backgroundClip = \"content-box\", p.cloneNode(!0).style.backgroundClip = \"\", n.clearCloneStyle = \"content-box\" === p.style.backgroundClip, st(function () {\n\t\t\t\t\tvar r,\n\t\t\t\t\t i,\n\t\t\t\t\t o,\n\t\t\t\t\t a = \"padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;\",\n\t\t\t\t\t s = V.getElementsByTagName(\"body\")[0];s && (r = V.createElement(\"div\"), r.style.cssText = \"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px\", s.appendChild(r).appendChild(p), p.innerHTML = \"\", o = p.getElementsByTagName(\"td\"), o[0].style.cssText = \"padding:0;margin:0;border:0;display:none\", c = 0 === o[0].offsetHeight, o[0].style.display = \"\", o[1].style.display = \"none\", n.reliableHiddenOffsets = c && 0 === o[0].offsetHeight, p.innerHTML = \"\", p.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\", n.boxSizing = 4 === p.offsetWidth, n.doesNotIncludeMarginInBodyOffset = 1 !== s.offsetTop, e.getComputedStyle && (n.pixelPosition = \"1%\" !== (e.getComputedStyle(p, null) || {}).top, n.boxSizingReliable = \"4px\" === (e.getComputedStyle(p, null) || { width: \"4px\" }).width, i = p.appendChild(V.createElement(\"div\")), i.style.cssText = p.style.cssText = a, i.style.marginRight = i.style.width = \"0\", p.style.width = \"1px\", n.reliableMarginRight = !parseFloat((e.getComputedStyle(i, null) || {}).marginRight)), p.style.zoom !== t && (p.innerHTML = \"\", p.style.cssText = a + \"width:1px;padding:1px;display:inline;zoom:1\", n.inlineBlockNeedsLayout = 3 === p.offsetWidth, p.style.display = \"block\", p.innerHTML = \"\", p.firstChild.style.width = \"5px\", n.shrinkWrapBlocks = 3 !== p.offsetWidth, s.style.zoom = 1), s.removeChild(r), r = p = o = i = null);\n\t\t\t\t}), r = o = u = a = i = s = null, n;\n\t\t\t}();var wt = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\t\t\t Nt = /([A-Z])/g;st.extend({ cache: {}, expando: \"jQuery\" + (Z + Math.random()).replace(/\\D/g, \"\"), noData: { embed: !0, object: \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\", applet: !0 }, hasData: function hasData(e) {\n\t\t\t\t\treturn e = e.nodeType ? st.cache[e[st.expando]] : e[st.expando], !!e && !s(e);\n\t\t\t\t}, data: function data(e, t, n) {\n\t\t\t\t\treturn i(e, t, n, !1);\n\t\t\t\t}, removeData: function removeData(e, t) {\n\t\t\t\t\treturn o(e, t, !1);\n\t\t\t\t}, _data: function _data(e, t, n) {\n\t\t\t\t\treturn i(e, t, n, !0);\n\t\t\t\t}, _removeData: function _removeData(e, t) {\n\t\t\t\t\treturn o(e, t, !0);\n\t\t\t\t}, acceptData: function acceptData(e) {\n\t\t\t\t\tvar t = e.nodeName && st.noData[e.nodeName.toLowerCase()];return !t || t !== !0 && e.getAttribute(\"classid\") === t;\n\t\t\t\t} }), st.fn.extend({ data: function data(e, n) {\n\t\t\t\t\tvar r,\n\t\t\t\t\t i,\n\t\t\t\t\t o = this[0],\n\t\t\t\t\t s = 0,\n\t\t\t\t\t u = null;if (e === t) {\n\t\t\t\t\t\tif (this.length && (u = st.data(o), 1 === o.nodeType && !st._data(o, \"parsedAttrs\"))) {\n\t\t\t\t\t\t\tfor (r = o.attributes; r.length > s; s++) {\n\t\t\t\t\t\t\t\ti = r[s].name, i.indexOf(\"data-\") || (i = st.camelCase(i.substring(5)), a(o, i, u[i]));\n\t\t\t\t\t\t\t}st._data(o, \"parsedAttrs\", !0);\n\t\t\t\t\t\t}return u;\n\t\t\t\t\t}return \"object\" == (typeof e === \"undefined\" ? \"undefined\" : _typeof(e)) ? this.each(function () {\n\t\t\t\t\t\tst.data(this, e);\n\t\t\t\t\t}) : st.access(this, function (n) {\n\t\t\t\t\t\treturn n === t ? o ? a(o, e, st.data(o, e)) : null : (this.each(function () {\n\t\t\t\t\t\t\tst.data(this, e, n);\n\t\t\t\t\t\t}), t);\n\t\t\t\t\t}, null, n, arguments.length > 1, null, !0);\n\t\t\t\t}, removeData: function removeData(e) {\n\t\t\t\t\treturn this.each(function () {\n\t\t\t\t\t\tst.removeData(this, e);\n\t\t\t\t\t});\n\t\t\t\t} }), st.extend({ queue: function queue(e, n, r) {\n\t\t\t\t\tvar i;return e ? (n = (n || \"fx\") + \"queue\", i = st._data(e, n), r && (!i || st.isArray(r) ? i = st._data(e, n, st.makeArray(r)) : i.push(r)), i || []) : t;\n\t\t\t\t}, dequeue: function dequeue(e, t) {\n\t\t\t\t\tt = t || \"fx\";var n = st.queue(e, t),\n\t\t\t\t\t r = n.length,\n\t\t\t\t\t i = n.shift(),\n\t\t\t\t\t o = st._queueHooks(e, t),\n\t\t\t\t\t a = function a() {\n\t\t\t\t\t\tst.dequeue(e, t);\n\t\t\t\t\t};\"inprogress\" === i && (i = n.shift(), r--), o.cur = i, i && (\"fx\" === t && n.unshift(\"inprogress\"), delete o.stop, i.call(e, a, o)), !r && o && o.empty.fire();\n\t\t\t\t}, _queueHooks: function _queueHooks(e, t) {\n\t\t\t\t\tvar n = t + \"queueHooks\";return st._data(e, n) || st._data(e, n, { empty: st.Callbacks(\"once memory\").add(function () {\n\t\t\t\t\t\t\tst._removeData(e, t + \"queue\"), st._removeData(e, n);\n\t\t\t\t\t\t}) });\n\t\t\t\t} }), st.fn.extend({ queue: function queue(e, n) {\n\t\t\t\t\tvar r = 2;return \"string\" != typeof e && (n = e, e = \"fx\", r--), r > arguments.length ? st.queue(this[0], e) : n === t ? this : this.each(function () {\n\t\t\t\t\t\tvar t = st.queue(this, e, n);st._queueHooks(this, e), \"fx\" === e && \"inprogress\" !== t[0] && st.dequeue(this, e);\n\t\t\t\t\t});\n\t\t\t\t}, dequeue: function dequeue(e) {\n\t\t\t\t\treturn this.each(function () {\n\t\t\t\t\t\tst.dequeue(this, e);\n\t\t\t\t\t});\n\t\t\t\t}, delay: function delay(e, t) {\n\t\t\t\t\treturn e = st.fx ? st.fx.speeds[e] || e : e, t = t || \"fx\", this.queue(t, function (t, n) {\n\t\t\t\t\t\tvar r = setTimeout(t, e);n.stop = function () {\n\t\t\t\t\t\t\tclearTimeout(r);\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}, clearQueue: function clearQueue(e) {\n\t\t\t\t\treturn this.queue(e || \"fx\", []);\n\t\t\t\t}, promise: function promise(e, n) {\n\t\t\t\t\tvar r,\n\t\t\t\t\t i = 1,\n\t\t\t\t\t o = st.Deferred(),\n\t\t\t\t\t a = this,\n\t\t\t\t\t s = this.length,\n\t\t\t\t\t u = function u() {\n\t\t\t\t\t\t--i || o.resolveWith(a, [a]);\n\t\t\t\t\t};for (\"string\" != typeof e && (n = e, e = t), e = e || \"fx\"; s--;) {\n\t\t\t\t\t\tr = st._data(a[s], e + \"queueHooks\"), r && r.empty && (i++, r.empty.add(u));\n\t\t\t\t\t}return u(), o.promise(n);\n\t\t\t\t} });var Ct,\n\t\t\t kt,\n\t\t\t Et = /[\\t\\r\\n]/g,\n\t\t\t St = /\\r/g,\n\t\t\t At = /^(?:input|select|textarea|button|object)$/i,\n\t\t\t jt = /^(?:a|area)$/i,\n\t\t\t Dt = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,\n\t\t\t Lt = /^(?:checked|selected)$/i,\n\t\t\t Ht = st.support.getSetAttribute,\n\t\t\t Mt = st.support.input;st.fn.extend({ attr: function attr(e, t) {\n\t\t\t\t\treturn st.access(this, st.attr, e, t, arguments.length > 1);\n\t\t\t\t}, removeAttr: function removeAttr(e) {\n\t\t\t\t\treturn this.each(function () {\n\t\t\t\t\t\tst.removeAttr(this, e);\n\t\t\t\t\t});\n\t\t\t\t}, prop: function prop(e, t) {\n\t\t\t\t\treturn st.access(this, st.prop, e, t, arguments.length > 1);\n\t\t\t\t}, removeProp: function removeProp(e) {\n\t\t\t\t\treturn e = st.propFix[e] || e, this.each(function () {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tthis[e] = t, delete this[e];\n\t\t\t\t\t\t} catch (n) {}\n\t\t\t\t\t});\n\t\t\t\t}, addClass: function addClass(e) {\n\t\t\t\t\tvar t,\n\t\t\t\t\t n,\n\t\t\t\t\t r,\n\t\t\t\t\t i,\n\t\t\t\t\t o,\n\t\t\t\t\t a = 0,\n\t\t\t\t\t s = this.length,\n\t\t\t\t\t u = \"string\" == typeof e && e;if (st.isFunction(e)) return this.each(function (t) {\n\t\t\t\t\t\tst(this).addClass(e.call(this, t, this.className));\n\t\t\t\t\t});if (u) for (t = (e || \"\").match(lt) || []; s > a; a++) {\n\t\t\t\t\t\tif (n = this[a], r = 1 === n.nodeType && (n.className ? (\" \" + n.className + \" \").replace(Et, \" \") : \" \")) {\n\t\t\t\t\t\t\tfor (o = 0; i = t[o++];) {\n\t\t\t\t\t\t\t\t0 > r.indexOf(\" \" + i + \" \") && (r += i + \" \");\n\t\t\t\t\t\t\t}n.className = st.trim(r);\n\t\t\t\t\t\t}\n\t\t\t\t\t}return this;\n\t\t\t\t}, removeClass: function removeClass(e) {\n\t\t\t\t\tvar t,\n\t\t\t\t\t n,\n\t\t\t\t\t r,\n\t\t\t\t\t i,\n\t\t\t\t\t o,\n\t\t\t\t\t a = 0,\n\t\t\t\t\t s = this.length,\n\t\t\t\t\t u = 0 === arguments.length || \"string\" == typeof e && e;if (st.isFunction(e)) return this.each(function (t) {\n\t\t\t\t\t\tst(this).removeClass(e.call(this, t, this.className));\n\t\t\t\t\t});if (u) for (t = (e || \"\").match(lt) || []; s > a; a++) {\n\t\t\t\t\t\tif (n = this[a], r = 1 === n.nodeType && (n.className ? (\" \" + n.className + \" \").replace(Et, \" \") : \"\")) {\n\t\t\t\t\t\t\tfor (o = 0; i = t[o++];) {\n\t\t\t\t\t\t\t\tfor (; r.indexOf(\" \" + i + \" \") >= 0;) {\n\t\t\t\t\t\t\t\t\tr = r.replace(\" \" + i + \" \", \" \");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}n.className = e ? st.trim(r) : \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}return this;\n\t\t\t\t}, toggleClass: function toggleClass(e, t) {\n\t\t\t\t\tvar n = typeof e === \"undefined\" ? \"undefined\" : _typeof(e),\n\t\t\t\t\t r = \"boolean\" == typeof t;return st.isFunction(e) ? this.each(function (n) {\n\t\t\t\t\t\tst(this).toggleClass(e.call(this, n, this.className, t), t);\n\t\t\t\t\t}) : this.each(function () {\n\t\t\t\t\t\tif (\"string\" === n) for (var i, o = 0, a = st(this), s = t, u = e.match(lt) || []; i = u[o++];) {\n\t\t\t\t\t\t\ts = r ? s : !a.hasClass(i), a[s ? \"addClass\" : \"removeClass\"](i);\n\t\t\t\t\t\t} else (\"undefined\" === n || \"boolean\" === n) && (this.className && st._data(this, \"__className__\", this.className), this.className = this.className || e === !1 ? \"\" : st._data(this, \"__className__\") || \"\");\n\t\t\t\t\t});\n\t\t\t\t}, hasClass: function hasClass(e) {\n\t\t\t\t\tfor (var t = \" \" + e + \" \", n = 0, r = this.length; r > n; n++) {\n\t\t\t\t\t\tif (1 === this[n].nodeType && (\" \" + this[n].className + \" \").replace(Et, \" \").indexOf(t) >= 0) return !0;\n\t\t\t\t\t}return !1;\n\t\t\t\t}, val: function val(e) {\n\t\t\t\t\tvar n,\n\t\t\t\t\t r,\n\t\t\t\t\t i,\n\t\t\t\t\t o = this[0];{\n\t\t\t\t\t\tif (arguments.length) return i = st.isFunction(e), this.each(function (r) {\n\t\t\t\t\t\t\tvar o,\n\t\t\t\t\t\t\t a = st(this);1 === this.nodeType && (o = i ? e.call(this, r, a.val()) : e, null == o ? o = \"\" : \"number\" == typeof o ? o += \"\" : st.isArray(o) && (o = st.map(o, function (e) {\n\t\t\t\t\t\t\t\treturn null == e ? \"\" : e + \"\";\n\t\t\t\t\t\t\t})), n = st.valHooks[this.type] || st.valHooks[this.nodeName.toLowerCase()], n && \"set\" in n && n.set(this, o, \"value\") !== t || (this.value = o));\n\t\t\t\t\t\t});if (o) return n = st.valHooks[o.type] || st.valHooks[o.nodeName.toLowerCase()], n && \"get\" in n && (r = n.get(o, \"value\")) !== t ? r : (r = o.value, \"string\" == typeof r ? r.replace(St, \"\") : null == r ? \"\" : r);\n\t\t\t\t\t}\n\t\t\t\t} }), st.extend({ valHooks: { option: { get: function get(e) {\n\t\t\t\t\t\t\tvar t = e.attributes.value;return !t || t.specified ? e.value : e.text;\n\t\t\t\t\t\t} }, select: { get: function get(e) {\n\t\t\t\t\t\t\tfor (var t, n, r = e.options, i = e.selectedIndex, o = \"select-one\" === e.type || 0 > i, a = o ? null : [], s = o ? i + 1 : r.length, u = 0 > i ? s : o ? i : 0; s > u; u++) {\n\t\t\t\t\t\t\t\tif (n = r[u], !(!n.selected && u !== i || (st.support.optDisabled ? n.disabled : null !== n.getAttribute(\"disabled\")) || n.parentNode.disabled && st.nodeName(n.parentNode, \"optgroup\"))) {\n\t\t\t\t\t\t\t\t\tif (t = st(n).val(), o) return t;a.push(t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}return a;\n\t\t\t\t\t\t}, set: function set(e, t) {\n\t\t\t\t\t\t\tvar n = st.makeArray(t);return st(e).find(\"option\").each(function () {\n\t\t\t\t\t\t\t\tthis.selected = st.inArray(st(this).val(), n) >= 0;\n\t\t\t\t\t\t\t}), n.length || (e.selectedIndex = -1), n;\n\t\t\t\t\t\t} } }, attr: function attr(e, n, r) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t o,\n\t\t\t\t\t a,\n\t\t\t\t\t s = e.nodeType;if (e && 3 !== s && 8 !== s && 2 !== s) return e.getAttribute === t ? st.prop(e, n, r) : (a = 1 !== s || !st.isXMLDoc(e), a && (n = n.toLowerCase(), o = st.attrHooks[n] || (Dt.test(n) ? kt : Ct)), r === t ? o && a && \"get\" in o && null !== (i = o.get(e, n)) ? i : (e.getAttribute !== t && (i = e.getAttribute(n)), null == i ? t : i) : null !== r ? o && a && \"set\" in o && (i = o.set(e, r, n)) !== t ? i : (e.setAttribute(n, r + \"\"), r) : (st.removeAttr(e, n), t));\n\t\t\t\t}, removeAttr: function removeAttr(e, t) {\n\t\t\t\t\tvar n,\n\t\t\t\t\t r,\n\t\t\t\t\t i = 0,\n\t\t\t\t\t o = t && t.match(lt);if (o && 1 === e.nodeType) for (; n = o[i++];) {\n\t\t\t\t\t\tr = st.propFix[n] || n, Dt.test(n) ? !Ht && Lt.test(n) ? e[st.camelCase(\"default-\" + n)] = e[r] = !1 : e[r] = !1 : st.attr(e, n, \"\"), e.removeAttribute(Ht ? n : r);\n\t\t\t\t\t}\n\t\t\t\t}, attrHooks: { type: { set: function set(e, t) {\n\t\t\t\t\t\t\tif (!st.support.radioValue && \"radio\" === t && st.nodeName(e, \"input\")) {\n\t\t\t\t\t\t\t\tvar n = e.value;return e.setAttribute(\"type\", t), n && (e.value = n), t;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} } }, propFix: { tabindex: \"tabIndex\", readonly: \"readOnly\", \"for\": \"htmlFor\", \"class\": \"className\", maxlength: \"maxLength\", cellspacing: \"cellSpacing\", cellpadding: \"cellPadding\", rowspan: \"rowSpan\", colspan: \"colSpan\", usemap: \"useMap\", frameborder: \"frameBorder\", contenteditable: \"contentEditable\" }, prop: function prop(e, n, r) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t o,\n\t\t\t\t\t a,\n\t\t\t\t\t s = e.nodeType;if (e && 3 !== s && 8 !== s && 2 !== s) return a = 1 !== s || !st.isXMLDoc(e), a && (n = st.propFix[n] || n, o = st.propHooks[n]), r !== t ? o && \"set\" in o && (i = o.set(e, r, n)) !== t ? i : e[n] = r : o && \"get\" in o && null !== (i = o.get(e, n)) ? i : e[n];\n\t\t\t\t}, propHooks: { tabIndex: { get: function get(e) {\n\t\t\t\t\t\t\tvar n = e.getAttributeNode(\"tabindex\");return n && n.specified ? parseInt(n.value, 10) : At.test(e.nodeName) || jt.test(e.nodeName) && e.href ? 0 : t;\n\t\t\t\t\t\t} } } }), kt = { get: function get(e, n) {\n\t\t\t\t\tvar r = st.prop(e, n),\n\t\t\t\t\t i = \"boolean\" == typeof r && e.getAttribute(n),\n\t\t\t\t\t o = \"boolean\" == typeof r ? Mt && Ht ? null != i : Lt.test(n) ? e[st.camelCase(\"default-\" + n)] : !!i : e.getAttributeNode(n);return o && o.value !== !1 ? n.toLowerCase() : t;\n\t\t\t\t}, set: function set(e, t, n) {\n\t\t\t\t\treturn t === !1 ? st.removeAttr(e, n) : Mt && Ht || !Lt.test(n) ? e.setAttribute(!Ht && st.propFix[n] || n, n) : e[st.camelCase(\"default-\" + n)] = e[n] = !0, n;\n\t\t\t\t} }, Mt && Ht || (st.attrHooks.value = { get: function get(e, n) {\n\t\t\t\t\tvar r = e.getAttributeNode(n);return st.nodeName(e, \"input\") ? e.defaultValue : r && r.specified ? r.value : t;\n\t\t\t\t}, set: function set(e, n, r) {\n\t\t\t\t\treturn st.nodeName(e, \"input\") ? (e.defaultValue = n, t) : Ct && Ct.set(e, n, r);\n\t\t\t\t} }), Ht || (Ct = st.valHooks.button = { get: function get(e, n) {\n\t\t\t\t\tvar r = e.getAttributeNode(n);return r && (\"id\" === n || \"name\" === n || \"coords\" === n ? \"\" !== r.value : r.specified) ? r.value : t;\n\t\t\t\t}, set: function set(e, n, r) {\n\t\t\t\t\tvar i = e.getAttributeNode(r);return i || e.setAttributeNode(i = e.ownerDocument.createAttribute(r)), i.value = n += \"\", \"value\" === r || n === e.getAttribute(r) ? n : t;\n\t\t\t\t} }, st.attrHooks.contenteditable = { get: Ct.get, set: function set(e, t, n) {\n\t\t\t\t\tCt.set(e, \"\" === t ? !1 : t, n);\n\t\t\t\t} }, st.each([\"width\", \"height\"], function (e, n) {\n\t\t\t\tst.attrHooks[n] = st.extend(st.attrHooks[n], { set: function set(e, r) {\n\t\t\t\t\t\treturn \"\" === r ? (e.setAttribute(n, \"auto\"), r) : t;\n\t\t\t\t\t} });\n\t\t\t})), st.support.hrefNormalized || (st.each([\"href\", \"src\", \"width\", \"height\"], function (e, n) {\n\t\t\t\tst.attrHooks[n] = st.extend(st.attrHooks[n], { get: function get(e) {\n\t\t\t\t\t\tvar r = e.getAttribute(n, 2);return null == r ? t : r;\n\t\t\t\t\t} });\n\t\t\t}), st.each([\"href\", \"src\"], function (e, t) {\n\t\t\t\tst.propHooks[t] = { get: function get(e) {\n\t\t\t\t\t\treturn e.getAttribute(t, 4);\n\t\t\t\t\t} };\n\t\t\t})), st.support.style || (st.attrHooks.style = { get: function get(e) {\n\t\t\t\t\treturn e.style.cssText || t;\n\t\t\t\t}, set: function set(e, t) {\n\t\t\t\t\treturn e.style.cssText = t + \"\";\n\t\t\t\t} }), st.support.optSelected || (st.propHooks.selected = st.extend(st.propHooks.selected, { get: function get(e) {\n\t\t\t\t\tvar t = e.parentNode;return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null;\n\t\t\t\t} })), st.support.enctype || (st.propFix.enctype = \"encoding\"), st.support.checkOn || st.each([\"radio\", \"checkbox\"], function () {\n\t\t\t\tst.valHooks[this] = { get: function get(e) {\n\t\t\t\t\t\treturn null === e.getAttribute(\"value\") ? \"on\" : e.value;\n\t\t\t\t\t} };\n\t\t\t}), st.each([\"radio\", \"checkbox\"], function () {\n\t\t\t\tst.valHooks[this] = st.extend(st.valHooks[this], { set: function set(e, n) {\n\t\t\t\t\t\treturn st.isArray(n) ? e.checked = st.inArray(st(e).val(), n) >= 0 : t;\n\t\t\t\t\t} });\n\t\t\t});var qt = /^(?:input|select|textarea)$/i,\n\t\t\t _t = /^key/,\n\t\t\t Ft = /^(?:mouse|contextmenu)|click/,\n\t\t\t Ot = /^(?:focusinfocus|focusoutblur)$/,\n\t\t\t Bt = /^([^.]*)(?:\\.(.+)|)$/;st.event = { global: {}, add: function add(e, n, r, i, o) {\n\t\t\t\t\tvar a,\n\t\t\t\t\t s,\n\t\t\t\t\t u,\n\t\t\t\t\t l,\n\t\t\t\t\t c,\n\t\t\t\t\t f,\n\t\t\t\t\t p,\n\t\t\t\t\t d,\n\t\t\t\t\t h,\n\t\t\t\t\t g,\n\t\t\t\t\t m,\n\t\t\t\t\t y = 3 !== e.nodeType && 8 !== e.nodeType && st._data(e);if (y) {\n\t\t\t\t\t\tfor (r.handler && (a = r, r = a.handler, o = a.selector), r.guid || (r.guid = st.guid++), (l = y.events) || (l = y.events = {}), (s = y.handle) || (s = y.handle = function (e) {\n\t\t\t\t\t\t\treturn st === t || e && st.event.triggered === e.type ? t : st.event.dispatch.apply(s.elem, arguments);\n\t\t\t\t\t\t}, s.elem = e), n = (n || \"\").match(lt) || [\"\"], c = n.length; c--;) {\n\t\t\t\t\t\t\tu = Bt.exec(n[c]) || [], h = m = u[1], g = (u[2] || \"\").split(\".\").sort(), p = st.event.special[h] || {}, h = (o ? p.delegateType : p.bindType) || h, p = st.event.special[h] || {}, f = st.extend({ type: h, origType: m, data: i, handler: r, guid: r.guid, selector: o, needsContext: o && st.expr.match.needsContext.test(o), namespace: g.join(\".\") }, a), (d = l[h]) || (d = l[h] = [], d.delegateCount = 0, p.setup && p.setup.call(e, i, g, s) !== !1 || (e.addEventListener ? e.addEventListener(h, s, !1) : e.attachEvent && e.attachEvent(\"on\" + h, s))), p.add && (p.add.call(e, f), f.handler.guid || (f.handler.guid = r.guid)), o ? d.splice(d.delegateCount++, 0, f) : d.push(f), st.event.global[h] = !0;\n\t\t\t\t\t\t}e = null;\n\t\t\t\t\t}\n\t\t\t\t}, remove: function remove(e, t, n, r, i) {\n\t\t\t\t\tvar o,\n\t\t\t\t\t a,\n\t\t\t\t\t s,\n\t\t\t\t\t u,\n\t\t\t\t\t l,\n\t\t\t\t\t c,\n\t\t\t\t\t f,\n\t\t\t\t\t p,\n\t\t\t\t\t d,\n\t\t\t\t\t h,\n\t\t\t\t\t g,\n\t\t\t\t\t m = st.hasData(e) && st._data(e);if (m && (u = m.events)) {\n\t\t\t\t\t\tfor (t = (t || \"\").match(lt) || [\"\"], l = t.length; l--;) {\n\t\t\t\t\t\t\tif (s = Bt.exec(t[l]) || [], d = g = s[1], h = (s[2] || \"\").split(\".\").sort(), d) {\n\t\t\t\t\t\t\t\tfor (f = st.event.special[d] || {}, d = (r ? f.delegateType : f.bindType) || d, p = u[d] || [], s = s[2] && RegExp(\"(^|\\\\.)\" + h.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"), a = o = p.length; o--;) {\n\t\t\t\t\t\t\t\t\tc = p[o], !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && (\"**\" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c));\n\t\t\t\t\t\t\t\t}a && !p.length && (f.teardown && f.teardown.call(e, h, m.handle) !== !1 || st.removeEvent(e, d, m.handle), delete u[d]);\n\t\t\t\t\t\t\t} else for (d in u) {\n\t\t\t\t\t\t\t\tst.event.remove(e, d + t[l], n, r, !0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}st.isEmptyObject(u) && (delete m.handle, st._removeData(e, \"events\"));\n\t\t\t\t\t}\n\t\t\t\t}, trigger: function trigger(n, r, i, o) {\n\t\t\t\t\tvar a,\n\t\t\t\t\t s,\n\t\t\t\t\t u,\n\t\t\t\t\t l,\n\t\t\t\t\t c,\n\t\t\t\t\t f,\n\t\t\t\t\t p,\n\t\t\t\t\t d = [i || V],\n\t\t\t\t\t h = n.type || n,\n\t\t\t\t\t g = n.namespace ? n.namespace.split(\".\") : [];if (s = u = i = i || V, 3 !== i.nodeType && 8 !== i.nodeType && !Ot.test(h + st.event.triggered) && (h.indexOf(\".\") >= 0 && (g = h.split(\".\"), h = g.shift(), g.sort()), c = 0 > h.indexOf(\":\") && \"on\" + h, n = n[st.expando] ? n : new st.Event(h, \"object\" == (typeof n === \"undefined\" ? \"undefined\" : _typeof(n)) && n), n.isTrigger = !0, n.namespace = g.join(\".\"), n.namespace_re = n.namespace ? RegExp(\"(^|\\\\.)\" + g.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null, n.result = t, n.target || (n.target = i), r = null == r ? [n] : st.makeArray(r, [n]), p = st.event.special[h] || {}, o || !p.trigger || p.trigger.apply(i, r) !== !1)) {\n\t\t\t\t\t\tif (!o && !p.noBubble && !st.isWindow(i)) {\n\t\t\t\t\t\t\tfor (l = p.delegateType || h, Ot.test(l + h) || (s = s.parentNode); s; s = s.parentNode) {\n\t\t\t\t\t\t\t\td.push(s), u = s;\n\t\t\t\t\t\t\t}u === (i.ownerDocument || V) && d.push(u.defaultView || u.parentWindow || e);\n\t\t\t\t\t\t}for (a = 0; (s = d[a++]) && !n.isPropagationStopped();) {\n\t\t\t\t\t\t\tn.type = a > 1 ? l : p.bindType || h, f = (st._data(s, \"events\") || {})[n.type] && st._data(s, \"handle\"), f && f.apply(s, r), f = c && s[c], f && st.acceptData(s) && f.apply && f.apply(s, r) === !1 && n.preventDefault();\n\t\t\t\t\t\t}if (n.type = h, !(o || n.isDefaultPrevented() || p._default && p._default.apply(i.ownerDocument, r) !== !1 || \"click\" === h && st.nodeName(i, \"a\") || !st.acceptData(i) || !c || !i[h] || st.isWindow(i))) {\n\t\t\t\t\t\t\tu = i[c], u && (i[c] = null), st.event.triggered = h;try {\n\t\t\t\t\t\t\t\ti[h]();\n\t\t\t\t\t\t\t} catch (m) {}st.event.triggered = t, u && (i[c] = u);\n\t\t\t\t\t\t}return n.result;\n\t\t\t\t\t}\n\t\t\t\t}, dispatch: function dispatch(e) {\n\t\t\t\t\te = st.event.fix(e);var n,\n\t\t\t\t\t r,\n\t\t\t\t\t i,\n\t\t\t\t\t o,\n\t\t\t\t\t a,\n\t\t\t\t\t s = [],\n\t\t\t\t\t u = nt.call(arguments),\n\t\t\t\t\t l = (st._data(this, \"events\") || {})[e.type] || [],\n\t\t\t\t\t c = st.event.special[e.type] || {};if (u[0] = e, e.delegateTarget = this, !c.preDispatch || c.preDispatch.call(this, e) !== !1) {\n\t\t\t\t\t\tfor (s = st.event.handlers.call(this, e, l), n = 0; (o = s[n++]) && !e.isPropagationStopped();) {\n\t\t\t\t\t\t\tfor (e.currentTarget = o.elem, r = 0; (a = o.handlers[r++]) && !e.isImmediatePropagationStopped();) {\n\t\t\t\t\t\t\t\t(!e.namespace_re || e.namespace_re.test(a.namespace)) && (e.handleObj = a, e.data = a.data, i = ((st.event.special[a.origType] || {}).handle || a.handler).apply(o.elem, u), i !== t && (e.result = i) === !1 && (e.preventDefault(), e.stopPropagation()));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}return c.postDispatch && c.postDispatch.call(this, e), e.result;\n\t\t\t\t\t}\n\t\t\t\t}, handlers: function handlers(e, n) {\n\t\t\t\t\tvar r,\n\t\t\t\t\t i,\n\t\t\t\t\t o,\n\t\t\t\t\t a,\n\t\t\t\t\t s = [],\n\t\t\t\t\t u = n.delegateCount,\n\t\t\t\t\t l = e.target;if (u && l.nodeType && (!e.button || \"click\" !== e.type)) for (; l != this; l = l.parentNode || this) {\n\t\t\t\t\t\tif (l.disabled !== !0 || \"click\" !== e.type) {\n\t\t\t\t\t\t\tfor (i = [], r = 0; u > r; r++) {\n\t\t\t\t\t\t\t\ta = n[r], o = a.selector + \" \", i[o] === t && (i[o] = a.needsContext ? st(o, this).index(l) >= 0 : st.find(o, this, null, [l]).length), i[o] && i.push(a);\n\t\t\t\t\t\t\t}i.length && s.push({ elem: l, handlers: i });\n\t\t\t\t\t\t}\n\t\t\t\t\t}return n.length > u && s.push({ elem: this, handlers: n.slice(u) }), s;\n\t\t\t\t}, fix: function fix(e) {\n\t\t\t\t\tif (e[st.expando]) return e;var t,\n\t\t\t\t\t n,\n\t\t\t\t\t r = e,\n\t\t\t\t\t i = st.event.fixHooks[e.type] || {},\n\t\t\t\t\t o = i.props ? this.props.concat(i.props) : this.props;for (e = new st.Event(r), t = o.length; t--;) {\n\t\t\t\t\t\tn = o[t], e[n] = r[n];\n\t\t\t\t\t}return e.target || (e.target = r.srcElement || V), 3 === e.target.nodeType && (e.target = e.target.parentNode), e.metaKey = !!e.metaKey, i.filter ? i.filter(e, r) : e;\n\t\t\t\t}, props: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"), fixHooks: {}, keyHooks: { props: \"char charCode key keyCode\".split(\" \"), filter: function filter(e, t) {\n\t\t\t\t\t\treturn null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode), e;\n\t\t\t\t\t} }, mouseHooks: { props: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"), filter: function filter(e, n) {\n\t\t\t\t\t\tvar r,\n\t\t\t\t\t\t i,\n\t\t\t\t\t\t o,\n\t\t\t\t\t\t a = n.button,\n\t\t\t\t\t\t s = n.fromElement;return null == e.pageX && null != n.clientX && (r = e.target.ownerDocument || V, i = r.documentElement, o = r.body, e.pageX = n.clientX + (i && i.scrollLeft || o && o.scrollLeft || 0) - (i && i.clientLeft || o && o.clientLeft || 0), e.pageY = n.clientY + (i && i.scrollTop || o && o.scrollTop || 0) - (i && i.clientTop || o && o.clientTop || 0)), !e.relatedTarget && s && (e.relatedTarget = s === e.target ? n.toElement : s), e.which || a === t || (e.which = 1 & a ? 1 : 2 & a ? 3 : 4 & a ? 2 : 0), e;\n\t\t\t\t\t} }, special: { load: { noBubble: !0 }, click: { trigger: function trigger() {\n\t\t\t\t\t\t\treturn st.nodeName(this, \"input\") && \"checkbox\" === this.type && this.click ? (this.click(), !1) : t;\n\t\t\t\t\t\t} }, focus: { trigger: function trigger() {\n\t\t\t\t\t\t\tif (this !== V.activeElement && this.focus) try {\n\t\t\t\t\t\t\t\treturn this.focus(), !1;\n\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t}, delegateType: \"focusin\" }, blur: { trigger: function trigger() {\n\t\t\t\t\t\t\treturn this === V.activeElement && this.blur ? (this.blur(), !1) : t;\n\t\t\t\t\t\t}, delegateType: \"focusout\" }, beforeunload: { postDispatch: function postDispatch(e) {\n\t\t\t\t\t\t\te.result !== t && (e.originalEvent.returnValue = e.result);\n\t\t\t\t\t\t} } }, simulate: function simulate(e, t, n, r) {\n\t\t\t\t\tvar i = st.extend(new st.Event(), n, { type: e, isSimulated: !0, originalEvent: {} });r ? st.event.trigger(i, null, t) : st.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault();\n\t\t\t\t} }, st.removeEvent = V.removeEventListener ? function (e, t, n) {\n\t\t\t\te.removeEventListener && e.removeEventListener(t, n, !1);\n\t\t\t} : function (e, n, r) {\n\t\t\t\tvar i = \"on\" + n;e.detachEvent && (e[i] === t && (e[i] = null), e.detachEvent(i, r));\n\t\t\t}, st.Event = function (e, n) {\n\t\t\t\treturn this instanceof st.Event ? (e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? u : l) : this.type = e, n && st.extend(this, n), this.timeStamp = e && e.timeStamp || st.now(), this[st.expando] = !0, t) : new st.Event(e, n);\n\t\t\t}, st.Event.prototype = { isDefaultPrevented: l, isPropagationStopped: l, isImmediatePropagationStopped: l, preventDefault: function preventDefault() {\n\t\t\t\t\tvar e = this.originalEvent;this.isDefaultPrevented = u, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1);\n\t\t\t\t}, stopPropagation: function stopPropagation() {\n\t\t\t\t\tvar e = this.originalEvent;this.isPropagationStopped = u, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0);\n\t\t\t\t}, stopImmediatePropagation: function stopImmediatePropagation() {\n\t\t\t\t\tthis.isImmediatePropagationStopped = u, this.stopPropagation();\n\t\t\t\t} }, st.each({ mouseenter: \"mouseover\", mouseleave: \"mouseout\" }, function (e, t) {\n\t\t\t\tst.event.special[e] = { delegateType: t, bindType: t, handle: function handle(e) {\n\t\t\t\t\t\tvar n,\n\t\t\t\t\t\t r = this,\n\t\t\t\t\t\t i = e.relatedTarget,\n\t\t\t\t\t\t o = e.handleObj;return (!i || i !== r && !st.contains(r, i)) && (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n;\n\t\t\t\t\t} };\n\t\t\t}), st.support.submitBubbles || (st.event.special.submit = { setup: function setup() {\n\t\t\t\t\treturn st.nodeName(this, \"form\") ? !1 : (st.event.add(this, \"click._submit keypress._submit\", function (e) {\n\t\t\t\t\t\tvar n = e.target,\n\t\t\t\t\t\t r = st.nodeName(n, \"input\") || st.nodeName(n, \"button\") ? n.form : t;r && !st._data(r, \"submitBubbles\") && (st.event.add(r, \"submit._submit\", function (e) {\n\t\t\t\t\t\t\te._submit_bubble = !0;\n\t\t\t\t\t\t}), st._data(r, \"submitBubbles\", !0));\n\t\t\t\t\t}), t);\n\t\t\t\t}, postDispatch: function postDispatch(e) {\n\t\t\t\t\te._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && st.event.simulate(\"submit\", this.parentNode, e, !0));\n\t\t\t\t}, teardown: function teardown() {\n\t\t\t\t\treturn st.nodeName(this, \"form\") ? !1 : (st.event.remove(this, \"._submit\"), t);\n\t\t\t\t} }), st.support.changeBubbles || (st.event.special.change = { setup: function setup() {\n\t\t\t\t\treturn qt.test(this.nodeName) ? ((\"checkbox\" === this.type || \"radio\" === this.type) && (st.event.add(this, \"propertychange._change\", function (e) {\n\t\t\t\t\t\t\"checked\" === e.originalEvent.propertyName && (this._just_changed = !0);\n\t\t\t\t\t}), st.event.add(this, \"click._change\", function (e) {\n\t\t\t\t\t\tthis._just_changed && !e.isTrigger && (this._just_changed = !1), st.event.simulate(\"change\", this, e, !0);\n\t\t\t\t\t})), !1) : (st.event.add(this, \"beforeactivate._change\", function (e) {\n\t\t\t\t\t\tvar t = e.target;qt.test(t.nodeName) && !st._data(t, \"changeBubbles\") && (st.event.add(t, \"change._change\", function (e) {\n\t\t\t\t\t\t\t!this.parentNode || e.isSimulated || e.isTrigger || st.event.simulate(\"change\", this.parentNode, e, !0);\n\t\t\t\t\t\t}), st._data(t, \"changeBubbles\", !0));\n\t\t\t\t\t}), t);\n\t\t\t\t}, handle: function handle(e) {\n\t\t\t\t\tvar n = e.target;return this !== n || e.isSimulated || e.isTrigger || \"radio\" !== n.type && \"checkbox\" !== n.type ? e.handleObj.handler.apply(this, arguments) : t;\n\t\t\t\t}, teardown: function teardown() {\n\t\t\t\t\treturn st.event.remove(this, \"._change\"), !qt.test(this.nodeName);\n\t\t\t\t} }), st.support.focusinBubbles || st.each({ focus: \"focusin\", blur: \"focusout\" }, function (e, t) {\n\t\t\t\tvar n = 0,\n\t\t\t\t r = function r(e) {\n\t\t\t\t\tst.event.simulate(t, e.target, st.event.fix(e), !0);\n\t\t\t\t};st.event.special[t] = { setup: function setup() {\n\t\t\t\t\t\t0 === n++ && V.addEventListener(e, r, !0);\n\t\t\t\t\t}, teardown: function teardown() {\n\t\t\t\t\t\t0 === --n && V.removeEventListener(e, r, !0);\n\t\t\t\t\t} };\n\t\t\t}), st.fn.extend({ on: function on(e, n, r, i, o) {\n\t\t\t\t\tvar a, s;if (\"object\" == (typeof e === \"undefined\" ? \"undefined\" : _typeof(e))) {\n\t\t\t\t\t\t\"string\" != typeof n && (r = r || n, n = t);for (s in e) {\n\t\t\t\t\t\t\tthis.on(s, n, r, e[s], o);\n\t\t\t\t\t\t}return this;\n\t\t\t\t\t}if (null == r && null == i ? (i = n, r = n = t) : null == i && (\"string\" == typeof n ? (i = r, r = t) : (i = r, r = n, n = t)), i === !1) i = l;else if (!i) return this;return 1 === o && (a = i, i = function i(e) {\n\t\t\t\t\t\treturn st().off(e), a.apply(this, arguments);\n\t\t\t\t\t}, i.guid = a.guid || (a.guid = st.guid++)), this.each(function () {\n\t\t\t\t\t\tst.event.add(this, e, i, r, n);\n\t\t\t\t\t});\n\t\t\t\t}, one: function one(e, t, n, r) {\n\t\t\t\t\treturn this.on(e, t, n, r, 1);\n\t\t\t\t}, off: function off(e, n, r) {\n\t\t\t\t\tvar i, o;if (e && e.preventDefault && e.handleObj) return i = e.handleObj, st(e.delegateTarget).off(i.namespace ? i.origType + \".\" + i.namespace : i.origType, i.selector, i.handler), this;if (\"object\" == (typeof e === \"undefined\" ? \"undefined\" : _typeof(e))) {\n\t\t\t\t\t\tfor (o in e) {\n\t\t\t\t\t\t\tthis.off(o, n, e[o]);\n\t\t\t\t\t\t}return this;\n\t\t\t\t\t}return (n === !1 || \"function\" == typeof n) && (r = n, n = t), r === !1 && (r = l), this.each(function () {\n\t\t\t\t\t\tst.event.remove(this, e, r, n);\n\t\t\t\t\t});\n\t\t\t\t}, bind: function bind(e, t, n) {\n\t\t\t\t\treturn this.on(e, null, t, n);\n\t\t\t\t}, unbind: function unbind(e, t) {\n\t\t\t\t\treturn this.off(e, null, t);\n\t\t\t\t}, delegate: function delegate(e, t, n, r) {\n\t\t\t\t\treturn this.on(t, e, n, r);\n\t\t\t\t}, undelegate: function undelegate(e, t, n) {\n\t\t\t\t\treturn 1 === arguments.length ? this.off(e, \"**\") : this.off(t, e || \"**\", n);\n\t\t\t\t}, trigger: function trigger(e, t) {\n\t\t\t\t\treturn this.each(function () {\n\t\t\t\t\t\tst.event.trigger(e, t, this);\n\t\t\t\t\t});\n\t\t\t\t}, triggerHandler: function triggerHandler(e, n) {\n\t\t\t\t\tvar r = this[0];return r ? st.event.trigger(e, n, r, !0) : t;\n\t\t\t\t}, hover: function hover(e, t) {\n\t\t\t\t\treturn this.mouseenter(e).mouseleave(t || e);\n\t\t\t\t} }), st.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"), function (e, t) {\n\t\t\t\tst.fn[t] = function (e, n) {\n\t\t\t\t\treturn arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t);\n\t\t\t\t}, _t.test(t) && (st.event.fixHooks[t] = st.event.keyHooks), Ft.test(t) && (st.event.fixHooks[t] = st.event.mouseHooks);\n\t\t\t}), function (e, t) {\n\t\t\t\tfunction n(e) {\n\t\t\t\t\treturn ht.test(e + \"\");\n\t\t\t\t}function r() {\n\t\t\t\t\tvar _e,\n\t\t\t\t\t t = [];return _e = function e(n, r) {\n\t\t\t\t\t\treturn t.push(n += \" \") > C.cacheLength && delete _e[t.shift()], _e[n] = r;\n\t\t\t\t\t};\n\t\t\t\t}function i(e) {\n\t\t\t\t\treturn e[P] = !0, e;\n\t\t\t\t}function o(e) {\n\t\t\t\t\tvar t = L.createElement(\"div\");try {\n\t\t\t\t\t\treturn e(t);\n\t\t\t\t\t} catch (n) {\n\t\t\t\t\t\treturn !1;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tt = null;\n\t\t\t\t\t}\n\t\t\t\t}function a(e, t, n, r) {\n\t\t\t\t\tvar i, o, a, s, u, l, c, d, h, g;if ((t ? t.ownerDocument || t : R) !== L && D(t), t = t || L, n = n || [], !e || \"string\" != typeof e) return n;if (1 !== (s = t.nodeType) && 9 !== s) return [];if (!M && !r) {\n\t\t\t\t\t\tif (i = gt.exec(e)) if (a = i[1]) {\n\t\t\t\t\t\t\tif (9 === s) {\n\t\t\t\t\t\t\t\tif (o = t.getElementById(a), !o || !o.parentNode) return n;if (o.id === a) return n.push(o), n;\n\t\t\t\t\t\t\t} else if (t.ownerDocument && (o = t.ownerDocument.getElementById(a)) && O(t, o) && o.id === a) return n.push(o), n;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (i[2]) return Q.apply(n, K.call(t.getElementsByTagName(e), 0)), n;if ((a = i[3]) && W.getByClassName && t.getElementsByClassName) return Q.apply(n, K.call(t.getElementsByClassName(a), 0)), n;\n\t\t\t\t\t\t}if (W.qsa && !q.test(e)) {\n\t\t\t\t\t\t\tif (c = !0, d = P, h = t, g = 9 === s && e, 1 === s && \"object\" !== t.nodeName.toLowerCase()) {\n\t\t\t\t\t\t\t\tfor (l = f(e), (c = t.getAttribute(\"id\")) ? d = c.replace(vt, \"\\\\$&\") : t.setAttribute(\"id\", d), d = \"[id='\" + d + \"'] \", u = l.length; u--;) {\n\t\t\t\t\t\t\t\t\tl[u] = d + p(l[u]);\n\t\t\t\t\t\t\t\t}h = dt.test(e) && t.parentNode || t, g = l.join(\",\");\n\t\t\t\t\t\t\t}if (g) try {\n\t\t\t\t\t\t\t\treturn Q.apply(n, K.call(h.querySelectorAll(g), 0)), n;\n\t\t\t\t\t\t\t} catch (m) {} finally {\n\t\t\t\t\t\t\t\tc || t.removeAttribute(\"id\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}return x(e.replace(at, \"$1\"), t, n, r);\n\t\t\t\t}function s(e, t) {\n\t\t\t\t\tfor (var n = e && t && e.nextSibling; n; n = n.nextSibling) {\n\t\t\t\t\t\tif (n === t) return -1;\n\t\t\t\t\t}return e ? 1 : -1;\n\t\t\t\t}function u(e) {\n\t\t\t\t\treturn function (t) {\n\t\t\t\t\t\tvar n = t.nodeName.toLowerCase();return \"input\" === n && t.type === e;\n\t\t\t\t\t};\n\t\t\t\t}function l(e) {\n\t\t\t\t\treturn function (t) {\n\t\t\t\t\t\tvar n = t.nodeName.toLowerCase();return (\"input\" === n || \"button\" === n) && t.type === e;\n\t\t\t\t\t};\n\t\t\t\t}function c(e) {\n\t\t\t\t\treturn i(function (t) {\n\t\t\t\t\t\treturn t = +t, i(function (n, r) {\n\t\t\t\t\t\t\tfor (var i, o = e([], n.length, t), a = o.length; a--;) {\n\t\t\t\t\t\t\t\tn[i = o[a]] && (n[i] = !(r[i] = n[i]));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}function f(e, t) {\n\t\t\t\t\tvar n,\n\t\t\t\t\t r,\n\t\t\t\t\t i,\n\t\t\t\t\t o,\n\t\t\t\t\t s,\n\t\t\t\t\t u,\n\t\t\t\t\t l,\n\t\t\t\t\t c = X[e + \" \"];if (c) return t ? 0 : c.slice(0);for (s = e, u = [], l = C.preFilter; s;) {\n\t\t\t\t\t\t(!n || (r = ut.exec(s))) && (r && (s = s.slice(r[0].length) || s), u.push(i = [])), n = !1, (r = lt.exec(s)) && (n = r.shift(), i.push({ value: n, type: r[0].replace(at, \" \") }), s = s.slice(n.length));for (o in C.filter) {\n\t\t\t\t\t\t\t!(r = pt[o].exec(s)) || l[o] && !(r = l[o](r)) || (n = r.shift(), i.push({ value: n, type: o, matches: r }), s = s.slice(n.length));\n\t\t\t\t\t\t}if (!n) break;\n\t\t\t\t\t}return t ? s.length : s ? a.error(e) : X(e, u).slice(0);\n\t\t\t\t}function p(e) {\n\t\t\t\t\tfor (var t = 0, n = e.length, r = \"\"; n > t; t++) {\n\t\t\t\t\t\tr += e[t].value;\n\t\t\t\t\t}return r;\n\t\t\t\t}function d(e, t, n) {\n\t\t\t\t\tvar r = t.dir,\n\t\t\t\t\t i = n && \"parentNode\" === t.dir,\n\t\t\t\t\t o = I++;return t.first ? function (t, n, o) {\n\t\t\t\t\t\tfor (; t = t[r];) {\n\t\t\t\t\t\t\tif (1 === t.nodeType || i) return e(t, n, o);\n\t\t\t\t\t\t}\n\t\t\t\t\t} : function (t, n, a) {\n\t\t\t\t\t\tvar s,\n\t\t\t\t\t\t u,\n\t\t\t\t\t\t l,\n\t\t\t\t\t\t c = $ + \" \" + o;if (a) {\n\t\t\t\t\t\t\tfor (; t = t[r];) {\n\t\t\t\t\t\t\t\tif ((1 === t.nodeType || i) && e(t, n, a)) return !0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else for (; t = t[r];) {\n\t\t\t\t\t\t\tif (1 === t.nodeType || i) if (l = t[P] || (t[P] = {}), (u = l[r]) && u[0] === c) {\n\t\t\t\t\t\t\t\tif ((s = u[1]) === !0 || s === N) return s === !0;\n\t\t\t\t\t\t\t} else if (u = l[r] = [c], u[1] = e(t, n, a) || N, u[1] === !0) return !0;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}function h(e) {\n\t\t\t\t\treturn e.length > 1 ? function (t, n, r) {\n\t\t\t\t\t\tfor (var i = e.length; i--;) {\n\t\t\t\t\t\t\tif (!e[i](t, n, r)) return !1;\n\t\t\t\t\t\t}return !0;\n\t\t\t\t\t} : e[0];\n\t\t\t\t}function g(e, t, n, r, i) {\n\t\t\t\t\tfor (var o, a = [], s = 0, u = e.length, l = null != t; u > s; s++) {\n\t\t\t\t\t\t(o = e[s]) && (!n || n(o, r, i)) && (a.push(o), l && t.push(s));\n\t\t\t\t\t}return a;\n\t\t\t\t}function m(e, t, n, r, o, a) {\n\t\t\t\t\treturn r && !r[P] && (r = m(r)), o && !o[P] && (o = m(o, a)), i(function (i, a, s, u) {\n\t\t\t\t\t\tvar l,\n\t\t\t\t\t\t c,\n\t\t\t\t\t\t f,\n\t\t\t\t\t\t p = [],\n\t\t\t\t\t\t d = [],\n\t\t\t\t\t\t h = a.length,\n\t\t\t\t\t\t m = i || b(t || \"*\", s.nodeType ? [s] : s, []),\n\t\t\t\t\t\t y = !e || !i && t ? m : g(m, p, e, s, u),\n\t\t\t\t\t\t v = n ? o || (i ? e : h || r) ? [] : a : y;if (n && n(y, v, s, u), r) for (l = g(v, d), r(l, [], s, u), c = l.length; c--;) {\n\t\t\t\t\t\t\t(f = l[c]) && (v[d[c]] = !(y[d[c]] = f));\n\t\t\t\t\t\t}if (i) {\n\t\t\t\t\t\t\tif (o || e) {\n\t\t\t\t\t\t\t\tif (o) {\n\t\t\t\t\t\t\t\t\tfor (l = [], c = v.length; c--;) {\n\t\t\t\t\t\t\t\t\t\t(f = v[c]) && l.push(y[c] = f);\n\t\t\t\t\t\t\t\t\t}o(null, v = [], l, u);\n\t\t\t\t\t\t\t\t}for (c = v.length; c--;) {\n\t\t\t\t\t\t\t\t\t(f = v[c]) && (l = o ? Z.call(i, f) : p[c]) > -1 && (i[l] = !(a[l] = f));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else v = g(v === a ? v.splice(h, v.length) : v), o ? o(null, a, v, u) : Q.apply(a, v);\n\t\t\t\t\t});\n\t\t\t\t}function y(e) {\n\t\t\t\t\tfor (var t, n, r, i = e.length, o = C.relative[e[0].type], a = o || C.relative[\" \"], s = o ? 1 : 0, u = d(function (e) {\n\t\t\t\t\t\treturn e === t;\n\t\t\t\t\t}, a, !0), l = d(function (e) {\n\t\t\t\t\t\treturn Z.call(t, e) > -1;\n\t\t\t\t\t}, a, !0), c = [function (e, n, r) {\n\t\t\t\t\t\treturn !o && (r || n !== j) || ((t = n).nodeType ? u(e, n, r) : l(e, n, r));\n\t\t\t\t\t}]; i > s; s++) {\n\t\t\t\t\t\tif (n = C.relative[e[s].type]) c = [d(h(c), n)];else {\n\t\t\t\t\t\t\tif (n = C.filter[e[s].type].apply(null, e[s].matches), n[P]) {\n\t\t\t\t\t\t\t\tfor (r = ++s; i > r && !C.relative[e[r].type]; r++) {}return m(s > 1 && h(c), s > 1 && p(e.slice(0, s - 1)).replace(at, \"$1\"), n, r > s && y(e.slice(s, r)), i > r && y(e = e.slice(r)), i > r && p(e));\n\t\t\t\t\t\t\t}c.push(n);\n\t\t\t\t\t\t}\n\t\t\t\t\t}return h(c);\n\t\t\t\t}function v(e, t) {\n\t\t\t\t\tvar n = 0,\n\t\t\t\t\t r = t.length > 0,\n\t\t\t\t\t o = e.length > 0,\n\t\t\t\t\t s = function s(i, _s, u, l, c) {\n\t\t\t\t\t\tvar f,\n\t\t\t\t\t\t p,\n\t\t\t\t\t\t d,\n\t\t\t\t\t\t h = [],\n\t\t\t\t\t\t m = 0,\n\t\t\t\t\t\t y = \"0\",\n\t\t\t\t\t\t v = i && [],\n\t\t\t\t\t\t b = null != c,\n\t\t\t\t\t\t x = j,\n\t\t\t\t\t\t T = i || o && C.find.TAG(\"*\", c && _s.parentNode || _s),\n\t\t\t\t\t\t w = $ += null == x ? 1 : Math.E;for (b && (j = _s !== L && _s, N = n); null != (f = T[y]); y++) {\n\t\t\t\t\t\t\tif (o && f) {\n\t\t\t\t\t\t\t\tfor (p = 0; d = e[p]; p++) {\n\t\t\t\t\t\t\t\t\tif (d(f, _s, u)) {\n\t\t\t\t\t\t\t\t\t\tl.push(f);break;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}b && ($ = w, N = ++n);\n\t\t\t\t\t\t\t}r && ((f = !d && f) && m--, i && v.push(f));\n\t\t\t\t\t\t}if (m += y, r && y !== m) {\n\t\t\t\t\t\t\tfor (p = 0; d = t[p]; p++) {\n\t\t\t\t\t\t\t\td(v, h, _s, u);\n\t\t\t\t\t\t\t}if (i) {\n\t\t\t\t\t\t\t\tif (m > 0) for (; y--;) {\n\t\t\t\t\t\t\t\t\tv[y] || h[y] || (h[y] = G.call(l));\n\t\t\t\t\t\t\t\t}h = g(h);\n\t\t\t\t\t\t\t}Q.apply(l, h), b && !i && h.length > 0 && m + t.length > 1 && a.uniqueSort(l);\n\t\t\t\t\t\t}return b && ($ = w, j = x), v;\n\t\t\t\t\t};return r ? i(s) : s;\n\t\t\t\t}function b(e, t, n) {\n\t\t\t\t\tfor (var r = 0, i = t.length; i > r; r++) {\n\t\t\t\t\t\ta(e, t[r], n);\n\t\t\t\t\t}return n;\n\t\t\t\t}function x(e, t, n, r) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t o,\n\t\t\t\t\t a,\n\t\t\t\t\t s,\n\t\t\t\t\t u,\n\t\t\t\t\t l = f(e);if (!r && 1 === l.length) {\n\t\t\t\t\t\tif (o = l[0] = l[0].slice(0), o.length > 2 && \"ID\" === (a = o[0]).type && 9 === t.nodeType && !M && C.relative[o[1].type]) {\n\t\t\t\t\t\t\tif (t = C.find.ID(a.matches[0].replace(xt, Tt), t)[0], !t) return n;e = e.slice(o.shift().value.length);\n\t\t\t\t\t\t}for (i = pt.needsContext.test(e) ? -1 : o.length - 1; i >= 0 && (a = o[i], !C.relative[s = a.type]); i--) {\n\t\t\t\t\t\t\tif ((u = C.find[s]) && (r = u(a.matches[0].replace(xt, Tt), dt.test(o[0].type) && t.parentNode || t))) {\n\t\t\t\t\t\t\t\tif (o.splice(i, 1), e = r.length && p(o), !e) return Q.apply(n, K.call(r, 0)), n;break;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}return S(e, l)(r, t, M, n, dt.test(e)), n;\n\t\t\t\t}function T() {}var w,\n\t\t\t\t N,\n\t\t\t\t C,\n\t\t\t\t k,\n\t\t\t\t E,\n\t\t\t\t S,\n\t\t\t\t A,\n\t\t\t\t j,\n\t\t\t\t D,\n\t\t\t\t L,\n\t\t\t\t H,\n\t\t\t\t M,\n\t\t\t\t q,\n\t\t\t\t _,\n\t\t\t\t F,\n\t\t\t\t O,\n\t\t\t\t B,\n\t\t\t\t P = \"sizzle\" + -new Date(),\n\t\t\t\t R = e.document,\n\t\t\t\t W = {},\n\t\t\t\t $ = 0,\n\t\t\t\t I = 0,\n\t\t\t\t z = r(),\n\t\t\t\t X = r(),\n\t\t\t\t U = r(),\n\t\t\t\t V = typeof t === \"undefined\" ? \"undefined\" : _typeof(t),\n\t\t\t\t Y = 1 << 31,\n\t\t\t\t J = [],\n\t\t\t\t G = J.pop,\n\t\t\t\t Q = J.push,\n\t\t\t\t K = J.slice,\n\t\t\t\t Z = J.indexOf || function (e) {\n\t\t\t\t\tfor (var t = 0, n = this.length; n > t; t++) {\n\t\t\t\t\t\tif (this[t] === e) return t;\n\t\t\t\t\t}return -1;\n\t\t\t\t},\n\t\t\t\t et = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t\t\t\t tt = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\t\t\t\t nt = tt.replace(\"w\", \"w#\"),\n\t\t\t\t rt = \"([*^$|!~]?=)\",\n\t\t\t\t it = \"\\\\[\" + et + \"*(\" + tt + \")\" + et + \"*(?:\" + rt + et + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + nt + \")|)|)\" + et + \"*\\\\]\",\n\t\t\t\t ot = \":(\" + tt + \")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + it.replace(3, 8) + \")*)|.*)\\\\)|)\",\n\t\t\t\t at = RegExp(\"^\" + et + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + et + \"+$\", \"g\"),\n\t\t\t\t ut = RegExp(\"^\" + et + \"*,\" + et + \"*\"),\n\t\t\t\t lt = RegExp(\"^\" + et + \"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\" + et + \"*\"),\n\t\t\t\t ct = RegExp(ot),\n\t\t\t\t ft = RegExp(\"^\" + nt + \"$\"),\n\t\t\t\t pt = { ID: RegExp(\"^#(\" + tt + \")\"), CLASS: RegExp(\"^\\\\.(\" + tt + \")\"), NAME: RegExp(\"^\\\\[name=['\\\"]?(\" + tt + \")['\\\"]?\\\\]\"), TAG: RegExp(\"^(\" + tt.replace(\"w\", \"w*\") + \")\"), ATTR: RegExp(\"^\" + it), PSEUDO: RegExp(\"^\" + ot), CHILD: RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + et + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + et + \"*(?:([+-]|)\" + et + \"*(\\\\d+)|))\" + et + \"*\\\\)|)\", \"i\"), needsContext: RegExp(\"^\" + et + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + et + \"*((?:-\\\\d)?\\\\d*)\" + et + \"*\\\\)|)(?=[^-]|$)\", \"i\") },\n\t\t\t\t dt = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\t\t\t\t ht = /\\{\\s*\\[native code\\]\\s*\\}/,\n\t\t\t\t gt = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\t\t\t\t mt = /^(?:input|select|textarea|button)$/i,\n\t\t\t\t yt = /^h\\d$/i,\n\t\t\t\t vt = /'|\\\\/g,\n\t\t\t\t bt = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\t\t\t\t xt = /\\\\([\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|.)/g,\n\t\t\t\t Tt = function Tt(e, t) {\n\t\t\t\t\tvar n = \"0x\" + t - 65536;return n !== n ? t : 0 > n ? String.fromCharCode(n + 65536) : String.fromCharCode(55296 | n >> 10, 56320 | 1023 & n);\n\t\t\t\t};try {\n\t\t\t\t\tK.call(H.childNodes, 0)[0].nodeType;\n\t\t\t\t} catch (wt) {\n\t\t\t\t\tK = function K(e) {\n\t\t\t\t\t\tfor (var t, n = []; t = this[e]; e++) {\n\t\t\t\t\t\t\tn.push(t);\n\t\t\t\t\t\t}return n;\n\t\t\t\t\t};\n\t\t\t\t}E = a.isXML = function (e) {\n\t\t\t\t\tvar t = e && (e.ownerDocument || e).documentElement;return t ? \"HTML\" !== t.nodeName : !1;\n\t\t\t\t}, D = a.setDocument = function (e) {\n\t\t\t\t\tvar r = e ? e.ownerDocument || e : R;return r !== L && 9 === r.nodeType && r.documentElement ? (L = r, H = r.documentElement, M = E(r), W.tagNameNoComments = o(function (e) {\n\t\t\t\t\t\treturn e.appendChild(r.createComment(\"\")), !e.getElementsByTagName(\"*\").length;\n\t\t\t\t\t}), W.attributes = o(function (e) {\n\t\t\t\t\t\te.innerHTML = \"\";var t = _typeof(e.lastChild.getAttribute(\"multiple\"));return \"boolean\" !== t && \"string\" !== t;\n\t\t\t\t\t}), W.getByClassName = o(function (e) {\n\t\t\t\t\t\treturn e.innerHTML = \"\", e.getElementsByClassName && e.getElementsByClassName(\"e\").length ? (e.lastChild.className = \"e\", 2 === e.getElementsByClassName(\"e\").length) : !1;\n\t\t\t\t\t}), W.getByName = o(function (e) {\n\t\t\t\t\t\te.id = P + 0, e.innerHTML = \"\", H.insertBefore(e, H.firstChild);var t = r.getElementsByName && r.getElementsByName(P).length === 2 + r.getElementsByName(P + 0).length;return W.getIdNotName = !r.getElementById(P), H.removeChild(e), t;\n\t\t\t\t\t}), C.attrHandle = o(function (e) {\n\t\t\t\t\t\treturn e.innerHTML = \"\", e.firstChild && _typeof(e.firstChild.getAttribute) !== V && \"#\" === e.firstChild.getAttribute(\"href\");\n\t\t\t\t\t}) ? {} : { href: function href(e) {\n\t\t\t\t\t\t\treturn e.getAttribute(\"href\", 2);\n\t\t\t\t\t\t}, type: function type(e) {\n\t\t\t\t\t\t\treturn e.getAttribute(\"type\");\n\t\t\t\t\t\t} }, W.getIdNotName ? (C.find.ID = function (e, t) {\n\t\t\t\t\t\tif (_typeof(t.getElementById) !== V && !M) {\n\t\t\t\t\t\t\tvar n = t.getElementById(e);return n && n.parentNode ? [n] : [];\n\t\t\t\t\t\t}\n\t\t\t\t\t}, C.filter.ID = function (e) {\n\t\t\t\t\t\tvar t = e.replace(xt, Tt);return function (e) {\n\t\t\t\t\t\t\treturn e.getAttribute(\"id\") === t;\n\t\t\t\t\t\t};\n\t\t\t\t\t}) : (C.find.ID = function (e, n) {\n\t\t\t\t\t\tif (_typeof(n.getElementById) !== V && !M) {\n\t\t\t\t\t\t\tvar r = n.getElementById(e);return r ? r.id === e || _typeof(r.getAttributeNode) !== V && r.getAttributeNode(\"id\").value === e ? [r] : t : [];\n\t\t\t\t\t\t}\n\t\t\t\t\t}, C.filter.ID = function (e) {\n\t\t\t\t\t\tvar t = e.replace(xt, Tt);return function (e) {\n\t\t\t\t\t\t\tvar n = _typeof(e.getAttributeNode) !== V && e.getAttributeNode(\"id\");return n && n.value === t;\n\t\t\t\t\t\t};\n\t\t\t\t\t}), C.find.TAG = W.tagNameNoComments ? function (e, n) {\n\t\t\t\t\t\treturn _typeof(n.getElementsByTagName) !== V ? n.getElementsByTagName(e) : t;\n\t\t\t\t\t} : function (e, t) {\n\t\t\t\t\t\tvar n,\n\t\t\t\t\t\t r = [],\n\t\t\t\t\t\t i = 0,\n\t\t\t\t\t\t o = t.getElementsByTagName(e);if (\"*\" === e) {\n\t\t\t\t\t\t\tfor (; n = o[i]; i++) {\n\t\t\t\t\t\t\t\t1 === n.nodeType && r.push(n);\n\t\t\t\t\t\t\t}return r;\n\t\t\t\t\t\t}return o;\n\t\t\t\t\t}, C.find.NAME = W.getByName && function (e, n) {\n\t\t\t\t\t\treturn _typeof(n.getElementsByName) !== V ? n.getElementsByName(name) : t;\n\t\t\t\t\t}, C.find.CLASS = W.getByClassName && function (e, n) {\n\t\t\t\t\t\treturn _typeof(n.getElementsByClassName) === V || M ? t : n.getElementsByClassName(e);\n\t\t\t\t\t}, _ = [], q = [\":focus\"], (W.qsa = n(r.querySelectorAll)) && (o(function (e) {\n\t\t\t\t\t\te.innerHTML = \"\", e.querySelectorAll(\"[selected]\").length || q.push(\"\\\\[\" + et + \"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\"), e.querySelectorAll(\":checked\").length || q.push(\":checked\");\n\t\t\t\t\t}), o(function (e) {\n\t\t\t\t\t\te.innerHTML = \"\", e.querySelectorAll(\"[i^='']\").length && q.push(\"[*^$]=\" + et + \"*(?:\\\"\\\"|'')\"), e.querySelectorAll(\":enabled\").length || q.push(\":enabled\", \":disabled\"), e.querySelectorAll(\"*,:x\"), q.push(\",.*:\");\n\t\t\t\t\t})), (W.matchesSelector = n(F = H.matchesSelector || H.mozMatchesSelector || H.webkitMatchesSelector || H.oMatchesSelector || H.msMatchesSelector)) && o(function (e) {\n\t\t\t\t\t\tW.disconnectedMatch = F.call(e, \"div\"), F.call(e, \"[s!='']:x\"), _.push(\"!=\", ot);\n\t\t\t\t\t}), q = RegExp(q.join(\"|\")), _ = RegExp(_.join(\"|\")), O = n(H.contains) || H.compareDocumentPosition ? function (e, t) {\n\t\t\t\t\t\tvar n = 9 === e.nodeType ? e.documentElement : e,\n\t\t\t\t\t\t r = t && t.parentNode;return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)));\n\t\t\t\t\t} : function (e, t) {\n\t\t\t\t\t\tif (t) for (; t = t.parentNode;) {\n\t\t\t\t\t\t\tif (t === e) return !0;\n\t\t\t\t\t\t}return !1;\n\t\t\t\t\t}, B = H.compareDocumentPosition ? function (e, t) {\n\t\t\t\t\t\tvar n;return e === t ? (A = !0, 0) : (n = t.compareDocumentPosition && e.compareDocumentPosition && e.compareDocumentPosition(t)) ? 1 & n || e.parentNode && 11 === e.parentNode.nodeType ? e === r || O(R, e) ? -1 : t === r || O(R, t) ? 1 : 0 : 4 & n ? -1 : 1 : e.compareDocumentPosition ? -1 : 1;\n\t\t\t\t\t} : function (e, t) {\n\t\t\t\t\t\tvar n,\n\t\t\t\t\t\t i = 0,\n\t\t\t\t\t\t o = e.parentNode,\n\t\t\t\t\t\t a = t.parentNode,\n\t\t\t\t\t\t u = [e],\n\t\t\t\t\t\t l = [t];if (e === t) return A = !0, 0;if (e.sourceIndex && t.sourceIndex) return (~t.sourceIndex || Y) - (O(R, e) && ~e.sourceIndex || Y);if (!o || !a) return e === r ? -1 : t === r ? 1 : o ? -1 : a ? 1 : 0;if (o === a) return s(e, t);for (n = e; n = n.parentNode;) {\n\t\t\t\t\t\t\tu.unshift(n);\n\t\t\t\t\t\t}for (n = t; n = n.parentNode;) {\n\t\t\t\t\t\t\tl.unshift(n);\n\t\t\t\t\t\t}for (; u[i] === l[i];) {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}return i ? s(u[i], l[i]) : u[i] === R ? -1 : l[i] === R ? 1 : 0;\n\t\t\t\t\t}, A = !1, [0, 0].sort(B), W.detectDuplicates = A, L) : L;\n\t\t\t\t}, a.matches = function (e, t) {\n\t\t\t\t\treturn a(e, null, null, t);\n\t\t\t\t}, a.matchesSelector = function (e, t) {\n\t\t\t\t\tif ((e.ownerDocument || e) !== L && D(e), t = t.replace(bt, \"='$1']\"), !(!W.matchesSelector || M || _ && _.test(t) || q.test(t))) try {\n\t\t\t\t\t\tvar n = F.call(e, t);if (n || W.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n;\n\t\t\t\t\t} catch (r) {}return a(t, L, null, [e]).length > 0;\n\t\t\t\t}, a.contains = function (e, t) {\n\t\t\t\t\treturn (e.ownerDocument || e) !== L && D(e), O(e, t);\n\t\t\t\t}, a.attr = function (e, t) {\n\t\t\t\t\tvar n;return (e.ownerDocument || e) !== L && D(e), M || (t = t.toLowerCase()), (n = C.attrHandle[t]) ? n(e) : M || W.attributes ? e.getAttribute(t) : ((n = e.getAttributeNode(t)) || e.getAttribute(t)) && e[t] === !0 ? t : n && n.specified ? n.value : null;\n\t\t\t\t}, a.error = function (e) {\n\t\t\t\t\tthrow Error(\"Syntax error, unrecognized expression: \" + e);\n\t\t\t\t}, a.uniqueSort = function (e) {\n\t\t\t\t\tvar t,\n\t\t\t\t\t n = [],\n\t\t\t\t\t r = 1,\n\t\t\t\t\t i = 0;if (A = !W.detectDuplicates, e.sort(B), A) {\n\t\t\t\t\t\tfor (; t = e[r]; r++) {\n\t\t\t\t\t\t\tt === e[r - 1] && (i = n.push(r));\n\t\t\t\t\t\t}for (; i--;) {\n\t\t\t\t\t\t\te.splice(n[i], 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}return e;\n\t\t\t\t}, k = a.getText = function (e) {\n\t\t\t\t\tvar t,\n\t\t\t\t\t n = \"\",\n\t\t\t\t\t r = 0,\n\t\t\t\t\t i = e.nodeType;if (i) {\n\t\t\t\t\t\tif (1 === i || 9 === i || 11 === i) {\n\t\t\t\t\t\t\tif (\"string\" == typeof e.textContent) return e.textContent;for (e = e.firstChild; e; e = e.nextSibling) {\n\t\t\t\t\t\t\t\tn += k(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (3 === i || 4 === i) return e.nodeValue;\n\t\t\t\t\t} else for (; t = e[r]; r++) {\n\t\t\t\t\t\tn += k(t);\n\t\t\t\t\t}return n;\n\t\t\t\t}, C = a.selectors = { cacheLength: 50, createPseudo: i, match: pt, find: {}, relative: { \">\": { dir: \"parentNode\", first: !0 }, \" \": { dir: \"parentNode\" }, \"+\": { dir: \"previousSibling\", first: !0 }, \"~\": { dir: \"previousSibling\" } }, preFilter: { ATTR: function ATTR(e) {\n\t\t\t\t\t\t\treturn e[1] = e[1].replace(xt, Tt), e[3] = (e[4] || e[5] || \"\").replace(xt, Tt), \"~=\" === e[2] && (e[3] = \" \" + e[3] + \" \"), e.slice(0, 4);\n\t\t\t\t\t\t}, CHILD: function CHILD(e) {\n\t\t\t\t\t\t\treturn e[1] = e[1].toLowerCase(), \"nth\" === e[1].slice(0, 3) ? (e[3] || a.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * (\"even\" === e[3] || \"odd\" === e[3])), e[5] = +(e[7] + e[8] || \"odd\" === e[3])) : e[3] && a.error(e[0]), e;\n\t\t\t\t\t\t}, PSEUDO: function PSEUDO(e) {\n\t\t\t\t\t\t\tvar t,\n\t\t\t\t\t\t\t n = !e[5] && e[2];return pt.CHILD.test(e[0]) ? null : (e[4] ? e[2] = e[4] : n && ct.test(n) && (t = f(n, !0)) && (t = n.indexOf(\")\", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3));\n\t\t\t\t\t\t} }, filter: { TAG: function TAG(e) {\n\t\t\t\t\t\t\treturn \"*\" === e ? function () {\n\t\t\t\t\t\t\t\treturn !0;\n\t\t\t\t\t\t\t} : (e = e.replace(xt, Tt).toLowerCase(), function (t) {\n\t\t\t\t\t\t\t\treturn t.nodeName && t.nodeName.toLowerCase() === e;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, CLASS: function CLASS(e) {\n\t\t\t\t\t\t\tvar t = z[e + \" \"];return t || (t = RegExp(\"(^|\" + et + \")\" + e + \"(\" + et + \"|$)\")) && z(e, function (e) {\n\t\t\t\t\t\t\t\treturn t.test(e.className || _typeof(e.getAttribute) !== V && e.getAttribute(\"class\") || \"\");\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, ATTR: function ATTR(e, t, n) {\n\t\t\t\t\t\t\treturn function (r) {\n\t\t\t\t\t\t\t\tvar i = a.attr(r, e);return null == i ? \"!=\" === t : t ? (i += \"\", \"=\" === t ? i === n : \"!=\" === t ? i !== n : \"^=\" === t ? n && 0 === i.indexOf(n) : \"*=\" === t ? n && i.indexOf(n) > -1 : \"$=\" === t ? n && i.substr(i.length - n.length) === n : \"~=\" === t ? (\" \" + i + \" \").indexOf(n) > -1 : \"|=\" === t ? i === n || i.substr(0, n.length + 1) === n + \"-\" : !1) : !0;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}, CHILD: function CHILD(e, t, n, r, i) {\n\t\t\t\t\t\t\tvar o = \"nth\" !== e.slice(0, 3),\n\t\t\t\t\t\t\t a = \"last\" !== e.slice(-4),\n\t\t\t\t\t\t\t s = \"of-type\" === t;return 1 === r && 0 === i ? function (e) {\n\t\t\t\t\t\t\t\treturn !!e.parentNode;\n\t\t\t\t\t\t\t} : function (t, n, u) {\n\t\t\t\t\t\t\t\tvar l,\n\t\t\t\t\t\t\t\t c,\n\t\t\t\t\t\t\t\t f,\n\t\t\t\t\t\t\t\t p,\n\t\t\t\t\t\t\t\t d,\n\t\t\t\t\t\t\t\t h,\n\t\t\t\t\t\t\t\t g = o !== a ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\t\t\t m = t.parentNode,\n\t\t\t\t\t\t\t\t y = s && t.nodeName.toLowerCase(),\n\t\t\t\t\t\t\t\t v = !u && !s;if (m) {\n\t\t\t\t\t\t\t\t\tif (o) {\n\t\t\t\t\t\t\t\t\t\tfor (; g;) {\n\t\t\t\t\t\t\t\t\t\t\tfor (f = t; f = f[g];) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (s ? f.nodeName.toLowerCase() === y : 1 === f.nodeType) return !1;\n\t\t\t\t\t\t\t\t\t\t\t}h = g = \"only\" === e && !h && \"nextSibling\";\n\t\t\t\t\t\t\t\t\t\t}return !0;\n\t\t\t\t\t\t\t\t\t}if (h = [a ? m.firstChild : m.lastChild], a && v) {\n\t\t\t\t\t\t\t\t\t\tfor (c = m[P] || (m[P] = {}), l = c[e] || [], d = l[0] === $ && l[1], p = l[0] === $ && l[2], f = d && m.childNodes[d]; f = ++d && f && f[g] || (p = d = 0) || h.pop();) {\n\t\t\t\t\t\t\t\t\t\t\tif (1 === f.nodeType && ++p && f === t) {\n\t\t\t\t\t\t\t\t\t\t\t\tc[e] = [$, d, p];break;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else if (v && (l = (t[P] || (t[P] = {}))[e]) && l[0] === $) p = l[1];else for (; (f = ++d && f && f[g] || (p = d = 0) || h.pop()) && ((s ? f.nodeName.toLowerCase() !== y : 1 !== f.nodeType) || !++p || (v && ((f[P] || (f[P] = {}))[e] = [$, p]), f !== t));) {}return p -= i, p === r || 0 === p % r && p / r >= 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}, PSEUDO: function PSEUDO(e, t) {\n\t\t\t\t\t\t\tvar n,\n\t\t\t\t\t\t\t r = C.pseudos[e] || C.setFilters[e.toLowerCase()] || a.error(\"unsupported pseudo: \" + e);return r[P] ? r(t) : r.length > 1 ? (n = [e, e, \"\", t], C.setFilters.hasOwnProperty(e.toLowerCase()) ? i(function (e, n) {\n\t\t\t\t\t\t\t\tfor (var i, o = r(e, t), a = o.length; a--;) {\n\t\t\t\t\t\t\t\t\ti = Z.call(e, o[a]), e[i] = !(n[i] = o[a]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}) : function (e) {\n\t\t\t\t\t\t\t\treturn r(e, 0, n);\n\t\t\t\t\t\t\t}) : r;\n\t\t\t\t\t\t} }, pseudos: { not: i(function (e) {\n\t\t\t\t\t\t\tvar t = [],\n\t\t\t\t\t\t\t n = [],\n\t\t\t\t\t\t\t r = S(e.replace(at, \"$1\"));return r[P] ? i(function (e, t, n, i) {\n\t\t\t\t\t\t\t\tfor (var o, a = r(e, null, i, []), s = e.length; s--;) {\n\t\t\t\t\t\t\t\t\t(o = a[s]) && (e[s] = !(t[s] = o));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}) : function (e, i, o) {\n\t\t\t\t\t\t\t\treturn t[0] = e, r(t, null, o, n), !n.pop();\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}), has: i(function (e) {\n\t\t\t\t\t\t\treturn function (t) {\n\t\t\t\t\t\t\t\treturn a(e, t).length > 0;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}), contains: i(function (e) {\n\t\t\t\t\t\t\treturn function (t) {\n\t\t\t\t\t\t\t\treturn (t.textContent || t.innerText || k(t)).indexOf(e) > -1;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}), lang: i(function (e) {\n\t\t\t\t\t\t\treturn ft.test(e || \"\") || a.error(\"unsupported lang: \" + e), e = e.replace(xt, Tt).toLowerCase(), function (t) {\n\t\t\t\t\t\t\t\tvar n;do {\n\t\t\t\t\t\t\t\t\tif (n = M ? t.getAttribute(\"xml:lang\") || t.getAttribute(\"lang\") : t.lang) return n = n.toLowerCase(), n === e || 0 === n.indexOf(e + \"-\");\n\t\t\t\t\t\t\t\t} while ((t = t.parentNode) && 1 === t.nodeType);return !1;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}), target: function target(t) {\n\t\t\t\t\t\t\tvar n = e.location && e.location.hash;return n && n.slice(1) === t.id;\n\t\t\t\t\t\t}, root: function root(e) {\n\t\t\t\t\t\t\treturn e === H;\n\t\t\t\t\t\t}, focus: function focus(e) {\n\t\t\t\t\t\t\treturn e === L.activeElement && (!L.hasFocus || L.hasFocus()) && !!(e.type || e.href || ~e.tabIndex);\n\t\t\t\t\t\t}, enabled: function enabled(e) {\n\t\t\t\t\t\t\treturn e.disabled === !1;\n\t\t\t\t\t\t}, disabled: function disabled(e) {\n\t\t\t\t\t\t\treturn e.disabled === !0;\n\t\t\t\t\t\t}, checked: function checked(e) {\n\t\t\t\t\t\t\tvar t = e.nodeName.toLowerCase();return \"input\" === t && !!e.checked || \"option\" === t && !!e.selected;\n\t\t\t\t\t\t}, selected: function selected(e) {\n\t\t\t\t\t\t\treturn e.parentNode && e.parentNode.selectedIndex, e.selected === !0;\n\t\t\t\t\t\t}, empty: function empty(e) {\n\t\t\t\t\t\t\tfor (e = e.firstChild; e; e = e.nextSibling) {\n\t\t\t\t\t\t\t\tif (e.nodeName > \"@\" || 3 === e.nodeType || 4 === e.nodeType) return !1;\n\t\t\t\t\t\t\t}return !0;\n\t\t\t\t\t\t}, parent: function parent(e) {\n\t\t\t\t\t\t\treturn !C.pseudos.empty(e);\n\t\t\t\t\t\t}, header: function header(e) {\n\t\t\t\t\t\t\treturn yt.test(e.nodeName);\n\t\t\t\t\t\t}, input: function input(e) {\n\t\t\t\t\t\t\treturn mt.test(e.nodeName);\n\t\t\t\t\t\t}, button: function button(e) {\n\t\t\t\t\t\t\tvar t = e.nodeName.toLowerCase();return \"input\" === t && \"button\" === e.type || \"button\" === t;\n\t\t\t\t\t\t}, text: function text(e) {\n\t\t\t\t\t\t\tvar t;return \"input\" === e.nodeName.toLowerCase() && \"text\" === e.type && (null == (t = e.getAttribute(\"type\")) || t.toLowerCase() === e.type);\n\t\t\t\t\t\t}, first: c(function () {\n\t\t\t\t\t\t\treturn [0];\n\t\t\t\t\t\t}), last: c(function (e, t) {\n\t\t\t\t\t\t\treturn [t - 1];\n\t\t\t\t\t\t}), eq: c(function (e, t, n) {\n\t\t\t\t\t\t\treturn [0 > n ? n + t : n];\n\t\t\t\t\t\t}), even: c(function (e, t) {\n\t\t\t\t\t\t\tfor (var n = 0; t > n; n += 2) {\n\t\t\t\t\t\t\t\te.push(n);\n\t\t\t\t\t\t\t}return e;\n\t\t\t\t\t\t}), odd: c(function (e, t) {\n\t\t\t\t\t\t\tfor (var n = 1; t > n; n += 2) {\n\t\t\t\t\t\t\t\te.push(n);\n\t\t\t\t\t\t\t}return e;\n\t\t\t\t\t\t}), lt: c(function (e, t, n) {\n\t\t\t\t\t\t\tfor (var r = 0 > n ? n + t : n; --r >= 0;) {\n\t\t\t\t\t\t\t\te.push(r);\n\t\t\t\t\t\t\t}return e;\n\t\t\t\t\t\t}), gt: c(function (e, t, n) {\n\t\t\t\t\t\t\tfor (var r = 0 > n ? n + t : n; t > ++r;) {\n\t\t\t\t\t\t\t\te.push(r);\n\t\t\t\t\t\t\t}return e;\n\t\t\t\t\t\t}) } };for (w in { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) {\n\t\t\t\t\tC.pseudos[w] = u(w);\n\t\t\t\t}for (w in { submit: !0, reset: !0 }) {\n\t\t\t\t\tC.pseudos[w] = l(w);\n\t\t\t\t}S = a.compile = function (e, t) {\n\t\t\t\t\tvar n,\n\t\t\t\t\t r = [],\n\t\t\t\t\t i = [],\n\t\t\t\t\t o = U[e + \" \"];if (!o) {\n\t\t\t\t\t\tfor (t || (t = f(e)), n = t.length; n--;) {\n\t\t\t\t\t\t\to = y(t[n]), o[P] ? r.push(o) : i.push(o);\n\t\t\t\t\t\t}o = U(e, v(i, r));\n\t\t\t\t\t}return o;\n\t\t\t\t}, C.pseudos.nth = C.pseudos.eq, C.filters = T.prototype = C.pseudos, C.setFilters = new T(), D(), a.attr = st.attr, st.find = a, st.expr = a.selectors, st.expr[\":\"] = st.expr.pseudos, st.unique = a.uniqueSort, st.text = a.getText, st.isXMLDoc = a.isXML, st.contains = a.contains;\n\t\t\t}(e);var Pt = /Until$/,\n\t\t\t Rt = /^(?:parents|prev(?:Until|All))/,\n\t\t\t Wt = /^.[^:#\\[\\.,]*$/,\n\t\t\t $t = st.expr.match.needsContext,\n\t\t\t It = { children: !0, contents: !0, next: !0, prev: !0 };st.fn.extend({ find: function find(e) {\n\t\t\t\t\tvar t, n, r;if (\"string\" != typeof e) return r = this, this.pushStack(st(e).filter(function () {\n\t\t\t\t\t\tfor (t = 0; r.length > t; t++) {\n\t\t\t\t\t\t\tif (st.contains(r[t], this)) return !0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}));for (n = [], t = 0; this.length > t; t++) {\n\t\t\t\t\t\tst.find(e, this[t], n);\n\t\t\t\t\t}return n = this.pushStack(st.unique(n)), n.selector = (this.selector ? this.selector + \" \" : \"\") + e, n;\n\t\t\t\t}, has: function has(e) {\n\t\t\t\t\tvar t,\n\t\t\t\t\t n = st(e, this),\n\t\t\t\t\t r = n.length;return this.filter(function () {\n\t\t\t\t\t\tfor (t = 0; r > t; t++) {\n\t\t\t\t\t\t\tif (st.contains(this, n[t])) return !0;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}, not: function not(e) {\n\t\t\t\t\treturn this.pushStack(f(this, e, !1));\n\t\t\t\t}, filter: function filter(e) {\n\t\t\t\t\treturn this.pushStack(f(this, e, !0));\n\t\t\t\t}, is: function is(e) {\n\t\t\t\t\treturn !!e && (\"string\" == typeof e ? $t.test(e) ? st(e, this.context).index(this[0]) >= 0 : st.filter(e, this).length > 0 : this.filter(e).length > 0);\n\t\t\t\t}, closest: function closest(e, t) {\n\t\t\t\t\tfor (var n, r = 0, i = this.length, o = [], a = $t.test(e) || \"string\" != typeof e ? st(e, t || this.context) : 0; i > r; r++) {\n\t\t\t\t\t\tfor (n = this[r]; n && n.ownerDocument && n !== t && 11 !== n.nodeType;) {\n\t\t\t\t\t\t\tif (a ? a.index(n) > -1 : st.find.matchesSelector(n, e)) {\n\t\t\t\t\t\t\t\to.push(n);break;\n\t\t\t\t\t\t\t}n = n.parentNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}return this.pushStack(o.length > 1 ? st.unique(o) : o);\n\t\t\t\t}, index: function index(e) {\n\t\t\t\t\treturn e ? \"string\" == typeof e ? st.inArray(this[0], st(e)) : st.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n\t\t\t\t}, add: function add(e, t) {\n\t\t\t\t\tvar n = \"string\" == typeof e ? st(e, t) : st.makeArray(e && e.nodeType ? [e] : e),\n\t\t\t\t\t r = st.merge(this.get(), n);return this.pushStack(st.unique(r));\n\t\t\t\t}, addBack: function addBack(e) {\n\t\t\t\t\treturn this.add(null == e ? this.prevObject : this.prevObject.filter(e));\n\t\t\t\t} }), st.fn.andSelf = st.fn.addBack, st.each({ parent: function parent(e) {\n\t\t\t\t\tvar t = e.parentNode;return t && 11 !== t.nodeType ? t : null;\n\t\t\t\t}, parents: function parents(e) {\n\t\t\t\t\treturn st.dir(e, \"parentNode\");\n\t\t\t\t}, parentsUntil: function parentsUntil(e, t, n) {\n\t\t\t\t\treturn st.dir(e, \"parentNode\", n);\n\t\t\t\t}, next: function next(e) {\n\t\t\t\t\treturn c(e, \"nextSibling\");\n\t\t\t\t}, prev: function prev(e) {\n\t\t\t\t\treturn c(e, \"previousSibling\");\n\t\t\t\t}, nextAll: function nextAll(e) {\n\t\t\t\t\treturn st.dir(e, \"nextSibling\");\n\t\t\t\t}, prevAll: function prevAll(e) {\n\t\t\t\t\treturn st.dir(e, \"previousSibling\");\n\t\t\t\t}, nextUntil: function nextUntil(e, t, n) {\n\t\t\t\t\treturn st.dir(e, \"nextSibling\", n);\n\t\t\t\t}, prevUntil: function prevUntil(e, t, n) {\n\t\t\t\t\treturn st.dir(e, \"previousSibling\", n);\n\t\t\t\t}, siblings: function siblings(e) {\n\t\t\t\t\treturn st.sibling((e.parentNode || {}).firstChild, e);\n\t\t\t\t}, children: function children(e) {\n\t\t\t\t\treturn st.sibling(e.firstChild);\n\t\t\t\t}, contents: function contents(e) {\n\t\t\t\t\treturn st.nodeName(e, \"iframe\") ? e.contentDocument || e.contentWindow.document : st.merge([], e.childNodes);\n\t\t\t\t} }, function (e, t) {\n\t\t\t\tst.fn[e] = function (n, r) {\n\t\t\t\t\tvar i = st.map(this, t, n);return Pt.test(e) || (r = n), r && \"string\" == typeof r && (i = st.filter(r, i)), i = this.length > 1 && !It[e] ? st.unique(i) : i, this.length > 1 && Rt.test(e) && (i = i.reverse()), this.pushStack(i);\n\t\t\t\t};\n\t\t\t}), st.extend({ filter: function filter(e, t, n) {\n\t\t\t\t\treturn n && (e = \":not(\" + e + \")\"), 1 === t.length ? st.find.matchesSelector(t[0], e) ? [t[0]] : [] : st.find.matches(e, t);\n\t\t\t\t}, dir: function dir(e, n, r) {\n\t\t\t\t\tfor (var i = [], o = e[n]; o && 9 !== o.nodeType && (r === t || 1 !== o.nodeType || !st(o).is(r));) {\n\t\t\t\t\t\t1 === o.nodeType && i.push(o), o = o[n];\n\t\t\t\t\t}return i;\n\t\t\t\t}, sibling: function sibling(e, t) {\n\t\t\t\t\tfor (var n = []; e; e = e.nextSibling) {\n\t\t\t\t\t\t1 === e.nodeType && e !== t && n.push(e);\n\t\t\t\t\t}return n;\n\t\t\t\t} });var zt = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\t\t\t Xt = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\t\t\t Ut = RegExp(\"<(?:\" + zt + \")[\\\\s/>]\", \"i\"),\n\t\t\t Vt = /^\\s+/,\n\t\t\t Yt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\t\t\t Jt = /<([\\w:]+)/,\n\t\t\t Gt = /\\s*$/g,\n\t\t\t on = { option: [1, \"\"], legend: [1, \"\"], area: [1, \"\"], param: [1, \"\"], thead: [1, \"\"], tr: [2, \"\"], col: [2, \"\"], td: [3, \"\"], _default: st.support.htmlSerialize ? [0, \"\", \"\"] : [1, \"X\", \"
\"] },\n\t\t\t an = p(V),\n\t\t\t sn = an.appendChild(V.createElement(\"div\"));on.optgroup = on.option, on.tbody = on.tfoot = on.colgroup = on.caption = on.thead, on.th = on.td, st.fn.extend({ text: function text(e) {\n\t\t\t\t\treturn st.access(this, function (e) {\n\t\t\t\t\t\treturn e === t ? st.text(this) : this.empty().append((this[0] && this[0].ownerDocument || V).createTextNode(e));\n\t\t\t\t\t}, null, e, arguments.length);\n\t\t\t\t}, wrapAll: function wrapAll(e) {\n\t\t\t\t\tif (st.isFunction(e)) return this.each(function (t) {\n\t\t\t\t\t\tst(this).wrapAll(e.call(this, t));\n\t\t\t\t\t});if (this[0]) {\n\t\t\t\t\t\tvar t = st(e, this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode && t.insertBefore(this[0]), t.map(function () {\n\t\t\t\t\t\t\tfor (var e = this; e.firstChild && 1 === e.firstChild.nodeType;) {\n\t\t\t\t\t\t\t\te = e.firstChild;\n\t\t\t\t\t\t\t}return e;\n\t\t\t\t\t\t}).append(this);\n\t\t\t\t\t}return this;\n\t\t\t\t}, wrapInner: function wrapInner(e) {\n\t\t\t\t\treturn st.isFunction(e) ? this.each(function (t) {\n\t\t\t\t\t\tst(this).wrapInner(e.call(this, t));\n\t\t\t\t\t}) : this.each(function () {\n\t\t\t\t\t\tvar t = st(this),\n\t\t\t\t\t\t n = t.contents();n.length ? n.wrapAll(e) : t.append(e);\n\t\t\t\t\t});\n\t\t\t\t}, wrap: function wrap(e) {\n\t\t\t\t\tvar t = st.isFunction(e);return this.each(function (n) {\n\t\t\t\t\t\tst(this).wrapAll(t ? e.call(this, n) : e);\n\t\t\t\t\t});\n\t\t\t\t}, unwrap: function unwrap() {\n\t\t\t\t\treturn this.parent().each(function () {\n\t\t\t\t\t\tst.nodeName(this, \"body\") || st(this).replaceWith(this.childNodes);\n\t\t\t\t\t}).end();\n\t\t\t\t}, append: function append() {\n\t\t\t\t\treturn this.domManip(arguments, !0, function (e) {\n\t\t\t\t\t\t(1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.appendChild(e);\n\t\t\t\t\t});\n\t\t\t\t}, prepend: function prepend() {\n\t\t\t\t\treturn this.domManip(arguments, !0, function (e) {\n\t\t\t\t\t\t(1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.insertBefore(e, this.firstChild);\n\t\t\t\t\t});\n\t\t\t\t}, before: function before() {\n\t\t\t\t\treturn this.domManip(arguments, !1, function (e) {\n\t\t\t\t\t\tthis.parentNode && this.parentNode.insertBefore(e, this);\n\t\t\t\t\t});\n\t\t\t\t}, after: function after() {\n\t\t\t\t\treturn this.domManip(arguments, !1, function (e) {\n\t\t\t\t\t\tthis.parentNode && this.parentNode.insertBefore(e, this.nextSibling);\n\t\t\t\t\t});\n\t\t\t\t}, remove: function remove(e, t) {\n\t\t\t\t\tfor (var n, r = 0; null != (n = this[r]); r++) {\n\t\t\t\t\t\t(!e || st.filter(e, [n]).length > 0) && (t || 1 !== n.nodeType || st.cleanData(b(n)), n.parentNode && (t && st.contains(n.ownerDocument, n) && m(b(n, \"script\")), n.parentNode.removeChild(n)));\n\t\t\t\t\t}return this;\n\t\t\t\t}, empty: function empty() {\n\t\t\t\t\tfor (var e, t = 0; null != (e = this[t]); t++) {\n\t\t\t\t\t\tfor (1 === e.nodeType && st.cleanData(b(e, !1)); e.firstChild;) {\n\t\t\t\t\t\t\te.removeChild(e.firstChild);\n\t\t\t\t\t\t}e.options && st.nodeName(e, \"select\") && (e.options.length = 0);\n\t\t\t\t\t}return this;\n\t\t\t\t}, clone: function clone(e, t) {\n\t\t\t\t\treturn e = null == e ? !1 : e, t = null == t ? e : t, this.map(function () {\n\t\t\t\t\t\treturn st.clone(this, e, t);\n\t\t\t\t\t});\n\t\t\t\t}, html: function html(e) {\n\t\t\t\t\treturn st.access(this, function (e) {\n\t\t\t\t\t\tvar n = this[0] || {},\n\t\t\t\t\t\t r = 0,\n\t\t\t\t\t\t i = this.length;if (e === t) return 1 === n.nodeType ? n.innerHTML.replace(Xt, \"\") : t;if (!(\"string\" != typeof e || Kt.test(e) || !st.support.htmlSerialize && Ut.test(e) || !st.support.leadingWhitespace && Vt.test(e) || on[(Jt.exec(e) || [\"\", \"\"])[1].toLowerCase()])) {\n\t\t\t\t\t\t\te = e.replace(Yt, \"<$1>$2>\");try {\n\t\t\t\t\t\t\t\tfor (; i > r; r++) {\n\t\t\t\t\t\t\t\t\tn = this[r] || {}, 1 === n.nodeType && (st.cleanData(b(n, !1)), n.innerHTML = e);\n\t\t\t\t\t\t\t\t}n = 0;\n\t\t\t\t\t\t\t} catch (o) {}\n\t\t\t\t\t\t}n && this.empty().append(e);\n\t\t\t\t\t}, null, e, arguments.length);\n\t\t\t\t}, replaceWith: function replaceWith(e) {\n\t\t\t\t\tvar t = st.isFunction(e);return t || \"string\" == typeof e || (e = st(e).not(this).detach()), this.domManip([e], !0, function (e) {\n\t\t\t\t\t\tvar t = this.nextSibling,\n\t\t\t\t\t\t n = this.parentNode;(n && 1 === this.nodeType || 11 === this.nodeType) && (st(this).remove(), t ? t.parentNode.insertBefore(e, t) : n.appendChild(e));\n\t\t\t\t\t});\n\t\t\t\t}, detach: function detach(e) {\n\t\t\t\t\treturn this.remove(e, !0);\n\t\t\t\t}, domManip: function domManip(e, n, r) {\n\t\t\t\t\te = et.apply([], e);var i,\n\t\t\t\t\t o,\n\t\t\t\t\t a,\n\t\t\t\t\t s,\n\t\t\t\t\t u,\n\t\t\t\t\t l,\n\t\t\t\t\t c = 0,\n\t\t\t\t\t f = this.length,\n\t\t\t\t\t p = this,\n\t\t\t\t\t m = f - 1,\n\t\t\t\t\t y = e[0],\n\t\t\t\t\t v = st.isFunction(y);if (v || !(1 >= f || \"string\" != typeof y || st.support.checkClone) && en.test(y)) return this.each(function (i) {\n\t\t\t\t\t\tvar o = p.eq(i);v && (e[0] = y.call(this, i, n ? o.html() : t)), o.domManip(e, n, r);\n\t\t\t\t\t});if (f && (i = st.buildFragment(e, this[0].ownerDocument, !1, this), o = i.firstChild, 1 === i.childNodes.length && (i = o), o)) {\n\t\t\t\t\t\tfor (n = n && st.nodeName(o, \"tr\"), a = st.map(b(i, \"script\"), h), s = a.length; f > c; c++) {\n\t\t\t\t\t\t\tu = i, c !== m && (u = st.clone(u, !0, !0), s && st.merge(a, b(u, \"script\"))), r.call(n && st.nodeName(this[c], \"table\") ? d(this[c], \"tbody\") : this[c], u, c);\n\t\t\t\t\t\t}if (s) for (l = a[a.length - 1].ownerDocument, st.map(a, g), c = 0; s > c; c++) {\n\t\t\t\t\t\t\tu = a[c], tn.test(u.type || \"\") && !st._data(u, \"globalEval\") && st.contains(l, u) && (u.src ? st.ajax({ url: u.src, type: \"GET\", dataType: \"script\", async: !1, global: !1, \"throws\": !0 }) : st.globalEval((u.text || u.textContent || u.innerHTML || \"\").replace(rn, \"\")));\n\t\t\t\t\t\t}i = o = null;\n\t\t\t\t\t}return this;\n\t\t\t\t} }), st.each({ appendTo: \"append\", prependTo: \"prepend\", insertBefore: \"before\", insertAfter: \"after\", replaceAll: \"replaceWith\" }, function (e, t) {\n\t\t\t\tst.fn[e] = function (e) {\n\t\t\t\t\tfor (var n, r = 0, i = [], o = st(e), a = o.length - 1; a >= r; r++) {\n\t\t\t\t\t\tn = r === a ? this : this.clone(!0), st(o[r])[t](n), tt.apply(i, n.get());\n\t\t\t\t\t}return this.pushStack(i);\n\t\t\t\t};\n\t\t\t}), st.extend({ clone: function clone(e, t, n) {\n\t\t\t\t\tvar r,\n\t\t\t\t\t i,\n\t\t\t\t\t o,\n\t\t\t\t\t a,\n\t\t\t\t\t s,\n\t\t\t\t\t u = st.contains(e.ownerDocument, e);if (st.support.html5Clone || st.isXMLDoc(e) || !Ut.test(\"<\" + e.nodeName + \">\") ? s = e.cloneNode(!0) : (sn.innerHTML = e.outerHTML, sn.removeChild(s = sn.firstChild)), !(st.support.noCloneEvent && st.support.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || st.isXMLDoc(e))) for (r = b(s), i = b(e), a = 0; null != (o = i[a]); ++a) {\n\t\t\t\t\t\tr[a] && v(o, r[a]);\n\t\t\t\t\t}if (t) if (n) for (i = i || b(e), r = r || b(s), a = 0; null != (o = i[a]); a++) {\n\t\t\t\t\t\ty(o, r[a]);\n\t\t\t\t\t} else y(e, s);return r = b(s, \"script\"), r.length > 0 && m(r, !u && b(e, \"script\")), r = i = o = null, s;\n\t\t\t\t}, buildFragment: function buildFragment(e, t, n, r) {\n\t\t\t\t\tfor (var i, o, a, s, u, l, c, f = e.length, d = p(t), h = [], g = 0; f > g; g++) {\n\t\t\t\t\t\tif (o = e[g], o || 0 === o) if (\"object\" === st.type(o)) st.merge(h, o.nodeType ? [o] : o);else if (Qt.test(o)) {\n\t\t\t\t\t\t\tfor (s = s || d.appendChild(t.createElement(\"div\")), a = (Jt.exec(o) || [\"\", \"\"])[1].toLowerCase(), u = on[a] || on._default, s.innerHTML = u[1] + o.replace(Yt, \"<$1>$2>\") + u[2], c = u[0]; c--;) {\n\t\t\t\t\t\t\t\ts = s.lastChild;\n\t\t\t\t\t\t\t}if (!st.support.leadingWhitespace && Vt.test(o) && h.push(t.createTextNode(Vt.exec(o)[0])), !st.support.tbody) for (o = \"table\" !== a || Gt.test(o) ? \"\" !== u[1] || Gt.test(o) ? 0 : s : s.firstChild, c = o && o.childNodes.length; c--;) {\n\t\t\t\t\t\t\t\tst.nodeName(l = o.childNodes[c], \"tbody\") && !l.childNodes.length && o.removeChild(l);\n\t\t\t\t\t\t\t}for (st.merge(h, s.childNodes), s.textContent = \"\"; s.firstChild;) {\n\t\t\t\t\t\t\t\ts.removeChild(s.firstChild);\n\t\t\t\t\t\t\t}s = d.lastChild;\n\t\t\t\t\t\t} else h.push(t.createTextNode(o));\n\t\t\t\t\t}for (s && d.removeChild(s), st.support.appendChecked || st.grep(b(h, \"input\"), x), g = 0; o = h[g++];) {\n\t\t\t\t\t\tif ((!r || -1 === st.inArray(o, r)) && (i = st.contains(o.ownerDocument, o), s = b(d.appendChild(o), \"script\"), i && m(s), n)) for (c = 0; o = s[c++];) {\n\t\t\t\t\t\t\ttn.test(o.type || \"\") && n.push(o);\n\t\t\t\t\t\t}\n\t\t\t\t\t}return s = null, d;\n\t\t\t\t}, cleanData: function cleanData(e, n) {\n\t\t\t\t\tfor (var r, i, o, a, s = 0, u = st.expando, l = st.cache, c = st.support.deleteExpando, f = st.event.special; null != (o = e[s]); s++) {\n\t\t\t\t\t\tif ((n || st.acceptData(o)) && (i = o[u], r = i && l[i])) {\n\t\t\t\t\t\t\tif (r.events) for (a in r.events) {\n\t\t\t\t\t\t\t\tf[a] ? st.event.remove(o, a) : st.removeEvent(o, a, r.handle);\n\t\t\t\t\t\t\t}l[i] && (delete l[i], c ? delete o[u] : o.removeAttribute !== t ? o.removeAttribute(u) : o[u] = null, K.push(i));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} });var un,\n\t\t\t ln,\n\t\t\t cn,\n\t\t\t fn = /alpha\\([^)]*\\)/i,\n\t\t\t pn = /opacity\\s*=\\s*([^)]*)/,\n\t\t\t dn = /^(top|right|bottom|left)$/,\n\t\t\t hn = /^(none|table(?!-c[ea]).+)/,\n\t\t\t gn = /^margin/,\n\t\t\t mn = RegExp(\"^(\" + ut + \")(.*)$\", \"i\"),\n\t\t\t yn = RegExp(\"^(\" + ut + \")(?!px)[a-z%]+$\", \"i\"),\n\t\t\t vn = RegExp(\"^([+-])=(\" + ut + \")\", \"i\"),\n\t\t\t bn = { BODY: \"block\" },\n\t\t\t xn = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\t\t\t Tn = { letterSpacing: 0, fontWeight: 400 },\n\t\t\t wn = [\"Top\", \"Right\", \"Bottom\", \"Left\"],\n\t\t\t Nn = [\"Webkit\", \"O\", \"Moz\", \"ms\"];st.fn.extend({ css: function css(e, n) {\n\t\t\t\t\treturn st.access(this, function (e, n, r) {\n\t\t\t\t\t\tvar i,\n\t\t\t\t\t\t o,\n\t\t\t\t\t\t a = {},\n\t\t\t\t\t\t s = 0;if (st.isArray(n)) {\n\t\t\t\t\t\t\tfor (i = ln(e), o = n.length; o > s; s++) {\n\t\t\t\t\t\t\t\ta[n[s]] = st.css(e, n[s], !1, i);\n\t\t\t\t\t\t\t}return a;\n\t\t\t\t\t\t}return r !== t ? st.style(e, n, r) : st.css(e, n);\n\t\t\t\t\t}, e, n, arguments.length > 1);\n\t\t\t\t}, show: function show() {\n\t\t\t\t\treturn N(this, !0);\n\t\t\t\t}, hide: function hide() {\n\t\t\t\t\treturn N(this);\n\t\t\t\t}, toggle: function toggle(e) {\n\t\t\t\t\tvar t = \"boolean\" == typeof e;return this.each(function () {\n\t\t\t\t\t\t(t ? e : w(this)) ? st(this).show() : st(this).hide();\n\t\t\t\t\t});\n\t\t\t\t} }), st.extend({ cssHooks: { opacity: { get: function get(e, t) {\n\t\t\t\t\t\t\tif (t) {\n\t\t\t\t\t\t\t\tvar n = un(e, \"opacity\");return \"\" === n ? \"1\" : n;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} } }, cssNumber: { columnCount: !0, fillOpacity: !0, fontWeight: !0, lineHeight: !0, opacity: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0 }, cssProps: { \"float\": st.support.cssFloat ? \"cssFloat\" : \"styleFloat\" }, style: function style(e, n, r, i) {\n\t\t\t\t\tif (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {\n\t\t\t\t\t\tvar o,\n\t\t\t\t\t\t a,\n\t\t\t\t\t\t s,\n\t\t\t\t\t\t u = st.camelCase(n),\n\t\t\t\t\t\t l = e.style;if (n = st.cssProps[u] || (st.cssProps[u] = T(l, u)), s = st.cssHooks[n] || st.cssHooks[u], r === t) return s && \"get\" in s && (o = s.get(e, !1, i)) !== t ? o : l[n];if (a = typeof r === \"undefined\" ? \"undefined\" : _typeof(r), \"string\" === a && (o = vn.exec(r)) && (r = (o[1] + 1) * o[2] + parseFloat(st.css(e, n)), a = \"number\"), !(null == r || \"number\" === a && isNaN(r) || (\"number\" !== a || st.cssNumber[u] || (r += \"px\"), st.support.clearCloneStyle || \"\" !== r || 0 !== n.indexOf(\"background\") || (l[n] = \"inherit\"), s && \"set\" in s && (r = s.set(e, r, i)) === t))) try {\n\t\t\t\t\t\t\tl[n] = r;\n\t\t\t\t\t\t} catch (c) {}\n\t\t\t\t\t}\n\t\t\t\t}, css: function css(e, n, r, i) {\n\t\t\t\t\tvar o,\n\t\t\t\t\t a,\n\t\t\t\t\t s,\n\t\t\t\t\t u = st.camelCase(n);return n = st.cssProps[u] || (st.cssProps[u] = T(e.style, u)), s = st.cssHooks[n] || st.cssHooks[u], s && \"get\" in s && (o = s.get(e, !0, r)), o === t && (o = un(e, n, i)), \"normal\" === o && n in Tn && (o = Tn[n]), r ? (a = parseFloat(o), r === !0 || st.isNumeric(a) ? a || 0 : o) : o;\n\t\t\t\t}, swap: function swap(e, t, n, r) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t o,\n\t\t\t\t\t a = {};for (o in t) {\n\t\t\t\t\t\ta[o] = e.style[o], e.style[o] = t[o];\n\t\t\t\t\t}i = n.apply(e, r || []);for (o in t) {\n\t\t\t\t\t\te.style[o] = a[o];\n\t\t\t\t\t}return i;\n\t\t\t\t} }), e.getComputedStyle ? (ln = function ln(t) {\n\t\t\t\treturn e.getComputedStyle(t, null);\n\t\t\t}, un = function un(e, n, r) {\n\t\t\t\tvar i,\n\t\t\t\t o,\n\t\t\t\t a,\n\t\t\t\t s = r || ln(e),\n\t\t\t\t u = s ? s.getPropertyValue(n) || s[n] : t,\n\t\t\t\t l = e.style;return s && (\"\" !== u || st.contains(e.ownerDocument, e) || (u = st.style(e, n)), yn.test(u) && gn.test(n) && (i = l.width, o = l.minWidth, a = l.maxWidth, l.minWidth = l.maxWidth = l.width = u, u = s.width, l.width = i, l.minWidth = o, l.maxWidth = a)), u;\n\t\t\t}) : V.documentElement.currentStyle && (ln = function ln(e) {\n\t\t\t\treturn e.currentStyle;\n\t\t\t}, un = function un(e, n, r) {\n\t\t\t\tvar i,\n\t\t\t\t o,\n\t\t\t\t a,\n\t\t\t\t s = r || ln(e),\n\t\t\t\t u = s ? s[n] : t,\n\t\t\t\t l = e.style;return null == u && l && l[n] && (u = l[n]), yn.test(u) && !dn.test(n) && (i = l.left, o = e.runtimeStyle, a = o && o.left, a && (o.left = e.currentStyle.left), l.left = \"fontSize\" === n ? \"1em\" : u, u = l.pixelLeft + \"px\", l.left = i, a && (o.left = a)), \"\" === u ? \"auto\" : u;\n\t\t\t}), st.each([\"height\", \"width\"], function (e, n) {\n\t\t\t\tst.cssHooks[n] = { get: function get(e, r, i) {\n\t\t\t\t\t\treturn r ? 0 === e.offsetWidth && hn.test(st.css(e, \"display\")) ? st.swap(e, xn, function () {\n\t\t\t\t\t\t\treturn E(e, n, i);\n\t\t\t\t\t\t}) : E(e, n, i) : t;\n\t\t\t\t\t}, set: function set(e, t, r) {\n\t\t\t\t\t\tvar i = r && ln(e);return C(e, t, r ? k(e, n, r, st.support.boxSizing && \"border-box\" === st.css(e, \"boxSizing\", !1, i), i) : 0);\n\t\t\t\t\t} };\n\t\t\t}), st.support.opacity || (st.cssHooks.opacity = { get: function get(e, t) {\n\t\t\t\t\treturn pn.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || \"\") ? .01 * parseFloat(RegExp.$1) + \"\" : t ? \"1\" : \"\";\n\t\t\t\t}, set: function set(e, t) {\n\t\t\t\t\tvar n = e.style,\n\t\t\t\t\t r = e.currentStyle,\n\t\t\t\t\t i = st.isNumeric(t) ? \"alpha(opacity=\" + 100 * t + \")\" : \"\",\n\t\t\t\t\t o = r && r.filter || n.filter || \"\";n.zoom = 1, (t >= 1 || \"\" === t) && \"\" === st.trim(o.replace(fn, \"\")) && n.removeAttribute && (n.removeAttribute(\"filter\"), \"\" === t || r && !r.filter) || (n.filter = fn.test(o) ? o.replace(fn, i) : o + \" \" + i);\n\t\t\t\t} }), st(function () {\n\t\t\t\tst.support.reliableMarginRight || (st.cssHooks.marginRight = { get: function get(e, n) {\n\t\t\t\t\t\treturn n ? st.swap(e, { display: \"inline-block\" }, un, [e, \"marginRight\"]) : t;\n\t\t\t\t\t} }), !st.support.pixelPosition && st.fn.position && st.each([\"top\", \"left\"], function (e, n) {\n\t\t\t\t\tst.cssHooks[n] = { get: function get(e, r) {\n\t\t\t\t\t\t\treturn r ? (r = un(e, n), yn.test(r) ? st(e).position()[n] + \"px\" : r) : t;\n\t\t\t\t\t\t} };\n\t\t\t\t});\n\t\t\t}), st.expr && st.expr.filters && (st.expr.filters.hidden = function (e) {\n\t\t\t\treturn 0 === e.offsetWidth && 0 === e.offsetHeight || !st.support.reliableHiddenOffsets && \"none\" === (e.style && e.style.display || st.css(e, \"display\"));\n\t\t\t}, st.expr.filters.visible = function (e) {\n\t\t\t\treturn !st.expr.filters.hidden(e);\n\t\t\t}), st.each({ margin: \"\", padding: \"\", border: \"Width\" }, function (e, t) {\n\t\t\t\tst.cssHooks[e + t] = { expand: function expand(n) {\n\t\t\t\t\t\tfor (var r = 0, i = {}, o = \"string\" == typeof n ? n.split(\" \") : [n]; 4 > r; r++) {\n\t\t\t\t\t\t\ti[e + wn[r] + t] = o[r] || o[r - 2] || o[0];\n\t\t\t\t\t\t}return i;\n\t\t\t\t\t} }, gn.test(e) || (st.cssHooks[e + t].set = C);\n\t\t\t});var Cn = /%20/g,\n\t\t\t kn = /\\[\\]$/,\n\t\t\t En = /\\r?\\n/g,\n\t\t\t Sn = /^(?:submit|button|image|reset)$/i,\n\t\t\t An = /^(?:input|select|textarea|keygen)/i;st.fn.extend({ serialize: function serialize() {\n\t\t\t\t\treturn st.param(this.serializeArray());\n\t\t\t\t}, serializeArray: function serializeArray() {\n\t\t\t\t\treturn this.map(function () {\n\t\t\t\t\t\tvar e = st.prop(this, \"elements\");return e ? st.makeArray(e) : this;\n\t\t\t\t\t}).filter(function () {\n\t\t\t\t\t\tvar e = this.type;return this.name && !st(this).is(\":disabled\") && An.test(this.nodeName) && !Sn.test(e) && (this.checked || !Zt.test(e));\n\t\t\t\t\t}).map(function (e, t) {\n\t\t\t\t\t\tvar n = st(this).val();return null == n ? null : st.isArray(n) ? st.map(n, function (e) {\n\t\t\t\t\t\t\treturn { name: t.name, value: e.replace(En, \"\\r\\n\") };\n\t\t\t\t\t\t}) : { name: t.name, value: n.replace(En, \"\\r\\n\") };\n\t\t\t\t\t}).get();\n\t\t\t\t} }), st.param = function (e, n) {\n\t\t\t\tvar r,\n\t\t\t\t i = [],\n\t\t\t\t o = function o(e, t) {\n\t\t\t\t\tt = st.isFunction(t) ? t() : null == t ? \"\" : t, i[i.length] = encodeURIComponent(e) + \"=\" + encodeURIComponent(t);\n\t\t\t\t};if (n === t && (n = st.ajaxSettings && st.ajaxSettings.traditional), st.isArray(e) || e.jquery && !st.isPlainObject(e)) st.each(e, function () {\n\t\t\t\t\to(this.name, this.value);\n\t\t\t\t});else for (r in e) {\n\t\t\t\t\tj(r, e[r], n, o);\n\t\t\t\t}return i.join(\"&\").replace(Cn, \"+\");\n\t\t\t};var jn,\n\t\t\t Dn,\n\t\t\t Ln = st.now(),\n\t\t\t Hn = /\\?/,\n\t\t\t Mn = /#.*$/,\n\t\t\t qn = /([?&])_=[^&]*/,\n\t\t\t _n = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/gm,\n\t\t\t Fn = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\t\t\t On = /^(?:GET|HEAD)$/,\n\t\t\t Bn = /^\\/\\//,\n\t\t\t Pn = /^([\\w.+-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\t\t\t Rn = st.fn.load,\n\t\t\t Wn = {},\n\t\t\t $n = {},\n\t\t\t In = \"*/\".concat(\"*\");try {\n\t\t\t\tDn = Y.href;\n\t\t\t} catch (zn) {\n\t\t\t\tDn = V.createElement(\"a\"), Dn.href = \"\", Dn = Dn.href;\n\t\t\t}jn = Pn.exec(Dn.toLowerCase()) || [], st.fn.load = function (e, n, r) {\n\t\t\t\tif (\"string\" != typeof e && Rn) return Rn.apply(this, arguments);var i,\n\t\t\t\t o,\n\t\t\t\t a,\n\t\t\t\t s = this,\n\t\t\t\t u = e.indexOf(\" \");return u >= 0 && (i = e.slice(u, e.length), e = e.slice(0, u)), st.isFunction(n) ? (r = n, n = t) : n && \"object\" == (typeof n === \"undefined\" ? \"undefined\" : _typeof(n)) && (o = \"POST\"), s.length > 0 && st.ajax({ url: e, type: o, dataType: \"html\", data: n }).done(function (e) {\n\t\t\t\t\ta = arguments, s.html(i ? st(\"\").append(st.parseHTML(e)).find(i) : e);\n\t\t\t\t}).complete(r && function (e, t) {\n\t\t\t\t\ts.each(r, a || [e.responseText, t, e]);\n\t\t\t\t}), this;\n\t\t\t}, st.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (e, t) {\n\t\t\t\tst.fn[t] = function (e) {\n\t\t\t\t\treturn this.on(t, e);\n\t\t\t\t};\n\t\t\t}), st.each([\"get\", \"post\"], function (e, n) {\n\t\t\t\tst[n] = function (e, r, i, o) {\n\t\t\t\t\treturn st.isFunction(r) && (o = o || i, i = r, r = t), st.ajax({ url: e, type: n, dataType: o, data: r, success: i });\n\t\t\t\t};\n\t\t\t}), st.extend({ active: 0, lastModified: {}, etag: {}, ajaxSettings: { url: Dn, type: \"GET\", isLocal: Fn.test(jn[1]), global: !0, processData: !0, async: !0, contentType: \"application/x-www-form-urlencoded; charset=UTF-8\", accepts: { \"*\": In, text: \"text/plain\", html: \"text/html\", xml: \"application/xml, text/xml\", json: \"application/json, text/javascript\" }, contents: { xml: /xml/, html: /html/, json: /json/ }, responseFields: { xml: \"responseXML\", text: \"responseText\" }, converters: { \"* text\": e.String, \"text html\": !0, \"text json\": st.parseJSON, \"text xml\": st.parseXML }, flatOptions: { url: !0, context: !0 } }, ajaxSetup: function ajaxSetup(e, t) {\n\t\t\t\t\treturn t ? H(H(e, st.ajaxSettings), t) : H(st.ajaxSettings, e);\n\t\t\t\t}, ajaxPrefilter: D(Wn), ajaxTransport: D($n), ajax: function ajax(e, n) {\n\t\t\t\t\tfunction r(e, n, r, s) {\n\t\t\t\t\t\tvar l,\n\t\t\t\t\t\t f,\n\t\t\t\t\t\t v,\n\t\t\t\t\t\t b,\n\t\t\t\t\t\t T,\n\t\t\t\t\t\t N = n;2 !== x && (x = 2, u && clearTimeout(u), i = t, a = s || \"\", w.readyState = e > 0 ? 4 : 0, r && (b = M(p, w, r)), e >= 200 && 300 > e || 304 === e ? (p.ifModified && (T = w.getResponseHeader(\"Last-Modified\"), T && (st.lastModified[o] = T), T = w.getResponseHeader(\"etag\"), T && (st.etag[o] = T)), 304 === e ? (l = !0, N = \"notmodified\") : (l = q(p, b), N = l.state, f = l.data, v = l.error, l = !v)) : (v = N, (e || !N) && (N = \"error\", 0 > e && (e = 0))), w.status = e, w.statusText = (n || N) + \"\", l ? g.resolveWith(d, [f, N, w]) : g.rejectWith(d, [w, N, v]), w.statusCode(y), y = t, c && h.trigger(l ? \"ajaxSuccess\" : \"ajaxError\", [w, p, l ? f : v]), m.fireWith(d, [w, N]), c && (h.trigger(\"ajaxComplete\", [w, p]), --st.active || st.event.trigger(\"ajaxStop\")));\n\t\t\t\t\t}\"object\" == (typeof e === \"undefined\" ? \"undefined\" : _typeof(e)) && (n = e, e = t), n = n || {};var i,\n\t\t\t\t\t o,\n\t\t\t\t\t a,\n\t\t\t\t\t s,\n\t\t\t\t\t u,\n\t\t\t\t\t l,\n\t\t\t\t\t c,\n\t\t\t\t\t f,\n\t\t\t\t\t p = st.ajaxSetup({}, n),\n\t\t\t\t\t d = p.context || p,\n\t\t\t\t\t h = p.context && (d.nodeType || d.jquery) ? st(d) : st.event,\n\t\t\t\t\t g = st.Deferred(),\n\t\t\t\t\t m = st.Callbacks(\"once memory\"),\n\t\t\t\t\t y = p.statusCode || {},\n\t\t\t\t\t v = {},\n\t\t\t\t\t b = {},\n\t\t\t\t\t x = 0,\n\t\t\t\t\t T = \"canceled\",\n\t\t\t\t\t w = { readyState: 0, getResponseHeader: function getResponseHeader(e) {\n\t\t\t\t\t\t\tvar t;if (2 === x) {\n\t\t\t\t\t\t\t\tif (!s) for (s = {}; t = _n.exec(a);) {\n\t\t\t\t\t\t\t\t\ts[t[1].toLowerCase()] = t[2];\n\t\t\t\t\t\t\t\t}t = s[e.toLowerCase()];\n\t\t\t\t\t\t\t}return null == t ? null : t;\n\t\t\t\t\t\t}, getAllResponseHeaders: function getAllResponseHeaders() {\n\t\t\t\t\t\t\treturn 2 === x ? a : null;\n\t\t\t\t\t\t}, setRequestHeader: function setRequestHeader(e, t) {\n\t\t\t\t\t\t\tvar n = e.toLowerCase();return x || (e = b[n] = b[n] || e, v[e] = t), this;\n\t\t\t\t\t\t}, overrideMimeType: function overrideMimeType(e) {\n\t\t\t\t\t\t\treturn x || (p.mimeType = e), this;\n\t\t\t\t\t\t}, statusCode: function statusCode(e) {\n\t\t\t\t\t\t\tvar t;if (e) if (2 > x) for (t in e) {\n\t\t\t\t\t\t\t\ty[t] = [y[t], e[t]];\n\t\t\t\t\t\t\t} else w.always(e[w.status]);return this;\n\t\t\t\t\t\t}, abort: function abort(e) {\n\t\t\t\t\t\t\tvar t = e || T;return i && i.abort(t), r(0, t), this;\n\t\t\t\t\t\t} };if (g.promise(w).complete = m.add, w.success = w.done, w.error = w.fail, p.url = ((e || p.url || Dn) + \"\").replace(Mn, \"\").replace(Bn, jn[1] + \"//\"), p.type = n.method || n.type || p.method || p.type, p.dataTypes = st.trim(p.dataType || \"*\").toLowerCase().match(lt) || [\"\"], null == p.crossDomain && (l = Pn.exec(p.url.toLowerCase()), p.crossDomain = !(!l || l[1] === jn[1] && l[2] === jn[2] && (l[3] || (\"http:\" === l[1] ? 80 : 443)) == (jn[3] || (\"http:\" === jn[1] ? 80 : 443)))), p.data && p.processData && \"string\" != typeof p.data && (p.data = st.param(p.data, p.traditional)), L(Wn, p, n, w), 2 === x) return w;c = p.global, c && 0 === st.active++ && st.event.trigger(\"ajaxStart\"), p.type = p.type.toUpperCase(), p.hasContent = !On.test(p.type), o = p.url, p.hasContent || (p.data && (o = p.url += (Hn.test(o) ? \"&\" : \"?\") + p.data, delete p.data), p.cache === !1 && (p.url = qn.test(o) ? o.replace(qn, \"$1_=\" + Ln++) : o + (Hn.test(o) ? \"&\" : \"?\") + \"_=\" + Ln++)), p.ifModified && (st.lastModified[o] && w.setRequestHeader(\"If-Modified-Since\", st.lastModified[o]), st.etag[o] && w.setRequestHeader(\"If-None-Match\", st.etag[o])), (p.data && p.hasContent && p.contentType !== !1 || n.contentType) && w.setRequestHeader(\"Content-Type\", p.contentType), w.setRequestHeader(\"Accept\", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + (\"*\" !== p.dataTypes[0] ? \", \" + In + \"; q=0.01\" : \"\") : p.accepts[\"*\"]);for (f in p.headers) {\n\t\t\t\t\t\tw.setRequestHeader(f, p.headers[f]);\n\t\t\t\t\t}if (p.beforeSend && (p.beforeSend.call(d, w, p) === !1 || 2 === x)) return w.abort();T = \"abort\";for (f in { success: 1, error: 1, complete: 1 }) {\n\t\t\t\t\t\tw[f](p[f]);\n\t\t\t\t\t}if (i = L($n, p, n, w)) {\n\t\t\t\t\t\tw.readyState = 1, c && h.trigger(\"ajaxSend\", [w, p]), p.async && p.timeout > 0 && (u = setTimeout(function () {\n\t\t\t\t\t\t\tw.abort(\"timeout\");\n\t\t\t\t\t\t}, p.timeout));try {\n\t\t\t\t\t\t\tx = 1, i.send(v, r);\n\t\t\t\t\t\t} catch (N) {\n\t\t\t\t\t\t\tif (!(2 > x)) throw N;r(-1, N);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else r(-1, \"No Transport\");return w;\n\t\t\t\t}, getScript: function getScript(e, n) {\n\t\t\t\t\treturn st.get(e, t, n, \"script\");\n\t\t\t\t}, getJSON: function getJSON(e, t, n) {\n\t\t\t\t\treturn st.get(e, t, n, \"json\");\n\t\t\t\t} }), st.ajaxSetup({ accepts: { script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\" }, contents: { script: /(?:java|ecma)script/ }, converters: { \"text script\": function textScript(e) {\n\t\t\t\t\t\treturn st.globalEval(e), e;\n\t\t\t\t\t} } }), st.ajaxPrefilter(\"script\", function (e) {\n\t\t\t\te.cache === t && (e.cache = !1), e.crossDomain && (e.type = \"GET\", e.global = !1);\n\t\t\t}), st.ajaxTransport(\"script\", function (e) {\n\t\t\t\tif (e.crossDomain) {\n\t\t\t\t\tvar n,\n\t\t\t\t\t r = V.head || st(\"head\")[0] || V.documentElement;return { send: function send(t, i) {\n\t\t\t\t\t\t\tn = V.createElement(\"script\"), n.async = !0, e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function (e, t) {\n\t\t\t\t\t\t\t\t(t || !n.readyState || /loaded|complete/.test(n.readyState)) && (n.onload = n.onreadystatechange = null, n.parentNode && n.parentNode.removeChild(n), n = null, t || i(200, \"success\"));\n\t\t\t\t\t\t\t}, r.insertBefore(n, r.firstChild);\n\t\t\t\t\t\t}, abort: function abort() {\n\t\t\t\t\t\t\tn && n.onload(t, !0);\n\t\t\t\t\t\t} };\n\t\t\t\t}\n\t\t\t});var Xn = [],\n\t\t\t Un = /(=)\\?(?=&|$)|\\?\\?/;st.ajaxSetup({ jsonp: \"callback\", jsonpCallback: function jsonpCallback() {\n\t\t\t\t\tvar e = Xn.pop() || st.expando + \"_\" + Ln++;return this[e] = !0, e;\n\t\t\t\t} }), st.ajaxPrefilter(\"json jsonp\", function (n, r, i) {\n\t\t\t\tvar o,\n\t\t\t\t a,\n\t\t\t\t s,\n\t\t\t\t u = n.jsonp !== !1 && (Un.test(n.url) ? \"url\" : \"string\" == typeof n.data && !(n.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") && Un.test(n.data) && \"data\");return u || \"jsonp\" === n.dataTypes[0] ? (o = n.jsonpCallback = st.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback, u ? n[u] = n[u].replace(Un, \"$1\" + o) : n.jsonp !== !1 && (n.url += (Hn.test(n.url) ? \"&\" : \"?\") + n.jsonp + \"=\" + o), n.converters[\"script json\"] = function () {\n\t\t\t\t\treturn s || st.error(o + \" was not called\"), s[0];\n\t\t\t\t}, n.dataTypes[0] = \"json\", a = e[o], e[o] = function () {\n\t\t\t\t\ts = arguments;\n\t\t\t\t}, i.always(function () {\n\t\t\t\t\te[o] = a, n[o] && (n.jsonpCallback = r.jsonpCallback, Xn.push(o)), s && st.isFunction(a) && a(s[0]), s = a = t;\n\t\t\t\t}), \"script\") : t;\n\t\t\t});var Vn,\n\t\t\t Yn,\n\t\t\t Jn = 0,\n\t\t\t Gn = e.ActiveXObject && function () {\n\t\t\t\tvar e;for (e in Vn) {\n\t\t\t\t\tVn[e](t, !0);\n\t\t\t\t}\n\t\t\t};st.ajaxSettings.xhr = e.ActiveXObject ? function () {\n\t\t\t\treturn !this.isLocal && _() || F();\n\t\t\t} : _, Yn = st.ajaxSettings.xhr(), st.support.cors = !!Yn && \"withCredentials\" in Yn, Yn = st.support.ajax = !!Yn, Yn && st.ajaxTransport(function (n) {\n\t\t\t\tif (!n.crossDomain || st.support.cors) {\n\t\t\t\t\tvar _r;return { send: function send(i, o) {\n\t\t\t\t\t\t\tvar a,\n\t\t\t\t\t\t\t s,\n\t\t\t\t\t\t\t u = n.xhr();if (n.username ? u.open(n.type, n.url, n.async, n.username, n.password) : u.open(n.type, n.url, n.async), n.xhrFields) for (s in n.xhrFields) {\n\t\t\t\t\t\t\t\tu[s] = n.xhrFields[s];\n\t\t\t\t\t\t\t}n.mimeType && u.overrideMimeType && u.overrideMimeType(n.mimeType), n.crossDomain || i[\"X-Requested-With\"] || (i[\"X-Requested-With\"] = \"XMLHttpRequest\");try {\n\t\t\t\t\t\t\t\tfor (s in i) {\n\t\t\t\t\t\t\t\t\tu.setRequestHeader(s, i[s]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (l) {}u.send(n.hasContent && n.data || null), _r = function r(e, i) {\n\t\t\t\t\t\t\t\tvar s, l, c, f, p;try {\n\t\t\t\t\t\t\t\t\tif (_r && (i || 4 === u.readyState)) if (_r = t, a && (u.onreadystatechange = st.noop, Gn && delete Vn[a]), i) 4 !== u.readyState && u.abort();else {\n\t\t\t\t\t\t\t\t\t\tf = {}, s = u.status, p = u.responseXML, c = u.getAllResponseHeaders(), p && p.documentElement && (f.xml = p), \"string\" == typeof u.responseText && (f.text = u.responseText);try {\n\t\t\t\t\t\t\t\t\t\t\tl = u.statusText;\n\t\t\t\t\t\t\t\t\t\t} catch (d) {\n\t\t\t\t\t\t\t\t\t\t\tl = \"\";\n\t\t\t\t\t\t\t\t\t\t}s || !n.isLocal || n.crossDomain ? 1223 === s && (s = 204) : s = f.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} catch (h) {\n\t\t\t\t\t\t\t\t\ti || o(-1, h);\n\t\t\t\t\t\t\t\t}f && o(s, l, f, c);\n\t\t\t\t\t\t\t}, n.async ? 4 === u.readyState ? setTimeout(_r) : (a = ++Jn, Gn && (Vn || (Vn = {}, st(e).unload(Gn)), Vn[a] = _r), u.onreadystatechange = _r) : _r();\n\t\t\t\t\t\t}, abort: function abort() {\n\t\t\t\t\t\t\t_r && _r(t, !0);\n\t\t\t\t\t\t} };\n\t\t\t\t}\n\t\t\t});var Qn,\n\t\t\t Kn,\n\t\t\t Zn = /^(?:toggle|show|hide)$/,\n\t\t\t er = RegExp(\"^(?:([+-])=|)(\" + ut + \")([a-z%]*)$\", \"i\"),\n\t\t\t tr = /queueHooks$/,\n\t\t\t nr = [W],\n\t\t\t rr = { \"*\": [function (e, t) {\n\t\t\t\t\tvar n,\n\t\t\t\t\t r,\n\t\t\t\t\t i = this.createTween(e, t),\n\t\t\t\t\t o = er.exec(t),\n\t\t\t\t\t a = i.cur(),\n\t\t\t\t\t s = +a || 0,\n\t\t\t\t\t u = 1,\n\t\t\t\t\t l = 20;if (o) {\n\t\t\t\t\t\tif (n = +o[2], r = o[3] || (st.cssNumber[e] ? \"\" : \"px\"), \"px\" !== r && s) {\n\t\t\t\t\t\t\ts = st.css(i.elem, e, !0) || n || 1;do {\n\t\t\t\t\t\t\t\tu = u || \".5\", s /= u, st.style(i.elem, e, s + r);\n\t\t\t\t\t\t\t} while (u !== (u = i.cur() / a) && 1 !== u && --l);\n\t\t\t\t\t\t}i.unit = r, i.start = s, i.end = o[1] ? s + (o[1] + 1) * n : n;\n\t\t\t\t\t}return i;\n\t\t\t\t}] };st.Animation = st.extend(P, { tweener: function tweener(e, t) {\n\t\t\t\t\tst.isFunction(e) ? (t = e, e = [\"*\"]) : e = e.split(\" \");for (var n, r = 0, i = e.length; i > r; r++) {\n\t\t\t\t\t\tn = e[r], rr[n] = rr[n] || [], rr[n].unshift(t);\n\t\t\t\t\t}\n\t\t\t\t}, prefilter: function prefilter(e, t) {\n\t\t\t\t\tt ? nr.unshift(e) : nr.push(e);\n\t\t\t\t} }), st.Tween = $, $.prototype = { constructor: $, init: function init(e, t, n, r, i, o) {\n\t\t\t\t\tthis.elem = e, this.prop = n, this.easing = i || \"swing\", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (st.cssNumber[n] ? \"\" : \"px\");\n\t\t\t\t}, cur: function cur() {\n\t\t\t\t\tvar e = $.propHooks[this.prop];return e && e.get ? e.get(this) : $.propHooks._default.get(this);\n\t\t\t\t}, run: function run(e) {\n\t\t\t\t\tvar t,\n\t\t\t\t\t n = $.propHooks[this.prop];return this.pos = t = this.options.duration ? st.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : $.propHooks._default.set(this), this;\n\t\t\t\t} }, $.prototype.init.prototype = $.prototype, $.propHooks = { _default: { get: function get(e) {\n\t\t\t\t\t\tvar t;return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = st.css(e.elem, e.prop, \"auto\"), t && \"auto\" !== t ? t : 0) : e.elem[e.prop];\n\t\t\t\t\t}, set: function set(e) {\n\t\t\t\t\t\tst.fx.step[e.prop] ? st.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[st.cssProps[e.prop]] || st.cssHooks[e.prop]) ? st.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now;\n\t\t\t\t\t} } }, $.propHooks.scrollTop = $.propHooks.scrollLeft = { set: function set(e) {\n\t\t\t\t\te.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now);\n\t\t\t\t} }, st.each([\"toggle\", \"show\", \"hide\"], function (e, t) {\n\t\t\t\tvar n = st.fn[t];st.fn[t] = function (e, r, i) {\n\t\t\t\t\treturn null == e || \"boolean\" == typeof e ? n.apply(this, arguments) : this.animate(I(t, !0), e, r, i);\n\t\t\t\t};\n\t\t\t}), st.fn.extend({ fadeTo: function fadeTo(e, t, n, r) {\n\t\t\t\t\treturn this.filter(w).css(\"opacity\", 0).show().end().animate({ opacity: t }, e, n, r);\n\t\t\t\t}, animate: function animate(e, t, n, r) {\n\t\t\t\t\tvar i = st.isEmptyObject(e),\n\t\t\t\t\t o = st.speed(t, n, r),\n\t\t\t\t\t a = function a() {\n\t\t\t\t\t\tvar t = P(this, st.extend({}, e), o);a.finish = function () {\n\t\t\t\t\t\t\tt.stop(!0);\n\t\t\t\t\t\t}, (i || st._data(this, \"finish\")) && t.stop(!0);\n\t\t\t\t\t};return a.finish = a, i || o.queue === !1 ? this.each(a) : this.queue(o.queue, a);\n\t\t\t\t}, stop: function stop(e, n, r) {\n\t\t\t\t\tvar i = function i(e) {\n\t\t\t\t\t\tvar t = e.stop;delete e.stop, t(r);\n\t\t\t\t\t};return \"string\" != typeof e && (r = n, n = e, e = t), n && e !== !1 && this.queue(e || \"fx\", []), this.each(function () {\n\t\t\t\t\t\tvar t = !0,\n\t\t\t\t\t\t n = null != e && e + \"queueHooks\",\n\t\t\t\t\t\t o = st.timers,\n\t\t\t\t\t\t a = st._data(this);if (n) a[n] && a[n].stop && i(a[n]);else for (n in a) {\n\t\t\t\t\t\t\ta[n] && a[n].stop && tr.test(n) && i(a[n]);\n\t\t\t\t\t\t}for (n = o.length; n--;) {\n\t\t\t\t\t\t\to[n].elem !== this || null != e && o[n].queue !== e || (o[n].anim.stop(r), t = !1, o.splice(n, 1));\n\t\t\t\t\t\t}(t || !r) && st.dequeue(this, e);\n\t\t\t\t\t});\n\t\t\t\t}, finish: function finish(e) {\n\t\t\t\t\treturn e !== !1 && (e = e || \"fx\"), this.each(function () {\n\t\t\t\t\t\tvar t,\n\t\t\t\t\t\t n = st._data(this),\n\t\t\t\t\t\t r = n[e + \"queue\"],\n\t\t\t\t\t\t i = n[e + \"queueHooks\"],\n\t\t\t\t\t\t o = st.timers,\n\t\t\t\t\t\t a = r ? r.length : 0;for (n.finish = !0, st.queue(this, e, []), i && i.cur && i.cur.finish && i.cur.finish.call(this), t = o.length; t--;) {\n\t\t\t\t\t\t\to[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));\n\t\t\t\t\t\t}for (t = 0; a > t; t++) {\n\t\t\t\t\t\t\tr[t] && r[t].finish && r[t].finish.call(this);\n\t\t\t\t\t\t}delete n.finish;\n\t\t\t\t\t});\n\t\t\t\t} }), st.each({ slideDown: I(\"show\"), slideUp: I(\"hide\"), slideToggle: I(\"toggle\"), fadeIn: { opacity: \"show\" }, fadeOut: { opacity: \"hide\" }, fadeToggle: { opacity: \"toggle\" } }, function (e, t) {\n\t\t\t\tst.fn[e] = function (e, n, r) {\n\t\t\t\t\treturn this.animate(t, e, n, r);\n\t\t\t\t};\n\t\t\t}), st.speed = function (e, t, n) {\n\t\t\t\tvar r = e && \"object\" == (typeof e === \"undefined\" ? \"undefined\" : _typeof(e)) ? st.extend({}, e) : { complete: n || !n && t || st.isFunction(e) && e, duration: e, easing: n && t || t && !st.isFunction(t) && t };return r.duration = st.fx.off ? 0 : \"number\" == typeof r.duration ? r.duration : r.duration in st.fx.speeds ? st.fx.speeds[r.duration] : st.fx.speeds._default, (null == r.queue || r.queue === !0) && (r.queue = \"fx\"), r.old = r.complete, r.complete = function () {\n\t\t\t\t\tst.isFunction(r.old) && r.old.call(this), r.queue && st.dequeue(this, r.queue);\n\t\t\t\t}, r;\n\t\t\t}, st.easing = { linear: function linear(e) {\n\t\t\t\t\treturn e;\n\t\t\t\t}, swing: function swing(e) {\n\t\t\t\t\treturn .5 - Math.cos(e * Math.PI) / 2;\n\t\t\t\t} }, st.timers = [], st.fx = $.prototype.init, st.fx.tick = function () {\n\t\t\t\tvar e,\n\t\t\t\t n = st.timers,\n\t\t\t\t r = 0;for (Qn = st.now(); n.length > r; r++) {\n\t\t\t\t\te = n[r], e() || n[r] !== e || n.splice(r--, 1);\n\t\t\t\t}n.length || st.fx.stop(), Qn = t;\n\t\t\t}, st.fx.timer = function (e) {\n\t\t\t\te() && st.timers.push(e) && st.fx.start();\n\t\t\t}, st.fx.interval = 13, st.fx.start = function () {\n\t\t\t\tKn || (Kn = setInterval(st.fx.tick, st.fx.interval));\n\t\t\t}, st.fx.stop = function () {\n\t\t\t\tclearInterval(Kn), Kn = null;\n\t\t\t}, st.fx.speeds = { slow: 600, fast: 200, _default: 400 }, st.fx.step = {}, st.expr && st.expr.filters && (st.expr.filters.animated = function (e) {\n\t\t\t\treturn st.grep(st.timers, function (t) {\n\t\t\t\t\treturn e === t.elem;\n\t\t\t\t}).length;\n\t\t\t}), st.fn.offset = function (e) {\n\t\t\t\tif (arguments.length) return e === t ? this : this.each(function (t) {\n\t\t\t\t\tst.offset.setOffset(this, e, t);\n\t\t\t\t});var n,\n\t\t\t\t r,\n\t\t\t\t i = { top: 0, left: 0 },\n\t\t\t\t o = this[0],\n\t\t\t\t a = o && o.ownerDocument;if (a) return n = a.documentElement, st.contains(n, o) ? (o.getBoundingClientRect !== t && (i = o.getBoundingClientRect()), r = z(a), { top: i.top + (r.pageYOffset || n.scrollTop) - (n.clientTop || 0), left: i.left + (r.pageXOffset || n.scrollLeft) - (n.clientLeft || 0) }) : i;\n\t\t\t}, st.offset = { setOffset: function setOffset(e, t, n) {\n\t\t\t\t\tvar r = st.css(e, \"position\");\"static\" === r && (e.style.position = \"relative\");var i,\n\t\t\t\t\t o,\n\t\t\t\t\t a = st(e),\n\t\t\t\t\t s = a.offset(),\n\t\t\t\t\t u = st.css(e, \"top\"),\n\t\t\t\t\t l = st.css(e, \"left\"),\n\t\t\t\t\t c = (\"absolute\" === r || \"fixed\" === r) && st.inArray(\"auto\", [u, l]) > -1,\n\t\t\t\t\t f = {},\n\t\t\t\t\t p = {};c ? (p = a.position(), i = p.top, o = p.left) : (i = parseFloat(u) || 0, o = parseFloat(l) || 0), st.isFunction(t) && (t = t.call(e, n, s)), null != t.top && (f.top = t.top - s.top + i), null != t.left && (f.left = t.left - s.left + o), \"using\" in t ? t.using.call(e, f) : a.css(f);\n\t\t\t\t} }, st.fn.extend({ position: function position() {\n\t\t\t\t\tif (this[0]) {\n\t\t\t\t\t\tvar e,\n\t\t\t\t\t\t t,\n\t\t\t\t\t\t n = { top: 0, left: 0 },\n\t\t\t\t\t\t r = this[0];return \"fixed\" === st.css(r, \"position\") ? t = r.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), st.nodeName(e[0], \"html\") || (n = e.offset()), n.top += st.css(e[0], \"borderTopWidth\", !0), n.left += st.css(e[0], \"borderLeftWidth\", !0)), { top: t.top - n.top - st.css(r, \"marginTop\", !0), left: t.left - n.left - st.css(r, \"marginLeft\", !0) };\n\t\t\t\t\t}\n\t\t\t\t}, offsetParent: function offsetParent() {\n\t\t\t\t\treturn this.map(function () {\n\t\t\t\t\t\tfor (var e = this.offsetParent || V.documentElement; e && !st.nodeName(e, \"html\") && \"static\" === st.css(e, \"position\");) {\n\t\t\t\t\t\t\te = e.offsetParent;\n\t\t\t\t\t\t}return e || V.documentElement;\n\t\t\t\t\t});\n\t\t\t\t} }), st.each({ scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function (e, n) {\n\t\t\t\tvar r = /Y/.test(n);st.fn[e] = function (i) {\n\t\t\t\t\treturn st.access(this, function (e, i, o) {\n\t\t\t\t\t\tvar a = z(e);return o === t ? a ? n in a ? a[n] : a.document.documentElement[i] : e[i] : (a ? a.scrollTo(r ? st(a).scrollLeft() : o, r ? o : st(a).scrollTop()) : e[i] = o, t);\n\t\t\t\t\t}, e, i, arguments.length, null);\n\t\t\t\t};\n\t\t\t}), st.each({ Height: \"height\", Width: \"width\" }, function (e, n) {\n\t\t\t\tst.each({ padding: \"inner\" + e, content: n, \"\": \"outer\" + e }, function (r, i) {\n\t\t\t\t\tst.fn[i] = function (i, o) {\n\t\t\t\t\t\tvar a = arguments.length && (r || \"boolean\" != typeof i),\n\t\t\t\t\t\t s = r || (i === !0 || o === !0 ? \"margin\" : \"border\");return st.access(this, function (n, r, i) {\n\t\t\t\t\t\t\tvar o;return st.isWindow(n) ? n.document.documentElement[\"client\" + e] : 9 === n.nodeType ? (o = n.documentElement, Math.max(n.body[\"scroll\" + e], o[\"scroll\" + e], n.body[\"offset\" + e], o[\"offset\" + e], o[\"client\" + e])) : i === t ? st.css(n, r, s) : st.style(n, r, i, s);\n\t\t\t\t\t\t}, n, a ? i : t, a, null);\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}), e.jQuery = e.$ = st, \"function\" == typeof define && define.amd && define.amd.jQuery && define(\"jquery\", [], function () {\n\t\t\t\treturn st;\n\t\t\t});\n\t\t})(window);\n\n\t\t/*!\n * jQuery Form Plugin\n * version: 3.51.0-2014.06.20\n * Requires jQuery v1.5 or later\n * Copyright (c) 2014 M. Alsup\n * Examples and documentation at: http://malsup.com/jquery/form/\n * Project repository: https://github.com/malsup/form\n * Dual licensed under the MIT and GPL licenses.\n * https://github.com/malsup/form#copyright-and-license\n */\n\t\t!function (e) {\n\t\t\t\"use strict\";\n\t\t\t\"function\" == typeof define && define.amd ? define([\"jquery\"], e) : e(\"undefined\" != typeof jQuery ? jQuery : window.Zepto);\n\t\t}(function (e) {\n\t\t\t\"use strict\";\n\t\t\tfunction t(t) {\n\t\t\t\tvar r = t.data;t.isDefaultPrevented() || (t.preventDefault(), e(t.target).ajaxSubmit(r));\n\t\t\t}function r(t) {\n\t\t\t\tvar r = t.target,\n\t\t\t\t a = e(r);if (!a.is(\"[type=submit],[type=image]\")) {\n\t\t\t\t\tvar n = a.closest(\"[type=submit]\");if (0 === n.length) return;r = n[0];\n\t\t\t\t}var i = this;if (i.clk = r, \"image\" == r.type) if (void 0 !== t.offsetX) i.clk_x = t.offsetX, i.clk_y = t.offsetY;else if (\"function\" == typeof e.fn.offset) {\n\t\t\t\t\tvar o = a.offset();i.clk_x = t.pageX - o.left, i.clk_y = t.pageY - o.top;\n\t\t\t\t} else i.clk_x = t.pageX - r.offsetLeft, i.clk_y = t.pageY - r.offsetTop;setTimeout(function () {\n\t\t\t\t\ti.clk = i.clk_x = i.clk_y = null;\n\t\t\t\t}, 100);\n\t\t\t}function a() {\n\t\t\t\tif (e.fn.ajaxSubmit.debug) {\n\t\t\t\t\tvar t = \"[jquery.form] \" + Array.prototype.join.call(arguments, \"\");window.console && window.console.log ? window.console.log(t) : window.opera && window.opera.postError && window.opera.postError(t);\n\t\t\t\t}\n\t\t\t}var n = {};n.fileapi = void 0 !== e(\"
\").get(0).files, n.formdata = void 0 !== window.FormData;var i = !!e.fn.prop;e.fn.attr2 = function () {\n\t\t\t\tif (!i) return this.attr.apply(this, arguments);var e = this.prop.apply(this, arguments);return e && e.jquery || \"string\" == typeof e ? e : this.attr.apply(this, arguments);\n\t\t\t}, e.fn.ajaxSubmit = function (t) {\n\t\t\t\tfunction r(r) {\n\t\t\t\t\tvar a,\n\t\t\t\t\t n,\n\t\t\t\t\t i = e.param(r, t.traditional).split(\"&\"),\n\t\t\t\t\t o = i.length,\n\t\t\t\t\t s = [];for (a = 0; o > a; a++) {\n\t\t\t\t\t\ti[a] = i[a].replace(/\\+/g, \" \"), n = i[a].split(\"=\"), s.push([decodeURIComponent(n[0]), decodeURIComponent(n[1])]);\n\t\t\t\t\t}return s;\n\t\t\t\t}function o(a) {\n\t\t\t\t\tfor (var n = new FormData(), i = 0; i < a.length; i++) {\n\t\t\t\t\t\tn.append(a[i].name, a[i].value);\n\t\t\t\t\t}if (t.extraData) {\n\t\t\t\t\t\tvar o = r(t.extraData);for (i = 0; i < o.length; i++) {\n\t\t\t\t\t\t\to[i] && n.append(o[i][0], o[i][1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}t.data = null;var s = e.extend(!0, {}, e.ajaxSettings, t, { contentType: !1, processData: !1, cache: !1, type: u || \"POST\" });t.uploadProgress && (s.xhr = function () {\n\t\t\t\t\t\tvar r = e.ajaxSettings.xhr();return r.upload && r.upload.addEventListener(\"progress\", function (e) {\n\t\t\t\t\t\t\tvar r = 0,\n\t\t\t\t\t\t\t a = e.loaded || e.position,\n\t\t\t\t\t\t\t n = e.total;e.lengthComputable && (r = Math.ceil(a / n * 100)), t.uploadProgress(e, a, n, r);\n\t\t\t\t\t\t}, !1), r;\n\t\t\t\t\t}), s.data = null;var c = s.beforeSend;return s.beforeSend = function (e, r) {\n\t\t\t\t\t\tr.data = t.formData ? t.formData : n, c && c.call(this, e, r);\n\t\t\t\t\t}, e.ajax(s);\n\t\t\t\t}function s(r) {\n\t\t\t\t\tfunction n(e) {\n\t\t\t\t\t\tvar t = null;try {\n\t\t\t\t\t\t\te.contentWindow && (t = e.contentWindow.document);\n\t\t\t\t\t\t} catch (r) {\n\t\t\t\t\t\t\ta(\"cannot get iframe.contentWindow document: \" + r);\n\t\t\t\t\t\t}if (t) return t;try {\n\t\t\t\t\t\t\tt = e.contentDocument ? e.contentDocument : e.document;\n\t\t\t\t\t\t} catch (r) {\n\t\t\t\t\t\t\ta(\"cannot get iframe.contentDocument: \" + r), t = e.document;\n\t\t\t\t\t\t}return t;\n\t\t\t\t\t}function o() {\n\t\t\t\t\t\tfunction t() {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tvar e = n(g).readyState;a(\"state = \" + e), e && \"uninitialized\" == e.toLowerCase() && setTimeout(t, 50);\n\t\t\t\t\t\t\t} catch (r) {\n\t\t\t\t\t\t\t\ta(\"Server abort: \", r, \" (\", r.name, \")\"), s(k), j && clearTimeout(j), j = void 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}var r = f.attr2(\"target\"),\n\t\t\t\t\t\t i = f.attr2(\"action\"),\n\t\t\t\t\t\t o = \"multipart/form-data\",\n\t\t\t\t\t\t c = f.attr(\"enctype\") || f.attr(\"encoding\") || o;w.setAttribute(\"target\", p), (!u || /post/i.test(u)) && w.setAttribute(\"method\", \"POST\"), i != m.url && w.setAttribute(\"action\", m.url), m.skipEncodingOverride || u && !/post/i.test(u) || f.attr({ encoding: \"multipart/form-data\", enctype: \"multipart/form-data\" }), m.timeout && (j = setTimeout(function () {\n\t\t\t\t\t\t\tT = !0, s(D);\n\t\t\t\t\t\t}, m.timeout));var l = [];try {\n\t\t\t\t\t\t\tif (m.extraData) for (var d in m.extraData) {\n\t\t\t\t\t\t\t\tm.extraData.hasOwnProperty(d) && l.push(e.isPlainObject(m.extraData[d]) && m.extraData[d].hasOwnProperty(\"name\") && m.extraData[d].hasOwnProperty(\"value\") ? e('
').val(m.extraData[d].value).appendTo(w)[0] : e('
').val(m.extraData[d]).appendTo(w)[0]);\n\t\t\t\t\t\t\t}m.iframeTarget || v.appendTo(\"body\"), g.attachEvent ? g.attachEvent(\"onload\", s) : g.addEventListener(\"load\", s, !1), setTimeout(t, 15);try {\n\t\t\t\t\t\t\t\tw.submit();\n\t\t\t\t\t\t\t} catch (h) {\n\t\t\t\t\t\t\t\tvar x = document.createElement(\"form\").submit;x.apply(w);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tw.setAttribute(\"action\", i), w.setAttribute(\"enctype\", c), r ? w.setAttribute(\"target\", r) : f.removeAttr(\"target\"), e(l).remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t}function s(t) {\n\t\t\t\t\t\tif (!x.aborted && !F) {\n\t\t\t\t\t\t\tif (M = n(g), M || (a(\"cannot access response document\"), t = k), t === D && x) return x.abort(\"timeout\"), void S.reject(x, \"timeout\");if (t == k && x) return x.abort(\"server abort\"), void S.reject(x, \"error\", \"server abort\");if (M && M.location.href != m.iframeSrc || T) {\n\t\t\t\t\t\t\t\tg.detachEvent ? g.detachEvent(\"onload\", s) : g.removeEventListener(\"load\", s, !1);var r,\n\t\t\t\t\t\t\t\t i = \"success\";try {\n\t\t\t\t\t\t\t\t\tif (T) throw \"timeout\";var o = \"xml\" == m.dataType || M.XMLDocument || e.isXMLDoc(M);if (a(\"isXml=\" + o), !o && window.opera && (null === M.body || !M.body.innerHTML) && --O) return a(\"requeing onLoad callback, DOM not available\"), void setTimeout(s, 250);var u = M.body ? M.body : M.documentElement;x.responseText = u ? u.innerHTML : null, x.responseXML = M.XMLDocument ? M.XMLDocument : M, o && (m.dataType = \"xml\"), x.getResponseHeader = function (e) {\n\t\t\t\t\t\t\t\t\t\tvar t = { \"content-type\": m.dataType };return t[e.toLowerCase()];\n\t\t\t\t\t\t\t\t\t}, u && (x.status = Number(u.getAttribute(\"status\")) || x.status, x.statusText = u.getAttribute(\"statusText\") || x.statusText);var c = (m.dataType || \"\").toLowerCase(),\n\t\t\t\t\t\t\t\t\t l = /(json|script|text)/.test(c);if (l || m.textarea) {\n\t\t\t\t\t\t\t\t\t\tvar f = M.getElementsByTagName(\"textarea\")[0];if (f) x.responseText = f.value, x.status = Number(f.getAttribute(\"status\")) || x.status, x.statusText = f.getAttribute(\"statusText\") || x.statusText;else if (l) {\n\t\t\t\t\t\t\t\t\t\t\tvar p = M.getElementsByTagName(\"pre\")[0],\n\t\t\t\t\t\t\t\t\t\t\t h = M.getElementsByTagName(\"body\")[0];p ? x.responseText = p.textContent ? p.textContent : p.innerText : h && (x.responseText = h.textContent ? h.textContent : h.innerText);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else \"xml\" == c && !x.responseXML && x.responseText && (x.responseXML = X(x.responseText));try {\n\t\t\t\t\t\t\t\t\t\tE = _(x, c, m);\n\t\t\t\t\t\t\t\t\t} catch (y) {\n\t\t\t\t\t\t\t\t\t\ti = \"parsererror\", x.error = r = y || i;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} catch (y) {\n\t\t\t\t\t\t\t\t\ta(\"error caught: \", y), i = \"error\", x.error = r = y || i;\n\t\t\t\t\t\t\t\t}x.aborted && (a(\"upload aborted\"), i = null), x.status && (i = x.status >= 200 && x.status < 300 || 304 === x.status ? \"success\" : \"error\"), \"success\" === i ? (m.success && m.success.call(m.context, E, \"success\", x), S.resolve(x.responseText, \"success\", x), d && e.event.trigger(\"ajaxSuccess\", [x, m])) : i && (void 0 === r && (r = x.statusText), m.error && m.error.call(m.context, x, i, r), S.reject(x, \"error\", r), d && e.event.trigger(\"ajaxError\", [x, m, r])), d && e.event.trigger(\"ajaxComplete\", [x, m]), d && ! --e.active && e.event.trigger(\"ajaxStop\"), m.complete && m.complete.call(m.context, x, i), F = !0, m.timeout && clearTimeout(j), setTimeout(function () {\n\t\t\t\t\t\t\t\t\tm.iframeTarget ? v.attr(\"src\", m.iframeSrc) : v.remove(), x.responseXML = null;\n\t\t\t\t\t\t\t\t}, 100);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}var c,\n\t\t\t\t\t l,\n\t\t\t\t\t m,\n\t\t\t\t\t d,\n\t\t\t\t\t p,\n\t\t\t\t\t v,\n\t\t\t\t\t g,\n\t\t\t\t\t x,\n\t\t\t\t\t y,\n\t\t\t\t\t b,\n\t\t\t\t\t T,\n\t\t\t\t\t j,\n\t\t\t\t\t w = f[0],\n\t\t\t\t\t S = e.Deferred();if (S.abort = function (e) {\n\t\t\t\t\t\tx.abort(e);\n\t\t\t\t\t}, r) for (l = 0; l < h.length; l++) {\n\t\t\t\t\t\tc = e(h[l]), i ? c.prop(\"disabled\", !1) : c.removeAttr(\"disabled\");\n\t\t\t\t\t}if (m = e.extend(!0, {}, e.ajaxSettings, t), m.context = m.context || m, p = \"jqFormIO\" + new Date().getTime(), m.iframeTarget ? (v = e(m.iframeTarget), b = v.attr2(\"name\"), b ? p = b : v.attr2(\"name\", p)) : (v = e('
'), v.css({ position: \"absolute\", top: \"-1000px\", left: \"-1000px\" })), g = v[0], x = { aborted: 0, responseText: null, responseXML: null, status: 0, statusText: \"n/a\", getAllResponseHeaders: function getAllResponseHeaders() {}, getResponseHeader: function getResponseHeader() {}, setRequestHeader: function setRequestHeader() {}, abort: function abort(t) {\n\t\t\t\t\t\t\tvar r = \"timeout\" === t ? \"timeout\" : \"aborted\";a(\"aborting upload... \" + r), this.aborted = 1;try {\n\t\t\t\t\t\t\t\tg.contentWindow.document.execCommand && g.contentWindow.document.execCommand(\"Stop\");\n\t\t\t\t\t\t\t} catch (n) {}v.attr(\"src\", m.iframeSrc), x.error = r, m.error && m.error.call(m.context, x, r, t), d && e.event.trigger(\"ajaxError\", [x, m, r]), m.complete && m.complete.call(m.context, x, r);\n\t\t\t\t\t\t} }, d = m.global, d && 0 === e.active++ && e.event.trigger(\"ajaxStart\"), d && e.event.trigger(\"ajaxSend\", [x, m]), m.beforeSend && m.beforeSend.call(m.context, x, m) === !1) return m.global && e.active--, S.reject(), S;if (x.aborted) return S.reject(), S;y = w.clk, y && (b = y.name, b && !y.disabled && (m.extraData = m.extraData || {}, m.extraData[b] = y.value, \"image\" == y.type && (m.extraData[b + \".x\"] = w.clk_x, m.extraData[b + \".y\"] = w.clk_y)));var D = 1,\n\t\t\t\t\t k = 2,\n\t\t\t\t\t A = e(\"meta[name=csrf-token]\").attr(\"content\"),\n\t\t\t\t\t L = e(\"meta[name=csrf-param]\").attr(\"content\");L && A && (m.extraData = m.extraData || {}, m.extraData[L] = A), m.forceSync ? o() : setTimeout(o, 10);var E,\n\t\t\t\t\t M,\n\t\t\t\t\t F,\n\t\t\t\t\t O = 50,\n\t\t\t\t\t X = e.parseXML || function (e, t) {\n\t\t\t\t\t\treturn window.ActiveXObject ? (t = new ActiveXObject(\"Microsoft.XMLDOM\"), t.async = \"false\", t.loadXML(e)) : t = new DOMParser().parseFromString(e, \"text/xml\"), t && t.documentElement && \"parsererror\" != t.documentElement.nodeName ? t : null;\n\t\t\t\t\t},\n\t\t\t\t\t C = e.parseJSON || function (e) {\n\t\t\t\t\t\treturn window.eval(\"(\" + e + \")\");\n\t\t\t\t\t},\n\t\t\t\t\t _ = function _(t, r, a) {\n\t\t\t\t\t\tvar n = t.getResponseHeader(\"content-type\") || \"\",\n\t\t\t\t\t\t i = \"xml\" === r || !r && n.indexOf(\"xml\") >= 0,\n\t\t\t\t\t\t o = i ? t.responseXML : t.responseText;return i && \"parsererror\" === o.documentElement.nodeName && e.error && e.error(\"parsererror\"), a && a.dataFilter && (o = a.dataFilter(o, r)), \"string\" == typeof o && (\"json\" === r || !r && n.indexOf(\"json\") >= 0 ? o = C(o) : (\"script\" === r || !r && n.indexOf(\"javascript\") >= 0) && e.globalEval(o)), o;\n\t\t\t\t\t};return S;\n\t\t\t\t}if (!this.length) return a(\"ajaxSubmit: skipping submit process - no element selected\"), this;var u,\n\t\t\t\t c,\n\t\t\t\t l,\n\t\t\t\t f = this;\"function\" == typeof t ? t = { success: t } : void 0 === t && (t = {}), u = t.type || this.attr2(\"method\"), c = t.url || this.attr2(\"action\"), l = \"string\" == typeof c ? e.trim(c) : \"\", l = l || window.location.href || \"\", l && (l = (l.match(/^([^#]+)/) || [])[1]), t = e.extend(!0, { url: l, success: e.ajaxSettings.success, type: u || e.ajaxSettings.type, iframeSrc: /^https/i.test(window.location.href || \"\") ? \"javascript:false\" : \"about:blank\" }, t);var m = {};if (this.trigger(\"form-pre-serialize\", [this, t, m]), m.veto) return a(\"ajaxSubmit: submit vetoed via form-pre-serialize trigger\"), this;if (t.beforeSerialize && t.beforeSerialize(this, t) === !1) return a(\"ajaxSubmit: submit aborted via beforeSerialize callback\"), this;var d = t.traditional;void 0 === d && (d = e.ajaxSettings.traditional);var p,\n\t\t\t\t h = [],\n\t\t\t\t v = this.formToArray(t.semantic, h);if (t.data && (t.extraData = t.data, p = e.param(t.data, d)), t.beforeSubmit && t.beforeSubmit(v, this, t) === !1) return a(\"ajaxSubmit: submit aborted via beforeSubmit callback\"), this;if (this.trigger(\"form-submit-validate\", [v, this, t, m]), m.veto) return a(\"ajaxSubmit: submit vetoed via form-submit-validate trigger\"), this;var g = e.param(v, d);p && (g = g ? g + \"&\" + p : p), \"GET\" == t.type.toUpperCase() ? (t.url += (t.url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + g, t.data = null) : t.data = g;var x = [];if (t.resetForm && x.push(function () {\n\t\t\t\t\tf.resetForm();\n\t\t\t\t}), t.clearForm && x.push(function () {\n\t\t\t\t\tf.clearForm(t.includeHidden);\n\t\t\t\t}), !t.dataType && t.target) {\n\t\t\t\t\tvar y = t.success || function () {};x.push(function (r) {\n\t\t\t\t\t\tvar a = t.replaceTarget ? \"replaceWith\" : \"html\";e(t.target)[a](r).each(y, arguments);\n\t\t\t\t\t});\n\t\t\t\t} else t.success && x.push(t.success);if (t.success = function (e, r, a) {\n\t\t\t\t\tfor (var n = t.context || this, i = 0, o = x.length; o > i; i++) {\n\t\t\t\t\t\tx[i].apply(n, [e, r, a || f, f]);\n\t\t\t\t\t}\n\t\t\t\t}, t.error) {\n\t\t\t\t\tvar b = t.error;t.error = function (e, r, a) {\n\t\t\t\t\t\tvar n = t.context || this;b.apply(n, [e, r, a, f]);\n\t\t\t\t\t};\n\t\t\t\t}if (t.complete) {\n\t\t\t\t\tvar T = t.complete;t.complete = function (e, r) {\n\t\t\t\t\t\tvar a = t.context || this;T.apply(a, [e, r, f]);\n\t\t\t\t\t};\n\t\t\t\t}var j = e(\"input[type=file]:enabled\", this).filter(function () {\n\t\t\t\t\treturn \"\" !== e(this).val();\n\t\t\t\t}),\n\t\t\t\t w = j.length > 0,\n\t\t\t\t S = \"multipart/form-data\",\n\t\t\t\t D = f.attr(\"enctype\") == S || f.attr(\"encoding\") == S,\n\t\t\t\t k = n.fileapi && n.formdata;a(\"fileAPI :\" + k);var A,\n\t\t\t\t L = (w || D) && !k;t.iframe !== !1 && (t.iframe || L) ? t.closeKeepAlive ? e.get(t.closeKeepAlive, function () {\n\t\t\t\t\tA = s(v);\n\t\t\t\t}) : A = s(v) : A = (w || D) && k ? o(v) : e.ajax(t), f.removeData(\"jqxhr\").data(\"jqxhr\", A);for (var E = 0; E < h.length; E++) {\n\t\t\t\t\th[E] = null;\n\t\t\t\t}return this.trigger(\"form-submit-notify\", [this, t]), this;\n\t\t\t}, e.fn.ajaxForm = function (n) {\n\t\t\t\tif (n = n || {}, n.delegation = n.delegation && e.isFunction(e.fn.on), !n.delegation && 0 === this.length) {\n\t\t\t\t\tvar i = { s: this.selector, c: this.context };return !e.isReady && i.s ? (a(\"DOM not ready, queuing ajaxForm\"), e(function () {\n\t\t\t\t\t\te(i.s, i.c).ajaxForm(n);\n\t\t\t\t\t}), this) : (a(\"terminating; zero elements found by selector\" + (e.isReady ? \"\" : \" (DOM not ready)\")), this);\n\t\t\t\t}return n.delegation ? (e(document).off(\"submit.form-plugin\", this.selector, t).off(\"click.form-plugin\", this.selector, r).on(\"submit.form-plugin\", this.selector, n, t).on(\"click.form-plugin\", this.selector, n, r), this) : this.ajaxFormUnbind().bind(\"submit.form-plugin\", n, t).bind(\"click.form-plugin\", n, r);\n\t\t\t}, e.fn.ajaxFormUnbind = function () {\n\t\t\t\treturn this.unbind(\"submit.form-plugin click.form-plugin\");\n\t\t\t}, e.fn.formToArray = function (t, r) {\n\t\t\t\tvar a = [];if (0 === this.length) return a;var i,\n\t\t\t\t o = this[0],\n\t\t\t\t s = this.attr(\"id\"),\n\t\t\t\t u = t ? o.getElementsByTagName(\"*\") : o.elements;if (u && !/MSIE [678]/.test(navigator.userAgent) && (u = e(u).get()), s && (i = e(':input[form=\"' + s + '\"]').get(), i.length && (u = (u || []).concat(i))), !u || !u.length) return a;var c, l, f, m, d, p, h;for (c = 0, p = u.length; p > c; c++) {\n\t\t\t\t\tif (d = u[c], f = d.name, f && !d.disabled) if (t && o.clk && \"image\" == d.type) o.clk == d && (a.push({ name: f, value: e(d).val(), type: d.type }), a.push({ name: f + \".x\", value: o.clk_x }, { name: f + \".y\", value: o.clk_y }));else if (m = e.fieldValue(d, !0), m && m.constructor == Array) for (r && r.push(d), l = 0, h = m.length; h > l; l++) {\n\t\t\t\t\t\ta.push({ name: f, value: m[l] });\n\t\t\t\t\t} else if (n.fileapi && \"file\" == d.type) {\n\t\t\t\t\t\tr && r.push(d);var v = d.files;if (v.length) for (l = 0; l < v.length; l++) {\n\t\t\t\t\t\t\ta.push({ name: f, value: v[l], type: d.type });\n\t\t\t\t\t\t} else a.push({ name: f, value: \"\", type: d.type });\n\t\t\t\t\t} else null !== m && \"undefined\" != typeof m && (r && r.push(d), a.push({ name: f, value: m, type: d.type, required: d.required }));\n\t\t\t\t}if (!t && o.clk) {\n\t\t\t\t\tvar g = e(o.clk),\n\t\t\t\t\t x = g[0];f = x.name, f && !x.disabled && \"image\" == x.type && (a.push({ name: f, value: g.val() }), a.push({ name: f + \".x\", value: o.clk_x }, { name: f + \".y\", value: o.clk_y }));\n\t\t\t\t}return a;\n\t\t\t}, e.fn.formSerialize = function (t) {\n\t\t\t\treturn e.param(this.formToArray(t));\n\t\t\t}, e.fn.fieldSerialize = function (t) {\n\t\t\t\tvar r = [];return this.each(function () {\n\t\t\t\t\tvar a = this.name;if (a) {\n\t\t\t\t\t\tvar n = e.fieldValue(this, t);if (n && n.constructor == Array) for (var i = 0, o = n.length; o > i; i++) {\n\t\t\t\t\t\t\tr.push({ name: a, value: n[i] });\n\t\t\t\t\t\t} else null !== n && \"undefined\" != typeof n && r.push({ name: this.name, value: n });\n\t\t\t\t\t}\n\t\t\t\t}), e.param(r);\n\t\t\t}, e.fn.fieldValue = function (t) {\n\t\t\t\tfor (var r = [], a = 0, n = this.length; n > a; a++) {\n\t\t\t\t\tvar i = this[a],\n\t\t\t\t\t o = e.fieldValue(i, t);null === o || \"undefined\" == typeof o || o.constructor == Array && !o.length || (o.constructor == Array ? e.merge(r, o) : r.push(o));\n\t\t\t\t}return r;\n\t\t\t}, e.fieldValue = function (t, r) {\n\t\t\t\tvar a = t.name,\n\t\t\t\t n = t.type,\n\t\t\t\t i = t.tagName.toLowerCase();if (void 0 === r && (r = !0), r && (!a || t.disabled || \"reset\" == n || \"button\" == n || (\"checkbox\" == n || \"radio\" == n) && !t.checked || (\"submit\" == n || \"image\" == n) && t.form && t.form.clk != t || \"select\" == i && -1 == t.selectedIndex)) return null;if (\"select\" == i) {\n\t\t\t\t\tvar o = t.selectedIndex;if (0 > o) return null;for (var s = [], u = t.options, c = \"select-one\" == n, l = c ? o + 1 : u.length, f = c ? o : 0; l > f; f++) {\n\t\t\t\t\t\tvar m = u[f];if (m.selected) {\n\t\t\t\t\t\t\tvar d = m.value;if (d || (d = m.attributes && m.attributes.value && !m.attributes.value.specified ? m.text : m.value), c) return d;s.push(d);\n\t\t\t\t\t\t}\n\t\t\t\t\t}return s;\n\t\t\t\t}return e(t).val();\n\t\t\t}, e.fn.clearForm = function (t) {\n\t\t\t\treturn this.each(function () {\n\t\t\t\t\te(\"input,select,textarea\", this).clearFields(t);\n\t\t\t\t});\n\t\t\t}, e.fn.clearFields = e.fn.clearInputs = function (t) {\n\t\t\t\tvar r = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function () {\n\t\t\t\t\tvar a = this.type,\n\t\t\t\t\t n = this.tagName.toLowerCase();r.test(a) || \"textarea\" == n ? this.value = \"\" : \"checkbox\" == a || \"radio\" == a ? this.checked = !1 : \"select\" == n ? this.selectedIndex = -1 : \"file\" == a ? /MSIE/.test(navigator.userAgent) ? e(this).replaceWith(e(this).clone(!0)) : e(this).val(\"\") : t && (t === !0 && /hidden/.test(a) || \"string\" == typeof t && e(this).is(t)) && (this.value = \"\");\n\t\t\t\t});\n\t\t\t}, e.fn.resetForm = function () {\n\t\t\t\treturn this.each(function () {\n\t\t\t\t\t(\"function\" == typeof this.reset || \"object\" == _typeof(this.reset) && !this.reset.nodeType) && this.reset();\n\t\t\t\t});\n\t\t\t}, e.fn.enable = function (e) {\n\t\t\t\treturn void 0 === e && (e = !0), this.each(function () {\n\t\t\t\t\tthis.disabled = !e;\n\t\t\t\t});\n\t\t\t}, e.fn.selected = function (t) {\n\t\t\t\treturn void 0 === t && (t = !0), this.each(function () {\n\t\t\t\t\tvar r = this.type;if (\"checkbox\" == r || \"radio\" == r) this.checked = t;else if (\"option\" == this.tagName.toLowerCase()) {\n\t\t\t\t\t\tvar a = e(this).parent(\"select\");t && a[0] && \"select-one\" == a[0].type && a.find(\"option\").selected(!1), this.selected = t;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, e.fn.ajaxSubmit.debug = !1;\n\t\t});\n\n\t\t/*! jQuery Validation Plugin - v1.12.0 - 4/1/2014\n * http://jqueryvalidation.org/\n * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */\n\t\t!function (a) {\n\t\t\ta.extend(a.fn, { validate: function validate(b) {\n\t\t\t\t\tif (!this.length) return void (b && b.debug && window.console && console.warn(\"Nothing selected, can't validate, returning nothing.\"));var c = a.data(this[0], \"validator\");return c ? c : (this.attr(\"novalidate\", \"novalidate\"), c = new a.validator(b, this[0]), a.data(this[0], \"validator\", c), c.settings.onsubmit && (this.validateDelegate(\":submit\", \"click\", function (b) {\n\t\t\t\t\t\tc.settings.submitHandler && (c.submitButton = b.target), a(b.target).hasClass(\"cancel\") && (c.cancelSubmit = !0), void 0 !== a(b.target).attr(\"formnovalidate\") && (c.cancelSubmit = !0);\n\t\t\t\t\t}), this.submit(function (b) {\n\t\t\t\t\t\tfunction d() {\n\t\t\t\t\t\t\tvar d;return c.settings.submitHandler ? (c.submitButton && (d = a(\"
\").attr(\"name\", c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)), c.settings.submitHandler.call(c, c.currentForm, b), c.submitButton && d.remove(), !1) : !0;\n\t\t\t\t\t\t}return c.settings.debug && b.preventDefault(), c.cancelSubmit ? (c.cancelSubmit = !1, d()) : c.form() ? c.pendingRequest ? (c.formSubmitted = !0, !1) : d() : (c.focusInvalid(), !1);\n\t\t\t\t\t})), c);\n\t\t\t\t}, valid: function valid() {\n\t\t\t\t\tvar b, c;return a(this[0]).is(\"form\") ? b = this.validate().form() : (b = !0, c = a(this[0].form).validate(), this.each(function () {\n\t\t\t\t\t\tb = c.element(this) && b;\n\t\t\t\t\t})), b;\n\t\t\t\t}, removeAttrs: function removeAttrs(b) {\n\t\t\t\t\tvar c = {},\n\t\t\t\t\t d = this;return a.each(b.split(/\\s/), function (a, b) {\n\t\t\t\t\t\tc[b] = d.attr(b), d.removeAttr(b);\n\t\t\t\t\t}), c;\n\t\t\t\t}, rules: function rules(b, c) {\n\t\t\t\t\tvar d,\n\t\t\t\t\t e,\n\t\t\t\t\t f,\n\t\t\t\t\t g,\n\t\t\t\t\t h,\n\t\t\t\t\t i,\n\t\t\t\t\t j = this[0];if (b) switch (d = a.data(j.form, \"validator\").settings, e = d.rules, f = a.validator.staticRules(j), b) {case \"add\":\n\t\t\t\t\t\t\ta.extend(f, a.validator.normalizeRule(c)), delete f.messages, e[j.name] = f, c.messages && (d.messages[j.name] = a.extend(d.messages[j.name], c.messages));break;case \"remove\":\n\t\t\t\t\t\t\treturn c ? (i = {}, a.each(c.split(/\\s/), function (b, c) {\n\t\t\t\t\t\t\t\ti[c] = f[c], delete f[c], \"required\" === c && a(j).removeAttr(\"aria-required\");\n\t\t\t\t\t\t\t}), i) : (delete e[j.name], f);}return g = a.validator.normalizeRules(a.extend({}, a.validator.classRules(j), a.validator.attributeRules(j), a.validator.dataRules(j), a.validator.staticRules(j)), j), g.required && (h = g.required, delete g.required, g = a.extend({ required: h }, g), a(j).attr(\"aria-required\", \"true\")), g.remote && (h = g.remote, delete g.remote, g = a.extend(g, { remote: h })), g;\n\t\t\t\t} }), a.extend(a.expr[\":\"], { blank: function blank(b) {\n\t\t\t\t\treturn !a.trim(\"\" + a(b).val());\n\t\t\t\t}, filled: function filled(b) {\n\t\t\t\t\treturn !!a.trim(\"\" + a(b).val());\n\t\t\t\t}, unchecked: function unchecked(b) {\n\t\t\t\t\treturn !a(b).prop(\"checked\");\n\t\t\t\t} }), a.validator = function (b, c) {\n\t\t\t\tthis.settings = a.extend(!0, {}, a.validator.defaults, b), this.currentForm = c, this.init();\n\t\t\t}, a.validator.format = function (b, c) {\n\t\t\t\treturn 1 === arguments.length ? function () {\n\t\t\t\t\tvar c = a.makeArray(arguments);return c.unshift(b), a.validator.format.apply(this, c);\n\t\t\t\t} : (arguments.length > 2 && c.constructor !== Array && (c = a.makeArray(arguments).slice(1)), c.constructor !== Array && (c = [c]), a.each(c, function (a, c) {\n\t\t\t\t\tb = b.replace(new RegExp(\"\\\\{\" + a + \"\\\\}\", \"g\"), function () {\n\t\t\t\t\t\treturn c;\n\t\t\t\t\t});\n\t\t\t\t}), b);\n\t\t\t}, a.extend(a.validator, { defaults: { messages: {}, groups: {}, rules: {}, errorClass: \"error\", validClass: \"valid\", errorElement: \"label\", focusInvalid: !0, errorContainer: a([]), errorLabelContainer: a([]), onsubmit: !0, ignore: \":hidden\", ignoreTitle: !1, onfocusin: function onfocusin(a) {\n\t\t\t\t\t\tthis.lastActive = a, this.settings.focusCleanup && !this.blockFocusCleanup && (this.settings.unhighlight && this.settings.unhighlight.call(this, a, this.settings.errorClass, this.settings.validClass), this.addWrapper(this.errorsFor(a)).hide());\n\t\t\t\t\t}, onfocusout: function onfocusout(a) {\n\t\t\t\t\t\tthis.checkable(a) || !(a.name in this.submitted) && this.optional(a) || this.element(a);\n\t\t\t\t\t}, onkeyup: function onkeyup(a, b) {\n\t\t\t\t\t\t(9 !== b.which || \"\" !== this.elementValue(a)) && (a.name in this.submitted || a === this.lastElement) && this.element(a);\n\t\t\t\t\t}, onclick: function onclick(a) {\n\t\t\t\t\t\ta.name in this.submitted ? this.element(a) : a.parentNode.name in this.submitted && this.element(a.parentNode);\n\t\t\t\t\t}, highlight: function highlight(b, c, d) {\n\t\t\t\t\t\t\"radio\" === b.type ? this.findByName(b.name).addClass(c).removeClass(d) : a(b).addClass(c).removeClass(d);\n\t\t\t\t\t}, unhighlight: function unhighlight(b, c, d) {\n\t\t\t\t\t\t\"radio\" === b.type ? this.findByName(b.name).removeClass(c).addClass(d) : a(b).removeClass(c).addClass(d);\n\t\t\t\t\t} }, setDefaults: function setDefaults(b) {\n\t\t\t\t\ta.extend(a.validator.defaults, b);\n\t\t\t\t}, messages: { required: \"This field is required.\", remote: \"Please fix this field.\", email: \"Please enter a valid email address.\", url: \"Please enter a valid URL.\", date: \"Please enter a valid date.\", dateISO: \"Please enter a valid date (ISO).\", number: \"Please enter a valid number.\", digits: \"Please enter only digits.\", creditcard: \"Please enter a valid credit card number.\", equalTo: \"Please enter the same value again.\", maxlength: a.validator.format(\"Please enter no more than {0} characters.\"), minlength: a.validator.format(\"Please enter at least {0} characters.\"), rangelength: a.validator.format(\"Please enter a value between {0} and {1} characters long.\"), range: a.validator.format(\"Please enter a value between {0} and {1}.\"), max: a.validator.format(\"Please enter a value less than or equal to {0}.\"), min: a.validator.format(\"Please enter a value greater than or equal to {0}.\") }, autoCreateRanges: !1, prototype: { init: function init() {\n\t\t\t\t\t\tfunction b(b) {\n\t\t\t\t\t\t\tvar c = a.data(this[0].form, \"validator\"),\n\t\t\t\t\t\t\t d = \"on\" + b.type.replace(/^validate/, \"\"),\n\t\t\t\t\t\t\t e = c.settings;e[d] && !this.is(e.ignore) && e[d].call(c, this[0], b);\n\t\t\t\t\t\t}this.labelContainer = a(this.settings.errorLabelContainer), this.errorContext = this.labelContainer.length && this.labelContainer || a(this.currentForm), this.containers = a(this.settings.errorContainer).add(this.settings.errorLabelContainer), this.submitted = {}, this.valueCache = {}, this.pendingRequest = 0, this.pending = {}, this.invalid = {}, this.reset();var c,\n\t\t\t\t\t\t d = this.groups = {};a.each(this.settings.groups, function (b, c) {\n\t\t\t\t\t\t\t\"string\" == typeof c && (c = c.split(/\\s/)), a.each(c, function (a, c) {\n\t\t\t\t\t\t\t\td[c] = b;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}), c = this.settings.rules, a.each(c, function (b, d) {\n\t\t\t\t\t\t\tc[b] = a.validator.normalizeRule(d);\n\t\t\t\t\t\t}), a(this.currentForm).validateDelegate(\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] \", \"focusin focusout keyup\", b).validateDelegate(\"[type='radio'], [type='checkbox'], select, option\", \"click\", b), this.settings.invalidHandler && a(this.currentForm).bind(\"invalid-form.validate\", this.settings.invalidHandler), a(this.currentForm).find(\"[required], [data-rule-required], .required\").attr(\"aria-required\", \"true\");\n\t\t\t\t\t}, form: function form() {\n\t\t\t\t\t\treturn this.checkForm(), a.extend(this.submitted, this.errorMap), this.invalid = a.extend({}, this.errorMap), this.valid() || a(this.currentForm).triggerHandler(\"invalid-form\", [this]), this.showErrors(), this.valid();\n\t\t\t\t\t}, checkForm: function checkForm() {\n\t\t\t\t\t\tthis.prepareForm();for (var a = 0, b = this.currentElements = this.elements(); b[a]; a++) {\n\t\t\t\t\t\t\tthis.check(b[a]);\n\t\t\t\t\t\t}return this.valid();\n\t\t\t\t\t}, element: function element(b) {\n\t\t\t\t\t\tvar c = this.clean(b),\n\t\t\t\t\t\t d = this.validationTargetFor(c),\n\t\t\t\t\t\t e = !0;return this.lastElement = d, void 0 === d ? delete this.invalid[c.name] : (this.prepareElement(d), this.currentElements = a(d), e = this.check(d) !== !1, e ? delete this.invalid[d.name] : this.invalid[d.name] = !0), a(b).attr(\"aria-invalid\", !e), this.numberOfInvalids() || (this.toHide = this.toHide.add(this.containers)), this.showErrors(), e;\n\t\t\t\t\t}, showErrors: function showErrors(b) {\n\t\t\t\t\t\tif (b) {\n\t\t\t\t\t\t\ta.extend(this.errorMap, b), this.errorList = [];for (var c in b) {\n\t\t\t\t\t\t\t\tthis.errorList.push({ message: b[c], element: this.findByName(c)[0] });\n\t\t\t\t\t\t\t}this.successList = a.grep(this.successList, function (a) {\n\t\t\t\t\t\t\t\treturn !(a.name in b);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this.defaultShowErrors();\n\t\t\t\t\t}, resetForm: function resetForm() {\n\t\t\t\t\t\ta.fn.resetForm && a(this.currentForm).resetForm(), this.submitted = {}, this.lastElement = null, this.prepareForm(), this.hideErrors(), this.elements().removeClass(this.settings.errorClass).removeData(\"previousValue\").removeAttr(\"aria-invalid\");\n\t\t\t\t\t}, numberOfInvalids: function numberOfInvalids() {\n\t\t\t\t\t\treturn this.objectLength(this.invalid);\n\t\t\t\t\t}, objectLength: function objectLength(a) {\n\t\t\t\t\t\tvar b,\n\t\t\t\t\t\t c = 0;for (b in a) {\n\t\t\t\t\t\t\tc++;\n\t\t\t\t\t\t}return c;\n\t\t\t\t\t}, hideErrors: function hideErrors() {\n\t\t\t\t\t\tthis.addWrapper(this.toHide).hide();\n\t\t\t\t\t}, valid: function valid() {\n\t\t\t\t\t\treturn 0 === this.size();\n\t\t\t\t\t}, size: function size() {\n\t\t\t\t\t\treturn this.errorList.length;\n\t\t\t\t\t}, focusInvalid: function focusInvalid() {\n\t\t\t\t\t\tif (this.settings.focusInvalid) try {\n\t\t\t\t\t\t\ta(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(\":visible\").focus().trigger(\"focusin\");\n\t\t\t\t\t\t} catch (b) {}\n\t\t\t\t\t}, findLastActive: function findLastActive() {\n\t\t\t\t\t\tvar b = this.lastActive;return b && 1 === a.grep(this.errorList, function (a) {\n\t\t\t\t\t\t\treturn a.element.name === b.name;\n\t\t\t\t\t\t}).length && b;\n\t\t\t\t\t}, elements: function elements() {\n\t\t\t\t\t\tvar b = this,\n\t\t\t\t\t\t c = {};return a(this.currentForm).find(\"input, select, textarea\").not(\":submit, :reset, :image, [disabled]\").not(this.settings.ignore).filter(function () {\n\t\t\t\t\t\t\treturn !this.name && b.settings.debug && window.console && console.error(\"%o has no name assigned\", this), this.name in c || !b.objectLength(a(this).rules()) ? !1 : (c[this.name] = !0, !0);\n\t\t\t\t\t\t});\n\t\t\t\t\t}, clean: function clean(b) {\n\t\t\t\t\t\treturn a(b)[0];\n\t\t\t\t\t}, errors: function errors() {\n\t\t\t\t\t\tvar b = this.settings.errorClass.split(\" \").join(\".\");return a(this.settings.errorElement + \".\" + b, this.errorContext);\n\t\t\t\t\t}, reset: function reset() {\n\t\t\t\t\t\tthis.successList = [], this.errorList = [], this.errorMap = {}, this.toShow = a([]), this.toHide = a([]), this.currentElements = a([]);\n\t\t\t\t\t}, prepareForm: function prepareForm() {\n\t\t\t\t\t\tthis.reset(), this.toHide = this.errors().add(this.containers);\n\t\t\t\t\t}, prepareElement: function prepareElement(a) {\n\t\t\t\t\t\tthis.reset(), this.toHide = this.errorsFor(a);\n\t\t\t\t\t}, elementValue: function elementValue(b) {\n\t\t\t\t\t\tvar c,\n\t\t\t\t\t\t d = a(b),\n\t\t\t\t\t\t e = d.attr(\"type\");return \"radio\" === e || \"checkbox\" === e ? a(\"input[name='\" + d.attr(\"name\") + \"']:checked\").val() : (c = d.val(), \"string\" == typeof c ? c.replace(/\\r/g, \"\") : c);\n\t\t\t\t\t}, check: function check(b) {\n\t\t\t\t\t\tb = this.validationTargetFor(this.clean(b));var c,\n\t\t\t\t\t\t d,\n\t\t\t\t\t\t e,\n\t\t\t\t\t\t f = a(b).rules(),\n\t\t\t\t\t\t g = a.map(f, function (a, b) {\n\t\t\t\t\t\t\treturn b;\n\t\t\t\t\t\t}).length,\n\t\t\t\t\t\t h = !1,\n\t\t\t\t\t\t i = this.elementValue(b);for (d in f) {\n\t\t\t\t\t\t\te = { method: d, parameters: f[d] };try {\n\t\t\t\t\t\t\t\tif (c = a.validator.methods[d].call(this, i, b, e.parameters), \"dependency-mismatch\" === c && 1 === g) {\n\t\t\t\t\t\t\t\t\th = !0;continue;\n\t\t\t\t\t\t\t\t}if (h = !1, \"pending\" === c) return void (this.toHide = this.toHide.not(this.errorsFor(b)));if (!c) return this.formatAndAdd(b, e), !1;\n\t\t\t\t\t\t\t} catch (j) {\n\t\t\t\t\t\t\t\tthrow this.settings.debug && window.console && console.log(\"Exception occurred when checking element \" + b.id + \", check the '\" + e.method + \"' method.\", j), j;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}if (!h) return this.objectLength(f) && this.successList.push(b), !0;\n\t\t\t\t\t}, customDataMessage: function customDataMessage(b, c) {\n\t\t\t\t\t\treturn a(b).data(\"msg\" + c[0].toUpperCase() + c.substring(1).toLowerCase()) || a(b).data(\"msg\");\n\t\t\t\t\t}, customMessage: function customMessage(a, b) {\n\t\t\t\t\t\tvar c = this.settings.messages[a];return c && (c.constructor === String ? c : c[b]);\n\t\t\t\t\t}, findDefined: function findDefined() {\n\t\t\t\t\t\tfor (var a = 0; a < arguments.length; a++) {\n\t\t\t\t\t\t\tif (void 0 !== arguments[a]) return arguments[a];\n\t\t\t\t\t\t}return void 0;\n\t\t\t\t\t}, defaultMessage: function defaultMessage(b, c) {\n\t\t\t\t\t\treturn this.findDefined(this.customMessage(b.name, c), this.customDataMessage(b, c), !this.settings.ignoreTitle && b.title || void 0, a.validator.messages[c], \"
Warning: No message defined for \" + b.name + \"\");\n\t\t\t\t\t}, formatAndAdd: function formatAndAdd(b, c) {\n\t\t\t\t\t\tvar d = this.defaultMessage(b, c.method),\n\t\t\t\t\t\t e = /\\$?\\{(\\d+)\\}/g;\"function\" == typeof d ? d = d.call(this, c.parameters, b) : e.test(d) && (d = a.validator.format(d.replace(e, \"{$1}\"), c.parameters)), this.errorList.push({ message: d, element: b, method: c.method }), this.errorMap[b.name] = d, this.submitted[b.name] = d;\n\t\t\t\t\t}, addWrapper: function addWrapper(a) {\n\t\t\t\t\t\treturn this.settings.wrapper && (a = a.add(a.parent(this.settings.wrapper))), a;\n\t\t\t\t\t}, defaultShowErrors: function defaultShowErrors() {\n\t\t\t\t\t\tvar a, b, c;for (a = 0; this.errorList[a]; a++) {\n\t\t\t\t\t\t\tc = this.errorList[a], this.settings.highlight && this.settings.highlight.call(this, c.element, this.settings.errorClass, this.settings.validClass), this.showLabel(c.element, c.message);\n\t\t\t\t\t\t}if (this.errorList.length && (this.toShow = this.toShow.add(this.containers)), this.settings.success) for (a = 0; this.successList[a]; a++) {\n\t\t\t\t\t\t\tthis.showLabel(this.successList[a]);\n\t\t\t\t\t\t}if (this.settings.unhighlight) for (a = 0, b = this.validElements(); b[a]; a++) {\n\t\t\t\t\t\t\tthis.settings.unhighlight.call(this, b[a], this.settings.errorClass, this.settings.validClass);\n\t\t\t\t\t\t}this.toHide = this.toHide.not(this.toShow), this.hideErrors(), this.addWrapper(this.toShow).show();\n\t\t\t\t\t}, validElements: function validElements() {\n\t\t\t\t\t\treturn this.currentElements.not(this.invalidElements());\n\t\t\t\t\t}, invalidElements: function invalidElements() {\n\t\t\t\t\t\treturn a(this.errorList).map(function () {\n\t\t\t\t\t\t\treturn this.element;\n\t\t\t\t\t\t});\n\t\t\t\t\t}, showLabel: function showLabel(b, c) {\n\t\t\t\t\t\tvar d = this.errorsFor(b);d.length ? (d.removeClass(this.settings.validClass).addClass(this.settings.errorClass), d.html(c)) : (d = a(\"<\" + this.settings.errorElement + \">\").attr(\"for\", this.idOrName(b)).addClass(this.settings.errorClass).html(c || \"\"), this.settings.wrapper && (d = d.hide().show().wrap(\"<\" + this.settings.wrapper + \"/>\").parent()), this.labelContainer.append(d).length || (this.settings.errorPlacement ? this.settings.errorPlacement(d, a(b)) : d.insertAfter(b))), !c && this.settings.success && (d.text(\"\"), \"string\" == typeof this.settings.success ? d.addClass(this.settings.success) : this.settings.success(d, b)), this.toShow = this.toShow.add(d);\n\t\t\t\t\t}, errorsFor: function errorsFor(b) {\n\t\t\t\t\t\tvar c = this.idOrName(b);return this.errors().filter(function () {\n\t\t\t\t\t\t\treturn a(this).attr(\"for\") === c;\n\t\t\t\t\t\t});\n\t\t\t\t\t}, idOrName: function idOrName(a) {\n\t\t\t\t\t\treturn this.groups[a.name] || (this.checkable(a) ? a.name : a.id || a.name);\n\t\t\t\t\t}, validationTargetFor: function validationTargetFor(a) {\n\t\t\t\t\t\treturn this.checkable(a) && (a = this.findByName(a.name).not(this.settings.ignore)[0]), a;\n\t\t\t\t\t}, checkable: function checkable(a) {\n\t\t\t\t\t\treturn (/radio|checkbox/i.test(a.type)\n\t\t\t\t\t\t);\n\t\t\t\t\t}, findByName: function findByName(b) {\n\t\t\t\t\t\treturn a(this.currentForm).find(\"[name='\" + b + \"']\");\n\t\t\t\t\t}, getLength: function getLength(b, c) {\n\t\t\t\t\t\tswitch (c.nodeName.toLowerCase()) {case \"select\":\n\t\t\t\t\t\t\t\treturn a(\"option:selected\", c).length;case \"input\":\n\t\t\t\t\t\t\t\tif (this.checkable(c)) return this.findByName(c.name).filter(\":checked\").length;}return b.length;\n\t\t\t\t\t}, depend: function depend(a, b) {\n\t\t\t\t\t\treturn this.dependTypes[typeof a === \"undefined\" ? \"undefined\" : _typeof(a)] ? this.dependTypes[typeof a === \"undefined\" ? \"undefined\" : _typeof(a)](a, b) : !0;\n\t\t\t\t\t}, dependTypes: { \"boolean\": function boolean(a) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}, string: function string(b, c) {\n\t\t\t\t\t\t\treturn !!a(b, c.form).length;\n\t\t\t\t\t\t}, \"function\": function _function(a, b) {\n\t\t\t\t\t\t\treturn a(b);\n\t\t\t\t\t\t} }, optional: function optional(b) {\n\t\t\t\t\t\tvar c = this.elementValue(b);return !a.validator.methods.required.call(this, c, b) && \"dependency-mismatch\";\n\t\t\t\t\t}, startRequest: function startRequest(a) {\n\t\t\t\t\t\tthis.pending[a.name] || (this.pendingRequest++, this.pending[a.name] = !0);\n\t\t\t\t\t}, stopRequest: function stopRequest(b, c) {\n\t\t\t\t\t\tthis.pendingRequest--, this.pendingRequest < 0 && (this.pendingRequest = 0), delete this.pending[b.name], c && 0 === this.pendingRequest && this.formSubmitted && this.form() ? (a(this.currentForm).submit(), this.formSubmitted = !1) : !c && 0 === this.pendingRequest && this.formSubmitted && (a(this.currentForm).triggerHandler(\"invalid-form\", [this]), this.formSubmitted = !1);\n\t\t\t\t\t}, previousValue: function previousValue(b) {\n\t\t\t\t\t\treturn a.data(b, \"previousValue\") || a.data(b, \"previousValue\", { old: null, valid: !0, message: this.defaultMessage(b, \"remote\") });\n\t\t\t\t\t} }, classRuleSettings: { required: { required: !0 }, email: { email: !0 }, url: { url: !0 }, date: { date: !0 }, dateISO: { dateISO: !0 }, number: { number: !0 }, digits: { digits: !0 }, creditcard: { creditcard: !0 } }, addClassRules: function addClassRules(b, c) {\n\t\t\t\t\tb.constructor === String ? this.classRuleSettings[b] = c : a.extend(this.classRuleSettings, b);\n\t\t\t\t}, classRules: function classRules(b) {\n\t\t\t\t\tvar c = {},\n\t\t\t\t\t d = a(b).attr(\"class\");return d && a.each(d.split(\" \"), function () {\n\t\t\t\t\t\tthis in a.validator.classRuleSettings && a.extend(c, a.validator.classRuleSettings[this]);\n\t\t\t\t\t}), c;\n\t\t\t\t}, attributeRules: function attributeRules(b) {\n\t\t\t\t\tvar c,\n\t\t\t\t\t d,\n\t\t\t\t\t e = {},\n\t\t\t\t\t f = a(b),\n\t\t\t\t\t g = b.getAttribute(\"type\");for (c in a.validator.methods) {\n\t\t\t\t\t\t\"required\" === c ? (d = b.getAttribute(c), \"\" === d && (d = !0), d = !!d) : d = f.attr(c), /min|max/.test(c) && (null === g || /number|range|text/.test(g)) && (d = Number(d)), d || 0 === d ? e[c] = d : g === c && \"range\" !== g && (e[c] = !0);\n\t\t\t\t\t}return e.maxlength && /-1|2147483647|524288/.test(e.maxlength) && delete e.maxlength, e;\n\t\t\t\t}, dataRules: function dataRules(b) {\n\t\t\t\t\tvar c,\n\t\t\t\t\t d,\n\t\t\t\t\t e = {},\n\t\t\t\t\t f = a(b);for (c in a.validator.methods) {\n\t\t\t\t\t\td = f.data(\"rule\" + c[0].toUpperCase() + c.substring(1).toLowerCase()), void 0 !== d && (e[c] = d);\n\t\t\t\t\t}return e;\n\t\t\t\t}, staticRules: function staticRules(b) {\n\t\t\t\t\tvar c = {},\n\t\t\t\t\t d = a.data(b.form, \"validator\");return d.settings.rules && (c = a.validator.normalizeRule(d.settings.rules[b.name]) || {}), c;\n\t\t\t\t}, normalizeRules: function normalizeRules(b, c) {\n\t\t\t\t\treturn a.each(b, function (d, e) {\n\t\t\t\t\t\tif (e === !1) return void delete b[d];if (e.param || e.depends) {\n\t\t\t\t\t\t\tvar f = !0;switch (_typeof(e.depends)) {case \"string\":\n\t\t\t\t\t\t\t\t\tf = !!a(e.depends, c.form).length;break;case \"function\":\n\t\t\t\t\t\t\t\t\tf = e.depends.call(c, c);}f ? b[d] = void 0 !== e.param ? e.param : !0 : delete b[d];\n\t\t\t\t\t\t}\n\t\t\t\t\t}), a.each(b, function (d, e) {\n\t\t\t\t\t\tb[d] = a.isFunction(e) ? e(c) : e;\n\t\t\t\t\t}), a.each([\"minlength\", \"maxlength\"], function () {\n\t\t\t\t\t\tb[this] && (b[this] = Number(b[this]));\n\t\t\t\t\t}), a.each([\"rangelength\", \"range\"], function () {\n\t\t\t\t\t\tvar c;b[this] && (a.isArray(b[this]) ? b[this] = [Number(b[this][0]), Number(b[this][1])] : \"string\" == typeof b[this] && (c = b[this].split(/[\\s,]+/), b[this] = [Number(c[0]), Number(c[1])]));\n\t\t\t\t\t}), a.validator.autoCreateRanges && (b.min && b.max && (b.range = [b.min, b.max], delete b.min, delete b.max), b.minlength && b.maxlength && (b.rangelength = [b.minlength, b.maxlength], delete b.minlength, delete b.maxlength)), b;\n\t\t\t\t}, normalizeRule: function normalizeRule(b) {\n\t\t\t\t\tif (\"string\" == typeof b) {\n\t\t\t\t\t\tvar c = {};a.each(b.split(/\\s/), function () {\n\t\t\t\t\t\t\tc[this] = !0;\n\t\t\t\t\t\t}), b = c;\n\t\t\t\t\t}return b;\n\t\t\t\t}, addMethod: function addMethod(b, c, d) {\n\t\t\t\t\ta.validator.methods[b] = c, a.validator.messages[b] = void 0 !== d ? d : a.validator.messages[b], c.length < 3 && a.validator.addClassRules(b, a.validator.normalizeRule(b));\n\t\t\t\t}, methods: { required: function required(b, c, d) {\n\t\t\t\t\t\tif (!this.depend(d, c)) return \"dependency-mismatch\";if (\"select\" === c.nodeName.toLowerCase()) {\n\t\t\t\t\t\t\tvar e = a(c).val();return e && e.length > 0;\n\t\t\t\t\t\t}return this.checkable(c) ? this.getLength(b, c) > 0 : a.trim(b).length > 0;\n\t\t\t\t\t}, email: function email(a, b) {\n\t\t\t\t\t\treturn this.optional(b) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a);\n\t\t\t\t\t}, url: function url(a, b) {\n\t\t\t\t\t\treturn this.optional(b) || /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(a);\n\t\t\t\t\t}, date: function date(a, b) {\n\t\t\t\t\t\treturn this.optional(b) || !/Invalid|NaN/.test(new Date(a).toString());\n\t\t\t\t\t}, dateISO: function dateISO(a, b) {\n\t\t\t\t\t\treturn this.optional(b) || /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(a);\n\t\t\t\t\t}, number: function number(a, b) {\n\t\t\t\t\t\treturn this.optional(b) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(a);\n\t\t\t\t\t}, digits: function digits(a, b) {\n\t\t\t\t\t\treturn this.optional(b) || /^\\d+$/.test(a);\n\t\t\t\t\t}, creditcard: function creditcard(a, b) {\n\t\t\t\t\t\tif (this.optional(b)) return \"dependency-mismatch\";if (/[^0-9 \\-]+/.test(a)) return !1;var c,\n\t\t\t\t\t\t d,\n\t\t\t\t\t\t e = 0,\n\t\t\t\t\t\t f = 0,\n\t\t\t\t\t\t g = !1;if (a = a.replace(/\\D/g, \"\"), a.length < 13 || a.length > 19) return !1;for (c = a.length - 1; c >= 0; c--) {\n\t\t\t\t\t\t\td = a.charAt(c), f = parseInt(d, 10), g && (f *= 2) > 9 && (f -= 9), e += f, g = !g;\n\t\t\t\t\t\t}return e % 10 === 0;\n\t\t\t\t\t}, minlength: function minlength(b, c, d) {\n\t\t\t\t\t\tvar e = a.isArray(b) ? b.length : this.getLength(a.trim(b), c);return this.optional(c) || e >= d;\n\t\t\t\t\t}, maxlength: function maxlength(b, c, d) {\n\t\t\t\t\t\tvar e = a.isArray(b) ? b.length : this.getLength(a.trim(b), c);return this.optional(c) || d >= e;\n\t\t\t\t\t}, rangelength: function rangelength(b, c, d) {\n\t\t\t\t\t\tvar e = a.isArray(b) ? b.length : this.getLength(a.trim(b), c);return this.optional(c) || e >= d[0] && e <= d[1];\n\t\t\t\t\t}, min: function min(a, b, c) {\n\t\t\t\t\t\treturn this.optional(b) || a >= c;\n\t\t\t\t\t}, max: function max(a, b, c) {\n\t\t\t\t\t\treturn this.optional(b) || c >= a;\n\t\t\t\t\t}, range: function range(a, b, c) {\n\t\t\t\t\t\treturn this.optional(b) || a >= c[0] && a <= c[1];\n\t\t\t\t\t}, equalTo: function equalTo(b, c, d) {\n\t\t\t\t\t\tvar e = a(d);return this.settings.onfocusout && e.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\", function () {\n\t\t\t\t\t\t\ta(c).valid();\n\t\t\t\t\t\t}), b === e.val();\n\t\t\t\t\t}, remote: function remote(b, c, d) {\n\t\t\t\t\t\tif (this.optional(c)) return \"dependency-mismatch\";var e,\n\t\t\t\t\t\t f,\n\t\t\t\t\t\t g = this.previousValue(c);return this.settings.messages[c.name] || (this.settings.messages[c.name] = {}), g.originalMessage = this.settings.messages[c.name].remote, this.settings.messages[c.name].remote = g.message, d = \"string\" == typeof d && { url: d } || d, g.old === b ? g.valid : (g.old = b, e = this, this.startRequest(c), f = {}, f[c.name] = b, a.ajax(a.extend(!0, { url: d, mode: \"abort\", port: \"validate\" + c.name, dataType: \"json\", data: f, context: e.currentForm, success: function success(d) {\n\t\t\t\t\t\t\t\tvar f,\n\t\t\t\t\t\t\t\t h,\n\t\t\t\t\t\t\t\t i,\n\t\t\t\t\t\t\t\t j = d === !0 || \"true\" === d;e.settings.messages[c.name].remote = g.originalMessage, j ? (i = e.formSubmitted, e.prepareElement(c), e.formSubmitted = i, e.successList.push(c), delete e.invalid[c.name], e.showErrors()) : (f = {}, h = d || e.defaultMessage(c, \"remote\"), f[c.name] = g.message = a.isFunction(h) ? h(b) : h, e.invalid[c.name] = !0, e.showErrors(f)), g.valid = j, e.stopRequest(c, j);\n\t\t\t\t\t\t\t} }, d)), \"pending\");\n\t\t\t\t\t} } }), a.format = function () {\n\t\t\t\tthrow \"$.format has been deprecated. Please use $.validator.format instead.\";\n\t\t\t};\n\t\t}(jQuery), function (a) {\n\t\t\tvar b,\n\t\t\t c = {};a.ajaxPrefilter ? a.ajaxPrefilter(function (a, b, d) {\n\t\t\t\tvar e = a.port;\"abort\" === a.mode && (c[e] && c[e].abort(), c[e] = d);\n\t\t\t}) : (b = a.ajax, a.ajax = function (d) {\n\t\t\t\tvar e = (\"mode\" in d ? d : a.ajaxSettings).mode,\n\t\t\t\t f = (\"port\" in d ? d : a.ajaxSettings).port;return \"abort\" === e ? (c[f] && c[f].abort(), c[f] = b.apply(this, arguments), c[f]) : b.apply(this, arguments);\n\t\t\t});\n\t\t}(jQuery), function (a) {\n\t\t\ta.extend(a.fn, { validateDelegate: function validateDelegate(b, c, d) {\n\t\t\t\t\treturn this.bind(c, function (c) {\n\t\t\t\t\t\tvar e = a(c.target);return e.is(b) ? d.apply(e, arguments) : void 0;\n\t\t\t\t\t});\n\t\t\t\t} });\n\t\t}(jQuery);\n\n\t\t// ADDITIONAL JQUERY VALIDATE METHODS\n\t\t(function ($) {\n\n\t\t\t// Validate a multifield birthday\n\t\t\t$.validator.addMethod(\"mc_birthday\", function (date, element, grouping_class) {\n\t\t\t\tvar isValid = false;\n\t\t\t\tvar $fields = $('input:not(:hidden)', $(element).closest(grouping_class));\n\t\t\t\tif ($fields.filter(':filled').length == 0 && this.optional(element)) {\n\t\t\t\t\tisValid = true; // None have been filled out, so no error\n\t\t\t\t} else {\n\t\t\t\t\tvar dateArray = new Array();\n\t\t\t\t\tdateArray['month'] = $fields.filter(\"input[name*='[month]']\").val();\n\t\t\t\t\tdateArray['day'] = $fields.filter(\"input[name*='[day]']\").val();\n\n\t\t\t\t\t// correct month value\n\t\t\t\t\tdateArray['month'] = dateArray['month'] - 1;\n\n\t\t\t\t\tvar testDate = new Date(1970, dateArray['month'], dateArray['day']);\n\t\t\t\t\tif (testDate.getDate() != dateArray['day'] || testDate.getMonth() != dateArray['month']) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t}, \"Please enter a valid month and day.\");\n\n\t\t\t// Validate a multifield date\n\t\t\t$.validator.addMethod(\"mc_date\", function (date, element, grouping_class) {\n\t\t\t\tvar isValid = false;\n\t\t\t\tvar $fields = $('input:not(:hidden)', $(element).closest(grouping_class));\n\t\t\t\tif ($fields.filter(':filled').length == 0 && this.optional(element)) {\n\t\t\t\t\tisValid = true; // None have been filled out, so no error\n\t\t\t\t} else {\n\t\t\t\t\tvar dateArray = new Array();\n\t\t\t\t\tdateArray['month'] = $fields.filter(\"input[name*='[month]']\").val();\n\t\t\t\t\tdateArray['day'] = $fields.filter(\"input[name*='[day]']\").val();\n\t\t\t\t\tdateArray['year'] = $fields.filter(\"input[name*='[year]']\").val();\n\n\t\t\t\t\t// correct month value\n\t\t\t\t\tdateArray['month'] = dateArray['month'] - 1;\n\n\t\t\t\t\t// correct year value\n\t\t\t\t\tif (dateArray['year'].length < 4) {\n\t\t\t\t\t\tdateArray['year'] = parseInt(dateArray['year']) < 50 ? 2000 + parseInt(dateArray['year']) : 1900 + parseInt(dateArray['year']);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar testDate = new Date(dateArray['year'], dateArray['month'], dateArray['day']);\n\t\t\t\t\tif (testDate.getDate() != dateArray['day'] || testDate.getMonth() != dateArray['month'] || testDate.getFullYear() != dateArray['year']) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t}, \"Please enter a valid date\");\n\n\t\t\t// Validate a multifield phone number\n\t\t\t$.validator.addMethod(\"mc_phone\", function (phone_number, element, grouping_class) {\n\t\t\t\tvar isValid = false;\n\t\t\t\tvar $fields = $('input:filled:not(:hidden)', $(element).closest(grouping_class));\n\t\t\t\tif ($fields.length == 0 && this.optional(element)) {\n\t\t\t\t\tisValid = true; // None have been filled out, so no error\n\t\t\t\t} else {\n\t\t\t\t\tphone_number = $fields.eq(0).val() + $fields.eq(1).val() + $fields.eq(2).val();\n\t\t\t\t\tisValid = phone_number.length == 10 && phone_number.match(/[0-9]{9}/);\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t}, \"Please specify a valid phone number\");\n\n\t\t\t$.validator.addMethod(\"skip_or_complete_group\", function (value, element, grouping_class) {\n\t\t\t\tvar $fields = $('input:not(:hidden)', $(element).closest(grouping_class)),\n\t\t\t\t $fieldsFirst = $fields.eq(0),\n\t\t\t\t validator = $fieldsFirst.data(\"valid_skip\") ? $fieldsFirst.data(\"valid_skip\") : $.extend({}, this),\n\t\t\t\t numberFilled = $fields.filter(function () {\n\t\t\t\t\treturn validator.elementValue(this);\n\t\t\t\t}).length,\n\t\t\t\t isValid = numberFilled === 0 || numberFilled === $fields.length;\n\n\t\t\t\t// Store the cloned validator for future validation\n\t\t\t\t$fieldsFirst.data(\"valid_skip\", validator);\n\n\t\t\t\t// If element isn't being validated, run each field's validation rules\n\t\t\t\tif (!$(element).data(\"being_validated\")) {\n\t\t\t\t\t$fields.data(\"being_validated\", true);\n\t\t\t\t\t$fields.each(function () {\n\t\t\t\t\t\tvalidator.element(this);\n\t\t\t\t\t});\n\t\t\t\t\t$fields.data(\"being_validated\", false);\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t}, $.validator.format(\"Please supply missing fields.\"));\n\n\t\t\t$.validator.addMethod(\"skip_or_fill_minimum\", function (value, element, options) {\n\t\t\t\tvar $fields = $(options[1], element.form),\n\t\t\t\t $fieldsFirst = $fields.eq(0),\n\t\t\t\t validator = $fieldsFirst.data(\"valid_skip\") ? $fieldsFirst.data(\"valid_skip\") : $.extend({}, this),\n\t\t\t\t numberFilled = $fields.filter(function () {\n\t\t\t\t\treturn validator.elementValue(this);\n\t\t\t\t}).length,\n\t\t\t\t isValid = numberFilled === 0 || numberFilled >= options[0];\n\t\t\t\tconsole.log($fields.eq(0));\n\t\t\t\t// Store the cloned validator for future validation\n\t\t\t\t$fieldsFirst.data(\"valid_skip\", validator);\n\n\t\t\t\t// If element isn't being validated, run each skip_or_fill_minimum field's validation rules\n\t\t\t\tif (!$(element).data(\"being_validated\")) {\n\t\t\t\t\t$fields.data(\"being_validated\", true);\n\t\t\t\t\t$fields.each(function () {\n\t\t\t\t\t\tvalidator.element(this);\n\t\t\t\t\t});\n\t\t\t\t\t$fields.data(\"being_validated\", false);\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t}, $.validator.format(\"Please either skip these fields or fill at least {0} of them.\"));\n\n\t\t\t$.validator.addMethod(\"zipcodeUS\", function (value, element) {\n\t\t\t\treturn this.optional(element) || /^\\d{5}-\\d{4}$|^\\d{5}$/.test(value);\n\t\t\t}, \"The specified US ZIP Code is invalid\");\n\t\t})(jQuery);\n\n\t\t// MC\n\t\t(function ($) {\n\n\t\t\t// Expose extra mc form methods in global var\n\t\t\twindow.mc = {\n\t\t\t\topenPopup: function openPopup() {\n\t\t\t\t\t$('#mc_embed_signup a.mc_embed_close').show();\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t$('#mc_embed_signup').fadeIn();\n\t\t\t\t\t}, mc.delayPopup);\n\t\t\t\t},\n\n\t\t\t\tclosePopup: function closePopup() {\n\t\t\t\t\t$('#mc_embed_signup').hide();\n\t\t\t\t\tvar now = new Date();\n\t\t\t\t\tvar expires_date = new Date(now.getTime() + 31536000000);\n\t\t\t\t\tdocument.cookie = 'MCEvilPopupClosed=yes;expires=' + expires_date.toGMTString() + ';path=/';\n\t\t\t\t},\n\n\t\t\t\t/**\n *\tFigure out if we should show the popup (if they've closed it before, don't show it.)\n */\n\t\t\t\tevalPopup: function evalPopup() {\n\t\t\t\t\t$('#mc_embed_signup').hide();\n\t\t\t\t\tcks = document.cookie.split(';');\n\t\t\t\t\tfor (i = 0; i < cks.length; i++) {\n\t\t\t\t\t\tparts = cks[i].split('=');\n\t\t\t\t\t\tif (parts[0].indexOf('MCEvilPopupClosed') != -1) mc.showPopup = false;\n\t\t\t\t\t}\n\t\t\t\t\tif (mc.showPopup) mc.openPopup();\n\t\t\t\t},\n\n\t\t\t\t/**\n *\tGrab the list subscribe url from the form action and make it work for an ajax post.\n */\n\t\t\t\tgetAjaxSubmitUrl: function getAjaxSubmitUrl() {\n\t\t\t\t\tvar url = $(\"form#mc-embedded-subscribe-form\").attr(\"action\");\n\t\t\t\t\turl = url.replace(\"/post?u=\", \"/post-json?u=\");\n\t\t\t\t\turl += \"&c=?\";\n\t\t\t\t\treturn url;\n\t\t\t\t},\n\t\t\t\t/**\n *\tClassify text inputs in the same field group as group for validation purposes.\n *\tAll this does is tell jQueryValidation to create one error div for the group, rather\n *\tthan one for each input. Primary use case is birthday and date fields, where we want\n *\tto display errors about the inputs collectively, not individually.\n *\n *\tNOTE: Grouping inputs will give you one error div, but you still need to specify where\n *\tthat div should be displayed. By default, it's inserted after the first input with a\n *\tvalidation error, which can break up a set of inputs. Use the errorPlacement setting in\n *\tthe validator to control error div placement.\n */\n\t\t\t\tgetGroups: function getGroups() {\n\t\t\t\t\tvar groups = {};\n\t\t\t\t\t$(\".mc-field-group\").each(function (index) {\n\t\t\t\t\t\tvar inputs = $(this).find(\"input:text:not(:hidden)\");\n\t\t\t\t\t\tif (inputs.length > 1) {\n\t\t\t\t\t\t\tvar mergeName = inputs.first().attr(\"name\");\n\t\t\t\t\t\t\tvar fieldNames = $.map(inputs, function (f) {\n\t\t\t\t\t\t\t\treturn f.name;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tgroups[mergeName.substring(0, mergeName.indexOf(\"[\"))] = fieldNames.join(\" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn groups;\n\t\t\t\t},\n\t\t\t\t/**\n *\tCheck if a field is part of a multipart field\n * \t(e.g., A date merge field is composed of individual inputs for month, day and year)\n *\tUsed in jQuery validation onkeyup method to ensure that we don't evaluate a field\n * if a user hasn't reached the last input in a multipart field yet.\n */\n\t\t\t\tisMultiPartField: function isMultiPartField(element) {\n\t\t\t\t\treturn $('input:not(:hidden)', $(element).closest(\".mc-field-group\")).length > 1;\n\t\t\t\t},\n\t\t\t\t/**\n *\tChecks if the element is the last input in its fieldgroup.\n *\tIf the field is not the last in a set of inputs we don't want to validate it on certain events (onfocusout, onblur)\n *\tbecause the user might not be finished yet.\n */\n\t\t\t\tisTooEarly: function isTooEarly(element) {\n\t\t\t\t\tvar fields = $('input:not(:hidden)', $(element).closest(\".mc-field-group\"));\n\t\t\t\t\treturn $(fields).eq(-1).attr('id') != $(element).attr('id');\n\t\t\t\t},\n\t\t\t\t/**\n *\tHandle the error/success message after successful form submission.\n *\tSuccess messages are appended to #mce-success-response\n *\tError messages are displayed with the invalid input when possible, or appended to #mce-error-response\n */\n\t\t\t\tmce_success_cb: function mce_success_cb(resp) {\n\n\t\t\t\t\thideAllMessages();\n\n\t\t\t\t\t// On successful form submission, display a success message and reset the form\n\t\t\t\t\tif (resp.result == \"success\") {\n\t\t\t\t\t\tshowSuccessMessage(resp.msg);\n\t\t\t\t\t\t$('.email-form__input--email').blur();\n\t\t\t\t\t\t$('.email-form').addClass(\"email-form--valid\");\n\n\t\t\t\t\t\t//Disable form inputs\n\t\t\t\t\t\tdisableInputs();\n\t\t\t\t\t\t//Send GA event\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tga('send', 'event', 'Waitlist', 'Sign Up', 'Waitlist');\n\t\t\t\t\t\t} catch (e) {}\n\n\t\t\t\t\t\t// If the form has errors, display them, inline if possible, or appended to #mce-error-response\n\t\t\t\t\t} else {\n\t\t\t\t\t\tenableInputs();\n\n\t\t\t\t\t\t// Example errors - Note: You only get one back at a time even if you submit several that are bad.\n\t\t\t\t\t\t// Error structure - number indicates the index of the merge field that was invalid, then details\n\t\t\t\t\t\t// Object {result: \"error\", msg: \"6 - Please enter the date\"}\n\t\t\t\t\t\t// Object {result: \"error\", msg: \"4 - Please enter a value\"}\n\t\t\t\t\t\t// Object {result: \"error\", msg: \"9 - Please enter a complete address\"}\n\n\t\t\t\t\t\t// Try to parse the error into a field index and a message.\n\t\t\t\t\t\t// On failure, just put the dump thing into in the msg variable.\n\t\t\t\t\t\tvar index = -1;\n\t\t\t\t\t\tvar msg, parts;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tparts = resp.msg.split(' - ', 2);\n\t\t\t\t\t\t\tif (parts[1] == undefined) {\n\t\t\t\t\t\t\t\tmsg = resp.msg;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ti = parseInt(parts[0]);\n\t\t\t\t\t\t\t\tif (i.toString() == parts[0]) {\n\t\t\t\t\t\t\t\t\tindex = parts[0];\n\t\t\t\t\t\t\t\t\tmsg = parts[1];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tindex = -1;\n\t\t\t\t\t\t\t\t\tmsg = resp.msg;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tindex = -1;\n\t\t\t\t\t\t\tmsg = resp.msg;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// If index is -1 if means we don't have data on specifically which field was invalid.\n\t\t\t\t\t\t\t// Just lump the error message into the generic response div.\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\t$('#mce-' + resp.result + '-response').html(msg);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar fieldName = $(\"input[name*='\" + fnames[index] + \"']\").attr('name'); // Make sure this exists (they haven't deleted the fnames array lookup)\n\t\t\t\t\t\t\t\tvar data = {};\n\t\t\t\t\t\t\t\tdata[fieldName] = msg;\n\t\t\t\t\t\t\t\tconsole.log(data);\n\t\t\t\t\t\t\t\tmc.mce_validator.showErrors(data);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfocusOnEmailInput();\n\t\t\t\t\t\t\tshowErrorMessage();\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t$('#mce-' + resp.result + '-response').html(msg);\n\t\t\t\t\t\t\tshowErrorMessage();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\twindow.mc.mce_validator = $(\"#mc-embedded-subscribe-form\").validate({\n\n\t\t\t\t// Set error HTML:
\n\t\t\t\terrorClass: \"form-error\",\n\t\t\t\terrorElement: \"div\",\n\n\t\t\t\t// Validate fields on keyup, focusout and blur.\n\t\t\t\tonkeyup: false,\n\n\t\t\t\tonfocusout: function onfocusout(element) {\n\t\t\t\t\tif (!mc.isTooEarly(element)) {\n\t\t\t\t\t\t//$(element).valid();\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tonblur: function onblur(element) {\n\t\t\t\t\tif (!mc.isTooEarly(element)) {\n\t\t\t\t\t\t//$(element).valid();\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// Grouping fields makes jQuery Validation display one error for all the fields in the group\n\t\t\t\t// It doesn't have anything to do with how the fields are validated (together or separately),\n\t\t\t\t// it's strictly for visual display of errors\n\t\t\t\tgroups: mc.getGroups(),\n\n\t\t\t\thighlight: function highlight(element, errorClass, validClass) {},\n\n\t\t\t\t// Place a field's inline error HTML\n\t\t\t\terrorPlacement: function errorPlacement(error, element) {\n\t\t\t\t\tenableInputs();\n\t\t\t\t},\n\n\t\t\t\tinvalidHandler: function invalidHandler() {\n\t\t\t\t\tenableInputs();\n\t\t\t\t\thideAllMessages();\n\t\t\t\t},\n\n\t\t\t\tshowErrors: function showErrors(errorMap, errorList) {\n\t\t\t\t\tif (errorMap.hasOwnProperty(\"EMAIL\")) {\n\t\t\t\t\t\tshakeForm();\n\t\t\t\t\t\tvar content = errorMap.EMAIL;\n\t\t\t\t\t\tshowErrorMessage(content);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// Submit the form via ajax (see: jQuery Form plugin)\n\t\t\t\tsubmitHandler: function submitHandler(form) {\n\t\t\t\t\t$(form).ajaxSubmit(mc.ajaxOptions);\n\t\t\t\t\thideAllMessages();\n\t\t\t\t\tdisableInputs();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\twindow.mc.ajaxOptions = {\n\t\t\t\turl: mc.getAjaxSubmitUrl(),\n\t\t\t\ttype: 'GET',\n\t\t\t\tdataType: 'json',\n\t\t\t\tcontentType: \"application/json; charset=utf-8\",\n\t\t\t\tsuccess: mc.mce_success_cb\n\t\t\t};\n\n\t\t\t// Custom validation methods for fields with certain css classes\n\t\t\t$.validator.addClassRules(\"birthday\", { digits: true, mc_birthday: \".datefield\" });\n\t\t\t$.validator.addClassRules(\"datepart\", { digits: true, mc_date: \".datefield\" });\n\t\t\t$.validator.addClassRules(\"phonepart\", { digits: true, mc_phone: \".phonefield\" });\n\n\t\t\t// Evil Popup\n\t\t\t$('#mc_embed_signup a.mc_embed_close').click(function () {\n\t\t\t\tmc.closePopup();\n\t\t\t});\n\n\t\t\t$(document).keydown(function (e) {\n\t\t\t\tvar keycode = e == null ? event.keyCode : e.which;\n\t\t\t\tif (keycode == 27 && typeof mc.showPopup != 'undefined') mc.closePopup();\n\t\t\t});\n\n\t\t\tfunction disableInputs() {\n\t\t\t\t$(\".email-form__input--email\").prop('disabled', true);\n\t\t\t\t$(\".email-form__input--sumbit\").prop('disabled', true);\n\t\t\t};\n\n\t\t\tfunction enableInputs() {\n\t\t\t\t$(\".email-form__input--email\").prop('disabled', false);\n\t\t\t\t$(\".email-form__input--sumbit\").prop('disabled', false);\n\t\t\t};\n\n\t\t\tfunction hideAllMessages() {\n\t\t\t\thideErrorMessage();\n\t\t\t\thideSuccessMessage();\n\t\t\t};\n\n\t\t\tfunction focusOnEmailInput() {\n\t\t\t\t$(\".email-form__input--email\").focus();\n\t\t\t};\n\n\t\t\tvar formShaking = false;\n\t\t\tfunction shakeForm() {\n\t\t\t\tif (!formShaking) {\n\t\t\t\t\t$(\".email-form\").addClass(\"email-form--error\");\n\t\t\t\t\tformShaking = true;\n\t\t\t\t}\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t$(\".email-form\").removeClass(\"email-form--error\");\n\t\t\t\t\tformShaking = false;\n\t\t\t\t}, 600);\n\t\t\t};\n\n\t\t\tvar errorMessageShown = false;\n\t\t\tfunction showErrorMessage(content) {\n\t\t\t\tif (!errorMessageShown) {\n\t\t\t\t\t$(\".email-form__error-message\").addClass(\"email-form__error-message--shown\");\n\t\t\t\t\t$(\".email-form__error-message\").html(content);\n\t\t\t\t\terrorMessageShown = true;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfunction hideErrorMessage() {\n\t\t\t\tif (!errorMessageShown) return;\n\t\t\t\t$(\".email-form__error-message\").removeClass(\"email-form__error-message--shown\");\n\t\t\t\t$(\".email-form__error-message\").html(\"\");\n\t\t\t\terrorMessageShown = false;\n\t\t\t};\n\n\t\t\tvar successMessageShown = false;\n\t\t\tfunction showSuccessMessage(content) {\n\t\t\t\tif (!successMessageShown) {\n\t\t\t\t\t$(\".email-form__success-message\").addClass(\"email-form__success-message--shown\");\n\t\t\t\t\t$(\".email-form__success-message\").html(content);\n\t\t\t\t\tsuccessMessageShown = true;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfunction hideSuccessMessage() {\n\t\t\t\tif (!successMessageShown) return;\n\t\t\t\t$(\".email-form__success-message\").removeClass(\"email-form__success-message--shown\");\n\t\t\t\t$(\".email-form__success-message\").html(\"\");\n\t\t\t\tsuccessMessageShown = false;\n\t\t\t};\n\t\t})(jQuery);\n\t\t(function ($) {\n\t\t\twindow.fnames = new Array();window.ftypes = new Array();fnames[0] = 'EMAIL';ftypes[0] = 'email';fnames[1] = 'FNAME';ftypes[1] = 'text';fnames[2] = 'LNAME';ftypes[2] = 'text';\n\t\t})(jQuery);var $mcj = jQuery.noConflict(true);\n\t}, {}] }, {}, [1]);"]}
\ No newline at end of file
diff --git a/gulpfile.js b/gulpfile.js
new file mode 100755
index 0000000..e7f9958
--- /dev/null
+++ b/gulpfile.js
@@ -0,0 +1,66 @@
+var gulp = require('gulp');
+var browserSync = require('browser-sync').create();
+var sass = require('gulp-sass');
+var autoprefixer = require('gulp-autoprefixer');
+
+var browserify = require('browserify');
+var source = require('vinyl-source-stream');
+var streamify = require('gulp-streamify');
+var babel = require('gulp-babel');
+var tap = require('gulp-tap');
+var buffer = require('gulp-buffer');
+var sourcemaps = require('gulp-sourcemaps');
+
+var del = require('del');
+var gutil = require('gulp-util');
+var uglify = require('gulp-uglify');
+
+var imagemin = require('gulp-imagemin');
+
+gulp.task('serve', ['sass', 'imagemin', 'js'], function() {
+
+ browserSync.init({
+ server: "./"
+ })
+
+ gulp.watch("src/scss/*.scss", ['sass']);
+ gulp.watch("src/js/*.js", ['js']);
+ gulp.watch("src/img/**/*", ['imagemin']);
+ gulp.watch("./*.html").on('change', browserSync.reload);
+})
+
+gulp.task('js', function () {
+ return gulp.src('src/**/*.js', {read: false})
+ .pipe(tap(function (file) {
+ gutil.log('bundling ' + file.path)
+ file.contents = browserify(file.path, {debug: true}).bundle()
+ }))
+ .pipe(streamify(babel({ presets: ['es2015'] })))
+ .pipe(buffer())
+ .pipe(sourcemaps.init({loadMaps: true}))
+ .pipe(uglify())
+ .pipe(sourcemaps.write('./'))
+ .pipe(gulp.dest('dist'))
+ .pipe(browserSync.stream());
+})
+
+gulp.task('sass', function() {
+ return gulp.src("src/scss/main.scss")
+ .pipe(sass())
+ .on('error', gutil.log)
+ .pipe(autoprefixer({ browsers: ['last 3 versions'], cascade: false }))
+ .pipe(gulp.dest("dist/css"))
+ .pipe(browserSync.stream());
+})
+
+gulp.task('imagemin', function() {
+ gulp.src('src/img/**/*')
+ .pipe(imagemin())
+ .pipe(gulp.dest('dist/img'))
+})
+
+gulp.task('cleanUp', function() {
+ del.sync('dist/*')
+})
+
+gulp.task('default', ['cleanUp', 'serve']);
diff --git a/index.html b/index.html
old mode 100644
new mode 100755
index 8794e14..57bcaed
--- a/index.html
+++ b/index.html
@@ -8,23 +8,23 @@
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+