import{add,sub,scale,mul,transpose}from"./helpers.js";import{BYTES_PER_FLOAT64,ManagedFloat64Array,memoryManager}from"./memory.js";const TEMP=Array(16);const MAT2_ID=[1,0,0,1];const MAT3_ID=[1,0,0,0,1,0,0,0,1];const MAT4_ID=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];export class Mat2 extends ManagedFloat64Array{static identity(){const m=new Mat2(memoryManager.create(4));m.set(MAT2_ID);return m}static fromMat3(m){const ptr=memoryManager.create(4);const left=ptr/BYTES_PER_FLOAT64|0;const right=m.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;for(let c=0;c<2;++c){for(let r=0;r<2;++r){view[left+c*2+r]=view[right+c*3+r]}}return new Mat2(ptr)}constructor(ptr){super(ptr)}get length(){return 4}add(rhs){add(this,rhs);return this}sub(rhs){sub(this,rhs);return this}mul(rhs){mul(this,rhs,2);return this}scale(factor){scale(this,factor);return this}transpose(){transpose(this,2);return this}invert(){const detA=this.det();if(!detA){return false}const ptr=this.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;TEMP[0]=view[ptr+3]/detA;TEMP[1]=-view[ptr+1]/detA;TEMP[2]=-view[ptr+2]/detA;TEMP[3]=view[ptr+0]/detA;for(let i=0;i<4;++i){view[ptr+i]=TEMP[i]}return true}det(){const ptr=this.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;return view[ptr+0]*view[ptr+3]-view[ptr+2]*view[ptr+1]}}export class Mat3 extends ManagedFloat64Array{static identity(){const m=new Mat3(memoryManager.create(9));m.set(MAT3_ID);return m}static fromMat2(m){const ptr=memoryManager.create(9);const left=ptr/BYTES_PER_FLOAT64|0;const right=m.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;for(let c=0;c<2;++c){for(let r=0;r<2;++r){view[left+c*3+r]=view[right+c*2+r]}view[left+c*3+2]=0}view[left+6]=0;view[left+7]=0;view[left+8]=1;return new Mat3(ptr)}static fromMat4(m){const ptr=memoryManager.create(9);const left=ptr/BYTES_PER_FLOAT64|0;const right=m.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;for(let c=0;c<3;++c){for(let r=0;r<3;++r){view[left+c*3+r]=view[right+c*4+r]}}return new Mat3(ptr)}constructor(ptr){super(ptr)}get length(){return 9}add(rhs){add(this,rhs);return this}sub(rhs){sub(this,rhs);return this}mul(rhs){mul(this,rhs,3);return this}scale(factor){scale(this,factor);return this}transpose(){transpose(this,3);return this}invert(){const detA=this.det();if(!detA){return false}const ptr=this.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;TEMP[0]=+(view[ptr+4]*view[ptr+8]-view[ptr+7]*view[ptr+5]);TEMP[1]=-(view[ptr+1]*view[ptr+8]-view[ptr+7]*view[ptr+2]);TEMP[2]=+(view[ptr+1]*view[ptr+5]-view[ptr+4]*view[ptr+2]);TEMP[3]=-(view[ptr+3]*view[ptr+8]-view[ptr+6]*view[ptr+5]);TEMP[4]=+(view[ptr+0]*view[ptr+8]-view[ptr+6]*view[ptr+2]);TEMP[5]=-(view[ptr+0]*view[ptr+5]-view[ptr+3]*view[ptr+2]);TEMP[6]=+(view[ptr+3]*view[ptr+7]-view[ptr+6]*view[ptr+4]);TEMP[7]=-(view[ptr+0]*view[ptr+7]-view[ptr+6]*view[ptr+1]);TEMP[8]=+(view[ptr+0]*view[ptr+4]-view[ptr+3]*view[ptr+1]);for(let i=0;i<9;++i){view[ptr+i]=TEMP[i]}return true}det(){const ptr=this.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;return view[ptr+0]*+(view[ptr+4]*view[ptr+8]-view[ptr+7]*view[ptr+5])+view[ptr+3]*-(view[ptr+1]*view[ptr+8]-view[ptr+7]*view[ptr+2])+view[ptr+6]*+(view[ptr+1]*view[ptr+5]-view[ptr+4]*view[ptr+2])}normalMat(){if(!this.invert()){return false}this.transpose();return true}}export class Mat4 extends ManagedFloat64Array{static identity(){const m=new Mat4(memoryManager.create(16));m.set(MAT4_ID);return m}static fromMat3(m){const ptr=memoryManager.create(16);const left=ptr/BYTES_PER_FLOAT64|0;const right=m.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;for(let c=0;c<3;++c){for(let r=0;r<3;++r){view[left+c*4+r]=view[right+c*3+r]}view[left+c*4+3]=0}view[left+12]=0;view[left+13]=0;view[left+14]=0;view[left+15]=1;return new Mat4(ptr)}constructor(ptr){super(ptr)}get length(){return 16}add(rhs){add(this,rhs);return this}sub(rhs){sub(this,rhs);return this}mul(rhs){mul(this,rhs,4);return this}scale(factor){scale(this,factor);return this}transpose(){transpose(this,4);return this}invert(){const ptr=this.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;const fA0=view[ptr+0]*view[ptr+5]-view[ptr+4]*view[ptr+1];const fA1=view[ptr+0]*view[ptr+9]-view[ptr+8]*view[ptr+1];const fA2=view[ptr+0]*view[ptr+13]-view[ptr+12]*view[ptr+1];const fA3=view[ptr+4]*view[ptr+9]-view[ptr+8]*view[ptr+5];const fA4=view[ptr+4]*view[ptr+13]-view[ptr+12]*view[ptr+5];const fA5=view[ptr+8]*view[ptr+13]-view[ptr+12]*view[ptr+9];const fB0=view[ptr+2]*view[ptr+7]-view[ptr+6]*view[ptr+3];const fB1=view[ptr+2]*view[ptr+11]-view[ptr+10]*view[ptr+3];const fB2=view[ptr+2]*view[ptr+15]-view[ptr+14]*view[ptr+3];const fB3=view[ptr+6]*view[ptr+11]-view[ptr+10]*view[ptr+7];const fB4=view[ptr+6]*view[ptr+15]-view[ptr+14]*view[ptr+7];const fB5=view[ptr+10]*view[ptr+15]-view[ptr+14]*view[ptr+11];const detA=fA0*fB5-fA1*fB4+fA2*fB3+fA3*fB2-fA4*fB1+fA5*fB0;if(!detA){return false}TEMP[0]=+view[ptr+5]*fB5-view[ptr+9]*fB4+view[ptr+13]*fB3;TEMP[1]=-view[ptr+1]*fB5+view[ptr+9]*fB2-view[ptr+13]*fB1;TEMP[2]=+view[ptr+1]*fB4-view[ptr+5]*fB2+view[ptr+13]*fB0;TEMP[3]=-view[ptr+1]*fB3+view[ptr+5]*fB1-view[ptr+9]*fB0;TEMP[4]=-view[ptr+4]*fB5+view[ptr+8]*fB4-view[ptr+12]*fB3;TEMP[5]=+view[ptr+0]*fB5-view[ptr+8]*fB2+view[ptr+12]*fB1;TEMP[6]=-view[ptr+0]*fB4+view[ptr+4]*fB2-view[ptr+12]*fB0;TEMP[7]=+view[ptr+0]*fB3-view[ptr+4]*fB1+view[ptr+8]*fB0;TEMP[8]=+view[ptr+7]*fA5-view[ptr+11]*fA4+view[ptr+15]*fA3;TEMP[9]=-view[ptr+3]*fA5+view[ptr+11]*fA2-view[ptr+15]*fA1;TEMP[10]=+view[ptr+3]*fA4-view[ptr+7]*fA2+view[ptr+15]*fA0;TEMP[11]=-view[ptr+3]*fA3+view[ptr+7]*fA1-view[ptr+11]*fA0;TEMP[12]=-view[ptr+6]*fA5+view[ptr+10]*fA4-view[ptr+14]*fA3;TEMP[13]=+view[ptr+2]*fA5-view[ptr+10]*fA2+view[ptr+14]*fA1;TEMP[14]=-view[ptr+2]*fA4+view[ptr+6]*fA2-view[ptr+14]*fA0;TEMP[15]=+view[ptr+2]*fA3-view[ptr+6]*fA1+view[ptr+10]*fA0;for(let i=0;i<16;++i){view[ptr+i]=TEMP[i]/detA}return true}det(){const ptr=this.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;const fA0=view[ptr+0]*view[ptr+5]-view[ptr+4]*view[ptr+1];const fA1=view[ptr+0]*view[ptr+9]-view[ptr+8]*view[ptr+1];const fA2=view[ptr+0]*view[ptr+13]-view[ptr+12]*view[ptr+1];const fA3=view[ptr+4]*view[ptr+9]-view[ptr+8]*view[ptr+5];const fA4=view[ptr+4]*view[ptr+13]-view[ptr+12]*view[ptr+5];const fA5=view[ptr+8]*view[ptr+13]-view[ptr+12]*view[ptr+9];const fB0=view[ptr+2]*view[ptr+7]-view[ptr+6]*view[ptr+3];const fB1=view[ptr+2]*view[ptr+11]-view[ptr+10]*view[ptr+3];const fB2=view[ptr+2]*view[ptr+15]-view[ptr+14]*view[ptr+3];const fB3=view[ptr+6]*view[ptr+11]-view[ptr+10]*view[ptr+7];const fB4=view[ptr+6]*view[ptr+15]-view[ptr+14]*view[ptr+7];const fB5=view[ptr+10]*view[ptr+15]-view[ptr+14]*view[ptr+11];return fA0*fB5-fA1*fB4+fA2*fB3+fA3*fB2-fA4*fB1+fA5*fB0}} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhZGQiLCJzdWIiLCJzY2FsZSIsIm11bCIsInRyYW5zcG9zZSIsIkJZVEVTX1BFUl9GTE9BVDY0IiwiTWFuYWdlZEZsb2F0NjRBcnJheSIsIm1lbW9yeU1hbmFnZXIiLCJURU1QIiwiQXJyYXkiLCJNQVQyX0lEIiwiTUFUM19JRCIsIk1BVDRfSUQiLCJNYXQyIiwiaWRlbnRpdHkiLCJtIiwiY3JlYXRlIiwic2V0IiwiZnJvbU1hdDMiLCJwdHIiLCJsZWZ0IiwicmlnaHQiLCJieXRlT2Zmc2V0IiwidmlldyIsImMiLCJyIiwiY29uc3RydWN0b3IiLCJsZW5ndGgiLCJyaHMiLCJmYWN0b3IiLCJpbnZlcnQiLCJkZXRBIiwiZGV0IiwiaSIsIk1hdDMiLCJmcm9tTWF0MiIsImZyb21NYXQ0Iiwibm9ybWFsTWF0IiwiTWF0NCIsImZBMCIsImZBMSIsImZBMiIsImZBMyIsImZBNCIsImZBNSIsImZCMCIsImZCMSIsImZCMiIsImZCMyIsImZCNCIsImZCNSJdLCJzb3VyY2VzIjpbIi4uLy4uL2pzL2pzL21hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXQgfSBmcm9tICcuLi90eXBlcy50cyc7XG5pbXBvcnQgeyBhZGQsIHN1Yiwgc2NhbGUsIG11bCwgdHJhbnNwb3NlIH0gZnJvbSAnLi9oZWxwZXJzLnRzJztcbmltcG9ydCB7IEJZVEVTX1BFUl9GTE9BVDY0LCBNYW5hZ2VkRmxvYXQ2NEFycmF5LCBtZW1vcnlNYW5hZ2VyIH0gZnJvbSAnLi9tZW1vcnkudHMnO1xuXG5jb25zdCBURU1QID0gQXJyYXkoMTYpO1xuY29uc3QgTUFUMl9JRCA9IFsxLCAwLCAwLCAxXTtcbmNvbnN0IE1BVDNfSUQgPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG5jb25zdCBNQVQ0X0lEID0gWzEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDFdO1xuXG4vKiogQSAyeDIgbWF0cml4LiAqL1xuZXhwb3J0IGNsYXNzIE1hdDIgZXh0ZW5kcyBNYW5hZ2VkRmxvYXQ2NEFycmF5PDQ+IGltcGxlbWVudHMgTWF0PDI+IHtcbiAgLyoqIFJldHVybiBhbiBpZGVudGl0eSBNYXQyLiAqL1xuICBwdWJsaWMgc3RhdGljIGlkZW50aXR5KCk6IE1hdDIge1xuICAgIGNvbnN0IG0gPSBuZXcgTWF0MihtZW1vcnlNYW5hZ2VyLmNyZWF0ZSg0KSk7XG4gICAgbS5zZXQoTUFUMl9JRCk7XG4gICAgcmV0dXJuIG07XG4gIH1cblxuICAvKiogUmV0dXJuIGEgTWF0MiBmcm9tIE1hdDMuICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU1hdDMobTogTWF0Myk6IE1hdDIge1xuICAgIGNvbnN0IHB0ciA9IG1lbW9yeU1hbmFnZXIuY3JlYXRlKDQpO1xuICAgIGNvbnN0IGxlZnQgPSAocHRyIC8gQllURVNfUEVSX0ZMT0FUNjQpIHwgMDtcbiAgICBjb25zdCByaWdodCA9IChtLmJ5dGVPZmZzZXQgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHZpZXcgPSBtZW1vcnlNYW5hZ2VyLnZpZXc7XG4gICAgZm9yIChsZXQgYyA9IDA7IGMgPCAyOyArK2MpIHtcbiAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgMjsgKytyKSB7XG4gICAgICAgIHZpZXdbbGVmdCArIGMgKiAyICsgcl0gPSB2aWV3W3JpZ2h0ICsgYyAqIDMgKyByXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNYXQyKHB0cik7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB0cjogbnVtYmVyKSB7XG4gICAgc3VwZXIocHRyKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgbGVuZ3RoKCk6IDQge1xuICAgIHJldHVybiA0O1xuICB9XG5cbiAgcHVibGljIGFkZChyaHM6IE1hdDIpOiB0aGlzIHtcbiAgICBhZGQodGhpcywgcmhzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzdWIocmhzOiBNYXQyKTogdGhpcyB7XG4gICAgc3ViKHRoaXMsIHJocyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbXVsKHJoczogTWF0Mik6IHRoaXMge1xuICAgIG11bCh0aGlzLCByaHMsIDIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNjYWxlKGZhY3RvcjogbnVtYmVyKTogdGhpcyB7XG4gICAgc2NhbGUodGhpcywgZmFjdG9yKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc3Bvc2UoKTogdGhpcyB7XG4gICAgdHJhbnNwb3NlKHRoaXMsIDIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGludmVydCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBkZXRBID0gdGhpcy5kZXQoKTtcbiAgICBpZiAoIWRldEEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwdHIgPSAodGhpcy5ieXRlT2Zmc2V0IC8gQllURVNfUEVSX0ZMT0FUNjQpIHwgMDtcbiAgICBjb25zdCB2aWV3ID0gbWVtb3J5TWFuYWdlci52aWV3O1xuICAgIFRFTVBbMF0gPSB2aWV3W3B0ciArIDNdIC8gZGV0QTtcbiAgICBURU1QWzFdID0gLXZpZXdbcHRyICsgMV0gLyBkZXRBO1xuICAgIFRFTVBbMl0gPSAtdmlld1twdHIgKyAyXSAvIGRldEE7XG4gICAgVEVNUFszXSA9IHZpZXdbcHRyICsgMF0gLyBkZXRBO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgIHZpZXdbcHRyICsgaV0gPSBURU1QW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGRldCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHB0ciA9ICh0aGlzLmJ5dGVPZmZzZXQgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHZpZXcgPSBtZW1vcnlNYW5hZ2VyLnZpZXc7XG5cbiAgICByZXR1cm4gdmlld1twdHIgKyAwXSAqIHZpZXdbcHRyICsgM10gLSB2aWV3W3B0ciArIDJdICogdmlld1twdHIgKyAxXTtcbiAgfVxufVxuXG4vKiogQSAzeDMgbWF0cml4LiAqL1xuZXhwb3J0IGNsYXNzIE1hdDMgZXh0ZW5kcyBNYW5hZ2VkRmxvYXQ2NEFycmF5PDk+IGltcGxlbWVudHMgTWF0PDM+IHtcbiAgLyoqIFJldHVybiBhbiBpZGVudGl0eSBNYXQzLiAqL1xuICBwdWJsaWMgc3RhdGljIGlkZW50aXR5KCk6IE1hdDMge1xuICAgIGNvbnN0IG0gPSBuZXcgTWF0MyhtZW1vcnlNYW5hZ2VyLmNyZWF0ZSg5KSk7XG4gICAgbS5zZXQoTUFUM19JRCk7XG4gICAgcmV0dXJuIG07XG4gIH1cblxuICAvKiogUmV0dXJuIGEgTWF0MyBmcm9tIE1hdDIuICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU1hdDIobTogTWF0Mik6IE1hdDMge1xuICAgIGNvbnN0IHB0ciA9IG1lbW9yeU1hbmFnZXIuY3JlYXRlKDkpO1xuICAgIGNvbnN0IGxlZnQgPSAocHRyIC8gQllURVNfUEVSX0ZMT0FUNjQpIHwgMDtcbiAgICBjb25zdCByaWdodCA9IChtLmJ5dGVPZmZzZXQgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHZpZXcgPSBtZW1vcnlNYW5hZ2VyLnZpZXc7XG4gICAgZm9yIChsZXQgYyA9IDA7IGMgPCAyOyArK2MpIHtcbiAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgMjsgKytyKSB7XG4gICAgICAgIHZpZXdbbGVmdCArIGMgKiAzICsgcl0gPSB2aWV3W3JpZ2h0ICsgYyAqIDIgKyByXTtcbiAgICAgIH1cbiAgICAgIHZpZXdbbGVmdCArIGMgKiAzICsgMl0gPSAwO1xuICAgIH1cbiAgICB2aWV3W2xlZnQgKyA2XSA9IDA7XG4gICAgdmlld1tsZWZ0ICsgN10gPSAwO1xuICAgIHZpZXdbbGVmdCArIDhdID0gMTtcbiAgICByZXR1cm4gbmV3IE1hdDMocHRyKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gYSBNYXQzIGZyb20gTWF0NC4gKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTWF0NChtOiBNYXQ0KTogTWF0MyB7XG4gICAgY29uc3QgcHRyID0gbWVtb3J5TWFuYWdlci5jcmVhdGUoOSk7XG4gICAgY29uc3QgbGVmdCA9IChwdHIgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHJpZ2h0ID0gKG0uYnl0ZU9mZnNldCAvIEJZVEVTX1BFUl9GTE9BVDY0KSB8IDA7XG4gICAgY29uc3QgdmlldyA9IG1lbW9yeU1hbmFnZXIudmlldztcbiAgICBmb3IgKGxldCBjID0gMDsgYyA8IDM7ICsrYykge1xuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCAzOyArK3IpIHtcbiAgICAgICAgdmlld1tsZWZ0ICsgYyAqIDMgKyByXSA9IHZpZXdbcmlnaHQgKyBjICogNCArIHJdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IE1hdDMocHRyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHRyOiBudW1iZXIpIHtcbiAgICBzdXBlcihwdHIpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBsZW5ndGgoKTogOSB7XG4gICAgcmV0dXJuIDk7XG4gIH1cblxuICBwdWJsaWMgYWRkKHJoczogTWF0Myk6IHRoaXMge1xuICAgIGFkZCh0aGlzLCByaHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHN1YihyaHM6IE1hdDMpOiB0aGlzIHtcbiAgICBzdWIodGhpcywgcmhzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBtdWwocmhzOiBNYXQzKTogdGhpcyB7XG4gICAgbXVsKHRoaXMsIHJocywgMyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2NhbGUoZmFjdG9yOiBudW1iZXIpOiB0aGlzIHtcbiAgICBzY2FsZSh0aGlzLCBmYWN0b3IpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHRyYW5zcG9zZSgpOiB0aGlzIHtcbiAgICB0cmFuc3Bvc2UodGhpcywgMyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW52ZXJ0cyB0aGlzIE1hdDMuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW52ZXJ0aWJsZV9tYXRyaXgjSW52ZXJzaW9uX29mXzNfJUMzJTk3XzNfbWF0cmljZXNcbiAgICovXG4gIHB1YmxpYyBpbnZlcnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGV0QSA9IHRoaXMuZGV0KCk7XG4gICAgaWYgKCFkZXRBKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcHRyID0gKHRoaXMuYnl0ZU9mZnNldCAvIEJZVEVTX1BFUl9GTE9BVDY0KSB8IDA7XG4gICAgY29uc3QgdmlldyA9IG1lbW9yeU1hbmFnZXIudmlldztcbiAgICBURU1QWzBdID0gKyh2aWV3W3B0ciArIDRdICogdmlld1twdHIgKyA4XSAtIHZpZXdbcHRyICsgN10gKiB2aWV3W3B0ciArIDVdKTtcbiAgICBURU1QWzFdID0gLSh2aWV3W3B0ciArIDFdICogdmlld1twdHIgKyA4XSAtIHZpZXdbcHRyICsgN10gKiB2aWV3W3B0ciArIDJdKTtcbiAgICBURU1QWzJdID0gKyh2aWV3W3B0ciArIDFdICogdmlld1twdHIgKyA1XSAtIHZpZXdbcHRyICsgNF0gKiB2aWV3W3B0ciArIDJdKTtcbiAgICBURU1QWzNdID0gLSh2aWV3W3B0ciArIDNdICogdmlld1twdHIgKyA4XSAtIHZpZXdbcHRyICsgNl0gKiB2aWV3W3B0ciArIDVdKTtcbiAgICBURU1QWzRdID0gKyh2aWV3W3B0ciArIDBdICogdmlld1twdHIgKyA4XSAtIHZpZXdbcHRyICsgNl0gKiB2aWV3W3B0ciArIDJdKTtcbiAgICBURU1QWzVdID0gLSh2aWV3W3B0ciArIDBdICogdmlld1twdHIgKyA1XSAtIHZpZXdbcHRyICsgM10gKiB2aWV3W3B0ciArIDJdKTtcbiAgICBURU1QWzZdID0gKyh2aWV3W3B0ciArIDNdICogdmlld1twdHIgKyA3XSAtIHZpZXdbcHRyICsgNl0gKiB2aWV3W3B0ciArIDRdKTtcbiAgICBURU1QWzddID0gLSh2aWV3W3B0ciArIDBdICogdmlld1twdHIgKyA3XSAtIHZpZXdbcHRyICsgNl0gKiB2aWV3W3B0ciArIDFdKTtcbiAgICBURU1QWzhdID0gKyh2aWV3W3B0ciArIDBdICogdmlld1twdHIgKyA0XSAtIHZpZXdbcHRyICsgM10gKiB2aWV3W3B0ciArIDFdKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgOTsgKytpKSB7XG4gICAgICB2aWV3W3B0ciArIGldID0gVEVNUFtpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBkZXQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBwdHIgPSAodGhpcy5ieXRlT2Zmc2V0IC8gQllURVNfUEVSX0ZMT0FUNjQpIHwgMDtcbiAgICBjb25zdCB2aWV3ID0gbWVtb3J5TWFuYWdlci52aWV3O1xuICAgIHJldHVybiAoXG4gICAgICB2aWV3W3B0ciArIDBdICogKyh2aWV3W3B0ciArIDRdICogdmlld1twdHIgKyA4XSAtIHZpZXdbcHRyICsgN10gKiB2aWV3W3B0ciArIDVdKSArXG4gICAgICB2aWV3W3B0ciArIDNdICogLSh2aWV3W3B0ciArIDFdICogdmlld1twdHIgKyA4XSAtIHZpZXdbcHRyICsgN10gKiB2aWV3W3B0ciArIDJdKSArXG4gICAgICB2aWV3W3B0ciArIDZdICogKyh2aWV3W3B0ciArIDFdICogdmlld1twdHIgKyA1XSAtIHZpZXdbcHRyICsgNF0gKiB2aWV3W3B0ciArIDJdKVxuICAgIClcbiAgfVxuXG4gIC8qKiBDb3ZlcnRzIHRoaXMgdG8gYSBub3JtYWwgbWF0cml4LCB3aGljaCBpcyB0aGUgaW52ZXJzZSB0cmFuc3Bvc2UgbWF0cml4LiAqL1xuICBwdWJsaWMgbm9ybWFsTWF0KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pbnZlcnQoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zcG9zZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKiBBIDR4NCBtYXRyaXguICovXG5leHBvcnQgY2xhc3MgTWF0NCBleHRlbmRzIE1hbmFnZWRGbG9hdDY0QXJyYXk8MTY+IGltcGxlbWVudHMgTWF0PDQ+IHtcbiAgLyoqIFJldHVybiBhbiBpZGVudGl0eSBNYXQ0LiAqL1xuICBwdWJsaWMgc3RhdGljIGlkZW50aXR5KCk6IE1hdDQge1xuICAgIGNvbnN0IG0gPSBuZXcgTWF0NChtZW1vcnlNYW5hZ2VyLmNyZWF0ZSgxNikpO1xuICAgIG0uc2V0KE1BVDRfSUQpO1xuICAgIHJldHVybiBtO1xuICB9XG5cbiAgLyoqIFJldHVybiBhIE1hdDQgZnJvbSBNYXQzLiAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21NYXQzKG06IE1hdDMpOiBNYXQ0IHtcbiAgICBjb25zdCBwdHIgPSBtZW1vcnlNYW5hZ2VyLmNyZWF0ZSgxNik7XG4gICAgY29uc3QgbGVmdCA9IChwdHIgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHJpZ2h0ID0gKG0uYnl0ZU9mZnNldCAvIEJZVEVTX1BFUl9GTE9BVDY0KSB8IDA7XG4gICAgY29uc3QgdmlldyA9IG1lbW9yeU1hbmFnZXIudmlldztcbiAgICBmb3IgKGxldCBjID0gMDsgYyA8IDM7ICsrYykge1xuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCAzOyArK3IpIHtcbiAgICAgICAgdmlld1tsZWZ0ICsgYyAqIDQgKyByXSA9IHZpZXdbcmlnaHQgKyBjICogMyArIHJdO1xuICAgICAgfVxuICAgICAgdmlld1tsZWZ0ICsgYyAqIDQgKyAzXSA9IDA7XG4gICAgfVxuICAgIHZpZXdbbGVmdCArIDEyXSA9IDA7XG4gICAgdmlld1tsZWZ0ICsgMTNdID0gMDtcbiAgICB2aWV3W2xlZnQgKyAxNF0gPSAwO1xuICAgIHZpZXdbbGVmdCArIDE1XSA9IDE7XG4gICAgcmV0dXJuIG5ldyBNYXQ0KHB0cik7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB0cjogbnVtYmVyKSB7XG4gICAgc3VwZXIocHRyKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgbGVuZ3RoKCk6IDE2IHtcbiAgICByZXR1cm4gMTY7XG4gIH1cblxuICBwdWJsaWMgYWRkKHJoczogTWF0NCk6IHRoaXMge1xuICAgIGFkZCh0aGlzLCByaHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHN1YihyaHM6IE1hdDQpOiB0aGlzIHtcbiAgICBzdWIodGhpcywgcmhzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBtdWwocmhzOiBNYXQ0KTogdGhpcyB7XG4gICAgbXVsKHRoaXMsIHJocywgNCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2NhbGUoZmFjdG9yOiBudW1iZXIpOiB0aGlzIHtcbiAgICBzY2FsZSh0aGlzLCBmYWN0b3IpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHRyYW5zcG9zZSgpOiB0aGlzIHtcbiAgICB0cmFuc3Bvc2UodGhpcywgNCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaW52ZXJ0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHB0ciA9ICh0aGlzLmJ5dGVPZmZzZXQgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHZpZXcgPSBtZW1vcnlNYW5hZ2VyLnZpZXc7XG4gICAgY29uc3QgZkEwID0gKHZpZXdbcHRyICsgMF0gKiB2aWV3W3B0ciArIDVdIC0gdmlld1twdHIgKyA0XSAqIHZpZXdbcHRyICsgMV0pO1xuICAgIGNvbnN0IGZBMSA9ICh2aWV3W3B0ciArIDBdICogdmlld1twdHIgKyA5XSAtIHZpZXdbcHRyICsgOF0gKiB2aWV3W3B0ciArIDFdKTtcbiAgICBjb25zdCBmQTIgPSAodmlld1twdHIgKyAwXSAqIHZpZXdbcHRyICsgMTNdIC0gdmlld1twdHIgKyAxMl0gKiB2aWV3W3B0ciArIDFdKTtcbiAgICBjb25zdCBmQTMgPSAodmlld1twdHIgKyA0XSAqIHZpZXdbcHRyICsgOV0gLSB2aWV3W3B0ciArIDhdICogdmlld1twdHIgKyA1XSk7XG4gICAgY29uc3QgZkE0ID0gKHZpZXdbcHRyICsgNF0gKiB2aWV3W3B0ciArIDEzXSAtIHZpZXdbcHRyICsgMTJdICogdmlld1twdHIgKyA1XSk7XG4gICAgY29uc3QgZkE1ID0gKHZpZXdbcHRyICsgOF0gKiB2aWV3W3B0ciArIDEzXSAtIHZpZXdbcHRyICsgMTJdICogdmlld1twdHIgKyA5XSk7XG4gICAgY29uc3QgZkIwID0gKHZpZXdbcHRyICsgMl0gKiB2aWV3W3B0ciArIDddIC0gdmlld1twdHIgKyA2XSAqIHZpZXdbcHRyICsgM10pO1xuICAgIGNvbnN0IGZCMSA9ICh2aWV3W3B0ciArIDJdICogdmlld1twdHIgKyAxMV0gLSB2aWV3W3B0ciArIDEwXSAqIHZpZXdbcHRyICsgM10pO1xuICAgIGNvbnN0IGZCMiA9ICh2aWV3W3B0ciArIDJdICogdmlld1twdHIgKyAxNV0gLSB2aWV3W3B0ciArIDE0XSAqIHZpZXdbcHRyICsgM10pO1xuICAgIGNvbnN0IGZCMyA9ICh2aWV3W3B0ciArIDZdICogdmlld1twdHIgKyAxMV0gLSB2aWV3W3B0ciArIDEwXSAqIHZpZXdbcHRyICsgN10pO1xuICAgIGNvbnN0IGZCNCA9ICh2aWV3W3B0ciArIDZdICogdmlld1twdHIgKyAxNV0gLSB2aWV3W3B0ciArIDE0XSAqIHZpZXdbcHRyICsgN10pO1xuICAgIGNvbnN0IGZCNSA9ICh2aWV3W3B0ciArIDEwXSAqIHZpZXdbcHRyICsgMTVdIC0gdmlld1twdHIgKyAxNF0gKiB2aWV3W3B0ciArIDExXSk7XG5cbiAgICBjb25zdCBkZXRBID0gZkEwICogZkI1IC0gZkExICogZkI0ICsgZkEyICogZkIzICsgZkEzICogZkIyIC0gZkE0ICogZkIxICsgZkE1ICogZkIwO1xuICAgIGlmICghZGV0QSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIFRFTVBbMF0gPSArdmlld1twdHIgKyA1XSAqIGZCNSAtIHZpZXdbcHRyICsgOV0gKiBmQjQgKyB2aWV3W3B0ciArIDEzXSAqIGZCMztcbiAgICBURU1QWzFdID0gLXZpZXdbcHRyICsgMV0gKiBmQjUgKyB2aWV3W3B0ciArIDldICogZkIyIC0gdmlld1twdHIgKyAxM10gKiBmQjE7XG4gICAgVEVNUFsyXSA9ICt2aWV3W3B0ciArIDFdICogZkI0IC0gdmlld1twdHIgKyA1XSAqIGZCMiArIHZpZXdbcHRyICsgMTNdICogZkIwO1xuICAgIFRFTVBbM10gPSAtdmlld1twdHIgKyAxXSAqIGZCMyArIHZpZXdbcHRyICsgNV0gKiBmQjEgLSB2aWV3W3B0ciArIDldICogZkIwO1xuICAgIFRFTVBbNF0gPSAtdmlld1twdHIgKyA0XSAqIGZCNSArIHZpZXdbcHRyICsgOF0gKiBmQjQgLSB2aWV3W3B0ciArIDEyXSAqIGZCMztcbiAgICBURU1QWzVdID0gK3ZpZXdbcHRyICsgMF0gKiBmQjUgLSB2aWV3W3B0ciArIDhdICogZkIyICsgdmlld1twdHIgKyAxMl0gKiBmQjE7XG4gICAgVEVNUFs2XSA9IC12aWV3W3B0ciArIDBdICogZkI0ICsgdmlld1twdHIgKyA0XSAqIGZCMiAtIHZpZXdbcHRyICsgMTJdICogZkIwO1xuICAgIFRFTVBbN10gPSArdmlld1twdHIgKyAwXSAqIGZCMyAtIHZpZXdbcHRyICsgNF0gKiBmQjEgKyB2aWV3W3B0ciArIDhdICogZkIwO1xuICAgIFRFTVBbOF0gPSArdmlld1twdHIgKyA3XSAqIGZBNSAtIHZpZXdbcHRyICsgMTFdICogZkE0ICsgdmlld1twdHIgKyAxNV0gKiBmQTM7XG4gICAgVEVNUFs5XSA9IC12aWV3W3B0ciArIDNdICogZkE1ICsgdmlld1twdHIgKyAxMV0gKiBmQTIgLSB2aWV3W3B0ciArIDE1XSAqIGZBMTtcbiAgICBURU1QWzEwXSA9ICt2aWV3W3B0ciArIDNdICogZkE0IC0gdmlld1twdHIgKyA3XSAqIGZBMiArIHZpZXdbcHRyICsgMTVdICogZkEwO1xuICAgIFRFTVBbMTFdID0gLXZpZXdbcHRyICsgM10gKiBmQTMgKyB2aWV3W3B0ciArIDddICogZkExIC0gdmlld1twdHIgKyAxMV0gKiBmQTA7XG4gICAgVEVNUFsxMl0gPSAtdmlld1twdHIgKyA2XSAqIGZBNSArIHZpZXdbcHRyICsgMTBdICogZkE0IC0gdmlld1twdHIgKyAxNF0gKiBmQTM7XG4gICAgVEVNUFsxM10gPSArdmlld1twdHIgKyAyXSAqIGZBNSAtIHZpZXdbcHRyICsgMTBdICogZkEyICsgdmlld1twdHIgKyAxNF0gKiBmQTE7XG4gICAgVEVNUFsxNF0gPSAtdmlld1twdHIgKyAyXSAqIGZBNCArIHZpZXdbcHRyICsgNl0gKiBmQTIgLSB2aWV3W3B0ciArIDE0XSAqIGZBMDtcbiAgICBURU1QWzE1XSA9ICt2aWV3W3B0ciArIDJdICogZkEzIC0gdmlld1twdHIgKyA2XSAqIGZBMSArIHZpZXdbcHRyICsgMTBdICogZkEwO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgKytpKSB7XG4gICAgICB2aWV3W3B0ciArIGldID0gVEVNUFtpXSAvIGRldEE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZGV0KCk6IG51bWJlciB7XG4gICAgY29uc3QgcHRyID0gKHRoaXMuYnl0ZU9mZnNldCAvIEJZVEVTX1BFUl9GTE9BVDY0KSB8IDA7XG4gICAgY29uc3QgdmlldyA9IG1lbW9yeU1hbmFnZXIudmlldztcbiAgICBjb25zdCBmQTAgPSAodmlld1twdHIgKyAwXSAqIHZpZXdbcHRyICsgNV0gLSB2aWV3W3B0ciArIDRdICogdmlld1twdHIgKyAxXSk7XG4gICAgY29uc3QgZkExID0gKHZpZXdbcHRyICsgMF0gKiB2aWV3W3B0ciArIDldIC0gdmlld1twdHIgKyA4XSAqIHZpZXdbcHRyICsgMV0pO1xuICAgIGNvbnN0IGZBMiA9ICh2aWV3W3B0ciArIDBdICogdmlld1twdHIgKyAxM10gLSB2aWV3W3B0ciArIDEyXSAqIHZpZXdbcHRyICsgMV0pO1xuICAgIGNvbnN0IGZBMyA9ICh2aWV3W3B0ciArIDRdICogdmlld1twdHIgKyA5XSAtIHZpZXdbcHRyICsgOF0gKiB2aWV3W3B0ciArIDVdKTtcbiAgICBjb25zdCBmQTQgPSAodmlld1twdHIgKyA0XSAqIHZpZXdbcHRyICsgMTNdIC0gdmlld1twdHIgKyAxMl0gKiB2aWV3W3B0ciArIDVdKTtcbiAgICBjb25zdCBmQTUgPSAodmlld1twdHIgKyA4XSAqIHZpZXdbcHRyICsgMTNdIC0gdmlld1twdHIgKyAxMl0gKiB2aWV3W3B0ciArIDldKTtcbiAgICBjb25zdCBmQjAgPSAodmlld1twdHIgKyAyXSAqIHZpZXdbcHRyICsgN10gLSB2aWV3W3B0ciArIDZdICogdmlld1twdHIgKyAzXSk7XG4gICAgY29uc3QgZkIxID0gKHZpZXdbcHRyICsgMl0gKiB2aWV3W3B0ciArIDExXSAtIHZpZXdbcHRyICsgMTBdICogdmlld1twdHIgKyAzXSk7XG4gICAgY29uc3QgZkIyID0gKHZpZXdbcHRyICsgMl0gKiB2aWV3W3B0ciArIDE1XSAtIHZpZXdbcHRyICsgMTRdICogdmlld1twdHIgKyAzXSk7XG4gICAgY29uc3QgZkIzID0gKHZpZXdbcHRyICsgNl0gKiB2aWV3W3B0ciArIDExXSAtIHZpZXdbcHRyICsgMTBdICogdmlld1twdHIgKyA3XSk7XG4gICAgY29uc3QgZkI0ID0gKHZpZXdbcHRyICsgNl0gKiB2aWV3W3B0ciArIDE1XSAtIHZpZXdbcHRyICsgMTRdICogdmlld1twdHIgKyA3XSk7XG4gICAgY29uc3QgZkI1ID0gKHZpZXdbcHRyICsgMTBdICogdmlld1twdHIgKyAxNV0gLSB2aWV3W3B0ciArIDE0XSAqIHZpZXdbcHRyICsgMTFdKTtcblxuICAgIHJldHVybiBmQTAgKiBmQjUgLSBmQTEgKiBmQjQgKyBmQTIgKiBmQjMgKyBmQTMgKiBmQjIgLSBmQTQgKiBmQjEgKyBmQTUgKiBmQjA7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ik9BQ1NBLEdBQUcsQ0FBRUMsR0FBRyxD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R0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDMUVYLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRyxFQUFFZSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMxRVgsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFHLEVBQUVlLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQzFFWCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUcsRUFBRWUsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDMUVYLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRyxFQUFFZSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMxRVgsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFHLEVBQUVlLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFD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QUFJakIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFFLENBQzNFLEtBQU0sQ0FBQXNCLEdBQUcsQ0FBSWxCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBRSxDQUM3RSxLQUFNLENBQUF1QixHQUFHLENBQUluQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUUsQ0FDM0UsS0FBTSxDQUFBd0IsR0FBRyxDQUFJcEIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFFLENBQzdFLEtBQU0sQ0FBQXlCLEdBQUcsQ0FBSXJCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBRSxDQUM3RSxLQUFNLENBQUEwQixHQUFHLENBQUl0QixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUUsQ0FDM0UsS0FBTSxDQUFBMkIsR0FBRyxDQUFJdkIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFFLENBQzdFLEtBQU0sQ0FBQTRCLEdBQUcsQ0FBSXhCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBRSxDQUM3RSxLQUFNLENBQUE2QixHQUFHLENBQUl6QixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUUsQ0FDN0UsS0FBTSxDQUFBOEIsR0FBRyxDQUFJMUIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFFLENBQzdFLEtBQU0sQ0FBQStCLEdBQUcsQ0FBSTNCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBRSxDQUUvRSxLQUFNLENBQUFZLElBQUksQ0FBR1EsR0FBRyxDQUFHVyxHQUFHLENBQUdWLEdBQUcsQ0FBR1MsR0FBRyxDQUFHUixHQUFHLENBQUdPLEdBQUcsQ0FBR04sR0FBRyxDQUFHSyxHQUFHLENBQUdKLEdBQUcsQ0FBR0csR0FBRyxDQUFHRixHQUFHLENBQUdDLEdBQUcsQ0FDbEYsR0FBSSxDQUFDZCxJQUFJLENBQUUsQ0FDVCxNQUFPLE1BQ1QsQ0FFQXZCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRyxDQUFDZSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBRytCLEdBQUcsQ0FBRzNCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHOEIsR0FBRyxDQUFHMUIsSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUc2QixHQUFHLENBQzNFeEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFHLENBQUNlLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHK0IsR0FBRyxDQUFHM0IsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUc0QixHQUFHLENBQUd4QixJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBRzJCLEdBQUcsQ0FDM0V0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUcsQ0FBQ2UsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUc4QixHQUFHLENBQUcxQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBRzRCLEdBQUcsQ0FBR3hCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHMEIsR0FBRyxDQUMzRXJDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRyxDQUFDZSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBRzZCLEdBQUcsQ0FBR3pCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHMkIsR0FBRyxDQUFHdkIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUcwQixHQUFHLENBQzFFckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFHLENBQUNlLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHK0IsR0FBRyxDQUFHM0IsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUc4QixHQUFHLENBQUcxQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBRzZCLEdBQUcsQ0FDM0V4QyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUcsQ0FBQ2UsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUcrQixHQUFHLENBQUczQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBRzRCLEdBQUcsQ0FBR3hCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHMkIsR0FBRyxDQUMzRXRDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRyxDQUFDZSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBRzhCLEdBQUcsQ0FBRzFCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHNEIsR0FBRyxDQUFHeEIsSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUcwQixHQUFHLENBQzNFckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFHLENBQUNlLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHNkIsR0FBRyxDQUFHekIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUcyQixHQUFHLENBQUd2QixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBRzBCLEdBQUcsQ0FDMUVyQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUcsQ0FBQ2UsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUd5QixHQUFHLENBQUdyQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR3dCLEdBQUcsQ0FBR3BCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHdUIsR0FBRyxDQUM1RWxDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRyxDQUFDZSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR3lCLEdBQUcsQ0FBR3JCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHc0IsR0FBRyxDQUFHbEIsSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdxQixHQUFHLENBQzVFaEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFHLENBQUNlLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHd0IsR0FBRyxDQUFHcEIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdzQixHQUFHLENBQUdsQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR29CLEdBQUcsQ0FDNUUvQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUcsQ0FBQ2UsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUd1QixHQUFHLENBQUduQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR3FCLEdBQUcsQ0FBR2pCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHb0IsR0FBRyxDQUM1RS9CLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBRyxDQUFDZSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR3lCLEdBQUcsQ0FBR3JCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHd0IsR0FBRyxDQUFHcEIsSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUd1QixHQUFHLENBQzdFbEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFHLENBQUNlLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHeUIsR0FBRyxDQUFHckIsSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdzQixHQUFHLENBQUdsQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR3FCLEdBQUcsQ0FDN0VoQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUcsQ0FBQ2UsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUd3QixHQUFHLENBQUdwQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR3NCLEdBQUcsQ0FBR2xCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHb0IsR0FBRyxDQUM1RS9CLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBRyxDQUFDZSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR3VCLEdBQUcsQ0FBR25CLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHcUIsR0FBRyxDQUFHakIsSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdvQixHQUFHLENBRTVFLElBQUssR0FBSSxDQUFBTixDQUFDLENBQUcsQ0FBQyxDQUFFQSxDQUFDLENBQUcsRUFBRSxDQUFFLEVBQUVBLENBQUMsQ0FBRSxDQUMzQlYsSUFBSSxDQUFDSixHQUFHLENBQUdjLENBQUMsQ0FBQyxDQUFHekIsSUFBSSxDQUFDeUIsQ0FBQyxDQUFDLENBQUdGLElBQzVCLENBRUEsTUFBTyxLQUNULENBRU9DLEdBQUdBLENBQUEsQ0FBVyxDQUNuQixLQUFNLENBQUFiLEdBQUcsQ0FBSSxJQUFJLENBQUNHLFVBQVUsQ0FBR2pCLGlCQUFpQixDQUFJLENBQUMsQ0FDckQsS0FBTSxDQUFBa0IsSUFBSSxDQUFHaEIsYUFBYSxDQUFDZ0IsSUFBSSxDQUMvQixLQUFNLENBQUFnQixHQUFHLENBQUloQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUUsQ0FDM0UsS0FBTSxDQUFBcUIsR0FBRyxDQUFJakIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFFLENBQzNFLEtBQU0sQ0FBQXNCLEdBQUcsQ0FBSWxCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBRSxDQUM3RSxLQUFNLENBQUF1QixHQUFHLENBQUluQixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUUsQ0FDM0UsS0FBTSxDQUFBd0IsR0FBRyxDQUFJcEIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFFLENBQzdFLEtBQU0sQ0FBQXlCLEdBQUcsQ0FBSXJCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBRSxDQUM3RSxLQUFNLENBQUEwQixHQUFHLENBQUl0QixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUUsQ0FDM0UsS0FBTSxDQUFBMkIsR0FBRyxDQUFJdkIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFFLENBQzdFLEtBQU0sQ0FBQTRCLEdBQUcsQ0FBSXhCLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLENBQUMsQ0FBRSxDQUM3RSxLQUFNLENBQUE2QixHQUFHLENBQUl6QixJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxDQUFDLENBQUUsQ0FDN0UsS0FBTSxDQUFBOEIsR0FBRyxDQUFJMUIsSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsQ0FBQyxDQUFFLENBQzdFLEtBQU0sQ0FBQStCLEdBQUcsQ0FBSTNCLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBQyxDQUFHSSxJQUFJLENBQUNKLEdBQUcsQ0FBRyxFQUFFLENBQUMsQ0FBR0ksSUFBSSxDQUFDSixHQUFHLENBQUcsRUFBRSxDQUFDLENBQUdJLElBQUksQ0FBQ0osR0FBRyxDQUFHLEVBQUUsQ0FBRSxDQUUvRSxNQUFPLENBQUFvQixHQUFHLENBQUdXLEdBQUcsQ0FBR1YsR0FBRyxDQUFHUyxHQUFHLENBQUdSLEdBQUcsQ0FBR08sR0FBRyxDQUFHTixHQUFHLENBQUdLLEdBQUcsQ0FBR0osR0FBRyxDQUFHRyxHQUFHLENBQUdGLEdBQUcsQ0FBR0MsR0FDM0UsQ0FDRiIsImlnbm9yZUxpc3QiOltdfQ==