diff --git a/docs/css/docs.css b/docs/css/docs.css index 5a241ec..f7593ae 100644 --- a/docs/css/docs.css +++ b/docs/css/docs.css @@ -1385,6 +1385,10 @@ code { body { height: initial !important; } + .outline-message, + .outline-toolbar { + display: none !important; + } .outline-reader { display: block !important; overflow: hidden; @@ -1785,4 +1789,4 @@ code { background-color: rgba(0, 0, 0, 0.15); } -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLzxpbnB1dCBjc3MgMT4iLCJub3JtYWxpemUubGVzcyIsImJhc2UubGVzcyIsInNjcm9sbGJhci5sZXNzIiwibGF5b3V0Lmxlc3MiLCJhc2lkZS5sZXNzIiwibWFpbi5sZXNzIiwic2VjdGlvbi5sZXNzIiwiY2FzZS5sZXNzIiwiLi4vLi4vdGhlbWUvdmFyaWFibGVzLmxlc3MiLCIuLi8uLi90aGVtZS9pY29ucy5sZXNzIiwiLi4vLi4vdGhlbWUvYW5jaG9ycy5sZXNzIiwiLi4vLi4vdGhlbWUvZHJhd2VyLmxlc3MiLCIuLi8uLi90aGVtZS9taXhpbnMubGVzcyIsIi4uLy4uL3RoZW1lL2NoYXB0ZXJzLmxlc3MiLCIuLi8uLi90aGVtZS9yZWFkZXIubGVzcyIsIi4uLy4uL3RoZW1lL3Rvb2xiYXIubGVzcyIsIi4uLy4uL3RoZW1lL21lc3NhZ2UubGVzcyIsIi4uLy4uL3RoZW1lL3Njcm9sbGJhci5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RTtnRkFDZ0Y7QUFDaEY7OztHQUdHO0FDSUg7RUFDRSxrQkFBQTtFREZBLE9BQU87RUNHUCwrQkFBQTtFRERBLE9BQU87Q0FDUjtBQUNEO2dGQUNnRjtBQUNoRjs7R0FFRztBQ0tIO0VBQ0UsVUFBQTtDREhEO0FBQ0Q7O0dBRUc7QUNPSDtFQUNFLGVBQUE7Q0RMRDtBQUNEOzs7R0FHRztBQ1NIO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0NEUEQ7QUFDRDtnRkFDZ0Y7QUFDaEY7OztHQUdHO0FDWUg7RUFDRSxnQ0FBQTtVQUFBLHdCQUFBO0VEVkEsT0FBTztFQ1dQLFVBQUE7RURUQSxPQUFPO0VDVVAsa0JBQUE7RURSQSxPQUFPO0NBQ1I7QUFDRDs7O0dBR0c7QUNXSDtFQUNFLGtDQUFBO0VEVEEsT0FBTztFQ1VQLGVBQUE7RURSQSxPQUFPO0NBQ1I7QUFDRDtnRkFDZ0Y7QUFDaEY7O0dBRUc7QUNZSDtFQUNFLDhCQUFBO0NEVkQ7QUFDRDs7O0dBR0c7QUNjSDtFQUNFLG9C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RUErQkksdUJBQUE7Q2pCcTdDTDtBaUJqN0NDO0VKdEoyQixvQkFBQTtDYjBrRDVCO0FpQmg3Q0s7RUFDRSxpQkFBQTtFQUNBLGdCQUFBO0NqQms3Q1A7QWlCcDdDSztFSjFKdUIsb0JBQUE7RUlnS25CLFVBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtDakJrN0NUO0FpQi82Q087RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0NqQmk3Q1Q7QWlCNzZDSztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2pCKzZDUDtBaUI3NkNPO0VBQ0UsaUJBQUE7RUFDQSxnQkFBQTtDakIrNkNUO0FpQno2Q0M7RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0NqQjI2Q0g7QWlCeDZDSztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2pCMDZDUDtBaUJ2NkNLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDakJ5NkNQO0FpQnA2Q0M7RUFDRSxXQUFBO0NqQnM2Q0g7QWlCbjZDQztFQUNFLGNBQUE7Q2pCcTZDSDtBQUNELDJCQUEyQjtBa0Izb0QzQjtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsMkJBQUE7Q2xCNm9ERDtBa0Izb0RDO0VBQ0UsMkJBQUE7Q2xCNm9ESDtBa0J6b0RHO0VBQ0Usc0NBQUE7RUFDQSwyQkFBQTtDbEIyb0RMO0FrQnhvREc7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NsQjBvREw7QWtCdm9ERztFQUNFLHNDQUFBO0NsQnlvREw7QWtCcm9EQztFQUNFLHNDQUFBO0NsQnVvREgiLCJmaWxlIjoiZG9jcy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gKi9cbmh0bWwge1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi9cbn1cbi8qIFNlY3Rpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG4vKipcbiAqIFJlbmRlciB0aGUgYG1haW5gIGVsZW1lbnQgY29uc2lzdGVudGx5IGluIElFLlxuICovXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG4gKi9cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIC8qIDEgKi9cbiAgaGVpZ2h0OiAwO1xuICAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICAvKiAyICovXG59XG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnByZSB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqL1xufVxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAvKiAyICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07XG4gIC8qIDIgKi9cbn1cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuICovXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDIgKi9cbn1cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5idXR0b24sXG5pbnB1dCB7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5idXR0b24sXG5bdHlwZT0nYnV0dG9uJ10sXG5bdHlwZT0ncmVzZXQnXSxcblt0eXBlPSdzdWJtaXQnXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0ncmVzZXQnXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdzdWJtaXQnXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT0nYnV0dG9uJ106LW1vei1mb2N1c3JpbmcsXG5bdHlwZT0ncmVzZXQnXTotbW96LWZvY3VzcmluZyxcblt0eXBlPSdzdWJtaXQnXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0O1xuICAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlO1xuICAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIC8qIDEgKi9cbn1cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuICovXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cbiAqL1xuW3R5cGU9J2NoZWNrYm94J10sXG5bdHlwZT0ncmFkaW8nXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cbiAqL1xuW3R5cGU9J3NlYXJjaCddIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIC8qIDIgKi9cbn1cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5bdHlwZT0nc2VhcmNoJ106Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gKi9cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgLyogMSAqL1xuICBmb250OiBpbmhlcml0O1xuICAvKiAyICovXG59XG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICovXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuLyogTWlzY1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuICovXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICovXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiA9PT09PSBCYXNlID09PT09ICovXG5odG1sLFxuYm9keSB7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZDogI2ZhZmFmYTtcbiAgY29sb3I6ICMzMzM7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG4gIGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5hOmxpbmssXG5hOnZpc2l0ZWQsXG5hOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbmE6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbmNvZGUge1xuICBmb250LWZhbWlseTogJ1NvdXJjZSBDb2RlIFBybycsIENvbnNvbGFzLCBHZW9yZ2lhLCBNb25hY28sIG1vbm9zcGFjZSwgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG4vKiA9PT09PSBTY3JvbGxiYXIgPT09PT0gKi9cbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogN3B4O1xuICBoZWlnaHQ6IDdweDtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIHtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG59XG4vKiBMYXlvdXQgKi9cbi5kb2NzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLyogQXNpZGUgKi9cbi5hc2lkZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgd2lkdGg6IDI2MHB4O1xuICBtYXJnaW46IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgY29sb3I6ICNkZGQ7XG4gIGJveC1zaGFkb3c6IDAgMCA1cHggMnB4ICNkZGQ7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLyogTWFpbiAqL1xuLm1haW4ge1xuICBmbGV4OiAxO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uYXNpZGUge1xuICBmb250LWZhbWlseTogJ1NvdXJjZSBDb2RlIFBybycsIENvbnNvbGFzLCBHZW9yZ2lhLCBNb25hY28sIG1vbm9zcGFjZSwgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG4uYXNpZGVfX2hlYWRlciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBmbGV4LXNocmluazogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5hc2lkZV9fbmF2IHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uYXNpZGVfX2gyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogNTRweDtcbiAgbGluZS1oZWlnaHQ6IDU0cHg7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1mYW1pbHk6IEdlb3JnaWEsIENvbnNvbGFzLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlX19oMyB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAwIDIwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5hc2lkZV9fbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMTBweCAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlX19pdGVtIHtcbiAgaGVpZ2h0OiAzMnB4O1xuICBsaW5lLWhlaWdodDogMzJweDtcbiAgcGFkZGluZzogMCAzMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVycyB7XG4gIGZsZXg6IDE7XG59XG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfX21haW46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY2Njtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19fbWFpbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX19wbGFjZWhvbGRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2ZmZjtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmsge1xuICBjb2xvcjogI2RkZDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6dmlzaXRlZCB7XG4gIGNvbG9yOiAjZGRkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjZGRkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19hY3RpdmUub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfYWN0aXZlLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX2FjdGl2ZS5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5tYWluX19oZWFkZXIsXG4ubWFpbl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDFlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1haW5fX2gxIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmctdG9wOiAxZW07XG4gIGZvbnQtc2l6ZTogNWVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1haW5fX25hbWUge1xuICBjb2xvcjogIzUwN2FmZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cbi5tYWluX190YWdsaW5lIHtcbiAgbWFyZ2luOiAxZW0gYXV0bztcbiAgbWF4LXdpZHRoOiA5NjBweDtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBmb250LXNpemU6IDJlbTtcbiAgY29sb3I6ICM5OTk7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWFpbl9fY2RuIHtcbiAgbWFyZ2luOiAyZW0gMDtcbiAgcGFkZGluZzogMmVtO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNTAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWFpbl9fZG93bmxvYWQge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICB3aWR0aDogMjAwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tYWluX19idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcGFkZGluZzogMTRweCAyOXB4O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tYWluX19idXR0b246bGluayxcbi5tYWluX19idXR0b246dmlzaXRlZCxcbi5tYWluX19idXR0b246aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLm1haW5fX2Zvb3RlciB7XG4gIG1hcmdpbjogMCAzZW07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb24ge1xuICBtYXJnaW46IDFlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2hlYWRlcixcbi5zZWN0aW9uX19jb250ZW50LFxuLnNlY3Rpb25fX2Zvb3RlciB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAzZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fdGl0bGUge1xuICBjb2xvcjogIzY2Njtcbn1cbi5zZWN0aW9uX19oMyB7XG4gIGNvbG9yOiAjNTA3YWZlO1xuICBmb250LXNpemU6IDEuMzVlbTtcbn1cbi5zZWN0aW9uX19oNCB7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGNvbG9yOiAjNjY2O1xufVxuLnNlY3Rpb25fX2g1IHtcbiAgZm9udC1zaXplOiAxZW07XG4gIGNvbG9yOiAjOTk5O1xufVxuLnNlY3Rpb25fX2RsLFxuLnNlY3Rpb25fX2R0LFxuLnNlY3Rpb25fX2RkIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2RsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuLnNlY3Rpb25fX2R0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLnNlY3Rpb25fX2RkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5zZWN0aW9uX19wcmUge1xuICBtYXJnaW46IDJlbSAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLnNlY3Rpb25fX2NvZGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIG1hcmdpbi10b3A6IDNlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgY29sb3I6ICM5OTk7XG59XG4uc2VjdGlvbl9fdGFibGUge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG59XG4uc2VjdGlvbl9fdGgsXG4uc2VjdGlvbl9fdGQge1xuICBwYWRkaW5nOiA1cHggMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb25fX3RoIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5zZWN0aW9uX19oZWFkZXIsXG4gIC5zZWN0aW9uX19jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwIDFlbTtcbiAgfVxufVxuLmNhc2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogNDBweDtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAwO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fcHJlLFxuLmNhc2VfX3RleHRhcmVhIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbn1cbi5jYXNlX19wcmUsXG4uY2FzZV9fY29kZSxcbi5jYXNlX190ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG4uY2FzZV9fcHJlIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jYXNlX190b29sYmFyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogMzZweDtcbiAgbGluZS1oZWlnaHQ6IDM2cHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX19hY3Rpb24sXG4uY2FzZV9fcmVtb3ZlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzA1ODk0MjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uY2FzZV9fYWN0aW9uIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY2FzZV9fYWN0aW9uOmZpcnN0LWNoaWxkIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuLmNhc2VfX3JlbW92ZSB7XG4gIGZsb2F0OiByaWdodDtcbn1cbi5jYXNlX19jb25zb2xlIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogMTgwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fdGV4dGFyZWEge1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAxZW07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLmNhc2VfX2xpc3QsXG4uY2FzZV9faXRlbSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNhc2VfX2xpc3Qge1xuICBoZWlnaHQ6IDM2MHB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uY2FzZV9faXRlbSB7XG4gIGhlaWdodDogMzZweDtcbiAgbGluZS1oZWlnaHQ6IDM2cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMCAxNnB4O1xufVxuLmNhc2VfX2l0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmOGY5O1xufVxuOnJvb3Qge1xuICAtLW91dGxpbmUtekluZGV4OiAyMDAwO1xuICAtLW91dGxpbmUtc3RpY2t5LWhlaWdodDogMTAwJTtcbiAgLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoOiAxMDAlO1xufVxuLyogPT09PT09PT09PSBjb2xvcnMudGhlbWUgLSDln7rnoYDpopzoibLlj5jph4/pm4blkIggPT09PT09PT09PSAqL1xuLyoqXG4gKiBlbGxpcHNpcy5sZXNzIC0g5paH5pys55yB55WlIG1peGlueCDlh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKipcbiAqIHNoYWRvdy5sZXNzIC0g6Zi05b2x5qC35byP6K6+572uIG1peGlueCDlh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjIwXG4gKi9cbi8qID09PT09PSDpmLTlvbHmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXG4vKiA9PT09PT09PT09IGljb24udGhlbWUgLSBzdmcg5Zu+5qCH55qE5qC35byPID09PT09PT09PT0gKi9cbi5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1pY29uX19zdmcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBmaWxsOiBjdXJyZW50Y29sb3I7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtaGVhZGluZzpob3ZlciAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0OmhvdmVyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0IC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgbGVmdDogLTFlbTtcbn1cbi5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogLTE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX21vZGFsIHtcbiAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjE7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40cztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9faGVhZGVyLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICB3aWR0aDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9faGVhZGVyLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBmbGV4LXNocmluazogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUsXG4ub3V0bGluZS1kcmF3ZXJfX21haW4sXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIHBhZGRpbmc6IDAgMTZweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9faGVhZGVyLFxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogNTJweDtcbiAgbGluZS1oZWlnaHQ6IDUycHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBtYXJnaW46IDAgMTZweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDEycHg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzk5OTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZSAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG4ub3V0bGluZS1kcmF3ZXJfX21haW4ge1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19vdmVybGF5IHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvcGFjaXR5OiAwLjE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICB3aWR0aDogMjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21pbmkge1xuICB3aWR0aDogNDgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3NtYWxsLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9zbWFsbCB7XG4gIHdpZHRoOiA1NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIHdpZHRoOiA2ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICB3aWR0aDogNzIwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX2xhcmdlLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9sYXJnZSB7XG4gIHdpZHRoOiA5NjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTczMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTI5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC02OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yixcbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueSB7XG4gIGhlaWdodDogMjQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21pbmkge1xuICBoZWlnaHQ6IDMyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICBoZWlnaHQ6IDM2MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyIHtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICBoZWlnaHQ6IDQ0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICBoZWlnaHQ6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB0b3A6IGluaXRpYWw7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3J0bCB7XG4gIHJpZ2h0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBsZWZ0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl90dGIge1xuICB0b3A6IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIGJvdHRvbTogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfcnRsLFxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xufVxuLm91dGxpbmUtZHJhd2VyX2Z1bGwge1xuICBwYWRkaW5nOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IHZhcigtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGgpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzLXBhcmVudCB7XG4gIHRyYW5zaXRpb246IDAuM3MgZWFzZS1pbi1vdXQ7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fdGl0bGUge1xuICBtYXJnaW46IDAgMTZweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0LFxuLm91dGxpbmUtY2hhcHRlcnNfX3N1YmplY3QsXG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbGlzdCB7XG4gIHBhZGRpbmc6IDAuNWVtIDA7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCB7XG4gIHBhZGRpbmctbGVmdDogMWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fcGxhY2Vob2xkZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDU4OTQyO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvciB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMCAxLjVlbTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjNTU1O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2NvZGUge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVlbTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZ2hsaWdodC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZ2hsaWdodC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZ2hsaWdodC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3ksXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG4gIHRvcDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX21haW4sXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX21haW4sXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZvbGRlZCB7XG4gIHdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLyoqXG4gKiBtaXhpbnMubGVzcyAtIOW3peWFt+WHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTFcbiAqL1xuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cbi8qID09PT09PSDlnIbop5LmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcud3JhcHBlci5wb3N0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAzZW0gNGVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBzY3JvbGwtdGltZWxpbmUtbmFtZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xuICBvdmVyZmxvdzogc2Nyb2xsO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fcHJvZ3Jlc3Mge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMztcbiAgaGVpZ2h0OiA0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTA3YWZlO1xuICBzY2FsZTogMCAxO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICBhbmltYXRpb246IG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIGxpbmVhcjtcbiAgYW5pbWF0aW9uLXRpbWVsaW5lOiAtLVByb2dyZXNzVGltZWxpbmU7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDM7XG4gIHRvcDogNTAlO1xuICByaWdodDogMjJweDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogMCAwIDhweCAjZGRkO1xuICBjb2xvcjogIzk5OTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX2Nsb3NlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyIGgxLFxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjNlbTtcbiAgZm9udC1zaXplOiAzLjVlbTtcbn1cbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xuICB0byB7XG4gICAgc2NhbGU6IDEgMTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcGFkZGluZzogMCAxLjI1ZW07XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gIH1cbn1cbkBtZWRpYSBwcmludCB7XG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBoMSxcbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlciBoMSxcbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX19jbG9zZSxcbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX19wcm9ncmVzcyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBwcmUge1xuICAgIHBhZGRpbmc6IDFlbSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlLFxuICAub3V0bGluZS1yZWFkZXIgY29kZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciB0YWJsZSxcbiAgLm91dGxpbmUtcmVhZGVyIGltZyxcbiAgLm91dGxpbmUtcmVhZGVyIHN2ZyB7XG4gICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXJfc2libGluZyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4vKiA9PT09PT09PT09IGJ1dHRvbnMudGhlbWUgLSDmjInpkq7lr7zoiKrmoLflvI8gPT09PT09PT09PSAqL1xuLm91dGxpbmUtdG9vbGJhciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTk7XG4gIG1hcmdpbjogMDtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAxMHB4O1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzk5OTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICBib3JkZXItY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24uaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9faWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGZpbGw6IGN1cnJlbnRjb2xvcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG4gIGJvcmRlci1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX3JvdW5kZWQub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZDpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXI6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLFxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIHtcbiAgdG9wOiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIHRvcDogLTU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dCB7XG4gIGJvdHRvbTogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYnR0Lm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBib3R0b206IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwsXG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bCB7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICByaWdodDogLTg2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGxlZnQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX3J0bCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyoqXG4gKiBmb250Lmxlc3MgLSDlrZfkvZPnm7jlhbPmoLflvI9cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjE2XG4gKi9cbi8qID09PT09PSDlrZfkvZMgPT09PT09ICovXG4vKiA9PT09PT0g5a2X6YeNID09PT09PSAqL1xuLyogPT09PT09IOWtl+WPtyA9PT09PT0gKi9cbi5vdXRsaW5lLW1lc3NhZ2Uge1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTtcbiAgb3BhY2l0eTogMC4xO1xuICB0b3A6IC01MHB4O1xuICBsZWZ0OiA1MCU7XG4gIGhlaWdodDogNDBweDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDUwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjNjY2O1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY29udGVudCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtYXJnaW46IDA7XG4gIG1heC13aWR0aDogNzAwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSxcbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBsZWZ0OiAwO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSB7XG4gIHJpZ2h0OiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UgLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZTpob3ZlciB7XG4gIGNvbG9yOiAjNjY2O1xufVxuLm91dGxpbmUtbWVzc2FnZV9pbmZvIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5OTAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtbWVzc2FnZV9lcnJvciAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWQ1ZDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDE5MHB4O1xuICBwYWRkaW5nOiAwIDUwcHggMCAxNXB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfaW5mbyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzUwN2FmZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjhmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZjk5MDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZiZTY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMDU4OTQyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFmNmViO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfZXJyb3Ige1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZjVkNWQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxZjA7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICB3aWR0aDogMDtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4gLm91dGxpbmUtbWVzc2FnZV9faWNvbiAub3V0bGluZS1pY29uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQge1xuICBtaW4td2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nOiAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9pbmZvIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjZmY5OTAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9lcnJvciAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICNmZjVkNWQ7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0IC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZCB7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0IHtcbiAgbWluLXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdCAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgdG9wOiAxMHB4O1xuICBsZWZ0OiAxMHB4O1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAwIDIwcHggMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDE5NXB4O1xuICBwYWRkaW5nOiAwIDQwcHggMCAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIxNXB4O1xuICBwYWRkaW5nOiAwIDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCA1MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMjMwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDE1cHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgub3V0bGluZS1tZXNzYWdlX2xpZ2h0IHtcbiAgbWluLXdpZHRoOiAyMTBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfdmlzaWJsZSB7XG4gIG9wYWNpdHk6IDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiA9PT09PSBTY3JvbGxiYXIgPT09PT0gKi9cbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogN3B4O1xuICBoZWlnaHQ6IDdweDtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIHtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xufVxuOjotd2Via2l0LXNjcm9sbGJhcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXHJcblxyXG4vKiBEb2N1bWVudFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cclxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXHJcbiAqL1xyXG5cclxuaHRtbCB7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cclxuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cclxufVxyXG5cclxuLyogU2VjdGlvbnNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuYm9keSB7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4vKipcclxuICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXHJcbiAqL1xyXG5cclxubWFpbiB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXHJcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuaDEge1xyXG4gIGZvbnQtc2l6ZTogMmVtO1xyXG4gIG1hcmdpbjogMC42N2VtIDA7XHJcbn1cclxuXHJcbi8qIEdyb3VwaW5nIGNvbnRlbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxyXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cclxuICovXHJcblxyXG5ociB7XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cclxuICBoZWlnaHQ6IDA7IC8qIDEgKi9cclxuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbnByZSB7XHJcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cclxufVxyXG5cclxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXHJcbiAqL1xyXG5cclxuYSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxyXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmFiYnJbdGl0bGVdIHtcclxuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuYixcclxuc3Ryb25nIHtcclxuICBmb250LXdlaWdodDogYm9sZGVyO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbmNvZGUsXHJcbmtiZCxcclxuc2FtcCB7XHJcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbnNtYWxsIHtcclxuICBmb250LXNpemU6IDgwJTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxyXG4gKiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuc3ViLFxyXG5zdXAge1xyXG4gIGZvbnQtc2l6ZTogNzUlO1xyXG4gIGxpbmUtaGVpZ2h0OiAwO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuXHJcbnN1YiB7XHJcbiAgYm90dG9tOiAtMC4yNWVtO1xyXG59XHJcblxyXG5zdXAge1xyXG4gIHRvcDogLTAuNWVtO1xyXG59XHJcblxyXG4vKiBFbWJlZGRlZCBjb250ZW50XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cclxuICovXHJcblxyXG5pbWcge1xyXG4gIGJvcmRlci1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuLyogRm9ybXNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuaW5wdXQsXHJcbm9wdGdyb3VwLFxyXG5zZWxlY3QsXHJcbnRleHRhcmVhIHtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xyXG4gIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXHJcbiAgbWFyZ2luOiAwOyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cclxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cclxuICovXHJcblxyXG5idXR0b24sXHJcbmlucHV0IHtcclxuICAvKiAxICovXHJcbiAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cclxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuc2VsZWN0IHtcclxuICAvKiAxICovXHJcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuW3R5cGU9J2J1dHRvbiddLFxyXG5bdHlwZT0ncmVzZXQnXSxcclxuW3R5cGU9J3N1Ym1pdCddIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXHJcbiAqL1xyXG5cclxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxyXG5bdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXHJcblt0eXBlPSdyZXNldCddOjotbW96LWZvY3VzLWlubmVyLFxyXG5bdHlwZT0nc3VibWl0J106Oi1tb3otZm9jdXMtaW5uZXIge1xyXG4gIGJvcmRlci1zdHlsZTogbm9uZTtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxyXG4gKi9cclxuXHJcbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcclxuW3R5cGU9J2J1dHRvbiddOi1tb3otZm9jdXNyaW5nLFxyXG5bdHlwZT0ncmVzZXQnXTotbW96LWZvY3VzcmluZyxcclxuW3R5cGU9J3N1Ym1pdCddOi1tb3otZm9jdXNyaW5nIHtcclxuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXHJcbiAqL1xyXG5cclxuZmllbGRzZXQge1xyXG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXHJcbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cclxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxyXG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cclxuICovXHJcblxyXG5sZWdlbmQge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cclxuICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xyXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXHJcbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXHJcbiAgcGFkZGluZzogMDsgLyogMyAqL1xyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXHJcbiAqL1xyXG5cclxucHJvZ3Jlc3Mge1xyXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxyXG4gKi9cclxuXHJcbnRleHRhcmVhIHtcclxuICBvdmVyZmxvdzogYXV0bztcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxyXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXHJcbiAqL1xyXG5cclxuW3R5cGU9J2NoZWNrYm94J10sXHJcblt0eXBlPSdyYWRpbyddIHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXHJcbiAgcGFkZGluZzogMDsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxyXG4gKi9cclxuXHJcblt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcclxuW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcclxuICBoZWlnaHQ6IGF1dG87XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cclxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXHJcbiAqL1xyXG5cclxuW3R5cGU9J3NlYXJjaCddIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xyXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXHJcbiAqL1xyXG5cclxuW3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxyXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXHJcbiAqL1xyXG5cclxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cclxuICBmb250OiBpbmhlcml0OyAvKiAyICovXHJcbn1cclxuXHJcbi8qIEludGVyYWN0aXZlXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxyXG4gKi9cclxuXHJcbmRldGFpbHMge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuc3VtbWFyeSB7XHJcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xyXG59XHJcblxyXG4vKiBNaXNjXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxyXG4gKi9cclxuXHJcbnRlbXBsYXRlIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXHJcbiAqL1xyXG5cclxuW2hpZGRlbl0ge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi8qID09PT09IEJhc2UgPT09PT0gKi9cclxuaHRtbCxcclxuYm9keSB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJhY2tncm91bmQ6IEBiZ19jb2xvcjtcclxuICBjb2xvcjogQHByaW1hcnlfdGV4dF9jb2xvcjtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XHJcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG5hIHtcclxuICAmOmxpbmssXHJcbiAgJjp2aXNpdGVkLFxyXG4gICY6aG92ZXIge1xyXG4gICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcbn1cclxuXHJcbmNvZGUge1xyXG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCxcclxuICAgIHNhbnMtc2VyaWY7XHJcbn1cclxuIiwiLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIHdpZHRoOiA3cHg7XHJcbiAgaGVpZ2h0OiA3cHg7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi8qIExheW91dCAqL1xyXG4uZG9jcyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXJnaW46IDA7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLyogQXNpZGUgKi9cclxuLmFzaWRlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgd2lkdGg6IDI2MHB4O1xyXG4gIG1hcmdpbjogMDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnlfdGV4dF9jb2xvcjtcclxuICBjb2xvcjogQGJvcmRlcl9jb2xvcjtcclxuICBib3gtc2hhZG93OiAwIDAgNXB4IDJweCBAYm9yZGVyX2NvbG9yO1xyXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcbn1cclxuXHJcbi8qIE1haW4gKi9cclxuLm1haW4ge1xyXG4gIGZsZXg6IDE7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICBvdmVyZmxvdzogYXV0bztcclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLmFzaWRlIHtcclxuICBmb250LWZhbWlseTogJ1NvdXJjZSBDb2RlIFBybycsIENvbnNvbGFzLCBHZW9yZ2lhLCBNb25hY28sIG1vbm9zcGFjZSwgQXJpYWwsXHJcbiAgICBzYW5zLXNlcmlmO1xyXG5cclxuICAmX19oZWFkZXIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBmbGV4LXNocmluazogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19uYXYge1xyXG4gICAgZmxleDogMTtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9faDIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDU0cHg7XHJcbiAgICBsaW5lLWhlaWdodDogNTRweDtcclxuICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LWZhbWlseTogR2VvcmdpYSwgQ29uc29sYXMsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2gzIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2xpc3Qge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMTBweCAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2l0ZW0ge1xyXG4gICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDMycHg7XHJcbiAgICBwYWRkaW5nOiAwIDMwcHg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgLm91dGxpbmUtY2hhcHRlcnMge1xyXG4gICAgZmxleDogMTtcclxuXHJcbiAgICAmX19tYWluIHtcclxuICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmX19wbGFjZWhvbGRlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzZWNvbmRhcnlfdGV4dF9jb2xvcjtcclxuICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCBAd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fYW5jaG9yIHtcclxuICAgICAgJjpsaW5rIHtcclxuICAgICAgICBjb2xvcjogQGJvcmRlcl9jb2xvcjtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6dmlzaXRlZCB7XHJcbiAgICAgICAgY29sb3I6IEBib3JkZXJfY29sb3I7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogQGJvcmRlcl9jb2xvcjtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZfYWN0aXZlIHtcclxuICAgICAgJi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xyXG4gICAgICAgICY6bGluayxcclxuICAgICAgICAmOnZpc2l0ZWQsXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLm1haW4ge1xyXG4gICZfX2hlYWRlcixcclxuICAmX19mb290ZXIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9faDEge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBwYWRkaW5nLXRvcDogMWVtO1xyXG4gICAgZm9udC1zaXplOiA1ZW07XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgbGluZS1oZWlnaHQ6IDJlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19uYW1lIHtcclxuICAgIGNvbG9yOiAjNTA3YWZlO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICB9XHJcblxyXG4gICZfX3RhZ2xpbmUge1xyXG4gICAgbWFyZ2luOiAxZW0gYXV0bztcclxuICAgIG1heC13aWR0aDogOTYwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zZW07XHJcbiAgICBmb250LXNpemU6IDJlbTtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICBmb250LXdlaWdodDogMTAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2NkbiB7XHJcbiAgICBtYXJnaW46IDJlbSAwO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDE1MCU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2Rvd25sb2FkIHtcclxuICAgIG1hcmdpbjogMWVtIGF1dG87XHJcbiAgICB3aWR0aDogMjAwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIHBhZGRpbmc6IDE0cHggMjlweDtcclxuICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCxcclxuICAgICAgc2Fucy1zZXJpZjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIG1hcmdpbjogMCAzZW07XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi5zZWN0aW9uIHtcclxuICBtYXJnaW46IDFlbSAwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX19jb250ZW50LFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwIDNlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19oMyB7XHJcbiAgICBjb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICBmb250LXNpemU6IDEuMzVlbTtcclxuICB9XHJcblxyXG4gICZfX2g0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4xZW07XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19oNSB7XHJcbiAgICBmb250LXNpemU6IDFlbTtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19kbCxcclxuICAmX19kdCxcclxuICAmX19kZCB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2RsIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgfVxyXG5cclxuICAmX19kdCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG5cclxuICAmX19kZCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19wcmUge1xyXG4gICAgbWFyZ2luOiAyZW0gMDtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxNTAlO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBiZ19jb2xvcjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcblxyXG4gICZfX2NvZGUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXIge1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBtYXJnaW4tdG9wOiAzZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gIH1cclxuXHJcbiAgJl9fdGFibGUge1xyXG4gICAgbWFyZ2luOiAxZW0gYXV0bztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX190aCxcclxuICAmX190ZCB7XHJcbiAgICBwYWRkaW5nOiA1cHggMTZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyNnB4O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX190aCB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAuc2VjdGlvbiB7XHJcbiAgICAmX19oZWFkZXIsXHJcbiAgICAmX19jb250ZW50IHtcclxuICAgICAgcGFkZGluZzogMCAxZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJy4vY29sb3JzJztcclxuXHJcbi5jYXNlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBkaXNwbGF5OiBncmlkO1xyXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcbiAgZ2FwOiA0MHB4O1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX3ByZSxcclxuICAmX190ZXh0YXJlYSB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTUwJTtcclxuICB9XHJcblxyXG4gICZfX3ByZSxcclxuICAmX19jb2RlLFxyXG4gICZfX3RleHRhcmVhIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgfVxyXG5cclxuICAmX19wcmUge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQGJnX2NvbG9yO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9fdG9vbGJhciB7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fYWN0aW9uLFxyXG4gICZfX3JlbW92ZSB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcclxuICB9XHJcblxyXG4gICZfX2FjdGlvbiB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX3JlbW92ZSB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgfVxyXG5cclxuICAmX19jb25zb2xlIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgaGVpZ2h0OiAxODBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fdGV4dGFyZWEge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19saXN0LFxyXG4gICZfX2l0ZW0ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19saXN0IHtcclxuICAgIGhlaWdodDogMzYwcHg7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19pdGVtIHtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaG92ZXJfYmdfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjpyb290IHtcclxuICAtLW91dGxpbmUtekluZGV4OiAyMDAwO1xyXG4gIC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0OiAxMDAlO1xyXG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcclxufVxyXG4iLCIvKiA9PT09PT09PT09IGljb24udGhlbWUgLSBzdmcg5Zu+5qCH55qE5qC35byPID09PT09PT09PT0gKi9cclxuLm91dGxpbmUtaWNvbiB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgd2lkdGg6IDFlbTtcclxuICBoZWlnaHQ6IDFlbTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19zdmcge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgd2lkdGg6IDFlbTtcclxuICAgIGhlaWdodDogMWVtO1xyXG4gICAgZmlsbDogY3VycmVudGNvbG9yO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9oaWRkZW4ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi5vdXRsaW5lLWhlYWRpbmcge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2FuY2hvciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG5cclxuICAgICY6bGluayxcclxuICAgICY6dmlzaXRlZCxcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAcHJpbWFyeV9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9zdGFydCB7XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICBsZWZ0OiAtMWVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICd2YXJpYWJsZXMnO1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdzaGFkb3cnO1xyXG5cclxuLm91dGxpbmUtZHJhd2VyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogLTE7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19tb2RhbCB7XHJcbiAgICAuc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyMTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9faGVhZGVyLFxyXG4gICZfX21haW4sXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB9XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX19mb290ZXIge1xyXG4gICAgZmxleC1zaHJpbms6IDA7XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSxcclxuICAmX19tYWluLFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgfVxyXG5cclxuICAmX19oZWFkZXIsXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgaGVpZ2h0OiA1MnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDUycHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIG1hcmdpbjogMCAxNnB4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19jbG9zZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICByaWdodDogMTJweDtcclxuICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAub3V0bGluZS1pY29uIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAdGhpcmRfdGV4dF9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX21haW4ge1xyXG4gICAgZmxleDogMTtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fb3ZlcmxheSB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICBvcGFjaXR5OiAwLjE7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9ydGwsXHJcbiAgJl9sdHIge1xyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgd2lkdGg6IDI4MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgIHdpZHRoOiA0ODBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgd2lkdGg6IDU0MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgIHdpZHRoOiA2ODBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgIHdpZHRoOiA3MjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgd2lkdGg6IDk2MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3J0bCB7XHJcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTI5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9taW5pIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTQ5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC01NTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC02OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWVkaXVtIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTczMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC05NzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfbHRyIHtcclxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtMjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC00OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC01NTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTY5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC03MzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC05NzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiLFxyXG4gICZfYnR0IHtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICBoZWlnaHQ6IDI0MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgIGhlaWdodDogMzIwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgIGhlaWdodDogMzYwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgaGVpZ2h0OiA0MDBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgIGhlaWdodDogNDQwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgIGhlaWdodDogNDgwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiIHtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtMjUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTMzMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtMzcwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTQxMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTQ1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2J0dCB7XHJcbiAgICB0b3A6IGluaXRpYWw7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTI1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9taW5pIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC0zMzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTM3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC00MTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWVkaXVtIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC00NTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTQ5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9vcGVuZWQge1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG5cclxuICAgICAgJl9ydGwge1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2x0ciB7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl90dGIge1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9idHQge1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9vZmZzZXQge1xyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfcnRsLFxyXG4gICAgICAmX2x0ciB7XHJcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl90dGIsXHJcbiAgICAgICZfYnR0IHtcclxuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNGVtKTtcclxuICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX29wZW5lZCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICAgICAmX3J0bCB7XHJcbiAgICAgICAgICAgIHJpZ2h0OiAyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJl9sdHIge1xyXG4gICAgICAgICAgICBsZWZ0OiAyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJl90dGIge1xyXG4gICAgICAgICAgICB0b3A6IDJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmX2J0dCB7XHJcbiAgICAgICAgICAgIGJvdHRvbTogMmVtO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9hdXRvIHtcclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3J0bCxcclxuICAgICAgJl9sdHIge1xyXG4gICAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2Z1bGwge1xyXG4gICAgcGFkZGluZzogMDtcclxuICB9XHJcbn1cclxuIiwiLyoqXHJcbiAqIG1peGlucy5sZXNzIC0g5bel5YW35Ye95pWwXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xyXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxyXG4gKi9cclxuQGltcG9ydCAnLi9jb2xvcnMnO1xyXG5cclxuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cclxuLmVsbGlwc2lzIChAbGluZXMpIHdoZW4gKEBsaW5lcz0xKSB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uZWxsaXBzaXMgKEBsaW5lcykgd2hlbiAoQGxpbmVzPj0yKSB7XHJcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiBAbGluZXM7XHJcbiAgZGlzcGxheTogYm94O1xyXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLyogPT09PT09IOWchuinkuagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cclxuLnJhZGl1cyhAbnVtOiAycHgpIHtcclxuICBib3JkZXItcmFkaXVzOiBAbnVtO1xyXG59XHJcblxyXG4ucmFkaXVzX25vbmUoKSB7XHJcbiAgLnJhZGl1cygwKTtcclxufVxyXG5cclxuLnJhZGl1c19taW5pKCkge1xyXG4gIC5yYWRpdXMoMnB4KTtcclxufVxyXG5cclxuLnJhZGl1c19zbWFsbCgpIHtcclxuICAucmFkaXVzKDNweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfcmVndWxhcigpIHtcclxuICAucmFkaXVzKDRweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfbWVkaXVtKCkge1xyXG4gIC5yYWRpdXMoNXB4KTtcclxufVxyXG5cclxuLnJhZGl1c19sYXJnZSgpIHtcclxuICAucmFkaXVzKDEwcHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX2h1Z2UoKSB7XHJcbiAgLnJhZGl1cygxNnB4KTtcclxufVxyXG5cclxuLnJhZGl1c19yb3VuZCgpIHtcclxuICAucmFkaXVzKDMwcHgpO1xyXG59XHJcblxyXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xyXG4uc2hhZG93KEBvZmZzZXQ6IDAgMCA2cHggMXB4LCBAY29sb3I6IEBwcmltYXJ5X2JvcmRlcl9jb2xvcikge1xyXG4gIGJveC1zaGFkb3c6IEBvZmZzZXQgQGNvbG9yO1xyXG59XHJcblxyXG4uc2hhZG93X3JlZ3VsYXIoQGNvbG9yOiBAcHJpbWFyeV9ib3JkZXJfY29sb3IpIHtcclxuICAuc2hhZG93KDAgMCA2cHggMXB4LCBAY29sb3IpO1xyXG59XHJcblxyXG4uc2hhZG93X2xhcmdlKEBjb2xvcjogQHByaW1hcnlfYm9yZGVyX2NvbG9yKSB7XHJcbiAgLnNoYWRvdygwIDAgMTJweCAxcHgsIEBjb2xvcik7XHJcbn1cclxuXHJcbi5zaGFkb3dfbGlnaHRfcmVndWxhcigpIHtcclxuICAuc2hhZG93X3JlZ3VsYXIoKTtcclxufVxyXG5cclxuLnNoYWRvd19saWdodF9sYXJnZSgpIHtcclxuICAuc2hhZG93X2xhcmdlKCk7XHJcbn1cclxuXHJcbi5zaGFkb3dfZGFya19yZWd1bGFyKCkge1xyXG4gIC5zaGFkb3dfcmVndWxhcihAc2Vjb25kYXJ5X2JvcmRlcl9jb2xvcik7XHJcbn1cclxuIiwiQGltcG9ydCAndmFyaWFibGVzJztcclxuQGltcG9ydCAnY29sb3JzJztcclxuQGltcG9ydCAnZWxsaXBzaXMnO1xyXG5cclxuLm91dGxpbmUtY2hhcHRlcnMge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIG1hcmdpbjogMDtcclxuICB3aWR0aDogdmFyKC0tb3V0bGluZS1jaGFwdGVycy13aWR0aCk7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcblxyXG4gICYtcGFyZW50IHtcclxuICAgIHRyYW5zaXRpb246IDAuM3MgZWFzZS1pbi1vdXQ7XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBtYXJnaW46IDAgMTZweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fbWFpbiB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2xpc3QsXHJcbiAgJl9fc3ViamVjdCxcclxuICAmX19pdGVtIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2xpc3Qge1xyXG4gICAgcGFkZGluZzogMC41ZW0gMDtcclxuICB9XHJcblxyXG4gICZfX3N1YmplY3Qge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxZW07XHJcbiAgfVxyXG5cclxuICAmX19pdGVtIHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX3BsYWNlaG9sZGVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaG92ZXJfYmdfY29sb3I7XHJcbiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fYW5jaG9yIHtcclxuICAgIC5lbGxpcHNpcygxKTtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcGFkZGluZzogMCAxLjVlbTtcclxuXHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICBjb2xvcjogQHNlY29uZGFyeV90ZXh0X2NvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19jb2RlIHtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDAuNWVtO1xyXG4gIH1cclxuXHJcbiAgJl9oaWdobGlnaHQge1xyXG4gICAgJi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xyXG4gICAgICAmOmxpbmssXHJcbiAgICAgICY6dmlzaXRlZCxcclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N0aWNreSxcclxuICAmX2ZpeGVkIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgIC5vdXRsaW5lLWNoYXB0ZXJzIHtcclxuICAgICAgJl9fdGl0bGUsXHJcbiAgICAgICZfX21haW4ge1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fbWFpbiB7XHJcbiAgICAgICAgZmxleDogMTtcclxuICAgICAgICBvdmVyZmxvdzogYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9zdGlja3kge1xyXG4gICAgcG9zaXRpb246IHN0aWNreTtcclxuICAgIG1heC1oZWlnaHQ6IHZhcigtLW91dGxpbmUtc3RpY2t5LWhlaWdodCk7XHJcbiAgfVxyXG5cclxuICAmX2ZpeGVkIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIG1heC1oZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgJl9mb2xkZWQge1xyXG4gICAgd2lkdGg6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdtaXhpbnMnO1xyXG5cclxuLm91dGxpbmUtcmVhZGVyIHtcclxuICAmX19jbG9zZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgICBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYUhlaSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgJi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICAgJi53cmFwcGVyIHtcclxuICAgICAgICAmLnBvc3Qge1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYtLXJlYWRpbmcge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIHBhZGRpbmc6IDNlbSA0ZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICBzY3JvbGwtdGltZWxpbmUtbmFtZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xyXG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcclxuXHJcbiAgICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgICAmX19wcm9ncmVzcyB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDM7XHJcbiAgICAgICAgaGVpZ2h0OiA0cHg7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICAgICAgc2NhbGU6IDAgMTtcclxuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xyXG4gICAgICAgIGFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xyXG4gICAgICAgIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19jbG9zZSB7XHJcbiAgICAgICAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHotaW5kZXg6IDM7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgcmlnaHQ6IDIycHg7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDAgOHB4IEBzZWNvbmRhcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaDEsXHJcbiAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuM2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMy41ZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xyXG4gIHRvIHtcclxuICAgIHNjYWxlOiAxIDE7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgJi0tcmVhZGluZyB7XHJcbiAgICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xyXG4gICAgfVxyXG5cclxuICAgICZfX2Nsb3NlIHtcclxuICAgICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcclxuICAgICAgb3BhY2l0eTogMC44O1xyXG4gICAgfVxyXG5cclxuICAgICZfX3RpdGxlIHtcclxuICAgICAgZm9udC1zaXplOiAyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgcHJpbnQge1xyXG4gIGh0bWwsXHJcbiAgYm9keSB7XHJcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5vdXRsaW5lLXJlYWRlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICBoMSxcclxuICAgICZfX3RpdGxlIHtcclxuICAgICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAmLm91dGxpbmUtcmVhZGVyIHtcclxuICAgICAgJi0tcmVhZGluZyB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaDEsXHJcbiAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICBtYXJnaW46IDEzLjRwdCAwIDI4cHQgIWltcG9ydGFudDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICAgICAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fY2xvc2UsXHJcbiAgICAgICZfX3Byb2dyZXNzIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcmUge1xyXG4gICAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgQGJvcmRlcl9jb2xvciAhaW1wb3J0YW50O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICBwcmUsXHJcbiAgICBjb2RlIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGFibGUsXHJcbiAgICBpbWcsXHJcbiAgICBzdmcge1xyXG4gICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xyXG4gICAgfVxyXG5cclxuICAgICZfc2libGluZyB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PSBidXR0b25zLnRoZW1lIC0g5oyJ6ZKu5a+86Iiq5qC35byPID09PT09PT09PT0gKi9cclxuQGltcG9ydCAnY29sb3JzJztcclxuQGltcG9ydCAnc2hhZG93JztcclxuXHJcbi5vdXRsaW5lLXRvb2xiYXIge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB6LWluZGV4OiA5OTk5OTtcclxuICBtYXJnaW46IDA7XHJcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19idXR0b24ge1xyXG4gICAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgbWFyZ2luOiAxMHB4O1xyXG4gICAgd2lkdGg6IDM2cHg7XHJcbiAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgYm9yZGVyLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICAmLmhpZGUge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fYW5jaG9yIHtcclxuICAgICY6bGluayxcclxuICAgICY6dmlzaXRlZCxcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2ljb24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIGZpbGw6IGN1cnJlbnRjb2xvcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2FjdGl2ZSB7XHJcbiAgICAmLm91dGxpbmUtdG9vbGJhciB7XHJcbiAgICAgICZfX2J1dHRvbiB7XHJcbiAgICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgICBib3JkZXItY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGNvbG9yOiBAd2hpdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yIHtcclxuICAgICAgJjpsaW5rLFxyXG4gICAgICAmOnZpc2l0ZWQsXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGNvbG9yOiBAd2hpdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcm91bmRlZCB7XHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZGlzYWJsZWQge1xyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXIsXHJcbiAgICAub3V0bGluZS10b29sYmFyIHtcclxuICAgICAgJl9fYW5jaG9yOmxpbmssXHJcbiAgICAgICZfX2FuY2hvcjp2aXNpdGVkLFxyXG4gICAgICAmX19hbmNob3I6aG92ZXIsXHJcbiAgICAgICZfX2J1dHRvbiB7XHJcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfX2J1dHRvbiB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGRpc2FibGVkX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3R0YixcclxuICAmX2J0dCB7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcblxyXG4gICAgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIge1xyXG4gICAgdG9wOiAxMnB4O1xyXG5cclxuICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgIHRvcDogLTU2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2J0dCB7XHJcbiAgICBib3R0b206IDEycHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgYm90dG9tOiAtNTZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcnRsLFxyXG4gICZfbHRyIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgIHdpZHRoOiA1NnB4O1xyXG4gIH1cclxuXHJcbiAgJl9ydGwge1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICByaWdodDogMTJweDtcclxuXHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICByaWdodDogLTg2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2x0ciB7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIGxlZnQ6IDEycHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgbGVmdDogLTg2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3R0YixcclxuICAmX3J0bCxcclxuICAmX2J0dCxcclxuICAmX2x0ciB7XHJcbiAgICAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xyXG4gICAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCAnLi9jb2xvcnMnO1xyXG5AaW1wb3J0ICcuL2ZvbnQnO1xyXG5AaW1wb3J0ICcuL21peGlucyc7XHJcbkBpbXBvcnQgJy4vaWNvbnMnO1xyXG5cclxuLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgLnJhZGl1c19zbWFsbCgpO1xyXG4gIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB6LWluZGV4OiA5OTk5O1xyXG4gIG9wYWNpdHk6IDAuMTtcclxuICB0b3A6IC01MHB4O1xyXG4gIGxlZnQ6IDUwJTtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDAgNTBweDtcclxuICBsaW5lLWhlaWdodDogNDBweDtcclxuICBmb250LXNpemU6IEBmb250X3NpemVfc21hbGw7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gIGNvbG9yOiBAdGhpcmRfdGV4dF9jb2xvcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fY29udGVudCB7XHJcbiAgICAuZWxsaXBzaXMoMSk7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBtYXgtd2lkdGg6IDcwMHB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fY2xvc2UsXHJcbiAgJl9faWNvbiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgd2lkdGg6IDQwcHg7XHJcbiAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19pY29uIHtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBjb2xvcjogQHdoaXRlO1xyXG5cclxuICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fY2xvc2Uge1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG5cclxuICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2luZm8ge1xyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl93YXJuaW5nIHtcclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2FybmluZ19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfc3VjY2VzcyB7XHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2Vycm9yIHtcclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZGFuZ2VyX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9wbGFpbiB7XHJcbiAgICBtaW4td2lkdGg6IDE5MHB4O1xyXG4gICAgcGFkZGluZzogMCA1MHB4IDAgMTVweDtcclxuXHJcbiAgICAmLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgICAgICZfaW5mbyB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAcHJpbWFyeV9jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaW5mb190aXBfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfd2FybmluZyB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAd2FybmluZ19jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2FybmluZ190aXBfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc3VjY2VzcyB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAc3VjY2Vzc190aXBfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfZXJyb3Ige1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQGRhbmdlcl9jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZGFuZ2VyX3RpcF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICB3aWR0aDogMDtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfbGlnaHQge1xyXG4gICAgbWluLXdpZHRoOiAxODBweDtcclxuICAgIHBhZGRpbmc6IDAgNDBweDtcclxuXHJcbiAgICAmLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgICAgICZfaW5mbyB7XHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICBjb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3dhcm5pbmcge1xyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgY29sb3I6IEB3YXJuaW5nX2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zdWNjZXNzIHtcclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfZXJyb3Ige1xyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgY29sb3I6IEBkYW5nZXJfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcm91bmQge1xyXG4gICAgLnJhZGl1cygyMHB4KTtcclxuXHJcbiAgICAmLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgICAgICZfZGVmYXVsdCB7XHJcbiAgICAgICAgbWluLXdpZHRoOiAxODBweDtcclxuICAgICAgICBwYWRkaW5nOiAwIDQwcHg7XHJcblxyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgLnJhZGl1cygxMHB4KTtcclxuICAgICAgICAgIHRvcDogMTBweDtcclxuICAgICAgICAgIGxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IDIwMHB4O1xyXG4gICAgICAgICAgcGFkZGluZzogMCAyMHB4IDAgNDBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcGxhaW4ge1xyXG4gICAgICAgIG1pbi13aWR0aDogMTk1cHg7XHJcbiAgICAgICAgcGFkZGluZzogMCA0MHB4IDAgMjBweDtcclxuXHJcbiAgICAgICAgJi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IDIxNXB4O1xyXG4gICAgICAgICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9mdWxsLXdpZHRoIHtcclxuICAgIG1pbi13aWR0aDogMjAwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDEwcHggMCA1MHB4O1xyXG5cclxuICAgICYub3V0bGluZS1tZXNzYWdlIHtcclxuICAgICAgJl9wbGFpbiB7XHJcbiAgICAgICAgbWluLXdpZHRoOiAyMzBweDtcclxuICAgICAgICBwYWRkaW5nOiAwIDEwcHggMCAxNXB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xpZ2h0IHtcclxuICAgICAgICBtaW4td2lkdGg6IDIxMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweCAwIDQwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdmlzaWJsZSB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gIH1cclxuXHJcbiAgJl9oaWRkZW4ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIHdpZHRoOiA3cHg7XHJcbiAgaGVpZ2h0OiA3cHg7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcblxyXG4gICYtdHJhY2stcGllY2Uge1xyXG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgfVxyXG5cclxuICAmLXRodW1iIHtcclxuICAgICY6dmVydGljYWwge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvcml6b250YWwge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICB9XHJcbn1cclxuIl19 */ +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLzxpbnB1dCBjc3MgMT4iLCJub3JtYWxpemUubGVzcyIsImJhc2UubGVzcyIsInNjcm9sbGJhci5sZXNzIiwibGF5b3V0Lmxlc3MiLCJhc2lkZS5sZXNzIiwibWFpbi5sZXNzIiwic2VjdGlvbi5sZXNzIiwiY2FzZS5sZXNzIiwiLi4vLi4vdGhlbWUvdmFyaWFibGVzLmxlc3MiLCIuLi8uLi90aGVtZS9pY29ucy5sZXNzIiwiLi4vLi4vdGhlbWUvYW5jaG9ycy5sZXNzIiwiLi4vLi4vdGhlbWUvZHJhd2VyLmxlc3MiLCIuLi8uLi90aGVtZS9taXhpbnMubGVzcyIsIi4uLy4uL3RoZW1lL2NoYXB0ZXJzLmxlc3MiLCIuLi8uLi90aGVtZS9yZWFkZXIubGVzcyIsIi4uLy4uL3RoZW1lL3Rvb2xiYXIubGVzcyIsIi4uLy4uL3RoZW1lL21lc3NhZ2UubGVzcyIsIi4uLy4uL3RoZW1lL3Njcm9sbGJhci5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RTtnRkFDZ0Y7QUFDaEY7OztHQUdHO0FDSUg7RUFDRSxrQkFBQTtFREZBLE9BQU87RUNHUCwrQkFBQTtFRERBLE9BQU87Q0FDUjtBQUNEO2dGQUNnRjtBQUNoRjs7R0FFRztBQ0tIO0VBQ0UsVUFBQTtDREhEO0FBQ0Q7O0dBRUc7QUNPSDtFQUNFLGVBQUE7Q0RMRDtBQUNEOzs7R0FHRztBQ1NIO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0NEUEQ7QUFDRDtnRkFDZ0Y7QUFDaEY7OztHQUdHO0FDWUg7RUFDRSxnQ0FBQTtVQUFBLHdCQUFBO0VEVkEsT0FBTztFQ1dQLFVBQUE7RURUQSxPQUFPO0VDVVAsa0JBQUE7RURSQSxPQUFPO0NBQ1I7QUFDRDs7O0dBR0c7QUNXSDtFQUNFLGtDQUFBO0VEVEEsT0FBTztFQ1VQLGVBQUE7RURSQSxPQUFPO0NBQ1I7QUFDRDtnRkFDZ0Y7QUFDaEY7O0dBRUc7QUNZSDtFQUNFLDhCQUFBO0NEVkQ7QUFDRDs7O0dBR0c7QUNjSDtFQUNFLG9C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RUFFSSxlQUFBO0NqQjQ3Q1Q7QWlCcjlDQztFQStCSSx1QkFBQTtDakJ5N0NMO0FpQnI3Q0M7RUp0SjJCLG9CQUFBO0NiOGtENUI7QWlCcDdDSztFQUNFLGlCQUFBO0VBQ0EsZ0JBQUE7Q2pCczdDUDtBaUJ4N0NLO0VKMUp1QixvQkFBQTtFSWdLbkIsVUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0NqQnM3Q1Q7QWlCbjdDTztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2pCcTdDVDtBaUJqN0NLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDakJtN0NQO0FpQmo3Q087RUFDRSxpQkFBQTtFQUNBLGdCQUFBO0NqQm03Q1Q7QWlCNzZDQztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2pCKzZDSDtBaUI1NkNLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDakI4NkNQO0FpQjM2Q0s7RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0NqQjY2Q1A7QWlCeDZDQztFQUNFLFdBQUE7Q2pCMDZDSDtBaUJ2NkNDO0VBQ0UsY0FBQTtDakJ5NkNIO0FBQ0QsMkJBQTJCO0FrQi9vRDNCO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSwyQkFBQTtDbEJpcEREO0FrQi9vREM7RUFDRSwyQkFBQTtDbEJpcERIO0FrQjdvREc7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NsQitvREw7QWtCNW9ERztFQUNFLHNDQUFBO0VBQ0EsMkJBQUE7Q2xCOG9ETDtBa0Izb0RHO0VBQ0Usc0NBQUE7Q2xCNm9ETDtBa0J6b0RDO0VBQ0Usc0NBQUE7Q2xCMm9ESCIsImZpbGUiOiJkb2NzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHY4LjAuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cbi8qIERvY3VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbiAqL1xuaHRtbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqL1xufVxuLyogU2VjdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cbi8qKlxuICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXG4gKi9cbm1haW4ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi8qKlxuICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAqL1xuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLyogMSAqL1xuICBoZWlnaHQ6IDA7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIC8qIDIgKi9cbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xucHJlIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtO1xuICAvKiAyICovXG59XG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAvKiAyICovXG59XG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxMDAlO1xuICAvKiAxICovXG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAvKiAxICovXG4gIG1hcmdpbjogMDtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cbmJ1dHRvbixcbmlucHV0IHtcbiAgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG4vKipcbiAqIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcblt0eXBlPSdidXR0b24nXSxcblt0eXBlPSdyZXNldCddLFxuW3R5cGU9J3N1Ym1pdCddIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdidXR0b24nXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdyZXNldCddOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9J3N1Ym1pdCddOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPSdidXR0b24nXTotbW96LWZvY3VzcmluZyxcblt0eXBlPSdyZXNldCddOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9J3N1Ym1pdCddOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuLyoqXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cbmZpZWxkc2V0IHtcbiAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xufVxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7XG4gIC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgLyogMSAqL1xufVxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG4gKi9cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxuICovXG5bdHlwZT0nY2hlY2tib3gnXSxcblt0eXBlPSdyYWRpbyddIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovXG59XG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuW3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5bdHlwZT0nc2VhcmNoJ10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7XG4gIC8qIDIgKi9cbn1cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG4gKi9cbmRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG4vKiBNaXNjXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG4gKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qID09PT09IEJhc2UgPT09PT0gKi9cbmh0bWwsXG5ib2R5IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiAjZmFmYWZhO1xuICBjb2xvcjogIzMzMztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbmE6bGluayxcbmE6dmlzaXRlZCxcbmE6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuY29kZSB7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cbi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA3cHg7XG4gIGhlaWdodDogN3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbi8qIExheW91dCAqL1xuLmRvY3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4vKiBBc2lkZSAqL1xuLmFzaWRlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICB3aWR0aDogMjYwcHg7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xuICBjb2xvcjogI2RkZDtcbiAgYm94LXNoYWRvdzogMCAwIDVweCAycHggI2RkZDtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4vKiBNYWluICovXG4ubWFpbiB7XG4gIGZsZXg6IDE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5hc2lkZSB7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cbi5hc2lkZV9faGVhZGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlX19uYXYge1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5hc2lkZV9faDIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiA1NHB4O1xuICBsaW5lLWhlaWdodDogNTRweDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LWZhbWlseTogR2VvcmdpYSwgQ29uc29sYXMsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXNpZGVfX2gzIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgMjBweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlX19saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxMHB4IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXNpZGVfX2l0ZW0ge1xuICBoZWlnaHQ6IDMycHg7XG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICBwYWRkaW5nOiAwIDMwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgZmxleDogMTtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19fbWFpbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2O1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5OTk7XG59XG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfX3BsYWNlaG9sZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTtcbiAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjZmZmO1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6bGluayB7XG4gIGNvbG9yOiAjZGRkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkIHtcbiAgY29sb3I6ICNkZGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICNkZGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX2FjdGl2ZS5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6bGluayxcbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19hY3RpdmUub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfYWN0aXZlLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm1haW5fX2hlYWRlcixcbi5tYWluX19mb290ZXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWFpbl9faDEge1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZy10b3A6IDFlbTtcbiAgZm9udC1zaXplOiA1ZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWFpbl9fbmFtZSB7XG4gIGNvbG9yOiAjNTA3YWZlO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuLm1haW5fX3RhZ2xpbmUge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICBtYXgtd2lkdGg6IDk2MHB4O1xuICBsaW5lLWhlaWdodDogMS4zZW07XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBjb2xvcjogIzk5OTtcbiAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tYWluX19jZG4ge1xuICBtYXJnaW46IDJlbSAwO1xuICBwYWRkaW5nOiAyZW07XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBjb2xvcjogIzY2NjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tYWluX19kb3dubG9hZCB7XG4gIG1hcmdpbjogMWVtIGF1dG87XG4gIHdpZHRoOiAyMDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1haW5fX2J1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBwYWRkaW5nOiAxNHB4IDI5cHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC1mYW1pbHk6ICdTb3VyY2UgQ29kZSBQcm8nLCBDb25zb2xhcywgR2VvcmdpYSwgTW9uYWNvLCBtb25vc3BhY2UsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1haW5fX2J1dHRvbjpsaW5rLFxuLm1haW5fX2J1dHRvbjp2aXNpdGVkLFxuLm1haW5fX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubWFpbl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIDNlbTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG59XG4uc2VjdGlvbiB7XG4gIG1hcmdpbjogMWVtIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9faGVhZGVyLFxuLnNlY3Rpb25fX2NvbnRlbnQsXG4uc2VjdGlvbl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDNlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zZWN0aW9uX190aXRsZSB7XG4gIGNvbG9yOiAjNjY2O1xufVxuLnNlY3Rpb25fX2gzIHtcbiAgY29sb3I6ICM1MDdhZmU7XG4gIGZvbnQtc2l6ZTogMS4zNWVtO1xufVxuLnNlY3Rpb25fX2g0IHtcbiAgZm9udC1zaXplOiAxLjFlbTtcbiAgY29sb3I6ICM2NjY7XG59XG4uc2VjdGlvbl9faDUge1xuICBmb250LXNpemU6IDFlbTtcbiAgY29sb3I6ICM5OTk7XG59XG4uc2VjdGlvbl9fZGwsXG4uc2VjdGlvbl9fZHQsXG4uc2VjdGlvbl9fZGQge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fZGwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG4uc2VjdGlvbl9fZHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uc2VjdGlvbl9fZGQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLnNlY3Rpb25fX3ByZSB7XG4gIG1hcmdpbjogMmVtIDA7XG4gIHBhZGRpbmc6IDFlbTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjb2xvcjogIzY2NjtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uc2VjdGlvbl9fY29kZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDAgYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zZWN0aW9uX19mb290ZXIge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgbWFyZ2luLXRvcDogM2VtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBjb2xvcjogIzk5OTtcbn1cbi5zZWN0aW9uX190YWJsZSB7XG4gIG1hcmdpbjogMWVtIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5zZWN0aW9uX190aCxcbi5zZWN0aW9uX190ZCB7XG4gIHBhZGRpbmc6IDVweCAxNnB4O1xuICBsaW5lLWhlaWdodDogMjZweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG59XG4uc2VjdGlvbl9fdGgge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG59XG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLnNlY3Rpb25fX2hlYWRlcixcbiAgLnNlY3Rpb25fX2NvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAgMWVtO1xuICB9XG59XG4uY2FzZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgZ2FwOiA0MHB4O1xuICBwYWRkaW5nOiAxZW07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICBsZWZ0OiA1MCU7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX19wcmUsXG4uY2FzZV9fdGV4dGFyZWEge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxNTAlO1xufVxuLmNhc2VfX3ByZSxcbi5jYXNlX19jb2RlLFxuLmNhc2VfX3RleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIENvbnNvbGFzLCBHZW9yZ2lhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cbi5jYXNlX19wcmUge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLmNhc2VfX3Rvb2xiYXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiAzNnB4O1xuICBsaW5lLWhlaWdodDogMzZweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNhc2VfX2FjdGlvbixcbi5jYXNlX19yZW1vdmUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5jYXNlX19hY3Rpb24ge1xuICBmb250LXNpemU6IDEzcHg7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbn1cbi5jYXNlX19hY3Rpb246Zmlyc3QtY2hpbGQge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG4uY2FzZV9fcmVtb3ZlIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuLmNhc2VfX2NvbnNvbGUge1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiAxODBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX190ZXh0YXJlYSB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6IDFlbTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uY2FzZV9fbGlzdCxcbi5jYXNlX19pdGVtIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fbGlzdCB7XG4gIGhlaWdodDogMzYwcHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jYXNlX19pdGVtIHtcbiAgaGVpZ2h0OiAzNnB4O1xuICBsaW5lLWhlaWdodDogMzZweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4uY2FzZV9faXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y4Zjk7XG59XG46cm9vdCB7XG4gIC0tb3V0bGluZS16SW5kZXg6IDIwMDA7XG4gIC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0OiAxMDAlO1xuICAtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGg6IDEwMCU7XG59XG4vKiA9PT09PT09PT09IGNvbG9ycy50aGVtZSAtIOWfuuehgOminOiJsuWPmOmHj+mbhuWQiCA9PT09PT09PT09ICovXG4vKipcbiAqIGVsbGlwc2lzLmxlc3MgLSDmlofmnKznnIHnlaUgbWl4aW54IOWHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTFcbiAqL1xuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cbi8qKlxuICogc2hhZG93Lmxlc3MgLSDpmLTlvbHmoLflvI/orr7nva4gbWl4aW54IOWHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMjBcbiAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi8qID09PT09PT09PT0gaWNvbi50aGVtZSAtIHN2ZyDlm77moIfnmoTmoLflvI8gPT09PT09PT09PSAqL1xuLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWljb25fX3N2ZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIGZpbGw6IGN1cnJlbnRjb2xvcjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1pY29uX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzk5OTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1oZWFkaW5nOmhvdmVyIC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5vdXRsaW5lLWhlYWRpbmdfc3RhcnQ6aG92ZXIge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfc3RhcnQgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBsZWZ0OiAtMWVtO1xufVxuLm91dGxpbmUtZHJhd2VyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAtMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fbW9kYWwge1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyMTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX21haW4sXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSxcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgcGFkZGluZzogMCAxNnB4O1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiA1MnB4O1xuICBsaW5lLWhlaWdodDogNTJweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbjogMCAxNnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjOTk5O1xuICBmb250LXNpemU6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fbWFpbiB7XG4gIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX292ZXJsYXkge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIG9wYWNpdHk6IDAuMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfdGlueSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfdGlueSB7XG4gIHdpZHRoOiAyODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWluaSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWluaSB7XG4gIHdpZHRoOiA0ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfc21hbGwsXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3NtYWxsIHtcbiAgd2lkdGg6IDU0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyIHtcbiAgd2lkdGg6IDY4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0sXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21lZGl1bSB7XG4gIHdpZHRoOiA3MjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbGFyZ2UsXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX2xhcmdlIHtcbiAgd2lkdGg6IDk2MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bCB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTI5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3NtYWxsLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNTUwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC02OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNzMwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX2xhcmdlLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtOTcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtMjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21pbmkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNTUwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTY5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTczMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtOTcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLFxuLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl90aW55LFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl90aW55IHtcbiAgaGVpZ2h0OiAyNDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWluaSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWluaSB7XG4gIGhlaWdodDogMzIwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3NtYWxsLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9zbWFsbCB7XG4gIGhlaWdodDogMzYwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIge1xuICBoZWlnaHQ6IDQwMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9tZWRpdW0sXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21lZGl1bSB7XG4gIGhlaWdodDogNDQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX2xhcmdlLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9sYXJnZSB7XG4gIGhlaWdodDogNDgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtMjUwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21pbmkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtMzMwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3NtYWxsLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTM3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTQxMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDUwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX2xhcmdlLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIHRvcDogaW5pdGlhbDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtMjUwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21pbmkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtMzMwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3NtYWxsLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTM3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTQxMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDUwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX2xhcmdlLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3J0bCB7XG4gIHJpZ2h0OiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBsZWZ0OiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl90dGIge1xuICB0b3A6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIGJvdHRvbTogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfcnRsLFxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDRlbSk7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX3R0Yixcbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDRlbSk7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgcmlnaHQ6IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGxlZnQ6IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIHRvcDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgYm90dG9tOiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfYXV0by5vdXRsaW5lLWRyYXdlcl9ydGwsXG4ub3V0bGluZS1kcmF3ZXJfYXV0by5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBoZWlnaHQ6IGF1dG87XG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDRlbSk7XG59XG4ub3V0bGluZS1kcmF3ZXJfZnVsbCB7XG4gIHBhZGRpbmc6IDA7XG59XG4ub3V0bGluZS1jaGFwdGVycyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogdmFyKC0tb3V0bGluZS1jaGFwdGVycy13aWR0aCk7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm91dGxpbmUtY2hhcHRlcnMtcGFyZW50IHtcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIG1hcmdpbjogMCAxNnB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2xpc3QsXG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0IHtcbiAgcGFkZGluZzogMC41ZW0gMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19zdWJqZWN0IHtcbiAgcGFkZGluZy1sZWZ0OiAxZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIG1hcmdpbjogMDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19wbGFjZWhvbGRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmOGY5O1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMwNTg5NDI7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwIDEuNWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICM1NTU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fY29kZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcbiAgdG9wOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUge1xuICBmbGV4LXNocmluazogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICBtYXgtaGVpZ2h0OiB2YXIoLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQpO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfZm9sZGVkIHtcbiAgd2lkdGg6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4vKipcbiAqIG1peGlucy5sZXNzIC0g5bel5YW35Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOWchuinkuagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi8qID09PT09PSDpmLTlvbHmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXG4ub3V0bGluZS1yZWFkZXJfX2Nsb3NlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYUhlaSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5vdXRsaW5lLXJlYWRlcl9oaWRkZW4ub3V0bGluZS1yZWFkZXJfc2libGluZyB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5vdXRsaW5lLXJlYWRlcl9oaWRkZW4ub3V0bGluZS1yZWFkZXJfc2libGluZy53cmFwcGVyLnBvc3Qge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDNlbSA0ZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHNjcm9sbC10aW1lbGluZS1uYW1lOiAtLVByb2dyZXNzVGltZWxpbmU7XG4gIG92ZXJmbG93OiBzY3JvbGw7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX19wcm9ncmVzcyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAzO1xuICBoZWlnaHQ6IDRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MDdhZmU7XG4gIHNjYWxlOiAwIDE7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG4gIGFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xuICBhbmltYXRpb24tdGltZWxpbmU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX2Nsb3NlIHtcbiAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMztcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAyMnB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3gtc2hhZG93OiAwIDAgOHB4ICNkZGQ7XG4gIGNvbG9yOiAjOTk5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXIgaDEsXG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBmb250LXNpemU6IDMuNWVtO1xufVxuQGtleWZyYW1lcyBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyB7XG4gIHRvIHtcbiAgICBzY2FsZTogMSAxO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIHtcbiAgICBwYWRkaW5nOiAwIDEuMjVlbTtcbiAgfVxuICAub3V0bGluZS1yZWFkZXJfX2Nsb3NlIHtcbiAgICByaWdodDogMTJweCAhaW1wb3J0YW50O1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxuICAub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDJlbTtcbiAgfVxufVxuQG1lZGlhIHByaW50IHtcbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtbWVzc2FnZSxcbiAgLm91dGxpbmUtdG9vbGJhciB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBoMSxcbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlciBoMSxcbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX19jbG9zZSxcbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX19wcm9ncmVzcyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBwcmUge1xuICAgIHBhZGRpbmc6IDFlbSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlLFxuICAub3V0bGluZS1yZWFkZXIgY29kZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciB0YWJsZSxcbiAgLm91dGxpbmUtcmVhZGVyIGltZyxcbiAgLm91dGxpbmUtcmVhZGVyIHN2ZyB7XG4gICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXJfc2libGluZyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4vKiA9PT09PT09PT09IGJ1dHRvbnMudGhlbWUgLSDmjInpkq7lr7zoiKrmoLflvI8gPT09PT09PT09PSAqL1xuLm91dGxpbmUtdG9vbGJhciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTk7XG4gIG1hcmdpbjogMDtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAxMHB4O1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzk5OTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICBib3JkZXItY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24uaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9faWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGZpbGw6IGN1cnJlbnRjb2xvcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG4gIGJvcmRlci1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX3JvdW5kZWQub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZDpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXI6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLFxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIHtcbiAgdG9wOiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIHRvcDogLTU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dCB7XG4gIGJvdHRvbTogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYnR0Lm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBib3R0b206IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwsXG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bCB7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICByaWdodDogLTg2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGxlZnQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX3J0bCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyoqXG4gKiBmb250Lmxlc3MgLSDlrZfkvZPnm7jlhbPmoLflvI9cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjE2XG4gKi9cbi8qID09PT09PSDlrZfkvZMgPT09PT09ICovXG4vKiA9PT09PT0g5a2X6YeNID09PT09PSAqL1xuLyogPT09PT09IOWtl+WPtyA9PT09PT0gKi9cbi5vdXRsaW5lLW1lc3NhZ2Uge1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTtcbiAgb3BhY2l0eTogMC4xO1xuICB0b3A6IC01MHB4O1xuICBsZWZ0OiA1MCU7XG4gIGhlaWdodDogNDBweDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDUwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjNjY2O1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY29udGVudCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtYXJnaW46IDA7XG4gIG1heC13aWR0aDogNzAwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSxcbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBsZWZ0OiAwO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSB7XG4gIHJpZ2h0OiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UgLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZTpob3ZlciB7XG4gIGNvbG9yOiAjNjY2O1xufVxuLm91dGxpbmUtbWVzc2FnZV9pbmZvIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5OTAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtbWVzc2FnZV9lcnJvciAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWQ1ZDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDE5MHB4O1xuICBwYWRkaW5nOiAwIDUwcHggMCAxNXB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfaW5mbyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzUwN2FmZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjhmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZjk5MDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZiZTY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMDU4OTQyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFmNmViO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfZXJyb3Ige1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZjVkNWQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxZjA7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICB3aWR0aDogMDtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4gLm91dGxpbmUtbWVzc2FnZV9faWNvbiAub3V0bGluZS1pY29uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQge1xuICBtaW4td2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nOiAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9pbmZvIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjZmY5OTAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9lcnJvciAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICNmZjVkNWQ7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0IC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZCB7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0IHtcbiAgbWluLXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdCAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgdG9wOiAxMHB4O1xuICBsZWZ0OiAxMHB4O1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAwIDIwcHggMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDE5NXB4O1xuICBwYWRkaW5nOiAwIDQwcHggMCAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIxNXB4O1xuICBwYWRkaW5nOiAwIDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCA1MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMjMwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDE1cHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgub3V0bGluZS1tZXNzYWdlX2xpZ2h0IHtcbiAgbWluLXdpZHRoOiAyMTBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfdmlzaWJsZSB7XG4gIG9wYWNpdHk6IDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiA9PT09PSBTY3JvbGxiYXIgPT09PT0gKi9cbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogN3B4O1xuICBoZWlnaHQ6IDdweDtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIHtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xufVxuOjotd2Via2l0LXNjcm9sbGJhcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXHJcblxyXG4vKiBEb2N1bWVudFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cclxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXHJcbiAqL1xyXG5cclxuaHRtbCB7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cclxuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cclxufVxyXG5cclxuLyogU2VjdGlvbnNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuYm9keSB7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4vKipcclxuICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXHJcbiAqL1xyXG5cclxubWFpbiB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXHJcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuaDEge1xyXG4gIGZvbnQtc2l6ZTogMmVtO1xyXG4gIG1hcmdpbjogMC42N2VtIDA7XHJcbn1cclxuXHJcbi8qIEdyb3VwaW5nIGNvbnRlbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxyXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cclxuICovXHJcblxyXG5ociB7XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cclxuICBoZWlnaHQ6IDA7IC8qIDEgKi9cclxuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbnByZSB7XHJcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cclxufVxyXG5cclxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXHJcbiAqL1xyXG5cclxuYSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxyXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmFiYnJbdGl0bGVdIHtcclxuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuYixcclxuc3Ryb25nIHtcclxuICBmb250LXdlaWdodDogYm9sZGVyO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbmNvZGUsXHJcbmtiZCxcclxuc2FtcCB7XHJcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbnNtYWxsIHtcclxuICBmb250LXNpemU6IDgwJTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxyXG4gKiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuc3ViLFxyXG5zdXAge1xyXG4gIGZvbnQtc2l6ZTogNzUlO1xyXG4gIGxpbmUtaGVpZ2h0OiAwO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuXHJcbnN1YiB7XHJcbiAgYm90dG9tOiAtMC4yNWVtO1xyXG59XHJcblxyXG5zdXAge1xyXG4gIHRvcDogLTAuNWVtO1xyXG59XHJcblxyXG4vKiBFbWJlZGRlZCBjb250ZW50XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cclxuICovXHJcblxyXG5pbWcge1xyXG4gIGJvcmRlci1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuLyogRm9ybXNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuaW5wdXQsXHJcbm9wdGdyb3VwLFxyXG5zZWxlY3QsXHJcbnRleHRhcmVhIHtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xyXG4gIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXHJcbiAgbWFyZ2luOiAwOyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cclxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cclxuICovXHJcblxyXG5idXR0b24sXHJcbmlucHV0IHtcclxuICAvKiAxICovXHJcbiAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cclxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuc2VsZWN0IHtcclxuICAvKiAxICovXHJcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuW3R5cGU9J2J1dHRvbiddLFxyXG5bdHlwZT0ncmVzZXQnXSxcclxuW3R5cGU9J3N1Ym1pdCddIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXHJcbiAqL1xyXG5cclxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxyXG5bdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXHJcblt0eXBlPSdyZXNldCddOjotbW96LWZvY3VzLWlubmVyLFxyXG5bdHlwZT0nc3VibWl0J106Oi1tb3otZm9jdXMtaW5uZXIge1xyXG4gIGJvcmRlci1zdHlsZTogbm9uZTtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxyXG4gKi9cclxuXHJcbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcclxuW3R5cGU9J2J1dHRvbiddOi1tb3otZm9jdXNyaW5nLFxyXG5bdHlwZT0ncmVzZXQnXTotbW96LWZvY3VzcmluZyxcclxuW3R5cGU9J3N1Ym1pdCddOi1tb3otZm9jdXNyaW5nIHtcclxuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXHJcbiAqL1xyXG5cclxuZmllbGRzZXQge1xyXG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXHJcbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cclxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxyXG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cclxuICovXHJcblxyXG5sZWdlbmQge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cclxuICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xyXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXHJcbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXHJcbiAgcGFkZGluZzogMDsgLyogMyAqL1xyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXHJcbiAqL1xyXG5cclxucHJvZ3Jlc3Mge1xyXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxyXG4gKi9cclxuXHJcbnRleHRhcmVhIHtcclxuICBvdmVyZmxvdzogYXV0bztcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxyXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXHJcbiAqL1xyXG5cclxuW3R5cGU9J2NoZWNrYm94J10sXHJcblt0eXBlPSdyYWRpbyddIHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXHJcbiAgcGFkZGluZzogMDsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxyXG4gKi9cclxuXHJcblt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcclxuW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcclxuICBoZWlnaHQ6IGF1dG87XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cclxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXHJcbiAqL1xyXG5cclxuW3R5cGU9J3NlYXJjaCddIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xyXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXHJcbiAqL1xyXG5cclxuW3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxyXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXHJcbiAqL1xyXG5cclxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cclxuICBmb250OiBpbmhlcml0OyAvKiAyICovXHJcbn1cclxuXHJcbi8qIEludGVyYWN0aXZlXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxyXG4gKi9cclxuXHJcbmRldGFpbHMge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuc3VtbWFyeSB7XHJcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xyXG59XHJcblxyXG4vKiBNaXNjXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxyXG4gKi9cclxuXHJcbnRlbXBsYXRlIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXHJcbiAqL1xyXG5cclxuW2hpZGRlbl0ge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi8qID09PT09IEJhc2UgPT09PT0gKi9cclxuaHRtbCxcclxuYm9keSB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJhY2tncm91bmQ6IEBiZ19jb2xvcjtcclxuICBjb2xvcjogQHByaW1hcnlfdGV4dF9jb2xvcjtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XHJcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG5hIHtcclxuICAmOmxpbmssXHJcbiAgJjp2aXNpdGVkLFxyXG4gICY6aG92ZXIge1xyXG4gICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcbn1cclxuXHJcbmNvZGUge1xyXG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCxcclxuICAgIHNhbnMtc2VyaWY7XHJcbn1cclxuIiwiLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIHdpZHRoOiA3cHg7XHJcbiAgaGVpZ2h0OiA3cHg7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi8qIExheW91dCAqL1xyXG4uZG9jcyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXJnaW46IDA7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLyogQXNpZGUgKi9cclxuLmFzaWRlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgd2lkdGg6IDI2MHB4O1xyXG4gIG1hcmdpbjogMDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnlfdGV4dF9jb2xvcjtcclxuICBjb2xvcjogQGJvcmRlcl9jb2xvcjtcclxuICBib3gtc2hhZG93OiAwIDAgNXB4IDJweCBAYm9yZGVyX2NvbG9yO1xyXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcbn1cclxuXHJcbi8qIE1haW4gKi9cclxuLm1haW4ge1xyXG4gIGZsZXg6IDE7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICBvdmVyZmxvdzogYXV0bztcclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLmFzaWRlIHtcclxuICBmb250LWZhbWlseTogJ1NvdXJjZSBDb2RlIFBybycsIENvbnNvbGFzLCBHZW9yZ2lhLCBNb25hY28sIG1vbm9zcGFjZSwgQXJpYWwsXHJcbiAgICBzYW5zLXNlcmlmO1xyXG5cclxuICAmX19oZWFkZXIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBmbGV4LXNocmluazogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19uYXYge1xyXG4gICAgZmxleDogMTtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9faDIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDU0cHg7XHJcbiAgICBsaW5lLWhlaWdodDogNTRweDtcclxuICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LWZhbWlseTogR2VvcmdpYSwgQ29uc29sYXMsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2gzIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2xpc3Qge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMTBweCAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2l0ZW0ge1xyXG4gICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDMycHg7XHJcbiAgICBwYWRkaW5nOiAwIDMwcHg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgLm91dGxpbmUtY2hhcHRlcnMge1xyXG4gICAgZmxleDogMTtcclxuXHJcbiAgICAmX19tYWluIHtcclxuICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmX19wbGFjZWhvbGRlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzZWNvbmRhcnlfdGV4dF9jb2xvcjtcclxuICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCBAd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fYW5jaG9yIHtcclxuICAgICAgJjpsaW5rIHtcclxuICAgICAgICBjb2xvcjogQGJvcmRlcl9jb2xvcjtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6dmlzaXRlZCB7XHJcbiAgICAgICAgY29sb3I6IEBib3JkZXJfY29sb3I7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogQGJvcmRlcl9jb2xvcjtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZfYWN0aXZlIHtcclxuICAgICAgJi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xyXG4gICAgICAgICY6bGluayxcclxuICAgICAgICAmOnZpc2l0ZWQsXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLm1haW4ge1xyXG4gICZfX2hlYWRlcixcclxuICAmX19mb290ZXIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9faDEge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBwYWRkaW5nLXRvcDogMWVtO1xyXG4gICAgZm9udC1zaXplOiA1ZW07XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgbGluZS1oZWlnaHQ6IDJlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19uYW1lIHtcclxuICAgIGNvbG9yOiAjNTA3YWZlO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICB9XHJcblxyXG4gICZfX3RhZ2xpbmUge1xyXG4gICAgbWFyZ2luOiAxZW0gYXV0bztcclxuICAgIG1heC13aWR0aDogOTYwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zZW07XHJcbiAgICBmb250LXNpemU6IDJlbTtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICBmb250LXdlaWdodDogMTAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2NkbiB7XHJcbiAgICBtYXJnaW46IDJlbSAwO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDE1MCU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2Rvd25sb2FkIHtcclxuICAgIG1hcmdpbjogMWVtIGF1dG87XHJcbiAgICB3aWR0aDogMjAwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIHBhZGRpbmc6IDE0cHggMjlweDtcclxuICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCxcclxuICAgICAgc2Fucy1zZXJpZjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIG1hcmdpbjogMCAzZW07XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi5zZWN0aW9uIHtcclxuICBtYXJnaW46IDFlbSAwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX19jb250ZW50LFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwIDNlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19oMyB7XHJcbiAgICBjb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICBmb250LXNpemU6IDEuMzVlbTtcclxuICB9XHJcblxyXG4gICZfX2g0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4xZW07XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19oNSB7XHJcbiAgICBmb250LXNpemU6IDFlbTtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19kbCxcclxuICAmX19kdCxcclxuICAmX19kZCB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2RsIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgfVxyXG5cclxuICAmX19kdCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG5cclxuICAmX19kZCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19wcmUge1xyXG4gICAgbWFyZ2luOiAyZW0gMDtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxNTAlO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBiZ19jb2xvcjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcblxyXG4gICZfX2NvZGUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXIge1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBtYXJnaW4tdG9wOiAzZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gIH1cclxuXHJcbiAgJl9fdGFibGUge1xyXG4gICAgbWFyZ2luOiAxZW0gYXV0bztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX190aCxcclxuICAmX190ZCB7XHJcbiAgICBwYWRkaW5nOiA1cHggMTZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyNnB4O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX190aCB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAuc2VjdGlvbiB7XHJcbiAgICAmX19oZWFkZXIsXHJcbiAgICAmX19jb250ZW50IHtcclxuICAgICAgcGFkZGluZzogMCAxZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJy4vY29sb3JzJztcclxuXHJcbi5jYXNlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBkaXNwbGF5OiBncmlkO1xyXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcbiAgZ2FwOiA0MHB4O1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX3ByZSxcclxuICAmX190ZXh0YXJlYSB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTUwJTtcclxuICB9XHJcblxyXG4gICZfX3ByZSxcclxuICAmX19jb2RlLFxyXG4gICZfX3RleHRhcmVhIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgfVxyXG5cclxuICAmX19wcmUge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQGJnX2NvbG9yO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9fdG9vbGJhciB7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fYWN0aW9uLFxyXG4gICZfX3JlbW92ZSB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcclxuICB9XHJcblxyXG4gICZfX2FjdGlvbiB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX3JlbW92ZSB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgfVxyXG5cclxuICAmX19jb25zb2xlIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgaGVpZ2h0OiAxODBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fdGV4dGFyZWEge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19saXN0LFxyXG4gICZfX2l0ZW0ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19saXN0IHtcclxuICAgIGhlaWdodDogMzYwcHg7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19pdGVtIHtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaG92ZXJfYmdfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjpyb290IHtcclxuICAtLW91dGxpbmUtekluZGV4OiAyMDAwO1xyXG4gIC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0OiAxMDAlO1xyXG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcclxufVxyXG4iLCIvKiA9PT09PT09PT09IGljb24udGhlbWUgLSBzdmcg5Zu+5qCH55qE5qC35byPID09PT09PT09PT0gKi9cclxuLm91dGxpbmUtaWNvbiB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgd2lkdGg6IDFlbTtcclxuICBoZWlnaHQ6IDFlbTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19zdmcge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgd2lkdGg6IDFlbTtcclxuICAgIGhlaWdodDogMWVtO1xyXG4gICAgZmlsbDogY3VycmVudGNvbG9yO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9oaWRkZW4ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi5vdXRsaW5lLWhlYWRpbmcge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2FuY2hvciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG5cclxuICAgICY6bGluayxcclxuICAgICY6dmlzaXRlZCxcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAcHJpbWFyeV9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9zdGFydCB7XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICBsZWZ0OiAtMWVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICd2YXJpYWJsZXMnO1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdzaGFkb3cnO1xyXG5cclxuLm91dGxpbmUtZHJhd2VyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogLTE7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19tb2RhbCB7XHJcbiAgICAuc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyMTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9faGVhZGVyLFxyXG4gICZfX21haW4sXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB9XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX19mb290ZXIge1xyXG4gICAgZmxleC1zaHJpbms6IDA7XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSxcclxuICAmX19tYWluLFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgfVxyXG5cclxuICAmX19oZWFkZXIsXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgaGVpZ2h0OiA1MnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDUycHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIG1hcmdpbjogMCAxNnB4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19jbG9zZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICByaWdodDogMTJweDtcclxuICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAub3V0bGluZS1pY29uIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAdGhpcmRfdGV4dF9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX21haW4ge1xyXG4gICAgZmxleDogMTtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fb3ZlcmxheSB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICBvcGFjaXR5OiAwLjE7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9ydGwsXHJcbiAgJl9sdHIge1xyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgd2lkdGg6IDI4MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgIHdpZHRoOiA0ODBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgd2lkdGg6IDU0MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgIHdpZHRoOiA2ODBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgIHdpZHRoOiA3MjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgd2lkdGg6IDk2MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3J0bCB7XHJcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTI5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9taW5pIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTQ5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC01NTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC02OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWVkaXVtIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTczMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC05NzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfbHRyIHtcclxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtMjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC00OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC01NTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTY5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC03MzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC05NzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiLFxyXG4gICZfYnR0IHtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICBoZWlnaHQ6IDI0MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgIGhlaWdodDogMzIwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgIGhlaWdodDogMzYwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgaGVpZ2h0OiA0MDBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgIGhlaWdodDogNDQwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgIGhlaWdodDogNDgwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiIHtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtMjUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTMzMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtMzcwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTQxMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTQ1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2J0dCB7XHJcbiAgICB0b3A6IGluaXRpYWw7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTI1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9taW5pIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC0zMzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTM3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC00MTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWVkaXVtIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC00NTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTQ5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9vcGVuZWQge1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG5cclxuICAgICAgJl9ydGwge1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2x0ciB7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl90dGIge1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9idHQge1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9vZmZzZXQge1xyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfcnRsLFxyXG4gICAgICAmX2x0ciB7XHJcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl90dGIsXHJcbiAgICAgICZfYnR0IHtcclxuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNGVtKTtcclxuICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX29wZW5lZCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICAgICAmX3J0bCB7XHJcbiAgICAgICAgICAgIHJpZ2h0OiAyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJl9sdHIge1xyXG4gICAgICAgICAgICBsZWZ0OiAyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJl90dGIge1xyXG4gICAgICAgICAgICB0b3A6IDJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmX2J0dCB7XHJcbiAgICAgICAgICAgIGJvdHRvbTogMmVtO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9hdXRvIHtcclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3J0bCxcclxuICAgICAgJl9sdHIge1xyXG4gICAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2Z1bGwge1xyXG4gICAgcGFkZGluZzogMDtcclxuICB9XHJcbn1cclxuIiwiLyoqXHJcbiAqIG1peGlucy5sZXNzIC0g5bel5YW35Ye95pWwXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xyXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxyXG4gKi9cclxuQGltcG9ydCAnLi9jb2xvcnMnO1xyXG5cclxuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cclxuLmVsbGlwc2lzIChAbGluZXMpIHdoZW4gKEBsaW5lcz0xKSB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uZWxsaXBzaXMgKEBsaW5lcykgd2hlbiAoQGxpbmVzPj0yKSB7XHJcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiBAbGluZXM7XHJcbiAgZGlzcGxheTogYm94O1xyXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLyogPT09PT09IOWchuinkuagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cclxuLnJhZGl1cyhAbnVtOiAycHgpIHtcclxuICBib3JkZXItcmFkaXVzOiBAbnVtO1xyXG59XHJcblxyXG4ucmFkaXVzX25vbmUoKSB7XHJcbiAgLnJhZGl1cygwKTtcclxufVxyXG5cclxuLnJhZGl1c19taW5pKCkge1xyXG4gIC5yYWRpdXMoMnB4KTtcclxufVxyXG5cclxuLnJhZGl1c19zbWFsbCgpIHtcclxuICAucmFkaXVzKDNweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfcmVndWxhcigpIHtcclxuICAucmFkaXVzKDRweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfbWVkaXVtKCkge1xyXG4gIC5yYWRpdXMoNXB4KTtcclxufVxyXG5cclxuLnJhZGl1c19sYXJnZSgpIHtcclxuICAucmFkaXVzKDEwcHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX2h1Z2UoKSB7XHJcbiAgLnJhZGl1cygxNnB4KTtcclxufVxyXG5cclxuLnJhZGl1c19yb3VuZCgpIHtcclxuICAucmFkaXVzKDMwcHgpO1xyXG59XHJcblxyXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xyXG4uc2hhZG93KEBvZmZzZXQ6IDAgMCA2cHggMXB4LCBAY29sb3I6IEBwcmltYXJ5X2JvcmRlcl9jb2xvcikge1xyXG4gIGJveC1zaGFkb3c6IEBvZmZzZXQgQGNvbG9yO1xyXG59XHJcblxyXG4uc2hhZG93X3JlZ3VsYXIoQGNvbG9yOiBAcHJpbWFyeV9ib3JkZXJfY29sb3IpIHtcclxuICAuc2hhZG93KDAgMCA2cHggMXB4LCBAY29sb3IpO1xyXG59XHJcblxyXG4uc2hhZG93X2xhcmdlKEBjb2xvcjogQHByaW1hcnlfYm9yZGVyX2NvbG9yKSB7XHJcbiAgLnNoYWRvdygwIDAgMTJweCAxcHgsIEBjb2xvcik7XHJcbn1cclxuXHJcbi5zaGFkb3dfbGlnaHRfcmVndWxhcigpIHtcclxuICAuc2hhZG93X3JlZ3VsYXIoKTtcclxufVxyXG5cclxuLnNoYWRvd19saWdodF9sYXJnZSgpIHtcclxuICAuc2hhZG93X2xhcmdlKCk7XHJcbn1cclxuXHJcbi5zaGFkb3dfZGFya19yZWd1bGFyKCkge1xyXG4gIC5zaGFkb3dfcmVndWxhcihAc2Vjb25kYXJ5X2JvcmRlcl9jb2xvcik7XHJcbn1cclxuIiwiQGltcG9ydCAndmFyaWFibGVzJztcclxuQGltcG9ydCAnY29sb3JzJztcclxuQGltcG9ydCAnZWxsaXBzaXMnO1xyXG5cclxuLm91dGxpbmUtY2hhcHRlcnMge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIG1hcmdpbjogMDtcclxuICB3aWR0aDogdmFyKC0tb3V0bGluZS1jaGFwdGVycy13aWR0aCk7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcblxyXG4gICYtcGFyZW50IHtcclxuICAgIHRyYW5zaXRpb246IDAuM3MgZWFzZS1pbi1vdXQ7XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBtYXJnaW46IDAgMTZweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fbWFpbiB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2xpc3QsXHJcbiAgJl9fc3ViamVjdCxcclxuICAmX19pdGVtIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2xpc3Qge1xyXG4gICAgcGFkZGluZzogMC41ZW0gMDtcclxuICB9XHJcblxyXG4gICZfX3N1YmplY3Qge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxZW07XHJcbiAgfVxyXG5cclxuICAmX19pdGVtIHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX3BsYWNlaG9sZGVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaG92ZXJfYmdfY29sb3I7XHJcbiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fYW5jaG9yIHtcclxuICAgIC5lbGxpcHNpcygxKTtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcGFkZGluZzogMCAxLjVlbTtcclxuXHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICBjb2xvcjogQHNlY29uZGFyeV90ZXh0X2NvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19jb2RlIHtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDAuNWVtO1xyXG4gIH1cclxuXHJcbiAgJl9oaWdobGlnaHQge1xyXG4gICAgJi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xyXG4gICAgICAmOmxpbmssXHJcbiAgICAgICY6dmlzaXRlZCxcclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N0aWNreSxcclxuICAmX2ZpeGVkIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgIC5vdXRsaW5lLWNoYXB0ZXJzIHtcclxuICAgICAgJl9fdGl0bGUsXHJcbiAgICAgICZfX21haW4ge1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fbWFpbiB7XHJcbiAgICAgICAgZmxleDogMTtcclxuICAgICAgICBvdmVyZmxvdzogYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9zdGlja3kge1xyXG4gICAgcG9zaXRpb246IHN0aWNreTtcclxuICAgIG1heC1oZWlnaHQ6IHZhcigtLW91dGxpbmUtc3RpY2t5LWhlaWdodCk7XHJcbiAgfVxyXG5cclxuICAmX2ZpeGVkIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIG1heC1oZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgJl9mb2xkZWQge1xyXG4gICAgd2lkdGg6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdtaXhpbnMnO1xyXG5cclxuLm91dGxpbmUtcmVhZGVyIHtcclxuICAmX19jbG9zZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgICBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYUhlaSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgJi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICAgJi53cmFwcGVyIHtcclxuICAgICAgICAmLnBvc3Qge1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYtLXJlYWRpbmcge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIHBhZGRpbmc6IDNlbSA0ZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICBzY3JvbGwtdGltZWxpbmUtbmFtZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xyXG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcclxuXHJcbiAgICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgICAmX19wcm9ncmVzcyB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDM7XHJcbiAgICAgICAgaGVpZ2h0OiA0cHg7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICAgICAgc2NhbGU6IDAgMTtcclxuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xyXG4gICAgICAgIGFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xyXG4gICAgICAgIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19jbG9zZSB7XHJcbiAgICAgICAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHotaW5kZXg6IDM7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgcmlnaHQ6IDIycHg7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDAgOHB4IEBzZWNvbmRhcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaDEsXHJcbiAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuM2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMy41ZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xyXG4gIHRvIHtcclxuICAgIHNjYWxlOiAxIDE7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgJi0tcmVhZGluZyB7XHJcbiAgICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xyXG4gICAgfVxyXG5cclxuICAgICZfX2Nsb3NlIHtcclxuICAgICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcclxuICAgICAgb3BhY2l0eTogMC44O1xyXG4gICAgfVxyXG5cclxuICAgICZfX3RpdGxlIHtcclxuICAgICAgZm9udC1zaXplOiAyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgcHJpbnQge1xyXG4gIGh0bWwsXHJcbiAgYm9keSB7XHJcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5vdXRsaW5lIHtcclxuICAgICYtbWVzc2FnZSxcclxuICAgICYtdG9vbGJhciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAmLXJlYWRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgICBoMSxcclxuICAgICAgJl9fdGl0bGUge1xyXG4gICAgICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLm91dGxpbmUtcmVhZGVyIHtcclxuICAgICAgICAmLS1yZWFkaW5nIHtcclxuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoMSxcclxuICAgICAgICAmX190aXRsZSB7XHJcbiAgICAgICAgICBtYXJnaW46IDEzLjRwdCAwIDI4cHQgIWltcG9ydGFudDtcclxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmX19jbG9zZSxcclxuICAgICAgICAmX19wcm9ncmVzcyB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBwcmUge1xyXG4gICAgICAgIHBhZGRpbmc6IDFlbSAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3IgIWltcG9ydGFudDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcHJlLFxyXG4gICAgICBjb2RlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGUgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGFibGUsXHJcbiAgICAgIGltZyxcclxuICAgICAgc3ZnIHtcclxuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NpYmxpbmcge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09IGJ1dHRvbnMudGhlbWUgLSDmjInpkq7lr7zoiKrmoLflvI8gPT09PT09PT09PSAqL1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdzaGFkb3cnO1xyXG5cclxuLm91dGxpbmUtdG9vbGJhciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDk5OTk5O1xyXG4gIG1hcmdpbjogMDtcclxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2J1dHRvbiB7XHJcbiAgICAuc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBtYXJnaW46IDEwcHg7XHJcbiAgICB3aWR0aDogMzZweDtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICBib3JkZXItY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgICYuaGlkZSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19hbmNob3Ige1xyXG4gICAgJjpsaW5rLFxyXG4gICAgJjp2aXNpdGVkLFxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9faWNvbiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgZmlsbDogY3VycmVudGNvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfYWN0aXZlIHtcclxuICAgICYub3V0bGluZS10b29sYmFyIHtcclxuICAgICAgJl9fYnV0dG9uIHtcclxuICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS10b29sYmFyX19hbmNob3Ige1xyXG4gICAgICAmOmxpbmssXHJcbiAgICAgICY6dmlzaXRlZCxcclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9yb3VuZGVkIHtcclxuICAgICYub3V0bGluZS10b29sYmFyX19idXR0b24ge1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9kaXNhYmxlZCB7XHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcixcclxuICAgIC5vdXRsaW5lLXRvb2xiYXIge1xyXG4gICAgICAmX19hbmNob3I6bGluayxcclxuICAgICAgJl9fYW5jaG9yOnZpc2l0ZWQsXHJcbiAgICAgICZfX2FuY2hvcjpob3ZlcixcclxuICAgICAgJl9fYnV0dG9uIHtcclxuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICAgIGJvcmRlci1jb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fYnV0dG9uIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZGlzYWJsZWRfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiLFxyXG4gICZfYnR0IHtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuXHJcbiAgICAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3R0YiB7XHJcbiAgICB0b3A6IDEycHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgdG9wOiAtNTZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfYnR0IHtcclxuICAgIGJvdHRvbTogMTJweDtcclxuXHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICBib3R0b206IC01NnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9ydGwsXHJcbiAgJl9sdHIge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgd2lkdGg6IDU2cHg7XHJcbiAgfVxyXG5cclxuICAmX3J0bCB7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIHJpZ2h0OiAxMnB4O1xyXG5cclxuICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgIHJpZ2h0OiAtODZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfbHRyIHtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgbGVmdDogMTJweDtcclxuXHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICBsZWZ0OiAtODZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiLFxyXG4gICZfcnRsLFxyXG4gICZfYnR0LFxyXG4gICZfbHRyIHtcclxuICAgIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XHJcbiAgICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICcuL2NvbG9ycyc7XHJcbkBpbXBvcnQgJy4vZm9udCc7XHJcbkBpbXBvcnQgJy4vbWl4aW5zJztcclxuQGltcG9ydCAnLi9pY29ucyc7XHJcblxyXG4ub3V0bGluZS1tZXNzYWdlIHtcclxuICAucmFkaXVzX3NtYWxsKCk7XHJcbiAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDk5OTk7XHJcbiAgb3BhY2l0eTogMC4xO1xyXG4gIHRvcDogLTUwcHg7XHJcbiAgbGVmdDogNTAlO1xyXG4gIGhlaWdodDogNDBweDtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMCA1MHB4O1xyXG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gIGZvbnQtc2l6ZTogQGZvbnRfc2l6ZV9zbWFsbDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2UtaW4tb3V0O1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19jb250ZW50IHtcclxuICAgIC5lbGxpcHNpcygxKTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIG1heC13aWR0aDogNzAwcHg7XHJcbiAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgIGZvbnQtc2l6ZTogMTNweDtcclxuICAgIGNvbG9yOiBAdGhpcmRfdGV4dF9jb2xvcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19jbG9zZSxcclxuICAmX19pY29uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDA7XHJcbiAgICB3aWR0aDogNDBweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2ljb24ge1xyXG4gICAgbGVmdDogMDtcclxuICAgIGNvbG9yOiBAd2hpdGU7XHJcblxyXG4gICAgLm91dGxpbmUtaWNvbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgei1pbmRleDogMjtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19jbG9zZSB7XHJcbiAgICByaWdodDogMDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcblxyXG4gICAgLm91dGxpbmUtaWNvbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgei1pbmRleDogMjtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAdGhpcmRfdGV4dF9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfaW5mbyB7XHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3dhcm5pbmcge1xyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3YXJuaW5nX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9zdWNjZXNzIHtcclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZXJyb3Ige1xyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBkYW5nZXJfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3BsYWluIHtcclxuICAgIG1pbi13aWR0aDogMTkwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDUwcHggMCAxNXB4O1xyXG5cclxuICAgICYub3V0bGluZS1tZXNzYWdlIHtcclxuICAgICAgJl9pbmZvIHtcclxuICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBpbmZvX3RpcF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl93YXJuaW5nIHtcclxuICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEB3YXJuaW5nX2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3YXJuaW5nX3RpcF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zdWNjZXNzIHtcclxuICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX3RpcF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9lcnJvciB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAZGFuZ2VyX2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBkYW5nZXJfdGlwX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIHdpZHRoOiAwO1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG5cclxuICAgICAgLm91dGxpbmUtaWNvbiB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9saWdodCB7XHJcbiAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgcGFkZGluZzogMCA0MHB4O1xyXG5cclxuICAgICYub3V0bGluZS1tZXNzYWdlIHtcclxuICAgICAgJl9pbmZvIHtcclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiBAcHJpbWFyeV9jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfd2FybmluZyB7XHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICBjb2xvcjogQHdhcm5pbmdfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3N1Y2Nlc3Mge1xyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9lcnJvciB7XHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICBjb2xvcjogQGRhbmdlcl9jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9yb3VuZCB7XHJcbiAgICAucmFkaXVzKDIwcHgpO1xyXG5cclxuICAgICYub3V0bGluZS1tZXNzYWdlIHtcclxuICAgICAgJl9kZWZhdWx0IHtcclxuICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgNDBweDtcclxuXHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICAucmFkaXVzKDEwcHgpO1xyXG4gICAgICAgICAgdG9wOiAxMHB4O1xyXG4gICAgICAgICAgbGVmdDogMTBweDtcclxuICAgICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcclxuICAgICAgICAgIG1pbi13aWR0aDogMjAwcHg7XHJcbiAgICAgICAgICBwYWRkaW5nOiAwIDIwcHggMCA0MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9wbGFpbiB7XHJcbiAgICAgICAgbWluLXdpZHRoOiAxOTVweDtcclxuICAgICAgICBwYWRkaW5nOiAwIDQwcHggMCAyMHB4O1xyXG5cclxuICAgICAgICAmLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcclxuICAgICAgICAgIG1pbi13aWR0aDogMjE1cHg7XHJcbiAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2Z1bGwtd2lkdGgge1xyXG4gICAgbWluLXdpZHRoOiAyMDBweDtcclxuICAgIHBhZGRpbmc6IDAgMTBweCAwIDUwcHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gICAgICAmX3BsYWluIHtcclxuICAgICAgICBtaW4td2lkdGg6IDIzMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweCAwIDE1cHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGlnaHQge1xyXG4gICAgICAgIG1pbi13aWR0aDogMjEwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMCAxMHB4IDAgNDBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl92aXNpYmxlIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PSBTY3JvbGxiYXIgPT09PT0gKi9cclxuOjotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgd2lkdGg6IDdweDtcclxuICBoZWlnaHQ6IDdweDtcclxuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcclxuXHJcbiAgJi10cmFjay1waWVjZSB7XHJcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcclxuICB9XHJcblxyXG4gICYtdGh1bWIge1xyXG4gICAgJjp2ZXJ0aWNhbCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgICY6aG9yaXpvbnRhbCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4gIH1cclxufVxyXG4iXX0= */ diff --git a/docs/css/docs.min.css b/docs/css/docs.min.css index e5f9756..99c8c9a 100644 --- a/docs/css/docs.min.css +++ b/docs/css/docs.min.css @@ -1,2 +1,2 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}.aside,.main,textarea{overflow:auto}.case,.docs,.main,.section__dl{z-index:1;position:relative}.aside,.outline-toolbar{-webkit-transition-duration:.3s}.case,.docs,.main,.outline-icon,.section__dl,sub,sup{position:relative}html{-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}.case,.main__cdn,.main__footer,.section__footer,.section__table{border-top:1px solid #ddd}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.docs,body,html{overflow:hidden}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}.aside,.docs,.main,body,html{height:100%}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.outline-reader__title,body,html{font-family:'Microsoft YaHei UI',Arial,sans-serif}summary{display:list-item}[hidden],template{display:none}body,html{background:#fafafa;color:#333;font-size:14px;line-height:150%}.aside,code{font-family:'Source Code Pro',Consolas,Georgia,Monaco,monospace,Arial,sans-serif}a:hover,a:link,a:visited{color:#058942;text-decoration:none}a:hover{text-decoration:underline}.docs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:100%;margin:0}.aside,.outline-chapters_fixed,.outline-chapters_sticky,.outline-drawer__modal{-webkit-box-orient:vertical;-webkit-box-direction:normal}.aside{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:260px;margin:0;background-color:#333;color:#ddd;-webkit-box-shadow:0 0 5px 2px #ddd;box-shadow:0 0 5px 2px #ddd;transition-duration:.3s}.main__button,.section__dd,.section__dt{display:inline-block}.aside__nav,.main{-webkit-box-flex:1}.main{-ms-flex:1;flex:1;background-color:#fff}.aside__header{margin:0 auto;-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.aside__nav{-ms-flex:1;flex:1;overflow:auto}.aside__h2{margin:0 auto;height:54px;line-height:54px;font-size:20px;font-weight:400;font-family:Georgia,Consolas,Arial,sans-serif;text-align:center;overflow:hidden}.aside__h3{margin:0 auto;padding:0 20px;font-size:16px;overflow:hidden}.aside__list{margin:0;padding:10px 0;overflow:hidden}.aside__item{height:32px;line-height:32px;padding:0 30px;cursor:pointer;font-size:13px;overflow:hidden}.aside .outline-chapters{-webkit-box-flex:1;-ms-flex:1;flex:1}.aside .outline-chapters__main::-webkit-scrollbar-thumb{background-color:#666}.aside .outline-chapters__main::-webkit-scrollbar-thumb:hover{background-color:#999}.aside .outline-chapters__placeholder{background-color:#555;border-left:3px solid #fff}.aside .outline-chapters__anchor:link,.aside .outline-chapters__anchor:visited{color:#ddd;text-decoration:none}.aside .outline-chapters__anchor:hover{color:#ddd;text-decoration:underline}.aside .outline-chapters_active.outline-chapters__anchor:hover,.aside .outline-chapters_active.outline-chapters__anchor:link,.aside .outline-chapters_active.outline-chapters__anchor:visited{color:#fff}.main__footer,.main__header{margin:0 auto;padding:1em;text-align:center;overflow:hidden}.main__h1{margin:0 auto;padding-top:1em;font-size:5em;font-weight:400;line-height:2em;overflow:hidden}.main__name{color:#507afe;font-weight:400}.main__tagline{margin:1em auto;max-width:960px;line-height:1.3em;font-size:2em;color:#999;font-weight:100;overflow:hidden}.main__cdn,.section__pre{line-height:150%;background-color:#fafafa}.main__cdn{margin:2em 0;padding:2em;font-size:16px;text-align:center;border-bottom:1px solid #ddd;color:#666;overflow:hidden}.main__download{margin:1em auto;width:200px;text-align:center;overflow:hidden}.main__button{border-radius:4px;padding:14px 29px;font-size:18px;font-family:'Source Code Pro',Consolas,Georgia,Monaco,monospace,Arial,sans-serif;background-color:#058942;overflow:hidden}.main__button:hover,.main__button:link,.main__button:visited{color:#fff;text-decoration:none}.main__footer{margin:0 3em}.section{margin:1em 0;overflow:hidden}.section__content,.section__footer,.section__header{margin:0;padding:0 3em;overflow:hidden}.section__title{color:#666}.section__h3{color:#507afe;font-size:1.35em}.section__h4{font-size:1.1em;color:#666}.section__h5{font-size:1em;color:#999}.section__dd,.section__dl,.section__dt{margin:0;padding:0;overflow:hidden}.section__dd{color:#058942}.section__pre{margin:2em 0;padding:1em;font-size:14px;text-align:left;border:1px solid #ddd;border-radius:4px;color:#666;overflow:auto}.case,.case:after,.case__console,.case__toolbar,.section__code{overflow:hidden}.section__code{display:block;margin:0 auto}.section__footer{margin-top:3em;background-color:#fafafa;color:#999}.section__table{margin:1em auto;width:100%}.section__td,.section__th{padding:5px 16px;line-height:26px;border-bottom:1px solid #ddd}.section__th{text-align:center;background-color:#fafafa}@media (max-width:480px){.section__content,.section__header{padding:0 1em}}.case{display:grid;grid-template-columns:repeat(2,1fr);gap:40px;padding:1em;border-bottom:1px solid #ddd}.case:after{content:'';position:absolute;z-index:2;top:0;left:50%;height:100%;width:0;border-left:1px solid #ddd}.case__pre,.case__textarea{font-size:13px;line-height:150%}.case__code,.case__pre,.case__textarea{font-family:'Courier New',Consolas,Georgia,Arial,sans-serif}.case__pre{margin:0;padding:1em;background-color:#fafafa;height:100%;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto}.case__toolbar{margin:0 auto;height:36px;line-height:36px;font-size:14px;padding:0 16px;text-align:right}.case__action,.case__remove{cursor:pointer;color:#058942;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.case__action{font-size:13px;padding-left:10px}.case__action:first-child{padding-left:0}.case__remove{float:right}.case__console{margin:0 auto;height:180px;border:1px solid #ddd}.case__textarea{margin:0 auto;width:100%;height:100%;border:none;outline:0;padding:1em;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto}.case__item,.case__list{margin:0;padding:0;list-style-type:none;overflow:hidden}.case__item,.outline-drawer__footer,.outline-drawer__main,.outline-drawer__title{padding:0 16px}.case__list{height:360px;border-top:1px solid #ddd;border-bottom:1px solid #ddd;font-size:13px;overflow:auto}.case__item{height:36px;line-height:36px;cursor:pointer}.outline-icon,.outline-icon__svg{width:1em;height:1em;overflow:hidden}.case__item:hover{background-color:#f7f8f9}:root{--outline-zIndex:2000;--outline-sticky-height:100%;--outline-chapters-width:100%}.outline-icon{z-index:1;display:inline-block;vertical-align:middle}.outline-heading__anchor,.outline-icon_hidden{display:none}.outline-icon__svg{position:absolute;z-index:2;top:50%;left:50%;fill:currentcolor;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-heading{position:relative;z-index:1;overflow:hidden}.outline-heading__anchor:hover,.outline-heading__anchor:link,.outline-heading__anchor:visited{color:#999;text-decoration:none}.outline-heading__anchor:hover{color:#507afe}.outline-heading:hover .outline-heading__anchor{display:inline-block}.outline-heading_start:hover{overflow:visible}.outline-heading_start .outline-heading__anchor{position:absolute;z-index:2;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:-1em}.outline-drawer{position:relative;z-index:-1;top:0;left:0;margin:0;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:hidden;overflow:hidden}.outline-drawer__modal{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;z-index:21;height:100%;background-color:#fff;-webkit-transition-duration:.4s;transition-duration:.4s;overflow:hidden}.outline-drawer__footer,.outline-drawer__header,.outline-drawer__main{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.outline-drawer__footer,.outline-drawer__header{-ms-flex-negative:0;flex-shrink:0}.outline-drawer__header,.outline-drawer__title{position:relative;z-index:1;margin:0 auto;height:52px;line-height:52px;overflow:hidden}.outline-drawer__title{font-size:16px;font-weight:400;margin:0 16px;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #dcdfe6}.outline-drawer__close{position:absolute;z-index:2;top:50%;right:12px;width:20px;height:20px;line-height:20px;color:#999;font-size:20px;text-align:center;cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%);overflow:hidden}.outline-drawer__close .outline-icon{position:absolute;z-index:2;top:0;left:0}.outline-drawer__close:hover{color:#666}.outline-drawer__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-drawer__footer{margin:0 auto;text-align:right;overflow:hidden}.outline-drawer__overlay{content:'';position:relative;z-index:1;top:0;left:0;width:100%;height:100%;background-color:#fff;opacity:.1;overflow:hidden}.outline-drawer_ltr.outline-drawer_tiny,.outline-drawer_rtl.outline-drawer_tiny{width:280px}.outline-drawer_ltr.outline-drawer_mini,.outline-drawer_rtl.outline-drawer_mini{width:480px}.outline-drawer_ltr.outline-drawer_small,.outline-drawer_rtl.outline-drawer_small{width:540px}.outline-drawer_ltr.outline-drawer_regular,.outline-drawer_rtl.outline-drawer_regular{width:680px}.outline-drawer_ltr.outline-drawer_medium,.outline-drawer_rtl.outline-drawer_medium{width:720px}.outline-drawer_ltr.outline-drawer_large,.outline-drawer_rtl.outline-drawer_large{width:960px}.outline-drawer_rtl{border-left:1px solid #dcdfe6}.outline-drawer_rtl.outline-drawer_tiny.outline-drawer_closed{right:-290px}.outline-drawer_rtl.outline-drawer_mini.outline-drawer_closed{right:-490px}.outline-drawer_rtl.outline-drawer_small.outline-drawer_closed{right:-550px}.outline-drawer_rtl.outline-drawer_regular.outline-drawer_closed{right:-690px}.outline-drawer_rtl.outline-drawer_medium.outline-drawer_closed{right:-730px}.outline-drawer_rtl.outline-drawer_large.outline-drawer_closed{right:-970px}.outline-drawer_ltr{border-right:1px solid #dcdfe6}.outline-drawer_ltr.outline-drawer_tiny.outline-drawer_closed{left:-290px}.outline-drawer_ltr.outline-drawer_mini.outline-drawer_closed{left:-490px}.outline-drawer_ltr.outline-drawer_small.outline-drawer_closed{left:-550px}.outline-drawer_ltr.outline-drawer_regular.outline-drawer_closed{left:-690px}.outline-drawer_ltr.outline-drawer_medium.outline-drawer_closed{left:-730px}.outline-drawer_ltr.outline-drawer_large.outline-drawer_closed{left:-970px}.outline-drawer_btt,.outline-drawer_ttb{left:0;width:100%}.outline-drawer_btt.outline-drawer_tiny,.outline-drawer_ttb.outline-drawer_tiny{height:240px}.outline-drawer_btt.outline-drawer_mini,.outline-drawer_ttb.outline-drawer_mini{height:320px}.outline-drawer_btt.outline-drawer_small,.outline-drawer_ttb.outline-drawer_small{height:360px}.outline-drawer_btt.outline-drawer_regular,.outline-drawer_ttb.outline-drawer_regular{height:400px}.outline-drawer_btt.outline-drawer_medium,.outline-drawer_ttb.outline-drawer_medium{height:440px}.outline-drawer_btt.outline-drawer_large,.outline-drawer_ttb.outline-drawer_large{height:480px}.outline-drawer_ttb{border-bottom:1px solid #dcdfe6}.outline-drawer_ttb.outline-drawer_tiny.outline-drawer_closed{top:-250px}.outline-drawer_ttb.outline-drawer_mini.outline-drawer_closed{top:-330px}.outline-drawer_ttb.outline-drawer_small.outline-drawer_closed{top:-370px}.outline-drawer_ttb.outline-drawer_regular.outline-drawer_closed{top:-410px}.outline-drawer_ttb.outline-drawer_medium.outline-drawer_closed{top:-450px}.outline-drawer_ttb.outline-drawer_large.outline-drawer_closed{top:-490px}.outline-drawer_btt{top:initial;border-top:1px solid #dcdfe6}.outline-drawer_btt.outline-drawer_tiny.outline-drawer_closed{bottom:-250px}.outline-drawer_btt.outline-drawer_mini.outline-drawer_closed{bottom:-330px}.outline-drawer_btt.outline-drawer_small.outline-drawer_closed{bottom:-370px}.outline-drawer_btt.outline-drawer_regular.outline-drawer_closed{bottom:-410px}.outline-drawer_btt.outline-drawer_medium.outline-drawer_closed{bottom:-450px}.outline-drawer_btt.outline-drawer_large.outline-drawer_closed{bottom:-490px}.outline-drawer_opened{visibility:visible;z-index:var(--outline-zIndex)}.outline-drawer_opened.outline-drawer{position:fixed}.outline-drawer_opened.outline-drawer_rtl{right:0}.outline-drawer_opened.outline-drawer_ltr{left:0}.outline-drawer_opened.outline-drawer_ttb{top:0}.outline-drawer_opened.outline-drawer_btt{bottom:0}.outline-drawer_offset.outline-drawer_ltr,.outline-drawer_offset.outline-drawer_rtl{height:calc(100% - 4em);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.outline-drawer_offset.outline-drawer_btt,.outline-drawer_offset.outline-drawer_ttb{width:calc(100% - 4em);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-drawer_offset.outline-drawer_opened.outline-drawer_rtl{right:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ltr{left:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ttb{top:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_btt{bottom:2em}.outline-drawer_auto.outline-drawer_ltr,.outline-drawer_auto.outline-drawer_rtl{height:auto;max-height:calc(100% - 4em)}.outline-drawer_full{padding:0}.outline-chapters{position:relative;z-index:1;margin:0;width:var(--outline-chapters-width);overflow:auto}.outline-chapters-parent{-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.outline-chapters__title{margin:0 16px;height:40px;line-height:40px;padding:0 16px;border-bottom:1px solid #dcdfe6;font-size:16px;font-weight:400;overflow:hidden}.outline-chapters__main{position:relative;z-index:1;margin:0;overflow:hidden}.outline-chapters__item,.outline-chapters__list,.outline-chapters__subject{position:relative;z-index:2;margin:0;padding:0;list-style-type:none;overflow:hidden}.outline-chapters__list{padding:.5em 0}.outline-chapters__subject{padding-left:1em}.outline-chapters__item{margin:0;line-height:30px;font-size:13px;overflow:hidden}.outline-chapters__placeholder{position:absolute;z-index:1;top:0;left:0;width:100%;height:30px;background-color:#f7f8f9;border-left:2px solid #058942;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.outline-chapters__anchor{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;padding:0 1.5em}.outline-chapters__anchor:hover,.outline-chapters__anchor:link,.outline-chapters__anchor:visited{text-decoration:none;color:#555}.outline-chapters__anchor:hover{color:#058942}.outline-chapters__code{padding-right:.5em}.outline-chapters_highlight.outline-chapters__anchor:hover,.outline-chapters_highlight.outline-chapters__anchor:link,.outline-chapters_highlight.outline-chapters__anchor:visited{color:#058942;font-weight:700}.outline-chapters_fixed,.outline-chapters_sticky{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-direction:column;flex-direction:column;z-index:var(--outline-zIndex);top:0;overflow:hidden}.outline-chapters_hidden,.outline-reader__close{display:none}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__main,.outline-chapters_sticky .outline-chapters__title{-webkit-box-sizing:border-box;box-sizing:border-box}.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__title{-ms-flex-negative:0;flex-shrink:0}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_sticky .outline-chapters__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-chapters_sticky{position:sticky;max-height:var(--outline-sticky-height)}.outline-chapters_fixed{position:fixed;max-height:100%}.outline-chapters_folded{width:0;overflow:hidden}.outline-reader__title{margin:.67em 0!important;text-align:center!important;font-weight:400;overflow:hidden}.outline-reader_hidden,.outline-reader_hidden.outline-reader_sibling{display:none!important}.outline-reader_hidden.outline-reader_sibling.wrapper.post{display:none}.outline-reader--reading{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:3em 4em;background-color:#fff;scroll-timeline-name:--ProgressTimeline;overflow:scroll}.outline-reader--reading .outline-reader__progress{position:fixed;top:0;left:0;z-index:3;height:4px;width:100%;background-color:#507afe;scale:0 1;-webkit-transform-origin:left;transform-origin:left;-webkit-animation:outline-reader-progress linear;animation:outline-reader-progress linear;animation-timeline:--ProgressTimeline}.outline-reader--reading .outline-reader__close{display:block;position:fixed;z-index:3;top:50%;right:22px;margin:0;width:36px;height:36px;border-radius:18px;border:1px solid #dcdfe6;line-height:30px;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;-webkit-box-shadow:0 0 8px #ddd;box-shadow:0 0 8px #ddd;color:#999;background-color:#fff;overflow:hidden}.outline-reader--reading .outline-reader__close:hover{background-color:#058942;color:#fff}.outline-reader--reading .outline-reader h1,.outline-reader--reading .outline-reader__title{margin:.67em 0!important;line-height:1.3em;font-size:3.5em}@-webkit-keyframes outline-reader-progress{to{scale:1 1}}@keyframes outline-reader-progress{to{scale:1 1}}@media (max-width:480px){.outline-reader--reading{padding:0 1.25em}.outline-reader__close{right:12px!important;opacity:.8}.outline-reader__title{font-size:2em}}@media print{.outline-reader h1,.outline-reader.outline-reader h1,.outline-reader.outline-reader__title,.outline-reader__title{margin:13.4pt 0 28pt!important;text-align:center!important;font-size:20pt!important}body,html{height:initial!important}.outline-reader{display:block!important;overflow:hidden}.outline-reader.outline-reader__close,.outline-reader.outline-reader__progress,.outline-reader_sibling{display:none!important}.outline-reader.outline-reader--reading{position:relative!important;height:auto!important;padding:0!important;overflow:hidden!important}.outline-reader pre{padding:1em!important;border:1px solid #ddd!important;border-radius:4px!important}.outline-reader code,.outline-reader pre{background-color:#fff!important}.outline-reader img,.outline-reader svg,.outline-reader table{-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}}.outline-toolbar{position:fixed;z-index:99999;margin:0;transition-duration:.3s;overflow:hidden}.outline-toolbar__button{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:relative;z-index:1;margin:10px;width:36px;height:36px;border:1px solid #dcdfe6;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;cursor:pointer;text-align:center;color:#999;overflow:hidden}.outline-toolbar__button:hover{color:#058942;border-color:#058942}.outline-toolbar__button.hide{display:none}.outline-toolbar__anchor:hover,.outline-toolbar__anchor:link,.outline-toolbar__anchor:visited{color:#999;text-decoration:none}.outline-toolbar__anchor:hover{color:#058942}.outline-toolbar__icon{position:absolute;z-index:2;top:50%;left:50%;width:20px;height:20px;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);fill:currentcolor;overflow:hidden}.outline-toolbar_active.outline-toolbar__button{color:#fff;background-color:#058942;border-color:#058942}.outline-toolbar_active .outline-toolbar__anchor:hover,.outline-toolbar_active .outline-toolbar__anchor:link,.outline-toolbar_active .outline-toolbar__anchor:visited,.outline-toolbar_active.outline-toolbar__button:hover{color:#fff}.outline-toolbar_rounded.outline-toolbar__button{border-radius:18px}.outline-toolbar_disabled .outline-toolbar__anchor:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link,.outline-toolbar_disabled .outline-toolbar__anchor:visited,.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__anchor:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link,.outline-toolbar_disabled.outline-toolbar__anchor:visited,.outline-toolbar_disabled.outline-toolbar__button{cursor:not-allowed;color:#999;border-color:#999}.outline-toolbar_disabled .outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link:hover,.outline-toolbar_disabled .outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled .outline-toolbar__button:hover,.outline-toolbar_disabled.outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link:hover,.outline-toolbar_disabled.outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled.outline-toolbar__button:hover{color:#999;border-color:#999}.outline-message,.outline-message__content{margin:0;font-size:13px;color:#666;height:40px;line-height:40px;overflow:hidden}.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__button{background-color:#f5f5f5}.outline-toolbar_btt,.outline-toolbar_ttb{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-toolbar_btt .outline-toolbar__button,.outline-toolbar_ttb .outline-toolbar__button{display:inline-block}.outline-toolbar_ttb{top:12px}.outline-toolbar_ttb.outline-toolbar_hidden{top:-56px}.outline-toolbar_btt{bottom:12px}.outline-toolbar_btt.outline-toolbar_hidden{bottom:-56px}.outline-toolbar_ltr,.outline-toolbar_rtl{-webkit-transform:translateY(-50%);transform:translateY(-50%);width:56px}.outline-toolbar_rtl{top:50%;right:12px}.outline-toolbar_rtl.outline-toolbar_hidden{right:-86px}.outline-toolbar_ltr{top:50%;left:12px}.outline-toolbar_ltr.outline-toolbar_hidden{left:-86px}.outline-toolbar_btt .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ltr .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_rtl .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ttb .outline-toolbar__button.outline-toolbar_hidden{display:none}.outline-message{border-radius:3px;-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:fixed;z-index:9999;opacity:.1;top:-50px;left:50%;padding:0 50px;background-color:#fff;-webkit-transition:all .5s ease-in-out;transition:all .5s ease-in-out;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-message__content{white-space:nowrap;text-overflow:ellipsis;max-width:700px}.outline-message__close,.outline-message__icon{position:absolute;z-index:2;top:0;width:40px;height:40px;line-height:40px;text-align:center;overflow:hidden}.outline-message__icon{left:0;color:#fff}.outline-message__icon .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close{right:0;cursor:pointer;color:#999}.outline-message__close .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close:hover{color:#666}.outline-message_info .outline-message__icon{background-color:#507afe}.outline-message_warning .outline-message__icon{background-color:#ff9901}.outline-message_success .outline-message__icon{background-color:#058942}.outline-message_error .outline-message__icon{background-color:#ff5d5d}.outline-message_plain{min-width:190px;padding:0 50px 0 15px}.outline-message_light,.outline-message_round.outline-message_default{min-width:180px;padding:0 40px}.outline-message_plain.outline-message_info{border-left:5px solid #507afe;background-color:#ecf8ff}.outline-message_plain.outline-message_warning{border-left:5px solid #ff9901;background-color:#fffbe6}.outline-message_plain.outline-message_success{border-left:5px solid #058942;background-color:#e1f6eb}.outline-message_plain.outline-message_error{border-left:5px solid #ff5d5d;background-color:#fff1f0}.outline-message_plain .outline-message__icon{width:0;display:none}.outline-message_plain .outline-message__icon .outline-icon{display:none}.outline-message_light.outline-message_info .outline-message__icon{color:#507afe}.outline-message_light.outline-message_warning .outline-message__icon{color:#ff9901}.outline-message_light.outline-message_success .outline-message__icon{color:#058942}.outline-message_light.outline-message_error .outline-message__icon{color:#ff5d5d}.outline-message_light .outline-message__icon{background-color:#fff}.outline-message_round{border-radius:20px}.outline-message_round.outline-message_default .outline-message__icon{border-radius:10px;top:10px;left:10px;width:20px;height:20px;line-height:20px}.outline-message_round.outline-message_default.outline-message_full-width{min-width:200px;padding:0 20px 0 40px}.outline-message_round.outline-message_plain{min-width:195px;padding:0 40px 0 20px}.outline-message_round.outline-message_plain.outline-message_full-width{min-width:215px;padding:0 20px}.outline-message_full-width{min-width:200px;padding:0 10px 0 50px}.outline-message_full-width.outline-message_plain{min-width:230px;padding:0 10px 0 15px}.outline-message_full-width.outline-message_light{min-width:210px;padding:0 10px 0 40px}.outline-message_visible{opacity:1}.outline-message_hidden{display:none}::-webkit-scrollbar{width:7px;height:7px;-webkit-border-radius:5px}::-webkit-scrollbar-track-piece{-webkit-border-radius:5px}::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:horizontal{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.35)}::-webkit-scrollbar:hover{background-color:rgba(0,0,0,.15)} -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJjc3MvZG9jcy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuICovXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gIC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovXG59XG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuICovXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuLyoqXG4gKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS5cbiAqL1xubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5ociB7XG4gIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIC8qIDEgKi9cbiAgaGVpZ2h0OiAwO1xuICAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICAvKiAyICovXG59XG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnByZSB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqL1xufVxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07XG4gIC8qIDIgKi9cbn1cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuICovXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDIgKi9cbn1cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5idXR0b24sXG5pbnB1dCB7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5idXR0b24sXG5bdHlwZT0nYnV0dG9uJ10sXG5bdHlwZT0ncmVzZXQnXSxcblt0eXBlPSdzdWJtaXQnXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0ncmVzZXQnXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdzdWJtaXQnXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT0nYnV0dG9uJ106LW1vei1mb2N1c3JpbmcsXG5bdHlwZT0ncmVzZXQnXTotbW96LWZvY3VzcmluZyxcblt0eXBlPSdzdWJtaXQnXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5sZWdlbmQge1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAvKiAxICovXG59XG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cbiAqL1xudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gKi9cblt0eXBlPSdjaGVja2JveCddLFxuW3R5cGU9J3JhZGlvJ10ge1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovXG59XG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuW3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5bdHlwZT0nc2VhcmNoJ10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7XG4gIC8qIDIgKi9cbn1cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG4gKi9cbmRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG4vKiBNaXNjXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG4gKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qID09PT09IEJhc2UgPT09PT0gKi9cbmh0bWwsXG5ib2R5IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiAjZmFmYWZhO1xuICBjb2xvcjogIzMzMztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbmE6bGluayxcbmE6dmlzaXRlZCxcbmE6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuY29kZSB7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cbi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA3cHg7XG4gIGhlaWdodDogN3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbi8qIExheW91dCAqL1xuLmRvY3Mge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAtbXMtZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4vKiBBc2lkZSAqL1xuLmFzaWRlIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtbXMtZmxleC1uZWdhdGl2ZTogMDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB3aWR0aDogMjYwcHg7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xuICBjb2xvcjogI2RkZDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNXB4IDJweCAjZGRkO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMnB4ICNkZGQ7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi8qIE1haW4gKi9cbi5tYWluIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgIC1tcy1mbGV4OiAxO1xuICAgICAgICAgIGZsZXg6IDE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5hc2lkZSB7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cbi5hc2lkZV9faGVhZGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXNpZGVfX25hdiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5hc2lkZV9faDIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiA1NHB4O1xuICBsaW5lLWhlaWdodDogNTRweDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LWZhbWlseTogR2VvcmdpYSwgQ29uc29sYXMsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXNpZGVfX2gzIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgMjBweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlX19saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxMHB4IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXNpZGVfX2l0ZW0ge1xuICBoZWlnaHQ6IDMycHg7XG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICBwYWRkaW5nOiAwIDMwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgIC1tcy1mbGV4OiAxO1xuICAgICAgICAgIGZsZXg6IDE7XG59XG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfX21haW46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY2Njtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19fbWFpbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX19wbGFjZWhvbGRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2ZmZjtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmsge1xuICBjb2xvcjogI2RkZDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6dmlzaXRlZCB7XG4gIGNvbG9yOiAjZGRkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjZGRkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19hY3RpdmUub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfYWN0aXZlLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX2FjdGl2ZS5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5tYWluX19oZWFkZXIsXG4ubWFpbl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDFlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1haW5fX2gxIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmctdG9wOiAxZW07XG4gIGZvbnQtc2l6ZTogNWVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1haW5fX25hbWUge1xuICBjb2xvcjogIzUwN2FmZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cbi5tYWluX190YWdsaW5lIHtcbiAgbWFyZ2luOiAxZW0gYXV0bztcbiAgbWF4LXdpZHRoOiA5NjBweDtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBmb250LXNpemU6IDJlbTtcbiAgY29sb3I6ICM5OTk7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWFpbl9fY2RuIHtcbiAgbWFyZ2luOiAyZW0gMDtcbiAgcGFkZGluZzogMmVtO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNTAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWFpbl9fZG93bmxvYWQge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICB3aWR0aDogMjAwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tYWluX19idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcGFkZGluZzogMTRweCAyOXB4O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tYWluX19idXR0b246bGluayxcbi5tYWluX19idXR0b246dmlzaXRlZCxcbi5tYWluX19idXR0b246aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLm1haW5fX2Zvb3RlciB7XG4gIG1hcmdpbjogMCAzZW07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb24ge1xuICBtYXJnaW46IDFlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2hlYWRlcixcbi5zZWN0aW9uX19jb250ZW50LFxuLnNlY3Rpb25fX2Zvb3RlciB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAzZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fdGl0bGUge1xuICBjb2xvcjogIzY2Njtcbn1cbi5zZWN0aW9uX19oMyB7XG4gIGNvbG9yOiAjNTA3YWZlO1xuICBmb250LXNpemU6IDEuMzVlbTtcbn1cbi5zZWN0aW9uX19oNCB7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGNvbG9yOiAjNjY2O1xufVxuLnNlY3Rpb25fX2g1IHtcbiAgZm9udC1zaXplOiAxZW07XG4gIGNvbG9yOiAjOTk5O1xufVxuLnNlY3Rpb25fX2RsLFxuLnNlY3Rpb25fX2R0LFxuLnNlY3Rpb25fX2RkIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2RsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuLnNlY3Rpb25fX2R0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLnNlY3Rpb25fX2RkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5zZWN0aW9uX19wcmUge1xuICBtYXJnaW46IDJlbSAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLnNlY3Rpb25fX2NvZGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIG1hcmdpbi10b3A6IDNlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgY29sb3I6ICM5OTk7XG59XG4uc2VjdGlvbl9fdGFibGUge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG59XG4uc2VjdGlvbl9fdGgsXG4uc2VjdGlvbl9fdGQge1xuICBwYWRkaW5nOiA1cHggMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb25fX3RoIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5zZWN0aW9uX19oZWFkZXIsXG4gIC5zZWN0aW9uX19jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwIDFlbTtcbiAgfVxufVxuLmNhc2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogNDBweDtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAwO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fcHJlLFxuLmNhc2VfX3RleHRhcmVhIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbn1cbi5jYXNlX19wcmUsXG4uY2FzZV9fY29kZSxcbi5jYXNlX190ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG4uY2FzZV9fcHJlIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uY2FzZV9fdG9vbGJhciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fYWN0aW9uLFxuLmNhc2VfX3JlbW92ZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uY2FzZV9fYWN0aW9uIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY2FzZV9fYWN0aW9uOmZpcnN0LWNoaWxkIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuLmNhc2VfX3JlbW92ZSB7XG4gIGZsb2F0OiByaWdodDtcbn1cbi5jYXNlX19jb25zb2xlIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogMTgwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fdGV4dGFyZWEge1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAxZW07XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jYXNlX19saXN0LFxuLmNhc2VfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX19saXN0IHtcbiAgaGVpZ2h0OiAzNjBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLmNhc2VfX2l0ZW0ge1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDAgMTZweDtcbn1cbi5jYXNlX19pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbn1cbjpyb290IHtcbiAgLS1vdXRsaW5lLXpJbmRleDogMjAwMDtcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcbn1cbi8qID09PT09PT09PT0gY29sb3JzLnRoZW1lIC0g5Z+656GA6aKc6Imy5Y+Y6YeP6ZuG5ZCIID09PT09PT09PT0gKi9cbi8qKlxuICogZWxsaXBzaXMubGVzcyAtIOaWh+acrOecgeeVpSBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyoqXG4gKiBzaGFkb3cubGVzcyAtIOmYtOW9seagt+W8j+iuvue9riBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4yMFxuICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09PT09PSBpY29uLnRoZW1lIC0gc3ZnIOWbvuagh+eahOagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9fc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtaGVhZGluZzpob3ZlciAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0OmhvdmVyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0IC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgbGVmdDogLTFlbTtcbn1cbi5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogLTE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19tb2RhbCB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjE7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzO1xuICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDUycHg7XG4gIGxpbmUtaGVpZ2h0OiA1MnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjOTk5O1xuICBmb250LXNpemU6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fbWFpbiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19vdmVybGF5IHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvcGFjaXR5OiAwLjE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICB3aWR0aDogMjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21pbmkge1xuICB3aWR0aDogNDgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3NtYWxsLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9zbWFsbCB7XG4gIHdpZHRoOiA1NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIHdpZHRoOiA2ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICB3aWR0aDogNzIwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX2xhcmdlLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9sYXJnZSB7XG4gIHdpZHRoOiA5NjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTczMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTI5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC02OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yixcbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueSB7XG4gIGhlaWdodDogMjQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21pbmkge1xuICBoZWlnaHQ6IDMyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICBoZWlnaHQ6IDM2MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyIHtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICBoZWlnaHQ6IDQ0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICBoZWlnaHQ6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB0b3A6IGluaXRpYWw7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xuICB0b3A6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3J0bCB7XG4gIHJpZ2h0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBsZWZ0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl90dGIge1xuICB0b3A6IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIGJvdHRvbTogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfcnRsLFxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xufVxuLm91dGxpbmUtZHJhd2VyX2Z1bGwge1xuICBwYWRkaW5nOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IHZhcigtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGgpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzLXBhcmVudCB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIG1hcmdpbjogMCAxNnB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2xpc3QsXG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0IHtcbiAgcGFkZGluZzogMC41ZW0gMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19zdWJqZWN0IHtcbiAgcGFkZGluZy1sZWZ0OiAxZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIG1hcmdpbjogMDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19wbGFjZWhvbGRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmOGY5O1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMwNTg5NDI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAgMS41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzU1NTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19jb2RlIHtcbiAgcGFkZGluZy1yaWdodDogMC41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5LFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcbiAgdG9wOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7XG4gICAgICBmbGV4LXNocmluazogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgIC1tcy1mbGV4OiAxO1xuICAgICAgICAgIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZvbGRlZCB7XG4gIHdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLyoqXG4gKiBtaXhpbnMubGVzcyAtIOW3peWFt+WHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTFcbiAqL1xuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cbi8qID09PT09PSDlnIbop5LmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcud3JhcHBlci5wb3N0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogM2VtIDRlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgc2Nyb2xsLXRpbWVsaW5lLW5hbWU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDM7XG4gIGhlaWdodDogNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbiAgc2NhbGU6IDAgMTtcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gICAgICAgICAgYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMztcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAyMnB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA4cHggI2RkZDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgOHB4ICNkZGQ7XG4gIGNvbG9yOiAjOTk5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXIgaDEsXG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBmb250LXNpemU6IDMuNWVtO1xufVxuQC13ZWJraXQta2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xuICB0byB7XG4gICAgc2NhbGU6IDEgMTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcGFkZGluZzogMCAxLjI1ZW07XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gIH1cbn1cbkBtZWRpYSBwcmludCB7XG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBoMSxcbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlciBoMSxcbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX19jbG9zZSxcbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX19wcm9ncmVzcyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBwcmUge1xuICAgIHBhZGRpbmc6IDFlbSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlLFxuICAub3V0bGluZS1yZWFkZXIgY29kZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciB0YWJsZSxcbiAgLm91dGxpbmUtcmVhZGVyIGltZyxcbiAgLm91dGxpbmUtcmVhZGVyIHN2ZyB7XG4gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAtbW96LWNvbHVtbi1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXJfc2libGluZyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4vKiA9PT09PT09PT09IGJ1dHRvbnMudGhlbWUgLSDmjInpkq7lr7zoiKrmoLflvI8gPT09PT09PT09PSAqL1xuLm91dGxpbmUtdG9vbGJhciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTk7XG4gIG1hcmdpbjogMDtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDEwcHg7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzk5OTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICBib3JkZXItY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24uaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9faWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcm91bmRlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIGNvbG9yOiAjOTk5O1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbms6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZDpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXI6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIsXG4ub3V0bGluZS10b29sYmFyX2J0dCB7XG4gIGxlZnQ6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9idHQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIge1xuICB0b3A6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX3R0Yi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgdG9wOiAtNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYnR0IHtcbiAgYm90dG9tOiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9idHQub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGJvdHRvbTogLTU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bCxcbi5vdXRsaW5lLXRvb2xiYXJfbHRyIHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB3aWR0aDogNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsIHtcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIHJpZ2h0OiAtODZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfbHRyIHtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX2x0ci5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgbGVmdDogLTg2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfcnRsIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9idHQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX2x0ciAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKipcbiAqIGZvbnQubGVzcyAtIOWtl+S9k+ebuOWFs+agt+W8j1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTZcbiAqL1xuLyogPT09PT09IOWtl+S9kyA9PT09PT0gKi9cbi8qID09PT09PSDlrZfph40gPT09PT09ICovXG4vKiA9PT09PT0g5a2X5Y+3ID09PT09PSAqL1xuLm91dGxpbmUtbWVzc2FnZSB7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTtcbiAgb3BhY2l0eTogMC4xO1xuICB0b3A6IC01MHB4O1xuICBsZWZ0OiA1MCU7XG4gIGhlaWdodDogNDBweDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDUwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjNjY2O1xuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2UtaW4tb3V0O1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY29udGVudCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtYXJnaW46IDA7XG4gIG1heC13aWR0aDogNzAwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSxcbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBsZWZ0OiAwO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlIHtcbiAgcmlnaHQ6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjVkNWQ7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTBweDtcbiAgcGFkZGluZzogMCA1MHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2luZm8ge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICM1MDdhZmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2Y4ZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY5OTAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmYmU2O1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzA1ODk0MjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZjZlYjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY1ZDVkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMWYwO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgd2lkdGg6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0IHtcbiAgbWluLXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHRvcDogMTBweDtcbiAgbGVmdDogMTBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0Lm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAyMHB4IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTVweDtcbiAgcGFkZGluZzogMCA0MHB4IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMTVweDtcbiAgcGFkZGluZzogMCAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgNTBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDIzMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCAxNXB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMjEwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3Zpc2libGUge1xuICBvcGFjaXR5OiAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDdweDtcbiAgaGVpZ2h0OiA3cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGY4O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THp4cGJuQjFkQ0JqYzNNZ01UNGlMQ0p1YjNKdFlXeHBlbVV1YkdWemN5SXNJbUpoYzJVdWJHVnpjeUlzSW5OamNtOXNiR0poY2k1c1pYTnpJaXdpYkdGNWIzVjBMbXhsYzNNaUxDSmhjMmxrWlM1c1pYTnpJaXdpYldGcGJpNXNaWE56SWl3aWMyVmpkR2x2Ymk1c1pYTnpJaXdpWTJGelpTNXNaWE56SWl3aUxpNHZMaTR2ZEdobGJXVXZkbUZ5YVdGaWJHVnpMbXhsYzNNaUxDSXVMaTh1TGk5MGFHVnRaUzlwWTI5dWN5NXNaWE56SWl3aUxpNHZMaTR2ZEdobGJXVXZZVzVqYUc5eWN5NXNaWE56SWl3aUxpNHZMaTR2ZEdobGJXVXZaSEpoZDJWeUxteGxjM01pTENJdUxpOHVMaTkwYUdWdFpTOXRhWGhwYm5NdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwyTm9ZWEIwWlhKekxteGxjM01pTENJdUxpOHVMaTkwYUdWdFpTOXlaV0ZrWlhJdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwzUnZiMnhpWVhJdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwyMWxjM05oWjJVdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwzTmpjbTlzYkdKaGNpNXNaWE56SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxEUkZRVUUwUlR0QlFVTTFSVHRuUmtGRFowWTdRVUZEYUVZN096dEhRVWRITzBGRFNVZzdSVUZEUlN4clFrRkJRVHRGUkVaQkxFOUJRVTg3UlVOSFVDd3JRa0ZCUVR0RlJFUkJMRTlCUVU4N1EwRkRVanRCUVVORU8yZEdRVU5uUmp0QlFVTm9SanM3UjBGRlJ6dEJRMHRJTzBWQlEwVXNWVUZCUVR0RFJFaEVPMEZCUTBRN08wZEJSVWM3UVVOUFNEdEZRVU5GTEdWQlFVRTdRMFJNUkR0QlFVTkVPenM3UjBGSFJ6dEJRMU5JTzBWQlEwVXNaVUZCUVR0RlFVTkJMR2xDUVVGQk8wTkVVRVE3UVVGRFJEdG5Sa0ZEWjBZN1FVRkRhRVk3T3p0SFFVZEhPMEZEV1VnN1JVRkRSU3huUTBGQlFUdFZRVUZCTEhkQ1FVRkJPMFZFVmtFc1QwRkJUenRGUTFkUUxGVkJRVUU3UlVSVVFTeFBRVUZQTzBWRFZWQXNhMEpCUVVFN1JVUlNRU3hQUVVGUE8wTkJRMUk3UVVGRFJEczdPMGRCUjBjN1FVTlhTRHRGUVVORkxHdERRVUZCTzBWRVZFRXNUMEZCVHp0RlExVlFMR1ZCUVVFN1JVUlNRU3hQUVVGUE8wTkJRMUk3UVVGRFJEdG5Sa0ZEWjBZN1FVRkRhRVk3TzBkQlJVYzdRVU5aU0R0RlFVTkZMRGhDUVVGQk8wTkVWa1E3UVVGRFJEczdPMGRCUjBjN1FVTmpTRHRGUVVORkxHOUNRVUZCTzBWRVdrRXNUMEZCVHp0RlEyRlFMREpDUVVGQk8wVkVXRUVzVDBGQlR6dEZRMWxRTERCRFFVRkJPMVZCUVVFc2EwTkJRVUU3UlVSV1FTeFBRVUZQTzBOQlExSTdRVUZEUkRzN1IwRkZSenRCUTJGSU96dEZRVVZGTEc5Q1FVRkJPME5FV0VRN1FVRkRSRHM3TzBkQlIwYzdRVU5sU0RzN08wVkJSMFVzYTBOQlFVRTdSVVJpUVN4UFFVRlBPMFZEWTFBc1pVRkJRVHRGUkZwQkxFOUJRVTg3UTBGRFVqdEJRVU5FT3p0SFFVVkhPMEZEWlVnN1JVRkRSU3hsUVVGQk8wTkVZa1E3UVVGRFJEczdPMGRCUjBjN1FVTnBRa2c3TzBWQlJVVXNaVUZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEhsQ1FVRkJPME5FWmtRN1FVTnJRa1E3UlVGRFJTeG5Ra0ZCUVR0RFJHaENSRHRCUTIxQ1JEdEZRVU5GTEZsQlFVRTdRMFJxUWtRN1FVRkRSRHRuUmtGRFowWTdRVUZEYUVZN08wZEJSVWM3UVVOelFrZzdSVUZEUlN4dFFrRkJRVHREUkhCQ1JEdEJRVU5FTzJkR1FVTm5SanRCUVVOb1JqczdPMGRCUjBjN1FVTjVRa2c3T3pzN08wVkJTMFVzY1VKQlFVRTdSVVIyUWtFc1QwRkJUenRGUTNkQ1VDeG5Ra0ZCUVR0RlJIUkNRU3hQUVVGUE8wVkRkVUpRTEd0Q1FVRkJPMFZFY2tKQkxFOUJRVTg3UlVOelFsQXNWVUZCUVR0RlJIQkNRU3hQUVVGUE8wTkJRMUk3UVVGRFJEczdPMGRCUjBjN1FVTjFRa2c3TzBWRWNFSkZMRTlCUVU4N1JVTjFRbEFzYTBKQlFVRTdRMFJ5UWtRN1FVRkRSRHM3TzBkQlIwYzdRVU41UWtnN08wVkVkRUpGTEU5QlFVODdSVU41UWxBc2NVSkJRVUU3UTBSMlFrUTdRVUZEUkRzN1IwRkZSenRCUXpKQ1NEczdPenRGUVVsRkxESkNRVUZCTzBORWVrSkVPMEZCUTBRN08wZEJSVWM3UVVNMlFrZzdPenM3UlVGSlJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1EwUXpRa1E3UVVGRFJEczdSMEZGUnp0QlF5dENTRHM3T3p0RlFVbEZMQ3RDUVVGQk8wTkVOMEpFTzBGQlEwUTdPMGRCUlVjN1FVTnBRMGc3UlVGRFJTd3JRa0ZCUVR0RFJDOUNSRHRCUVVORU96czdPenRIUVV0SE8wRkRiVU5JTzBWQlEwVXNLMEpCUVVFN1ZVRkJRU3gxUWtGQlFUdEZSR3BEUVN4UFFVRlBPMFZEYTBOUUxHVkJRVUU3UlVSb1EwRXNUMEZCVHp0RlEybERVQ3hsUVVGQk8wVkVMMEpCTEU5QlFVODdSVU5uUTFBc1owSkJRVUU3UlVRNVFrRXNUMEZCVHp0RlF5dENVQ3hYUVVGQk8wVkVOMEpCTEU5QlFVODdSVU00UWxBc2IwSkJRVUU3UlVRMVFrRXNUMEZCVHp0RFFVTlNPMEZCUTBRN08wZEJSVWM3UVVNclFrZzdSVUZEUlN4NVFrRkJRVHREUkRkQ1JEdEJRVU5FT3p0SFFVVkhPMEZEYVVOSU8wVkJRMFVzWlVGQlFUdERSQzlDUkR0QlFVTkVPenM3UjBGSFJ6dEJRMjFEU0RzN1JVRkZSU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZFYWtOQkxFOUJRVTg3UlVOclExQXNWMEZCUVR0RlJHaERRU3hQUVVGUE8wTkJRMUk3UVVGRFJEczdSMEZGUnp0QlEyMURTRHM3UlVGRlJTeGhRVUZCTzBORWFrTkVPMEZCUTBRN096dEhRVWRITzBGRGNVTklPMFZCUTBVc09FSkJRVUU3UlVSdVEwRXNUMEZCVHp0RlEyOURVQ3h4UWtGQlFUdEZSR3hEUVN4UFFVRlBPME5CUTFJN1FVRkRSRHM3UjBGRlJ6dEJRM0ZEU0R0RlFVTkZMSGxDUVVGQk8wTkVia05FTzBGQlEwUTdPenRIUVVkSE8wRkRkVU5JTzBWQlEwVXNNa0pCUVVFN1JVUnlRMEVzVDBGQlR6dEZRM05EVUN4alFVRkJPMFZFY0VOQkxFOUJRVTg3UTBGRFVqdEJRVU5FTzJkR1FVTm5SanRCUVVOb1JqczdSMEZGUnp0QlEzZERTRHRGUVVORkxHVkJRVUU3UTBSMFEwUTdRVUZEUkRzN1IwRkZSenRCUXpCRFNEdEZRVU5GTEcxQ1FVRkJPME5FZUVORU8wRkJRMFE3WjBaQlEyZEdPMEZCUTJoR096dEhRVVZITzBGRE5rTklPMFZCUTBVc1kwRkJRVHREUkRORFJEdEJRVU5FT3p0SFFVVkhPMEZESzBOSU8wVkJRMFVzWTBGQlFUdERSRGREUkR0QlFVTkVMSE5DUVVGelFqdEJSVGxUZEVJN08wVkJSVVVzWVVGQlFUdEZRVU5CTEc5Q1FVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNhMEpCUVVFN1JVRkRRU3h4UkVGQlFUdEZRVU5CTEdsQ1FVRkJPME5HWjFSRU8wRkZOVk5ET3pzN1JVRkhSU3hsUVVGQk8wVkJRMEVzYzBKQlFVRTdRMFk0VTBnN1FVVXpVME03UlVGRFJTd3lRa0ZCUVR0RFJqWlRTRHRCUlhwVFJEdEZRVU5GTEhkR1FVRkJPME5HTWxORU8wRkJRMFFzTWtKQlFUSkNPMEZIZGxVelFqdEZRVU5GTEZkQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc01rSkJRVUU3UTBoNVZVUTdRVWQwVlVRN1JVRkRSU3d5UWtGQlFUdERTSGRWUkR0QlIzSlZSRHRGUVVORkxITkRRVUZCTzBWQlEwRXNNa0pCUVVFN1EwaDFWVVE3UVVkd1ZVUTdSVUZEUlN4elEwRkJRVHRGUVVOQkxESkNRVUZCTzBOSWMxVkVPMEZIYmxWRU8wVkJRMFVzYzBOQlFVRTdRMGh4VlVRN1FVZHNWVVE3UlVGRFJTeHpRMEZCUVR0RFNHOVZSRHRCUVVORUxGbEJRVms3UVVrMVZsbzdSVUZEUlN4eFFrRkJRVHRGUVVGQkxIRkNRVUZCTzBWQlFVRXNZMEZCUVR0RlFVTkJMQ3RDUVVGQk8wVkJRVUVzT0VKQlFVRTdUVUZCUVN4M1FrRkJRVHRWUVVGQkxHOUNRVUZCTzBWQlEwRXNjMEpCUVVFN1RVRkJRU3hyUWtGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMR2xDUVVGQk8wTktPRlpFTzBGQlEwUXNWMEZCVnp0QlNUTldXRHRGUVVORkxIRkNRVUZCTzBWQlFVRXNjVUpCUVVFN1JVRkJRU3hqUVVGQk8wVkJRMEVzY1VKQlFVRTdUVUZCUVN4bFFVRkJPMFZCUTBFc05rSkJRVUU3UlVGQlFTdzRRa0ZCUVR0TlFVRkJMREpDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN4elFrRkJRVHROUVVGQkxHdENRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc2NVTkJRVUU3VlVGQlFTdzJRa0ZCUVR0RlFVTkJMR3REUVVGQk8xVkJRVUVzTUVKQlFVRTdSVUZEUVN4bFFVRkJPME5LTmxaRU8wRkJRMFFzVlVGQlZUdEJTVEZXVmp0RlFVTkZMRzlDUVVGQk8wMUJRVUVzV1VGQlFUdFZRVUZCTEZGQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3hsUVVGQk8wTktORlpFTzBGTGFGbEVPMFZCUTBVc2QwWkJRVUU3UTB4cldVUTdRVXN2V0VNN1JVRkRSU3hsUVVGQk8wVkJRMEVzY1VKQlFVRTdUVUZCUVN4bFFVRkJPMFZCUTBFc2FVSkJRVUU3UTB4cFdVZzdRVXM1V0VNN1JVRkRSU3h2UWtGQlFUdE5RVUZCTEZsQlFVRTdWVUZCUVN4UlFVRkJPMFZCUTBFc1pVRkJRVHREVEdkWlNEdEJTemRZUXp0RlFVTkZMR1ZCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHOUNRVUZCTzBWQlEwRXNhMFJCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5NSzFoSU8wRkxOVmhETzBWQlEwVXNaVUZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4cFFrRkJRVHREVERoWVNEdEJTek5ZUXp0RlFVTkZMRlZCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5NTmxoSU8wRkxNVmhETzBWQlEwVXNZVUZCUVR0RlFVTkJMR3RDUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNhVUpCUVVFN1EwdzBXRWc3UVV0NllVUTdSVUZwUkVrc2IwSkJRVUU3VFVGQlFTeFpRVUZCTzFWQlFVRXNVVUZCUVR0RFRESllTRHRCUzNoWVN6dEZRVU5GTEhWQ1FVRkJPME5NTUZoUU8wRkxlRmhQTzBWQlEwVXNkVUpCUVVFN1Ewd3dXRlE3UVV0eVdFYzdSVUZEUlN4MVFrRkJRVHRGUVVOQkxEUkNRVUZCTzBOTWRWaE1PMEZMYmxoTE8wVkJRMFVzV1VGQlFUdEZRVU5CTEhOQ1FVRkJPME5NY1ZoUU8wRkxiRmhMTzBWQlEwVXNXVUZCUVR0RlFVTkJMSE5DUVVGQk8wTk1iMWhRTzBGTGFsaExPMFZCUTBVc1dVRkJRVHRGUVVOQkxESkNRVUZCTzBOTWJWaFFPMEZMTjFkUE96czdSVUZIUlN4WlFVRkJPME5NSzFkVU8wRk5kR05ET3p0RlFVVkZMR1ZCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVG5kalNEdEJUWEpqUXp0RlFVTkZMR1ZCUVVFN1JVRkRRU3hwUWtGQlFUdEZRVU5CTEdWQlFVRTdSVUZEUVN4dlFrRkJRVHRGUVVOQkxHbENRVUZCTzBWQlEwRXNhVUpCUVVFN1EwNTFZMGc3UVUxd1kwTTdSVUZEUlN4bFFVRkJPMFZCUTBFc2IwSkJRVUU3UTA1elkwZzdRVTF1WTBNN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEdsQ1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeGxRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR2xDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMDV4WTBnN1FVMXNZME03UlVGRFJTeGpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxEQkNRVUZCTzBWQlEwRXNNa0pCUVVFN1JVRkRRU3c0UWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4cFFrRkJRVHREVG05alNEdEJUV3BqUXp0RlFVTkZMR2xDUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTA1dFkwZzdRVTFvWTBNN1JVRkRSU3h6UWtGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMSGRHUVVGQk8wVkJSVUVzTUVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVG1salNEdEJUUzlpUnpzN08wVkJSMFVzV1VGQlFUdEZRVU5CTEhOQ1FVRkJPME5PYVdOTU8wRk5OMkpETzBWQlEwVXNZMEZCUVR0RlFVTkJMREpDUVVGQk8wTk9LMkpJTzBGUGVHZENSRHRGUVVORkxHTkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFVEQm5Ra1E3UVU5NFowSkRPenM3UlVGSFJTeFZRVUZCTzBWQlEwRXNaVUZCUVR0RlFVTkJMR2xDUVVGQk8wTlFNR2RDU0R0QlQzWm5Ra003UlVGRFJTeFpRVUZCTzBOUWVXZENTRHRCVDNSblFrTTdSVUZEUlN4bFFVRkJPMFZCUTBFc2EwSkJRVUU3UTFCM1owSklPMEZQY21kQ1F6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc1dVRkJRVHREVUhWblFrZzdRVTl3WjBKRE8wVkJRMFVzWlVGQlFUdEZRVU5CTEZsQlFVRTdRMUJ6WjBKSU8wRlBibWRDUXpzN08wVkJSMFVzVlVGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4cFFrRkJRVHREVUhGblFrZzdRVTlzWjBKRE8wVkJRMFVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPME5RYjJkQ1NEdEJUMnBuUWtNN1JVRkRSU3h6UWtGQlFUdERVRzFuUWtnN1FVOW9aMEpETzBWQlEwVXNjMEpCUVVFN1JVRkRRU3hsUVVGQk8wTlFhMmRDU0R0QlR5OW1RenRGUVVORkxHTkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTEdsQ1FVRkJPMFZCUTBFc01FSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEdWQlFVRTdRMUJwWjBKSU8wRlBPV1pETzBWQlEwVXNaVUZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3hwUWtGQlFUdERVR2RuUWtnN1FVODNaa003UlVGRFJTd3lRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzTUVKQlFVRTdSVUZEUVN4WlFVRkJPME5RSzJaSU8wRlBOV1pETzBWQlEwVXNhVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzTWtKQlFVRTdRMUE0WmtnN1FVOHpaa003TzBWQlJVVXNhMEpCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTERoQ1FVRkJPME5RTm1aSU8wRlBNV1pETzBWQlEwVXNiVUpCUVVFN1JVRkRRU3d3UWtGQlFUdERVRFJtU0R0QlQzaG1SRHRGUVVWSk96dEpRVVZGTEdWQlFVRTdSMUI1WmtnN1EwRkRSanRCVVdodFFrUTdSVUZEUlN4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeGpRVUZCTzBWQlEwRXNjME5CUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTERKQ1FVRkJPMFZCUTBFc09FSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFVtdHRRa1E3UVZGb2JVSkRPMFZCUTBVc1dVRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMRTlCUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEZOQlFVRTdSVUZEUVN3MFFrRkJRVHRGUVVOQkxHbENRVUZCTzBOU2EyMUNTRHRCVVM5c1FrTTdPMFZCUlVVc1owSkJRVUU3UlVGRFFTeHJRa0ZCUVR0RFVtbHRRa2c3UVZFNWJFSkRPenM3UlVGSFJTeHBSVUZCUVR0RFVtZHRRa2c3UVZFM2JFSkRPMFZCUTBVc1ZVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTd3dRa0ZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEN0Q1FVRkJPMVZCUVVFc2RVSkJRVUU3UlVGRFFTeGxRVUZCTzBOU0syeENTRHRCVVRWc1FrTTdSVUZEUlN4bFFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxHdENRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEd0Q1FVRkJPMFZCUTBFc2FVSkJRVUU3UTFJNGJFSklPMEZSTTJ4Q1F6czdSVUZGUlN4blFrRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTd3dRa0ZCUVR0TFFVRkJMSFZDUVVGQk8wMUJRVUVzYzBKQlFVRTdWVUZCUVN4clFrRkJRVHREVWpac1FrZzdRVkV4YkVKRE8wVkJRMFVzWjBKQlFVRTdSVUZEUVN4dFFrRkJRVHREVWpSc1FrZzdRVkV4YkVKSE8wVkJRMFVzWjBKQlFVRTdRMUkwYkVKTU8wRlJlR3hDUXp0RlFVTkZMR0ZCUVVFN1ExSXdiRUpJTzBGUmRteENRenRGUVVORkxHVkJRVUU3UlVGRFFTeGpRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3hwUWtGQlFUdERVbmxzUWtnN1FWRjBiRUpETzBWQlEwVXNaVUZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEdOQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc0swSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RlFVTkJMR1ZCUVVFN1ExSjNiRUpJTzBGUmNteENRenM3UlVGRlJTeFZRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMSE5DUVVGQk8wVkJRMEVzYVVKQlFVRTdRMUoxYkVKSU8wRlJjR3hDUXp0RlFVTkZMR05CUVVFN1JVRkRRU3d5UWtGQlFUdEZRVU5CTERoQ1FVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeGxRVUZCTzBOU2MyeENTRHRCVVc1c1FrTTdSVUZEUlN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMR2RDUVVGQk8wTlNjV3hDU0R0QlVXNXNRa2M3UlVGRFJTd3dRa0ZCUVR0RFVuRnNRa3c3UVZNemMwSkVPMFZCUTBNc2RVSkJRVUU3UlVGRFJDdzRRa0ZCUVR0RlFVRnBReXdyUWtGQlFUdERWRGh6UW1oRE8wRkJRMFFzYlVSQlFXMUVPMEZCUTI1RU96czdPenRIUVV0SE8wRkJRMGdzTUVKQlFUQkNPMEZCUXpGQ096czdPenRIUVV0SE8wRkJRMGdzTkVKQlFUUkNPMEZCUXpWQ0xHdEVRVUZyUkR0QlZXaDFRa003UlVGRmJrUXNiVUpCUVVFN1JVRkJjMElzVjBGQlFUdEZRVU5VTEhOQ1FVRkJPMFZCUTFVc2RVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEySXNXVUZCUVR0RlFVTkJMR2xDUVVGQk8wTldhM1ZDVkR0QlZXcDFRbU03UlVGRlZpeHRRa0ZCUVR0RlFVTlpMRmRCUVVFN1JVRkRWQ3hUUVVGQk8wVkJRMGdzVlVGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFRTeDVRMEZCUVR0VlFVRkJMR2xEUVVGQk8wVkJRMkVzYVVKQlFVRTdRMVpyZFVKMlFqdEJWV3AxUWxNN1JVRkRVaXhqUVVGQk8wTldiWFZDUkR0QlYzSjJRa1E3UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hwUWtGQlFUdERXSFYyUWtRN1FWZHlka0pETzBWQlEwVXNZMEZCUVR0RFdIVjJRa2c3UVZkeWRrSkhPenM3UlVGSFJTeFpRVUZCTzBWQlEwRXNjMEpCUVVFN1ExaDFka0pNTzBGWGNIWkNSenRGUVVORkxHVkJRVUU3UTFoemRrSk1PMEZYYkhaQ1F6dEZRVVZKTEhOQ1FVRkJPME5ZYlhaQ1REdEJWemwxUWtjN1JVRkRSU3hyUWtGQlFUdERXR2QyUWt3N1FWZHNka0pETzBWQlRVa3NiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVTBGQlFUdEZRVU5CTEc5RFFVRkJPMVZCUVVFc05FSkJRVUU3UlVGRFFTeFhRVUZCTzBOWUszVkNURHRCV1dwNFFrUTdSVUZEUlN4dFFrRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeFBRVUZCTzBWQlEwRXNVVUZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEN0Q1FVRkJPMVZCUVVFc2RVSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTmFiWGhDUkR0QldXcDRRa003UlVNMlEwVXNkME5CUVVFN1ZVRkJRU3huUTBGQlFUdEZSRE5EUVN4eFFrRkJRVHRGUVVGQkxIRkNRVUZCTzBWQlFVRXNZMEZCUVR0RlFVTkJMRFpDUVVGQk8wVkJRVUVzT0VKQlFVRTdUVUZCUVN3eVFrRkJRVHRWUVVGQkxIVkNRVUZCTzBWQlEwRXNjMEpCUVVFN1RVRkJRU3hyUWtGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeDFRa0ZCUVR0RlFVTkJMR3REUVVGQk8xVkJRVUVzTUVKQlFVRTdSVUZEUVN4cFFrRkJRVHREV20xNFFrZzdRVmxvZUVKRE96czdSVUZIUlN4WlFVRkJPMFZCUTBFc0swSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RFdtdDRRa2c3UVZrdmQwSkRPenRGUVVWRkxIRkNRVUZCTzAxQlFVRXNaVUZCUVR0RFdtbDRRa2c3UVZrNWQwSkRPenM3UlVGSFJTeG5Ra0ZCUVR0RFdtZDRRa2c3UVZrM2QwSkRPenRGUVVWRkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4cFFrRkJRVHREV2l0M1FrZzdRVmsxZDBKRE8wVkJRMFVzWjBKQlFVRTdSVUZEUVN4cFFrRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTd3JRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wVkJRMEVzYVVOQlFVRTdRMW80ZDBKSU8wRlpNM2RDUXp0RlFVTkZMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZOQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeHZRMEZCUVR0VlFVRkJMRFJDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMW8yZDBKSU8wRlpNWGhDUXp0RlFXZENTU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4UFFVRkJPMFZCUTBFc1VVRkJRVHREV2paM1FrdzdRVmt4ZDBKSE8wVkJRMFVzV1VGQlFUdERXalIzUWt3N1FWbDRkMEpETzBWQlEwVXNiMEpCUVVFN1RVRkJRU3haUVVGQk8xVkJRVUVzVVVGQlFUdEZRVU5CTEdWQlFVRTdRMW93ZDBKSU8wRlpkbmRDUXp0RlFVTkZMR1ZCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5hZVhkQ1NEdEJXWFIzUWtNN1JVRkRSU3haUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1QwRkJRVHRGUVVOQkxGRkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMSFZDUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEdsQ1FVRkJPME5hZDNkQ1NEdEJXV3gzUWtzN08wVkJRMFVzWVVGQlFUdERXbkYzUWxBN1FWbHNkMEpMT3p0RlFVTkZMR0ZCUVVFN1ExcHhkMEpRTzBGWmJIZENTenM3UlVGRFJTeGhRVUZCTzBOYWNYZENVRHRCV1d4M1FrczdPMFZCUTBVc1lVRkJRVHREV25GM1FsQTdRVmxzZDBKTE96dEZRVU5GTEdGQlFVRTdRMXB4ZDBKUU8wRlpiSGRDU3pzN1JVRkRSU3hoUVVGQk8wTmFjWGRDVUR0QldXaDNRa003UlVGRFJTd3JRa0ZCUVR0RFdtdDNRa2c3UVZrNWRrSlBPMFZCUTBVc1kwRkJRVHREV21kM1FsUTdRVmt6ZGtKUE8wVkJRMFVzWTBGQlFUdERXaloyUWxRN1FWbDRka0pQTzBWQlEwVXNZMEZCUVR0RFdqQjJRbFE3UVZseWRrSlBPMFZCUTBVc1kwRkJRVHREV25WMlFsUTdRVmxzZGtKUE8wVkJRMFVzWTBGQlFUdERXbTkyUWxRN1FWa3ZkVUpQTzBWQlEwVXNZMEZCUVR0RFdtbDJRbFE3UVZremRVSkRPMFZCUTBVc1owTkJRVUU3UTFvMmRVSklPMEZaZW5WQ1R6dEZRVU5GTEdGQlFVRTdRMW95ZFVKVU8wRlpkSFZDVHp0RlFVTkZMR0ZCUVVFN1ExcDNkVUpVTzBGWmJuVkNUenRGUVVORkxHRkJRVUU3UTFweGRVSlVPMEZaYUhWQ1R6dEZRVU5GTEdGQlFVRTdRMXByZFVKVU8wRlpOM1JDVHp0RlFVTkZMR0ZCUVVFN1Exb3JkRUpVTzBGWk1YUkNUenRGUVVORkxHRkJRVUU3UTFvMGRFSlVPMEZaZEhSQ1F6czdSVUZGUlN4UlFVRkJPMFZCUTBFc1dVRkJRVHREV25kMFFrZzdRVmx5ZEVKTE96dEZRVU5GTEdOQlFVRTdRMXAzZEVKUU8wRlpjblJDU3pzN1JVRkRSU3hqUVVGQk8wTmFkM1JDVUR0QldYSjBRa3M3TzBWQlEwVXNZMEZCUVR0RFduZDBRbEE3UVZseWRFSkxPenRGUVVORkxHTkJRVUU3UTFwM2RFSlFPMEZaY25SQ1N6czdSVUZEUlN4alFVRkJPME5hZDNSQ1VEdEJXWEowUWtzN08wVkJRMFVzWTBGQlFUdERXbmQwUWxBN1FWbHVkRUpETzBWQlEwVXNhVU5CUVVFN1ExcHhkRUpJTzBGWmFuUkNUenRGUVVORkxGbEJRVUU3UTFwdGRFSlVPMEZaT1hOQ1R6dEZRVU5GTEZsQlFVRTdRMXBuZEVKVU8wRlpNM05DVHp0RlFVTkZMRmxCUVVFN1ExbzJjMEpVTzBGWmVITkNUenRGUVVORkxGbEJRVUU3UTFvd2MwSlVPMEZaY25OQ1R6dEZRVU5GTEZsQlFVRTdRMXAxYzBKVU8wRlpiSE5DVHp0RlFVTkZMRmxCUVVFN1ExcHZjMEpVTzBGWk9YSkNRenRGUVVORkxHRkJRVUU3UlVGRFFTdzRRa0ZCUVR0RFdtZHpRa2c3UVZrMWNrSlBPMFZCUTBVc1pVRkJRVHREV2poeVFsUTdRVmw2Y2tKUE8wVkJRMFVzWlVGQlFUdERXakp5UWxRN1FWbDBja0pQTzBWQlEwVXNaVUZCUVR0RFduZHlRbFE3UVZsdWNrSlBPMFZCUTBVc1pVRkJRVHREV25GeVFsUTdRVmxvY2tKUE8wVkJRMFVzWlVGQlFUdERXbXR5UWxRN1FWazNjVUpQTzBWQlEwVXNaVUZCUVR0RFdpdHhRbFE3UVZsNmNVSkRPMFZCUTBVc2IwSkJRVUU3UlVGRFFTd3JRa0ZCUVR0RFdqSnhRa2c3UVZsNmNVSkhPMFZCUTBVc1owSkJRVUU3UTFveWNVSk1PMEZaZW5GQ1N6dEZRVU5GTEZOQlFVRTdRMW95Y1VKUU8wRlplSEZDU3p0RlFVTkZMRkZCUVVFN1Exb3djVUpRTzBGWmRuRkNTenRGUVVORkxFOUJRVUU3UTFwNWNVSlFPMEZaZEhGQ1N6dEZRVU5GTEZWQlFVRTdRMXAzY1VKUU8wRlphbkZDU3pzN1JVRkZSU3g1UWtGQlFUdEZRVU5CTEZOQlFVRTdSVUZEUVN4dlEwRkJRVHRWUVVGQkxEUkNRVUZCTzBOYWJYRkNVRHRCV1doeFFrczdPMFZCUlVVc2QwSkJRVUU3UlVGRFFTeFZRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdERXbXR4UWxBN1FWazNjRUpUTzBWQlEwVXNWMEZCUVR0RFdpdHdRbGc3UVZrMWNFSlRPMFZCUTBVc1ZVRkJRVHREV2pod1FsZzdRVmt6Y0VKVE8wVkJRMFVzVTBGQlFUdERXalp3UWxnN1FWa3hjRUpUTzBWQlEwVXNXVUZCUVR0RFdqUndRbGc3UVZsdWNFSkxPenRGUVVWRkxHRkJRVUU3UlVGRFFTdzJRa0ZCUVR0RFduRndRbEE3UVZsb2NFSkRPMFZCUTBVc1YwRkJRVHREV210d1FrZzdRV05zYWtORU8wVkJRMFVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1ZVRkJRVHRGUVVOQkxIRkRRVUZCTzBWQlEwRXNaVUZCUVR0RFpHOXFRMFE3UVdOc2FrTkRPMFZCUTBVc2NVTkJRVUU3UlVGQlFTdzJRa0ZCUVR0RFpHOXFRMGc3UVdOcWFrTkRPMFZCUTBVc1pVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYVVOQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHbENRVUZCTzBWQlEwRXNhVUpCUVVFN1EyUnRha05JTzBGamFHcERRenRGUVVORkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3hwUWtGQlFUdERaR3RxUTBnN1FXTXZhVU5ET3pzN1JVRkhSU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxITkNRVUZCTzBWQlEwRXNhVUpCUVVFN1EyUnBha05JTzBGak9XbERRenRGUVVORkxHbENRVUZCTzBOa1oycERTRHRCWXpkcFEwTTdSVUZEUlN4clFrRkJRVHREWkN0cFEwZzdRV00xYVVORE8wVkJRMFVzVlVGQlFUdEZRVU5CTEd0Q1FVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFpEaHBRMGc3UVdNemFVTkRPMFZCUTBVc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNUMEZCUVR0RlFVTkJMRkZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTERCQ1FVRkJPMFZCUTBFc0swSkJRVUU3UlVGRFFTeHJRMEZCUVR0VlFVRkJMREJDUVVGQk8wVkJRMEVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHRGUVVOQkxHbENRVUZCTzBOa05tbERTRHRCWXpGcFEwTTdSVVJvUlRSQ0xHOUNRVUZCTzBWQlEyWXNkMEpCUVVFN1JVRkRSeXhwUWtGQlFUdEZRMmRGWkN4bFFVRkJPMFZCUTBFc2FVSkJRVUU3UTJRNGFVTklPMEZqTldsRFJ6czdPMFZCUjBVc2MwSkJRVUU3UlVGRFFTeFpRVUZCTzBOa09HbERURHRCWXpOcFEwYzdSVUZEUlN4bFFVRkJPME5rTm1sRFREdEJZM3BwUTBNN1JVRkRSU3h4UWtGQlFUdERaREpwUTBnN1FXTjBhVU5MT3pzN1JVRkhSU3hsUVVGQk8wVkJRMEVzYTBKQlFVRTdRMlIzYVVOUU8wRmpibWxEUXpzN1JVRkZSU3h4UWtGQlFUdEZRVUZCTEhGQ1FVRkJPMFZCUVVFc1kwRkJRVHRGUVVOQkxITkNRVUZCTzAxQlFVRXNhMEpCUVVFN1JVRkRRU3cyUWtGQlFUdEZRVUZCTERoQ1FVRkJPMDFCUVVFc01rSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RlFVTkJMQ3RDUVVGQk8wVkJRMEVzVDBGQlFUdEZRVU5CTEdsQ1FVRkJPME5rY1dsRFNEdEJZMnhwUTBzN096czdSVUZGUlN3clFrRkJRVHRWUVVGQkxIVkNRVUZCTzBOa2MybERVRHRCWTI1cFEwczdPMFZCUTBVc2NVSkJRVUU3VFVGQlFTeGxRVUZCTzBOa2MybERVRHRCWTI1cFEwczdPMFZCUTBVc2IwSkJRVUU3VFVGQlFTeFpRVUZCTzFWQlFVRXNVVUZCUVR0RlFVTkJMR1ZCUVVFN1EyUnphVU5RTzBGamFtbERRenRGUVVORkxHbENRVUZCTzBWQlEwRXNlVU5CUVVFN1EyUnRhVU5JTzBGamFHbERRenRGUVVORkxHZENRVUZCTzBWQlEwRXNhVUpCUVVFN1EyUnJhVU5JTzBGakwyaERRenRGUVVORkxHTkJRVUU3UTJScGFVTklPMEZqT1doRFF6dEZRVU5GTEZOQlFVRTdSVUZEUVN4cFFrRkJRVHREWkdkcFEwZzdRVUZEUkRzN096czdSMEZMUnp0QlFVTklMREJDUVVFd1FqdEJRVU14UWl3MFFrRkJORUk3UVVGRE5VSXNORUpCUVRSQ08wRmxlSEpETVVJN1JVRkRSU3hqUVVGQk8wTm1NSEpEU0R0QlpYWnlRME03UlVGRFJTdzBRa0ZCUVR0RlFVTkJMRGhDUVVGQk8wVkJRMEVzY1VSQlFVRTdSVUZEUVN4dlFrRkJRVHRGUVVOQkxHbENRVUZCTzBObWVYSkRTRHRCWlhSeVEwTTdSVUZEUlN4NVFrRkJRVHREWm5keVEwZzdRV1YwY2tOSE8wVkJRMFVzZVVKQlFVRTdRMlozY2tOTU8wRmxjbkpEVHp0RlFVTkZMR05CUVVFN1EyWjFja05VTzBGbGFuSkRRenRGUVVORkxHVkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzVVVGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc1ZVRkJRVHRGUVVOQkxDdENRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPMFZCUTBFc2VVTkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFptMXlRMGc3UVdWb2NrTkxPMFZCUTBVc1owSkJRVUU3UlVGRFFTeFBRVUZCTzBWQlEwRXNVVUZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTERCQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxDdENRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3hyUkVGQlFUdFZRVUZCTERCRFFVRkJPMFZCUTBFc2RVTkJRVUU3UTJacmNrTlFPMEZsTDNGRFN6dEZSa05HTEhkRFFVRkJPMVZCUVVFc1owTkJRVUU3UlVWRFNTeGxRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVTBGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeHZRa0ZCUVR0RlFVTkJMREJDUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEdsRFFVRkJPMVZCUVVFc2VVSkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3hwUWtGQlFUdERabWx5UTFBN1FXVXZjVU5QTzBWQlEwVXNNRUpCUVVFN1JVRkRRU3haUVVGQk8wTm1hWEpEVkR0QlpYUjFRME03TzBWQk1rUk5MRFJDUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4cFFrRkJRVHREWml0eFExQTdRV1Y2Y1VORU8wVkJRMFU3U1VGRFJTeFhRVUZCTzBkbU1uRkRSRHREUVVOR08wRmxPWEZEUkR0RlFVTkZPMGxCUTBVc1YwRkJRVHRIWmpKeFEwUTdRMEZEUmp0QlpYaHhRMFE3UlVGRlNUdEpRVU5GTEd0Q1FVRkJPMGRtZVhGRFNEdEZaWFJ4UTBNN1NVRkRSU3gxUWtGQlFUdEpRVU5CTEdGQlFVRTdSMlozY1VOSU8wVmxjbkZEUXp0SlFVTkZMR1ZCUVVFN1IyWjFjVU5JTzBOQlEwWTdRV1Z1Y1VORU8wVkJRMFU3TzBsQlJVVXNNa0pCUVVFN1IyWnhjVU5FTzBWbGJIRkRSRHRKUVVORkxEQkNRVUZCTzBsQlEwRXNhVUpCUVVFN1IyWnZjVU5FTzBWbGRIRkRSRHM3U1VGTlNTeHBRMEZCUVR0SlFVTkJMRGhDUVVGQk8wbEJRMEVzTWtKQlFVRTdSMlp2Y1VOSU8wVmxhSEZEUnp0SlFVTkZMRGhDUVVGQk8wbEJRMEVzZDBKQlFVRTdTVUZEUVN4elFrRkJRVHRKUVVOQkxEUkNRVUZCTzBkbWEzRkRURHRGWlhaeFEwTTdPMGxCVlVrc2FVTkJRVUU3U1VGRFFTdzRRa0ZCUVR0SlFVTkJMREpDUVVGQk8wZG1hWEZEVER0RlpUbHdRMGM3TzBsQlJVVXNlVUpCUVVFN1IyWm5jVU5NTzBWbE5YSkRSRHRKUVdsRFNTeDNRa0ZCUVR0SlFVTkJMR3REUVVGQk8wbEJRMEVzT0VKQlFVRTdSMlk0Y0VOSU8wVmxhbk5EUkRzN1NVRjNRMGtzYTBOQlFVRTdSMlkyY0VOSU8wVmxjbk5EUkRzN08wbEJPRU5KTEcxRFFVRkJPMDlCUVVFc1owTkJRVUU3V1VGQlFTeHZRa0ZCUVR0SFpqUndRMGc3UldWNmNFTkRPMGxCUTBVc2VVSkJRVUU3UjJZeWNFTklPME5CUTBZN1FVRkRSQ3hyUkVGQmEwUTdRV2RDZWpCRGJFUTdSVUZEUlN4blFrRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTeFZRVUZCTzBWQlEwRXNhME5CUVVFN1ZVRkJRU3d3UWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5vUWpJd1EwUTdRV2RDZWpCRFF6dEZTR3RFUlN4M1EwRkJRVHRWUVVGQkxHZERRVUZCTzBWSGFFUkJMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxEQkNRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRRU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEdsQ1FVRkJPME5vUWpJd1EwZzdRV2RDZWpCRFJ6dEZRVU5GTEdWQlFVRTdSVUZEUVN4elFrRkJRVHREYUVJeU1FTk1PMEZuUW5nd1EwYzdSVUZEUlN4alFVRkJPME5vUWpBd1EwdzdRV2RDY2pCRFJ6czdPMFZCUjBVc1dVRkJRVHRGUVVOQkxITkNRVUZCTzBOb1FuVXdRMHc3UVdkQ2NEQkRSenRGUVVORkxHVkJRVUU3UTJoQ2N6QkRURHRCWjBKc01FTkRPMFZCUTBVc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNVMEZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEhsRFFVRkJPMVZCUVVFc2FVTkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTm9RbTh3UTBnN1FXZENMM3BEU3p0RlFVTkZMRmxCUVVFN1JVRkRRU3d3UWtGQlFUdEZRVU5CTEhOQ1FVRkJPME5vUW1rd1ExQTdRV2RDTDNwRFR6dEZRVU5GTEZsQlFVRTdRMmhDYVRCRFZEdEJaMEl6ZWtOTE96czdSVUZIUlN4WlFVRkJPME5vUWpaNlExQTdRV2RDZG5wRFJ6dEZRVU5GTEc5Q1FVRkJPME5vUW5sNlEwdzdRV2RDYkhwRFN6czdPenM3T3pzN1JVRkpSU3h2UWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4dFFrRkJRVHREYUVKM2VrTlFPMEZuUW5SNlEwODdPenM3T3pzN08wVkJRMFVzV1VGQlFUdEZRVU5CTEcxQ1FVRkJPME5vUWl0NlExUTdRV2RDTTNwRFN6czdSVUZEUlN3d1FrRkJRVHREYUVJNGVrTlFPMEZuUW5wNlEwTTdPMFZCUlVVc1ZVRkJRVHRGUVVOQkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1EyaENNbnBEU0R0QlowSTVla05ET3p0RlFVMUpMSE5DUVVGQk8wTm9RalI2UTB3N1FXZENlSHBEUXp0RlFVTkZMRlZCUVVFN1EyaENNSHBEU0R0QlowSjRla05ITzBWQlEwVXNWMEZCUVR0RGFFSXdla05NTzBGblFuUjZRME03UlVGRFJTeGhRVUZCTzBOb1FuZDZRMGc3UVdkQ2RIcERSenRGUVVORkxHTkJRVUU3UTJoQ2QzcERURHRCWjBKd2VrTkRPenRGUVVWRkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1JVRkRRU3haUVVGQk8wTm9Rbk42UTBnN1FXZENibnBEUXp0RlFVTkZMRk5CUVVFN1JVRkRRU3haUVVGQk8wTm9RbkY2UTBnN1FXZENibnBEUnp0RlFVTkZMR0ZCUVVFN1EyaENjWHBEVER0QlowSnFla05ETzBWQlEwVXNVMEZCUVR0RlFVTkJMRmRCUVVFN1EyaENiWHBEU0R0QlowSnFla05ITzBWQlEwVXNXVUZCUVR0RGFFSnRla05NTzBGblFqRjVRMHM3T3pzN1JVRkRSU3hqUVVGQk8wTm9RaXQ1UTFBN1FVRkRSRHM3T3pzN1IwRkxSenRCUVVOSUxITkNRVUZ6UWp0QlFVTjBRaXh6UWtGQmMwSTdRVUZEZEVJc2MwSkJRWE5DTzBGcFFqVTVRM1JDTzBWS2EwSTJRaXh0UWtGQlFUdEZRWE5EZWtJc2QwTkJRVUU3VlVGQlFTeG5RMEZCUVR0RlNYSkVSaXhuUWtGQlFUdEZRVU5CTEdOQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxGVkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxIVkNRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMSGxEUVVGQk8wVkJRVUVzYVVOQlFVRTdSVUZEUVN4dlEwRkJRVHRWUVVGQkxEUkNRVUZCTzBWQlEwRXNhVUpCUVVFN1EycENPRGxEUkR0QmFVSTFPVU5ETzBWS1pqUkNMRzlDUVVGQk8wVkJRMllzZDBKQlFVRTdSVWxuUWxnc1ZVRkJRVHRGUVVOQkxHbENRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMR3RDUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc2FVSkJRVUU3UTJwQ0t6bERTRHRCYVVJMU9VTkRPenRGUVVWRkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMRTlCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEd0Q1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RGFrSTRPVU5JTzBGcFFqTTVRME03UlVGRFJTeFJRVUZCTzBWQlEwRXNXVUZCUVR0RGFrSTJPVU5JTzBGcFFpODVRME03UlVGTFNTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hUUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEhsRFFVRkJPMVZCUVVFc2FVTkJRVUU3UTJwQ05qbERURHRCYVVKNk9VTkRPMFZCUTBVc1UwRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNXVUZCUVR0RGFrSXlPVU5JTzBGcFFqazVRME03UlVGTlNTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hUUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEhsRFFVRkJPMVZCUVVFc2FVTkJRVUU3UTJwQ01qbERURHRCYVVKNE9VTkhPMFZCUTBVc1dVRkJRVHREYWtJd09VTk1PMEZwUW5RNVEwTTdSVUZGU1N3d1FrRkJRVHREYWtKMU9VTk1PMEZwUW00NVEwTTdSVUZGU1N3d1FrRkJRVHREYWtKdk9VTk1PMEZwUW1nNVEwTTdSVUZGU1N3d1FrRkJRVHREYWtKcE9VTk1PMEZwUWpjNFEwTTdSVUZGU1N3d1FrRkJRVHREYWtJNE9FTk1PMEZwUWpFNFEwTTdSVUZEUlN4cFFrRkJRVHRGUVVOQkxIVkNRVUZCTzBOcVFqUTRRMGc3UVdsQ2VqaERTenRGUVVORkxDdENRVUZCTzBWQlEwRXNNRUpCUVVFN1EycENNamhEVUR0QmFVSjRPRU5MTzBWQlEwVXNLMEpCUVVFN1JVRkRRU3d3UWtGQlFUdERha0l3T0VOUU8wRnBRblk0UTBzN1JVRkRSU3dyUWtGQlFUdEZRVU5CTERCQ1FVRkJPME5xUW5rNFExQTdRV2xDZERoRFN6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTJwQ2R6aERVRHRCYVVJNU9VTkRPMFZCTWtKSkxGTkJRVUU3UlVGRFFTeGpRVUZCTzBOcVFuTTRRMHc3UVdsQ2JDdERRenRGUVN0Q1RTeGpRVUZCTzBOcVFuTTRRMUE3UVdsQ2FqaERRenRGUVVORkxHbENRVUZCTzBWQlEwRXNaMEpCUVVFN1EycENiVGhEU0R0QmFVSm9PRU5MTzBWQlJVa3NaVUZCUVR0RGFrSnBPRU5VTzBGcFFqYzNRMHM3UlVGRlNTeGxRVUZCTzBOcVFqZzNRMVE3UVdsQ01UZERTenRGUVVWSkxHVkJRVUU3UTJwQ01qZERWRHRCYVVKMk4wTkxPMFZCUlVrc1pVRkJRVHREYWtKM04wTlVPMEZwUW1vNVEwTTdSVUVyUWtrc2RVSkJRVUU3UTJwQ2NUZERURHRCYVVKcU4wTkRPMFZLZEVveVFpeHZRa0ZCUVR0RFlqQnJSRFZDTzBGcFFtZzNRMHM3UlVGRFJTeHBRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wTnFRbXMzUTFBN1FXbENjRGREU3p0RlNqRktkVUlzYjBKQlFVRTdSVWxuUzI1Q0xGVkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hyUWtGQlFUdERha0pyTjBOVU8wRnBRaTgyUTA4N1JVRkRSU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPME5xUW1rM1ExUTdRV2xDTnpaRFN6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTJwQ0t6WkRVRHRCYVVJM05rTlBPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RGFrSXJOa05VTzBGcFFubzJRME03UlVGRFJTeHBRa0ZCUVR0RlFVTkJMSFZDUVVGQk8wTnFRakkyUTBnN1FXbENlRFpEU3p0RlFVTkZMR2xDUVVGQk8wVkJRMEVzZFVKQlFVRTdRMnBDTURaRFVEdEJhVUoyTmtOTE8wVkJRMFVzYVVKQlFVRTdSVUZEUVN4MVFrRkJRVHREYWtKNU5rTlFPMEZwUW5BMlEwTTdSVUZEUlN4WFFVRkJPME5xUW5NMlEwZzdRV2xDYmpaRFF6dEZRVU5GTEdOQlFVRTdRMnBDY1RaRFNEdEJRVU5FTERKQ1FVRXlRanRCYTBJemIwUXpRanRGUVVORkxGZEJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNNa0pCUVVFN1EyeENObTlFUkR0QmEwSXpiMFJETzBWQlEwVXNNa0pCUVVFN1EyeENObTlFU0R0QmEwSjZiMFJITzBWQlEwVXNjME5CUVVFN1JVRkRRU3d5UWtGQlFUdERiRUl5YjBSTU8wRnJRbmh2UkVjN1JVRkRSU3h6UTBGQlFUdEZRVU5CTERKQ1FVRkJPME5zUWpCdlJFdzdRV3RDZG05RVJ6dEZRVU5GTEhORFFVRkJPME5zUW5sdlJFdzdRV3RDY205RVF6dEZRVU5GTEhORFFVRkJPME5zUW5WdlJFZ2lMQ0ptYVd4bElqb2laRzlqY3k1amMzTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lFZ2JtOXliV0ZzYVhwbExtTnpjeUIyT0M0d0xqRWdmQ0JOU1ZRZ1RHbGpaVzV6WlNCOElHZHBkR2gxWWk1amIyMHZibVZqYjJ4aGN5OXViM0p0WVd4cGVtVXVZM056SUNvdlhHNHZLaUJFYjJOMWJXVnVkRnh1SUNBZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMGdLaTljYmk4cUtseHVJQ29nTVM0Z1EyOXljbVZqZENCMGFHVWdiR2x1WlNCb1pXbG5hSFFnYVc0Z1lXeHNJR0p5YjNkelpYSnpMbHh1SUNvZ01pNGdVSEpsZG1WdWRDQmhaR3AxYzNSdFpXNTBjeUJ2WmlCbWIyNTBJSE5wZW1VZ1lXWjBaWElnYjNKcFpXNTBZWFJwYjI0Z1kyaGhibWRsY3lCcGJpQnBUMU11WEc0Z0tpOWNibWgwYld3Z2UxeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01TNHhOVHRjYmlBZ0x5b2dNU0FxTDF4dUlDQXRkMlZpYTJsMExYUmxlSFF0YzJsNlpTMWhaR3AxYzNRNklERXdNQ1U3WEc0Z0lDOHFJRElnS2k5Y2JuMWNiaThxSUZObFkzUnBiMjV6WEc0Z0lDQTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQU0FxTDF4dUx5b3FYRzRnS2lCU1pXMXZkbVVnZEdobElHMWhjbWRwYmlCcGJpQmhiR3dnWW5KdmQzTmxjbk11WEc0Z0tpOWNibUp2WkhrZ2UxeHVJQ0J0WVhKbmFXNDZJREE3WEc1OVhHNHZLaXBjYmlBcUlGSmxibVJsY2lCMGFHVWdZRzFoYVc1Z0lHVnNaVzFsYm5RZ1kyOXVjMmx6ZEdWdWRHeDVJR2x1SUVsRkxseHVJQ292WEc1dFlXbHVJSHRjYmlBZ1pHbHpjR3hoZVRvZ1lteHZZMnM3WEc1OVhHNHZLaXBjYmlBcUlFTnZjbkpsWTNRZ2RHaGxJR1p2Ym5RZ2MybDZaU0JoYm1RZ2JXRnlaMmx1SUc5dUlHQm9NV0FnWld4bGJXVnVkSE1nZDJsMGFHbHVJR0J6WldOMGFXOXVZQ0JoYm1SY2JpQXFJR0JoY25ScFkyeGxZQ0JqYjI1MFpYaDBjeUJwYmlCRGFISnZiV1VzSUVacGNtVm1iM2dzSUdGdVpDQlRZV1poY21rdVhHNGdLaTljYm1neElIdGNiaUFnWm05dWRDMXphWHBsT2lBeVpXMDdYRzRnSUcxaGNtZHBiam9nTUM0Mk4yVnRJREE3WEc1OVhHNHZLaUJIY205MWNHbHVaeUJqYjI1MFpXNTBYRzRnSUNBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBTQXFMMXh1THlvcVhHNGdLaUF4TGlCQlpHUWdkR2hsSUdOdmNuSmxZM1FnWW05NElITnBlbWx1WnlCcGJpQkdhWEpsWm05NExseHVJQ29nTWk0Z1UyaHZkeUIwYUdVZ2IzWmxjbVpzYjNjZ2FXNGdSV1JuWlNCaGJtUWdTVVV1WEc0Z0tpOWNibWh5SUh0Y2JpQWdZbTk0TFhOcGVtbHVaem9nWTI5dWRHVnVkQzFpYjNnN1hHNGdJQzhxSURFZ0tpOWNiaUFnYUdWcFoyaDBPaUF3TzF4dUlDQXZLaUF4SUNvdlhHNGdJRzkyWlhKbWJHOTNPaUIyYVhOcFlteGxPMXh1SUNBdktpQXlJQ292WEc1OVhHNHZLaXBjYmlBcUlERXVJRU52Y25KbFkzUWdkR2hsSUdsdWFHVnlhWFJoYm1ObElHRnVaQ0J6WTJGc2FXNW5JRzltSUdadmJuUWdjMmw2WlNCcGJpQmhiR3dnWW5KdmQzTmxjbk11WEc0Z0tpQXlMaUJEYjNKeVpXTjBJSFJvWlNCdlpHUWdZR1Z0WUNCbWIyNTBJSE5wZW1sdVp5QnBiaUJoYkd3Z1luSnZkM05sY25NdVhHNGdLaTljYm5CeVpTQjdYRzRnSUdadmJuUXRabUZ0YVd4NU9pQnRiMjV2YzNCaFkyVXNJRzF2Ym05emNHRmpaVHRjYmlBZ0x5b2dNU0FxTDF4dUlDQm1iMjUwTFhOcGVtVTZJREZsYlR0Y2JpQWdMeW9nTWlBcUwxeHVmVnh1THlvZ1ZHVjRkQzFzWlhabGJDQnpaVzFoYm5ScFkzTmNiaUFnSUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOUlDb3ZYRzR2S2lwY2JpQXFJRkpsYlc5MlpTQjBhR1VnWjNKaGVTQmlZV05yWjNKdmRXNWtJRzl1SUdGamRHbDJaU0JzYVc1cmN5QnBiaUJKUlNBeE1DNWNiaUFxTDF4dVlTQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhSeVlXNXpjR0Z5Wlc1ME8xeHVmVnh1THlvcVhHNGdLaUF4TGlCU1pXMXZkbVVnZEdobElHSnZkSFJ2YlNCaWIzSmtaWElnYVc0Z1EyaHliMjFsSURVM0xWeHVJQ29nTWk0Z1FXUmtJSFJvWlNCamIzSnlaV04wSUhSbGVIUWdaR1ZqYjNKaGRHbHZiaUJwYmlCRGFISnZiV1VzSUVWa1oyVXNJRWxGTENCUGNHVnlZU3dnWVc1a0lGTmhabUZ5YVM1Y2JpQXFMMXh1WVdKaWNsdDBhWFJzWlYwZ2UxeHVJQ0JpYjNKa1pYSXRZbTkwZEc5dE9pQnViMjVsTzF4dUlDQXZLaUF4SUNvdlhHNGdJSFJsZUhRdFpHVmpiM0poZEdsdmJqb2dkVzVrWlhKc2FXNWxPMXh1SUNBdktpQXlJQ292WEc0Z0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2RXNWtaWEpzYVc1bElHUnZkSFJsWkR0Y2JpQWdMeW9nTWlBcUwxeHVmVnh1THlvcVhHNGdLaUJCWkdRZ2RHaGxJR052Y25KbFkzUWdabTl1ZENCM1pXbG5hSFFnYVc0Z1EyaHliMjFsTENCRlpHZGxMQ0JoYm1RZ1UyRm1ZWEpwTGx4dUlDb3ZYRzVpTEZ4dWMzUnliMjVuSUh0Y2JpQWdabTl1ZEMxM1pXbG5hSFE2SUdKdmJHUmxjanRjYm4xY2JpOHFLbHh1SUNvZ01TNGdRMjl5Y21WamRDQjBhR1VnYVc1b1pYSnBkR0Z1WTJVZ1lXNWtJSE5qWVd4cGJtY2diMllnWm05dWRDQnphWHBsSUdsdUlHRnNiQ0JpY205M2MyVnljeTVjYmlBcUlESXVJRU52Y25KbFkzUWdkR2hsSUc5a1pDQmdaVzFnSUdadmJuUWdjMmw2YVc1bklHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2JpQXFMMXh1WTI5a1pTeGNibXRpWkN4Y2JuTmhiWEFnZTF4dUlDQm1iMjUwTFdaaGJXbHNlVG9nYlc5dWIzTndZV05sTENCdGIyNXZjM0JoWTJVN1hHNGdJQzhxSURFZ0tpOWNiaUFnWm05dWRDMXphWHBsT2lBeFpXMDdYRzRnSUM4cUlESWdLaTljYm4xY2JpOHFLbHh1SUNvZ1FXUmtJSFJvWlNCamIzSnlaV04wSUdadmJuUWdjMmw2WlNCcGJpQmhiR3dnWW5KdmQzTmxjbk11WEc0Z0tpOWNibk50WVd4c0lIdGNiaUFnWm05dWRDMXphWHBsT2lBNE1DVTdYRzU5WEc0dktpcGNiaUFxSUZCeVpYWmxiblFnWUhOMVltQWdZVzVrSUdCemRYQmdJR1ZzWlcxbGJuUnpJR1p5YjIwZ1lXWm1aV04wYVc1bklIUm9aU0JzYVc1bElHaGxhV2RvZENCcGJseHVJQ29nWVd4c0lHSnliM2R6WlhKekxseHVJQ292WEc1emRXSXNYRzV6ZFhBZ2UxeHVJQ0JtYjI1MExYTnBlbVU2SURjMUpUdGNiaUFnYkdsdVpTMW9aV2xuYUhRNklEQTdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdkbVZ5ZEdsallXd3RZV3hwWjI0NklHSmhjMlZzYVc1bE8xeHVmVnh1YzNWaUlIdGNiaUFnWW05MGRHOXRPaUF0TUM0eU5XVnRPMXh1ZlZ4dWMzVndJSHRjYmlBZ2RHOXdPaUF0TUM0MVpXMDdYRzU5WEc0dktpQkZiV0psWkdSbFpDQmpiMjUwWlc1MFhHNGdJQ0E5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFNBcUwxeHVMeW9xWEc0Z0tpQlNaVzF2ZG1VZ2RHaGxJR0p2Y21SbGNpQnZiaUJwYldGblpYTWdhVzV6YVdSbElHeHBibXR6SUdsdUlFbEZJREV3TGx4dUlDb3ZYRzVwYldjZ2UxeHVJQ0JpYjNKa1pYSXRjM1I1YkdVNklHNXZibVU3WEc1OVhHNHZLaUJHYjNKdGMxeHVJQ0FnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwZ0tpOWNiaThxS2x4dUlDb2dNUzRnUTJoaGJtZGxJSFJvWlNCbWIyNTBJSE4wZVd4bGN5QnBiaUJoYkd3Z1luSnZkM05sY25NdVhHNGdLaUF5TGlCU1pXMXZkbVVnZEdobElHMWhjbWRwYmlCcGJpQkdhWEpsWm05NElHRnVaQ0JUWVdaaGNta3VYRzRnS2k5Y2JtSjFkSFJ2Yml4Y2JtbHVjSFYwTEZ4dWIzQjBaM0p2ZFhBc1hHNXpaV3hsWTNRc1hHNTBaWGgwWVhKbFlTQjdYRzRnSUdadmJuUXRabUZ0YVd4NU9pQnBibWhsY21sME8xeHVJQ0F2S2lBeElDb3ZYRzRnSUdadmJuUXRjMmw2WlRvZ01UQXdKVHRjYmlBZ0x5b2dNU0FxTDF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTVM0eE5UdGNiaUFnTHlvZ01TQXFMMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJQzhxSURJZ0tpOWNibjFjYmk4cUtseHVJQ29nVTJodmR5QjBhR1VnYjNabGNtWnNiM2NnYVc0Z1NVVXVYRzRnS2lBeExpQlRhRzkzSUhSb1pTQnZkbVZ5Wm14dmR5QnBiaUJGWkdkbExseHVJQ292WEc1aWRYUjBiMjRzWEc1cGJuQjFkQ0I3WEc0Z0lDOHFJREVnS2k5Y2JpQWdiM1psY21ac2IzYzZJSFpwYzJsaWJHVTdYRzU5WEc0dktpcGNiaUFxSUZKbGJXOTJaU0IwYUdVZ2FXNW9aWEpwZEdGdVkyVWdiMllnZEdWNGRDQjBjbUZ1YzJadmNtMGdhVzRnUldSblpTd2dSbWx5WldadmVDd2dZVzVrSUVsRkxseHVJQ29nTVM0Z1VtVnRiM1psSUhSb1pTQnBibWhsY21sMFlXNWpaU0J2WmlCMFpYaDBJSFJ5WVc1elptOXliU0JwYmlCR2FYSmxabTk0TGx4dUlDb3ZYRzVpZFhSMGIyNHNYRzV6Wld4bFkzUWdlMXh1SUNBdktpQXhJQ292WEc0Z0lIUmxlSFF0ZEhKaGJuTm1iM0p0T2lCdWIyNWxPMXh1ZlZ4dUx5b3FYRzRnS2lCRGIzSnlaV04wSUhSb1pTQnBibUZpYVd4cGRIa2dkRzhnYzNSNWJHVWdZMnhwWTJ0aFlteGxJSFI1Y0dWeklHbHVJR2xQVXlCaGJtUWdVMkZtWVhKcExseHVJQ292WEc1aWRYUjBiMjRzWEc1YmRIbHdaVDBuWW5WMGRHOXVKMTBzWEc1YmRIbHdaVDBuY21WelpYUW5YU3hjYmx0MGVYQmxQU2R6ZFdKdGFYUW5YU0I3WEc0Z0lDMTNaV0pyYVhRdFlYQndaV0Z5WVc1alpUb2dZblYwZEc5dU8xeHVmVnh1THlvcVhHNGdLaUJTWlcxdmRtVWdkR2hsSUdsdWJtVnlJR0p2Y21SbGNpQmhibVFnY0dGa1pHbHVaeUJwYmlCR2FYSmxabTk0TGx4dUlDb3ZYRzVpZFhSMGIyNDZPaTF0YjNvdFptOWpkWE10YVc1dVpYSXNYRzViZEhsd1pUMG5ZblYwZEc5dUoxMDZPaTF0YjNvdFptOWpkWE10YVc1dVpYSXNYRzViZEhsd1pUMG5jbVZ6WlhRblhUbzZMVzF2ZWkxbWIyTjFjeTFwYm01bGNpeGNibHQwZVhCbFBTZHpkV0p0YVhRblhUbzZMVzF2ZWkxbWIyTjFjeTFwYm01bGNpQjdYRzRnSUdKdmNtUmxjaTF6ZEhsc1pUb2dibTl1WlR0Y2JpQWdjR0ZrWkdsdVp6b2dNRHRjYm4xY2JpOHFLbHh1SUNvZ1VtVnpkRzl5WlNCMGFHVWdabTlqZFhNZ2MzUjViR1Z6SUhWdWMyVjBJR0o1SUhSb1pTQndjbVYyYVc5MWN5QnlkV3hsTGx4dUlDb3ZYRzVpZFhSMGIyNDZMVzF2ZWkxbWIyTjFjM0pwYm1jc1hHNWJkSGx3WlQwblluVjBkRzl1SjEwNkxXMXZlaTFtYjJOMWMzSnBibWNzWEc1YmRIbHdaVDBuY21WelpYUW5YVG90Ylc5NkxXWnZZM1Z6Y21sdVp5eGNibHQwZVhCbFBTZHpkV0p0YVhRblhUb3RiVzk2TFdadlkzVnpjbWx1WnlCN1hHNGdJRzkxZEd4cGJtVTZJREZ3ZUNCa2IzUjBaV1FnUW5WMGRHOXVWR1Y0ZER0Y2JuMWNiaThxS2x4dUlDb2dRMjl5Y21WamRDQjBhR1VnY0dGa1pHbHVaeUJwYmlCR2FYSmxabTk0TGx4dUlDb3ZYRzVtYVdWc1pITmxkQ0I3WEc0Z0lIQmhaR1JwYm1jNklEQXVNelZsYlNBd0xqYzFaVzBnTUM0Mk1qVmxiVHRjYm4xY2JpOHFLbHh1SUNvZ01TNGdRMjl5Y21WamRDQjBhR1VnZEdWNGRDQjNjbUZ3Y0dsdVp5QnBiaUJGWkdkbElHRnVaQ0JKUlM1Y2JpQXFJREl1SUVOdmNuSmxZM1FnZEdobElHTnZiRzl5SUdsdWFHVnlhWFJoYm1ObElHWnliMjBnWUdacFpXeGtjMlYwWUNCbGJHVnRaVzUwY3lCcGJpQkpSUzVjYmlBcUlETXVJRkpsYlc5MlpTQjBhR1VnY0dGa1pHbHVaeUJ6YnlCa1pYWmxiRzl3WlhKeklHRnlaU0J1YjNRZ1kyRjFaMmgwSUc5MWRDQjNhR1Z1SUhSb1pYa2dlbVZ5YnlCdmRYUmNiaUFxSUNBZ0lHQm1hV1ZzWkhObGRHQWdaV3hsYldWdWRITWdhVzRnWVd4c0lHSnliM2R6WlhKekxseHVJQ292WEc1c1pXZGxibVFnZTF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dUlDQXZLaUF4SUNvdlhHNGdJR052Ykc5eU9pQnBibWhsY21sME8xeHVJQ0F2S2lBeUlDb3ZYRzRnSUdScGMzQnNZWGs2SUhSaFlteGxPMXh1SUNBdktpQXhJQ292WEc0Z0lHMWhlQzEzYVdSMGFEb2dNVEF3SlR0Y2JpQWdMeW9nTVNBcUwxeHVJQ0J3WVdSa2FXNW5PaUF3TzF4dUlDQXZLaUF6SUNvdlhHNGdJSGRvYVhSbExYTndZV05sT2lCdWIzSnRZV3c3WEc0Z0lDOHFJREVnS2k5Y2JuMWNiaThxS2x4dUlDb2dRV1JrSUhSb1pTQmpiM0p5WldOMElIWmxjblJwWTJGc0lHRnNhV2R1YldWdWRDQnBiaUJEYUhKdmJXVXNJRVpwY21WbWIzZ3NJR0Z1WkNCUGNHVnlZUzVjYmlBcUwxeHVjSEp2WjNKbGMzTWdlMXh1SUNCMlpYSjBhV05oYkMxaGJHbG5iam9nWW1GelpXeHBibVU3WEc1OVhHNHZLaXBjYmlBcUlGSmxiVzkyWlNCMGFHVWdaR1ZtWVhWc2RDQjJaWEowYVdOaGJDQnpZM0p2Ykd4aVlYSWdhVzRnU1VVZ01UQXJMbHh1SUNvdlhHNTBaWGgwWVhKbFlTQjdYRzRnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh1ZlZ4dUx5b3FYRzRnS2lBeExpQkJaR1FnZEdobElHTnZjbkpsWTNRZ1ltOTRJSE5wZW1sdVp5QnBiaUJKUlNBeE1DNWNiaUFxSURJdUlGSmxiVzkyWlNCMGFHVWdjR0ZrWkdsdVp5QnBiaUJKUlNBeE1DNWNiaUFxTDF4dVczUjVjR1U5SjJOb1pXTnJZbTk0SjEwc1hHNWJkSGx3WlQwbmNtRmthVzhuWFNCN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJQzhxSURFZ0tpOWNiaUFnY0dGa1pHbHVaem9nTUR0Y2JpQWdMeW9nTWlBcUwxeHVmVnh1THlvcVhHNGdLaUJEYjNKeVpXTjBJSFJvWlNCamRYSnpiM0lnYzNSNWJHVWdiMllnYVc1amNtVnRaVzUwSUdGdVpDQmtaV055WlcxbGJuUWdZblYwZEc5dWN5QnBiaUJEYUhKdmJXVXVYRzRnS2k5Y2JsdDBlWEJsUFNkdWRXMWlaWEluWFRvNkxYZGxZbXRwZEMxcGJtNWxjaTF6Y0dsdUxXSjFkSFJ2Yml4Y2JsdDBlWEJsUFNkdWRXMWlaWEluWFRvNkxYZGxZbXRwZEMxdmRYUmxjaTF6Y0dsdUxXSjFkSFJ2YmlCN1hHNGdJR2hsYVdkb2REb2dZWFYwYnp0Y2JuMWNiaThxS2x4dUlDb2dNUzRnUTI5eWNtVmpkQ0IwYUdVZ2IyUmtJR0Z3Y0dWaGNtRnVZMlVnYVc0Z1EyaHliMjFsSUdGdVpDQlRZV1poY21rdVhHNGdLaUF5TGlCRGIzSnlaV04wSUhSb1pTQnZkWFJzYVc1bElITjBlV3hsSUdsdUlGTmhabUZ5YVM1Y2JpQXFMMXh1VzNSNWNHVTlKM05sWVhKamFDZGRJSHRjYmlBZ0xYZGxZbXRwZEMxaGNIQmxZWEpoYm1ObE9pQjBaWGgwWm1sbGJHUTdYRzRnSUM4cUlERWdLaTljYmlBZ2IzVjBiR2x1WlMxdlptWnpaWFE2SUMweWNIZzdYRzRnSUM4cUlESWdLaTljYm4xY2JpOHFLbHh1SUNvZ1VtVnRiM1psSUhSb1pTQnBibTVsY2lCd1lXUmthVzVuSUdsdUlFTm9jbTl0WlNCaGJtUWdVMkZtWVhKcElHOXVJRzFoWTA5VExseHVJQ292WEc1YmRIbHdaVDBuYzJWaGNtTm9KMTA2T2kxM1pXSnJhWFF0YzJWaGNtTm9MV1JsWTI5eVlYUnBiMjRnZTF4dUlDQXRkMlZpYTJsMExXRndjR1ZoY21GdVkyVTZJRzV2Ym1VN1hHNTlYRzR2S2lwY2JpQXFJREV1SUVOdmNuSmxZM1FnZEdobElHbHVZV0pwYkdsMGVTQjBieUJ6ZEhsc1pTQmpiR2xqYTJGaWJHVWdkSGx3WlhNZ2FXNGdhVTlUSUdGdVpDQlRZV1poY21rdVhHNGdLaUF5TGlCRGFHRnVaMlVnWm05dWRDQndjbTl3WlhKMGFXVnpJSFJ2SUdCcGJtaGxjbWwwWUNCcGJpQlRZV1poY21rdVhHNGdLaTljYmpvNkxYZGxZbXRwZEMxbWFXeGxMWFZ3Ykc5aFpDMWlkWFIwYjI0Z2UxeHVJQ0F0ZDJWaWEybDBMV0Z3Y0dWaGNtRnVZMlU2SUdKMWRIUnZianRjYmlBZ0x5b2dNU0FxTDF4dUlDQm1iMjUwT2lCcGJtaGxjbWwwTzF4dUlDQXZLaUF5SUNvdlhHNTlYRzR2S2lCSmJuUmxjbUZqZEdsMlpWeHVJQ0FnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwZ0tpOWNiaThxWEc0Z0tpQkJaR1FnZEdobElHTnZjbkpsWTNRZ1pHbHpjR3hoZVNCcGJpQkZaR2RsTENCSlJTQXhNQ3NzSUdGdVpDQkdhWEpsWm05NExseHVJQ292WEc1a1pYUmhhV3h6SUh0Y2JpQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hHNTlYRzR2S2x4dUlDb2dRV1JrSUhSb1pTQmpiM0p5WldOMElHUnBjM0JzWVhrZ2FXNGdZV3hzSUdKeWIzZHpaWEp6TGx4dUlDb3ZYRzV6ZFcxdFlYSjVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JHbHpkQzFwZEdWdE8xeHVmVnh1THlvZ1RXbHpZMXh1SUNBZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMGdLaTljYmk4cUtseHVJQ29nUVdSa0lIUm9aU0JqYjNKeVpXTjBJR1JwYzNCc1lYa2dhVzRnU1VVZ01UQXJMbHh1SUNvdlhHNTBaVzF3YkdGMFpTQjdYRzRnSUdScGMzQnNZWGs2SUc1dmJtVTdYRzU5WEc0dktpcGNiaUFxSUVGa1pDQjBhR1VnWTI5eWNtVmpkQ0JrYVhOd2JHRjVJR2x1SUVsRklERXdMbHh1SUNvdlhHNWJhR2xrWkdWdVhTQjdYRzRnSUdScGMzQnNZWGs2SUc1dmJtVTdYRzU5WEc0dktpQTlQVDA5UFNCQ1lYTmxJRDA5UFQwOUlDb3ZYRzVvZEcxc0xGeHVZbTlrZVNCN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdZbUZqYTJkeWIzVnVaRG9nSTJaaFptRm1ZVHRjYmlBZ1kyOXNiM0k2SUNNek16TTdYRzRnSUdadmJuUXRjMmw2WlRvZ01UUndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJREUxTUNVN1hHNGdJR1p2Ym5RdFptRnRhV3g1T2lBblRXbGpjbTl6YjJaMElGbGhTR1ZwSUZWSkp5d2dRWEpwWVd3c0lITmhibk10YzJWeWFXWTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNWhPbXhwYm1zc1hHNWhPblpwYzJsMFpXUXNYRzVoT21odmRtVnlJSHRjYmlBZ1kyOXNiM0k2SUNNd05UZzVOREk3WEc0Z0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2JtOXVaVHRjYm4xY2JtRTZhRzkyWlhJZ2UxeHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJSFZ1WkdWeWJHbHVaVHRjYm4xY2JtTnZaR1VnZTF4dUlDQm1iMjUwTFdaaGJXbHNlVG9nSjFOdmRYSmpaU0JEYjJSbElGQnlieWNzSUVOdmJuTnZiR0Z6TENCSFpXOXlaMmxoTENCTmIyNWhZMjhzSUcxdmJtOXpjR0ZqWlN3Z1FYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZN1hHNTlYRzR2S2lBOVBUMDlQU0JUWTNKdmJHeGlZWElnUFQwOVBUMGdLaTljYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJZ2UxeHVJQ0IzYVdSMGFEb2dOM0I0TzF4dUlDQm9aV2xuYUhRNklEZHdlRHRjYmlBZ0xYZGxZbXRwZEMxaWIzSmtaWEl0Y21Ga2FYVnpPaUExY0hnN1hHNTlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSeVlXTnJMWEJwWldObElIdGNiaUFnTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQTFjSGc3WEc1OVhHNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlMWFJvZFcxaU9uWmxjblJwWTJGc0lIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMakkxS1R0Y2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYRzU5WEc0Nk9pMTNaV0pyYVhRdGMyTnliMnhzWW1GeUxYUm9kVzFpT21odmNtbDZiMjUwWVd3Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJ5WjJKaEtEQXNJREFzSURBc0lEQXVNalVwTzF4dUlDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEdGNibjFjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJNmFHOTJaWElnZTF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQnlaMkpoS0RBc0lEQXNJREFzSURBdU1UVXBPMXh1ZlZ4dU9qb3RkMlZpYTJsMExYTmpjbTlzYkdKaGNpMTBhSFZ0WWpwb2IzWmxjaUI3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0ek5TazdYRzU5WEc0dktpQk1ZWGx2ZFhRZ0tpOWNiaTVrYjJOeklIdGNiaUFnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJSEp2ZHp0Y2JpQWdabXhsZUMxM2NtRndPaUJ1YjNkeVlYQTdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dNVHRjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1THlvZ1FYTnBaR1VnS2k5Y2JpNWhjMmxrWlNCN1hHNGdJR1JwYzNCc1lYazZJR1pzWlhnN1hHNGdJR1pzWlhndGMyaHlhVzVyT2lBd08xeHVJQ0JtYkdWNExXUnBjbVZqZEdsdmJqb2dZMjlzZFcxdU8xeHVJQ0JtYkdWNExYZHlZWEE2SUc1dmQzSmhjRHRjYmlBZ2QybGtkR2c2SURJMk1IQjRPMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJek16TXp0Y2JpQWdZMjlzYjNJNklDTmtaR1E3WEc0Z0lHSnZlQzF6YUdGa2IzYzZJREFnTUNBMWNIZ2dNbkI0SUNOa1pHUTdYRzRnSUhSeVlXNXphWFJwYjI0dFpIVnlZWFJwYjI0NklEQXVNM003WEc0Z0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4dWZWeHVMeW9nVFdGcGJpQXFMMXh1TG0xaGFXNGdlMXh1SUNCbWJHVjRPaUF4TzF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmp0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1WVhOcFpHVWdlMXh1SUNCbWIyNTBMV1poYldsc2VUb2dKMU52ZFhKalpTQkRiMlJsSUZCeWJ5Y3NJRU52Ym5OdmJHRnpMQ0JIWlc5eVoybGhMQ0JOYjI1aFkyOHNJRzF2Ym05emNHRmpaU3dnUVhKcFlXd3NJSE5oYm5NdGMyVnlhV1k3WEc1OVhHNHVZWE5wWkdWZlgyaGxZV1JsY2lCN1hHNGdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHVJQ0JtYkdWNExYTm9jbWx1YXpvZ01EdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNWhjMmxrWlY5ZmJtRjJJSHRjYmlBZ1pteGxlRG9nTVR0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1WVhOcFpHVmZYMmd5SUh0Y2JpQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hHNGdJR2hsYVdkb2REb2dOVFJ3ZUR0Y2JpQWdiR2x1WlMxb1pXbG5hSFE2SURVMGNIZzdYRzRnSUdadmJuUXRjMmw2WlRvZ01qQndlRHRjYmlBZ1ptOXVkQzEzWldsbmFIUTZJRzV2Y20xaGJEdGNiaUFnWm05dWRDMW1ZVzFwYkhrNklFZGxiM0puYVdFc0lFTnZibk52YkdGekxDQkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFpqdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG1GemFXUmxYMTlvTXlCN1hHNGdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHVJQ0J3WVdSa2FXNW5PaUF3SURJd2NIZzdYRzRnSUdadmJuUXRjMmw2WlRvZ01UWndlRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTVoYzJsa1pWOWZiR2x6ZENCN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2NHRmtaR2x1WnpvZ01UQndlQ0F3TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG1GemFXUmxYMTlwZEdWdElIdGNiaUFnYUdWcFoyaDBPaUF6TW5CNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ016SndlRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQXpNSEI0TzF4dUlDQmpkWEp6YjNJNklIQnZhVzUwWlhJN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVROd2VEdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNWhjMmxrWlNBdWIzVjBiR2x1WlMxamFHRndkR1Z5Y3lCN1hHNGdJR1pzWlhnNklERTdYRzU5WEc0dVlYTnBaR1VnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDIxaGFXNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlMWFJvZFcxaUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpZMk5qdGNibjFjYmk1aGMybGtaU0F1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmYldGcGJqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJNmFHOTJaWElnZTF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpPVGs1TzF4dWZWeHVMbUZ6YVdSbElDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXdiR0ZqWldodmJHUmxjaUI3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTTFOVFU3WEc0Z0lHSnZjbVJsY2kxc1pXWjBPaUF6Y0hnZ2MyOXNhV1FnSTJabVpqdGNibjFjYmk1aGMybGtaU0F1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmWVc1amFHOXlPbXhwYm1zZ2UxeHVJQ0JqYjJ4dmNqb2dJMlJrWkR0Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4dWZWeHVMbUZ6YVdSbElDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOWhibU5vYjNJNmRtbHphWFJsWkNCN1hHNGdJR052Ykc5eU9pQWpaR1JrTzF4dUlDQjBaWGgwTFdSbFkyOXlZWFJwYjI0NklHNXZibVU3WEc1OVhHNHVZWE5wWkdVZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyRnVZMmh2Y2pwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBalpHUmtPMXh1SUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUhWdVpHVnliR2x1WlR0Y2JuMWNiaTVoYzJsa1pTQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWhZM1JwZG1VdWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZllXNWphRzl5T214cGJtc3NYRzR1WVhOcFpHVWdMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZZV04wYVhabExtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyRnVZMmh2Y2pwMmFYTnBkR1ZrTEZ4dUxtRnphV1JsSUM1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDJGamRHbDJaUzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJMlptWmp0Y2JuMWNiaTV0WVdsdVgxOW9aV0ZrWlhJc1hHNHViV0ZwYmw5ZlptOXZkR1Z5SUh0Y2JpQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hHNGdJSEJoWkdScGJtYzZJREZsYlR0Y2JpQWdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTFoYVc1ZlgyZ3hJSHRjYmlBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEc0Z0lIQmhaR1JwYm1jdGRHOXdPaUF4WlcwN1hHNGdJR1p2Ym5RdGMybDZaVG9nTldWdE8xeHVJQ0JtYjI1MExYZGxhV2RvZERvZ2JtOXliV0ZzTzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTW1WdE8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtMWhhVzVmWDI1aGJXVWdlMXh1SUNCamIyeHZjam9nSXpVd04yRm1aVHRjYmlBZ1ptOXVkQzEzWldsbmFIUTZJRzV2Y20xaGJEdGNibjFjYmk1dFlXbHVYMTkwWVdkc2FXNWxJSHRjYmlBZ2JXRnlaMmx1T2lBeFpXMGdZWFYwYnp0Y2JpQWdiV0Y0TFhkcFpIUm9PaUE1TmpCd2VEdGNiaUFnYkdsdVpTMW9aV2xuYUhRNklERXVNMlZ0TzF4dUlDQm1iMjUwTFhOcGVtVTZJREpsYlR0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lHWnZiblF0ZDJWcFoyaDBPaUF4TURBN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWJXRnBibDlmWTJSdUlIdGNiaUFnYldGeVoybHVPaUF5WlcwZ01EdGNiaUFnY0dGa1pHbHVaem9nTW1WdE8xeHVJQ0JtYjI1MExYTnBlbVU2SURFMmNIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXhOVEFsTzF4dUlDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVlXWmhabUU3WEc0Z0lHSnZjbVJsY2kxMGIzQTZJREZ3ZUNCemIyeHBaQ0FqWkdSa08xeHVJQ0JpYjNKa1pYSXRZbTkwZEc5dE9pQXhjSGdnYzI5c2FXUWdJMlJrWkR0Y2JpQWdZMjlzYjNJNklDTTJOalk3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YldGcGJsOWZaRzkzYm14dllXUWdlMXh1SUNCdFlYSm5hVzQ2SURGbGJTQmhkWFJ2TzF4dUlDQjNhV1IwYURvZ01qQXdjSGc3WEc0Z0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXRZV2x1WDE5aWRYUjBiMjRnZTF4dUlDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEc0Z0lHSnZjbVJsY2kxeVlXUnBkWE02SURSd2VEdGNiaUFnY0dGa1pHbHVaem9nTVRSd2VDQXlPWEI0TzF4dUlDQm1iMjUwTFhOcGVtVTZJREU0Y0hnN1hHNGdJR1p2Ym5RdFptRnRhV3g1T2lBblUyOTFjbU5sSUVOdlpHVWdVSEp2Snl3Z1EyOXVjMjlzWVhNc0lFZGxiM0puYVdFc0lFMXZibUZqYnl3Z2JXOXViM053WVdObExDQkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFpqdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpBMU9EazBNanRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV0WVdsdVgxOWlkWFIwYjI0NmJHbHVheXhjYmk1dFlXbHVYMTlpZFhSMGIyNDZkbWx6YVhSbFpDeGNiaTV0WVdsdVgxOWlkWFIwYjI0NmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0kyWm1aanRjYmlBZ2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCdWIyNWxPMXh1ZlZ4dUxtMWhhVzVmWDJadmIzUmxjaUI3WEc0Z0lHMWhjbWRwYmpvZ01DQXpaVzA3WEc0Z0lHSnZjbVJsY2kxMGIzQTZJREZ3ZUNCemIyeHBaQ0FqWkdSa08xeHVmVnh1TG5ObFkzUnBiMjRnZTF4dUlDQnRZWEpuYVc0NklERmxiU0F3TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG5ObFkzUnBiMjVmWDJobFlXUmxjaXhjYmk1elpXTjBhVzl1WDE5amIyNTBaVzUwTEZ4dUxuTmxZM1JwYjI1ZlgyWnZiM1JsY2lCN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQXpaVzA3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YzJWamRHbHZibDlmZEdsMGJHVWdlMXh1SUNCamIyeHZjam9nSXpZMk5qdGNibjFjYmk1elpXTjBhVzl1WDE5b015QjdYRzRnSUdOdmJHOXlPaUFqTlRBM1lXWmxPMXh1SUNCbWIyNTBMWE5wZW1VNklERXVNelZsYlR0Y2JuMWNiaTV6WldOMGFXOXVYMTlvTkNCN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVM0eFpXMDdYRzRnSUdOdmJHOXlPaUFqTmpZMk8xeHVmVnh1TG5ObFkzUnBiMjVmWDJnMUlIdGNiaUFnWm05dWRDMXphWHBsT2lBeFpXMDdYRzRnSUdOdmJHOXlPaUFqT1RrNU8xeHVmVnh1TG5ObFkzUnBiMjVmWDJSc0xGeHVMbk5sWTNScGIyNWZYMlIwTEZ4dUxuTmxZM1JwYjI1ZlgyUmtJSHRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0J3WVdSa2FXNW5PaUF3TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG5ObFkzUnBiMjVmWDJSc0lIdGNiaUFnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4dUlDQjZMV2x1WkdWNE9pQXhPMXh1ZlZ4dUxuTmxZM1JwYjI1ZlgyUjBJSHRjYmlBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh1ZlZ4dUxuTmxZM1JwYjI1ZlgyUmtJSHRjYmlBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh1SUNCamIyeHZjam9nSXpBMU9EazBNanRjYm4xY2JpNXpaV04wYVc5dVgxOXdjbVVnZTF4dUlDQnRZWEpuYVc0NklESmxiU0F3TzF4dUlDQndZV1JrYVc1bk9pQXhaVzA3WEc0Z0lHWnZiblF0YzJsNlpUb2dNVFJ3ZUR0Y2JpQWdiR2x1WlMxb1pXbG5hSFE2SURFMU1DVTdYRzRnSUhSbGVIUXRZV3hwWjI0NklHeGxablE3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1ZV1poWm1FN1hHNGdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJQ05rWkdRN1hHNGdJR0p2Y21SbGNpMXlZV1JwZFhNNklEUndlRHRjYmlBZ1kyOXNiM0k2SUNNMk5qWTdYRzRnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh1ZlZ4dUxuTmxZM1JwYjI1ZlgyTnZaR1VnZTF4dUlDQmthWE53YkdGNU9pQmliRzlqYXp0Y2JpQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWMyVmpkR2x2Ymw5ZlptOXZkR1Z5SUh0Y2JpQWdZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUNOa1pHUTdYRzRnSUcxaGNtZHBiaTEwYjNBNklETmxiVHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWmhabUZtWVR0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc1OVhHNHVjMlZqZEdsdmJsOWZkR0ZpYkdVZ2UxeHVJQ0J0WVhKbmFXNDZJREZsYlNCaGRYUnZPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnWW05eVpHVnlMWFJ2Y0RvZ01YQjRJSE52Ykdsa0lDTmtaR1E3WEc1OVhHNHVjMlZqZEdsdmJsOWZkR2dzWEc0dWMyVmpkR2x2Ymw5ZmRHUWdlMXh1SUNCd1lXUmthVzVuT2lBMWNIZ2dNVFp3ZUR0Y2JpQWdiR2x1WlMxb1pXbG5hSFE2SURJMmNIZzdYRzRnSUdKdmNtUmxjaTFpYjNSMGIyMDZJREZ3ZUNCemIyeHBaQ0FqWkdSa08xeHVmVnh1TG5ObFkzUnBiMjVmWDNSb0lIdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabUZtWVdaaE8xeHVmVnh1UUcxbFpHbGhJQ2h0WVhndGQybGtkR2c2SURRNE1IQjRLU0I3WEc0Z0lDNXpaV04wYVc5dVgxOW9aV0ZrWlhJc1hHNGdJQzV6WldOMGFXOXVYMTlqYjI1MFpXNTBJSHRjYmlBZ0lDQndZV1JrYVc1bk9pQXdJREZsYlR0Y2JpQWdmVnh1ZlZ4dUxtTmhjMlVnZTF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJR1JwYzNCc1lYazZJR2R5YVdRN1hHNGdJR2R5YVdRdGRHVnRjR3hoZEdVdFkyOXNkVzF1Y3pvZ2NtVndaV0YwS0RJc0lERm1jaWs3WEc0Z0lHZGhjRG9nTkRCd2VEdGNiaUFnY0dGa1pHbHVaem9nTVdWdE8xeHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYmlBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUNOa1pHUTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHVZMkZ6WlRwaFpuUmxjaUI3WEc0Z0lHTnZiblJsYm5RNklDY25PMXh1SUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ05UQWxPMXh1SUNCb1pXbG5hSFE2SURFd01DVTdYRzRnSUhkcFpIUm9PaUF3TzF4dUlDQmliM0prWlhJdGJHVm1kRG9nTVhCNElITnZiR2xrSUNOa1pHUTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHVZMkZ6WlY5ZmNISmxMRnh1TG1OaGMyVmZYM1JsZUhSaGNtVmhJSHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhNM0I0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTVRVd0pUdGNibjFjYmk1allYTmxYMTl3Y21Vc1hHNHVZMkZ6WlY5ZlkyOWtaU3hjYmk1allYTmxYMTkwWlhoMFlYSmxZU0I3WEc0Z0lHWnZiblF0Wm1GdGFXeDVPaUFuUTI5MWNtbGxjaUJPWlhjbkxDQkRiMjV6YjJ4aGN5d2dSMlZ2Y21kcFlTd2dRWEpwWVd3c0lITmhibk10YzJWeWFXWTdYRzU5WEc0dVkyRnpaVjlmY0hKbElIdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQndZV1JrYVc1bk9pQXhaVzA3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1ZV1poWm1FN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ05IQjRPMXh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1SUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjYm4xY2JpNWpZWE5sWDE5MGIyOXNZbUZ5SUh0Y2JpQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hHNGdJR2hsYVdkb2REb2dNelp3ZUR0Y2JpQWdiR2x1WlMxb1pXbG5hSFE2SURNMmNIZzdYRzRnSUdadmJuUXRjMmw2WlRvZ01UUndlRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQXhObkI0TzF4dUlDQjBaWGgwTFdGc2FXZHVPaUJ5YVdkb2REdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNWpZWE5sWDE5aFkzUnBiMjRzWEc0dVkyRnpaVjlmY21WdGIzWmxJSHRjYmlBZ1kzVnljMjl5T2lCd2IybHVkR1Z5TzF4dUlDQmpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JpQWdkWE5sY2kxelpXeGxZM1E2SUc1dmJtVTdYRzU5WEc0dVkyRnpaVjlmWVdOMGFXOXVJSHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhNM0I0TzF4dUlDQndZV1JrYVc1bkxXeGxablE2SURFd2NIZzdYRzU5WEc0dVkyRnpaVjlmWVdOMGFXOXVPbVpwY25OMExXTm9hV3hrSUh0Y2JpQWdjR0ZrWkdsdVp5MXNaV1owT2lBd08xeHVmVnh1TG1OaGMyVmZYM0psYlc5MlpTQjdYRzRnSUdac2IyRjBPaUJ5YVdkb2REdGNibjFjYmk1allYTmxYMTlqYjI1emIyeGxJSHRjYmlBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEc0Z0lHaGxhV2RvZERvZ01UZ3djSGc3WEc0Z0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTmtaR1E3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1WTJGelpWOWZkR1Y0ZEdGeVpXRWdlMXh1SUNCdFlYSm5hVzQ2SURBZ1lYVjBienRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNiaUFnWW05eVpHVnlPaUJ1YjI1bE8xeHVJQ0J2ZFhSc2FXNWxPaUJ1YjI1bE8xeHVJQ0J3WVdSa2FXNW5PaUF4WlcwN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHVmVnh1TG1OaGMyVmZYMnhwYzNRc1hHNHVZMkZ6WlY5ZmFYUmxiU0I3WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnY0dGa1pHbHVaem9nTUR0Y2JpQWdiR2x6ZEMxemRIbHNaUzEwZVhCbE9pQnViMjVsTzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG1OaGMyVmZYMnhwYzNRZ2UxeHVJQ0JvWldsbmFIUTZJRE0yTUhCNE8xeHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYmlBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUNOa1pHUTdYRzRnSUdadmJuUXRjMmw2WlRvZ01UTndlRHRjYmlBZ2IzWmxjbVpzYjNjNklHRjFkRzg3WEc1OVhHNHVZMkZ6WlY5ZmFYUmxiU0I3WEc0Z0lHaGxhV2RvZERvZ016WndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRE0yY0hnN1hHNGdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNiaUFnY0dGa1pHbHVaem9nTUNBeE5uQjRPMXh1ZlZ4dUxtTmhjMlZmWDJsMFpXMDZhRzkyWlhJZ2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWmpkbU9HWTVPMXh1ZlZ4dU9uSnZiM1FnZTF4dUlDQXRMVzkxZEd4cGJtVXRla2x1WkdWNE9pQXlNREF3TzF4dUlDQXRMVzkxZEd4cGJtVXRjM1JwWTJ0NUxXaGxhV2RvZERvZ01UQXdKVHRjYmlBZ0xTMXZkWFJzYVc1bExXTm9ZWEIwWlhKekxYZHBaSFJvT2lBeE1EQWxPMXh1ZlZ4dUx5b2dQVDA5UFQwOVBUMDlQU0JqYjJ4dmNuTXVkR2hsYldVZ0xTRGxuN3Jub1lEcG9wem9pYkxsajVqcGg0L3BtNGJsa0lnZ1BUMDlQVDA5UFQwOVBTQXFMMXh1THlvcVhHNGdLaUJsYkd4cGNITnBjeTVzWlhOeklDMGc1cGFINXB5czU1eUI1NVdsSUcxcGVHbHVlQ0RsaDczbWxiQmNiaUFxSUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBcUlFTnlaV0YwWldRZ1FuazZJRmxoYjJoaGFYaHBZVzljYmlBcUlGVndaR0YwWlRvZ01qQXlNaTR6TGpFeFhHNGdLaTljYmk4cUlEMDlQVDA5UFNEbWxvZm1uS3pubklIbmxhWGxoNzNtbGJBZ1BUMDlQVDA5SUNvdlhHNHZLaXBjYmlBcUlITm9ZV1J2ZHk1c1pYTnpJQzBnNlppMDViMng1cUMzNWJ5UDZLNis1NzJ1SUcxcGVHbHVlQ0RsaDczbWxiQmNiaUFxSUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBcUlFTnlaV0YwWldRZ1FuazZJRmxoYjJoaGFYaHBZVzljYmlBcUlGVndaR0YwWlRvZ01qQXlNaTR6TGpJd1hHNGdLaTljYmk4cUlEMDlQVDA5UFNEcG1MVGx2Ykhtb0xmbHZJL29ycjdudmE3bGg3M21sYkFnUFQwOVBUMDlJQ292WEc0dktpQTlQVDA5UFQwOVBUMDlJR2xqYjI0dWRHaGxiV1VnTFNCemRtY2c1WnUrNXFDSDU1cUU1cUMzNWJ5UElEMDlQVDA5UFQwOVBUMGdLaTljYmk1dmRYUnNhVzVsTFdsamIyNGdlMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNGdJSG90YVc1a1pYZzZJREU3WEc0Z0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjYmlBZ2RtVnlkR2xqWVd3dFlXeHBaMjQ2SUcxcFpHUnNaVHRjYmlBZ2QybGtkR2c2SURGbGJUdGNiaUFnYUdWcFoyaDBPaUF4WlcwN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxcFkyOXVYMTl6ZG1jZ2UxeHVJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEc0Z0lIb3RhVzVrWlhnNklESTdYRzRnSUhSdmNEb2dOVEFsTzF4dUlDQnNaV1owT2lBMU1DVTdYRzRnSUhkcFpIUm9PaUF4WlcwN1hHNGdJR2hsYVdkb2REb2dNV1Z0TzF4dUlDQm1hV3hzT2lCamRYSnlaVzUwWTI5c2IzSTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbEtDMDFNQ1VzSUMwMU1DVXBPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRhV052Ymw5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVp5QjdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dNVHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV2hsWVdScGJtZGZYMkZ1WTJodmNpQjdYRzRnSUdScGMzQnNZWGs2SUc1dmJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0k2YkdsdWF5eGNiaTV2ZFhSc2FXNWxMV2hsWVdScGJtZGZYMkZ1WTJodmNqcDJhWE5wZEdWa0xGeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVoxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2pwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak5UQTNZV1psTzF4dWZWeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVp6cG9iM1psY2lBdWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0lnZTF4dUlDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEc1OVhHNHViM1YwYkdsdVpTMW9aV0ZrYVc1blgzTjBZWEowT21odmRtVnlJSHRjYmlBZ2IzWmxjbVpzYjNjNklIWnBjMmxpYkdVN1hHNTlYRzR1YjNWMGJHbHVaUzFvWldGa2FXNW5YM04wWVhKMElDNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2lCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lIUnlZVzV6Wm05eWJUb2dkSEpoYm5Oc1lYUmxXU2d0TlRBbEtUdGNiaUFnYkdWbWREb2dMVEZsYlR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNpQjdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dMVEU3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQjNhV1IwYURvZ01UQXdKVHRjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1SUNCMmFYTnBZbWxzYVhSNU9pQm9hV1JrWlc0N1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWDIxdlpHRnNJSHRjYmlBZ1ltOTRMWE5vWVdSdmR6b2dNQ0F3SURad2VDQXhjSGdnSTJSalpHWmxOanRjYmlBZ1pHbHpjR3hoZVRvZ1pteGxlRHRjYmlBZ1pteGxlQzFrYVhKbFkzUnBiMjQ2SUdOdmJIVnRianRjYmlBZ1pteGxlQzEzY21Gd09pQnViM2R5WVhBN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qRTdYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTJabVpqdGNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNDBjenRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWZhR1ZoWkdWeUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOXRZV2x1TEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5bWIyOTBaWElnZTF4dUlDQjNhV1IwYURvZ01UQXdKVHRjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmFHVmhaR1Z5TEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5bWIyOTBaWElnZTF4dUlDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWZkR2wwYkdVc1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyMWhhVzRzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWDJadmIzUmxjaUI3WEc0Z0lIQmhaR1JwYm1jNklEQWdNVFp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWZhR1ZoWkdWeUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOTBhWFJzWlNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjYmlBZ2VpMXBibVJsZURvZ01UdGNiaUFnYldGeVoybHVPaUF3SUdGMWRHODdYRzRnSUdobGFXZG9kRG9nTlRKd2VEdGNiaUFnYkdsdVpTMW9aV2xuYUhRNklEVXljSGc3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYM1JwZEd4bElIdGNiaUFnWm05dWRDMXphWHBsT2lBeE5uQjRPMXh1SUNCbWIyNTBMWGRsYVdkb2REb2dOREF3TzF4dUlDQnRZWEpuYVc0NklEQWdNVFp3ZUR0Y2JpQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lDTmtZMlJtWlRZN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYMk5zYjNObElIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJRFV3SlR0Y2JpQWdjbWxuYUhRNklERXljSGc3WEc0Z0lIZHBaSFJvT2lBeU1IQjRPMXh1SUNCb1pXbG5hSFE2SURJd2NIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXlNSEI0TzF4dUlDQmpiMnh2Y2pvZ0l6azVPVHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXlNSEI0TzF4dUlDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRzRnSUdOMWNuTnZjam9nY0c5cGJuUmxjanRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5amJHOXpaU0F1YjNWMGJHbHVaUzFwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYMk5zYjNObE9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTJOalk3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyMWhhVzRnZTF4dUlDQm1iR1Y0T2lBeE8xeHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWm05dmRHVnlJSHRjYmlBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEc0Z0lIUmxlSFF0WVd4cFoyNDZJSEpwWjJoME8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5dmRtVnliR0Y1SUh0Y2JpQWdZMjl1ZEdWdWREb2dKeWM3WEc0Z0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNiaUFnZWkxcGJtUmxlRG9nTVR0Y2JpQWdkRzl3T2lBd08xeHVJQ0JzWldaME9pQXdPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1abU8xeHVJQ0J2Y0dGamFYUjVPaUF3TGpFN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNScGJua3NYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5TG05MWRHeHBibVV0WkhKaGQyVnlYM1JwYm5rZ2UxeHVJQ0IzYVdSMGFEb2dNamd3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzTG05MWRHeHBibVV0WkhKaGQyVnlYMjFwYm1rc1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMXBibWtnZTF4dUlDQjNhV1IwYURvZ05EZ3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNMbTkxZEd4cGJtVXRaSEpoZDJWeVgzTnRZV3hzTEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4MGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQ0I3WEc0Z0lIZHBaSFJvT2lBMU5EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5eWRHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZmNtVm5kV3hoY2l4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmNtVm5kV3hoY2lCN1hHNGdJSGRwWkhSb09pQTJPREJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZiV1ZrYVhWdExGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRaV1JwZFcwZ2UxeHVJQ0IzYVdSMGFEb2dOekl3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzTG05MWRHeHBibVV0WkhKaGQyVnlYMnhoY21kbExGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlNCN1hHNGdJSGRwWkhSb09pQTVOakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3dnZTF4dUlDQmliM0prWlhJdGJHVm1kRG9nTVhCNElITnZiR2xrSUNOa1kyUm1aVFk3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUnBibmt1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnY21sbmFIUTZJQzB5T1RCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3dWIzVjBiR2x1WlMxa2NtRjNaWEpmYldsdWFTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQnlhV2RvZERvZ0xUUTVNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXpiV0ZzYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCeWFXZG9kRG9nTFRVMU1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5eVpXZDFiR0Z5TG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUhKcFoyaDBPaUF0Tmprd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xtOTFkR3hwYm1VdFpISmhkMlZ5WDIxbFpHbDFiUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0J5YVdkb2REb2dMVGN6TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlzWVhKblpTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQnlhV2RvZERvZ0xUazNNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHSnZjbVJsY2kxeWFXZG9kRG9nTVhCNElITnZiR2xrSUNOa1kyUm1aVFk3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUnBibmt1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnYkdWbWREb2dMVEk1TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMngwY2k1dmRYUnNhVzVsTFdSeVlYZGxjbDl0YVc1cExtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lHeGxablE2SUMwME9UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmMyMWhiR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnYkdWbWREb2dMVFUxTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMngwY2k1dmRYUnNhVzVsTFdSeVlYZGxjbDl5WldkMWJHRnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMDJPVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZiV1ZrYVhWdExtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lHeGxablE2SUMwM016QndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlV1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnYkdWbWREb2dMVGszTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWl4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUWdlMXh1SUNCc1pXWjBPaUF3TzF4dUlDQjNhV1IwYURvZ01UQXdKVHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmRHbHVlU3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmZEdsdWVTQjdYRzRnSUdobGFXZG9kRG9nTWpRd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxcGJta3NYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYMjFwYm1rZ2UxeHVJQ0JvWldsbmFIUTZJRE15TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl6YldGc2JDeGNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZjMjFoYkd3Z2UxeHVJQ0JvWldsbmFIUTZJRE0yTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5WldkMWJHRnlMRnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkowZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDl5WldkMWJHRnlJSHRjYmlBZ2FHVnBaMmgwT2lBME1EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXVmthWFZ0TEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5dFpXUnBkVzBnZTF4dUlDQm9aV2xuYUhRNklEUTBNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlVnZTF4dUlDQm9aV2xuYUhRNklEUTRNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaUI3WEc0Z0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNBalpHTmtabVUyTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBhVzU1TG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUhSdmNEb2dMVEkxTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl0YVc1cExtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lIUnZjRG9nTFRNek1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNSMFlpNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0IwYjNBNklDMHpOekJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQjBiM0E2SUMwME1UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXVmthWFZ0TG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUhSdmNEb2dMVFExTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDlzWVhKblpTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQjBiM0E2SUMwME9UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUWdlMXh1SUNCMGIzQTZJR2x1YVhScFlXdzdYRzRnSUdKdmNtUmxjaTEwYjNBNklERndlQ0J6YjJ4cFpDQWpaR05rWm1VMk8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkowZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDkwYVc1NUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lHSnZkSFJ2YlRvZ0xUSTFNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgySjBkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRhVzVwTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUdKdmRIUnZiVG9nTFRNek1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0JpYjNSMGIyMDZJQzB6TnpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmY21WbmRXeGhjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0JpYjNSMGIyMDZJQzAwTVRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYldWa2FYVnRMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR0p2ZEhSdmJUb2dMVFExTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkowZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDlzWVhKblpTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQmliM1IwYjIwNklDMDBPVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXZjR1Z1WldRZ2UxeHVJQ0IyYVhOcFltbHNhWFI1T2lCMmFYTnBZbXhsTzF4dUlDQjZMV2x1WkdWNE9pQjJZWElvTFMxdmRYUnNhVzVsTFhwSmJtUmxlQ2s3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmIzQmxibVZrTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjYmlBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3Z2UxeHVJQ0J5YVdkb2REb2dNRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5SUh0Y2JpQWdiR1ZtZERvZ01EdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Y0dWdVpXUXViM1YwYkdsdVpTMWtjbUYzWlhKZmRIUmlJSHRjYmlBZ2RHOXdPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRZ2UxeHVJQ0JpYjNSMGIyMDZJREE3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmIyWm1jMlYwTG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dlptWnpaWFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5SUh0Y2JpQWdhR1ZwWjJoME9pQmpZV3hqS0RFd01DVWdMU0EwWlcwcE8xeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMjltWm5ObGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXNYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiMlptYzJWMExtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDQjdYRzRnSUhkcFpIUm9PaUJqWVd4aktERXdNQ1VnTFNBMFpXMHBPMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV0NndE5UQWxLVHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dlptWnpaWFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDQjdYRzRnSUhKcFoyaDBPaUF5WlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiMlptYzJWMExtOTFkR3hwYm1VdFpISmhkMlZ5WDI5d1pXNWxaQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSElnZTF4dUlDQnNaV1owT2lBeVpXMDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDkwZEdJZ2UxeHVJQ0IwYjNBNklESmxiVHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dlptWnpaWFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDQjdYRzRnSUdKdmRIUnZiVG9nTW1WdE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkYxZEc4dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyRjFkRzh1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5SUh0Y2JpQWdhR1ZwWjJoME9pQmhkWFJ2TzF4dUlDQnRZWGd0YUdWcFoyaDBPaUJqWVd4aktERXdNQ1VnTFNBMFpXMHBPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJaMWJHd2dlMXh1SUNCd1lXUmthVzVuT2lBd08xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk1nZTF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2QybGtkR2c2SUhaaGNpZ3RMVzkxZEd4cGJtVXRZMmhoY0hSbGNuTXRkMmxrZEdncE8xeHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6TFhCaGNtVnVkQ0I3WEc0Z0lIUnlZVzV6YVhScGIyNDZJREF1TTNNZ1pXRnpaUzFwYmkxdmRYUTdYRzU5WEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZmRHbDBiR1VnZTF4dUlDQnRZWEpuYVc0NklEQWdNVFp3ZUR0Y2JpQWdhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTkRCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBeE5uQjRPMXh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTJSalpHWmxOanRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhObkI0TzF4dUlDQm1iMjUwTFhkbGFXZG9kRG9nTkRBd08xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyMWhhVzRnZTF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTlzYVhOMExGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYM04xWW1wbFkzUXNYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmYVhSbGJTQjdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dNanRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0J3WVdSa2FXNW5PaUF3TzF4dUlDQnNhWE4wTFhOMGVXeGxMWFI1Y0dVNklHNXZibVU3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmYkdsemRDQjdYRzRnSUhCaFpHUnBibWM2SURBdU5XVnRJREE3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZjM1ZpYW1WamRDQjdYRzRnSUhCaFpHUnBibWN0YkdWbWREb2dNV1Z0TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMmwwWlcwZ2UxeHVJQ0J0WVhKbmFXNDZJREE3WEc0Z0lHeHBibVV0YUdWcFoyaDBPaUF6TUhCNE8xeHVJQ0JtYjI1MExYTnBlbVU2SURFemNIZzdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZjR3hoWTJWb2IyeGtaWElnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJSFJ2Y0RvZ01EdGNiaUFnYkdWbWREb2dNRHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdobGFXZG9kRG9nTXpCd2VEdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTJZM1pqaG1PVHRjYmlBZ1ltOXlaR1Z5TFd4bFpuUTZJREp3ZUNCemIyeHBaQ0FqTURVNE9UUXlPMXh1SUNCMGNtRnVjMmwwYVc5dUxXUjFjbUYwYVc5dU9pQXdMakp6TzF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJGdVkyaHZjaUI3WEc0Z0lIZG9hWFJsTFhOd1lXTmxPaUJ1YjNkeVlYQTdYRzRnSUhSbGVIUXRiM1psY21ac2IzYzZJR1ZzYkdsd2MybHpPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dUlDQmthWE53YkdGNU9pQmliRzlqYXp0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F4TGpWbGJUdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5aGJtTm9iM0k2YkdsdWF5eGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZkbWx6YVhSbFpDeGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN1hHNGdJR052Ykc5eU9pQWpOVFUxTzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMkZ1WTJodmNqcG9iM1psY2lCN1hHNGdJR052Ykc5eU9pQWpNRFU0T1RReU8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJOdlpHVWdlMXh1SUNCd1lXUmthVzVuTFhKcFoyaDBPaUF3TGpWbGJUdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDJocFoyaHNhV2RvZEM1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5aGJtTm9iM0k2YkdsdWF5eGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMmhwWjJoc2FXZG9kQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZkbWx6YVhSbFpDeGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMmhwWjJoc2FXZG9kQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJekExT0RrME1qdGNiaUFnWm05dWRDMTNaV2xuYUhRNklHSnZiR1E3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOXpkR2xqYTNrc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNCN1hHNGdJR1JwYzNCc1lYazZJR1pzWlhnN1hHNGdJR1pzWlhndGQzSmhjRG9nYm05M2NtRndPMXh1SUNCbWJHVjRMV1JwY21WamRHbHZiam9nWTI5c2RXMXVPMXh1SUNCNkxXbHVaR1Y0T2lCMllYSW9MUzF2ZFhSc2FXNWxMWHBKYm1SbGVDazdYRzRnSUhSdmNEb2dNRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYM04wYVdOcmVTQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZkR2wwYkdVc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNBdWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZmRHbDBiR1VzWEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5emRHbGphM2tnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDIxaGFXNHNYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTltYVhobFpDQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZiV0ZwYmlCN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTl6ZEdsamEza2dMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYM1JwZEd4bExGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZabWw0WldRZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzUnBkR3hsSUh0Y2JpQWdabXhsZUMxemFISnBibXM2SURBN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTl6ZEdsamEza2dMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMjFoYVc0c1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNBdWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZmJXRnBiaUI3WEc0Z0lHWnNaWGc2SURFN1hHNGdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mYzNScFkydDVJSHRjYmlBZ2NHOXphWFJwYjI0NklITjBhV05yZVR0Y2JpQWdiV0Y0TFdobGFXZG9kRG9nZG1GeUtDMHRiM1YwYkdsdVpTMXpkR2xqYTNrdGFHVnBaMmgwS1R0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMlpwZUdWa0lIdGNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh1SUNCdFlYZ3RhR1ZwWjJoME9pQXhNREFsTzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZhR2xrWkdWdUlIdGNiaUFnWkdsemNHeGhlVG9nYm05dVpUdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDJadmJHUmxaQ0I3WEc0Z0lIZHBaSFJvT2lBd08xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUx5b3FYRzRnS2lCdGFYaHBibk11YkdWemN5QXRJT1czcGVXRnQrV0h2ZWFWc0Z4dUlDb2dQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVJQ29nUTNKbFlYUmxaQ0JDZVRvZ1dXRnZhR0ZwZUdsaGIxeHVJQ29nVlhCa1lYUmxPaUF5TURJeUxqTXVNVEZjYmlBcUwxeHVMeW9nUFQwOVBUMDlJT2FXaCthY3JPZWNnZWVWcGVXSHZlYVZzQ0E5UFQwOVBUMGdLaTljYmk4cUlEMDlQVDA5UFNEbG5JYm9wNUxtb0xmbHZJL29ycjdudmE3bGg3M21sYkFnUFQwOVBUMDlJQ292WEc0dktpQTlQVDA5UFQwZzZaaTA1YjJ4NXFDMzVieVA2SzYrNTcydTVZZTk1cFd3SUQwOVBUMDlQU0FxTDF4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5amJHOXpaU0I3WEc0Z0lHUnBjM0JzWVhrNklHNXZibVU3WEc1OVhHNHViM1YwYkdsdVpTMXlaV0ZrWlhKZlgzUnBkR3hsSUh0Y2JpQWdiV0Z5WjJsdU9pQXdMalkzWlcwZ01DQWhhVzF3YjNKMFlXNTBPMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJZ0lXbHRjRzl5ZEdGdWREdGNiaUFnWm05dWRDMW1ZVzFwYkhrNklDZE5hV055YjNOdlpuUWdXV0ZJWldrZ1ZVa25MQ0JCY21saGJDd2djMkZ1Y3kxelpYSnBaanRjYmlBZ1ptOXVkQzEzWldsbmFIUTZJRzV2Y20xaGJEdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExYSmxZV1JsY2w5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hHNTlYRzR1YjNWMGJHbHVaUzF5WldGa1pYSmZhR2xrWkdWdUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDNOcFlteHBibWNnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hHNTlYRzR1YjNWMGJHbHVaUzF5WldGa1pYSmZhR2xrWkdWdUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDNOcFlteHBibWN1ZDNKaGNIQmxjaTV3YjNOMElIdGNiaUFnWkdsemNHeGhlVG9nYm05dVpUdGNibjFjYmk1dmRYUnNhVzVsTFhKbFlXUmxjaTB0Y21WaFpHbHVaeUI3WEc0Z0lHUnBjM0JzWVhrNklHSnNiMk5yTzF4dUlDQndiM05wZEdsdmJqb2dabWw0WldRN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnZDJsa2RHZzZJREV3TUNVN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdiV0Z5WjJsdU9pQXdPMXh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1SUNCd1lXUmthVzVuT2lBelpXMGdOR1Z0TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTzF4dUlDQnpZM0p2Ykd3dGRHbHRaV3hwYm1VdGJtRnRaVG9nTFMxUWNtOW5jbVZ6YzFScGJXVnNhVzVsTzF4dUlDQnZkbVZ5Wm14dmR6b2djMk55YjJ4c08xeHVmVnh1TG05MWRHeHBibVV0Y21WaFpHVnlMUzF5WldGa2FXNW5JQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZjSEp2WjNKbGMzTWdlMXh1SUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnZWkxcGJtUmxlRG9nTXp0Y2JpQWdhR1ZwWjJoME9pQTBjSGc3WEc0Z0lIZHBaSFJvT2lBeE1EQWxPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBak5UQTNZV1psTzF4dUlDQnpZMkZzWlRvZ01DQXhPMXh1SUNCMGNtRnVjMlp2Y20wdGIzSnBaMmx1T2lCc1pXWjBPMXh1SUNCaGJtbHRZWFJwYjI0NklHOTFkR3hwYm1VdGNtVmhaR1Z5TFhCeWIyZHlaWE56SUd4cGJtVmhjanRjYmlBZ1lXNXBiV0YwYVc5dUxYUnBiV1ZzYVc1bE9pQXRMVkJ5YjJkeVpYTnpWR2x0Wld4cGJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxeVpXRmtaWEl0TFhKbFlXUnBibWNnTG05MWRHeHBibVV0Y21WaFpHVnlYMTlqYkc5elpTQjdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0EyY0hnZ01YQjRJQ05rWTJSbVpUWTdYRzRnSUdScGMzQnNZWGs2SUdKc2IyTnJPMXh1SUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3WEc0Z0lIb3RhVzVrWlhnNklETTdYRzRnSUhSdmNEb2dOVEFsTzF4dUlDQnlhV2RvZERvZ01qSndlRHRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0IzYVdSMGFEb2dNelp3ZUR0Y2JpQWdhR1ZwWjJoME9pQXpObkI0TzF4dUlDQmliM0prWlhJdGNtRmthWFZ6T2lBeE9IQjRPMXh1SUNCaWIzSmtaWEk2SURGd2VDQnpiMnhwWkNBalpHTmtabVUyTzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTXpCd2VEdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYRzRnSUdOMWNuTnZjam9nY0c5cGJuUmxjanRjYmlBZ1ltOTRMWE5vWVdSdmR6b2dNQ0F3SURod2VDQWpaR1JrTzF4dUlDQmpiMnh2Y2pvZ0l6azVPVHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1aanRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMWEpsWVdSbGNpMHRjbVZoWkdsdVp5QXViM1YwYkdsdVpTMXlaV0ZrWlhKZlgyTnNiM05sT21odmRtVnlJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JpQWdZMjlzYjNJNklDTm1abVk3WEc1OVhHNHViM1YwYkdsdVpTMXlaV0ZrWlhJdExYSmxZV1JwYm1jZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUdneExGeHVMbTkxZEd4cGJtVXRjbVZoWkdWeUxTMXlaV0ZrYVc1bklDNXZkWFJzYVc1bExYSmxZV1JsY2w5ZmRHbDBiR1VnZTF4dUlDQnRZWEpuYVc0NklEQXVOamRsYlNBd0lDRnBiWEJ2Y25SaGJuUTdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXhMak5sYlR0Y2JpQWdabTl1ZEMxemFYcGxPaUF6TGpWbGJUdGNibjFjYmtCclpYbG1jbUZ0WlhNZ2IzVjBiR2x1WlMxeVpXRmtaWEl0Y0hKdlozSmxjM01nZTF4dUlDQjBieUI3WEc0Z0lDQWdjMk5oYkdVNklERWdNVHRjYmlBZ2ZWeHVmVnh1UUcxbFpHbGhJQ2h0WVhndGQybGtkR2c2SURRNE1IQjRLU0I3WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2kwdGNtVmhaR2x1WnlCN1hHNGdJQ0FnY0dGa1pHbHVaem9nTUNBeExqSTFaVzA3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYMTlqYkc5elpTQjdYRzRnSUNBZ2NtbG5hSFE2SURFeWNIZ2dJV2x0Y0c5eWRHRnVkRHRjYmlBZ0lDQnZjR0ZqYVhSNU9pQXdMamc3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYMTkwYVhSc1pTQjdYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXlaVzA3WEc0Z0lIMWNibjFjYmtCdFpXUnBZU0J3Y21sdWRDQjdYRzRnSUdoMGJXd3NYRzRnSUdKdlpIa2dlMXh1SUNBZ0lHaGxhV2RvZERvZ2FXNXBkR2xoYkNBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2lCN1hHNGdJQ0FnWkdsemNHeGhlVG9nWW14dlkyc2dJV2x0Y0c5eWRHRnVkRHRjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2lCb01TeGNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYMTkwYVhSc1pTQjdYRzRnSUNBZ2JXRnlaMmx1T2lBeE15NDBjSFFnTUNBeU9IQjBJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lDQWdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF5TUhCMElDRnBiWEJ2Y25SaGJuUTdYRzRnSUgxY2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUxtOTFkR3hwYm1VdGNtVmhaR1Z5TFMxeVpXRmthVzVuSUh0Y2JpQWdJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVVnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdJQ0JvWldsbmFIUTZJR0YxZEc4Z0lXbHRjRzl5ZEdGdWREdGNiaUFnSUNCd1lXUmthVzVuT2lBd0lDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmlBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjaUJvTVN4Y2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5MGFYUnNaU0I3WEc0Z0lDQWdiV0Z5WjJsdU9pQXhNeTQwY0hRZ01DQXlPSEIwSUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5SUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnWm05dWRDMXphWHBsT2lBeU1IQjBJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlMbTkxZEd4cGJtVXRjbVZoWkdWeVgxOWpiRzl6WlN4Y2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5d2NtOW5jbVZ6Y3lCN1hHNGdJQ0FnWkdsemNHeGhlVG9nYm05dVpTQWhhVzF3YjNKMFlXNTBPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpQndjbVVnZTF4dUlDQWdJSEJoWkdScGJtYzZJREZsYlNBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUdKdmNtUmxjam9nTVhCNElITnZiR2xrSUNOa1pHUWdJV2x0Y0c5eWRHRnVkRHRjYmlBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBMGNIZ2dJV2x0Y0c5eWRHRnVkRHRjYmlBZ2ZWeHVJQ0F1YjNWMGJHbHVaUzF5WldGa1pYSWdjSEpsTEZ4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ1kyOWtaU0I3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmlBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2lCMFlXSnNaU3hjYmlBZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUdsdFp5eGNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlJSE4yWnlCN1hHNGdJQ0FnWW5KbFlXc3RhVzV6YVdSbE9pQmhkbTlwWkR0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEpmYzJsaWJHbHVaeUI3WEc0Z0lDQWdaR2x6Y0d4aGVUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc1OVhHNHZLaUE5UFQwOVBUMDlQVDA5SUdKMWRIUnZibk11ZEdobGJXVWdMU0RtaklucGtxN2xyN3pvaUtybW9MZmx2SThnUFQwOVBUMDlQVDA5UFNBcUwxeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNpQjdYRzRnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjYmlBZ2VpMXBibVJsZURvZ09UazVPVGs3WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNHpjenRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0EyY0hnZ01YQjRJQ05rWTJSbVpUWTdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dNVHRjYmlBZ2JXRnlaMmx1T2lBeE1IQjRPMXh1SUNCM2FXUjBhRG9nTXpad2VEdGNiaUFnYUdWcFoyaDBPaUF6Tm5CNE8xeHVJQ0JpYjNKa1pYSTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1SUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF6Y0hnN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN1hHNGdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4dUlDQmpiMnh2Y2pvZ0l6azVPVHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJqcG9iM1psY2lCN1hHNGdJR052Ykc5eU9pQWpNRFU0T1RReU8xeHVJQ0JpYjNKa1pYSXRZMjlzYjNJNklDTXdOVGc1TkRJN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNHVhR2xrWlNCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZiR2x1YXl4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgyRnVZMmh2Y2pwMmFYTnBkR1ZrTEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T21odmRtVnlJSHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpUdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqTURVNE9UUXlPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZmFXTnZiaUI3WEc0Z0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNiaUFnZWkxcGJtUmxlRG9nTWp0Y2JpQWdkRzl3T2lBMU1DVTdYRzRnSUd4bFpuUTZJRFV3SlR0Y2JpQWdkMmxrZEdnNklESXdjSGc3WEc0Z0lHaGxhV2RvZERvZ01qQndlRHRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVW9MVFV3SlN3Z0xUVXdKU2s3WEc0Z0lHWnBiR3c2SUdOMWNuSmxiblJqYjJ4dmNqdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZllXTjBhWFpsTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVJSHRjYmlBZ1kyOXNiM0k2SUNObVptWTdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNNd05UZzVOREk3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXpBMU9EazBNanRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZllXTjBhWFpsTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVPbWh2ZG1WeUlIdGNiaUFnWTI5c2IzSTZJQ05tWm1ZN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkZqZEdsMlpTQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmJHbHVheXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWVdOMGFYWmxJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcDJhWE5wZEdWa0xGeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWhZM1JwZG1VZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T21odmRtVnlJSHRjYmlBZ1kyOXNiM0k2SUNObVptWTdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNKdmRXNWtaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNGdlMXh1SUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF4T0hCNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcHNhVzVyTEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2YkdsdWF5eGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmRtbHphWFJsWkN4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlpHbHpZV0pzWldRZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T25acGMybDBaV1FzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbWh2ZG1WeUxGeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWthWE5oWW14bFpDQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmFHOTJaWElzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNGdlMXh1SUNCamRYSnpiM0k2SUc1dmRDMWhiR3h2ZDJWa08xeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JpQWdZbTl5WkdWeUxXTnZiRzl5T2lBak9UazVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBzYVc1ck9taHZkbVZ5TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2YkdsdWF6cG9iM1psY2l4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlpHbHpZV0pzWldRdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2ZG1semFYUmxaRHBvYjNabGNpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZVzVqYUc5eU9uWnBjMmwwWldRNmFHOTJaWElzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbWh2ZG1WeU9taHZkbVZ5TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2YUc5MlpYSTZhRzkyWlhJc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZlluVjBkRzl1T21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNDZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JpQWdZbTl5WkdWeUxXTnZiRzl5T2lBak9UazVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJKMWRIUnZiaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWTFaalZtTlR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZkSFJpTEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5aWRIUWdlMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV0NndE5UQWxLVHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmRIUmlJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZZblIwSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJKMWRIUnZiaUI3WEc0Z0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmRIUmlJSHRjYmlBZ2RHOXdPaUF4TW5CNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDkwZEdJdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJocFpHUmxiaUI3WEc0Z0lIUnZjRG9nTFRVMmNIZzdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJKMGRDQjdYRzRnSUdKdmRIUnZiVG9nTVRKd2VEdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWW5SMExtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4dUlDQmliM1IwYjIwNklDMDFObkI0TzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOXlkR3dzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJ4MGNpQjdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2JpQWdkMmxrZEdnNklEVTJjSGc3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzSjBiQ0I3WEc0Z0lIUnZjRG9nTlRBbE8xeHVJQ0J5YVdkb2REb2dNVEp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZjblJzTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh1SUNCeWFXZG9kRG9nTFRnMmNIZzdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJ4MGNpQjdYRzRnSUhSdmNEb2dOVEFsTzF4dUlDQnNaV1owT2lBeE1uQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5c2RISXViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYmlCN1hHNGdJR3hsWm5RNklDMDRObkI0TzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOTBkR0lnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOW9hV1JrWlc0c1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzSjBiQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYml4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlluUjBJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5c2RISWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMeW9xWEc0Z0tpQm1iMjUwTG14bGMzTWdMU0Rsclpma3ZaUG5tN2psaGJQbW9MZmx2STljYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpQXFJRU55WldGMFpXUWdRbms2SUZsaGIyaGhhWGhwWVc5Y2JpQXFJRlZ3WkdGMFpUb2dNakF5TWk0ekxqRTJYRzRnS2k5Y2JpOHFJRDA5UFQwOVBTRGxyWmZrdlpNZ1BUMDlQVDA5SUNvdlhHNHZLaUE5UFQwOVBUMGc1YTJYNlllTklEMDlQVDA5UFNBcUwxeHVMeW9nUFQwOVBUMDlJT1d0bCtXUHR5QTlQVDA5UFQwZ0tpOWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVWdlMXh1SUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF6Y0hnN1hHNGdJR0p2ZUMxemFHRmtiM2M2SURBZ01DQTJjSGdnTVhCNElDTmtZMlJtWlRZN1hHNGdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNiaUFnZWkxcGJtUmxlRG9nT1RrNU9UdGNiaUFnYjNCaFkybDBlVG9nTUM0eE8xeHVJQ0IwYjNBNklDMDFNSEI0TzF4dUlDQnNaV1owT2lBMU1DVTdYRzRnSUdobGFXZG9kRG9nTkRCd2VEdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQndZV1JrYVc1bk9pQXdJRFV3Y0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBME1IQjRPMXh1SUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3WEc0Z0lHTnZiRzl5T2lBak5qWTJPMXh1SUNCMGNtRnVjMmwwYVc5dU9pQmhiR3dnTUM0MWN5QmxZWE5sTFdsdUxXOTFkRHRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVllLQzAxTUNVcE8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZlkyOXVkR1Z1ZENCN1hHNGdJSGRvYVhSbExYTndZV05sT2lCdWIzZHlZWEE3WEc0Z0lIUmxlSFF0YjNabGNtWnNiM2M2SUdWc2JHbHdjMmx6TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUcxaGVDMTNhV1IwYURvZ056QXdjSGc3WEc0Z0lHaGxhV2RvZERvZ05EQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVROd2VEdGNiaUFnWTI5c2IzSTZJQ00yTmpZN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5amJHOXpaU3hjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh1SUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdkMmxrZEdnNklEUXdjSGc3WEc0Z0lHaGxhV2RvZERvZ05EQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JzWldaME9pQXdPMXh1SUNCamIyeHZjam9nSTJabVpqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdMbTkxZEd4cGJtVXRhV052YmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lHeGxablE2SURVd0pUdGNiaUFnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdVb0xUVXdKU3dnTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5amJHOXpaU0I3WEc0Z0lISnBaMmgwT2lBd08xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUdOdmJHOXlPaUFqT1RrNU8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVWdMbTkxZEd4cGJtVXRhV052YmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lHeGxablE2SURVd0pUdGNiaUFnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdVb0xUVXdKU3dnTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5amJHOXpaVHBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqTmpZMk8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlwYm1adklDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpOVEEzWVdabE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjkzWVhKdWFXNW5JQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1ZNU9UQXhPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5emRXTmpaWE56SUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWxjbkp2Y2lBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1OV1ExWkR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjR3hoYVc0Z2UxeHVJQ0J0YVc0dGQybGtkR2c2SURFNU1IQjRPMXh1SUNCd1lXUmthVzVuT2lBd0lEVXdjSGdnTUNBeE5YQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5d2JHRnBiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZhVzVtYnlCN1hHNGdJR0p2Y21SbGNpMXNaV1owT2lBMWNIZ2djMjlzYVdRZ0l6VXdOMkZtWlR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlZqWmpobVpqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzZGhjbTVwYm1jZ2UxeHVJQ0JpYjNKa1pYSXRiR1ZtZERvZ05YQjRJSE52Ykdsa0lDTm1aams1TURFN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1aaVpUWTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXpkV05qWlhOeklIdGNiaUFnWW05eVpHVnlMV3hsWm5RNklEVndlQ0J6YjJ4cFpDQWpNRFU0T1RReU8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWlRGbU5tVmlPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5d2JHRnBiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZaWEp5YjNJZ2UxeHVJQ0JpYjNKa1pYSXRiR1ZtZERvZ05YQjRJSE52Ykdsa0lDTm1aalZrTldRN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZeFpqQTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0IzYVdSMGFEb2dNRHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZmNHeGhhVzRnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQXViM1YwYkdsdVpTMXBZMjl1SUh0Y2JpQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZiR2xuYUhRZ2UxeHVJQ0J0YVc0dGQybGtkR2c2SURFNE1IQjRPMXh1SUNCd1lXUmthVzVuT2lBd0lEUXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyeHBaMmgwTG05MWRHeHBibVV0YldWemMyRm5aVjlwYm1adklDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4dUlDQmpiMnh2Y2pvZ0l6VXdOMkZtWlR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZiR2xuYUhRdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNkaGNtNXBibWNnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYRzRnSUdOdmJHOXlPaUFqWm1ZNU9UQXhPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5c2FXZG9kQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjM1ZqWTJWemN5QXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZMjlzYjNJNklDTXdOVGc1TkRJN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMnhwWjJoMExtOTFkR3hwYm1VdGJXVnpjMkZuWlY5bGNuSnZjaUF1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNiaUFnWTI5c2IzSTZJQ05tWmpWa05XUTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJ4cFoyaDBJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1abU8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl5YjNWdVpDQjdYRzRnSUdKdmNtUmxjaTF5WVdScGRYTTZJREl3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM0p2ZFc1a0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5a1pXWmhkV3gwSUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF4T0RCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBME1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5eWIzVnVaQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZaR1ZtWVhWc2RDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ01UQndlRHRjYmlBZ2RHOXdPaUF4TUhCNE8xeHVJQ0JzWldaME9pQXhNSEI0TzF4dUlDQjNhV1IwYURvZ01qQndlRHRjYmlBZ2FHVnBaMmgwT2lBeU1IQjRPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJSbFptRjFiSFF1YjNWMGJHbHVaUzF0WlhOellXZGxYMloxYkd3dGQybGtkR2dnZTF4dUlDQnRhVzR0ZDJsa2RHZzZJREl3TUhCNE8xeHVJQ0J3WVdSa2FXNW5PaUF3SURJd2NIZ2dNQ0EwTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl5YjNWdVpDNXZkWFJzYVc1bExXMWxjM05oWjJWZmNHeGhhVzRnZTF4dUlDQnRhVzR0ZDJsa2RHZzZJREU1TlhCNE8xeHVJQ0J3WVdSa2FXNW5PaUF3SURRd2NIZ2dNQ0F5TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl5YjNWdVpDNXZkWFJzYVc1bExXMWxjM05oWjJWZmNHeGhhVzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMloxYkd3dGQybGtkR2dnZTF4dUlDQnRhVzR0ZDJsa2RHZzZJREl4TlhCNE8xeHVJQ0J3WVdSa2FXNW5PaUF3SURJd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJaMWJHd3RkMmxrZEdnZ2UxeHVJQ0J0YVc0dGQybGtkR2c2SURJd01IQjRPMXh1SUNCd1lXUmthVzVuT2lBd0lERXdjSGdnTUNBMU1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5bWRXeHNMWGRwWkhSb0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5d2JHRnBiaUI3WEc0Z0lHMXBiaTEzYVdSMGFEb2dNak13Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTVRCd2VDQXdJREUxY0hnN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMloxYkd3dGQybGtkR2d1YjNWMGJHbHVaUzF0WlhOellXZGxYMnhwWjJoMElIdGNiaUFnYldsdUxYZHBaSFJvT2lBeU1UQndlRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQXhNSEI0SURBZ05EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZmRtbHphV0pzWlNCN1hHNGdJRzl3WVdOcGRIazZJREU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyaHBaR1JsYmlCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR2S2lBOVBUMDlQU0JUWTNKdmJHeGlZWElnUFQwOVBUMGdLaTljYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJZ2UxeHVJQ0IzYVdSMGFEb2dOM0I0TzF4dUlDQm9aV2xuYUhRNklEZHdlRHRjYmlBZ0xYZGxZbXRwZEMxaWIzSmtaWEl0Y21Ga2FYVnpPaUExY0hnN1hHNTlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSeVlXTnJMWEJwWldObElIdGNiaUFnTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQTFjSGc3WEc1OVhHNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlMWFJvZFcxaU9uWmxjblJwWTJGc0lIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMakkxS1R0Y2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYRzU5WEc0Nk9pMTNaV0pyYVhRdGMyTnliMnhzWW1GeUxYUm9kVzFpT21odmNtbDZiMjUwWVd3Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJ5WjJKaEtEQXNJREFzSURBc0lEQXVNalVwTzF4dUlDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEdGNibjFjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRHaDFiV0k2YUc5MlpYSWdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TXpVcE8xeHVmVnh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2pwb2IzWmxjaUI3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eE5TazdYRzU5WEc0aUxDSXZLaUVnYm05eWJXRnNhWHBsTG1OemN5QjJPQzR3TGpFZ2ZDQk5TVlFnVEdsalpXNXpaU0I4SUdkcGRHaDFZaTVqYjIwdmJtVmpiMnhoY3k5dWIzSnRZV3hwZW1VdVkzTnpJQ292WEhKY2JseHlYRzR2S2lCRWIyTjFiV1Z1ZEZ4eVhHNGdJQ0E5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFNBcUwxeHlYRzVjY2x4dUx5b3FYSEpjYmlBcUlERXVJRU52Y25KbFkzUWdkR2hsSUd4cGJtVWdhR1ZwWjJoMElHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2NseHVJQ29nTWk0Z1VISmxkbVZ1ZENCaFpHcDFjM1J0Wlc1MGN5QnZaaUJtYjI1MElITnBlbVVnWVdaMFpYSWdiM0pwWlc1MFlYUnBiMjRnWTJoaGJtZGxjeUJwYmlCcFQxTXVYSEpjYmlBcUwxeHlYRzVjY2x4dWFIUnRiQ0I3WEhKY2JpQWdiR2x1WlMxb1pXbG5hSFE2SURFdU1UVTdJQzhxSURFZ0tpOWNjbHh1SUNBdGQyVmlhMmwwTFhSbGVIUXRjMmw2WlMxaFpHcDFjM1E2SURFd01DVTdJQzhxSURJZ0tpOWNjbHh1ZlZ4eVhHNWNjbHh1THlvZ1UyVmpkR2x2Ym5OY2NseHVJQ0FnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwZ0tpOWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQlNaVzF2ZG1VZ2RHaGxJRzFoY21kcGJpQnBiaUJoYkd3Z1luSnZkM05sY25NdVhISmNiaUFxTDF4eVhHNWNjbHh1WW05a2VTQjdYSEpjYmlBZ2JXRnlaMmx1T2lBd08xeHlYRzU5WEhKY2JseHlYRzR2S2lwY2NseHVJQ29nVW1WdVpHVnlJSFJvWlNCZ2JXRnBibUFnWld4bGJXVnVkQ0JqYjI1emFYTjBaVzUwYkhrZ2FXNGdTVVV1WEhKY2JpQXFMMXh5WEc1Y2NseHViV0ZwYmlCN1hISmNiaUFnWkdsemNHeGhlVG9nWW14dlkyczdYSEpjYm4xY2NseHVYSEpjYmk4cUtseHlYRzRnS2lCRGIzSnlaV04wSUhSb1pTQm1iMjUwSUhOcGVtVWdZVzVrSUcxaGNtZHBiaUJ2YmlCZ2FERmdJR1ZzWlcxbGJuUnpJSGRwZEdocGJpQmdjMlZqZEdsdmJtQWdZVzVrWEhKY2JpQXFJR0JoY25ScFkyeGxZQ0JqYjI1MFpYaDBjeUJwYmlCRGFISnZiV1VzSUVacGNtVm1iM2dzSUdGdVpDQlRZV1poY21rdVhISmNiaUFxTDF4eVhHNWNjbHh1YURFZ2UxeHlYRzRnSUdadmJuUXRjMmw2WlRvZ01tVnRPMXh5WEc0Z0lHMWhjbWRwYmpvZ01DNDJOMlZ0SURBN1hISmNibjFjY2x4dVhISmNiaThxSUVkeWIzVndhVzVuSUdOdmJuUmxiblJjY2x4dUlDQWdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDBnS2k5Y2NseHVYSEpjYmk4cUtseHlYRzRnS2lBeExpQkJaR1FnZEdobElHTnZjbkpsWTNRZ1ltOTRJSE5wZW1sdVp5QnBiaUJHYVhKbFptOTRMbHh5WEc0Z0tpQXlMaUJUYUc5M0lIUm9aU0J2ZG1WeVpteHZkeUJwYmlCRlpHZGxJR0Z1WkNCSlJTNWNjbHh1SUNvdlhISmNibHh5WEc1b2NpQjdYSEpjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZMjl1ZEdWdWRDMWliM2c3SUM4cUlERWdLaTljY2x4dUlDQm9aV2xuYUhRNklEQTdJQzhxSURFZ0tpOWNjbHh1SUNCdmRtVnlabXh2ZHpvZ2RtbHphV0pzWlRzZ0x5b2dNaUFxTDF4eVhHNTlYSEpjYmx4eVhHNHZLaXBjY2x4dUlDb2dNUzRnUTI5eWNtVmpkQ0IwYUdVZ2FXNW9aWEpwZEdGdVkyVWdZVzVrSUhOallXeHBibWNnYjJZZ1ptOXVkQ0J6YVhwbElHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2NseHVJQ29nTWk0Z1EyOXljbVZqZENCMGFHVWdiMlJrSUdCbGJXQWdabTl1ZENCemFYcHBibWNnYVc0Z1lXeHNJR0p5YjNkelpYSnpMbHh5WEc0Z0tpOWNjbHh1WEhKY2JuQnlaU0I3WEhKY2JpQWdabTl1ZEMxbVlXMXBiSGs2SUcxdmJtOXpjR0ZqWlN3Z2JXOXViM053WVdObE95QXZLaUF4SUNvdlhISmNiaUFnWm05dWRDMXphWHBsT2lBeFpXMDdJQzhxSURJZ0tpOWNjbHh1ZlZ4eVhHNWNjbHh1THlvZ1ZHVjRkQzFzWlhabGJDQnpaVzFoYm5ScFkzTmNjbHh1SUNBZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMGdLaTljY2x4dVhISmNiaThxS2x4eVhHNGdLaUJTWlcxdmRtVWdkR2hsSUdkeVlYa2dZbUZqYTJkeWIzVnVaQ0J2YmlCaFkzUnBkbVVnYkdsdWEzTWdhVzRnU1VVZ01UQXVYSEpjYmlBcUwxeHlYRzVjY2x4dVlTQjdYSEpjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RISmhibk53WVhKbGJuUTdYSEpjYm4xY2NseHVYSEpjYmk4cUtseHlYRzRnS2lBeExpQlNaVzF2ZG1VZ2RHaGxJR0p2ZEhSdmJTQmliM0prWlhJZ2FXNGdRMmh5YjIxbElEVTNMVnh5WEc0Z0tpQXlMaUJCWkdRZ2RHaGxJR052Y25KbFkzUWdkR1Y0ZENCa1pXTnZjbUYwYVc5dUlHbHVJRU5vY205dFpTd2dSV1JuWlN3Z1NVVXNJRTl3WlhKaExDQmhibVFnVTJGbVlYSnBMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtRmlZbkpiZEdsMGJHVmRJSHRjY2x4dUlDQmliM0prWlhJdFltOTBkRzl0T2lCdWIyNWxPeUF2S2lBeElDb3ZYSEpjYmlBZ2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCMWJtUmxjbXhwYm1VN0lDOHFJRElnS2k5Y2NseHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJSFZ1WkdWeWJHbHVaU0JrYjNSMFpXUTdJQzhxSURJZ0tpOWNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSUVGa1pDQjBhR1VnWTI5eWNtVmpkQ0JtYjI1MElIZGxhV2RvZENCcGJpQkRhSEp2YldVc0lFVmtaMlVzSUdGdVpDQlRZV1poY21rdVhISmNiaUFxTDF4eVhHNWNjbHh1WWl4Y2NseHVjM1J5YjI1bklIdGNjbHh1SUNCbWIyNTBMWGRsYVdkb2REb2dZbTlzWkdWeU8xeHlYRzU5WEhKY2JseHlYRzR2S2lwY2NseHVJQ29nTVM0Z1EyOXljbVZqZENCMGFHVWdhVzVvWlhKcGRHRnVZMlVnWVc1a0lITmpZV3hwYm1jZ2IyWWdabTl1ZENCemFYcGxJR2x1SUdGc2JDQmljbTkzYzJWeWN5NWNjbHh1SUNvZ01pNGdRMjl5Y21WamRDQjBhR1VnYjJSa0lHQmxiV0FnWm05dWRDQnphWHBwYm1jZ2FXNGdZV3hzSUdKeWIzZHpaWEp6TGx4eVhHNGdLaTljY2x4dVhISmNibU52WkdVc1hISmNibXRpWkN4Y2NseHVjMkZ0Y0NCN1hISmNiaUFnWm05dWRDMW1ZVzFwYkhrNklHMXZibTl6Y0dGalpTd2diVzl1YjNOd1lXTmxPeUF2S2lBeElDb3ZYSEpjYmlBZ1ptOXVkQzF6YVhwbE9pQXhaVzA3SUM4cUlESWdLaTljY2x4dWZWeHlYRzVjY2x4dUx5b3FYSEpjYmlBcUlFRmtaQ0IwYUdVZ1kyOXljbVZqZENCbWIyNTBJSE5wZW1VZ2FXNGdZV3hzSUdKeWIzZHpaWEp6TGx4eVhHNGdLaTljY2x4dVhISmNibk50WVd4c0lIdGNjbHh1SUNCbWIyNTBMWE5wZW1VNklEZ3dKVHRjY2x4dWZWeHlYRzVjY2x4dUx5b3FYSEpjYmlBcUlGQnlaWFpsYm5RZ1lITjFZbUFnWVc1a0lHQnpkWEJnSUdWc1pXMWxiblJ6SUdaeWIyMGdZV1ptWldOMGFXNW5JSFJvWlNCc2FXNWxJR2hsYVdkb2RDQnBibHh5WEc0Z0tpQmhiR3dnWW5KdmQzTmxjbk11WEhKY2JpQXFMMXh5WEc1Y2NseHVjM1ZpTEZ4eVhHNXpkWEFnZTF4eVhHNGdJR1p2Ym5RdGMybDZaVG9nTnpVbE8xeHlYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXdPMXh5WEc0Z0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNjbHh1SUNCMlpYSjBhV05oYkMxaGJHbG5iam9nWW1GelpXeHBibVU3WEhKY2JuMWNjbHh1WEhKY2JuTjFZaUI3WEhKY2JpQWdZbTkwZEc5dE9pQXRNQzR5TldWdE8xeHlYRzU5WEhKY2JseHlYRzV6ZFhBZ2UxeHlYRzRnSUhSdmNEb2dMVEF1TldWdE8xeHlYRzU5WEhKY2JseHlYRzR2S2lCRmJXSmxaR1JsWkNCamIyNTBaVzUwWEhKY2JpQWdJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5SUNvdlhISmNibHh5WEc0dktpcGNjbHh1SUNvZ1VtVnRiM1psSUhSb1pTQmliM0prWlhJZ2IyNGdhVzFoWjJWeklHbHVjMmxrWlNCc2FXNXJjeUJwYmlCSlJTQXhNQzVjY2x4dUlDb3ZYSEpjYmx4eVhHNXBiV2NnZTF4eVhHNGdJR0p2Y21SbGNpMXpkSGxzWlRvZ2JtOXVaVHRjY2x4dWZWeHlYRzVjY2x4dUx5b2dSbTl5YlhOY2NseHVJQ0FnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwZ0tpOWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQXhMaUJEYUdGdVoyVWdkR2hsSUdadmJuUWdjM1I1YkdWeklHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2NseHVJQ29nTWk0Z1VtVnRiM1psSUhSb1pTQnRZWEpuYVc0Z2FXNGdSbWx5WldadmVDQmhibVFnVTJGbVlYSnBMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtSjFkSFJ2Yml4Y2NseHVhVzV3ZFhRc1hISmNibTl3ZEdkeWIzVndMRnh5WEc1elpXeGxZM1FzWEhKY2JuUmxlSFJoY21WaElIdGNjbHh1SUNCbWIyNTBMV1poYldsc2VUb2dhVzVvWlhKcGREc2dMeW9nTVNBcUwxeHlYRzRnSUdadmJuUXRjMmw2WlRvZ01UQXdKVHNnTHlvZ01TQXFMMXh5WEc0Z0lHeHBibVV0YUdWcFoyaDBPaUF4TGpFMU95QXZLaUF4SUNvdlhISmNiaUFnYldGeVoybHVPaUF3T3lBdktpQXlJQ292WEhKY2JuMWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQlRhRzkzSUhSb1pTQnZkbVZ5Wm14dmR5QnBiaUJKUlM1Y2NseHVJQ29nTVM0Z1UyaHZkeUIwYUdVZ2IzWmxjbVpzYjNjZ2FXNGdSV1JuWlM1Y2NseHVJQ292WEhKY2JseHlYRzVpZFhSMGIyNHNYSEpjYm1sdWNIVjBJSHRjY2x4dUlDQXZLaUF4SUNvdlhISmNiaUFnYjNabGNtWnNiM2M2SUhacGMybGliR1U3WEhKY2JuMWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQlNaVzF2ZG1VZ2RHaGxJR2x1YUdWeWFYUmhibU5sSUc5bUlIUmxlSFFnZEhKaGJuTm1iM0p0SUdsdUlFVmtaMlVzSUVacGNtVm1iM2dzSUdGdVpDQkpSUzVjY2x4dUlDb2dNUzRnVW1WdGIzWmxJSFJvWlNCcGJtaGxjbWwwWVc1alpTQnZaaUIwWlhoMElIUnlZVzV6Wm05eWJTQnBiaUJHYVhKbFptOTRMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtSjFkSFJ2Yml4Y2NseHVjMlZzWldOMElIdGNjbHh1SUNBdktpQXhJQ292WEhKY2JpQWdkR1Y0ZEMxMGNtRnVjMlp2Y20wNklHNXZibVU3WEhKY2JuMWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQkRiM0p5WldOMElIUm9aU0JwYm1GaWFXeHBkSGtnZEc4Z2MzUjViR1VnWTJ4cFkydGhZbXhsSUhSNWNHVnpJR2x1SUdsUFV5QmhibVFnVTJGbVlYSnBMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtSjFkSFJ2Yml4Y2NseHVXM1I1Y0dVOUoySjFkSFJ2YmlkZExGeHlYRzViZEhsd1pUMG5jbVZ6WlhRblhTeGNjbHh1VzNSNWNHVTlKM04xWW0xcGRDZGRJSHRjY2x4dUlDQXRkMlZpYTJsMExXRndjR1ZoY21GdVkyVTZJR0oxZEhSdmJqdGNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSUZKbGJXOTJaU0IwYUdVZ2FXNXVaWElnWW05eVpHVnlJR0Z1WkNCd1lXUmthVzVuSUdsdUlFWnBjbVZtYjNndVhISmNiaUFxTDF4eVhHNWNjbHh1WW5WMGRHOXVPam90Ylc5NkxXWnZZM1Z6TFdsdWJtVnlMRnh5WEc1YmRIbHdaVDBuWW5WMGRHOXVKMTA2T2kxdGIzb3RabTlqZFhNdGFXNXVaWElzWEhKY2JsdDBlWEJsUFNkeVpYTmxkQ2RkT2pvdGJXOTZMV1p2WTNWekxXbHVibVZ5TEZ4eVhHNWJkSGx3WlQwbmMzVmliV2wwSjEwNk9pMXRiM290Wm05amRYTXRhVzV1WlhJZ2UxeHlYRzRnSUdKdmNtUmxjaTF6ZEhsc1pUb2dibTl1WlR0Y2NseHVJQ0J3WVdSa2FXNW5PaUF3TzF4eVhHNTlYSEpjYmx4eVhHNHZLaXBjY2x4dUlDb2dVbVZ6ZEc5eVpTQjBhR1VnWm05amRYTWdjM1I1YkdWeklIVnVjMlYwSUdKNUlIUm9aU0J3Y21WMmFXOTFjeUJ5ZFd4bExseHlYRzRnS2k5Y2NseHVYSEpjYm1KMWRIUnZiam90Ylc5NkxXWnZZM1Z6Y21sdVp5eGNjbHh1VzNSNWNHVTlKMkoxZEhSdmJpZGRPaTF0YjNvdFptOWpkWE55YVc1bkxGeHlYRzViZEhsd1pUMG5jbVZ6WlhRblhUb3RiVzk2TFdadlkzVnpjbWx1Wnl4Y2NseHVXM1I1Y0dVOUozTjFZbTFwZENkZE9pMXRiM290Wm05amRYTnlhVzVuSUh0Y2NseHVJQ0J2ZFhSc2FXNWxPaUF4Y0hnZ1pHOTBkR1ZrSUVKMWRIUnZibFJsZUhRN1hISmNibjFjY2x4dVhISmNiaThxS2x4eVhHNGdLaUJEYjNKeVpXTjBJSFJvWlNCd1lXUmthVzVuSUdsdUlFWnBjbVZtYjNndVhISmNiaUFxTDF4eVhHNWNjbHh1Wm1sbGJHUnpaWFFnZTF4eVhHNGdJSEJoWkdScGJtYzZJREF1TXpWbGJTQXdMamMxWlcwZ01DNDJNalZsYlR0Y2NseHVmVnh5WEc1Y2NseHVMeW9xWEhKY2JpQXFJREV1SUVOdmNuSmxZM1FnZEdobElIUmxlSFFnZDNKaGNIQnBibWNnYVc0Z1JXUm5aU0JoYm1RZ1NVVXVYSEpjYmlBcUlESXVJRU52Y25KbFkzUWdkR2hsSUdOdmJHOXlJR2x1YUdWeWFYUmhibU5sSUdaeWIyMGdZR1pwWld4a2MyVjBZQ0JsYkdWdFpXNTBjeUJwYmlCSlJTNWNjbHh1SUNvZ015NGdVbVZ0YjNabElIUm9aU0J3WVdSa2FXNW5JSE52SUdSbGRtVnNiM0JsY25NZ1lYSmxJRzV2ZENCallYVm5hSFFnYjNWMElIZG9aVzRnZEdobGVTQjZaWEp2SUc5MWRGeHlYRzRnS2lBZ0lDQmdabWxsYkdSelpYUmdJR1ZzWlcxbGJuUnpJR2x1SUdGc2JDQmljbTkzYzJWeWN5NWNjbHh1SUNvdlhISmNibHh5WEc1c1pXZGxibVFnZTF4eVhHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN0lDOHFJREVnS2k5Y2NseHVJQ0JqYjJ4dmNqb2dhVzVvWlhKcGREc2dMeW9nTWlBcUwxeHlYRzRnSUdScGMzQnNZWGs2SUhSaFlteGxPeUF2S2lBeElDb3ZYSEpjYmlBZ2JXRjRMWGRwWkhSb09pQXhNREFsT3lBdktpQXhJQ292WEhKY2JpQWdjR0ZrWkdsdVp6b2dNRHNnTHlvZ015QXFMMXh5WEc0Z0lIZG9hWFJsTFhOd1lXTmxPaUJ1YjNKdFlXdzdJQzhxSURFZ0tpOWNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSUVGa1pDQjBhR1VnWTI5eWNtVmpkQ0IyWlhKMGFXTmhiQ0JoYkdsbmJtMWxiblFnYVc0Z1EyaHliMjFsTENCR2FYSmxabTk0TENCaGJtUWdUM0JsY21FdVhISmNiaUFxTDF4eVhHNWNjbHh1Y0hKdlozSmxjM01nZTF4eVhHNGdJSFpsY25ScFkyRnNMV0ZzYVdkdU9pQmlZWE5sYkdsdVpUdGNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSUZKbGJXOTJaU0IwYUdVZ1pHVm1ZWFZzZENCMlpYSjBhV05oYkNCelkzSnZiR3hpWVhJZ2FXNGdTVVVnTVRBckxseHlYRzRnS2k5Y2NseHVYSEpjYm5SbGVIUmhjbVZoSUh0Y2NseHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSURFdUlFRmtaQ0IwYUdVZ1kyOXljbVZqZENCaWIzZ2djMmw2YVc1bklHbHVJRWxGSURFd0xseHlYRzRnS2lBeUxpQlNaVzF2ZG1VZ2RHaGxJSEJoWkdScGJtY2dhVzRnU1VVZ01UQXVYSEpjYmlBcUwxeHlYRzVjY2x4dVczUjVjR1U5SjJOb1pXTnJZbTk0SjEwc1hISmNibHQwZVhCbFBTZHlZV1JwYnlkZElIdGNjbHh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPeUF2S2lBeElDb3ZYSEpjYmlBZ2NHRmtaR2x1WnpvZ01Ec2dMeW9nTWlBcUwxeHlYRzU5WEhKY2JseHlYRzR2S2lwY2NseHVJQ29nUTI5eWNtVmpkQ0IwYUdVZ1kzVnljMjl5SUhOMGVXeGxJRzltSUdsdVkzSmxiV1Z1ZENCaGJtUWdaR1ZqY21WdFpXNTBJR0oxZEhSdmJuTWdhVzRnUTJoeWIyMWxMbHh5WEc0Z0tpOWNjbHh1WEhKY2JsdDBlWEJsUFNkdWRXMWlaWEluWFRvNkxYZGxZbXRwZEMxcGJtNWxjaTF6Y0dsdUxXSjFkSFJ2Yml4Y2NseHVXM1I1Y0dVOUoyNTFiV0psY2lkZE9qb3RkMlZpYTJsMExXOTFkR1Z5TFhOd2FXNHRZblYwZEc5dUlIdGNjbHh1SUNCb1pXbG5hSFE2SUdGMWRHODdYSEpjYm4xY2NseHVYSEpjYmk4cUtseHlYRzRnS2lBeExpQkRiM0p5WldOMElIUm9aU0J2WkdRZ1lYQndaV0Z5WVc1alpTQnBiaUJEYUhKdmJXVWdZVzVrSUZOaFptRnlhUzVjY2x4dUlDb2dNaTRnUTI5eWNtVmpkQ0IwYUdVZ2IzVjBiR2x1WlNCemRIbHNaU0JwYmlCVFlXWmhjbWt1WEhKY2JpQXFMMXh5WEc1Y2NseHVXM1I1Y0dVOUozTmxZWEpqYUNkZElIdGNjbHh1SUNBdGQyVmlhMmwwTFdGd2NHVmhjbUZ1WTJVNklIUmxlSFJtYVdWc1pEc2dMeW9nTVNBcUwxeHlYRzRnSUc5MWRHeHBibVV0YjJabWMyVjBPaUF0TW5CNE95QXZLaUF5SUNvdlhISmNibjFjY2x4dVhISmNiaThxS2x4eVhHNGdLaUJTWlcxdmRtVWdkR2hsSUdsdWJtVnlJSEJoWkdScGJtY2dhVzRnUTJoeWIyMWxJR0Z1WkNCVFlXWmhjbWtnYjI0Z2JXRmpUMU11WEhKY2JpQXFMMXh5WEc1Y2NseHVXM1I1Y0dVOUozTmxZWEpqYUNkZE9qb3RkMlZpYTJsMExYTmxZWEpqYUMxa1pXTnZjbUYwYVc5dUlIdGNjbHh1SUNBdGQyVmlhMmwwTFdGd2NHVmhjbUZ1WTJVNklHNXZibVU3WEhKY2JuMWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQXhMaUJEYjNKeVpXTjBJSFJvWlNCcGJtRmlhV3hwZEhrZ2RHOGdjM1I1YkdVZ1kyeHBZMnRoWW14bElIUjVjR1Z6SUdsdUlHbFBVeUJoYm1RZ1UyRm1ZWEpwTGx4eVhHNGdLaUF5TGlCRGFHRnVaMlVnWm05dWRDQndjbTl3WlhKMGFXVnpJSFJ2SUdCcGJtaGxjbWwwWUNCcGJpQlRZV1poY21rdVhISmNiaUFxTDF4eVhHNWNjbHh1T2pvdGQyVmlhMmwwTFdacGJHVXRkWEJzYjJGa0xXSjFkSFJ2YmlCN1hISmNiaUFnTFhkbFltdHBkQzFoY0hCbFlYSmhibU5sT2lCaWRYUjBiMjQ3SUM4cUlERWdLaTljY2x4dUlDQm1iMjUwT2lCcGJtaGxjbWwwT3lBdktpQXlJQ292WEhKY2JuMWNjbHh1WEhKY2JpOHFJRWx1ZEdWeVlXTjBhWFpsWEhKY2JpQWdJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5SUNvdlhISmNibHh5WEc0dktseHlYRzRnS2lCQlpHUWdkR2hsSUdOdmNuSmxZM1FnWkdsemNHeGhlU0JwYmlCRlpHZGxMQ0JKUlNBeE1Dc3NJR0Z1WkNCR2FYSmxabTk0TGx4eVhHNGdLaTljY2x4dVhISmNibVJsZEdGcGJITWdlMXh5WEc0Z0lHUnBjM0JzWVhrNklHSnNiMk5yTzF4eVhHNTlYSEpjYmx4eVhHNHZLbHh5WEc0Z0tpQkJaR1FnZEdobElHTnZjbkpsWTNRZ1pHbHpjR3hoZVNCcGJpQmhiR3dnWW5KdmQzTmxjbk11WEhKY2JpQXFMMXh5WEc1Y2NseHVjM1Z0YldGeWVTQjdYSEpjYmlBZ1pHbHpjR3hoZVRvZ2JHbHpkQzFwZEdWdE8xeHlYRzU5WEhKY2JseHlYRzR2S2lCTmFYTmpYSEpjYmlBZ0lEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlJQ292WEhKY2JseHlYRzR2S2lwY2NseHVJQ29nUVdSa0lIUm9aU0JqYjNKeVpXTjBJR1JwYzNCc1lYa2dhVzRnU1VVZ01UQXJMbHh5WEc0Z0tpOWNjbHh1WEhKY2JuUmxiWEJzWVhSbElIdGNjbHh1SUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh5WEc1OVhISmNibHh5WEc0dktpcGNjbHh1SUNvZ1FXUmtJSFJvWlNCamIzSnlaV04wSUdScGMzQnNZWGtnYVc0Z1NVVWdNVEF1WEhKY2JpQXFMMXh5WEc1Y2NseHVXMmhwWkdSbGJsMGdlMXh5WEc0Z0lHUnBjM0JzWVhrNklHNXZibVU3WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVYSEpjYmk4cUlEMDlQVDA5SUVKaGMyVWdQVDA5UFQwZ0tpOWNjbHh1YUhSdGJDeGNjbHh1WW05a2VTQjdYSEpjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lHSmhZMnRuY205MWJtUTZJRUJpWjE5amIyeHZjanRjY2x4dUlDQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNCbWIyNTBMWE5wZW1VNklERTBjSGc3WEhKY2JpQWdiR2x1WlMxb1pXbG5hSFE2SURFMU1DVTdYSEpjYmlBZ1ptOXVkQzFtWVcxcGJIazZJQ2ROYVdOeWIzTnZablFnV1dGSVpXa2dWVWtuTENCQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmp0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1OVhISmNibHh5WEc1aElIdGNjbHh1SUNBbU9teHBibXNzWEhKY2JpQWdKanAyYVhOcGRHVmtMRnh5WEc0Z0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ1kyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJSFZ1WkdWeWJHbHVaVHRjY2x4dUlDQjlYSEpjYm4xY2NseHVYSEpjYm1OdlpHVWdlMXh5WEc0Z0lHWnZiblF0Wm1GdGFXeDVPaUFuVTI5MWNtTmxJRU52WkdVZ1VISnZKeXdnUTI5dWMyOXNZWE1zSUVkbGIzSm5hV0VzSUUxdmJtRmpieXdnYlc5dWIzTndZV05sTENCQmNtbGhiQ3hjY2x4dUlDQWdJSE5oYm5NdGMyVnlhV1k3WEhKY2JuMWNjbHh1SWl3aUx5b2dQVDA5UFQwZ1UyTnliMnhzWW1GeUlEMDlQVDA5SUNvdlhISmNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWElnZTF4eVhHNGdJSGRwWkhSb09pQTNjSGc3WEhKY2JpQWdhR1ZwWjJoME9pQTNjSGc3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYm4xY2NseHVYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRISmhZMnN0Y0dsbFkyVWdlMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzU5WEhKY2JseHlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPblpsY25ScFkyRnNJSHRjY2x4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQnlaMkpoS0RBc0lEQXNJREFzSURBdU1qVXBPMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzU5WEhKY2JseHlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPbWh2Y21sNmIyNTBZV3dnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYm4xY2NseHVYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJNmFHOTJaWElnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHhOU2s3WEhKY2JuMWNjbHh1WEhKY2JqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJNmFHOTJaWElnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHpOU2s3WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVYSEpjYmk4cUlFeGhlVzkxZENBcUwxeHlYRzR1Wkc5amN5QjdYSEpjYmlBZ1pHbHpjR3hoZVRvZ1pteGxlRHRjY2x4dUlDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ2NtOTNPMXh5WEc0Z0lHWnNaWGd0ZDNKaGNEb2dibTkzY21Gd08xeHlYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2NseHVJQ0I2TFdsdVpHVjRPaUF4TzF4eVhHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1ZlZ4eVhHNWNjbHh1THlvZ1FYTnBaR1VnS2k5Y2NseHVMbUZ6YVdSbElIdGNjbHh1SUNCa2FYTndiR0Y1T2lCbWJHVjRPMXh5WEc0Z0lHWnNaWGd0YzJoeWFXNXJPaUF3TzF4eVhHNGdJR1pzWlhndFpHbHlaV04wYVc5dU9pQmpiMngxYlc0N1hISmNiaUFnWm14bGVDMTNjbUZ3T2lCdWIzZHlZWEE3WEhKY2JpQWdkMmxrZEdnNklESTJNSEI0TzF4eVhHNGdJRzFoY21kcGJqb2dNRHRjY2x4dUlDQm9aV2xuYUhRNklERXdNQ1U3WEhKY2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSEJ5YVcxaGNubGZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQmpiMnh2Y2pvZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQmliM2d0YzJoaFpHOTNPaUF3SURBZ05YQjRJREp3ZUNCQVltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lIUnlZVzV6YVhScGIyNHRaSFZ5WVhScGIyNDZJREF1TTNNN1hISmNiaUFnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYm4xY2NseHVYSEpjYmk4cUlFMWhhVzRnS2k5Y2NseHVMbTFoYVc0Z2UxeHlYRzRnSUdac1pYZzZJREU3WEhKY2JpQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh5WEc0Z0lIb3RhVzVrWlhnNklERTdYSEpjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNjbHh1ZlZ4eVhHNGlMQ0pBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1Y2NseHVMbUZ6YVdSbElIdGNjbHh1SUNCbWIyNTBMV1poYldsc2VUb2dKMU52ZFhKalpTQkRiMlJsSUZCeWJ5Y3NJRU52Ym5OdmJHRnpMQ0JIWlc5eVoybGhMQ0JOYjI1aFkyOHNJRzF2Ym05emNHRmpaU3dnUVhKcFlXd3NYSEpjYmlBZ0lDQnpZVzV6TFhObGNtbG1PMXh5WEc1Y2NseHVJQ0FtWDE5b1pXRmtaWElnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3SUdGMWRHODdYSEpjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5dVlYWWdlMXh5WEc0Z0lDQWdabXhsZURvZ01UdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmFESWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hISmNiaUFnSUNCb1pXbG5hSFE2SURVMGNIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTlRSd2VEdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNakJ3ZUR0Y2NseHVJQ0FnSUdadmJuUXRkMlZwWjJoME9pQnViM0p0WVd3N1hISmNiaUFnSUNCbWIyNTBMV1poYldsc2VUb2dSMlZ2Y21kcFlTd2dRMjl1YzI5c1lYTXNJRUZ5YVdGc0xDQnpZVzV6TFhObGNtbG1PMXh5WEc0Z0lDQWdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmd6SUh0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTUNCaGRYUnZPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F5TUhCNE8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhObkI0TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJ4cGMzUWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNVEJ3ZUNBd08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgybDBaVzBnZTF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF6TW5CNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRE15Y0hnN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lETXdjSGc3WEhKY2JpQWdJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnTG05MWRHeHBibVV0WTJoaGNIUmxjbk1nZTF4eVhHNGdJQ0FnWm14bGVEb2dNVHRjY2x4dVhISmNiaUFnSUNBbVgxOXRZV2x1SUh0Y2NseHVJQ0FnSUNBZ0pqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJZ2UxeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIwYUdseVpGOTBaWGgwWDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUNBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCbWIzVnlkR2hmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbVgxOXdiR0ZqWldodmJHUmxjaUI3WEhKY2JpQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCelpXTnZibVJoY25sZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdZbTl5WkdWeUxXeGxablE2SUROd2VDQnpiMnhwWkNCQWQyaHBkR1U3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0psOWZZVzVqYUc5eUlIdGNjbHh1SUNBZ0lDQWdKanBzYVc1cklIdGNjbHh1SUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRR0p2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQjBaWGgwTFdSbFkyOXlZWFJwYjI0NklHNXZibVU3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1k2ZG1semFYUmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnZEdWNGRDMWtaV052Y21GMGFXOXVPaUJ1YjI1bE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUhWdVpHVnliR2x1WlR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1pmWVdOMGFYWmxJSHRjY2x4dUlDQWdJQ0FnSmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5aGJtTm9iM0lnZTF4eVhHNGdJQ0FnSUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNBZ0lDQW1PblpwYzJsMFpXUXNYSEpjYmlBZ0lDQWdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNGlMQ0pBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1Y2NseHVMbTFoYVc0Z2UxeHlYRzRnSUNaZlgyaGxZV1JsY2l4Y2NseHVJQ0FtWDE5bWIyOTBaWElnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3SUdGMWRHODdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXhaVzA3WEhKY2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYURFZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEhKY2JpQWdJQ0J3WVdSa2FXNW5MWFJ2Y0RvZ01XVnRPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUExWlcwN1hISmNiaUFnSUNCbWIyNTBMWGRsYVdkb2REb2dibTl5YldGc08xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJREpsYlR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5dVlXMWxJSHRjY2x4dUlDQWdJR052Ykc5eU9pQWpOVEEzWVdabE8xeHlYRzRnSUNBZ1ptOXVkQzEzWldsbmFIUTZJRzV2Y20xaGJEdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM1JoWjJ4cGJtVWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXhaVzBnWVhWMGJ6dGNjbHh1SUNBZ0lHMWhlQzEzYVdSMGFEb2dPVFl3Y0hnN1hISmNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dNUzR6WlcwN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklESmxiVHRjY2x4dUlDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQm1iMjUwTFhkbGFXZG9kRG9nTVRBd08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyTmtiaUI3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREpsYlNBd08xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01tVnRPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4Tm5CNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJREUxTUNVN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQVltZGZZMjlzYjNJN1hISmNiaUFnSUNCaWIzSmtaWEl0ZEc5d09pQXhjSGdnYzI5c2FXUWdRR0p2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjaTFpYjNSMGIyMDZJREZ3ZUNCemIyeHBaQ0JBWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ1kyOXNiM0k2SUVCMGFHbHlaRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJSdmQyNXNiMkZrSUh0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTVdWdElHRjFkRzg3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNakF3Y0hnN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZlluVjBkRzl1SUh0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUdsdWJHbHVaUzFpYkc5amF6dGNjbHh1SUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURSd2VEdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklERTBjSGdnTWpsd2VEdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNVGh3ZUR0Y2NseHVJQ0FnSUdadmJuUXRabUZ0YVd4NU9pQW5VMjkxY21ObElFTnZaR1VnVUhKdkp5d2dRMjl1YzI5c1lYTXNJRWRsYjNKbmFXRXNJRTF2Ym1GamJ5d2diVzl1YjNOd1lXTmxMQ0JCY21saGJDeGNjbHh1SUNBZ0lDQWdjMkZ1Y3kxelpYSnBaanRjY2x4dUlDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJ6ZFdOalpYTnpYMk52Ykc5eU8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVYSEpjYmlBZ0lDQW1PbXhwYm1zc1hISmNiaUFnSUNBbU9uWnBjMmwwWldRc1hISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJQ0FnZEdWNGRDMWtaV052Y21GMGFXOXVPaUJ1YjI1bE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZabTl2ZEdWeUlIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DQXpaVzA3WEhKY2JpQWdJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQjlYSEpjYm4xY2NseHVJaXdpUUdsdGNHOXlkQ0FuWTI5c2IzSnpKenRjY2x4dVhISmNiaTV6WldOMGFXOXVJSHRjY2x4dUlDQnRZWEpuYVc0NklERmxiU0F3TzF4eVhHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ1pmWDJobFlXUmxjaXhjY2x4dUlDQW1YMTlqYjI1MFpXNTBMRnh5WEc0Z0lDWmZYMlp2YjNSbGNpQjdYSEpjYmlBZ0lDQnRZWEpuYVc0NklEQTdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXdJRE5sYlR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFYUnNaU0I3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSFJvYVhKa1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlvTXlCN1hISmNiaUFnSUNCamIyeHZjam9nUUhCeWFXMWhjbmxmWTI5c2IzSTdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREV1TXpWbGJUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmcwSUh0Y2NseHVJQ0FnSUdadmJuUXRjMmw2WlRvZ01TNHhaVzA3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSFJvYVhKa1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlvTlNCN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERmxiVHRjY2x4dUlDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlrYkN4Y2NseHVJQ0FtWDE5a2RDeGNjbHh1SUNBbVgxOWtaQ0I3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJSc0lIdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNjbHh1SUNBZ0lIb3RhVzVrWlhnNklERTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlrZENCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlrWkNCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FITjFZMk5sYzNOZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5d2NtVWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXlaVzBnTUR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURGbGJUdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNVFJ3ZUR0Y2NseHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQXhOVEFsTzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHRjY2x4dUlDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJpWjE5amIyeHZjanRjY2x4dUlDQWdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJRUJpYjNKa1pYSmZZMjlzYjNJN1hISmNiaUFnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUEwY0hnN1hISmNiaUFnSUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMk52WkdVZ2UxeHlYRzRnSUNBZ1pHbHpjR3hoZVRvZ1lteHZZMnM3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOW1iMjkwWlhJZ2UxeHlYRzRnSUNBZ1ltOXlaR1Z5TFhSdmNEb2dNWEI0SUhOdmJHbGtJRUJpYjNKa1pYSmZZMjlzYjNJN1hISmNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQXpaVzA3WEhKY2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBWW1kZlkyOXNiM0k3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRR1p2ZFhKMGFGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmZEdGaWJHVWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXhaVzBnWVhWMGJ6dGNjbHh1SUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc0Z0lDQWdZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTkwYUN4Y2NseHVJQ0FtWDE5MFpDQjdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQTFjSGdnTVRad2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF5Tm5CNE8xeHlYRzRnSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTkwYUNCN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQVltZGZZMjlzYjNJN1hISmNiaUFnZlZ4eVhHNTlYSEpjYmx4eVhHNUFiV1ZrYVdFZ0tHMWhlQzEzYVdSMGFEb2dORGd3Y0hncElIdGNjbHh1SUNBdWMyVmpkR2x2YmlCN1hISmNiaUFnSUNBbVgxOW9aV0ZrWlhJc1hISmNiaUFnSUNBbVgxOWpiMjUwWlc1MElIdGNjbHh1SUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0F4WlcwN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNTlYSEpjYmlJc0lrQnBiWEJ2Y25RZ0p5NHZZMjlzYjNKekp6dGNjbHh1WEhKY2JpNWpZWE5sSUh0Y2NseHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEhKY2JpQWdlaTFwYm1SbGVEb2dNVHRjY2x4dUlDQmthWE53YkdGNU9pQm5jbWxrTzF4eVhHNGdJR2R5YVdRdGRHVnRjR3hoZEdVdFkyOXNkVzF1Y3pvZ2NtVndaV0YwS0RJc0lERm1jaWs3WEhKY2JpQWdaMkZ3T2lBME1IQjRPMXh5WEc0Z0lIQmhaR1JwYm1jNklERmxiVHRjY2x4dUlDQmliM0prWlhJdGRHOXdPaUF4Y0hnZ2MyOXNhV1FnUUdKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnUUdKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNWNjbHh1SUNBbU9tRm1kR1Z5SUh0Y2NseHVJQ0FnSUdOdmJuUmxiblE2SUNjbk8xeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUd4bFpuUTZJRFV3SlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTVRBd0pUdGNjbHh1SUNBZ0lIZHBaSFJvT2lBd08xeHlYRzRnSUNBZ1ltOXlaR1Z5TFd4bFpuUTZJREZ3ZUNCemIyeHBaQ0JBWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgzQnlaU3hjY2x4dUlDQW1YMTkwWlhoMFlYSmxZU0I3WEhKY2JpQWdJQ0JtYjI1MExYTnBlbVU2SURFemNIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTVRVd0pUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM0J5WlN4Y2NseHVJQ0FtWDE5amIyUmxMRnh5WEc0Z0lDWmZYM1JsZUhSaGNtVmhJSHRjY2x4dUlDQWdJR1p2Ym5RdFptRnRhV3g1T2lBblEyOTFjbWxsY2lCT1pYY25MQ0JEYjI1emIyeGhjeXdnUjJWdmNtZHBZU3dnUVhKcFlXd3NJSE5oYm5NdGMyVnlhV1k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5d2NtVWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNV1Z0TzF4eVhHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUdKblgyTnZiRzl5TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTkhCNE8xeHlYRzRnSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZkRzl2YkdKaGNpQjdYSEpjYmlBZ0lDQnRZWEpuYVc0NklEQWdZWFYwYnp0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTXpad2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF6Tm5CNE8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhOSEI0TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUNBeE5uQjRPMXh5WEc0Z0lDQWdkR1Y0ZEMxaGJHbG5iam9nY21sbmFIUTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZZV04wYVc5dUxGeHlYRzRnSUNaZlgzSmxiVzkyWlNCN1hISmNiaUFnSUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNCMWMyVnlMWE5sYkdWamREb2dibTl1WlR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyRmpkR2x2YmlCN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEhKY2JpQWdJQ0J3WVdSa2FXNW5MV3hsWm5RNklERXdjSGc3WEhKY2JseHlYRzRnSUNBZ0pqcG1hWEp6ZEMxamFHbHNaQ0I3WEhKY2JpQWdJQ0FnSUhCaFpHUnBibWN0YkdWbWREb2dNRHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNKbGJXOTJaU0I3WEhKY2JpQWdJQ0JtYkc5aGREb2djbWxuYUhRN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOWpiMjV6YjJ4bElIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DQmhkWFJ2TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4T0RCd2VEdGNjbHh1SUNBZ0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lFQmliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmZEdWNGRHRnlaV0VnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3SUdGMWRHODdYSEpjYmlBZ0lDQjNhV1IwYURvZ01UQXdKVHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0FnSUdKdmNtUmxjam9nYm05dVpUdGNjbHh1SUNBZ0lHOTFkR3hwYm1VNklHNXZibVU3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF4WlcwN1hISmNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR0YxZEc4N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXNhWE4wTEZ4eVhHNGdJQ1pmWDJsMFpXMGdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNRHRjY2x4dUlDQWdJR3hwYzNRdGMzUjViR1V0ZEhsd1pUb2dibTl1WlR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5c2FYTjBJSHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNell3Y0hnN1hISmNiaUFnSUNCaWIzSmtaWEl0ZEc5d09pQXhjSGdnYzI5c2FXUWdRR0p2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjaTFpYjNSMGIyMDZJREZ3ZUNCemIyeHBaQ0JBWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhNM0I0TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlwZEdWdElIdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ016WndlRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBek5uQjRPMXh5WEc0Z0lDQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01DQXhObkI0TzF4eVhHNWNjbHh1SUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFhRzkyWlhKZlltZGZZMjlzYjNJN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNTlYSEpjYmlJc0lqcHliMjkwSUh0Y2NseHVJQ0F0TFc5MWRHeHBibVV0ZWtsdVpHVjRPaUF5TURBd08xeHlYRzRnSUMwdGIzVjBiR2x1WlMxemRHbGphM2t0YUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUMwdGIzVjBiR2x1WlMxamFHRndkR1Z5Y3kxM2FXUjBhRG9nTVRBd0pUdGNjbHh1ZlZ4eVhHNGlMQ0l2S2lBOVBUMDlQVDA5UFQwOUlHbGpiMjR1ZEdobGJXVWdMU0J6ZG1jZzVadSs1cUNINTVxRTVxQzM1YnlQSUQwOVBUMDlQVDA5UFQwZ0tpOWNjbHh1TG05MWRHeHBibVV0YVdOdmJpQjdYSEpjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHlYRzRnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnWkdsemNHeGhlVG9nYVc1c2FXNWxMV0pzYjJOck8xeHlYRzRnSUhabGNuUnBZMkZzTFdGc2FXZHVPaUJ0YVdSa2JHVTdYSEpjYmlBZ2QybGtkR2c2SURGbGJUdGNjbHh1SUNCb1pXbG5hSFE2SURGbGJUdGNjbHh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNWNjbHh1SUNBbVgxOXpkbWNnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTWp0Y2NseHVJQ0FnSUhSdmNEb2dOVEFsTzF4eVhHNGdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnZDJsa2RHZzZJREZsYlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTVdWdE8xeHlYRzRnSUNBZ1ptbHNiRG9nWTNWeWNtVnVkR052Ykc5eU8xeHlYRzRnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVW9MVFV3SlN3Z0xUVXdKU2s3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlvYVdSa1pXNGdlMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2NseHVJQ0I5WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVYSEpjYmk1dmRYUnNhVzVsTFdobFlXUnBibWNnZTF4eVhHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibHh5WEc0Z0lDWmZYMkZ1WTJodmNpQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNWNjbHh1SUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNZNmRtbHphWFJsWkN4Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUdOdmJHOXlPaUJBY0hKcGJXRnllVjlqYjJ4dmNqdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGFHVmhaR2x1WjE5ZllXNWphRzl5SUh0Y2NseHVJQ0FnSUNBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDl6ZEdGeWRDQjdYSEpjYmlBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdiM1psY21ac2IzYzZJSFpwYzJsaWJHVTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnTG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlJSHRjY2x4dUlDQWdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnSUNCNkxXbHVaR1Y0T2lBeU8xeHlYRzRnSUNBZ0lDQjBiM0E2SURVd0pUdGNjbHh1SUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh5WEc0Z0lDQWdJQ0JzWldaME9pQXRNV1Z0TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dWZWeHlYRzRpTENKQWFXMXdiM0owSUNkMllYSnBZV0pzWlhNbk8xeHlYRzVBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1QWFXMXdiM0owSUNkemFHRmtiM2NuTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ2VpMXBibVJsZURvZ0xURTdYSEpjYmlBZ2RHOXdPaUF3TzF4eVhHNGdJR3hsWm5RNklEQTdYSEpjYmlBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUhkcFpIUm9PaUF4TURBbE8xeHlYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNjbHh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh5WEc0Z0lIWnBjMmxpYVd4cGRIazZJR2hwWkdSbGJqdGNjbHh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNWNjbHh1SUNBbVgxOXRiMlJoYkNCN1hISmNiaUFnSUNBdWMyaGhaRzkzWDJ4cFoyaDBYM0psWjNWc1lYSW9LVHRjY2x4dUlDQWdJR1JwYzNCc1lYazZJR1pzWlhnN1hISmNiaUFnSUNCbWJHVjRMV1JwY21WamRHbHZiam9nWTI5c2RXMXVPMXh5WEc0Z0lDQWdabXhsZUMxM2NtRndPaUJ1YjNkeVlYQTdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXlNVHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJSFJ5WVc1emFYUnBiMjR0WkhWeVlYUnBiMjQ2SURBdU5ITTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZhR1ZoWkdWeUxGeHlYRzRnSUNaZlgyMWhhVzRzWEhKY2JpQWdKbDlmWm05dmRHVnlJSHRjY2x4dUlDQWdJSGRwWkhSb09pQXhNREFsTzF4eVhHNGdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmhsWVdSbGNpeGNjbHh1SUNBbVgxOW1iMjkwWlhJZ2UxeHlYRzRnSUNBZ1pteGxlQzF6YUhKcGJtczZJREE3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFYUnNaU3hjY2x4dUlDQW1YMTl0WVdsdUxGeHlYRzRnSUNaZlgyWnZiM1JsY2lCN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5b1pXRmtaWElzWEhKY2JpQWdKbDlmZEdsMGJHVWdlMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh5WEc0Z0lDQWdlaTFwYm1SbGVEb2dNVHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBMU1uQjRPMXh5WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SURVeWNIZzdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhObkI0TzF4eVhHNGdJQ0FnWm05dWRDMTNaV2xuYUhRNklEUXdNRHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNQ0F4Tm5CNE8xeHlYRzRnSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjY2x4dUlDQWdJR0p2Y21SbGNpMWliM1IwYjIwNklERndlQ0J6YjJ4cFpDQkFjSEpwYldGeWVWOWliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5amJHOXpaU0I3WEhKY2JpQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0J5YVdkb2REb2dNVEp3ZUR0Y2NseHVJQ0FnSUhkcFpIUm9PaUF5TUhCNE8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeU1IQjRPMXh5WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SURJd2NIZzdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FHWnZkWEowYUY5MFpYaDBYMk52Ykc5eU8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXlNSEI0TzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4eVhHNGdJQ0FnWTNWeWMyOXlPaUJ3YjJsdWRHVnlPMXh5WEc0Z0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzFwWTI5dUlIdGNjbHh1SUNBZ0lDQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPMXh5WEc0Z0lDQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnSUNCMGIzQTZJREE3WEhKY2JpQWdJQ0FnSUd4bFpuUTZJREE3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQWRHaHBjbVJmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyMWhhVzRnZTF4eVhHNGdJQ0FnWm14bGVEb2dNVHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZabTl2ZEdWeUlIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DQmhkWFJ2TzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ2NtbG5hSFE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYjNabGNteGhlU0I3WEhKY2JpQWdJQ0JqYjI1MFpXNTBPaUFuSnp0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnSUNCMGIzQTZJREE3WEhKY2JpQWdJQ0JzWldaME9pQXdPMXh5WEc0Z0lDQWdkMmxrZEdnNklERXdNQ1U3WEhKY2JpQWdJQ0JvWldsbmFIUTZJREV3TUNVN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0J2Y0dGamFYUjVPaUF3TGpFN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5eWRHd3NYSEpjYmlBZ0psOXNkSElnZTF4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNaZmRHbHVlU0I3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURJNE1IQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFwYm1rZ2UxeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQTBPREJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5emJXRnNiQ0I3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURVME1IQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUhkcFpIUm9PaUEyT0RCd2VEdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXRaV1JwZFcwZ2UxeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQTNNakJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c1lYSm5aU0I3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURrMk1IQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKMGJDQjdYSEpjYmlBZ0lDQmliM0prWlhJdGJHVm1kRG9nTVhCNElITnZiR2xrSUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5MGFXNTVJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnlhV2RvZERvZ0xUSTVNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXRhVzVwSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J5YVdkb2REb2dMVFE1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl6YldGc2JDQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2NtbG5hSFE2SUMwMU5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmNtVm5kV3hoY2lCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnY21sbmFIUTZJQzAyT1RCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYldWa2FYVnRJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnlhV2RvZERvZ0xUY3pNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXNZWEpuWlNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnY21sbmFIUTZJQzA1TnpCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmJIUnlJSHRjY2x4dUlDQWdJR0p2Y21SbGNpMXlhV2RvZERvZ01YQjRJSE52Ykdsa0lFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjanRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5SUh0Y2NseHVJQ0FnSUNBZ0psOTBhVzU1SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0JzWldaME9pQXRNamt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFwYm1rZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUd4bFpuUTZJQzAwT1RCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYzIxaGJHd2dlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHeGxablE2SUMwMU5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmNtVm5kV3hoY2lCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYkdWbWREb2dMVFk1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl0WldScGRXMGdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHeGxablE2SUMwM016QndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJHRnlaMlVnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR3hsWm5RNklDMDVOekJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZEhSaUxGeHlYRzRnSUNaZlluUjBJSHRjY2x4dUlDQWdJR3hsWm5RNklEQTdYSEpjYmlBZ0lDQjNhV1IwYURvZ01UQXdKVHRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5SUh0Y2NseHVJQ0FnSUNBZ0psOTBhVzU1SUh0Y2NseHVJQ0FnSUNBZ0lDQm9aV2xuYUhRNklESTBNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxcGJta2dlMXh5WEc0Z0lDQWdJQ0FnSUdobGFXZG9kRG9nTXpJd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZjMjFoYkd3Z2UxeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dNell3Y0hnN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmNtVm5kV3hoY2lCN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQTBNREJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5dFpXUnBkVzBnZTF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ05EUXdjSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYkdGeVoyVWdlMXh5WEc0Z0lDQWdJQ0FnSUdobGFXZG9kRG9nTkRnd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZEhSaUlIdGNjbHh1SUNBZ0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNCQWNISnBiV0Z5ZVY5aWIzSmtaWEpmWTI5c2IzSTdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNaZmRHbHVlU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdkRzl3T2lBdE1qVXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMXBibWtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSFJ2Y0RvZ0xUTXpNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXpiV0ZzYkNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnZEc5d09pQXRNemN3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lIUnZjRG9nTFRReE1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5dFpXUnBkVzBnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSFJ2Y0RvZ0xUUTFNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXNZWEpuWlNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnZEc5d09pQXRORGt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJKMGRDQjdYSEpjYmlBZ0lDQjBiM0E2SUdsdWFYUnBZV3c3WEhKY2JpQWdJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJQ0FnSUNBbVgzUnBibmtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dMVEkxTUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl0YVc1cElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCaWIzUjBiMjA2SUMwek16QndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmMyMWhiR3dnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dMVE0zTUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl5WldkMWJHRnlJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQmliM1IwYjIwNklDMDBNVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV1ZrYVhWdElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCaWIzUjBiMjA2SUMwME5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJHRnlaMlVnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dMVFE1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5dmNHVnVaV1FnZTF4eVhHNGdJQ0FnZG1semFXSnBiR2wwZVRvZ2RtbHphV0pzWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SUhaaGNpZ3RMVzkxZEd4cGJtVXRla2x1WkdWNEtUdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh5WEc1Y2NseHVJQ0FnSUNBZ0psOXlkR3dnZTF4eVhHNGdJQ0FnSUNBZ0lISnBaMmgwT2lBd08xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0FnSUNBZ2JHVm1kRG9nTUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5MGRHSWdlMXh5WEc0Z0lDQWdJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlpZEhRZ2UxeHlYRzRnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dNRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5dlptWnpaWFFnZTF4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNaZmNuUnNMRnh5WEc0Z0lDQWdJQ0FtWDJ4MGNpQjdYSEpjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUJqWVd4aktERXdNQ1VnTFNBMFpXMHBPMXh5WEc0Z0lDQWdJQ0FnSUhSdmNEb2dOVEFsTzF4eVhHNGdJQ0FnSUNBZ0lIUnlZVzV6Wm05eWJUb2dkSEpoYm5Oc1lYUmxXU2d0TlRBbEtUdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOTBkR0lzWEhKY2JpQWdJQ0FnSUNaZlluUjBJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nWTJGc1l5Z3hNREFsSUMwZ05HVnRLVHRjY2x4dUlDQWdJQ0FnSUNCc1pXWjBPaUExTUNVN1hISmNiaUFnSUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZZS0MwMU1DVXBPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjl3Wlc1bFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQW1YM0owYkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhKcFoyaDBPaUF5WlcwN1hISmNiaUFnSUNBZ0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQWdJQ0FnSmw5c2RISWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaV1owT2lBeVpXMDdYSEpjYmlBZ0lDQWdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FnSUNBZ0psOTBkR0lnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYjNBNklESmxiVHRjY2x4dUlDQWdJQ0FnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNBZ0lDQW1YMkowZENCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdKdmRIUnZiVG9nTW1WdE8xeHlYRzRnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDloZFhSdklIdGNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YM0owYkN4Y2NseHVJQ0FnSUNBZ0psOXNkSElnZTF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ1lYVjBienRjY2x4dUlDQWdJQ0FnSUNCdFlYZ3RhR1ZwWjJoME9pQmpZV3hqS0RFd01DVWdMU0EwWlcwcE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMloxYkd3Z2UxeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01EdGNjbHh1SUNCOVhISmNibjFjY2x4dUlpd2lMeW9xWEhKY2JpQXFJRzFwZUdsdWN5NXNaWE56SUMwZzViZWw1WVczNVllOTVwV3dYSEpjYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2NseHVJQ29nUTNKbFlYUmxaQ0JDZVRvZ1dXRnZhR0ZwZUdsaGIxeHlYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR4TVZ4eVhHNGdLaTljY2x4dVFHbHRjRzl5ZENBbkxpOWpiMnh2Y25Nbk8xeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPYVdoK2Fjck9lY2dlZVZwZVdIdmVhVnNDQTlQVDA5UFQwZ0tpOWNjbHh1TG1Wc2JHbHdjMmx6SUNoQWJHbHVaWE1wSUhkb1pXNGdLRUJzYVc1bGN6MHhLU0I3WEhKY2JpQWdkMmhwZEdVdGMzQmhZMlU2SUc1dmQzSmhjRHRjY2x4dUlDQjBaWGgwTFc5MlpYSm1iRzkzT2lCbGJHeHBjSE5wY3p0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1OVhISmNibHh5WEc0dVpXeHNhWEJ6YVhNZ0tFQnNhVzVsY3lrZ2QyaGxiaUFvUUd4cGJtVnpQajB5S1NCN1hISmNiaUFnTFhkbFltdHBkQzFzYVc1bExXTnNZVzF3T2lCQWJHbHVaWE03WEhKY2JpQWdaR2x6Y0d4aGVUb2dZbTk0TzF4eVhHNGdJQzEzWldKcmFYUXRZbTk0TFc5eWFXVnVkRG9nZG1WeWRHbGpZV3c3WEhKY2JpQWdkR1Y0ZEMxdmRtVnlabXh2ZHpvZ1pXeHNhWEJ6YVhNN1hISmNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dWZWeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPV2NodWlua3VhZ3QrVzhqK2l1dnVlOXJ1V0h2ZWFWc0NBOVBUMDlQVDBnS2k5Y2NseHVMbkpoWkdsMWN5aEFiblZ0T2lBeWNIZ3BJSHRjY2x4dUlDQmliM0prWlhJdGNtRmthWFZ6T2lCQWJuVnRPMXh5WEc1OVhISmNibHh5WEc0dWNtRmthWFZ6WDI1dmJtVW9LU0I3WEhKY2JpQWdMbkpoWkdsMWN5Z3dLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5dGFXNXBLQ2tnZTF4eVhHNGdJQzV5WVdScGRYTW9NbkI0S1R0Y2NseHVmVnh5WEc1Y2NseHVMbkpoWkdsMWMxOXpiV0ZzYkNncElIdGNjbHh1SUNBdWNtRmthWFZ6S0ROd2VDazdYSEpjYm4xY2NseHVYSEpjYmk1eVlXUnBkWE5mY21WbmRXeGhjaWdwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLRFJ3ZUNrN1hISmNibjFjY2x4dVhISmNiaTV5WVdScGRYTmZiV1ZrYVhWdEtDa2dlMXh5WEc0Z0lDNXlZV1JwZFhNb05YQjRLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5c1lYSm5aU2dwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLREV3Y0hncE8xeHlYRzU5WEhKY2JseHlYRzR1Y21Ga2FYVnpYMmgxWjJVb0tTQjdYSEpjYmlBZ0xuSmhaR2wxY3lneE5uQjRLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5eWIzVnVaQ2dwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLRE13Y0hncE8xeHlYRzU5WEhKY2JseHlYRzR2S2lBOVBUMDlQVDBnNlppMDViMng1cUMzNWJ5UDZLNis1NzJ1NVllOTVwV3dJRDA5UFQwOVBTQXFMMXh5WEc0dWMyaGhaRzkzS0VCdlptWnpaWFE2SURBZ01DQTJjSGdnTVhCNExDQkFZMjlzYjNJNklFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjaWtnZTF4eVhHNGdJR0p2ZUMxemFHRmtiM2M2SUVCdlptWnpaWFFnUUdOdmJHOXlPMXh5WEc1OVhISmNibHh5WEc0dWMyaGhaRzkzWDNKbFozVnNZWElvUUdOdmJHOXlPaUJBY0hKcGJXRnllVjlpYjNKa1pYSmZZMjlzYjNJcElIdGNjbHh1SUNBdWMyaGhaRzkzS0RBZ01DQTJjSGdnTVhCNExDQkFZMjlzYjNJcE8xeHlYRzU5WEhKY2JseHlYRzR1YzJoaFpHOTNYMnhoY21kbEtFQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlLU0I3WEhKY2JpQWdMbk5vWVdSdmR5Z3dJREFnTVRKd2VDQXhjSGdzSUVCamIyeHZjaWs3WEhKY2JuMWNjbHh1WEhKY2JpNXphR0ZrYjNkZmJHbG5hSFJmY21WbmRXeGhjaWdwSUh0Y2NseHVJQ0F1YzJoaFpHOTNYM0psWjNWc1lYSW9LVHRjY2x4dWZWeHlYRzVjY2x4dUxuTm9ZV1J2ZDE5c2FXZG9kRjlzWVhKblpTZ3BJSHRjY2x4dUlDQXVjMmhoWkc5M1gyeGhjbWRsS0NrN1hISmNibjFjY2x4dVhISmNiaTV6YUdGa2IzZGZaR0Z5YTE5eVpXZDFiR0Z5S0NrZ2UxeHlYRzRnSUM1emFHRmtiM2RmY21WbmRXeGhjaWhBYzJWamIyNWtZWEo1WDJKdmNtUmxjbDlqYjJ4dmNpazdYSEpjYm4xY2NseHVJaXdpUUdsdGNHOXlkQ0FuZG1GeWFXRmliR1Z6Snp0Y2NseHVRR2x0Y0c5eWRDQW5ZMjlzYjNKekp6dGNjbHh1UUdsdGNHOXlkQ0FuWld4c2FYQnphWE1uTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk1nZTF4eVhHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNCM2FXUjBhRG9nZG1GeUtDMHRiM1YwYkdsdVpTMWphR0Z3ZEdWeWN5MTNhV1IwYUNrN1hISmNiaUFnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYmx4eVhHNGdJQ1l0Y0dGeVpXNTBJSHRjY2x4dUlDQWdJSFJ5WVc1emFYUnBiMjQ2SURBdU0zTWdaV0Z6WlMxcGJpMXZkWFE3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFYUnNaU0I3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREFnTVRad2VEdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ05EQndlRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBME1IQjRPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F4Tm5CNE8xeHlYRzRnSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNVFp3ZUR0Y2NseHVJQ0FnSUdadmJuUXRkMlZwWjJoME9pQTBNREE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYldGcGJpQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMnhwYzNRc1hISmNiaUFnSmw5ZmMzVmlhbVZqZEN4Y2NseHVJQ0FtWDE5cGRHVnRJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREk3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3TzF4eVhHNGdJQ0FnYkdsemRDMXpkSGxzWlMxMGVYQmxPaUJ1YjI1bE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyeHBjM1FnZTF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUM0MVpXMGdNRHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNOMVltcGxZM1FnZTF4eVhHNGdJQ0FnY0dGa1pHbHVaeTFzWldaME9pQXhaVzA3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5cGRHVnRJSHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBek1IQjRPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgzQnNZV05sYUc5c1pHVnlJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREU3WEhKY2JpQWdJQ0IwYjNBNklEQTdYSEpjYmlBZ0lDQnNaV1owT2lBd08xeHlYRzRnSUNBZ2QybGtkR2c2SURFd01DVTdYSEpjYmlBZ0lDQm9aV2xuYUhRNklETXdjSGc3WEhKY2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBYUc5MlpYSmZZbWRmWTI5c2IzSTdYSEpjYmlBZ0lDQmliM0prWlhJdGJHVm1kRG9nTW5CNElITnZiR2xrSUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdkSEpoYm5OcGRHbHZiaTFrZFhKaGRHbHZiam9nTUM0eWN6dGNjbHh1SUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmWVc1amFHOXlJSHRjY2x4dUlDQWdJQzVsYkd4cGNITnBjeWd4S1R0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F4TGpWbGJUdGNjbHh1WEhKY2JpQWdJQ0FtT214cGJtc3NYSEpjYmlBZ0lDQW1PblpwYzJsMFpXUXNYSEpjYmlBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4eVhHNGdJQ0FnSUNCamIyeHZjam9nUUhObFkyOXVaR0Z5ZVY5MFpYaDBYMk52Ykc5eU8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOWpiMlJsSUh0Y2NseHVJQ0FnSUhCaFpHUnBibWN0Y21sbmFIUTZJREF1TldWdE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOW9hV2RvYkdsbmFIUWdlMXh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSWdlMXh5WEc0Z0lDQWdJQ0FtT214cGJtc3NYSEpjYmlBZ0lDQWdJQ1k2ZG1semFYUmxaQ3hjY2x4dUlDQWdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUdadmJuUXRkMlZwWjJoME9pQmliMnhrTzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzTjBhV05yZVN4Y2NseHVJQ0FtWDJacGVHVmtJSHRjY2x4dUlDQWdJR1JwYzNCc1lYazZJR1pzWlhnN1hISmNiaUFnSUNCbWJHVjRMWGR5WVhBNklHNXZkM0poY0R0Y2NseHVJQ0FnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQjJZWElvTFMxdmRYUnNhVzVsTFhwSmJtUmxlQ2s3WEhKY2JpQWdJQ0IwYjNBNklEQTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpJSHRjY2x4dUlDQWdJQ0FnSmw5ZmRHbDBiR1VzWEhKY2JpQWdJQ0FnSUNaZlgyMWhhVzRnZTF4eVhHNGdJQ0FnSUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmWDNScGRHeGxJSHRjY2x4dUlDQWdJQ0FnSUNCbWJHVjRMWE5vY21sdWF6b2dNRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlmYldGcGJpQjdYSEpjYmlBZ0lDQWdJQ0FnWm14bGVEb2dNVHRjY2x4dUlDQWdJQ0FnSUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5emRHbGphM2tnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUhOMGFXTnJlVHRjY2x4dUlDQWdJRzFoZUMxb1pXbG5hSFE2SUhaaGNpZ3RMVzkxZEd4cGJtVXRjM1JwWTJ0NUxXaGxhV2RvZENrN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyWnBlR1ZrSUh0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjY2x4dUlDQWdJRzFoZUMxb1pXbG5hSFE2SURFd01DVTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5bWIyeGtaV1FnZTF4eVhHNGdJQ0FnZDJsa2RHZzZJREE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNGlMQ0pBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1QWFXMXdiM0owSUNkdGFYaHBibk1uTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0Y21WaFpHVnlJSHRjY2x4dUlDQW1YMTlqYkc5elpTQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmRHbDBiR1VnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TGpZM1pXMGdNQ0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNCbWIyNTBMV1poYldsc2VUb2dKMDFwWTNKdmMyOW1kQ0JaWVVobGFTQlZTU2NzSUVGeWFXRnNMQ0J6WVc1ekxYTmxjbWxtTzF4eVhHNGdJQ0FnWm05dWRDMTNaV2xuYUhRNklHNXZjbTFoYkR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJocFpHUmxiaUI3WEhKY2JpQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bElDRnBiWEJ2Y25SaGJuUTdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFhKbFlXUmxjbDl6YVdKc2FXNW5JSHRjY2x4dUlDQWdJQ0FnWkdsemNHeGhlVG9nYm05dVpTQWhhVzF3YjNKMFlXNTBPMXh5WEc1Y2NseHVJQ0FnSUNBZ0ppNTNjbUZ3Y0dWeUlIdGNjbHh1SUNBZ0lDQWdJQ0FtTG5CdmMzUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWXRMWEpsWVdScGJtY2dlMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hISmNiaUFnSUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3WEhKY2JpQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnZEc5d09pQXdPMXh5WEc0Z0lDQWdiR1ZtZERvZ01EdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQXhNREFsTzF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TzF4eVhHNGdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklETmxiU0EwWlcwN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0J6WTNKdmJHd3RkR2x0Wld4cGJtVXRibUZ0WlRvZ0xTMVFjbTluY21WemMxUnBiV1ZzYVc1bE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklITmpjbTlzYkR0Y2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YMTl3Y205bmNtVnpjeUI3WEhKY2JpQWdJQ0FnSUNBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4eVhHNGdJQ0FnSUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUNBZ0lDQnNaV1owT2lBd08xeHlYRzRnSUNBZ0lDQWdJSG90YVc1a1pYZzZJRE03WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lBMGNIZzdYSEpjYmlBZ0lDQWdJQ0FnZDJsa2RHZzZJREV3TUNVN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSEJ5YVcxaGNubGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdjMk5oYkdVNklEQWdNVHRjY2x4dUlDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wdGIzSnBaMmx1T2lCc1pXWjBPMXh5WEc0Z0lDQWdJQ0FnSUdGdWFXMWhkR2x2YmpvZ2IzVjBiR2x1WlMxeVpXRmtaWEl0Y0hKdlozSmxjM01nYkdsdVpXRnlPMXh5WEc0Z0lDQWdJQ0FnSUdGdWFXMWhkR2x2YmkxMGFXMWxiR2x1WlRvZ0xTMVFjbTluY21WemMxUnBiV1ZzYVc1bE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgxOWpiRzl6WlNCN1hISmNiaUFnSUNBZ0lDQWdMbk5vWVdSdmQxOXNhV2RvZEY5eVpXZDFiR0Z5S0NrN1hISmNiaUFnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hISmNiaUFnSUNBZ0lDQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUNBZ0lDQWdJSG90YVc1a1pYZzZJRE03WEhKY2JpQWdJQ0FnSUNBZ2RHOXdPaUExTUNVN1hISmNiaUFnSUNBZ0lDQWdjbWxuYUhRNklESXljSGc3WEhKY2JpQWdJQ0FnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQXpObkI0TzF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ016WndlRHRjY2x4dUlDQWdJQ0FnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF4T0hCNE8xeHlYRzRnSUNBZ0lDQWdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTXpCd2VEdGNjbHh1SUNBZ0lDQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEhKY2JpQWdJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHlYRzRnSUNBZ0lDQWdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNjbHh1SUNBZ0lDQWdJQ0JpYjNndGMyaGhaRzkzT2lBd0lEQWdPSEI0SUVCelpXTnZibVJoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnSUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibHh5WEc0Z0lDQWdJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRSGRvYVhSbE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdhREVzWEhKY2JpQWdJQ0FnSUNaZlgzUnBkR3hsSUh0Y2NseHVJQ0FnSUNBZ0lDQnRZWEpuYVc0NklEQXVOamRsYlNBd0lDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJQ0FnYkdsdVpTMW9aV2xuYUhRNklERXVNMlZ0TzF4eVhHNGdJQ0FnSUNBZ0lHWnZiblF0YzJsNlpUb2dNeTQxWlcwN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibjFjY2x4dVhISmNia0JyWlhsbWNtRnRaWE1nYjNWMGJHbHVaUzF5WldGa1pYSXRjSEp2WjNKbGMzTWdlMXh5WEc0Z0lIUnZJSHRjY2x4dUlDQWdJSE5qWVd4bE9pQXhJREU3WEhKY2JpQWdmVnh5WEc1OVhISmNibHh5WEc1QWJXVmthV0VnS0cxaGVDMTNhV1IwYURvZ05EZ3djSGdwSUh0Y2NseHVJQ0F1YjNWMGJHbHVaUzF5WldGa1pYSWdlMXh5WEc0Z0lDQWdKaTB0Y21WaFpHbHVaeUI3WEhKY2JpQWdJQ0FnSUhCaFpHUnBibWM2SURBZ01TNHlOV1Z0TzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDWmZYMk5zYjNObElIdGNjbHh1SUNBZ0lDQWdjbWxuYUhRNklERXljSGdnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ2IzQmhZMmwwZVRvZ01DNDRPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNaZlgzUnBkR3hsSUh0Y2NseHVJQ0FnSUNBZ1ptOXVkQzF6YVhwbE9pQXlaVzA3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1OVhISmNibHh5WEc1QWJXVmthV0VnY0hKcGJuUWdlMXh5WEc0Z0lHaDBiV3dzWEhKY2JpQWdZbTlrZVNCN1hISmNiaUFnSUNCb1pXbG5hSFE2SUdsdWFYUnBZV3dnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUI3WEhKY2JpQWdJQ0JrYVhOd2JHRjVPaUJpYkc5amF5QWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdJQ0JvTVN4Y2NseHVJQ0FnSUNaZlgzUnBkR3hsSUh0Y2NseHVJQ0FnSUNBZ2JXRnlaMmx1T2lBeE15NDBjSFFnTUNBeU9IQjBJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUhSbGVIUXRZV3hwWjI0NklHTmxiblJsY2lBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQm1iMjUwTFhOcGVtVTZJREl3Y0hRZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0Y21WaFpHVnlJSHRjY2x4dUlDQWdJQ0FnSmkwdGNtVmhaR2x1WnlCN1hISmNiaUFnSUNBZ0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lCaGRYUnZJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzRnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnYURFc1hISmNiaUFnSUNBZ0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lDQWdJQ0J0WVhKbmFXNDZJREV6TGpSd2RDQXdJREk0Y0hRZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWElnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ0lDQm1iMjUwTFhOcGVtVTZJREl3Y0hRZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOWZZMnh2YzJVc1hISmNiaUFnSUNBZ0lDWmZYM0J5YjJkeVpYTnpJSHRjY2x4dUlDQWdJQ0FnSUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQndjbVVnZTF4eVhHNGdJQ0FnSUNCd1lXUmthVzVuT2lBeFpXMGdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnUUdKdmNtUmxjbDlqYjJ4dmNpQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQTBjSGdnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQndjbVVzWEhKY2JpQWdJQ0JqYjJSbElIdGNjbHh1SUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSGRvYVhSbElDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnZEdGaWJHVXNYSEpjYmlBZ0lDQnBiV2NzWEhKY2JpQWdJQ0J6ZG1jZ2UxeHlYRzRnSUNBZ0lDQmljbVZoYXkxcGJuTnBaR1U2SUdGMmIybGtPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNaZmMybGliR2x1WnlCN1hISmNiaUFnSUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JuMWNjbHh1SWl3aUx5b2dQVDA5UFQwOVBUMDlQU0JpZFhSMGIyNXpMblJvWlcxbElDMGc1b3lKNlpLdTVhKzg2SWlxNXFDMzVieVBJRDA5UFQwOVBUMDlQVDBnS2k5Y2NseHVRR2x0Y0c5eWRDQW5ZMjlzYjNKekp6dGNjbHh1UUdsdGNHOXlkQ0FuYzJoaFpHOTNKenRjY2x4dVhISmNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSWdlMXh5WEc0Z0lIQnZjMmwwYVc5dU9pQm1hWGhsWkR0Y2NseHVJQ0I2TFdsdVpHVjRPaUE1T1RrNU9UdGNjbHh1SUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNHpjenRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQW1YMTlpZFhSMGIyNGdlMXh5WEc0Z0lDQWdMbk5vWVdSdmQxOXNhV2RvZEY5eVpXZDFiR0Z5S0NrN1hISmNiaUFnSUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hISmNiaUFnSUNCNkxXbHVaR1Y0T2lBeE8xeHlYRzRnSUNBZ2JXRnlaMmx1T2lBeE1IQjRPMXh5WEc0Z0lDQWdkMmxrZEdnNklETTJjSGc3WEhKY2JpQWdJQ0JvWldsbmFIUTZJRE0yY0hnN1hISmNiaUFnSUNCaWIzSmtaWEk2SURGd2VDQnpiMnhwWkNCQWNISnBiV0Z5ZVY5aWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBemNIZzdYSEpjYmlBZ0lDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4eVhHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhkb2FYUmxPMXh5WEc0Z0lDQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHlYRzRnSUNBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeHlYRzRnSUNBZ1kyOXNiM0k2SUVCbWIzVnlkR2hmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQWMzVmpZMlZ6YzE5amIyeHZjanRjY2x4dUlDQWdJQ0FnWW05eVpHVnlMV052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQW1MbWhwWkdVZ2UxeHlYRzRnSUNBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZllXNWphRzl5SUh0Y2NseHVJQ0FnSUNZNmJHbHVheXhjY2x4dUlDQWdJQ1k2ZG1semFYUmxaQ3hjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JqYjJ4dmNqb2dRR1p2ZFhKMGFGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdKanBvYjNabGNpQjdYSEpjYmlBZ0lDQWdJR052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgybGpiMjRnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTWp0Y2NseHVJQ0FnSUhSdmNEb2dOVEFsTzF4eVhHNGdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnZDJsa2RHZzZJREl3Y0hnN1hISmNiaUFnSUNCb1pXbG5hSFE2SURJd2NIZzdYSEpjYmlBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaU2d0TlRBbExDQXROVEFsS1R0Y2NseHVJQ0FnSUdacGJHdzZJR04xY25KbGJuUmpiMnh2Y2p0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJGamRHbDJaU0I3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0ZEc5dmJHSmhjaUI3WEhKY2JpQWdJQ0FnSUNaZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBZ0lDQWdZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0FnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQmliM0prWlhJdFkyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUNBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdOdmJHOXlPaUJBZDJocGRHVTdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZVzVqYUc5eUlIdGNjbHh1SUNBZ0lDQWdKanBzYVc1ckxGeHlYRzRnSUNBZ0lDQW1PblpwYzJsMFpXUXNYSEpjYmlBZ0lDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0FnSUdOdmJHOXlPaUJBZDJocGRHVTdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmY205MWJtUmxaQ0I3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVJSHRjY2x4dUlDQWdJQ0FnWW05eVpHVnlMWEpoWkdsMWN6b2dNVGh3ZUR0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlpHbHpZV0pzWldRZ2UxeHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhJc1hISmNiaUFnSUNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5SUh0Y2NseHVJQ0FnSUNBZ0psOWZZVzVqYUc5eU9teHBibXNzWEhKY2JpQWdJQ0FnSUNaZlgyRnVZMmh2Y2pwMmFYTnBkR1ZrTEZ4eVhHNGdJQ0FnSUNBbVgxOWhibU5vYjNJNmFHOTJaWElzWEhKY2JpQWdJQ0FnSUNaZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBZ0lDQWdZM1Z5YzI5eU9pQnViM1F0WVd4c2IzZGxaRHRjY2x4dUlDQWdJQ0FnSUNCamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNBZ0lHSnZjbVJsY2kxamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNWNjbHh1SUNBZ0lDQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdJQ0JpYjNKa1pYSXRZMjlzYjNJNklFQm1iM1Z5ZEdoZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmWDJKMWRIUnZiaUI3WEhKY2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FHUnBjMkZpYkdWa1gySm5YMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM1IwWWl4Y2NseHVJQ0FtWDJKMGRDQjdYSEpjYmlBZ0lDQnNaV1owT2lBMU1DVTdYSEpjYmlBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYSEpjYmx4eVhHNGdJQ0FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVJSHRjY2x4dUlDQWdJQ0FnWkdsemNHeGhlVG9nYVc1c2FXNWxMV0pzYjJOck8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOTBkR0lnZTF4eVhHNGdJQ0FnZEc5d09pQXhNbkI0TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYmlCN1hISmNiaUFnSUNBZ0lIUnZjRG9nTFRVMmNIZzdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMkowZENCN1hISmNiaUFnSUNCaWIzUjBiMjA2SURFeWNIZzdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjY2x4dUlDQWdJQ0FnWW05MGRHOXRPaUF0TlRad2VEdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZjblJzTEZ4eVhHNGdJQ1pmYkhSeUlIdGNjbHh1SUNBZ0lIUnlZVzV6Wm05eWJUb2dkSEpoYm5Oc1lYUmxXU2d0TlRBbEtUdGNjbHh1SUNBZ0lIZHBaSFJvT2lBMU5uQjRPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDl5ZEd3Z2UxeHlYRzRnSUNBZ2RHOXdPaUExTUNVN1hISmNiaUFnSUNCeWFXZG9kRG9nTVRKd2VEdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh5WEc0Z0lDQWdJQ0J5YVdkb2REb2dMVGcyY0hnN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0IwYjNBNklEVXdKVHRjY2x4dUlDQWdJR3hsWm5RNklERXljSGc3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1SUh0Y2NseHVJQ0FnSUNBZ2JHVm1kRG9nTFRnMmNIZzdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM1IwWWl4Y2NseHVJQ0FtWDNKMGJDeGNjbHh1SUNBbVgySjBkQ3hjY2x4dUlDQW1YMngwY2lCN1hISmNiaUFnSUNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aWRYUjBiMjRnZTF4eVhHNGdJQ0FnSUNBbUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4eVhHNGdJQ0FnSUNBZ0lHUnBjM0JzWVhrNklHNXZibVU3WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBbkxpOWpiMnh2Y25Nbk8xeHlYRzVBYVcxd2IzSjBJQ2N1TDJadmJuUW5PMXh5WEc1QWFXMXdiM0owSUNjdUwyMXBlR2x1Y3ljN1hISmNia0JwYlhCdmNuUWdKeTR2YVdOdmJuTW5PMXh5WEc1Y2NseHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpTQjdYSEpjYmlBZ0xuSmhaR2wxYzE5emJXRnNiQ2dwTzF4eVhHNGdJQzV6YUdGa2IzZGZiR2xuYUhSZmNtVm5kV3hoY2lncE8xeHlYRzRnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjY2x4dUlDQjZMV2x1WkdWNE9pQTVPVGs1TzF4eVhHNGdJRzl3WVdOcGRIazZJREF1TVR0Y2NseHVJQ0IwYjNBNklDMDFNSEI0TzF4eVhHNGdJR3hsWm5RNklEVXdKVHRjY2x4dUlDQm9aV2xuYUhRNklEUXdjSGc3WEhKY2JpQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lIQmhaR1JwYm1jNklEQWdOVEJ3ZUR0Y2NseHVJQ0JzYVc1bExXaGxhV2RvZERvZ05EQndlRHRjY2x4dUlDQm1iMjUwTFhOcGVtVTZJRUJtYjI1MFgzTnBlbVZmYzIxaGJHdzdYSEpjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJR052Ykc5eU9pQkFkR2hwY21SZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNCMGNtRnVjMmwwYVc5dU9pQmhiR3dnTUM0MWN5QmxZWE5sTFdsdUxXOTFkRHRjY2x4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYSEpjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVYSEpjYmlBZ0psOWZZMjl1ZEdWdWRDQjdYSEpjYmlBZ0lDQXVaV3hzYVhCemFYTW9NU2s3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdJQ0J0WVhndGQybGtkR2c2SURjd01IQjRPMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQTBNSEI0TzF4eVhHNGdJQ0FnYkdsdVpTMW9aV2xuYUhRNklEUXdjSGc3WEhKY2JpQWdJQ0JtYjI1MExYTnBlbVU2SURFemNIZzdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FIUm9hWEprWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZlkyeHZjMlVzWEhKY2JpQWdKbDlmYVdOdmJpQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXlPMXh5WEc0Z0lDQWdkRzl3T2lBd08xeHlYRzRnSUNBZ2QybGtkR2c2SURRd2NIZzdYSEpjYmlBZ0lDQm9aV2xuYUhRNklEUXdjSGc3WEhKY2JpQWdJQ0JzYVc1bExXaGxhV2RvZERvZ05EQndlRHRjY2x4dUlDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlwWTI5dUlIdGNjbHh1SUNBZ0lHeGxablE2SURBN1hISmNiaUFnSUNCamIyeHZjam9nUUhkb2FYUmxPMXh5WEc1Y2NseHVJQ0FnSUM1dmRYUnNhVzVsTFdsamIyNGdlMXh5WEc0Z0lDQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0FnSUhvdGFXNWtaWGc2SURJN1hISmNiaUFnSUNBZ0lIUnZjRG9nTlRBbE8xeHlYRzRnSUNBZ0lDQnNaV1owT2lBMU1DVTdYSEpjYmlBZ0lDQWdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZZMnh2YzJVZ2UxeHlYRzRnSUNBZ2NtbG5hSFE2SURBN1hISmNiaUFnSUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRR1p2ZFhKMGFGOTBaWGgwWDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUM1dmRYUnNhVzVsTFdsamIyNGdlMXh5WEc0Z0lDQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0FnSUhvdGFXNWtaWGc2SURJN1hISmNiaUFnSUNBZ0lIUnZjRG9nTlRBbE8xeHlYRzRnSUNBZ0lDQnNaV1owT2lBMU1DVTdYSEpjYmlBZ0lDQWdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JqYjJ4dmNqb2dRSFJvYVhKa1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMmx1Wm04Z2UxeHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEhKY2JpQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCd2NtbHRZWEo1WDJOdmJHOXlPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDkzWVhKdWFXNW5JSHRjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFkMkZ5Ym1sdVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmMzVmpZMlZ6Y3lCN1hISmNiaUFnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMlZ5Y205eUlIdGNjbHh1SUNBZ0lDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4eVhHNGdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQVpHRnVaMlZ5WDJOdmJHOXlPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDl3YkdGcGJpQjdYSEpjYmlBZ0lDQnRhVzR0ZDJsa2RHZzZJREU1TUhCNE8xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01DQTFNSEI0SURBZ01UVndlRHRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGJXVnpjMkZuWlNCN1hISmNiaUFnSUNBZ0lDWmZhVzVtYnlCN1hISmNiaUFnSUNBZ0lDQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNCQWNISnBiV0Z5ZVY5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWFXNW1iMTkwYVhCZlltZGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmQyRnlibWx1WnlCN1hISmNiaUFnSUNBZ0lDQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNCQWQyRnlibWx1WjE5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyRnlibWx1WjE5MGFYQmZZbWRmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZjM1ZqWTJWemN5QjdYSEpjYmlBZ0lDQWdJQ0FnWW05eVpHVnlMV3hsWm5RNklEVndlQ0J6YjJ4cFpDQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFjM1ZqWTJWemMxOTBhWEJmWW1kZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmWlhKeWIzSWdlMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjaTFzWldaME9pQTFjSGdnYzI5c2FXUWdRR1JoYm1kbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFaR0Z1WjJWeVgzUnBjRjlpWjE5amIyeHZjanRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4eVhHNGdJQ0FnSUNCM2FXUjBhRG9nTUR0Y2NseHVJQ0FnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjY2x4dVhISmNiaUFnSUNBZ0lDNXZkWFJzYVc1bExXbGpiMjRnZTF4eVhHNGdJQ0FnSUNBZ0lHUnBjM0JzWVhrNklHNXZibVU3WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmJHbG5hSFFnZTF4eVhHNGdJQ0FnYldsdUxYZHBaSFJvT2lBeE9EQndlRHRjY2x4dUlDQWdJSEJoWkdScGJtYzZJREFnTkRCd2VEdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0YldWemMyRm5aU0I3WEhKY2JpQWdJQ0FnSUNaZmFXNW1ieUI3WEhKY2JpQWdJQ0FnSUNBZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzZGhjbTVwYm1jZ2UxeHlYRzRnSUNBZ0lDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWTI5c2IzSTZJRUIzWVhKdWFXNW5YMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl6ZFdOalpYTnpJSHRjY2x4dUlDQWdJQ0FnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHTnZiRzl5T2lCQWMzVmpZMlZ6YzE5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZlpYSnliM0lnZTF4eVhHNGdJQ0FnSUNBZ0lDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZMjlzYjNJNklFQmtZVzVuWlhKZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYSEpjYmlBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZjbTkxYm1RZ2UxeHlYRzRnSUNBZ0xuSmhaR2wxY3lneU1IQjRLVHRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGJXVnpjMkZuWlNCN1hISmNiaUFnSUNBZ0lDWmZaR1ZtWVhWc2RDQjdYSEpjYmlBZ0lDQWdJQ0FnYldsdUxYZHBaSFJvT2lBeE9EQndlRHRjY2x4dUlDQWdJQ0FnSUNCd1lXUmthVzVuT2lBd0lEUXdjSGc3WEhKY2JseHlYRzRnSUNBZ0lDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJQ0FnTG5KaFpHbDFjeWd4TUhCNEtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUhSdmNEb2dNVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQWdJR3hsWm5RNklERXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ0lDQjNhV1IwYURvZ01qQndlRHRjY2x4dUlDQWdJQ0FnSUNBZ0lHaGxhV2RvZERvZ01qQndlRHRjY2x4dUlDQWdJQ0FnSUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF5TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZablZzYkMxM2FXUjBhQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnRhVzR0ZDJsa2RHZzZJREl3TUhCNE8xeHlYRzRnSUNBZ0lDQWdJQ0FnY0dGa1pHbHVaem9nTUNBeU1IQjRJREFnTkRCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmY0d4aGFXNGdlMXh5WEc0Z0lDQWdJQ0FnSUcxcGJpMTNhV1IwYURvZ01UazFjSGc3WEhKY2JpQWdJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DQTBNSEI0SURBZ01qQndlRHRjY2x4dVhISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZablZzYkMxM2FXUjBhQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnRhVzR0ZDJsa2RHZzZJREl4TlhCNE8xeHlYRzRnSUNBZ0lDQWdJQ0FnY0dGa1pHbHVaem9nTUNBeU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOW1kV3hzTFhkcFpIUm9JSHRjY2x4dUlDQWdJRzFwYmkxM2FXUjBhRG9nTWpBd2NIZzdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXdJREV3Y0hnZ01DQTFNSEI0TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMXRaWE56WVdkbElIdGNjbHh1SUNBZ0lDQWdKbDl3YkdGcGJpQjdYSEpjYmlBZ0lDQWdJQ0FnYldsdUxYZHBaSFJvT2lBeU16QndlRHRjY2x4dUlDQWdJQ0FnSUNCd1lXUmthVzVuT2lBd0lERXdjSGdnTUNBeE5YQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMnhwWjJoMElIdGNjbHh1SUNBZ0lDQWdJQ0J0YVc0dGQybGtkR2c2SURJeE1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUhCaFpHUnBibWM2SURBZ01UQndlQ0F3SURRd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZG1semFXSnNaU0I3WEhKY2JpQWdJQ0J2Y0dGamFYUjVPaUF4TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5b2FXUmtaVzRnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nYm05dVpUdGNjbHh1SUNCOVhISmNibjFjY2x4dUlpd2lMeW9nUFQwOVBUMGdVMk55YjJ4c1ltRnlJRDA5UFQwOUlDb3ZYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJZ2UxeHlYRzRnSUhkcFpIUm9PaUEzY0hnN1hISmNiaUFnYUdWcFoyaDBPaUEzY0hnN1hISmNiaUFnTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQTFjSGc3WEhKY2JseHlYRzRnSUNZdGRISmhZMnN0Y0dsbFkyVWdlMXh5WEc0Z0lDQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1MWFJvZFcxaUlIdGNjbHh1SUNBZ0lDWTZkbVZ5ZEdsallXd2dlMXh5WEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJ5WjJKaEtEQXNJREFzSURBc0lEQXVNalVwTzF4eVhHNGdJQ0FnSUNBdGQyVmlhMmwwTFdKdmNtUmxjaTF5WVdScGRYTTZJRFZ3ZUR0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQW1PbWh2Y21sNmIyNTBZV3dnZTF4eVhHNGdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TWpVcE8xeHlYRzRnSUNBZ0lDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMak0xS1R0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMakUxS1R0Y2NseHVJQ0I5WEhKY2JuMWNjbHh1SWwxOSAqL1xuIl0sImZpbGUiOiJjc3MvZG9jcy5taW4uY3NzIn0= */ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}.aside,.main,textarea{overflow:auto}.case,.docs,.main,.section__dl{z-index:1;position:relative}.aside,.outline-toolbar{-webkit-transition-duration:.3s}.case,.docs,.main,.outline-icon,.section__dl,sub,sup{position:relative}html{-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}.case,.main__cdn,.main__footer,.section__footer,.section__table{border-top:1px solid #ddd}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.docs,body,html{overflow:hidden}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}.aside,.docs,.main,body,html{height:100%}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.outline-reader__title,body,html{font-family:'Microsoft YaHei UI',Arial,sans-serif}summary{display:list-item}[hidden],template{display:none}body,html{background:#fafafa;color:#333;font-size:14px;line-height:150%}.aside,code{font-family:'Source Code Pro',Consolas,Georgia,Monaco,monospace,Arial,sans-serif}a:hover,a:link,a:visited{color:#058942;text-decoration:none}a:hover{text-decoration:underline}.docs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:100%;margin:0}.aside,.outline-chapters_fixed,.outline-chapters_sticky,.outline-drawer__modal{-webkit-box-orient:vertical;-webkit-box-direction:normal}.aside{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:260px;margin:0;background-color:#333;color:#ddd;-webkit-box-shadow:0 0 5px 2px #ddd;box-shadow:0 0 5px 2px #ddd;transition-duration:.3s}.main__button,.section__dd,.section__dt{display:inline-block}.aside__nav,.main{-webkit-box-flex:1}.main{-ms-flex:1;flex:1;background-color:#fff}.aside__header{margin:0 auto;-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.aside__nav{-ms-flex:1;flex:1;overflow:auto}.aside__h2{margin:0 auto;height:54px;line-height:54px;font-size:20px;font-weight:400;font-family:Georgia,Consolas,Arial,sans-serif;text-align:center;overflow:hidden}.aside__h3{margin:0 auto;padding:0 20px;font-size:16px;overflow:hidden}.aside__list{margin:0;padding:10px 0;overflow:hidden}.aside__item{height:32px;line-height:32px;padding:0 30px;cursor:pointer;font-size:13px;overflow:hidden}.aside .outline-chapters{-webkit-box-flex:1;-ms-flex:1;flex:1}.aside .outline-chapters__main::-webkit-scrollbar-thumb{background-color:#666}.aside .outline-chapters__main::-webkit-scrollbar-thumb:hover{background-color:#999}.aside .outline-chapters__placeholder{background-color:#555;border-left:3px solid #fff}.aside .outline-chapters__anchor:link,.aside .outline-chapters__anchor:visited{color:#ddd;text-decoration:none}.aside .outline-chapters__anchor:hover{color:#ddd;text-decoration:underline}.aside .outline-chapters_active.outline-chapters__anchor:hover,.aside .outline-chapters_active.outline-chapters__anchor:link,.aside .outline-chapters_active.outline-chapters__anchor:visited{color:#fff}.main__footer,.main__header{margin:0 auto;padding:1em;text-align:center;overflow:hidden}.main__h1{margin:0 auto;padding-top:1em;font-size:5em;font-weight:400;line-height:2em;overflow:hidden}.main__name{color:#507afe;font-weight:400}.main__tagline{margin:1em auto;max-width:960px;line-height:1.3em;font-size:2em;color:#999;font-weight:100;overflow:hidden}.main__cdn,.section__pre{line-height:150%;background-color:#fafafa}.main__cdn{margin:2em 0;padding:2em;font-size:16px;text-align:center;border-bottom:1px solid #ddd;color:#666;overflow:hidden}.main__download{margin:1em auto;width:200px;text-align:center;overflow:hidden}.main__button{border-radius:4px;padding:14px 29px;font-size:18px;font-family:'Source Code Pro',Consolas,Georgia,Monaco,monospace,Arial,sans-serif;background-color:#058942;overflow:hidden}.main__button:hover,.main__button:link,.main__button:visited{color:#fff;text-decoration:none}.main__footer{margin:0 3em}.section{margin:1em 0;overflow:hidden}.section__content,.section__footer,.section__header{margin:0;padding:0 3em;overflow:hidden}.section__title{color:#666}.section__h3{color:#507afe;font-size:1.35em}.section__h4{font-size:1.1em;color:#666}.section__h5{font-size:1em;color:#999}.section__dd,.section__dl,.section__dt{margin:0;padding:0;overflow:hidden}.section__dd{color:#058942}.section__pre{margin:2em 0;padding:1em;font-size:14px;text-align:left;border:1px solid #ddd;border-radius:4px;color:#666;overflow:auto}.case,.case:after,.case__console,.case__toolbar,.section__code{overflow:hidden}.section__code{display:block;margin:0 auto}.section__footer{margin-top:3em;background-color:#fafafa;color:#999}.section__table{margin:1em auto;width:100%}.section__td,.section__th{padding:5px 16px;line-height:26px;border-bottom:1px solid #ddd}.section__th{text-align:center;background-color:#fafafa}@media (max-width:480px){.section__content,.section__header{padding:0 1em}}.case{display:grid;grid-template-columns:repeat(2,1fr);gap:40px;padding:1em;border-bottom:1px solid #ddd}.case:after{content:'';position:absolute;z-index:2;top:0;left:50%;height:100%;width:0;border-left:1px solid #ddd}.case__pre,.case__textarea{font-size:13px;line-height:150%}.case__code,.case__pre,.case__textarea{font-family:'Courier New',Consolas,Georgia,Arial,sans-serif}.case__pre{margin:0;padding:1em;background-color:#fafafa;height:100%;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto}.case__toolbar{margin:0 auto;height:36px;line-height:36px;font-size:14px;padding:0 16px;text-align:right}.case__action,.case__remove{cursor:pointer;color:#058942;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.case__action{font-size:13px;padding-left:10px}.case__action:first-child{padding-left:0}.case__remove{float:right}.case__console{margin:0 auto;height:180px;border:1px solid #ddd}.case__textarea{margin:0 auto;width:100%;height:100%;border:none;outline:0;padding:1em;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto}.case__item,.case__list{margin:0;padding:0;list-style-type:none;overflow:hidden}.case__item,.outline-drawer__footer,.outline-drawer__main,.outline-drawer__title{padding:0 16px}.case__list{height:360px;border-top:1px solid #ddd;border-bottom:1px solid #ddd;font-size:13px;overflow:auto}.case__item{height:36px;line-height:36px;cursor:pointer}.outline-icon,.outline-icon__svg{width:1em;height:1em;overflow:hidden}.case__item:hover{background-color:#f7f8f9}:root{--outline-zIndex:2000;--outline-sticky-height:100%;--outline-chapters-width:100%}.outline-icon{z-index:1;display:inline-block;vertical-align:middle}.outline-heading__anchor,.outline-icon_hidden{display:none}.outline-icon__svg{position:absolute;z-index:2;top:50%;left:50%;fill:currentcolor;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-heading{position:relative;z-index:1;overflow:hidden}.outline-heading__anchor:hover,.outline-heading__anchor:link,.outline-heading__anchor:visited{color:#999;text-decoration:none}.outline-heading__anchor:hover{color:#507afe}.outline-heading:hover .outline-heading__anchor{display:inline-block}.outline-heading_start:hover{overflow:visible}.outline-heading_start .outline-heading__anchor{position:absolute;z-index:2;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:-1em}.outline-drawer{position:relative;z-index:-1;top:0;left:0;margin:0;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:hidden;overflow:hidden}.outline-drawer__modal{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;z-index:21;height:100%;background-color:#fff;-webkit-transition-duration:.4s;transition-duration:.4s;overflow:hidden}.outline-drawer__footer,.outline-drawer__header,.outline-drawer__main{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.outline-drawer__footer,.outline-drawer__header{-ms-flex-negative:0;flex-shrink:0}.outline-drawer__header,.outline-drawer__title{position:relative;z-index:1;margin:0 auto;height:52px;line-height:52px;overflow:hidden}.outline-drawer__title{font-size:16px;font-weight:400;margin:0 16px;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #dcdfe6}.outline-drawer__close{position:absolute;z-index:2;top:50%;right:12px;width:20px;height:20px;line-height:20px;color:#999;font-size:20px;text-align:center;cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%);overflow:hidden}.outline-drawer__close .outline-icon{position:absolute;z-index:2;top:0;left:0}.outline-drawer__close:hover{color:#666}.outline-drawer__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-drawer__footer{margin:0 auto;text-align:right;overflow:hidden}.outline-drawer__overlay{content:'';position:relative;z-index:1;top:0;left:0;width:100%;height:100%;background-color:#fff;opacity:.1;overflow:hidden}.outline-drawer_ltr.outline-drawer_tiny,.outline-drawer_rtl.outline-drawer_tiny{width:280px}.outline-drawer_ltr.outline-drawer_mini,.outline-drawer_rtl.outline-drawer_mini{width:480px}.outline-drawer_ltr.outline-drawer_small,.outline-drawer_rtl.outline-drawer_small{width:540px}.outline-drawer_ltr.outline-drawer_regular,.outline-drawer_rtl.outline-drawer_regular{width:680px}.outline-drawer_ltr.outline-drawer_medium,.outline-drawer_rtl.outline-drawer_medium{width:720px}.outline-drawer_ltr.outline-drawer_large,.outline-drawer_rtl.outline-drawer_large{width:960px}.outline-drawer_rtl{border-left:1px solid #dcdfe6}.outline-drawer_rtl.outline-drawer_tiny.outline-drawer_closed{right:-290px}.outline-drawer_rtl.outline-drawer_mini.outline-drawer_closed{right:-490px}.outline-drawer_rtl.outline-drawer_small.outline-drawer_closed{right:-550px}.outline-drawer_rtl.outline-drawer_regular.outline-drawer_closed{right:-690px}.outline-drawer_rtl.outline-drawer_medium.outline-drawer_closed{right:-730px}.outline-drawer_rtl.outline-drawer_large.outline-drawer_closed{right:-970px}.outline-drawer_ltr{border-right:1px solid #dcdfe6}.outline-drawer_ltr.outline-drawer_tiny.outline-drawer_closed{left:-290px}.outline-drawer_ltr.outline-drawer_mini.outline-drawer_closed{left:-490px}.outline-drawer_ltr.outline-drawer_small.outline-drawer_closed{left:-550px}.outline-drawer_ltr.outline-drawer_regular.outline-drawer_closed{left:-690px}.outline-drawer_ltr.outline-drawer_medium.outline-drawer_closed{left:-730px}.outline-drawer_ltr.outline-drawer_large.outline-drawer_closed{left:-970px}.outline-drawer_btt,.outline-drawer_ttb{left:0;width:100%}.outline-drawer_btt.outline-drawer_tiny,.outline-drawer_ttb.outline-drawer_tiny{height:240px}.outline-drawer_btt.outline-drawer_mini,.outline-drawer_ttb.outline-drawer_mini{height:320px}.outline-drawer_btt.outline-drawer_small,.outline-drawer_ttb.outline-drawer_small{height:360px}.outline-drawer_btt.outline-drawer_regular,.outline-drawer_ttb.outline-drawer_regular{height:400px}.outline-drawer_btt.outline-drawer_medium,.outline-drawer_ttb.outline-drawer_medium{height:440px}.outline-drawer_btt.outline-drawer_large,.outline-drawer_ttb.outline-drawer_large{height:480px}.outline-drawer_ttb{border-bottom:1px solid #dcdfe6}.outline-drawer_ttb.outline-drawer_tiny.outline-drawer_closed{top:-250px}.outline-drawer_ttb.outline-drawer_mini.outline-drawer_closed{top:-330px}.outline-drawer_ttb.outline-drawer_small.outline-drawer_closed{top:-370px}.outline-drawer_ttb.outline-drawer_regular.outline-drawer_closed{top:-410px}.outline-drawer_ttb.outline-drawer_medium.outline-drawer_closed{top:-450px}.outline-drawer_ttb.outline-drawer_large.outline-drawer_closed{top:-490px}.outline-drawer_btt{top:initial;border-top:1px solid #dcdfe6}.outline-drawer_btt.outline-drawer_tiny.outline-drawer_closed{bottom:-250px}.outline-drawer_btt.outline-drawer_mini.outline-drawer_closed{bottom:-330px}.outline-drawer_btt.outline-drawer_small.outline-drawer_closed{bottom:-370px}.outline-drawer_btt.outline-drawer_regular.outline-drawer_closed{bottom:-410px}.outline-drawer_btt.outline-drawer_medium.outline-drawer_closed{bottom:-450px}.outline-drawer_btt.outline-drawer_large.outline-drawer_closed{bottom:-490px}.outline-drawer_opened{visibility:visible;z-index:var(--outline-zIndex)}.outline-drawer_opened.outline-drawer{position:fixed}.outline-drawer_opened.outline-drawer_rtl{right:0}.outline-drawer_opened.outline-drawer_ltr{left:0}.outline-drawer_opened.outline-drawer_ttb{top:0}.outline-drawer_opened.outline-drawer_btt{bottom:0}.outline-drawer_offset.outline-drawer_ltr,.outline-drawer_offset.outline-drawer_rtl{height:calc(100% - 4em);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.outline-drawer_offset.outline-drawer_btt,.outline-drawer_offset.outline-drawer_ttb{width:calc(100% - 4em);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-drawer_offset.outline-drawer_opened.outline-drawer_rtl{right:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ltr{left:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ttb{top:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_btt{bottom:2em}.outline-drawer_auto.outline-drawer_ltr,.outline-drawer_auto.outline-drawer_rtl{height:auto;max-height:calc(100% - 4em)}.outline-drawer_full{padding:0}.outline-chapters{position:relative;z-index:1;margin:0;width:var(--outline-chapters-width);overflow:auto}.outline-chapters-parent{-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.outline-chapters__title{margin:0 16px;height:40px;line-height:40px;padding:0 16px;border-bottom:1px solid #dcdfe6;font-size:16px;font-weight:400;overflow:hidden}.outline-chapters__main{position:relative;z-index:1;margin:0;overflow:hidden}.outline-chapters__item,.outline-chapters__list,.outline-chapters__subject{position:relative;z-index:2;margin:0;padding:0;list-style-type:none;overflow:hidden}.outline-chapters__list{padding:.5em 0}.outline-chapters__subject{padding-left:1em}.outline-chapters__item{margin:0;line-height:30px;font-size:13px;overflow:hidden}.outline-chapters__placeholder{position:absolute;z-index:1;top:0;left:0;width:100%;height:30px;background-color:#f7f8f9;border-left:2px solid #058942;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.outline-chapters__anchor{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;padding:0 1.5em}.outline-chapters__anchor:hover,.outline-chapters__anchor:link,.outline-chapters__anchor:visited{text-decoration:none;color:#555}.outline-chapters__anchor:hover{color:#058942}.outline-chapters__code{padding-right:.5em}.outline-chapters_highlight.outline-chapters__anchor:hover,.outline-chapters_highlight.outline-chapters__anchor:link,.outline-chapters_highlight.outline-chapters__anchor:visited{color:#058942;font-weight:700}.outline-chapters_fixed,.outline-chapters_sticky{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-direction:column;flex-direction:column;z-index:var(--outline-zIndex);top:0;overflow:hidden}.outline-chapters_hidden,.outline-reader__close{display:none}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__main,.outline-chapters_sticky .outline-chapters__title{-webkit-box-sizing:border-box;box-sizing:border-box}.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__title{-ms-flex-negative:0;flex-shrink:0}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_sticky .outline-chapters__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-chapters_sticky{position:sticky;max-height:var(--outline-sticky-height)}.outline-chapters_fixed{position:fixed;max-height:100%}.outline-chapters_folded{width:0;overflow:hidden}.outline-reader__title{margin:.67em 0!important;text-align:center!important;font-weight:400;overflow:hidden}.outline-reader_hidden,.outline-reader_hidden.outline-reader_sibling{display:none!important}.outline-reader_hidden.outline-reader_sibling.wrapper.post{display:none}.outline-reader--reading{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:3em 4em;background-color:#fff;scroll-timeline-name:--ProgressTimeline;overflow:scroll}.outline-reader--reading .outline-reader__progress{position:fixed;top:0;left:0;z-index:3;height:4px;width:100%;background-color:#507afe;scale:0 1;-webkit-transform-origin:left;transform-origin:left;-webkit-animation:outline-reader-progress linear;animation:outline-reader-progress linear;animation-timeline:--ProgressTimeline}.outline-reader--reading .outline-reader__close{display:block;position:fixed;z-index:3;top:50%;right:22px;margin:0;width:36px;height:36px;border-radius:18px;border:1px solid #dcdfe6;line-height:30px;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;-webkit-box-shadow:0 0 8px #ddd;box-shadow:0 0 8px #ddd;color:#999;background-color:#fff;overflow:hidden}.outline-reader--reading .outline-reader__close:hover{background-color:#058942;color:#fff}.outline-reader--reading .outline-reader h1,.outline-reader--reading .outline-reader__title{margin:.67em 0!important;line-height:1.3em;font-size:3.5em}@-webkit-keyframes outline-reader-progress{to{scale:1 1}}@keyframes outline-reader-progress{to{scale:1 1}}@media (max-width:480px){.outline-reader--reading{padding:0 1.25em}.outline-reader__close{right:12px!important;opacity:.8}.outline-reader__title{font-size:2em}}@media print{.outline-reader h1,.outline-reader.outline-reader h1,.outline-reader.outline-reader__title,.outline-reader__title{margin:13.4pt 0 28pt!important;text-align:center!important;font-size:20pt!important}body,html{height:initial!important}.outline-message,.outline-toolbar{display:none!important}.outline-reader{display:block!important;overflow:hidden}.outline-reader.outline-reader__close,.outline-reader.outline-reader__progress,.outline-reader_sibling{display:none!important}.outline-reader.outline-reader--reading{position:relative!important;height:auto!important;padding:0!important;overflow:hidden!important}.outline-reader pre{padding:1em!important;border:1px solid #ddd!important;border-radius:4px!important}.outline-reader code,.outline-reader pre{background-color:#fff!important}.outline-reader img,.outline-reader svg,.outline-reader table{-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}}.outline-toolbar{position:fixed;z-index:99999;margin:0;transition-duration:.3s;overflow:hidden}.outline-toolbar__button{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:relative;z-index:1;margin:10px;width:36px;height:36px;border:1px solid #dcdfe6;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;cursor:pointer;text-align:center;color:#999;overflow:hidden}.outline-toolbar__button:hover{color:#058942;border-color:#058942}.outline-toolbar__button.hide{display:none}.outline-toolbar__anchor:hover,.outline-toolbar__anchor:link,.outline-toolbar__anchor:visited{color:#999;text-decoration:none}.outline-toolbar__anchor:hover{color:#058942}.outline-toolbar__icon{position:absolute;z-index:2;top:50%;left:50%;width:20px;height:20px;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);fill:currentcolor;overflow:hidden}.outline-toolbar_active.outline-toolbar__button{color:#fff;background-color:#058942;border-color:#058942}.outline-toolbar_active .outline-toolbar__anchor:hover,.outline-toolbar_active .outline-toolbar__anchor:link,.outline-toolbar_active .outline-toolbar__anchor:visited,.outline-toolbar_active.outline-toolbar__button:hover{color:#fff}.outline-toolbar_rounded.outline-toolbar__button{border-radius:18px}.outline-toolbar_disabled .outline-toolbar__anchor:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link,.outline-toolbar_disabled .outline-toolbar__anchor:visited,.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__anchor:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link,.outline-toolbar_disabled.outline-toolbar__anchor:visited,.outline-toolbar_disabled.outline-toolbar__button{cursor:not-allowed;color:#999;border-color:#999}.outline-toolbar_disabled .outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link:hover,.outline-toolbar_disabled .outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled .outline-toolbar__button:hover,.outline-toolbar_disabled.outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link:hover,.outline-toolbar_disabled.outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled.outline-toolbar__button:hover{color:#999;border-color:#999}.outline-message,.outline-message__content{margin:0;font-size:13px;color:#666;height:40px;line-height:40px;overflow:hidden}.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__button{background-color:#f5f5f5}.outline-toolbar_btt,.outline-toolbar_ttb{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-toolbar_btt .outline-toolbar__button,.outline-toolbar_ttb .outline-toolbar__button{display:inline-block}.outline-toolbar_ttb{top:12px}.outline-toolbar_ttb.outline-toolbar_hidden{top:-56px}.outline-toolbar_btt{bottom:12px}.outline-toolbar_btt.outline-toolbar_hidden{bottom:-56px}.outline-toolbar_ltr,.outline-toolbar_rtl{-webkit-transform:translateY(-50%);transform:translateY(-50%);width:56px}.outline-toolbar_rtl{top:50%;right:12px}.outline-toolbar_rtl.outline-toolbar_hidden{right:-86px}.outline-toolbar_ltr{top:50%;left:12px}.outline-toolbar_ltr.outline-toolbar_hidden{left:-86px}.outline-toolbar_btt .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ltr .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_rtl .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ttb .outline-toolbar__button.outline-toolbar_hidden{display:none}.outline-message{border-radius:3px;-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:fixed;z-index:9999;opacity:.1;top:-50px;left:50%;padding:0 50px;background-color:#fff;-webkit-transition:all .5s ease-in-out;transition:all .5s ease-in-out;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-message__content{white-space:nowrap;text-overflow:ellipsis;max-width:700px}.outline-message__close,.outline-message__icon{position:absolute;z-index:2;top:0;width:40px;height:40px;line-height:40px;text-align:center;overflow:hidden}.outline-message__icon{left:0;color:#fff}.outline-message__icon .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close{right:0;cursor:pointer;color:#999}.outline-message__close .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close:hover{color:#666}.outline-message_info .outline-message__icon{background-color:#507afe}.outline-message_warning .outline-message__icon{background-color:#ff9901}.outline-message_success .outline-message__icon{background-color:#058942}.outline-message_error .outline-message__icon{background-color:#ff5d5d}.outline-message_plain{min-width:190px;padding:0 50px 0 15px}.outline-message_light,.outline-message_round.outline-message_default{min-width:180px;padding:0 40px}.outline-message_plain.outline-message_info{border-left:5px solid #507afe;background-color:#ecf8ff}.outline-message_plain.outline-message_warning{border-left:5px solid #ff9901;background-color:#fffbe6}.outline-message_plain.outline-message_success{border-left:5px solid #058942;background-color:#e1f6eb}.outline-message_plain.outline-message_error{border-left:5px solid #ff5d5d;background-color:#fff1f0}.outline-message_plain .outline-message__icon{width:0;display:none}.outline-message_plain .outline-message__icon .outline-icon{display:none}.outline-message_light.outline-message_info .outline-message__icon{color:#507afe}.outline-message_light.outline-message_warning .outline-message__icon{color:#ff9901}.outline-message_light.outline-message_success .outline-message__icon{color:#058942}.outline-message_light.outline-message_error .outline-message__icon{color:#ff5d5d}.outline-message_light .outline-message__icon{background-color:#fff}.outline-message_round{border-radius:20px}.outline-message_round.outline-message_default .outline-message__icon{border-radius:10px;top:10px;left:10px;width:20px;height:20px;line-height:20px}.outline-message_round.outline-message_default.outline-message_full-width{min-width:200px;padding:0 20px 0 40px}.outline-message_round.outline-message_plain{min-width:195px;padding:0 40px 0 20px}.outline-message_round.outline-message_plain.outline-message_full-width{min-width:215px;padding:0 20px}.outline-message_full-width{min-width:200px;padding:0 10px 0 50px}.outline-message_full-width.outline-message_plain{min-width:230px;padding:0 10px 0 15px}.outline-message_full-width.outline-message_light{min-width:210px;padding:0 10px 0 40px}.outline-message_visible{opacity:1}.outline-message_hidden{display:none}::-webkit-scrollbar{width:7px;height:7px;-webkit-border-radius:5px}::-webkit-scrollbar-track-piece{-webkit-border-radius:5px}::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:horizontal{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.35)}::-webkit-scrollbar:hover{background-color:rgba(0,0,0,.15)} +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJjc3MvZG9jcy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuICovXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gIC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovXG59XG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuICovXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuLyoqXG4gKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS5cbiAqL1xubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5ociB7XG4gIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIC8qIDEgKi9cbiAgaGVpZ2h0OiAwO1xuICAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICAvKiAyICovXG59XG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnByZSB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqL1xufVxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07XG4gIC8qIDIgKi9cbn1cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuICovXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDIgKi9cbn1cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5idXR0b24sXG5pbnB1dCB7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5idXR0b24sXG5bdHlwZT0nYnV0dG9uJ10sXG5bdHlwZT0ncmVzZXQnXSxcblt0eXBlPSdzdWJtaXQnXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0ncmVzZXQnXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdzdWJtaXQnXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT0nYnV0dG9uJ106LW1vei1mb2N1c3JpbmcsXG5bdHlwZT0ncmVzZXQnXTotbW96LWZvY3VzcmluZyxcblt0eXBlPSdzdWJtaXQnXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5sZWdlbmQge1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAvKiAxICovXG59XG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cbiAqL1xudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gKi9cblt0eXBlPSdjaGVja2JveCddLFxuW3R5cGU9J3JhZGlvJ10ge1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovXG59XG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuW3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5bdHlwZT0nc2VhcmNoJ10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgLyogMiAqL1xufVxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7XG4gIC8qIDIgKi9cbn1cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG4gKi9cbmRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG4vKiBNaXNjXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG4gKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qID09PT09IEJhc2UgPT09PT0gKi9cbmh0bWwsXG5ib2R5IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiAjZmFmYWZhO1xuICBjb2xvcjogIzMzMztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbmE6bGluayxcbmE6dmlzaXRlZCxcbmE6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuY29kZSB7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cbi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA3cHg7XG4gIGhlaWdodDogN3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbi8qIExheW91dCAqL1xuLmRvY3Mge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAtbXMtZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4vKiBBc2lkZSAqL1xuLmFzaWRlIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtbXMtZmxleC1uZWdhdGl2ZTogMDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB3aWR0aDogMjYwcHg7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xuICBjb2xvcjogI2RkZDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNXB4IDJweCAjZGRkO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMnB4ICNkZGQ7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi8qIE1haW4gKi9cbi5tYWluIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgIC1tcy1mbGV4OiAxO1xuICAgICAgICAgIGZsZXg6IDE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5hc2lkZSB7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cbi5hc2lkZV9faGVhZGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXNpZGVfX25hdiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5hc2lkZV9faDIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiA1NHB4O1xuICBsaW5lLWhlaWdodDogNTRweDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LWZhbWlseTogR2VvcmdpYSwgQ29uc29sYXMsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXNpZGVfX2gzIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgMjBweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlX19saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxMHB4IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXNpZGVfX2l0ZW0ge1xuICBoZWlnaHQ6IDMycHg7XG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICBwYWRkaW5nOiAwIDMwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgIC1tcy1mbGV4OiAxO1xuICAgICAgICAgIGZsZXg6IDE7XG59XG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfX21haW46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY2Njtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19fbWFpbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX19wbGFjZWhvbGRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2ZmZjtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmsge1xuICBjb2xvcjogI2RkZDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6dmlzaXRlZCB7XG4gIGNvbG9yOiAjZGRkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjZGRkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5hc2lkZSAub3V0bGluZS1jaGFwdGVyc19hY3RpdmUub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4uYXNpZGUgLm91dGxpbmUtY2hhcHRlcnNfYWN0aXZlLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLmFzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzX2FjdGl2ZS5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5tYWluX19oZWFkZXIsXG4ubWFpbl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDFlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1haW5fX2gxIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmctdG9wOiAxZW07XG4gIGZvbnQtc2l6ZTogNWVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1haW5fX25hbWUge1xuICBjb2xvcjogIzUwN2FmZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cbi5tYWluX190YWdsaW5lIHtcbiAgbWFyZ2luOiAxZW0gYXV0bztcbiAgbWF4LXdpZHRoOiA5NjBweDtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBmb250LXNpemU6IDJlbTtcbiAgY29sb3I6ICM5OTk7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWFpbl9fY2RuIHtcbiAgbWFyZ2luOiAyZW0gMDtcbiAgcGFkZGluZzogMmVtO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNTAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWFpbl9fZG93bmxvYWQge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICB3aWR0aDogMjAwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tYWluX19idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcGFkZGluZzogMTRweCAyOXB4O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtZmFtaWx5OiAnU291cmNlIENvZGUgUHJvJywgQ29uc29sYXMsIEdlb3JnaWEsIE1vbmFjbywgbW9ub3NwYWNlLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tYWluX19idXR0b246bGluayxcbi5tYWluX19idXR0b246dmlzaXRlZCxcbi5tYWluX19idXR0b246aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLm1haW5fX2Zvb3RlciB7XG4gIG1hcmdpbjogMCAzZW07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb24ge1xuICBtYXJnaW46IDFlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2hlYWRlcixcbi5zZWN0aW9uX19jb250ZW50LFxuLnNlY3Rpb25fX2Zvb3RlciB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAzZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fdGl0bGUge1xuICBjb2xvcjogIzY2Njtcbn1cbi5zZWN0aW9uX19oMyB7XG4gIGNvbG9yOiAjNTA3YWZlO1xuICBmb250LXNpemU6IDEuMzVlbTtcbn1cbi5zZWN0aW9uX19oNCB7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGNvbG9yOiAjNjY2O1xufVxuLnNlY3Rpb25fX2g1IHtcbiAgZm9udC1zaXplOiAxZW07XG4gIGNvbG9yOiAjOTk5O1xufVxuLnNlY3Rpb25fX2RsLFxuLnNlY3Rpb25fX2R0LFxuLnNlY3Rpb25fX2RkIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2RsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuLnNlY3Rpb25fX2R0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLnNlY3Rpb25fX2RkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5zZWN0aW9uX19wcmUge1xuICBtYXJnaW46IDJlbSAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLnNlY3Rpb25fX2NvZGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIG1hcmdpbi10b3A6IDNlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgY29sb3I6ICM5OTk7XG59XG4uc2VjdGlvbl9fdGFibGUge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG59XG4uc2VjdGlvbl9fdGgsXG4uc2VjdGlvbl9fdGQge1xuICBwYWRkaW5nOiA1cHggMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb25fX3RoIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5zZWN0aW9uX19oZWFkZXIsXG4gIC5zZWN0aW9uX19jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwIDFlbTtcbiAgfVxufVxuLmNhc2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogNDBweDtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAwO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fcHJlLFxuLmNhc2VfX3RleHRhcmVhIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbn1cbi5jYXNlX19wcmUsXG4uY2FzZV9fY29kZSxcbi5jYXNlX190ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG4uY2FzZV9fcHJlIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uY2FzZV9fdG9vbGJhciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fYWN0aW9uLFxuLmNhc2VfX3JlbW92ZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uY2FzZV9fYWN0aW9uIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY2FzZV9fYWN0aW9uOmZpcnN0LWNoaWxkIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuLmNhc2VfX3JlbW92ZSB7XG4gIGZsb2F0OiByaWdodDtcbn1cbi5jYXNlX19jb25zb2xlIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogMTgwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fdGV4dGFyZWEge1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAxZW07XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jYXNlX19saXN0LFxuLmNhc2VfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX19saXN0IHtcbiAgaGVpZ2h0OiAzNjBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLmNhc2VfX2l0ZW0ge1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDAgMTZweDtcbn1cbi5jYXNlX19pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbn1cbjpyb290IHtcbiAgLS1vdXRsaW5lLXpJbmRleDogMjAwMDtcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcbn1cbi8qID09PT09PT09PT0gY29sb3JzLnRoZW1lIC0g5Z+656GA6aKc6Imy5Y+Y6YeP6ZuG5ZCIID09PT09PT09PT0gKi9cbi8qKlxuICogZWxsaXBzaXMubGVzcyAtIOaWh+acrOecgeeVpSBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyoqXG4gKiBzaGFkb3cubGVzcyAtIOmYtOW9seagt+W8j+iuvue9riBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4yMFxuICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09PT09PSBpY29uLnRoZW1lIC0gc3ZnIOWbvuagh+eahOagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9fc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtaGVhZGluZzpob3ZlciAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0OmhvdmVyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0IC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgbGVmdDogLTFlbTtcbn1cbi5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogLTE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19tb2RhbCB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjE7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzO1xuICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDUycHg7XG4gIGxpbmUtaGVpZ2h0OiA1MnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjOTk5O1xuICBmb250LXNpemU6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fbWFpbiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19vdmVybGF5IHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvcGFjaXR5OiAwLjE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICB3aWR0aDogMjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21pbmkge1xuICB3aWR0aDogNDgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3NtYWxsLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9zbWFsbCB7XG4gIHdpZHRoOiA1NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIHdpZHRoOiA2ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICB3aWR0aDogNzIwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX2xhcmdlLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9sYXJnZSB7XG4gIHdpZHRoOiA5NjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTczMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTI5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC02OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yixcbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueSB7XG4gIGhlaWdodDogMjQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21pbmkge1xuICBoZWlnaHQ6IDMyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICBoZWlnaHQ6IDM2MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyIHtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICBoZWlnaHQ6IDQ0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICBoZWlnaHQ6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB0b3A6IGluaXRpYWw7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xuICB0b3A6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3J0bCB7XG4gIHJpZ2h0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBsZWZ0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl90dGIge1xuICB0b3A6IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIGJvdHRvbTogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfcnRsLFxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xufVxuLm91dGxpbmUtZHJhd2VyX2Z1bGwge1xuICBwYWRkaW5nOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IHZhcigtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGgpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzLXBhcmVudCB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIG1hcmdpbjogMCAxNnB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2xpc3QsXG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0IHtcbiAgcGFkZGluZzogMC41ZW0gMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19zdWJqZWN0IHtcbiAgcGFkZGluZy1sZWZ0OiAxZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIG1hcmdpbjogMDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19wbGFjZWhvbGRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmOGY5O1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMwNTg5NDI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAgMS41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzU1NTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19jb2RlIHtcbiAgcGFkZGluZy1yaWdodDogMC41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5LFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcbiAgdG9wOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7XG4gICAgICBmbGV4LXNocmluazogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgIC1tcy1mbGV4OiAxO1xuICAgICAgICAgIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZvbGRlZCB7XG4gIHdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLyoqXG4gKiBtaXhpbnMubGVzcyAtIOW3peWFt+WHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTFcbiAqL1xuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cbi8qID09PT09PSDlnIbop5LmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcud3JhcHBlci5wb3N0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogM2VtIDRlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgc2Nyb2xsLXRpbWVsaW5lLW5hbWU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDM7XG4gIGhlaWdodDogNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbiAgc2NhbGU6IDAgMTtcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gICAgICAgICAgYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMztcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAyMnB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA4cHggI2RkZDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgOHB4ICNkZGQ7XG4gIGNvbG9yOiAjOTk5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXIgaDEsXG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBmb250LXNpemU6IDMuNWVtO1xufVxuQC13ZWJraXQta2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xuICB0byB7XG4gICAgc2NhbGU6IDEgMTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcGFkZGluZzogMCAxLjI1ZW07XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gIH1cbn1cbkBtZWRpYSBwcmludCB7XG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLW1lc3NhZ2UsXG4gIC5vdXRsaW5lLXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fY2xvc2UsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fcHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlIHtcbiAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHByZSxcbiAgLm91dGxpbmUtcmVhZGVyIGNvZGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgdGFibGUsXG4gIC5vdXRsaW5lLXJlYWRlciBpbWcsXG4gIC5vdXRsaW5lLXJlYWRlciBzdmcge1xuICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgLW1vei1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLyogPT09PT09PT09PSBidXR0b25zLnRoZW1lIC0g5oyJ6ZKu5a+86Iiq5qC35byPID09PT09PT09PT0gKi9cbi5vdXRsaW5lLXRvb2xiYXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk5O1xuICBtYXJnaW46IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAxMHB4O1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM5OTk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGZpbGw6IGN1cnJlbnRjb2xvcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG4gIGJvcmRlci1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX3JvdW5kZWQub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZDpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXI6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLFxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIHtcbiAgdG9wOiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIHRvcDogLTU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dCB7XG4gIGJvdHRvbTogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYnR0Lm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBib3R0b206IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwsXG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bCB7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICByaWdodDogLTg2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGxlZnQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX3J0bCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyoqXG4gKiBmb250Lmxlc3MgLSDlrZfkvZPnm7jlhbPmoLflvI9cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjE2XG4gKi9cbi8qID09PT09PSDlrZfkvZMgPT09PT09ICovXG4vKiA9PT09PT0g5a2X6YeNID09PT09PSAqL1xuLyogPT09PT09IOWtl+WPtyA9PT09PT0gKi9cbi5vdXRsaW5lLW1lc3NhZ2Uge1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk7XG4gIG9wYWNpdHk6IDAuMTtcbiAgdG9wOiAtNTBweDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCA1MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb2xvcjogIzY2NjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2NvbnRlbnQge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWFyZ2luOiAwO1xuICBtYXgtd2lkdGg6IDcwMHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGNvbG9yOiAjNjY2O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UsXG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgbGVmdDogMDtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSB7XG4gIHJpZ2h0OiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UgLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG4ub3V0bGluZS1tZXNzYWdlX2luZm8gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjk5MDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMTkwcHg7XG4gIHBhZGRpbmc6IDAgNTBweCAwIDE1cHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9pbmZvIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjNTA3YWZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmOGZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2ZmOTkwMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmJlNjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3Mge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICMwNTg5NDI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWY2ZWI7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9lcnJvciB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2ZmNWQ1ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIHdpZHRoOiAwO1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX2luZm8gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICNmZjk5MDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX2Vycm9yIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmNWQ1ZDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kIHtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQge1xuICBtaW4td2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nOiAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0IC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDEwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdC5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDAgMjBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMTk1cHg7XG4gIHBhZGRpbmc6IDAgNDBweCAwIDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjE1cHg7XG4gIHBhZGRpbmc6IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDUwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAyMzBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQge1xuICBtaW4td2lkdGg6IDIxMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV92aXNpYmxlIHtcbiAgb3BhY2l0eTogMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA3cHg7XG4gIGhlaWdodDogN3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx6eHBibkIxZENCamMzTWdNVDRpTENKdWIzSnRZV3hwZW1VdWJHVnpjeUlzSW1KaGMyVXViR1Z6Y3lJc0luTmpjbTlzYkdKaGNpNXNaWE56SWl3aWJHRjViM1YwTG14bGMzTWlMQ0poYzJsa1pTNXNaWE56SWl3aWJXRnBiaTVzWlhOeklpd2ljMlZqZEdsdmJpNXNaWE56SWl3aVkyRnpaUzVzWlhOeklpd2lMaTR2TGk0dmRHaGxiV1V2ZG1GeWFXRmliR1Z6TG14bGMzTWlMQ0l1TGk4dUxpOTBhR1Z0WlM5cFkyOXVjeTVzWlhOeklpd2lMaTR2TGk0dmRHaGxiV1V2WVc1amFHOXljeTVzWlhOeklpd2lMaTR2TGk0dmRHaGxiV1V2WkhKaGQyVnlMbXhsYzNNaUxDSXVMaTh1TGk5MGFHVnRaUzl0YVhocGJuTXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMMk5vWVhCMFpYSnpMbXhsYzNNaUxDSXVMaTh1TGk5MGFHVnRaUzl5WldGa1pYSXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMM1J2YjJ4aVlYSXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMMjFsYzNOaFoyVXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMM05qY205c2JHSmhjaTVzWlhOeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRFJGUVVFMFJUdEJRVU0xUlR0blJrRkRaMFk3UVVGRGFFWTdPenRIUVVkSE8wRkRTVWc3UlVGRFJTeHJRa0ZCUVR0RlJFWkJMRTlCUVU4N1JVTkhVQ3dyUWtGQlFUdEZSRVJCTEU5QlFVODdRMEZEVWp0QlFVTkVPMmRHUVVOblJqdEJRVU5vUmpzN1IwRkZSenRCUTB0SU8wVkJRMFVzVlVGQlFUdERSRWhFTzBGQlEwUTdPMGRCUlVjN1FVTlBTRHRGUVVORkxHVkJRVUU3UTBSTVJEdEJRVU5FT3pzN1IwRkhSenRCUTFOSU8wVkJRMFVzWlVGQlFUdEZRVU5CTEdsQ1FVRkJPME5FVUVRN1FVRkRSRHRuUmtGRFowWTdRVUZEYUVZN096dEhRVWRITzBGRFdVZzdSVUZEUlN4blEwRkJRVHRWUVVGQkxIZENRVUZCTzBWRVZrRXNUMEZCVHp0RlExZFFMRlZCUVVFN1JVUlVRU3hQUVVGUE8wVkRWVkFzYTBKQlFVRTdSVVJTUVN4UFFVRlBPME5CUTFJN1FVRkRSRHM3TzBkQlIwYzdRVU5YU0R0RlFVTkZMR3REUVVGQk8wVkVWRUVzVDBGQlR6dEZRMVZRTEdWQlFVRTdSVVJTUVN4UFFVRlBPME5CUTFJN1FVRkRSRHRuUmtGRFowWTdRVUZEYUVZN08wZEJSVWM3UVVOWlNEdEZRVU5GTERoQ1FVRkJPME5FVmtRN1FVRkRSRHM3TzBkQlIwYzdRVU5qU0R0RlFVTkZMRzlDUVVGQk8wVkVXa0VzVDBGQlR6dEZRMkZRTERKQ1FVRkJPMFZFV0VFc1QwRkJUenRGUTFsUUxEQkRRVUZCTzFWQlFVRXNhME5CUVVFN1JVUldRU3hQUVVGUE8wTkJRMUk3UVVGRFJEczdSMEZGUnp0QlEyRklPenRGUVVWRkxHOUNRVUZCTzBORVdFUTdRVUZEUkRzN08wZEJSMGM3UVVObFNEczdPMFZCUjBVc2EwTkJRVUU3UlVSaVFTeFBRVUZQTzBWRFkxQXNaVUZCUVR0RlJGcEJMRTlCUVU4N1EwRkRVanRCUVVORU96dEhRVVZITzBGRFpVZzdSVUZEUlN4bFFVRkJPME5FWWtRN1FVRkRSRHM3TzBkQlIwYzdRVU5wUWtnN08wVkJSVVVzWlVGQlFUdEZRVU5CTEdWQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxIbENRVUZCTzBORVprUTdRVU5yUWtRN1JVRkRSU3huUWtGQlFUdERSR2hDUkR0QlEyMUNSRHRGUVVORkxGbEJRVUU3UTBScVFrUTdRVUZEUkR0blJrRkRaMFk3UVVGRGFFWTdPMGRCUlVjN1FVTnpRa2c3UlVGRFJTeHRRa0ZCUVR0RFJIQkNSRHRCUVVORU8yZEdRVU5uUmp0QlFVTm9SanM3TzBkQlIwYzdRVU41UWtnN096czdPMFZCUzBVc2NVSkJRVUU3UlVSMlFrRXNUMEZCVHp0RlEzZENVQ3huUWtGQlFUdEZSSFJDUVN4UFFVRlBPMFZEZFVKUUxHdENRVUZCTzBWRWNrSkJMRTlCUVU4N1JVTnpRbEFzVlVGQlFUdEZSSEJDUVN4UFFVRlBPME5CUTFJN1FVRkRSRHM3TzBkQlIwYzdRVU4xUWtnN08wVkVjRUpGTEU5QlFVODdSVU4xUWxBc2EwSkJRVUU3UTBSeVFrUTdRVUZEUkRzN08wZEJSMGM3UVVONVFrZzdPMFZFZEVKRkxFOUJRVTg3UlVONVFsQXNjVUpCUVVFN1EwUjJRa1E3UVVGRFJEczdSMEZGUnp0QlF6SkNTRHM3T3p0RlFVbEZMREpDUVVGQk8wTkVla0pFTzBGQlEwUTdPMGRCUlVjN1FVTTJRa2c3T3pzN1JVRkpSU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdRMFF6UWtRN1FVRkRSRHM3UjBGRlJ6dEJReXRDU0RzN096dEZRVWxGTEN0Q1FVRkJPME5FTjBKRU8wRkJRMFE3TzBkQlJVYzdRVU5wUTBnN1JVRkRSU3dyUWtGQlFUdERSQzlDUkR0QlFVTkVPenM3T3p0SFFVdEhPMEZEYlVOSU8wVkJRMFVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHRGUkdwRFFTeFBRVUZQTzBWRGEwTlFMR1ZCUVVFN1JVUm9RMEVzVDBGQlR6dEZRMmxEVUN4bFFVRkJPMFZFTDBKQkxFOUJRVTg3UlVOblExQXNaMEpCUVVFN1JVUTVRa0VzVDBGQlR6dEZReXRDVUN4WFFVRkJPMFZFTjBKQkxFOUJRVTg3UlVNNFFsQXNiMEpCUVVFN1JVUTFRa0VzVDBGQlR6dERRVU5TTzBGQlEwUTdPMGRCUlVjN1FVTXJRa2c3UlVGRFJTeDVRa0ZCUVR0RFJEZENSRHRCUVVORU96dEhRVVZITzBGRGFVTklPMFZCUTBVc1pVRkJRVHREUkM5Q1JEdEJRVU5FT3pzN1IwRkhSenRCUTIxRFNEczdSVUZGUlN3clFrRkJRVHRWUVVGQkxIVkNRVUZCTzBWRWFrTkJMRTlCUVU4N1JVTnJRMUFzVjBGQlFUdEZSR2hEUVN4UFFVRlBPME5CUTFJN1FVRkRSRHM3UjBGRlJ6dEJRMjFEU0RzN1JVRkZSU3hoUVVGQk8wTkVha05FTzBGQlEwUTdPenRIUVVkSE8wRkRjVU5JTzBWQlEwVXNPRUpCUVVFN1JVUnVRMEVzVDBGQlR6dEZRMjlEVUN4eFFrRkJRVHRGUkd4RFFTeFBRVUZQTzBOQlExSTdRVUZEUkRzN1IwRkZSenRCUTNGRFNEdEZRVU5GTEhsQ1FVRkJPME5FYmtORU8wRkJRMFE3T3p0SFFVZEhPMEZEZFVOSU8wVkJRMFVzTWtKQlFVRTdSVVJ5UTBFc1QwRkJUenRGUTNORFVDeGpRVUZCTzBWRWNFTkJMRTlCUVU4N1EwRkRVanRCUVVORU8yZEdRVU5uUmp0QlFVTm9SanM3UjBGRlJ6dEJRM2REU0R0RlFVTkZMR1ZCUVVFN1EwUjBRMFE3UVVGRFJEczdSMEZGUnp0QlF6QkRTRHRGUVVORkxHMUNRVUZCTzBORWVFTkVPMEZCUTBRN1owWkJRMmRHTzBGQlEyaEdPenRIUVVWSE8wRkROa05JTzBWQlEwVXNZMEZCUVR0RFJETkRSRHRCUVVORU96dEhRVVZITzBGREswTklPMFZCUTBVc1kwRkJRVHREUkRkRFJEdEJRVU5FTEhOQ1FVRnpRanRCUlRsVGRFSTdPMFZCUlVVc1lVRkJRVHRGUVVOQkxHOUNRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4eFJFRkJRVHRGUVVOQkxHbENRVUZCTzBOR1oxUkVPMEZGTlZORE96czdSVUZIUlN4bFFVRkJPMFZCUTBFc2MwSkJRVUU3UTBZNFUwZzdRVVV6VTBNN1JVRkRSU3d5UWtGQlFUdERSalpUU0R0QlJYcFRSRHRGUVVORkxIZEdRVUZCTzBOR01sTkVPMEZCUTBRc01rSkJRVEpDTzBGSGRsVXpRanRGUVVORkxGZEJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNNa0pCUVVFN1EwaDVWVVE3UVVkMFZVUTdSVUZEUlN3eVFrRkJRVHREU0hkVlJEdEJSM0pWUkR0RlFVTkZMSE5EUVVGQk8wVkJRMEVzTWtKQlFVRTdRMGgxVlVRN1FVZHdWVVE3UlVGRFJTeHpRMEZCUVR0RlFVTkJMREpDUVVGQk8wTkljMVZFTzBGSGJsVkVPMFZCUTBVc2MwTkJRVUU3UTBoeFZVUTdRVWRzVlVRN1JVRkRSU3h6UTBGQlFUdERTRzlWUkR0QlFVTkVMRmxCUVZrN1FVazFWbG83UlVGRFJTeHhRa0ZCUVR0RlFVRkJMSEZDUVVGQk8wVkJRVUVzWTBGQlFUdEZRVU5CTEN0Q1FVRkJPMFZCUVVFc09FSkJRVUU3VFVGQlFTeDNRa0ZCUVR0VlFVRkJMRzlDUVVGQk8wVkJRMEVzYzBKQlFVRTdUVUZCUVN4clFrRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEdsQ1FVRkJPME5LT0ZaRU8wRkJRMFFzVjBGQlZ6dEJTVE5XV0R0RlFVTkZMSEZDUVVGQk8wVkJRVUVzY1VKQlFVRTdSVUZCUVN4alFVRkJPMFZCUTBFc2NVSkJRVUU3VFVGQlFTeGxRVUZCTzBWQlEwRXNOa0pCUVVFN1JVRkJRU3c0UWtGQlFUdE5RVUZCTERKQ1FVRkJPMVZCUVVFc2RVSkJRVUU3UlVGRFFTeHpRa0ZCUVR0TlFVRkJMR3RDUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEZWQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2RVSkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNjVU5CUVVFN1ZVRkJRU3cyUWtGQlFUdEZRVU5CTEd0RFFVRkJPMVZCUVVFc01FSkJRVUU3UlVGRFFTeGxRVUZCTzBOS05sWkVPMEZCUTBRc1ZVRkJWVHRCU1RGV1ZqdEZRVU5GTEc5Q1FVRkJPMDFCUVVFc1dVRkJRVHRWUVVGQkxGRkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4bFFVRkJPME5LTkZaRU8wRkxhRmxFTzBWQlEwVXNkMFpCUVVFN1EweHJXVVE3UVVzdldFTTdSVUZEUlN4bFFVRkJPMFZCUTBFc2NVSkJRVUU3VFVGQlFTeGxRVUZCTzBWQlEwRXNhVUpCUVVFN1EweHBXVWc3UVVzNVdFTTdSVUZEUlN4dlFrRkJRVHROUVVGQkxGbEJRVUU3VlVGQlFTeFJRVUZCTzBWQlEwRXNaVUZCUVR0RFRHZFpTRHRCU3pkWVF6dEZRVU5GTEdWQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMRzlDUVVGQk8wVkJRMEVzYTBSQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxHbENRVUZCTzBOTUsxaElPMEZMTlZoRE8wVkJRMFVzWlVGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFREaFlTRHRCU3pOWVF6dEZRVU5GTEZWQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHbENRVUZCTzBOTU5saElPMEZMTVZoRE8wVkJRMFVzWVVGQlFUdEZRVU5CTEd0Q1FVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMHcwV0VnN1FVdDZZVVE3UlVGcFJFa3NiMEpCUVVFN1RVRkJRU3haUVVGQk8xVkJRVUVzVVVGQlFUdERUREpZU0R0QlMzaFlTenRGUVVORkxIVkNRVUZCTzBOTU1GaFFPMEZMZUZoUE8wVkJRMFVzZFVKQlFVRTdRMHd3V0ZRN1FVdHlXRWM3UlVGRFJTeDFRa0ZCUVR0RlFVTkJMRFJDUVVGQk8wTk1kVmhNTzBGTGJsaExPMFZCUTBVc1dVRkJRVHRGUVVOQkxITkNRVUZCTzBOTWNWaFFPMEZMYkZoTE8wVkJRMFVzV1VGQlFUdEZRVU5CTEhOQ1FVRkJPME5NYjFoUU8wRkxhbGhMTzBWQlEwVXNXVUZCUVR0RlFVTkJMREpDUVVGQk8wTk1iVmhRTzBGTE4xZFBPenM3UlVGSFJTeFpRVUZCTzBOTUsxZFVPMEZOZEdORE96dEZRVVZGTEdWQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFRuZGpTRHRCVFhKalF6dEZRVU5GTEdWQlFVRTdSVUZEUVN4cFFrRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTeHZRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMDUxWTBnN1FVMXdZME03UlVGRFJTeGxRVUZCTzBWQlEwRXNiMEpCUVVFN1EwNXpZMGc3UVUxdVkwTTdSVUZEUlN4cFFrRkJRVHRGUVVOQkxHbENRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRRU3hsUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEdsQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTA1eFkwZzdRVTFzWTBNN1JVRkRSU3hqUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMREJDUVVGQk8wVkJRMEVzTWtKQlFVRTdSVUZEUVN3NFFrRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeHBRa0ZCUVR0RFRtOWpTRHRCVFdwalF6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNhVUpCUVVFN1EwNXRZMGc3UVUxb1kwTTdSVUZEUlN4elFrRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEhkR1FVRkJPMFZCUlVFc01FSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFRtbGpTRHRCVFM5aVJ6czdPMFZCUjBVc1dVRkJRVHRGUVVOQkxITkNRVUZCTzBOT2FXTk1PMEZOTjJKRE8wVkJRMFVzWTBGQlFUdEZRVU5CTERKQ1FVRkJPME5PSzJKSU8wRlBlR2RDUkR0RlFVTkZMR05CUVVFN1JVRkRRU3hwUWtGQlFUdERVREJuUWtRN1FVOTRaMEpET3pzN1JVRkhSU3hWUVVGQk8wVkJRMEVzWlVGQlFUdEZRVU5CTEdsQ1FVRkJPME5RTUdkQ1NEdEJUM1puUWtNN1JVRkRSU3haUVVGQk8wTlFlV2RDU0R0QlQzUm5Ra003UlVGRFJTeGxRVUZCTzBWQlEwRXNhMEpCUVVFN1ExQjNaMEpJTzBGUGNtZENRenRGUVVORkxHbENRVUZCTzBWQlEwRXNXVUZCUVR0RFVIVm5Ra2c3UVU5d1owSkRPMFZCUTBVc1pVRkJRVHRGUVVOQkxGbEJRVUU3UTFCelowSklPMEZQYm1kQ1F6czdPMFZCUjBVc1ZVRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeHBRa0ZCUVR0RFVIRm5Ra2c3UVU5c1owSkRPMFZCUTBVc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBOUWIyZENTRHRCVDJwblFrTTdSVUZEUlN4elFrRkJRVHREVUcxblFrZzdRVTlvWjBKRE8wVkJRMFVzYzBKQlFVRTdSVUZEUVN4bFFVRkJPME5RYTJkQ1NEdEJUeTltUXp0RlFVTkZMR05CUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHbENRVUZCTzBWQlEwRXNNRUpCUVVFN1JVRkRRU3gxUWtGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHVkJRVUU3UTFCcFowSklPMEZQT1daRE8wVkJRMFVzWlVGQlFUdEZRVU5CTEdWQlFVRTdSVUZEUVN4cFFrRkJRVHREVUdkblFrZzdRVTgzWmtNN1JVRkRSU3d5UWtGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc01FSkJRVUU3UlVGRFFTeFpRVUZCTzBOUUsyWklPMEZQTldaRE8wVkJRMFVzYVVKQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc01rSkJRVUU3UTFBNFprZzdRVTh6WmtNN08wVkJSVVVzYTBKQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxEaENRVUZCTzBOUU5tWklPMEZQTVdaRE8wVkJRMFVzYlVKQlFVRTdSVUZEUVN3d1FrRkJRVHREVURSbVNEdEJUM2htUkR0RlFVVkpPenRKUVVWRkxHVkJRVUU3UjFCNVprZzdRMEZEUmp0QlVXaHRRa1E3UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hqUVVGQk8wVkJRMEVzYzBOQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxESkNRVUZCTzBWQlEwRXNPRUpCUVVFN1JVRkRRU3hwUWtGQlFUdERVbXR0UWtRN1FWRm9iVUpETzBWQlEwVXNXVUZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEU5QlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxGTkJRVUU3UlVGRFFTdzBRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTlNhMjFDU0R0QlVTOXNRa003TzBWQlJVVXNaMEpCUVVFN1JVRkRRU3hyUWtGQlFUdERVbWx0UWtnN1FWRTViRUpET3pzN1JVRkhSU3hwUlVGQlFUdERVbWR0UWtnN1FWRTNiRUpETzBWQlEwVXNWVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3d3UWtGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxDdENRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3hsUVVGQk8wTlNLMnhDU0R0QlVUVnNRa003UlVGRFJTeGxRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMR3RDUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHdENRVUZCTzBWQlEwRXNhVUpCUVVFN1ExSTRiRUpJTzBGUk0yeENRenM3UlVGRlJTeG5Ra0ZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3d3UWtGQlFUdExRVUZCTEhWQ1FVRkJPMDFCUVVFc2MwSkJRVUU3VlVGQlFTeHJRa0ZCUVR0RFVqWnNRa2c3UVZFeGJFSkRPMFZCUTBVc1owSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RFVqUnNRa2c3UVZFeGJFSkhPMFZCUTBVc1owSkJRVUU3UTFJMGJFSk1PMEZSZUd4Q1F6dEZRVU5GTEdGQlFVRTdRMUl3YkVKSU8wRlJkbXhDUXp0RlFVTkZMR1ZCUVVFN1JVRkRRU3hqUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVW5sc1FrZzdRVkYwYkVKRE8wVkJRMFVzWlVGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxHTkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNLMEpCUVVFN1ZVRkJRU3gxUWtGQlFUdEZRVU5CTEdWQlFVRTdRMUozYkVKSU8wRlJjbXhDUXpzN1JVRkZSU3hWUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEhOQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTFKMWJFSklPMEZSY0d4Q1F6dEZRVU5GTEdOQlFVRTdSVUZEUVN3eVFrRkJRVHRGUVVOQkxEaENRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3hsUVVGQk8wTlNjMnhDU0R0QlVXNXNRa003UlVGRFJTeGhRVUZCTzBWQlEwRXNhMEpCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEdkQ1FVRkJPME5TY1d4Q1NEdEJVVzVzUWtjN1JVRkRSU3d3UWtGQlFUdERVbkZzUWt3N1FWTXpjMEpFTzBWQlEwTXNkVUpCUVVFN1JVRkRSQ3c0UWtGQlFUdEZRVUZwUXl3clFrRkJRVHREVkRoelFtaERPMEZCUTBRc2JVUkJRVzFFTzBGQlEyNUVPenM3T3p0SFFVdEhPMEZCUTBnc01FSkJRVEJDTzBGQlF6RkNPenM3T3p0SFFVdEhPMEZCUTBnc05FSkJRVFJDTzBGQlF6VkNMR3RFUVVGclJEdEJWV2gxUWtNN1JVRkZia1FzYlVKQlFVRTdSVUZCYzBJc1YwRkJRVHRGUVVOVUxITkNRVUZCTzBWQlExVXNkVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMklzV1VGQlFUdEZRVU5CTEdsQ1FVRkJPME5XYTNWQ1ZEdEJWV3AxUW1NN1JVRkZWaXh0UWtGQlFUdEZRVU5aTEZkQlFVRTdSVUZEVkN4VFFVRkJPMFZCUTBnc1ZVRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRUU3g1UTBGQlFUdFZRVUZCTEdsRFFVRkJPMFZCUTJFc2FVSkJRVUU3UTFacmRVSjJRanRCVldwMVFsTTdSVUZEVWl4alFVRkJPME5XYlhWQ1JEdEJWM0oyUWtRN1JVRkRSU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4cFFrRkJRVHREV0hWMlFrUTdRVmR5ZGtKRE8wVkJRMFVzWTBGQlFUdERXSFYyUWtnN1FWZHlka0pIT3pzN1JVRkhSU3haUVVGQk8wVkJRMEVzYzBKQlFVRTdRMWgxZGtKTU8wRlhjSFpDUnp0RlFVTkZMR1ZCUVVFN1ExaHpka0pNTzBGWGJIWkNRenRGUVVWSkxITkNRVUZCTzBOWWJYWkNURHRCVnpsMVFrYzdSVUZEUlN4clFrRkJRVHREV0dkMlFrdzdRVmRzZGtKRE8wVkJUVWtzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1UwRkJRVHRGUVVOQkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1JVRkRRU3hYUVVGQk8wTllLM1ZDVER0QldXcDRRa1E3UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzVVVGQlFUdEZRVU5CTEZWQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxDdENRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5hYlhoQ1JEdEJXV3A0UWtNN1JVTTJRMFVzZDBOQlFVRTdWVUZCUVN4blEwRkJRVHRGUkRORFFTeHhRa0ZCUVR0RlFVRkJMSEZDUVVGQk8wVkJRVUVzWTBGQlFUdEZRVU5CTERaQ1FVRkJPMFZCUVVFc09FSkJRVUU3VFVGQlFTd3lRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wVkJRMEVzYzBKQlFVRTdUVUZCUVN4clFrRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3gxUWtGQlFUdEZRVU5CTEd0RFFVRkJPMVZCUVVFc01FSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFdtMTRRa2c3UVZsb2VFSkRPenM3UlVGSFJTeFpRVUZCTzBWQlEwRXNLMEpCUVVFN1ZVRkJRU3gxUWtGQlFUdERXbXQ0UWtnN1FWa3ZkMEpET3p0RlFVVkZMSEZDUVVGQk8wMUJRVUVzWlVGQlFUdERXbWw0UWtnN1FWazVkMEpET3pzN1JVRkhSU3huUWtGQlFUdERXbWQ0UWtnN1FWazNkMEpET3p0RlFVVkZMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEdWQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFdpdDNRa2c3UVZrMWQwSkRPMFZCUTBVc1owSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc2FVTkJRVUU3UTFvNGQwSklPMEZaTTNkQ1F6dEZRVU5GTEcxQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxGTkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3h2UTBGQlFUdFZRVUZCTERSQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTFvMmQwSklPMEZaTVhoQ1F6dEZRV2RDU1N4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFBRVUZCTzBWQlEwRXNVVUZCUVR0RFdqWjNRa3c3UVZreGQwSkhPMFZCUTBVc1dVRkJRVHREV2pSM1FrdzdRVmw0ZDBKRE8wVkJRMFVzYjBKQlFVRTdUVUZCUVN4WlFVRkJPMVZCUVVFc1VVRkJRVHRGUVVOQkxHVkJRVUU3UTFvd2QwSklPMEZaZG5kQ1F6dEZRVU5GTEdWQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHbENRVUZCTzBOYWVYZENTRHRCV1hSM1FrTTdSVUZEUlN4WlFVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNUMEZCUVR0RlFVTkJMRkZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEhWQ1FVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxHbENRVUZCTzBOYWQzZENTRHRCV1d4M1FrczdPMFZCUTBVc1lVRkJRVHREV25GM1FsQTdRVmxzZDBKTE96dEZRVU5GTEdGQlFVRTdRMXB4ZDBKUU8wRlpiSGRDU3pzN1JVRkRSU3hoUVVGQk8wTmFjWGRDVUR0QldXeDNRa3M3TzBWQlEwVXNZVUZCUVR0RFduRjNRbEE3UVZsc2QwSkxPenRGUVVORkxHRkJRVUU3UTFweGQwSlFPMEZaYkhkQ1N6czdSVUZEUlN4aFFVRkJPME5hY1hkQ1VEdEJXV2gzUWtNN1JVRkRSU3dyUWtGQlFUdERXbXQzUWtnN1FWazVka0pQTzBWQlEwVXNZMEZCUVR0RFdtZDNRbFE3UVZremRrSlBPMFZCUTBVc1kwRkJRVHREV2paMlFsUTdRVmw0ZGtKUE8wVkJRMFVzWTBGQlFUdERXakIyUWxRN1FWbHlka0pQTzBWQlEwVXNZMEZCUVR0RFduVjJRbFE3UVZsc2RrSlBPMFZCUTBVc1kwRkJRVHREV205MlFsUTdRVmt2ZFVKUE8wVkJRMFVzWTBGQlFUdERXbWwyUWxRN1FWa3pkVUpETzBWQlEwVXNaME5CUVVFN1ExbzJkVUpJTzBGWmVuVkNUenRGUVVORkxHRkJRVUU3UTFveWRVSlVPMEZaZEhWQ1R6dEZRVU5GTEdGQlFVRTdRMXAzZFVKVU8wRlpiblZDVHp0RlFVTkZMR0ZCUVVFN1ExcHhkVUpVTzBGWmFIVkNUenRGUVVORkxHRkJRVUU3UTFwcmRVSlVPMEZaTjNSQ1R6dEZRVU5GTEdGQlFVRTdRMW9yZEVKVU8wRlpNWFJDVHp0RlFVTkZMR0ZCUVVFN1ExbzBkRUpVTzBGWmRIUkNRenM3UlVGRlJTeFJRVUZCTzBWQlEwRXNXVUZCUVR0RFduZDBRa2c3UVZseWRFSkxPenRGUVVORkxHTkJRVUU3UTFwM2RFSlFPMEZaY25SQ1N6czdSVUZEUlN4alFVRkJPME5hZDNSQ1VEdEJXWEowUWtzN08wVkJRMFVzWTBGQlFUdERXbmQwUWxBN1FWbHlkRUpMT3p0RlFVTkZMR05CUVVFN1ExcDNkRUpRTzBGWmNuUkNTenM3UlVGRFJTeGpRVUZCTzBOYWQzUkNVRHRCV1hKMFFrczdPMFZCUTBVc1kwRkJRVHREV25kMFFsQTdRVmx1ZEVKRE8wVkJRMFVzYVVOQlFVRTdRMXB4ZEVKSU8wRlphblJDVHp0RlFVTkZMRmxCUVVFN1ExcHRkRUpVTzBGWk9YTkNUenRGUVVORkxGbEJRVUU3UTFwbmRFSlVPMEZaTTNOQ1R6dEZRVU5GTEZsQlFVRTdRMW8yYzBKVU8wRlplSE5DVHp0RlFVTkZMRmxCUVVFN1Exb3djMEpVTzBGWmNuTkNUenRGUVVORkxGbEJRVUU3UTFwMWMwSlVPMEZaYkhOQ1R6dEZRVU5GTEZsQlFVRTdRMXB2YzBKVU8wRlpPWEpDUXp0RlFVTkZMR0ZCUVVFN1JVRkRRU3c0UWtGQlFUdERXbWR6UWtnN1FWazFja0pQTzBWQlEwVXNaVUZCUVR0RFdqaHlRbFE3UVZsNmNrSlBPMFZCUTBVc1pVRkJRVHREV2pKeVFsUTdRVmwwY2tKUE8wVkJRMFVzWlVGQlFUdERXbmR5UWxRN1FWbHVja0pQTzBWQlEwVXNaVUZCUVR0RFduRnlRbFE3UVZsb2NrSlBPMFZCUTBVc1pVRkJRVHREV210eVFsUTdRVmszY1VKUE8wVkJRMFVzWlVGQlFUdERXaXR4UWxRN1FWbDZjVUpETzBWQlEwVXNiMEpCUVVFN1JVRkRRU3dyUWtGQlFUdERXakp4UWtnN1FWbDZjVUpITzBWQlEwVXNaMEpCUVVFN1Exb3ljVUpNTzBGWmVuRkNTenRGUVVORkxGTkJRVUU3UTFveWNVSlFPMEZaZUhGQ1N6dEZRVU5GTEZGQlFVRTdRMW93Y1VKUU8wRlpkbkZDU3p0RlFVTkZMRTlCUVVFN1ExcDVjVUpRTzBGWmRIRkNTenRGUVVORkxGVkJRVUU3UTFwM2NVSlFPMEZaYW5GQ1N6czdSVUZGUlN4NVFrRkJRVHRGUVVOQkxGTkJRVUU3UlVGRFFTeHZRMEZCUVR0VlFVRkJMRFJDUVVGQk8wTmFiWEZDVUR0QldXaHhRa3M3TzBWQlJVVXNkMEpCUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzYjBOQlFVRTdWVUZCUVN3MFFrRkJRVHREV210eFFsQTdRVmszY0VKVE8wVkJRMFVzVjBGQlFUdERXaXR3UWxnN1FWazFjRUpUTzBWQlEwVXNWVUZCUVR0RFdqaHdRbGc3UVZremNFSlRPMFZCUTBVc1UwRkJRVHREV2pad1FsZzdRVmt4Y0VKVE8wVkJRMFVzV1VGQlFUdERXalJ3UWxnN1FWbHVjRUpMT3p0RlFVVkZMR0ZCUVVFN1JVRkRRU3cyUWtGQlFUdERXbkZ3UWxBN1FWbG9jRUpETzBWQlEwVXNWMEZCUVR0RFdtdHdRa2c3UVdOc2FrTkVPMFZCUTBVc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMSEZEUVVGQk8wVkJRMEVzWlVGQlFUdERaRzlxUTBRN1FXTnNha05ETzBWQlEwVXNjVU5CUVVFN1JVRkJRU3cyUWtGQlFUdERaRzlxUTBnN1FXTnFha05ETzBWQlEwVXNaVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc2FVTkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMR2xDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMlJ0YWtOSU8wRmphR3BEUXp0RlFVTkZMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZWQlFVRTdSVUZEUVN4cFFrRkJRVHREWkd0cVEwZzdRV012YVVORE96czdSVUZIUlN4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFZRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMSE5DUVVGQk8wVkJRMEVzYVVKQlFVRTdRMlJwYWtOSU8wRmpPV2xEUXp0RlFVTkZMR2xDUVVGQk8wTmtaMnBEU0R0Qll6ZHBRME03UlVGRFJTeHJRa0ZCUVR0RFpDdHBRMGc3UVdNMWFVTkRPMFZCUTBVc1ZVRkJRVHRGUVVOQkxHdENRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3hwUWtGQlFUdERaRGhwUTBnN1FXTXphVU5ETzBWQlEwVXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVDBGQlFUdEZRVU5CTEZGQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxEQkNRVUZCTzBWQlEwRXNLMEpCUVVFN1JVRkRRU3hyUTBGQlFUdFZRVUZCTERCQ1FVRkJPMFZCUTBFc0swSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTmtObWxEU0R0Qll6RnBRME03UlVSb1JUUkNMRzlDUVVGQk8wVkJRMllzZDBKQlFVRTdSVUZEUnl4cFFrRkJRVHRGUTJkRlpDeGxRVUZCTzBWQlEwRXNhVUpCUVVFN1EyUTRhVU5JTzBGak5XbERSenM3TzBWQlIwVXNjMEpCUVVFN1JVRkRRU3haUVVGQk8wTmtPR2xEVER0Qll6TnBRMGM3UlVGRFJTeGxRVUZCTzBOa05tbERURHRCWTNwcFEwTTdSVUZEUlN4eFFrRkJRVHREWkRKcFEwZzdRV04wYVVOTE96czdSVUZIUlN4bFFVRkJPMFZCUTBFc2EwSkJRVUU3UTJSM2FVTlFPMEZqYm1sRFF6czdSVUZGUlN4eFFrRkJRVHRGUVVGQkxIRkNRVUZCTzBWQlFVRXNZMEZCUVR0RlFVTkJMSE5DUVVGQk8wMUJRVUVzYTBKQlFVRTdSVUZEUVN3MlFrRkJRVHRGUVVGQkxEaENRVUZCTzAxQlFVRXNNa0pCUVVFN1ZVRkJRU3gxUWtGQlFUdEZRVU5CTEN0Q1FVRkJPMFZCUTBFc1QwRkJRVHRGUVVOQkxHbENRVUZCTzBOa2NXbERTRHRCWTJ4cFEwczdPenM3UlVGRlJTd3JRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wTmtjMmxEVUR0QlkyNXBRMHM3TzBWQlEwVXNjVUpCUVVFN1RVRkJRU3hsUVVGQk8wTmtjMmxEVUR0QlkyNXBRMHM3TzBWQlEwVXNiMEpCUVVFN1RVRkJRU3haUVVGQk8xVkJRVUVzVVVGQlFUdEZRVU5CTEdWQlFVRTdRMlJ6YVVOUU8wRmphbWxEUXp0RlFVTkZMR2xDUVVGQk8wVkJRMEVzZVVOQlFVRTdRMlJ0YVVOSU8wRmphR2xEUXp0RlFVTkZMR2RDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMlJyYVVOSU8wRmpMMmhEUXp0RlFVTkZMR05CUVVFN1EyUnBhVU5JTzBGak9XaERRenRGUVVORkxGTkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFpHZHBRMGc3UVVGRFJEczdPenM3UjBGTFJ6dEJRVU5JTERCQ1FVRXdRanRCUVVNeFFpdzBRa0ZCTkVJN1FVRkROVUlzTkVKQlFUUkNPMEZsZUhKRE1VSTdSVUZEUlN4alFVRkJPME5tTUhKRFNEdEJaWFp5UTBNN1JVRkRSU3cwUWtGQlFUdEZRVU5CTERoQ1FVRkJPMFZCUTBFc2NVUkJRVUU3UlVGRFFTeHZRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTm1lWEpEU0R0QlpYUnlRME03UlVGRFJTeDVRa0ZCUVR0RFpuZHlRMGc3UVdWMGNrTkhPMFZCUTBVc2VVSkJRVUU3UTJaM2NrTk1PMEZsY25KRFR6dEZRVU5GTEdOQlFVRTdRMloxY2tOVU8wRmxhbkpEUXp0RlFVTkZMR1ZCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4UFFVRkJPMFZCUTBFc1VVRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMQ3RDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN4cFFrRkJRVHRGUVVOQkxIVkNRVUZCTzBWQlEwRXNlVU5CUVVFN1JVRkRRU3hwUWtGQlFUdERabTF5UTBnN1FXVm9ja05MTzBWQlEwVXNaMEpCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzVVVGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxEQkNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMQ3RDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN4clJFRkJRVHRWUVVGQkxEQkRRVUZCTzBWQlEwRXNkVU5CUVVFN1EyWnJja05RTzBGbEwzRkRTenRGUmtOR0xIZERRVUZCTzFWQlFVRXNaME5CUVVFN1JVVkRTU3hsUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1UwRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeFZRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3h2UWtGQlFUdEZRVU5CTERCQ1FVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMRzlEUVVGQk8xVkJRVUVzTkVKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHbERRVUZCTzFWQlFVRXNlVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4cFFrRkJRVHREWm1seVExQTdRV1V2Y1VOUE8wVkJRMFVzTUVKQlFVRTdSVUZEUVN4WlFVRkJPME5tYVhKRFZEdEJaWFIxUTBNN08wVkJNa1JOTERSQ1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFppdHhRMUE3UVdWNmNVTkVPMFZCUTBVN1NVRkRSU3hYUVVGQk8wZG1NbkZEUkR0RFFVTkdPMEZsT1hGRFJEdEZRVU5GTzBsQlEwVXNWMEZCUVR0SFpqSnhRMFE3UTBGRFJqdEJaWGh4UTBRN1JVRkZTVHRKUVVORkxHdENRVUZCTzBkbWVYRkRTRHRGWlhSeFEwTTdTVUZEUlN4MVFrRkJRVHRKUVVOQkxHRkJRVUU3UjJaM2NVTklPMFZsY25GRFF6dEpRVU5GTEdWQlFVRTdSMloxY1VOSU8wTkJRMFk3UVdWdWNVTkVPMFZCUTBVN08wbEJSVVVzTWtKQlFVRTdSMlp4Y1VORU8wVmxhbkZEUXpzN1NVRkZSU3g1UWtGQlFUdEhabTF4UTBnN1JXVm9jVU5ETzBsQlEwVXNNRUpCUVVFN1NVRkRRU3hwUWtGQlFUdEhabXR4UTBnN1JXVndjVU5ET3p0SlFVMUpMR2xEUVVGQk8wbEJRMEVzT0VKQlFVRTdTVUZEUVN3eVFrRkJRVHRIWm10eFEwdzdSV1U1Y0VOTE8wbEJRMFVzT0VKQlFVRTdTVUZEUVN4M1FrRkJRVHRKUVVOQkxITkNRVUZCTzBsQlEwRXNORUpCUVVFN1IyWm5jVU5RTzBWbGNuRkRSenM3U1VGVlNTeHBRMEZCUVR0SlFVTkJMRGhDUVVGQk8wbEJRMEVzTWtKQlFVRTdSMllyY0VOUU8wVmxOWEJEU3pzN1NVRkZSU3g1UWtGQlFUdEhaamh3UTFBN1JXVXhja05ETzBsQmFVTkpMSGRDUVVGQk8wbEJRMEVzYTBOQlFVRTdTVUZEUVN3NFFrRkJRVHRIWmpSd1EwdzdSV1V2Y2tORE96dEpRWGREU1N4clEwRkJRVHRIWmpKd1EwdzdSV1Z1YzBORE96czdTVUU0UTBrc2JVTkJRVUU3VDBGQlFTeG5RMEZCUVR0WlFVRkJMRzlDUVVGQk8wZG1NSEJEVER0RlpYWndRMGM3U1VGRFJTeDVRa0ZCUVR0SFpubHdRMHc3UTBGRFJqdEJRVU5FTEd0RVFVRnJSRHRCWjBJM01FTnNSRHRGUVVORkxHZENRVUZCTzBWQlEwRXNaVUZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3hyUTBGQlFUdFZRVUZCTERCQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTJoQ0t6QkRSRHRCWjBJM01FTkRPMFZJYTBSRkxIZERRVUZCTzFWQlFVRXNaME5CUVVFN1JVZG9SRUVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNNRUpCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEN0Q1FVRkJPMVZCUVVFc2RVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc2FVSkJRVUU3UTJoQ0t6QkRTRHRCWjBJM01FTkhPMFZCUTBVc1pVRkJRVHRGUVVOQkxITkNRVUZCTzBOb1Fpc3dRMHc3UVdkQ05UQkRSenRGUVVORkxHTkJRVUU3UTJoQ09EQkRURHRCWjBKNk1FTkhPenM3UlVGSFJTeFpRVUZCTzBWQlEwRXNjMEpCUVVFN1EyaENNakJEVER0QlowSjRNRU5ITzBWQlEwVXNaVUZCUVR0RGFFSXdNRU5NTzBGblFuUXdRME03UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hUUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2VVTkJRVUU3VlVGQlFTeHBRMEZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMmhDZHpCRFNEdEJaMEp1TUVOTE8wVkJRMFVzV1VGQlFUdEZRVU5CTERCQ1FVRkJPMFZCUTBFc2MwSkJRVUU3UTJoQ2NUQkRVRHRCWjBKdU1FTlBPMFZCUTBVc1dVRkJRVHREYUVKeE1FTlVPMEZuUWk5NlEwczdPenRGUVVkRkxGbEJRVUU3UTJoQ2FUQkRVRHRCWjBJemVrTkhPMFZCUTBVc2IwSkJRVUU3UTJoQ05ucERURHRCWjBKMGVrTkxPenM3T3pzN096dEZRVWxGTEc5Q1FVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHMUNRVUZCTzBOb1FqUjZRMUE3UVdkQ01YcERUenM3T3pzN096czdSVUZEUlN4WlFVRkJPMFZCUTBFc2JVSkJRVUU3UTJoQ2JUQkRWRHRCWjBJdmVrTkxPenRGUVVORkxEQkNRVUZCTzBOb1Ftc3dRMUE3UVdkQ04zcERRenM3UlVGRlJTeFZRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdERhRUlyZWtOSU8wRm5RbXd3UTBNN08wVkJUVWtzYzBKQlFVRTdRMmhDWnpCRFREdEJaMEkxZWtORE8wVkJRMFVzVlVGQlFUdERhRUk0ZWtOSU8wRm5RalY2UTBjN1JVRkRSU3hYUVVGQk8wTm9Ramg2UTB3N1FXZENNWHBEUXp0RlFVTkZMR0ZCUVVFN1EyaENOSHBEU0R0QlowSXhla05ITzBWQlEwVXNZMEZCUVR0RGFFSTBla05NTzBGblFuaDZRME03TzBWQlJVVXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdEZRVU5CTEZsQlFVRTdRMmhDTUhwRFNEdEJaMEoyZWtORE8wVkJRMFVzVTBGQlFUdEZRVU5CTEZsQlFVRTdRMmhDZVhwRFNEdEJaMEoyZWtOSE8wVkJRMFVzWVVGQlFUdERhRUo1ZWtOTU8wRm5Rbko2UTBNN1JVRkRSU3hUUVVGQk8wVkJRMEVzVjBGQlFUdERhRUoxZWtOSU8wRm5Rbko2UTBjN1JVRkRSU3haUVVGQk8wTm9RblY2UTB3N1FXZENPWGxEU3pzN096dEZRVU5GTEdOQlFVRTdRMmhDYlhwRFVEdEJRVU5FT3pzN096dEhRVXRITzBGQlEwZ3NjMEpCUVhOQ08wRkJRM1JDTEhOQ1FVRnpRanRCUVVOMFFpeHpRa0ZCYzBJN1FXbENhQ3REZEVJN1JVcHJRalpDTEcxQ1FVRkJPMFZCYzBONlFpeDNRMEZCUVR0VlFVRkJMR2REUVVGQk8wVkpja1JHTEdkQ1FVRkJPMFZCUTBFc1kwRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzZVVOQlFVRTdSVUZCUVN4cFEwRkJRVHRGUVVOQkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1JVRkRRU3hwUWtGQlFUdERha0pySzBORU8wRnBRbWdyUTBNN1JVcG1ORUlzYjBKQlFVRTdSVUZEWml4M1FrRkJRVHRGU1dkQ1dDeFZRVUZCTzBWQlEwRXNhVUpCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeHBRa0ZCUVR0RGFrSnRLME5JTzBGcFFtZ3JRME03TzBWQlJVVXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVDBGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTnFRbXNyUTBnN1FXbENMemxEUXp0RlFVTkZMRkZCUVVFN1JVRkRRU3haUVVGQk8wTnFRbWtyUTBnN1FXbENiaXREUXp0RlFVdEpMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZOQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc2VVTkJRVUU3VlVGQlFTeHBRMEZCUVR0RGFrSnBLME5NTzBGcFFqYzVRME03UlVGRFJTeFRRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3haUVVGQk8wTnFRaXM1UTBnN1FXbENiQ3REUXp0RlFVMUpMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZOQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc2VVTkJRVUU3VlVGQlFTeHBRMEZCUVR0RGFrSXJPVU5NTzBGcFFqVTVRMGM3UlVGRFJTeFpRVUZCTzBOcVFqZzVRMHc3UVdsQ01UbERRenRGUVVWSkxEQkNRVUZCTzBOcVFqSTVRMHc3UVdsQ2RqbERRenRGUVVWSkxEQkNRVUZCTzBOcVFuYzVRMHc3UVdsQ2NEbERRenRGUVVWSkxEQkNRVUZCTzBOcVFuRTVRMHc3UVdsQ2FqbERRenRGUVVWSkxEQkNRVUZCTzBOcVFtczVRMHc3UVdsQ09UaERRenRGUVVORkxHbENRVUZCTzBWQlEwRXNkVUpCUVVFN1EycENaemxEU0R0QmFVSTNPRU5MTzBWQlEwVXNLMEpCUVVFN1JVRkRRU3d3UWtGQlFUdERha0lyT0VOUU8wRnBRalU0UTBzN1JVRkRSU3dyUWtGQlFUdEZRVU5CTERCQ1FVRkJPME5xUWpnNFExQTdRV2xDTXpoRFN6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTJwQ05qaERVRHRCYVVJeE9FTkxPMFZCUTBVc0swSkJRVUU3UlVGRFFTd3dRa0ZCUVR0RGFrSTBPRU5RTzBGcFFtd3JRME03UlVFeVFra3NVMEZCUVR0RlFVTkJMR05CUVVFN1EycENNRGhEVER0QmFVSjBLME5ETzBWQkswSk5MR05CUVVFN1EycENNRGhEVUR0QmFVSnlPRU5ETzBWQlEwVXNhVUpCUVVFN1JVRkRRU3huUWtGQlFUdERha0oxT0VOSU8wRnBRbkE0UTBzN1JVRkZTU3hsUVVGQk8wTnFRbkU0UTFRN1FXbENhamhEU3p0RlFVVkpMR1ZCUVVFN1EycENhemhEVkR0QmFVSTVOME5MTzBWQlJVa3NaVUZCUVR0RGFrSXJOME5VTzBGcFFqTTNRMHM3UlVGRlNTeGxRVUZCTzBOcVFqUTNRMVE3UVdsQ2NqbERRenRGUVN0Q1NTeDFRa0ZCUVR0RGFrSjVOME5NTzBGcFFuSTNRME03UlVwMFNqSkNMRzlDUVVGQk8wTmlPR3RFTlVJN1FXbENjRGREU3p0RlFVTkZMR2xDUVVGQk8wVkJRMEVzWjBKQlFVRTdRMnBDY3pkRFVEdEJhVUo0TjBOTE8wVktNVXAxUWl4dlFrRkJRVHRGU1dkTGJrSXNWVUZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEd0Q1FVRkJPME5xUW5NM1ExUTdRV2xDYmpkRFR6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTJwQ2NUZERWRHRCYVVKcU4wTkxPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RGFrSnROME5RTzBGcFFtbzNRMDg3UlVGRFJTeHBRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wTnFRbTAzUTFRN1FXbENOelpEUXp0RlFVTkZMR2xDUVVGQk8wVkJRMEVzZFVKQlFVRTdRMnBDS3paRFNEdEJhVUkxTmtOTE8wVkJRMFVzYVVKQlFVRTdSVUZEUVN4MVFrRkJRVHREYWtJNE5rTlFPMEZwUWpNMlEwczdSVUZEUlN4cFFrRkJRVHRGUVVOQkxIVkNRVUZCTzBOcVFqWTJRMUE3UVdsQ2VEWkRRenRGUVVORkxGZEJRVUU3UTJwQ01EWkRTRHRCYVVKMk5rTkRPMFZCUTBVc1kwRkJRVHREYWtKNU5rTklPMEZCUTBRc01rSkJRVEpDTzBGclFpOXZSRE5DTzBWQlEwVXNWMEZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3d5UWtGQlFUdERiRUpwY0VSRU8wRnJRaTl2UkVNN1JVRkRSU3d5UWtGQlFUdERiRUpwY0VSSU8wRnJRamR2UkVjN1JVRkRSU3h6UTBGQlFUdEZRVU5CTERKQ1FVRkJPME5zUWl0dlJFdzdRV3RDTlc5RVJ6dEZRVU5GTEhORFFVRkJPMFZCUTBFc01rSkJRVUU3UTJ4Q09HOUVURHRCYTBJemIwUkhPMFZCUTBVc2MwTkJRVUU3UTJ4Q05tOUVURHRCYTBKNmIwUkRPMFZCUTBVc2MwTkJRVUU3UTJ4Q01tOUVTQ0lzSW1acGJHVWlPaUprYjJOekxtTnpjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUlTQnViM0p0WVd4cGVtVXVZM056SUhZNExqQXVNU0I4SUUxSlZDQk1hV05sYm5ObElId2daMmwwYUhWaUxtTnZiUzl1WldOdmJHRnpMMjV2Y20xaGJHbDZaUzVqYzNNZ0tpOWNiaThxSUVSdlkzVnRaVzUwWEc0Z0lDQTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQU0FxTDF4dUx5b3FYRzRnS2lBeExpQkRiM0p5WldOMElIUm9aU0JzYVc1bElHaGxhV2RvZENCcGJpQmhiR3dnWW5KdmQzTmxjbk11WEc0Z0tpQXlMaUJRY21WMlpXNTBJR0ZrYW5WemRHMWxiblJ6SUc5bUlHWnZiblFnYzJsNlpTQmhablJsY2lCdmNtbGxiblJoZEdsdmJpQmphR0Z1WjJWeklHbHVJR2xQVXk1Y2JpQXFMMXh1YUhSdGJDQjdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXhMakUxTzF4dUlDQXZLaUF4SUNvdlhHNGdJQzEzWldKcmFYUXRkR1Y0ZEMxemFYcGxMV0ZrYW5WemREb2dNVEF3SlR0Y2JpQWdMeW9nTWlBcUwxeHVmVnh1THlvZ1UyVmpkR2x2Ym5OY2JpQWdJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5SUNvdlhHNHZLaXBjYmlBcUlGSmxiVzkyWlNCMGFHVWdiV0Z5WjJsdUlHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2JpQXFMMXh1WW05a2VTQjdYRzRnSUcxaGNtZHBiam9nTUR0Y2JuMWNiaThxS2x4dUlDb2dVbVZ1WkdWeUlIUm9aU0JnYldGcGJtQWdaV3hsYldWdWRDQmpiMjV6YVhOMFpXNTBiSGtnYVc0Z1NVVXVYRzRnS2k5Y2JtMWhhVzRnZTF4dUlDQmthWE53YkdGNU9pQmliRzlqYXp0Y2JuMWNiaThxS2x4dUlDb2dRMjl5Y21WamRDQjBhR1VnWm05dWRDQnphWHBsSUdGdVpDQnRZWEpuYVc0Z2IyNGdZR2d4WUNCbGJHVnRaVzUwY3lCM2FYUm9hVzRnWUhObFkzUnBiMjVnSUdGdVpGeHVJQ29nWUdGeWRHbGpiR1ZnSUdOdmJuUmxlSFJ6SUdsdUlFTm9jbTl0WlN3Z1JtbHlaV1p2ZUN3Z1lXNWtJRk5oWm1GeWFTNWNiaUFxTDF4dWFERWdlMXh1SUNCbWIyNTBMWE5wZW1VNklESmxiVHRjYmlBZ2JXRnlaMmx1T2lBd0xqWTNaVzBnTUR0Y2JuMWNiaThxSUVkeWIzVndhVzVuSUdOdmJuUmxiblJjYmlBZ0lEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlJQ292WEc0dktpcGNiaUFxSURFdUlFRmtaQ0IwYUdVZ1kyOXljbVZqZENCaWIzZ2djMmw2YVc1bklHbHVJRVpwY21WbWIzZ3VYRzRnS2lBeUxpQlRhRzkzSUhSb1pTQnZkbVZ5Wm14dmR5QnBiaUJGWkdkbElHRnVaQ0JKUlM1Y2JpQXFMMXh1YUhJZ2UxeHVJQ0JpYjNndGMybDZhVzVuT2lCamIyNTBaVzUwTFdKdmVEdGNiaUFnTHlvZ01TQXFMMXh1SUNCb1pXbG5hSFE2SURBN1hHNGdJQzhxSURFZ0tpOWNiaUFnYjNabGNtWnNiM2M2SUhacGMybGliR1U3WEc0Z0lDOHFJRElnS2k5Y2JuMWNiaThxS2x4dUlDb2dNUzRnUTI5eWNtVmpkQ0IwYUdVZ2FXNW9aWEpwZEdGdVkyVWdZVzVrSUhOallXeHBibWNnYjJZZ1ptOXVkQ0J6YVhwbElHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2JpQXFJREl1SUVOdmNuSmxZM1FnZEdobElHOWtaQ0JnWlcxZ0lHWnZiblFnYzJsNmFXNW5JR2x1SUdGc2JDQmljbTkzYzJWeWN5NWNiaUFxTDF4dWNISmxJSHRjYmlBZ1ptOXVkQzFtWVcxcGJIazZJRzF2Ym05emNHRmpaU3dnYlc5dWIzTndZV05sTzF4dUlDQXZLaUF4SUNvdlhHNGdJR1p2Ym5RdGMybDZaVG9nTVdWdE8xeHVJQ0F2S2lBeUlDb3ZYRzU5WEc0dktpQlVaWGgwTFd4bGRtVnNJSE5sYldGdWRHbGpjMXh1SUNBZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMGdLaTljYmk4cUtseHVJQ29nVW1WdGIzWmxJSFJvWlNCbmNtRjVJR0poWTJ0bmNtOTFibVFnYjI0Z1lXTjBhWFpsSUd4cGJtdHpJR2x1SUVsRklERXdMbHh1SUNvdlhHNWhJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RISmhibk53WVhKbGJuUTdYRzU5WEc0dktpcGNiaUFxSURFdUlGSmxiVzkyWlNCMGFHVWdZbTkwZEc5dElHSnZjbVJsY2lCcGJpQkRhSEp2YldVZ05UY3RYRzRnS2lBeUxpQkJaR1FnZEdobElHTnZjbkpsWTNRZ2RHVjRkQ0JrWldOdmNtRjBhVzl1SUdsdUlFTm9jbTl0WlN3Z1JXUm5aU3dnU1VVc0lFOXdaWEpoTENCaGJtUWdVMkZtWVhKcExseHVJQ292WEc1aFltSnlXM1JwZEd4bFhTQjdYRzRnSUdKdmNtUmxjaTFpYjNSMGIyMDZJRzV2Ym1VN1hHNGdJQzhxSURFZ0tpOWNiaUFnZEdWNGRDMWtaV052Y21GMGFXOXVPaUIxYm1SbGNteHBibVU3WEc0Z0lDOHFJRElnS2k5Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQjFibVJsY214cGJtVWdaRzkwZEdWa08xeHVJQ0F2S2lBeUlDb3ZYRzU5WEc0dktpcGNiaUFxSUVGa1pDQjBhR1VnWTI5eWNtVmpkQ0JtYjI1MElIZGxhV2RvZENCcGJpQkRhSEp2YldVc0lFVmtaMlVzSUdGdVpDQlRZV1poY21rdVhHNGdLaTljYm1Jc1hHNXpkSEp2Ym1jZ2UxeHVJQ0JtYjI1MExYZGxhV2RvZERvZ1ltOXNaR1Z5TzF4dWZWeHVMeW9xWEc0Z0tpQXhMaUJEYjNKeVpXTjBJSFJvWlNCcGJtaGxjbWwwWVc1alpTQmhibVFnYzJOaGJHbHVaeUJ2WmlCbWIyNTBJSE5wZW1VZ2FXNGdZV3hzSUdKeWIzZHpaWEp6TGx4dUlDb2dNaTRnUTI5eWNtVmpkQ0IwYUdVZ2IyUmtJR0JsYldBZ1ptOXVkQ0J6YVhwcGJtY2dhVzRnWVd4c0lHSnliM2R6WlhKekxseHVJQ292WEc1amIyUmxMRnh1YTJKa0xGeHVjMkZ0Y0NCN1hHNGdJR1p2Ym5RdFptRnRhV3g1T2lCdGIyNXZjM0JoWTJVc0lHMXZibTl6Y0dGalpUdGNiaUFnTHlvZ01TQXFMMXh1SUNCbWIyNTBMWE5wZW1VNklERmxiVHRjYmlBZ0x5b2dNaUFxTDF4dWZWeHVMeW9xWEc0Z0tpQkJaR1FnZEdobElHTnZjbkpsWTNRZ1ptOXVkQ0J6YVhwbElHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2JpQXFMMXh1YzIxaGJHd2dlMXh1SUNCbWIyNTBMWE5wZW1VNklEZ3dKVHRjYm4xY2JpOHFLbHh1SUNvZ1VISmxkbVZ1ZENCZ2MzVmlZQ0JoYm1RZ1lITjFjR0FnWld4bGJXVnVkSE1nWm5KdmJTQmhabVpsWTNScGJtY2dkR2hsSUd4cGJtVWdhR1ZwWjJoMElHbHVYRzRnS2lCaGJHd2dZbkp2ZDNObGNuTXVYRzRnS2k5Y2JuTjFZaXhjYm5OMWNDQjdYRzRnSUdadmJuUXRjMmw2WlRvZ056VWxPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNRHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0IyWlhKMGFXTmhiQzFoYkdsbmJqb2dZbUZ6Wld4cGJtVTdYRzU5WEc1emRXSWdlMXh1SUNCaWIzUjBiMjA2SUMwd0xqSTFaVzA3WEc1OVhHNXpkWEFnZTF4dUlDQjBiM0E2SUMwd0xqVmxiVHRjYm4xY2JpOHFJRVZ0WW1Wa1pHVmtJR052Ym5SbGJuUmNiaUFnSUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOUlDb3ZYRzR2S2lwY2JpQXFJRkpsYlc5MlpTQjBhR1VnWW05eVpHVnlJRzl1SUdsdFlXZGxjeUJwYm5OcFpHVWdiR2x1YTNNZ2FXNGdTVVVnTVRBdVhHNGdLaTljYm1sdFp5QjdYRzRnSUdKdmNtUmxjaTF6ZEhsc1pUb2dibTl1WlR0Y2JuMWNiaThxSUVadmNtMXpYRzRnSUNBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBTQXFMMXh1THlvcVhHNGdLaUF4TGlCRGFHRnVaMlVnZEdobElHWnZiblFnYzNSNWJHVnpJR2x1SUdGc2JDQmljbTkzYzJWeWN5NWNiaUFxSURJdUlGSmxiVzkyWlNCMGFHVWdiV0Z5WjJsdUlHbHVJRVpwY21WbWIzZ2dZVzVrSUZOaFptRnlhUzVjYmlBcUwxeHVZblYwZEc5dUxGeHVhVzV3ZFhRc1hHNXZjSFJuY205MWNDeGNibk5sYkdWamRDeGNiblJsZUhSaGNtVmhJSHRjYmlBZ1ptOXVkQzFtWVcxcGJIazZJR2x1YUdWeWFYUTdYRzRnSUM4cUlERWdLaTljYmlBZ1ptOXVkQzF6YVhwbE9pQXhNREFsTzF4dUlDQXZLaUF4SUNvdlhHNGdJR3hwYm1VdGFHVnBaMmgwT2lBeExqRTFPMXh1SUNBdktpQXhJQ292WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnTHlvZ01pQXFMMXh1ZlZ4dUx5b3FYRzRnS2lCVGFHOTNJSFJvWlNCdmRtVnlabXh2ZHlCcGJpQkpSUzVjYmlBcUlERXVJRk5vYjNjZ2RHaGxJRzkyWlhKbWJHOTNJR2x1SUVWa1oyVXVYRzRnS2k5Y2JtSjFkSFJ2Yml4Y2JtbHVjSFYwSUh0Y2JpQWdMeW9nTVNBcUwxeHVJQ0J2ZG1WeVpteHZkem9nZG1semFXSnNaVHRjYm4xY2JpOHFLbHh1SUNvZ1VtVnRiM1psSUhSb1pTQnBibWhsY21sMFlXNWpaU0J2WmlCMFpYaDBJSFJ5WVc1elptOXliU0JwYmlCRlpHZGxMQ0JHYVhKbFptOTRMQ0JoYm1RZ1NVVXVYRzRnS2lBeExpQlNaVzF2ZG1VZ2RHaGxJR2x1YUdWeWFYUmhibU5sSUc5bUlIUmxlSFFnZEhKaGJuTm1iM0p0SUdsdUlFWnBjbVZtYjNndVhHNGdLaTljYm1KMWRIUnZiaXhjYm5ObGJHVmpkQ0I3WEc0Z0lDOHFJREVnS2k5Y2JpQWdkR1Y0ZEMxMGNtRnVjMlp2Y20wNklHNXZibVU3WEc1OVhHNHZLaXBjYmlBcUlFTnZjbkpsWTNRZ2RHaGxJR2x1WVdKcGJHbDBlU0IwYnlCemRIbHNaU0JqYkdsamEyRmliR1VnZEhsd1pYTWdhVzRnYVU5VElHRnVaQ0JUWVdaaGNta3VYRzRnS2k5Y2JtSjFkSFJ2Yml4Y2JsdDBlWEJsUFNkaWRYUjBiMjRuWFN4Y2JsdDBlWEJsUFNkeVpYTmxkQ2RkTEZ4dVczUjVjR1U5SjNOMVltMXBkQ2RkSUh0Y2JpQWdMWGRsWW10cGRDMWhjSEJsWVhKaGJtTmxPaUJpZFhSMGIyNDdYRzU5WEc0dktpcGNiaUFxSUZKbGJXOTJaU0IwYUdVZ2FXNXVaWElnWW05eVpHVnlJR0Z1WkNCd1lXUmthVzVuSUdsdUlFWnBjbVZtYjNndVhHNGdLaTljYm1KMWRIUnZiam82TFcxdmVpMW1iMk4xY3kxcGJtNWxjaXhjYmx0MGVYQmxQU2RpZFhSMGIyNG5YVG82TFcxdmVpMW1iMk4xY3kxcGJtNWxjaXhjYmx0MGVYQmxQU2R5WlhObGRDZGRPam90Ylc5NkxXWnZZM1Z6TFdsdWJtVnlMRnh1VzNSNWNHVTlKM04xWW0xcGRDZGRPam90Ylc5NkxXWnZZM1Z6TFdsdWJtVnlJSHRjYmlBZ1ltOXlaR1Z5TFhOMGVXeGxPaUJ1YjI1bE8xeHVJQ0J3WVdSa2FXNW5PaUF3TzF4dWZWeHVMeW9xWEc0Z0tpQlNaWE4wYjNKbElIUm9aU0JtYjJOMWN5QnpkSGxzWlhNZ2RXNXpaWFFnWW5rZ2RHaGxJSEJ5WlhacGIzVnpJSEoxYkdVdVhHNGdLaTljYm1KMWRIUnZiam90Ylc5NkxXWnZZM1Z6Y21sdVp5eGNibHQwZVhCbFBTZGlkWFIwYjI0blhUb3RiVzk2TFdadlkzVnpjbWx1Wnl4Y2JsdDBlWEJsUFNkeVpYTmxkQ2RkT2kxdGIzb3RabTlqZFhOeWFXNW5MRnh1VzNSNWNHVTlKM04xWW0xcGRDZGRPaTF0YjNvdFptOWpkWE55YVc1bklIdGNiaUFnYjNWMGJHbHVaVG9nTVhCNElHUnZkSFJsWkNCQ2RYUjBiMjVVWlhoME8xeHVmVnh1THlvcVhHNGdLaUJEYjNKeVpXTjBJSFJvWlNCd1lXUmthVzVuSUdsdUlFWnBjbVZtYjNndVhHNGdLaTljYm1acFpXeGtjMlYwSUh0Y2JpQWdjR0ZrWkdsdVp6b2dNQzR6TldWdElEQXVOelZsYlNBd0xqWXlOV1Z0TzF4dWZWeHVMeW9xWEc0Z0tpQXhMaUJEYjNKeVpXTjBJSFJvWlNCMFpYaDBJSGR5WVhCd2FXNW5JR2x1SUVWa1oyVWdZVzVrSUVsRkxseHVJQ29nTWk0Z1EyOXljbVZqZENCMGFHVWdZMjlzYjNJZ2FXNW9aWEpwZEdGdVkyVWdabkp2YlNCZ1ptbGxiR1J6WlhSZ0lHVnNaVzFsYm5SeklHbHVJRWxGTGx4dUlDb2dNeTRnVW1WdGIzWmxJSFJvWlNCd1lXUmthVzVuSUhOdklHUmxkbVZzYjNCbGNuTWdZWEpsSUc1dmRDQmpZWFZuYUhRZ2IzVjBJSGRvWlc0Z2RHaGxlU0I2WlhKdklHOTFkRnh1SUNvZ0lDQWdZR1pwWld4a2MyVjBZQ0JsYkdWdFpXNTBjeUJwYmlCaGJHd2dZbkp2ZDNObGNuTXVYRzRnS2k5Y2JteGxaMlZ1WkNCN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJQzhxSURFZ0tpOWNiaUFnWTI5c2IzSTZJR2x1YUdWeWFYUTdYRzRnSUM4cUlESWdLaTljYmlBZ1pHbHpjR3hoZVRvZ2RHRmliR1U3WEc0Z0lDOHFJREVnS2k5Y2JpQWdiV0Y0TFhkcFpIUm9PaUF4TURBbE8xeHVJQ0F2S2lBeElDb3ZYRzRnSUhCaFpHUnBibWM2SURBN1hHNGdJQzhxSURNZ0tpOWNiaUFnZDJocGRHVXRjM0JoWTJVNklHNXZjbTFoYkR0Y2JpQWdMeW9nTVNBcUwxeHVmVnh1THlvcVhHNGdLaUJCWkdRZ2RHaGxJR052Y25KbFkzUWdkbVZ5ZEdsallXd2dZV3hwWjI1dFpXNTBJR2x1SUVOb2NtOXRaU3dnUm1seVpXWnZlQ3dnWVc1a0lFOXdaWEpoTGx4dUlDb3ZYRzV3Y205bmNtVnpjeUI3WEc0Z0lIWmxjblJwWTJGc0xXRnNhV2R1T2lCaVlYTmxiR2x1WlR0Y2JuMWNiaThxS2x4dUlDb2dVbVZ0YjNabElIUm9aU0JrWldaaGRXeDBJSFpsY25ScFkyRnNJSE5qY205c2JHSmhjaUJwYmlCSlJTQXhNQ3N1WEc0Z0tpOWNiblJsZUhSaGNtVmhJSHRjYmlBZ2IzWmxjbVpzYjNjNklHRjFkRzg3WEc1OVhHNHZLaXBjYmlBcUlERXVJRUZrWkNCMGFHVWdZMjl5Y21WamRDQmliM2dnYzJsNmFXNW5JR2x1SUVsRklERXdMbHh1SUNvZ01pNGdVbVZ0YjNabElIUm9aU0J3WVdSa2FXNW5JR2x1SUVsRklERXdMbHh1SUNvdlhHNWJkSGx3WlQwblkyaGxZMnRpYjNnblhTeGNibHQwZVhCbFBTZHlZV1JwYnlkZElIdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNiaUFnTHlvZ01TQXFMMXh1SUNCd1lXUmthVzVuT2lBd08xeHVJQ0F2S2lBeUlDb3ZYRzU5WEc0dktpcGNiaUFxSUVOdmNuSmxZM1FnZEdobElHTjFjbk52Y2lCemRIbHNaU0J2WmlCcGJtTnlaVzFsYm5RZ1lXNWtJR1JsWTNKbGJXVnVkQ0JpZFhSMGIyNXpJR2x1SUVOb2NtOXRaUzVjYmlBcUwxeHVXM1I1Y0dVOUoyNTFiV0psY2lkZE9qb3RkMlZpYTJsMExXbHVibVZ5TFhOd2FXNHRZblYwZEc5dUxGeHVXM1I1Y0dVOUoyNTFiV0psY2lkZE9qb3RkMlZpYTJsMExXOTFkR1Z5TFhOd2FXNHRZblYwZEc5dUlIdGNiaUFnYUdWcFoyaDBPaUJoZFhSdk8xeHVmVnh1THlvcVhHNGdLaUF4TGlCRGIzSnlaV04wSUhSb1pTQnZaR1FnWVhCd1pXRnlZVzVqWlNCcGJpQkRhSEp2YldVZ1lXNWtJRk5oWm1GeWFTNWNiaUFxSURJdUlFTnZjbkpsWTNRZ2RHaGxJRzkxZEd4cGJtVWdjM1I1YkdVZ2FXNGdVMkZtWVhKcExseHVJQ292WEc1YmRIbHdaVDBuYzJWaGNtTm9KMTBnZTF4dUlDQXRkMlZpYTJsMExXRndjR1ZoY21GdVkyVTZJSFJsZUhSbWFXVnNaRHRjYmlBZ0x5b2dNU0FxTDF4dUlDQnZkWFJzYVc1bExXOW1abk5sZERvZ0xUSndlRHRjYmlBZ0x5b2dNaUFxTDF4dWZWeHVMeW9xWEc0Z0tpQlNaVzF2ZG1VZ2RHaGxJR2x1Ym1WeUlIQmhaR1JwYm1jZ2FXNGdRMmh5YjIxbElHRnVaQ0JUWVdaaGNta2diMjRnYldGalQxTXVYRzRnS2k5Y2JsdDBlWEJsUFNkelpXRnlZMmduWFRvNkxYZGxZbXRwZEMxelpXRnlZMmd0WkdWamIzSmhkR2x2YmlCN1hHNGdJQzEzWldKcmFYUXRZWEJ3WldGeVlXNWpaVG9nYm05dVpUdGNibjFjYmk4cUtseHVJQ29nTVM0Z1EyOXljbVZqZENCMGFHVWdhVzVoWW1sc2FYUjVJSFJ2SUhOMGVXeGxJR05zYVdOcllXSnNaU0IwZVhCbGN5QnBiaUJwVDFNZ1lXNWtJRk5oWm1GeWFTNWNiaUFxSURJdUlFTm9ZVzVuWlNCbWIyNTBJSEJ5YjNCbGNuUnBaWE1nZEc4Z1lHbHVhR1Z5YVhSZ0lHbHVJRk5oWm1GeWFTNWNiaUFxTDF4dU9qb3RkMlZpYTJsMExXWnBiR1V0ZFhCc2IyRmtMV0oxZEhSdmJpQjdYRzRnSUMxM1pXSnJhWFF0WVhCd1pXRnlZVzVqWlRvZ1luVjBkRzl1TzF4dUlDQXZLaUF4SUNvdlhHNGdJR1p2Ym5RNklHbHVhR1Z5YVhRN1hHNGdJQzhxSURJZ0tpOWNibjFjYmk4cUlFbHVkR1Z5WVdOMGFYWmxYRzRnSUNBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBTQXFMMXh1THlwY2JpQXFJRUZrWkNCMGFHVWdZMjl5Y21WamRDQmthWE53YkdGNUlHbHVJRVZrWjJVc0lFbEZJREV3S3l3Z1lXNWtJRVpwY21WbWIzZ3VYRzRnS2k5Y2JtUmxkR0ZwYkhNZ2UxeHVJQ0JrYVhOd2JHRjVPaUJpYkc5amF6dGNibjFjYmk4cVhHNGdLaUJCWkdRZ2RHaGxJR052Y25KbFkzUWdaR2x6Y0d4aGVTQnBiaUJoYkd3Z1luSnZkM05sY25NdVhHNGdLaTljYm5OMWJXMWhjbmtnZTF4dUlDQmthWE53YkdGNU9pQnNhWE4wTFdsMFpXMDdYRzU5WEc0dktpQk5hWE5qWEc0Z0lDQTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQU0FxTDF4dUx5b3FYRzRnS2lCQlpHUWdkR2hsSUdOdmNuSmxZM1FnWkdsemNHeGhlU0JwYmlCSlJTQXhNQ3N1WEc0Z0tpOWNiblJsYlhCc1lYUmxJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpOHFLbHh1SUNvZ1FXUmtJSFJvWlNCamIzSnlaV04wSUdScGMzQnNZWGtnYVc0Z1NVVWdNVEF1WEc0Z0tpOWNibHRvYVdSa1pXNWRJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpOHFJRDA5UFQwOUlFSmhjMlVnUFQwOVBUMGdLaTljYm1oMGJXd3NYRzVpYjJSNUlIdGNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHVJQ0JpWVdOclozSnZkVzVrT2lBalptRm1ZV1poTzF4dUlDQmpiMnh2Y2pvZ0l6TXpNenRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhOSEI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTVRVd0pUdGNiaUFnWm05dWRDMW1ZVzFwYkhrNklDZE5hV055YjNOdlpuUWdXV0ZJWldrZ1ZVa25MQ0JCY21saGJDd2djMkZ1Y3kxelpYSnBaanRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNibUU2YkdsdWF5eGNibUU2ZG1semFYUmxaQ3hjYm1FNmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4dWZWeHVZVHBvYjNabGNpQjdYRzRnSUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nZFc1a1pYSnNhVzVsTzF4dWZWeHVZMjlrWlNCN1hHNGdJR1p2Ym5RdFptRnRhV3g1T2lBblUyOTFjbU5sSUVOdlpHVWdVSEp2Snl3Z1EyOXVjMjlzWVhNc0lFZGxiM0puYVdFc0lFMXZibUZqYnl3Z2JXOXViM053WVdObExDQkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFpqdGNibjFjYmk4cUlEMDlQVDA5SUZOamNtOXNiR0poY2lBOVBUMDlQU0FxTDF4dU9qb3RkMlZpYTJsMExYTmpjbTlzYkdKaGNpQjdYRzRnSUhkcFpIUm9PaUEzY0hnN1hHNGdJR2hsYVdkb2REb2dOM0I0TzF4dUlDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEdGNibjFjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRISmhZMnN0Y0dsbFkyVWdlMXh1SUNBdGQyVmlhMmwwTFdKdmNtUmxjaTF5WVdScGRYTTZJRFZ3ZUR0Y2JuMWNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWEl0ZEdoMWJXSTZkbVZ5ZEdsallXd2dlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TWpVcE8xeHVJQ0F0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEVndlRHRjYm4xY2JqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJNmFHOXlhWHB2Ym5SaGJDQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhKblltRW9NQ3dnTUN3Z01Dd2dNQzR5TlNrN1hHNGdJQzEzWldKcmFYUXRZbTl5WkdWeUxYSmhaR2wxY3pvZ05YQjRPMXh1ZlZ4dU9qb3RkMlZpYTJsMExYTmpjbTlzYkdKaGNqcG9iM1psY2lCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHhOU2s3WEc1OVhHNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlMWFJvZFcxaU9taHZkbVZ5SUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqTTFLVHRjYm4xY2JpOHFJRXhoZVc5MWRDQXFMMXh1TG1SdlkzTWdlMXh1SUNCa2FYTndiR0Y1T2lCbWJHVjRPMXh1SUNCbWJHVjRMV1JwY21WamRHbHZiam9nY205M08xeHVJQ0JtYkdWNExYZHlZWEE2SUc1dmQzSmhjRHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQm9aV2xuYUhRNklERXdNQ1U3WEc0Z0lIZHBaSFJvT2lBeE1EQWxPMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dktpQkJjMmxrWlNBcUwxeHVMbUZ6YVdSbElIdGNiaUFnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnWm14bGVDMXphSEpwYm1zNklEQTdYRzRnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYRzRnSUdac1pYZ3RkM0poY0RvZ2JtOTNjbUZ3TzF4dUlDQjNhV1IwYURvZ01qWXdjSGc3WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqTXpNek8xeHVJQ0JqYjJ4dmNqb2dJMlJrWkR0Y2JpQWdZbTk0TFhOb1lXUnZkem9nTUNBd0lEVndlQ0F5Y0hnZ0kyUmtaRHRjYmlBZ2RISmhibk5wZEdsdmJpMWtkWEpoZEdsdmJqb2dNQzR6Y3p0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR2S2lCTllXbHVJQ292WEc0dWJXRnBiaUI3WEc0Z0lHWnNaWGc2SURFN1hHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjYmlBZ2VpMXBibVJsZURvZ01UdGNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1abU8xeHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmk1aGMybGtaU0I3WEc0Z0lHWnZiblF0Wm1GdGFXeDVPaUFuVTI5MWNtTmxJRU52WkdVZ1VISnZKeXdnUTI5dWMyOXNZWE1zSUVkbGIzSm5hV0VzSUUxdmJtRmpieXdnYlc5dWIzTndZV05sTENCQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmp0Y2JuMWNiaTVoYzJsa1pWOWZhR1ZoWkdWeUlIdGNiaUFnYldGeVoybHVPaUF3SUdGMWRHODdYRzRnSUdac1pYZ3RjMmh5YVc1ck9pQXdPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbUZ6YVdSbFgxOXVZWFlnZTF4dUlDQm1iR1Y0T2lBeE8xeHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmk1aGMybGtaVjlmYURJZ2UxeHVJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNiaUFnYUdWcFoyaDBPaUExTkhCNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ05UUndlRHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXlNSEI0TzF4dUlDQm1iMjUwTFhkbGFXZG9kRG9nYm05eWJXRnNPMXh1SUNCbWIyNTBMV1poYldsc2VUb2dSMlZ2Y21kcFlTd2dRMjl1YzI5c1lYTXNJRUZ5YVdGc0xDQnpZVzV6TFhObGNtbG1PMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dVlYTnBaR1ZmWDJneklIdGNiaUFnYldGeVoybHVPaUF3SUdGMWRHODdYRzRnSUhCaFpHUnBibWM2SURBZ01qQndlRHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhObkI0TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG1GemFXUmxYMTlzYVhOMElIdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQndZV1JrYVc1bk9pQXhNSEI0SURBN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dVlYTnBaR1ZmWDJsMFpXMGdlMXh1SUNCb1pXbG5hSFE2SURNeWNIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXpNbkI0TzF4dUlDQndZV1JrYVc1bk9pQXdJRE13Y0hnN1hHNGdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNiaUFnWm05dWRDMXphWHBsT2lBeE0zQjRPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbUZ6YVdSbElDNXZkWFJzYVc1bExXTm9ZWEIwWlhKeklIdGNiaUFnWm14bGVEb2dNVHRjYm4xY2JpNWhjMmxrWlNBdWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZmJXRnBiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWEl0ZEdoMWJXSWdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBak5qWTJPMXh1ZlZ4dUxtRnphV1JsSUM1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5dFlXbHVPam90ZDJWaWEybDBMWE5qY205c2JHSmhjaTEwYUhWdFlqcG9iM1psY2lCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ001T1RrN1hHNTlYRzR1WVhOcFpHVWdMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYM0JzWVdObGFHOXNaR1Z5SUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJelUxTlR0Y2JpQWdZbTl5WkdWeUxXeGxablE2SUROd2VDQnpiMnhwWkNBalptWm1PMXh1ZlZ4dUxtRnphV1JsSUM1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5aGJtTm9iM0k2YkdsdWF5QjdYRzRnSUdOdmJHOXlPaUFqWkdSa08xeHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN1hHNTlYRzR1WVhOcFpHVWdMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMkZ1WTJodmNqcDJhWE5wZEdWa0lIdGNiaUFnWTI5c2IzSTZJQ05rWkdRN1hHNGdJSFJsZUhRdFpHVmpiM0poZEdsdmJqb2dibTl1WlR0Y2JuMWNiaTVoYzJsa1pTQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTmtaR1E3WEc0Z0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2RXNWtaWEpzYVc1bE8xeHVmVnh1TG1GemFXUmxJQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMkZqZEdsMlpTNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOWhibU5vYjNJNmJHbHVheXhjYmk1aGMybGtaU0F1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTloWTNScGRtVXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9uWnBjMmwwWldRc1hHNHVZWE5wWkdVZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZllXTjBhWFpsTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqWm1abU8xeHVmVnh1TG0xaGFXNWZYMmhsWVdSbGNpeGNiaTV0WVdsdVgxOW1iMjkwWlhJZ2UxeHVJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNiaUFnY0dGa1pHbHVaem9nTVdWdE8xeHVJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YldGcGJsOWZhREVnZTF4dUlDQnRZWEpuYVc0NklEQWdZWFYwYnp0Y2JpQWdjR0ZrWkdsdVp5MTBiM0E2SURGbGJUdGNiaUFnWm05dWRDMXphWHBsT2lBMVpXMDdYRzRnSUdadmJuUXRkMlZwWjJoME9pQnViM0p0WVd3N1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBeVpXMDdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViV0ZwYmw5ZmJtRnRaU0I3WEc0Z0lHTnZiRzl5T2lBak5UQTNZV1psTzF4dUlDQm1iMjUwTFhkbGFXZG9kRG9nYm05eWJXRnNPMXh1ZlZ4dUxtMWhhVzVmWDNSaFoyeHBibVVnZTF4dUlDQnRZWEpuYVc0NklERmxiU0JoZFhSdk8xeHVJQ0J0WVhndGQybGtkR2c2SURrMk1IQjRPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNUzR6WlcwN1hHNGdJR1p2Ym5RdGMybDZaVG9nTW1WdE8xeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JpQWdabTl1ZEMxM1pXbG5hSFE2SURFd01EdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXRZV2x1WDE5alpHNGdlMXh1SUNCdFlYSm5hVzQ2SURKbGJTQXdPMXh1SUNCd1lXUmthVzVuT2lBeVpXMDdYRzRnSUdadmJuUXRjMmw2WlRvZ01UWndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJREUxTUNVN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWmhabUZtWVR0Y2JpQWdZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUNOa1pHUTdYRzRnSUdKdmNtUmxjaTFpYjNSMGIyMDZJREZ3ZUNCemIyeHBaQ0FqWkdSa08xeHVJQ0JqYjJ4dmNqb2dJelkyTmp0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dFlXbHVYMTlrYjNkdWJHOWhaQ0I3WEc0Z0lHMWhjbWRwYmpvZ01XVnRJR0YxZEc4N1hHNGdJSGRwWkhSb09pQXlNREJ3ZUR0Y2JpQWdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTFoYVc1ZlgySjFkSFJ2YmlCN1hHNGdJR1JwYzNCc1lYazZJR2x1YkdsdVpTMWliRzlqYXp0Y2JpQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ05IQjRPMXh1SUNCd1lXUmthVzVuT2lBeE5IQjRJREk1Y0hnN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVRod2VEdGNiaUFnWm05dWRDMW1ZVzFwYkhrNklDZFRiM1Z5WTJVZ1EyOWtaU0JRY204bkxDQkRiMjV6YjJ4aGN5d2dSMlZ2Y21kcFlTd2dUVzl1WVdOdkxDQnRiMjV2YzNCaFkyVXNJRUZ5YVdGc0xDQnpZVzV6TFhObGNtbG1PMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBak1EVTRPVFF5TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG0xaGFXNWZYMkoxZEhSdmJqcHNhVzVyTEZ4dUxtMWhhVzVmWDJKMWRIUnZianAyYVhOcGRHVmtMRnh1TG0xaGFXNWZYMkoxZEhSdmJqcG9iM1psY2lCN1hHNGdJR052Ykc5eU9pQWpabVptTzF4dUlDQjBaWGgwTFdSbFkyOXlZWFJwYjI0NklHNXZibVU3WEc1OVhHNHViV0ZwYmw5ZlptOXZkR1Z5SUh0Y2JpQWdiV0Z5WjJsdU9pQXdJRE5sYlR0Y2JpQWdZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUNOa1pHUTdYRzU5WEc0dWMyVmpkR2x2YmlCN1hHNGdJRzFoY21kcGJqb2dNV1Z0SURBN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWMyVmpkR2x2Ymw5ZmFHVmhaR1Z5TEZ4dUxuTmxZM1JwYjI1ZlgyTnZiblJsYm5Rc1hHNHVjMlZqZEdsdmJsOWZabTl2ZEdWeUlIdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQndZV1JrYVc1bk9pQXdJRE5sYlR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1elpXTjBhVzl1WDE5MGFYUnNaU0I3WEc0Z0lHTnZiRzl5T2lBak5qWTJPMXh1ZlZ4dUxuTmxZM1JwYjI1ZlgyZ3pJSHRjYmlBZ1kyOXNiM0k2SUNNMU1EZGhabVU3WEc0Z0lHWnZiblF0YzJsNlpUb2dNUzR6TldWdE8xeHVmVnh1TG5ObFkzUnBiMjVmWDJnMElIdGNiaUFnWm05dWRDMXphWHBsT2lBeExqRmxiVHRjYmlBZ1kyOXNiM0k2SUNNMk5qWTdYRzU5WEc0dWMyVmpkR2x2Ymw5ZmFEVWdlMXh1SUNCbWIyNTBMWE5wZW1VNklERmxiVHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzU5WEc0dWMyVmpkR2x2Ymw5ZlpHd3NYRzR1YzJWamRHbHZibDlmWkhRc1hHNHVjMlZqZEdsdmJsOWZaR1FnZTF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhCaFpHUnBibWM2SURBN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWMyVmpkR2x2Ymw5ZlpHd2dlMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNGdJSG90YVc1a1pYZzZJREU3WEc1OVhHNHVjMlZqZEdsdmJsOWZaSFFnZTF4dUlDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEc1OVhHNHVjMlZqZEdsdmJsOWZaR1FnZTF4dUlDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEc0Z0lHTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbk5sWTNScGIyNWZYM0J5WlNCN1hHNGdJRzFoY21kcGJqb2dNbVZ0SURBN1hHNGdJSEJoWkdScGJtYzZJREZsYlR0Y2JpQWdabTl1ZEMxemFYcGxPaUF4TkhCNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01UVXdKVHRjYmlBZ2RHVjRkQzFoYkdsbmJqb2diR1ZtZER0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlpoWm1GbVlUdGNiaUFnWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSTJSa1pEdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dOSEI0TzF4dUlDQmpiMnh2Y2pvZ0l6WTJOanRjYmlBZ2IzWmxjbVpzYjNjNklHRjFkRzg3WEc1OVhHNHVjMlZqZEdsdmJsOWZZMjlrWlNCN1hHNGdJR1JwYzNCc1lYazZJR0pzYjJOck8xeHVJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXpaV04wYVc5dVgxOW1iMjkwWlhJZ2UxeHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYmlBZ2JXRnlaMmx1TFhSdmNEb2dNMlZ0TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabUZtWVdaaE8xeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JuMWNiaTV6WldOMGFXOXVYMTkwWVdKc1pTQjdYRzRnSUcxaGNtZHBiam9nTVdWdElHRjFkRzg3WEc0Z0lIZHBaSFJvT2lBeE1EQWxPMXh1SUNCaWIzSmtaWEl0ZEc5d09pQXhjSGdnYzI5c2FXUWdJMlJrWkR0Y2JuMWNiaTV6WldOMGFXOXVYMTkwYUN4Y2JpNXpaV04wYVc5dVgxOTBaQ0I3WEc0Z0lIQmhaR1JwYm1jNklEVndlQ0F4Tm5CNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01qWndlRHRjYmlBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUNOa1pHUTdYRzU5WEc0dWMyVmpkR2x2Ymw5ZmRHZ2dlMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWVdaaFptRTdYRzU5WEc1QWJXVmthV0VnS0cxaGVDMTNhV1IwYURvZ05EZ3djSGdwSUh0Y2JpQWdMbk5sWTNScGIyNWZYMmhsWVdSbGNpeGNiaUFnTG5ObFkzUnBiMjVmWDJOdmJuUmxiblFnZTF4dUlDQWdJSEJoWkdScGJtYzZJREFnTVdWdE8xeHVJQ0I5WEc1OVhHNHVZMkZ6WlNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjYmlBZ2VpMXBibVJsZURvZ01UdGNiaUFnWkdsemNHeGhlVG9nWjNKcFpEdGNiaUFnWjNKcFpDMTBaVzF3YkdGMFpTMWpiMngxYlc1ek9pQnlaWEJsWVhRb01pd2dNV1p5S1R0Y2JpQWdaMkZ3T2lBME1IQjRPMXh1SUNCd1lXUmthVzVuT2lBeFpXMDdYRzRnSUdKdmNtUmxjaTEwYjNBNklERndlQ0J6YjJ4cFpDQWpaR1JrTzF4dUlDQmliM0prWlhJdFltOTBkRzl0T2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTVqWVhObE9tRm1kR1Z5SUh0Y2JpQWdZMjl1ZEdWdWREb2dKeWM3WEc0Z0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNiaUFnZWkxcGJtUmxlRG9nTWp0Y2JpQWdkRzl3T2lBd08xeHVJQ0JzWldaME9pQTFNQ1U3WEc0Z0lHaGxhV2RvZERvZ01UQXdKVHRjYmlBZ2QybGtkR2c2SURBN1hHNGdJR0p2Y21SbGNpMXNaV1owT2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTVqWVhObFgxOXdjbVVzWEc0dVkyRnpaVjlmZEdWNGRHRnlaV0VnZTF4dUlDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBeE5UQWxPMXh1ZlZ4dUxtTmhjMlZmWDNCeVpTeGNiaTVqWVhObFgxOWpiMlJsTEZ4dUxtTmhjMlZmWDNSbGVIUmhjbVZoSUh0Y2JpQWdabTl1ZEMxbVlXMXBiSGs2SUNkRGIzVnlhV1Z5SUU1bGR5Y3NJRU52Ym5OdmJHRnpMQ0JIWlc5eVoybGhMQ0JCY21saGJDd2djMkZ1Y3kxelpYSnBaanRjYm4xY2JpNWpZWE5sWDE5d2NtVWdlMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJSEJoWkdScGJtYzZJREZsYlR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlpoWm1GbVlUdGNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHVJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQTBjSGc3WEc0Z0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc0Z0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4dWZWeHVMbU5oYzJWZlgzUnZiMnhpWVhJZ2UxeHVJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNiaUFnYUdWcFoyaDBPaUF6Tm5CNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ016WndlRHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhOSEI0TzF4dUlDQndZV1JrYVc1bk9pQXdJREUyY0hnN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUhKcFoyaDBPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbU5oYzJWZlgyRmpkR2x2Yml4Y2JpNWpZWE5sWDE5eVpXMXZkbVVnZTF4dUlDQmpkWEp6YjNJNklIQnZhVzUwWlhJN1hHNGdJR052Ykc5eU9pQWpNRFU0T1RReU8xeHVJQ0IxYzJWeUxYTmxiR1ZqZERvZ2JtOXVaVHRjYm4xY2JpNWpZWE5sWDE5aFkzUnBiMjRnZTF4dUlDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hHNGdJSEJoWkdScGJtY3RiR1ZtZERvZ01UQndlRHRjYm4xY2JpNWpZWE5sWDE5aFkzUnBiMjQ2Wm1seWMzUXRZMmhwYkdRZ2UxeHVJQ0J3WVdSa2FXNW5MV3hsWm5RNklEQTdYRzU5WEc0dVkyRnpaVjlmY21WdGIzWmxJSHRjYmlBZ1pteHZZWFE2SUhKcFoyaDBPMXh1ZlZ4dUxtTmhjMlZmWDJOdmJuTnZiR1VnZTF4dUlDQnRZWEpuYVc0NklEQWdZWFYwYnp0Y2JpQWdhR1ZwWjJoME9pQXhPREJ3ZUR0Y2JpQWdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJMlJrWkR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1allYTmxYMTkwWlhoMFlYSmxZU0I3WEc0Z0lHMWhjbWRwYmpvZ01DQmhkWFJ2TzF4dUlDQjNhV1IwYURvZ01UQXdKVHRjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh1SUNCaWIzSmtaWEk2SUc1dmJtVTdYRzRnSUc5MWRHeHBibVU2SUc1dmJtVTdYRzRnSUhCaFpHUnBibWM2SURGbGJUdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNiaUFnYjNabGNtWnNiM2M2SUdGMWRHODdYRzU5WEc0dVkyRnpaVjlmYkdsemRDeGNiaTVqWVhObFgxOXBkR1Z0SUh0Y2JpQWdiV0Z5WjJsdU9pQXdPMXh1SUNCd1lXUmthVzVuT2lBd08xeHVJQ0JzYVhOMExYTjBlV3hsTFhSNWNHVTZJRzV2Ym1VN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dVkyRnpaVjlmYkdsemRDQjdYRzRnSUdobGFXZG9kRG9nTXpZd2NIZzdYRzRnSUdKdmNtUmxjaTEwYjNBNklERndlQ0J6YjJ4cFpDQWpaR1JrTzF4dUlDQmliM0prWlhJdFltOTBkRzl0T2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhNM0I0TzF4dUlDQnZkbVZ5Wm14dmR6b2dZWFYwYnp0Y2JuMWNiaTVqWVhObFgxOXBkR1Z0SUh0Y2JpQWdhR1ZwWjJoME9pQXpObkI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTXpad2VEdGNiaUFnWTNWeWMyOXlPaUJ3YjJsdWRHVnlPMXh1SUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEc1OVhHNHVZMkZ6WlY5ZmFYUmxiVHBvYjNabGNpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObU4yWTRaams3WEc1OVhHNDZjbTl2ZENCN1hHNGdJQzB0YjNWMGJHbHVaUzE2U1c1a1pYZzZJREl3TURBN1hHNGdJQzB0YjNWMGJHbHVaUzF6ZEdsamEza3RhR1ZwWjJoME9pQXhNREFsTzF4dUlDQXRMVzkxZEd4cGJtVXRZMmhoY0hSbGNuTXRkMmxrZEdnNklERXdNQ1U3WEc1OVhHNHZLaUE5UFQwOVBUMDlQVDA5SUdOdmJHOXljeTUwYUdWdFpTQXRJT1dmdXVlaGdPbWluT2lKc3VXUG1PbUhqK21iaHVXUWlDQTlQVDA5UFQwOVBUMDlJQ292WEc0dktpcGNiaUFxSUdWc2JHbHdjMmx6TG14bGMzTWdMU0RtbG9mbW5Lem5uSUhubGFVZ2JXbDRhVzU0SU9XSHZlYVZzRnh1SUNvZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUlDb2dRM0psWVhSbFpDQkNlVG9nV1dGdmFHRnBlR2xoYjF4dUlDb2dWWEJrWVhSbE9pQXlNREl5TGpNdU1URmNiaUFxTDF4dUx5b2dQVDA5UFQwOUlPYVdoK2Fjck9lY2dlZVZwZVdIdmVhVnNDQTlQVDA5UFQwZ0tpOWNiaThxS2x4dUlDb2djMmhoWkc5M0xteGxjM01nTFNEcG1MVGx2Ykhtb0xmbHZJL29ycjdudmE0Z2JXbDRhVzU0SU9XSHZlYVZzRnh1SUNvZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUlDb2dRM0psWVhSbFpDQkNlVG9nV1dGdmFHRnBlR2xoYjF4dUlDb2dWWEJrWVhSbE9pQXlNREl5TGpNdU1qQmNiaUFxTDF4dUx5b2dQVDA5UFQwOUlPbVl0T1c5c2VhZ3QrVzhqK2l1dnVlOXJ1V0h2ZWFWc0NBOVBUMDlQVDBnS2k5Y2JpOHFJRDA5UFQwOVBUMDlQVDBnYVdOdmJpNTBhR1Z0WlNBdElITjJaeURsbTc3bW9JZm5tb1Rtb0xmbHZJOGdQVDA5UFQwOVBUMDlQU0FxTDF4dUxtOTFkR3hwYm1VdGFXTnZiaUI3WEc0Z0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNiaUFnZWkxcGJtUmxlRG9nTVR0Y2JpQWdaR2x6Y0d4aGVUb2dhVzVzYVc1bExXSnNiMk5yTzF4dUlDQjJaWEowYVdOaGJDMWhiR2xuYmpvZ2JXbGtaR3hsTzF4dUlDQjNhV1IwYURvZ01XVnRPMXh1SUNCb1pXbG5hSFE2SURGbGJUdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExXbGpiMjVmWDNOMlp5QjdYRzRnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2JpQWdlaTFwYm1SbGVEb2dNanRjYmlBZ2RHOXdPaUExTUNVN1hHNGdJR3hsWm5RNklEVXdKVHRjYmlBZ2QybGtkR2c2SURGbGJUdGNiaUFnYUdWcFoyaDBPaUF4WlcwN1hHNGdJR1pwYkd3NklHTjFjbkpsYm5SamIyeHZjanRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVW9MVFV3SlN3Z0xUVXdKU2s3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YjNWMGJHbHVaUzFwWTI5dVgyaHBaR1JsYmlCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzFvWldGa2FXNW5JSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2pwc2FXNXJMRnh1TG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlPblpwYzJsMFpXUXNYRzR1YjNWMGJHbHVaUzFvWldGa2FXNW5YMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4dWZWeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVoxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTFNRGRoWm1VN1hHNTlYRzR1YjNWMGJHbHVaUzFvWldGa2FXNW5PbWh2ZG1WeUlDNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2lCN1hHNGdJR1JwYzNCc1lYazZJR2x1YkdsdVpTMWliRzlqYXp0Y2JuMWNiaTV2ZFhSc2FXNWxMV2hsWVdScGJtZGZjM1JoY25RNmFHOTJaWElnZTF4dUlDQnZkbVZ5Wm14dmR6b2dkbWx6YVdKc1pUdGNibjFjYmk1dmRYUnNhVzVsTFdobFlXUnBibWRmYzNSaGNuUWdMbTkxZEd4cGJtVXRhR1ZoWkdsdVoxOWZZVzVqYUc5eUlIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJRFV3SlR0Y2JpQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh1SUNCc1pXWjBPaUF0TVdWdE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlJSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF0TVR0Y2JpQWdkRzl3T2lBd08xeHVJQ0JzWldaME9pQXdPMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJSGRwWkhSb09pQXhNREFsTzF4dUlDQm9aV2xuYUhRNklERXdNQ1U3WEc0Z0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc0Z0lIWnBjMmxpYVd4cGRIazZJR2hwWkdSbGJqdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmJXOWtZV3dnZTF4dUlDQmliM2d0YzJoaFpHOTNPaUF3SURBZ05uQjRJREZ3ZUNBalpHTmtabVUyTzF4dUlDQmthWE53YkdGNU9pQm1iR1Y0TzF4dUlDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ1kyOXNkVzF1TzF4dUlDQm1iR1Y0TFhkeVlYQTZJRzV2ZDNKaGNEdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlNVHRjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalptWm1PMXh1SUNCMGNtRnVjMmwwYVc5dUxXUjFjbUYwYVc5dU9pQXdMalJ6TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTlvWldGa1pYSXNYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYMjFoYVc0c1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyWnZiM1JsY2lCN1hHNGdJSGRwWkhSb09pQXhNREFsTzF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOW9aV0ZrWlhJc1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyWnZiM1JsY2lCN1hHNGdJR1pzWlhndGMyaHlhVzVyT2lBd08xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTkwYVhSc1pTeGNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWZiV0ZwYml4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZlptOXZkR1Z5SUh0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F4Tm5CNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTlvWldGa1pYSXNYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYM1JwZEd4bElIdGNiaUFnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4dUlDQjZMV2x1WkdWNE9pQXhPMXh1SUNCdFlYSm5hVzQ2SURBZ1lYVjBienRjYmlBZ2FHVnBaMmgwT2lBMU1uQjRPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dOVEp3ZUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmZEdsMGJHVWdlMXh1SUNCbWIyNTBMWE5wZW1VNklERTJjSGc3WEc0Z0lHWnZiblF0ZDJWcFoyaDBPaUEwTURBN1hHNGdJRzFoY21kcGJqb2dNQ0F4Tm5CNE8xeHVJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHVJQ0JpYjNKa1pYSXRZbTkwZEc5dE9pQXhjSGdnYzI5c2FXUWdJMlJqWkdabE5qdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWTJ4dmMyVWdlMXh1SUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTlRBbE8xeHVJQ0J5YVdkb2REb2dNVEp3ZUR0Y2JpQWdkMmxrZEdnNklESXdjSGc3WEc0Z0lHaGxhV2RvZERvZ01qQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJREl3Y0hnN1hHNGdJR052Ykc5eU9pQWpPVGs1TzF4dUlDQm1iMjUwTFhOcGVtVTZJREl3Y0hnN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ1kzVnljMjl5T2lCd2IybHVkR1Z5TzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyTnNiM05sSUM1dmRYUnNhVzVsTFdsamIyNGdlMXh1SUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWTJ4dmMyVTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJelkyTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWZiV0ZwYmlCN1hHNGdJR1pzWlhnNklERTdYRzRnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5bWIyOTBaWElnZTF4dUlDQnRZWEpuYVc0NklEQWdZWFYwYnp0Y2JpQWdkR1Y0ZEMxaGJHbG5iam9nY21sbmFIUTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyOTJaWEpzWVhrZ2UxeHVJQ0JqYjI1MFpXNTBPaUFuSnp0Y2JpQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh1SUNCNkxXbHVaR1Y0T2lBeE8xeHVJQ0IwYjNBNklEQTdYRzRnSUd4bFpuUTZJREE3WEc0Z0lIZHBaSFJvT2lBeE1EQWxPMXh1SUNCb1pXbG5hSFE2SURFd01DVTdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdYRzRnSUc5d1lXTnBkSGs2SURBdU1UdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5eWRHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZmRHbHVlU3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlzZEhJdWIzVjBiR2x1WlMxa2NtRjNaWEpmZEdsdWVTQjdYRzRnSUhkcFpIUm9PaUF5T0RCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3dWIzVjBiR2x1WlMxa2NtRjNaWEpmYldsdWFTeGNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZiV2x1YVNCN1hHNGdJSGRwWkhSb09pQTBPREJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZjMjFoYkd3c1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgzTnRZV3hzSUh0Y2JpQWdkMmxrZEdnNklEVTBNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlaV2QxYkdGeUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlaV2QxYkdGeUlIdGNiaUFnZDJsa2RHZzZJRFk0TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl0WldScGRXMHNYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5TG05MWRHeHBibVV0WkhKaGQyVnlYMjFsWkdsMWJTQjdYRzRnSUhkcFpIUm9PaUEzTWpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkdGeVoyVXNYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5TG05MWRHeHBibVV0WkhKaGQyVnlYMnhoY21kbElIdGNiaUFnZDJsa2RHZzZJRGsyTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkNCN1hHNGdJR0p2Y21SbGNpMXNaV1owT2lBeGNIZ2djMjlzYVdRZ0kyUmpaR1psTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZkR2x1ZVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCeWFXZG9kRG9nTFRJNU1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5dGFXNXBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJSEpwWjJoME9pQXRORGt3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzTG05MWRHeHBibVV0WkhKaGQyVnlYM050WVd4c0xtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lISnBaMmgwT2lBdE5UVXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSmxaM1ZzWVhJdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2NtbG5hSFE2SUMwMk9UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5eWRHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZmJXVmthWFZ0TG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUhKcFoyaDBPaUF0TnpNd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJSEpwWjJoME9pQXRPVGN3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5SUh0Y2JpQWdZbTl5WkdWeUxYSnBaMmgwT2lBeGNIZ2djMjlzYVdRZ0kyUmpaR1psTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZkR2x1ZVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0TWprd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxcGJta3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdiR1ZtZERvZ0xUUTVNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXpiV0ZzYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0TlRVd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWEl1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnYkdWbWREb2dMVFk1TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMngwY2k1dmRYUnNhVzVsTFdSeVlYZGxjbDl0WldScGRXMHViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdiR1ZtZERvZ0xUY3pNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0T1Rjd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgySjBkQ0I3WEc0Z0lHeGxablE2SURBN1hHNGdJSGRwWkhSb09pQXhNREFsTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBhVzU1TEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5MGFXNTVJSHRjYmlBZ2FHVnBaMmgwT2lBeU5EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXbHVhU3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYldsdWFTQjdYRzRnSUdobGFXZG9kRG9nTXpJd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNOdFlXeHNMRnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkowZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDl6YldGc2JDQjdYRzRnSUdobGFXZG9kRG9nTXpZd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWElzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMExtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWElnZTF4dUlDQm9aV2xuYUhRNklEUXdNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRaV1JwZFcwc1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlluUjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMWxaR2wxYlNCN1hHNGdJR2hsYVdkb2REb2dORFF3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZkSFJpTG05MWRHeHBibVV0WkhKaGQyVnlYMnhoY21kbExGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgySjBkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlNCN1hHNGdJR2hsYVdkb2REb2dORGd3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZkSFJpSUh0Y2JpQWdZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lDTmtZMlJtWlRZN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZkSFJpTG05MWRHeHBibVV0WkhKaGQyVnlYM1JwYm5rdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2RHOXdPaUF0TWpVd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxcGJta3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdkRzl3T2lBdE16TXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmRIUmlMbTkxZEd4cGJtVXRaSEpoZDJWeVgzTnRZV3hzTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUhSdmNEb2dMVE0zTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5WldkMWJHRnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJSFJ2Y0RvZ0xUUXhNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRaV1JwZFcwdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2RHOXdPaUF0TkRVd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJSFJ2Y0RvZ0xUUTVNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgySjBkQ0I3WEc0Z0lIUnZjRG9nYVc1cGRHbGhiRHRjYmlBZ1ltOXlaR1Z5TFhSdmNEb2dNWEI0SUhOdmJHbGtJQ05rWTJSbVpUWTdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMExtOTFkR3hwYm1VdFpISmhkMlZ5WDNScGJua3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdZbTkwZEc5dE9pQXRNalV3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYMjFwYm1rdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ1ltOTBkRzl0T2lBdE16TXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlluUjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgzTnRZV3hzTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUdKdmRIUnZiVG9nTFRNM01IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5eVpXZDFiR0Z5TG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUdKdmRIUnZiVG9nTFRReE1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5dFpXUnBkVzB1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnWW05MGRHOXRPaUF0TkRVd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMExtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR0p2ZEhSdmJUb2dMVFE1TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMjl3Wlc1bFpDQjdYRzRnSUhacGMybGlhV3hwZEhrNklIWnBjMmxpYkdVN1hHNGdJSG90YVc1a1pYZzZJSFpoY2lndExXOTFkR3hwYm1VdGVrbHVaR1Y0S1R0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXZjR1Z1WldRdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4dUlDQndiM05wZEdsdmJqb2dabWw0WldRN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDQjdYRzRnSUhKcFoyaDBPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlzZEhJZ2UxeHVJQ0JzWldaME9pQXdPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDI5d1pXNWxaQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0lnZTF4dUlDQjBiM0E2SURBN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDQjdYRzRnSUdKdmRIUnZiVG9nTUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXZabVp6WlhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDlzZEhJZ2UxeHVJQ0JvWldsbmFIUTZJR05oYkdNb01UQXdKU0F0SURSbGJTazdYRzRnSUhSdmNEb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaXhjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Wm1aelpYUXViM1YwYkdsdVpTMWtjbUYzWlhKZlluUjBJSHRjYmlBZ2QybGtkR2c2SUdOaGJHTW9NVEF3SlNBdElEUmxiU2s3WEc0Z0lHeGxablE2SURVd0pUdGNiaUFnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdWWUtDMDFNQ1VwTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Y0dWdVpXUXViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNJSHRjYmlBZ2NtbG5hSFE2SURKbGJUdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Wm1aelpYUXViM1YwYkdsdVpTMWtjbUYzWlhKZmIzQmxibVZrTG05MWRHeHBibVV0WkhKaGQyVnlYMngwY2lCN1hHNGdJR3hsWm5RNklESmxiVHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dlptWnpaWFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNSMFlpQjdYRzRnSUhSdmNEb2dNbVZ0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Y0dWdVpXUXViM1YwYkdsdVpTMWtjbUYzWlhKZlluUjBJSHRjYmlBZ1ltOTBkRzl0T2lBeVpXMDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWVhWMGJ5NXZkWFJzYVc1bExXUnlZWGRsY2w5eWRHd3NYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZWFYwYnk1dmRYUnNhVzVsTFdSeVlYZGxjbDlzZEhJZ2UxeHVJQ0JvWldsbmFIUTZJR0YxZEc4N1hHNGdJRzFoZUMxb1pXbG5hSFE2SUdOaGJHTW9NVEF3SlNBdElEUmxiU2s3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlpuVnNiQ0I3WEc0Z0lIQmhaR1JwYm1jNklEQTdYRzU5WEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5Y3lCN1hHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjYmlBZ2VpMXBibVJsZURvZ01UdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQjNhV1IwYURvZ2RtRnlLQzB0YjNWMGJHbHVaUzFqYUdGd2RHVnljeTEzYVdSMGFDazdYRzRnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25NdGNHRnlaVzUwSUh0Y2JpQWdkSEpoYm5OcGRHbHZiam9nTUM0emN5QmxZWE5sTFdsdUxXOTFkRHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOTBhWFJzWlNCN1hHNGdJRzFoY21kcGJqb2dNQ0F4Tm5CNE8xeHVJQ0JvWldsbmFIUTZJRFF3Y0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBME1IQjRPMXh1SUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEc0Z0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNBalpHTmtabVUyTzF4dUlDQm1iMjUwTFhOcGVtVTZJREUyY0hnN1hHNGdJR1p2Ym5RdGQyVnBaMmgwT2lBME1EQTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZiV0ZwYmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjYmlBZ2VpMXBibVJsZURvZ01UdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJ4cGMzUXNYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmYzNWaWFtVmpkQ3hjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5cGRHVnRJSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF5TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhCaFpHUnBibWM2SURBN1hHNGdJR3hwYzNRdGMzUjViR1V0ZEhsd1pUb2dibTl1WlR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5c2FYTjBJSHRjYmlBZ2NHRmtaR2x1WnpvZ01DNDFaVzBnTUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTl6ZFdKcVpXTjBJSHRjYmlBZ2NHRmtaR2x1Wnkxc1pXWjBPaUF4WlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmYVhSbGJTQjdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdiR2x1WlMxb1pXbG5hSFE2SURNd2NIZzdYRzRnSUdadmJuUXRjMmw2WlRvZ01UTndlRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTl3YkdGalpXaHZiR1JsY2lCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01UdGNiaUFnZEc5d09pQXdPMXh1SUNCc1pXWjBPaUF3TzF4dUlDQjNhV1IwYURvZ01UQXdKVHRjYmlBZ2FHVnBaMmgwT2lBek1IQjRPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalpqZG1PR1k1TzF4dUlDQmliM0prWlhJdGJHVm1kRG9nTW5CNElITnZiR2xrSUNNd05UZzVOREk3WEc0Z0lIUnlZVzV6YVhScGIyNHRaSFZ5WVhScGIyNDZJREF1TW5NN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZllXNWphRzl5SUh0Y2JpQWdkMmhwZEdVdGMzQmhZMlU2SUc1dmQzSmhjRHRjYmlBZ2RHVjRkQzF2ZG1WeVpteHZkem9nWld4c2FYQnphWE03WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNGdJR1JwYzNCc1lYazZJR0pzYjJOck8xeHVJQ0J3WVdSa2FXNW5PaUF3SURFdU5XVnRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyRnVZMmh2Y2pwc2FXNXJMRnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJGdVkyaHZjanAyYVhOcGRHVmtMRnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpUdGNiaUFnWTI5c2IzSTZJQ00xTlRVN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmWVc1amFHOXlPbWh2ZG1WeUlIdGNiaUFnWTI5c2IzSTZJQ013TlRnNU5ESTdYRzU5WEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZlkyOWtaU0I3WEc0Z0lIQmhaR1JwYm1jdGNtbG5hSFE2SURBdU5XVnRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZmFHbG5hR3hwWjJoMExtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyRnVZMmh2Y2pwc2FXNXJMRnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mYUdsbmFHeHBaMmgwTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJGdVkyaHZjanAyYVhOcGRHVmtMRnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mYUdsbmFHeHBaMmgwTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqTURVNE9UUXlPMXh1SUNCbWIyNTBMWGRsYVdkb2REb2dZbTlzWkR0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYM04wYVdOcmVTeGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMlpwZUdWa0lIdGNiaUFnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnWm14bGVDMTNjbUZ3T2lCdWIzZHlZWEE3WEc0Z0lHWnNaWGd0WkdseVpXTjBhVzl1T2lCamIyeDFiVzQ3WEc0Z0lIb3RhVzVrWlhnNklIWmhjaWd0TFc5MWRHeHBibVV0ZWtsdVpHVjRLVHRjYmlBZ2RHOXdPaUF3TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mYzNScFkydDVJQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTkwYVhSc1pTeGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMlpwZUdWa0lDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOTBhWFJzWlN4Y2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgzTjBhV05yZVNBdWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZmJXRnBiaXhjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDJacGVHVmtJQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTl0WVdsdUlIdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDNOMGFXTnJlU0F1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmZEdsMGJHVXNYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTltYVhobFpDQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZkR2wwYkdVZ2UxeHVJQ0JtYkdWNExYTm9jbWx1YXpvZ01EdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDNOMGFXTnJlU0F1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmYldGcGJpeGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMlpwZUdWa0lDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXRZV2x1SUh0Y2JpQWdabXhsZURvZ01UdGNiaUFnYjNabGNtWnNiM2M2SUdGMWRHODdYRzU5WEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5emRHbGphM2tnZTF4dUlDQndiM05wZEdsdmJqb2djM1JwWTJ0NU8xeHVJQ0J0WVhndGFHVnBaMmgwT2lCMllYSW9MUzF2ZFhSc2FXNWxMWE4wYVdOcmVTMW9aV2xuYUhRcE8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWm1sNFpXUWdlMXh1SUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3WEc0Z0lHMWhlQzFvWldsbmFIUTZJREV3TUNVN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlvYVdSa1pXNGdlMXh1SUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptOXNaR1ZrSUh0Y2JpQWdkMmxrZEdnNklEQTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHZLaXBjYmlBcUlHMXBlR2x1Y3k1c1pYTnpJQzBnNWJlbDVZVzM1WWU5NXBXd1hHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR4TVZ4dUlDb3ZYRzR2S2lBOVBUMDlQVDBnNXBhSDVweXM1NXlCNTVXbDVZZTk1cFd3SUQwOVBUMDlQU0FxTDF4dUx5b2dQVDA5UFQwOUlPV2NodWlua3VhZ3QrVzhqK2l1dnVlOXJ1V0h2ZWFWc0NBOVBUMDlQVDBnS2k5Y2JpOHFJRDA5UFQwOVBTRHBtTFRsdmJIbW9MZmx2SS9vcnI3bnZhN2xoNzNtbGJBZ1BUMDlQVDA5SUNvdlhHNHViM1YwYkdsdVpTMXlaV0ZrWlhKZlgyTnNiM05sSUh0Y2JpQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2JuMWNiaTV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZkR2wwYkdVZ2UxeHVJQ0J0WVhKbmFXNDZJREF1TmpkbGJTQXdJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNpQWhhVzF3YjNKMFlXNTBPMXh1SUNCbWIyNTBMV1poYldsc2VUb2dKMDFwWTNKdmMyOW1kQ0JaWVVobGFTQlZTU2NzSUVGeWFXRnNMQ0J6WVc1ekxYTmxjbWxtTzF4dUlDQm1iMjUwTFhkbGFXZG9kRG9nYm05eWJXRnNPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRjbVZoWkdWeVgyaHBaR1JsYmlCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VZ0lXbHRjRzl5ZEdGdWREdGNibjFjYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDlvYVdSa1pXNHViM1YwYkdsdVpTMXlaV0ZrWlhKZmMybGliR2x1WnlCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VZ0lXbHRjRzl5ZEdGdWREdGNibjFjYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDlvYVdSa1pXNHViM1YwYkdsdVpTMXlaV0ZrWlhKZmMybGliR2x1Wnk1M2NtRndjR1Z5TG5CdmMzUWdlMXh1SUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh1ZlZ4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5TFMxeVpXRmthVzVuSUh0Y2JpQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hHNGdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNiaUFnZWkxcGJtUmxlRG9nTWp0Y2JpQWdkRzl3T2lBd08xeHVJQ0JzWldaME9pQXdPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHVJQ0J0WVhKbmFXNDZJREE3WEc0Z0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc0Z0lIQmhaR1JwYm1jNklETmxiU0EwWlcwN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN1hHNGdJSE5qY205c2JDMTBhVzFsYkdsdVpTMXVZVzFsT2lBdExWQnliMmR5WlhOelZHbHRaV3hwYm1VN1hHNGdJRzkyWlhKbWJHOTNPaUJ6WTNKdmJHdzdYRzU5WEc0dWIzVjBiR2x1WlMxeVpXRmtaWEl0TFhKbFlXUnBibWNnTG05MWRHeHBibVV0Y21WaFpHVnlYMTl3Y205bmNtVnpjeUI3WEc0Z0lIQnZjMmwwYVc5dU9pQm1hWGhsWkR0Y2JpQWdkRzl3T2lBd08xeHVJQ0JzWldaME9pQXdPMXh1SUNCNkxXbHVaR1Y0T2lBek8xeHVJQ0JvWldsbmFIUTZJRFJ3ZUR0Y2JpQWdkMmxrZEdnNklERXdNQ1U3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTTFNRGRoWm1VN1hHNGdJSE5qWVd4bE9pQXdJREU3WEc0Z0lIUnlZVzV6Wm05eWJTMXZjbWxuYVc0NklHeGxablE3WEc0Z0lHRnVhVzFoZEdsdmJqb2diM1YwYkdsdVpTMXlaV0ZrWlhJdGNISnZaM0psYzNNZ2JHbHVaV0Z5TzF4dUlDQmhibWx0WVhScGIyNHRkR2x0Wld4cGJtVTZJQzB0VUhKdlozSmxjM05VYVcxbGJHbHVaVHRjYm4xY2JpNXZkWFJzYVc1bExYSmxZV1JsY2kwdGNtVmhaR2x1WnlBdWIzVjBiR2x1WlMxeVpXRmtaWEpmWDJOc2IzTmxJSHRjYmlBZ1ltOTRMWE5vWVdSdmR6b2dNQ0F3SURad2VDQXhjSGdnSTJSalpHWmxOanRjYmlBZ1pHbHpjR3hoZVRvZ1lteHZZMnM3WEc0Z0lIQnZjMmwwYVc5dU9pQm1hWGhsWkR0Y2JpQWdlaTFwYm1SbGVEb2dNenRjYmlBZ2RHOXdPaUExTUNVN1hHNGdJSEpwWjJoME9pQXlNbkI0TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhkcFpIUm9PaUF6Tm5CNE8xeHVJQ0JvWldsbmFIUTZJRE0yY0hnN1hHNGdJR0p2Y21SbGNpMXlZV1JwZFhNNklERTRjSGc3WEc0Z0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTmtZMlJtWlRZN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBek1IQjRPMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV1NndE5UQWxLVHRjYmlBZ1kzVnljMjl5T2lCd2IybHVkR1Z5TzF4dUlDQmliM2d0YzJoaFpHOTNPaUF3SURBZ09IQjRJQ05rWkdRN1hHNGdJR052Ykc5eU9pQWpPVGs1TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0Y21WaFpHVnlMUzF5WldGa2FXNW5JQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZZMnh2YzJVNmFHOTJaWElnZTF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpNRFU0T1RReU8xeHVJQ0JqYjJ4dmNqb2dJMlptWmp0Y2JuMWNiaTV2ZFhSc2FXNWxMWEpsWVdSbGNpMHRjbVZoWkdsdVp5QXViM1YwYkdsdVpTMXlaV0ZrWlhJZ2FERXNYRzR1YjNWMGJHbHVaUzF5WldGa1pYSXRMWEpsWVdScGJtY2dMbTkxZEd4cGJtVXRjbVZoWkdWeVgxOTBhWFJzWlNCN1hHNGdJRzFoY21kcGJqb2dNQzQyTjJWdElEQWdJV2x0Y0c5eWRHRnVkRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJREV1TTJWdE8xeHVJQ0JtYjI1MExYTnBlbVU2SURNdU5XVnRPMXh1ZlZ4dVFHdGxlV1p5WVcxbGN5QnZkWFJzYVc1bExYSmxZV1JsY2kxd2NtOW5jbVZ6Y3lCN1hHNGdJSFJ2SUh0Y2JpQWdJQ0J6WTJGc1pUb2dNU0F4TzF4dUlDQjlYRzU5WEc1QWJXVmthV0VnS0cxaGVDMTNhV1IwYURvZ05EZ3djSGdwSUh0Y2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUxTMXlaV0ZrYVc1bklIdGNiaUFnSUNCd1lXUmthVzVuT2lBd0lERXVNalZsYlR0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEpmWDJOc2IzTmxJSHRjYmlBZ0lDQnlhV2RvZERvZ01USndlQ0FoYVcxd2IzSjBZVzUwTzF4dUlDQWdJRzl3WVdOcGRIazZJREF1T0R0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEpmWDNScGRHeGxJSHRjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREpsYlR0Y2JpQWdmVnh1ZlZ4dVFHMWxaR2xoSUhCeWFXNTBJSHRjYmlBZ2FIUnRiQ3hjYmlBZ1ltOWtlU0I3WEc0Z0lDQWdhR1ZwWjJoME9pQnBibWwwYVdGc0lDRnBiWEJ2Y25SaGJuUTdYRzRnSUgxY2JpQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpTeGNiaUFnTG05MWRHeHBibVV0ZEc5dmJHSmhjaUI3WEc0Z0lDQWdaR2x6Y0d4aGVUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2lCN1hHNGdJQ0FnWkdsemNHeGhlVG9nWW14dlkyc2dJV2x0Y0c5eWRHRnVkRHRjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2lCb01TeGNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYMTkwYVhSc1pTQjdYRzRnSUNBZ2JXRnlaMmx1T2lBeE15NDBjSFFnTUNBeU9IQjBJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lDQWdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF5TUhCMElDRnBiWEJ2Y25SaGJuUTdYRzRnSUgxY2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUxtOTFkR3hwYm1VdGNtVmhaR1Z5TFMxeVpXRmthVzVuSUh0Y2JpQWdJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVVnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdJQ0JvWldsbmFIUTZJR0YxZEc4Z0lXbHRjRzl5ZEdGdWREdGNiaUFnSUNCd1lXUmthVzVuT2lBd0lDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmlBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjaUJvTVN4Y2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5MGFYUnNaU0I3WEc0Z0lDQWdiV0Z5WjJsdU9pQXhNeTQwY0hRZ01DQXlPSEIwSUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5SUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnWm05dWRDMXphWHBsT2lBeU1IQjBJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlMbTkxZEd4cGJtVXRjbVZoWkdWeVgxOWpiRzl6WlN4Y2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5d2NtOW5jbVZ6Y3lCN1hHNGdJQ0FnWkdsemNHeGhlVG9nYm05dVpTQWhhVzF3YjNKMFlXNTBPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpQndjbVVnZTF4dUlDQWdJSEJoWkdScGJtYzZJREZsYlNBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUdKdmNtUmxjam9nTVhCNElITnZiR2xrSUNOa1pHUWdJV2x0Y0c5eWRHRnVkRHRjYmlBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBMGNIZ2dJV2x0Y0c5eWRHRnVkRHRjYmlBZ2ZWeHVJQ0F1YjNWMGJHbHVaUzF5WldGa1pYSWdjSEpsTEZ4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ1kyOWtaU0I3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmlBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2lCMFlXSnNaU3hjYmlBZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUdsdFp5eGNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlJSE4yWnlCN1hHNGdJQ0FnWW5KbFlXc3RhVzV6YVdSbE9pQmhkbTlwWkR0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEpmYzJsaWJHbHVaeUI3WEc0Z0lDQWdaR2x6Y0d4aGVUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc1OVhHNHZLaUE5UFQwOVBUMDlQVDA5SUdKMWRIUnZibk11ZEdobGJXVWdMU0RtaklucGtxN2xyN3pvaUtybW9MZmx2SThnUFQwOVBUMDlQVDA5UFNBcUwxeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNpQjdYRzRnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjYmlBZ2VpMXBibVJsZURvZ09UazVPVGs3WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNHpjenRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0EyY0hnZ01YQjRJQ05rWTJSbVpUWTdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dNVHRjYmlBZ2JXRnlaMmx1T2lBeE1IQjRPMXh1SUNCM2FXUjBhRG9nTXpad2VEdGNiaUFnYUdWcFoyaDBPaUF6Tm5CNE8xeHVJQ0JpYjNKa1pYSTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1SUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF6Y0hnN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN1hHNGdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4dUlDQmpiMnh2Y2pvZ0l6azVPVHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJqcG9iM1psY2lCN1hHNGdJR052Ykc5eU9pQWpNRFU0T1RReU8xeHVJQ0JpYjNKa1pYSXRZMjlzYjNJNklDTXdOVGc1TkRJN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNHVhR2xrWlNCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZiR2x1YXl4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgyRnVZMmh2Y2pwMmFYTnBkR1ZrTEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T21odmRtVnlJSHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpUdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqTURVNE9UUXlPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZmFXTnZiaUI3WEc0Z0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNiaUFnZWkxcGJtUmxlRG9nTWp0Y2JpQWdkRzl3T2lBMU1DVTdYRzRnSUd4bFpuUTZJRFV3SlR0Y2JpQWdkMmxrZEdnNklESXdjSGc3WEc0Z0lHaGxhV2RvZERvZ01qQndlRHRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVW9MVFV3SlN3Z0xUVXdKU2s3WEc0Z0lHWnBiR3c2SUdOMWNuSmxiblJqYjJ4dmNqdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZllXTjBhWFpsTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVJSHRjYmlBZ1kyOXNiM0k2SUNObVptWTdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNNd05UZzVOREk3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXpBMU9EazBNanRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZllXTjBhWFpsTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVPbWh2ZG1WeUlIdGNiaUFnWTI5c2IzSTZJQ05tWm1ZN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkZqZEdsMlpTQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmJHbHVheXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWVdOMGFYWmxJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcDJhWE5wZEdWa0xGeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWhZM1JwZG1VZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T21odmRtVnlJSHRjYmlBZ1kyOXNiM0k2SUNObVptWTdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNKdmRXNWtaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNGdlMXh1SUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF4T0hCNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcHNhVzVyTEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2YkdsdWF5eGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmRtbHphWFJsWkN4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlpHbHpZV0pzWldRZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T25acGMybDBaV1FzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbWh2ZG1WeUxGeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWthWE5oWW14bFpDQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmFHOTJaWElzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNGdlMXh1SUNCamRYSnpiM0k2SUc1dmRDMWhiR3h2ZDJWa08xeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JpQWdZbTl5WkdWeUxXTnZiRzl5T2lBak9UazVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBzYVc1ck9taHZkbVZ5TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2YkdsdWF6cG9iM1psY2l4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlpHbHpZV0pzWldRdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2ZG1semFYUmxaRHBvYjNabGNpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZVzVqYUc5eU9uWnBjMmwwWldRNmFHOTJaWElzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbWh2ZG1WeU9taHZkbVZ5TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2YUc5MlpYSTZhRzkyWlhJc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZlluVjBkRzl1T21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNDZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JpQWdZbTl5WkdWeUxXTnZiRzl5T2lBak9UazVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJKMWRIUnZiaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWTFaalZtTlR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZkSFJpTEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5aWRIUWdlMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV0NndE5UQWxLVHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmRIUmlJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZZblIwSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJKMWRIUnZiaUI3WEc0Z0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmRIUmlJSHRjYmlBZ2RHOXdPaUF4TW5CNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDkwZEdJdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJocFpHUmxiaUI3WEc0Z0lIUnZjRG9nTFRVMmNIZzdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJKMGRDQjdYRzRnSUdKdmRIUnZiVG9nTVRKd2VEdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWW5SMExtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4dUlDQmliM1IwYjIwNklDMDFObkI0TzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOXlkR3dzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJ4MGNpQjdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2JpQWdkMmxrZEdnNklEVTJjSGc3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzSjBiQ0I3WEc0Z0lIUnZjRG9nTlRBbE8xeHVJQ0J5YVdkb2REb2dNVEp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZjblJzTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh1SUNCeWFXZG9kRG9nTFRnMmNIZzdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJ4MGNpQjdYRzRnSUhSdmNEb2dOVEFsTzF4dUlDQnNaV1owT2lBeE1uQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5c2RISXViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYmlCN1hHNGdJR3hsWm5RNklDMDRObkI0TzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOTBkR0lnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWW5WMGRHOXVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOW9hV1JrWlc0c1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzSjBiQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYml4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlluUjBJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5c2RISWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMeW9xWEc0Z0tpQm1iMjUwTG14bGMzTWdMU0Rsclpma3ZaUG5tN2psaGJQbW9MZmx2STljYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpQXFJRU55WldGMFpXUWdRbms2SUZsaGIyaGhhWGhwWVc5Y2JpQXFJRlZ3WkdGMFpUb2dNakF5TWk0ekxqRTJYRzRnS2k5Y2JpOHFJRDA5UFQwOVBTRGxyWmZrdlpNZ1BUMDlQVDA5SUNvdlhHNHZLaUE5UFQwOVBUMGc1YTJYNlllTklEMDlQVDA5UFNBcUwxeHVMeW9nUFQwOVBUMDlJT1d0bCtXUHR5QTlQVDA5UFQwZ0tpOWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVWdlMXh1SUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF6Y0hnN1hHNGdJR0p2ZUMxemFHRmtiM2M2SURBZ01DQTJjSGdnTVhCNElDTmtZMlJtWlRZN1hHNGdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNiaUFnZWkxcGJtUmxlRG9nT1RrNU9UdGNiaUFnYjNCaFkybDBlVG9nTUM0eE8xeHVJQ0IwYjNBNklDMDFNSEI0TzF4dUlDQnNaV1owT2lBMU1DVTdYRzRnSUdobGFXZG9kRG9nTkRCd2VEdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQndZV1JrYVc1bk9pQXdJRFV3Y0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBME1IQjRPMXh1SUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3WEc0Z0lHTnZiRzl5T2lBak5qWTJPMXh1SUNCMGNtRnVjMmwwYVc5dU9pQmhiR3dnTUM0MWN5QmxZWE5sTFdsdUxXOTFkRHRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVllLQzAxTUNVcE8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZlkyOXVkR1Z1ZENCN1hHNGdJSGRvYVhSbExYTndZV05sT2lCdWIzZHlZWEE3WEc0Z0lIUmxlSFF0YjNabGNtWnNiM2M2SUdWc2JHbHdjMmx6TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUcxaGVDMTNhV1IwYURvZ056QXdjSGc3WEc0Z0lHaGxhV2RvZERvZ05EQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVROd2VEdGNiaUFnWTI5c2IzSTZJQ00yTmpZN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5amJHOXpaU3hjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh1SUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdkMmxrZEdnNklEUXdjSGc3WEc0Z0lHaGxhV2RvZERvZ05EQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JzWldaME9pQXdPMXh1SUNCamIyeHZjam9nSTJabVpqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdMbTkxZEd4cGJtVXRhV052YmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lHeGxablE2SURVd0pUdGNiaUFnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdVb0xUVXdKU3dnTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5amJHOXpaU0I3WEc0Z0lISnBaMmgwT2lBd08xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUdOdmJHOXlPaUFqT1RrNU8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVWdMbTkxZEd4cGJtVXRhV052YmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lHeGxablE2SURVd0pUdGNiaUFnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdVb0xUVXdKU3dnTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5amJHOXpaVHBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqTmpZMk8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlwYm1adklDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpOVEEzWVdabE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjkzWVhKdWFXNW5JQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1ZNU9UQXhPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5emRXTmpaWE56SUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWxjbkp2Y2lBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1OV1ExWkR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjR3hoYVc0Z2UxeHVJQ0J0YVc0dGQybGtkR2c2SURFNU1IQjRPMXh1SUNCd1lXUmthVzVuT2lBd0lEVXdjSGdnTUNBeE5YQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5d2JHRnBiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZhVzVtYnlCN1hHNGdJR0p2Y21SbGNpMXNaV1owT2lBMWNIZ2djMjlzYVdRZ0l6VXdOMkZtWlR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlZqWmpobVpqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzZGhjbTVwYm1jZ2UxeHVJQ0JpYjNKa1pYSXRiR1ZtZERvZ05YQjRJSE52Ykdsa0lDTm1aams1TURFN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1aaVpUWTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXpkV05qWlhOeklIdGNiaUFnWW05eVpHVnlMV3hsWm5RNklEVndlQ0J6YjJ4cFpDQWpNRFU0T1RReU8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWlRGbU5tVmlPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5d2JHRnBiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZaWEp5YjNJZ2UxeHVJQ0JpYjNKa1pYSXRiR1ZtZERvZ05YQjRJSE52Ykdsa0lDTm1aalZrTldRN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZeFpqQTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0IzYVdSMGFEb2dNRHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZmNHeGhhVzRnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQXViM1YwYkdsdVpTMXBZMjl1SUh0Y2JpQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZiR2xuYUhRZ2UxeHVJQ0J0YVc0dGQybGtkR2c2SURFNE1IQjRPMXh1SUNCd1lXUmthVzVuT2lBd0lEUXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyeHBaMmgwTG05MWRHeHBibVV0YldWemMyRm5aVjlwYm1adklDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4dUlDQmpiMnh2Y2pvZ0l6VXdOMkZtWlR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZiR2xuYUhRdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNkaGNtNXBibWNnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYRzRnSUdOdmJHOXlPaUFqWm1ZNU9UQXhPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5c2FXZG9kQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjM1ZqWTJWemN5QXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZMjlzYjNJNklDTXdOVGc1TkRJN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMnhwWjJoMExtOTFkR3hwYm1VdGJXVnpjMkZuWlY5bGNuSnZjaUF1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNiaUFnWTI5c2IzSTZJQ05tWmpWa05XUTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJ4cFoyaDBJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1abU8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl5YjNWdVpDQjdYRzRnSUdKdmNtUmxjaTF5WVdScGRYTTZJREl3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM0p2ZFc1a0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5a1pXWmhkV3gwSUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF4T0RCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBME1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5eWIzVnVaQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZaR1ZtWVhWc2RDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ01UQndlRHRjYmlBZ2RHOXdPaUF4TUhCNE8xeHVJQ0JzWldaME9pQXhNSEI0TzF4dUlDQjNhV1IwYURvZ01qQndlRHRjYmlBZ2FHVnBaMmgwT2lBeU1IQjRPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJSbFptRjFiSFF1YjNWMGJHbHVaUzF0WlhOellXZGxYMloxYkd3dGQybGtkR2dnZTF4dUlDQnRhVzR0ZDJsa2RHZzZJREl3TUhCNE8xeHVJQ0J3WVdSa2FXNW5PaUF3SURJd2NIZ2dNQ0EwTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl5YjNWdVpDNXZkWFJzYVc1bExXMWxjM05oWjJWZmNHeGhhVzRnZTF4dUlDQnRhVzR0ZDJsa2RHZzZJREU1TlhCNE8xeHVJQ0J3WVdSa2FXNW5PaUF3SURRd2NIZ2dNQ0F5TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl5YjNWdVpDNXZkWFJzYVc1bExXMWxjM05oWjJWZmNHeGhhVzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMloxYkd3dGQybGtkR2dnZTF4dUlDQnRhVzR0ZDJsa2RHZzZJREl4TlhCNE8xeHVJQ0J3WVdSa2FXNW5PaUF3SURJd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJaMWJHd3RkMmxrZEdnZ2UxeHVJQ0J0YVc0dGQybGtkR2c2SURJd01IQjRPMXh1SUNCd1lXUmthVzVuT2lBd0lERXdjSGdnTUNBMU1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5bWRXeHNMWGRwWkhSb0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5d2JHRnBiaUI3WEc0Z0lHMXBiaTEzYVdSMGFEb2dNak13Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTVRCd2VDQXdJREUxY0hnN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMloxYkd3dGQybGtkR2d1YjNWMGJHbHVaUzF0WlhOellXZGxYMnhwWjJoMElIdGNiaUFnYldsdUxYZHBaSFJvT2lBeU1UQndlRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQXhNSEI0SURBZ05EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZmRtbHphV0pzWlNCN1hHNGdJRzl3WVdOcGRIazZJREU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyaHBaR1JsYmlCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR2S2lBOVBUMDlQU0JUWTNKdmJHeGlZWElnUFQwOVBUMGdLaTljYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJZ2UxeHVJQ0IzYVdSMGFEb2dOM0I0TzF4dUlDQm9aV2xuYUhRNklEZHdlRHRjYmlBZ0xYZGxZbXRwZEMxaWIzSmtaWEl0Y21Ga2FYVnpPaUExY0hnN1hHNTlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSeVlXTnJMWEJwWldObElIdGNiaUFnTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQTFjSGc3WEc1OVhHNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlMWFJvZFcxaU9uWmxjblJwWTJGc0lIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMakkxS1R0Y2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYRzU5WEc0Nk9pMTNaV0pyYVhRdGMyTnliMnhzWW1GeUxYUm9kVzFpT21odmNtbDZiMjUwWVd3Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJ5WjJKaEtEQXNJREFzSURBc0lEQXVNalVwTzF4dUlDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEdGNibjFjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRHaDFiV0k2YUc5MlpYSWdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TXpVcE8xeHVmVnh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2pwb2IzWmxjaUI3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eE5TazdYRzU5WEc0aUxDSXZLaUVnYm05eWJXRnNhWHBsTG1OemN5QjJPQzR3TGpFZ2ZDQk5TVlFnVEdsalpXNXpaU0I4SUdkcGRHaDFZaTVqYjIwdmJtVmpiMnhoY3k5dWIzSnRZV3hwZW1VdVkzTnpJQ292WEhKY2JseHlYRzR2S2lCRWIyTjFiV1Z1ZEZ4eVhHNGdJQ0E5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFNBcUwxeHlYRzVjY2x4dUx5b3FYSEpjYmlBcUlERXVJRU52Y25KbFkzUWdkR2hsSUd4cGJtVWdhR1ZwWjJoMElHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2NseHVJQ29nTWk0Z1VISmxkbVZ1ZENCaFpHcDFjM1J0Wlc1MGN5QnZaaUJtYjI1MElITnBlbVVnWVdaMFpYSWdiM0pwWlc1MFlYUnBiMjRnWTJoaGJtZGxjeUJwYmlCcFQxTXVYSEpjYmlBcUwxeHlYRzVjY2x4dWFIUnRiQ0I3WEhKY2JpQWdiR2x1WlMxb1pXbG5hSFE2SURFdU1UVTdJQzhxSURFZ0tpOWNjbHh1SUNBdGQyVmlhMmwwTFhSbGVIUXRjMmw2WlMxaFpHcDFjM1E2SURFd01DVTdJQzhxSURJZ0tpOWNjbHh1ZlZ4eVhHNWNjbHh1THlvZ1UyVmpkR2x2Ym5OY2NseHVJQ0FnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwZ0tpOWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQlNaVzF2ZG1VZ2RHaGxJRzFoY21kcGJpQnBiaUJoYkd3Z1luSnZkM05sY25NdVhISmNiaUFxTDF4eVhHNWNjbHh1WW05a2VTQjdYSEpjYmlBZ2JXRnlaMmx1T2lBd08xeHlYRzU5WEhKY2JseHlYRzR2S2lwY2NseHVJQ29nVW1WdVpHVnlJSFJvWlNCZ2JXRnBibUFnWld4bGJXVnVkQ0JqYjI1emFYTjBaVzUwYkhrZ2FXNGdTVVV1WEhKY2JpQXFMMXh5WEc1Y2NseHViV0ZwYmlCN1hISmNiaUFnWkdsemNHeGhlVG9nWW14dlkyczdYSEpjYm4xY2NseHVYSEpjYmk4cUtseHlYRzRnS2lCRGIzSnlaV04wSUhSb1pTQm1iMjUwSUhOcGVtVWdZVzVrSUcxaGNtZHBiaUJ2YmlCZ2FERmdJR1ZzWlcxbGJuUnpJSGRwZEdocGJpQmdjMlZqZEdsdmJtQWdZVzVrWEhKY2JpQXFJR0JoY25ScFkyeGxZQ0JqYjI1MFpYaDBjeUJwYmlCRGFISnZiV1VzSUVacGNtVm1iM2dzSUdGdVpDQlRZV1poY21rdVhISmNiaUFxTDF4eVhHNWNjbHh1YURFZ2UxeHlYRzRnSUdadmJuUXRjMmw2WlRvZ01tVnRPMXh5WEc0Z0lHMWhjbWRwYmpvZ01DNDJOMlZ0SURBN1hISmNibjFjY2x4dVhISmNiaThxSUVkeWIzVndhVzVuSUdOdmJuUmxiblJjY2x4dUlDQWdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDBnS2k5Y2NseHVYSEpjYmk4cUtseHlYRzRnS2lBeExpQkJaR1FnZEdobElHTnZjbkpsWTNRZ1ltOTRJSE5wZW1sdVp5QnBiaUJHYVhKbFptOTRMbHh5WEc0Z0tpQXlMaUJUYUc5M0lIUm9aU0J2ZG1WeVpteHZkeUJwYmlCRlpHZGxJR0Z1WkNCSlJTNWNjbHh1SUNvdlhISmNibHh5WEc1b2NpQjdYSEpjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZMjl1ZEdWdWRDMWliM2c3SUM4cUlERWdLaTljY2x4dUlDQm9aV2xuYUhRNklEQTdJQzhxSURFZ0tpOWNjbHh1SUNCdmRtVnlabXh2ZHpvZ2RtbHphV0pzWlRzZ0x5b2dNaUFxTDF4eVhHNTlYSEpjYmx4eVhHNHZLaXBjY2x4dUlDb2dNUzRnUTI5eWNtVmpkQ0IwYUdVZ2FXNW9aWEpwZEdGdVkyVWdZVzVrSUhOallXeHBibWNnYjJZZ1ptOXVkQ0J6YVhwbElHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2NseHVJQ29nTWk0Z1EyOXljbVZqZENCMGFHVWdiMlJrSUdCbGJXQWdabTl1ZENCemFYcHBibWNnYVc0Z1lXeHNJR0p5YjNkelpYSnpMbHh5WEc0Z0tpOWNjbHh1WEhKY2JuQnlaU0I3WEhKY2JpQWdabTl1ZEMxbVlXMXBiSGs2SUcxdmJtOXpjR0ZqWlN3Z2JXOXViM053WVdObE95QXZLaUF4SUNvdlhISmNiaUFnWm05dWRDMXphWHBsT2lBeFpXMDdJQzhxSURJZ0tpOWNjbHh1ZlZ4eVhHNWNjbHh1THlvZ1ZHVjRkQzFzWlhabGJDQnpaVzFoYm5ScFkzTmNjbHh1SUNBZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMGdLaTljY2x4dVhISmNiaThxS2x4eVhHNGdLaUJTWlcxdmRtVWdkR2hsSUdkeVlYa2dZbUZqYTJkeWIzVnVaQ0J2YmlCaFkzUnBkbVVnYkdsdWEzTWdhVzRnU1VVZ01UQXVYSEpjYmlBcUwxeHlYRzVjY2x4dVlTQjdYSEpjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RISmhibk53WVhKbGJuUTdYSEpjYm4xY2NseHVYSEpjYmk4cUtseHlYRzRnS2lBeExpQlNaVzF2ZG1VZ2RHaGxJR0p2ZEhSdmJTQmliM0prWlhJZ2FXNGdRMmh5YjIxbElEVTNMVnh5WEc0Z0tpQXlMaUJCWkdRZ2RHaGxJR052Y25KbFkzUWdkR1Y0ZENCa1pXTnZjbUYwYVc5dUlHbHVJRU5vY205dFpTd2dSV1JuWlN3Z1NVVXNJRTl3WlhKaExDQmhibVFnVTJGbVlYSnBMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtRmlZbkpiZEdsMGJHVmRJSHRjY2x4dUlDQmliM0prWlhJdFltOTBkRzl0T2lCdWIyNWxPeUF2S2lBeElDb3ZYSEpjYmlBZ2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCMWJtUmxjbXhwYm1VN0lDOHFJRElnS2k5Y2NseHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJSFZ1WkdWeWJHbHVaU0JrYjNSMFpXUTdJQzhxSURJZ0tpOWNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSUVGa1pDQjBhR1VnWTI5eWNtVmpkQ0JtYjI1MElIZGxhV2RvZENCcGJpQkRhSEp2YldVc0lFVmtaMlVzSUdGdVpDQlRZV1poY21rdVhISmNiaUFxTDF4eVhHNWNjbHh1WWl4Y2NseHVjM1J5YjI1bklIdGNjbHh1SUNCbWIyNTBMWGRsYVdkb2REb2dZbTlzWkdWeU8xeHlYRzU5WEhKY2JseHlYRzR2S2lwY2NseHVJQ29nTVM0Z1EyOXljbVZqZENCMGFHVWdhVzVvWlhKcGRHRnVZMlVnWVc1a0lITmpZV3hwYm1jZ2IyWWdabTl1ZENCemFYcGxJR2x1SUdGc2JDQmljbTkzYzJWeWN5NWNjbHh1SUNvZ01pNGdRMjl5Y21WamRDQjBhR1VnYjJSa0lHQmxiV0FnWm05dWRDQnphWHBwYm1jZ2FXNGdZV3hzSUdKeWIzZHpaWEp6TGx4eVhHNGdLaTljY2x4dVhISmNibU52WkdVc1hISmNibXRpWkN4Y2NseHVjMkZ0Y0NCN1hISmNiaUFnWm05dWRDMW1ZVzFwYkhrNklHMXZibTl6Y0dGalpTd2diVzl1YjNOd1lXTmxPeUF2S2lBeElDb3ZYSEpjYmlBZ1ptOXVkQzF6YVhwbE9pQXhaVzA3SUM4cUlESWdLaTljY2x4dWZWeHlYRzVjY2x4dUx5b3FYSEpjYmlBcUlFRmtaQ0IwYUdVZ1kyOXljbVZqZENCbWIyNTBJSE5wZW1VZ2FXNGdZV3hzSUdKeWIzZHpaWEp6TGx4eVhHNGdLaTljY2x4dVhISmNibk50WVd4c0lIdGNjbHh1SUNCbWIyNTBMWE5wZW1VNklEZ3dKVHRjY2x4dWZWeHlYRzVjY2x4dUx5b3FYSEpjYmlBcUlGQnlaWFpsYm5RZ1lITjFZbUFnWVc1a0lHQnpkWEJnSUdWc1pXMWxiblJ6SUdaeWIyMGdZV1ptWldOMGFXNW5JSFJvWlNCc2FXNWxJR2hsYVdkb2RDQnBibHh5WEc0Z0tpQmhiR3dnWW5KdmQzTmxjbk11WEhKY2JpQXFMMXh5WEc1Y2NseHVjM1ZpTEZ4eVhHNXpkWEFnZTF4eVhHNGdJR1p2Ym5RdGMybDZaVG9nTnpVbE8xeHlYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXdPMXh5WEc0Z0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNjbHh1SUNCMlpYSjBhV05oYkMxaGJHbG5iam9nWW1GelpXeHBibVU3WEhKY2JuMWNjbHh1WEhKY2JuTjFZaUI3WEhKY2JpQWdZbTkwZEc5dE9pQXRNQzR5TldWdE8xeHlYRzU5WEhKY2JseHlYRzV6ZFhBZ2UxeHlYRzRnSUhSdmNEb2dMVEF1TldWdE8xeHlYRzU5WEhKY2JseHlYRzR2S2lCRmJXSmxaR1JsWkNCamIyNTBaVzUwWEhKY2JpQWdJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5SUNvdlhISmNibHh5WEc0dktpcGNjbHh1SUNvZ1VtVnRiM1psSUhSb1pTQmliM0prWlhJZ2IyNGdhVzFoWjJWeklHbHVjMmxrWlNCc2FXNXJjeUJwYmlCSlJTQXhNQzVjY2x4dUlDb3ZYSEpjYmx4eVhHNXBiV2NnZTF4eVhHNGdJR0p2Y21SbGNpMXpkSGxzWlRvZ2JtOXVaVHRjY2x4dWZWeHlYRzVjY2x4dUx5b2dSbTl5YlhOY2NseHVJQ0FnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwZ0tpOWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQXhMaUJEYUdGdVoyVWdkR2hsSUdadmJuUWdjM1I1YkdWeklHbHVJR0ZzYkNCaWNtOTNjMlZ5Y3k1Y2NseHVJQ29nTWk0Z1VtVnRiM1psSUhSb1pTQnRZWEpuYVc0Z2FXNGdSbWx5WldadmVDQmhibVFnVTJGbVlYSnBMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtSjFkSFJ2Yml4Y2NseHVhVzV3ZFhRc1hISmNibTl3ZEdkeWIzVndMRnh5WEc1elpXeGxZM1FzWEhKY2JuUmxlSFJoY21WaElIdGNjbHh1SUNCbWIyNTBMV1poYldsc2VUb2dhVzVvWlhKcGREc2dMeW9nTVNBcUwxeHlYRzRnSUdadmJuUXRjMmw2WlRvZ01UQXdKVHNnTHlvZ01TQXFMMXh5WEc0Z0lHeHBibVV0YUdWcFoyaDBPaUF4TGpFMU95QXZLaUF4SUNvdlhISmNiaUFnYldGeVoybHVPaUF3T3lBdktpQXlJQ292WEhKY2JuMWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQlRhRzkzSUhSb1pTQnZkbVZ5Wm14dmR5QnBiaUJKUlM1Y2NseHVJQ29nTVM0Z1UyaHZkeUIwYUdVZ2IzWmxjbVpzYjNjZ2FXNGdSV1JuWlM1Y2NseHVJQ292WEhKY2JseHlYRzVpZFhSMGIyNHNYSEpjYm1sdWNIVjBJSHRjY2x4dUlDQXZLaUF4SUNvdlhISmNiaUFnYjNabGNtWnNiM2M2SUhacGMybGliR1U3WEhKY2JuMWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQlNaVzF2ZG1VZ2RHaGxJR2x1YUdWeWFYUmhibU5sSUc5bUlIUmxlSFFnZEhKaGJuTm1iM0p0SUdsdUlFVmtaMlVzSUVacGNtVm1iM2dzSUdGdVpDQkpSUzVjY2x4dUlDb2dNUzRnVW1WdGIzWmxJSFJvWlNCcGJtaGxjbWwwWVc1alpTQnZaaUIwWlhoMElIUnlZVzV6Wm05eWJTQnBiaUJHYVhKbFptOTRMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtSjFkSFJ2Yml4Y2NseHVjMlZzWldOMElIdGNjbHh1SUNBdktpQXhJQ292WEhKY2JpQWdkR1Y0ZEMxMGNtRnVjMlp2Y20wNklHNXZibVU3WEhKY2JuMWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQkRiM0p5WldOMElIUm9aU0JwYm1GaWFXeHBkSGtnZEc4Z2MzUjViR1VnWTJ4cFkydGhZbXhsSUhSNWNHVnpJR2x1SUdsUFV5QmhibVFnVTJGbVlYSnBMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtSjFkSFJ2Yml4Y2NseHVXM1I1Y0dVOUoySjFkSFJ2YmlkZExGeHlYRzViZEhsd1pUMG5jbVZ6WlhRblhTeGNjbHh1VzNSNWNHVTlKM04xWW0xcGRDZGRJSHRjY2x4dUlDQXRkMlZpYTJsMExXRndjR1ZoY21GdVkyVTZJR0oxZEhSdmJqdGNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSUZKbGJXOTJaU0IwYUdVZ2FXNXVaWElnWW05eVpHVnlJR0Z1WkNCd1lXUmthVzVuSUdsdUlFWnBjbVZtYjNndVhISmNiaUFxTDF4eVhHNWNjbHh1WW5WMGRHOXVPam90Ylc5NkxXWnZZM1Z6TFdsdWJtVnlMRnh5WEc1YmRIbHdaVDBuWW5WMGRHOXVKMTA2T2kxdGIzb3RabTlqZFhNdGFXNXVaWElzWEhKY2JsdDBlWEJsUFNkeVpYTmxkQ2RkT2pvdGJXOTZMV1p2WTNWekxXbHVibVZ5TEZ4eVhHNWJkSGx3WlQwbmMzVmliV2wwSjEwNk9pMXRiM290Wm05amRYTXRhVzV1WlhJZ2UxeHlYRzRnSUdKdmNtUmxjaTF6ZEhsc1pUb2dibTl1WlR0Y2NseHVJQ0J3WVdSa2FXNW5PaUF3TzF4eVhHNTlYSEpjYmx4eVhHNHZLaXBjY2x4dUlDb2dVbVZ6ZEc5eVpTQjBhR1VnWm05amRYTWdjM1I1YkdWeklIVnVjMlYwSUdKNUlIUm9aU0J3Y21WMmFXOTFjeUJ5ZFd4bExseHlYRzRnS2k5Y2NseHVYSEpjYm1KMWRIUnZiam90Ylc5NkxXWnZZM1Z6Y21sdVp5eGNjbHh1VzNSNWNHVTlKMkoxZEhSdmJpZGRPaTF0YjNvdFptOWpkWE55YVc1bkxGeHlYRzViZEhsd1pUMG5jbVZ6WlhRblhUb3RiVzk2TFdadlkzVnpjbWx1Wnl4Y2NseHVXM1I1Y0dVOUozTjFZbTFwZENkZE9pMXRiM290Wm05amRYTnlhVzVuSUh0Y2NseHVJQ0J2ZFhSc2FXNWxPaUF4Y0hnZ1pHOTBkR1ZrSUVKMWRIUnZibFJsZUhRN1hISmNibjFjY2x4dVhISmNiaThxS2x4eVhHNGdLaUJEYjNKeVpXTjBJSFJvWlNCd1lXUmthVzVuSUdsdUlFWnBjbVZtYjNndVhISmNiaUFxTDF4eVhHNWNjbHh1Wm1sbGJHUnpaWFFnZTF4eVhHNGdJSEJoWkdScGJtYzZJREF1TXpWbGJTQXdMamMxWlcwZ01DNDJNalZsYlR0Y2NseHVmVnh5WEc1Y2NseHVMeW9xWEhKY2JpQXFJREV1SUVOdmNuSmxZM1FnZEdobElIUmxlSFFnZDNKaGNIQnBibWNnYVc0Z1JXUm5aU0JoYm1RZ1NVVXVYSEpjYmlBcUlESXVJRU52Y25KbFkzUWdkR2hsSUdOdmJHOXlJR2x1YUdWeWFYUmhibU5sSUdaeWIyMGdZR1pwWld4a2MyVjBZQ0JsYkdWdFpXNTBjeUJwYmlCSlJTNWNjbHh1SUNvZ015NGdVbVZ0YjNabElIUm9aU0J3WVdSa2FXNW5JSE52SUdSbGRtVnNiM0JsY25NZ1lYSmxJRzV2ZENCallYVm5hSFFnYjNWMElIZG9aVzRnZEdobGVTQjZaWEp2SUc5MWRGeHlYRzRnS2lBZ0lDQmdabWxsYkdSelpYUmdJR1ZzWlcxbGJuUnpJR2x1SUdGc2JDQmljbTkzYzJWeWN5NWNjbHh1SUNvdlhISmNibHh5WEc1c1pXZGxibVFnZTF4eVhHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN0lDOHFJREVnS2k5Y2NseHVJQ0JqYjJ4dmNqb2dhVzVvWlhKcGREc2dMeW9nTWlBcUwxeHlYRzRnSUdScGMzQnNZWGs2SUhSaFlteGxPeUF2S2lBeElDb3ZYSEpjYmlBZ2JXRjRMWGRwWkhSb09pQXhNREFsT3lBdktpQXhJQ292WEhKY2JpQWdjR0ZrWkdsdVp6b2dNRHNnTHlvZ015QXFMMXh5WEc0Z0lIZG9hWFJsTFhOd1lXTmxPaUJ1YjNKdFlXdzdJQzhxSURFZ0tpOWNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSUVGa1pDQjBhR1VnWTI5eWNtVmpkQ0IyWlhKMGFXTmhiQ0JoYkdsbmJtMWxiblFnYVc0Z1EyaHliMjFsTENCR2FYSmxabTk0TENCaGJtUWdUM0JsY21FdVhISmNiaUFxTDF4eVhHNWNjbHh1Y0hKdlozSmxjM01nZTF4eVhHNGdJSFpsY25ScFkyRnNMV0ZzYVdkdU9pQmlZWE5sYkdsdVpUdGNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSUZKbGJXOTJaU0IwYUdVZ1pHVm1ZWFZzZENCMlpYSjBhV05oYkNCelkzSnZiR3hpWVhJZ2FXNGdTVVVnTVRBckxseHlYRzRnS2k5Y2NseHVYSEpjYm5SbGVIUmhjbVZoSUh0Y2NseHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNjbHh1ZlZ4eVhHNWNjbHh1THlvcVhISmNiaUFxSURFdUlFRmtaQ0IwYUdVZ1kyOXljbVZqZENCaWIzZ2djMmw2YVc1bklHbHVJRWxGSURFd0xseHlYRzRnS2lBeUxpQlNaVzF2ZG1VZ2RHaGxJSEJoWkdScGJtY2dhVzRnU1VVZ01UQXVYSEpjYmlBcUwxeHlYRzVjY2x4dVczUjVjR1U5SjJOb1pXTnJZbTk0SjEwc1hISmNibHQwZVhCbFBTZHlZV1JwYnlkZElIdGNjbHh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPeUF2S2lBeElDb3ZYSEpjYmlBZ2NHRmtaR2x1WnpvZ01Ec2dMeW9nTWlBcUwxeHlYRzU5WEhKY2JseHlYRzR2S2lwY2NseHVJQ29nUTI5eWNtVmpkQ0IwYUdVZ1kzVnljMjl5SUhOMGVXeGxJRzltSUdsdVkzSmxiV1Z1ZENCaGJtUWdaR1ZqY21WdFpXNTBJR0oxZEhSdmJuTWdhVzRnUTJoeWIyMWxMbHh5WEc0Z0tpOWNjbHh1WEhKY2JsdDBlWEJsUFNkdWRXMWlaWEluWFRvNkxYZGxZbXRwZEMxcGJtNWxjaTF6Y0dsdUxXSjFkSFJ2Yml4Y2NseHVXM1I1Y0dVOUoyNTFiV0psY2lkZE9qb3RkMlZpYTJsMExXOTFkR1Z5TFhOd2FXNHRZblYwZEc5dUlIdGNjbHh1SUNCb1pXbG5hSFE2SUdGMWRHODdYSEpjYm4xY2NseHVYSEpjYmk4cUtseHlYRzRnS2lBeExpQkRiM0p5WldOMElIUm9aU0J2WkdRZ1lYQndaV0Z5WVc1alpTQnBiaUJEYUhKdmJXVWdZVzVrSUZOaFptRnlhUzVjY2x4dUlDb2dNaTRnUTI5eWNtVmpkQ0IwYUdVZ2IzVjBiR2x1WlNCemRIbHNaU0JwYmlCVFlXWmhjbWt1WEhKY2JpQXFMMXh5WEc1Y2NseHVXM1I1Y0dVOUozTmxZWEpqYUNkZElIdGNjbHh1SUNBdGQyVmlhMmwwTFdGd2NHVmhjbUZ1WTJVNklIUmxlSFJtYVdWc1pEc2dMeW9nTVNBcUwxeHlYRzRnSUc5MWRHeHBibVV0YjJabWMyVjBPaUF0TW5CNE95QXZLaUF5SUNvdlhISmNibjFjY2x4dVhISmNiaThxS2x4eVhHNGdLaUJTWlcxdmRtVWdkR2hsSUdsdWJtVnlJSEJoWkdScGJtY2dhVzRnUTJoeWIyMWxJR0Z1WkNCVFlXWmhjbWtnYjI0Z2JXRmpUMU11WEhKY2JpQXFMMXh5WEc1Y2NseHVXM1I1Y0dVOUozTmxZWEpqYUNkZE9qb3RkMlZpYTJsMExYTmxZWEpqYUMxa1pXTnZjbUYwYVc5dUlIdGNjbHh1SUNBdGQyVmlhMmwwTFdGd2NHVmhjbUZ1WTJVNklHNXZibVU3WEhKY2JuMWNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQXhMaUJEYjNKeVpXTjBJSFJvWlNCcGJtRmlhV3hwZEhrZ2RHOGdjM1I1YkdVZ1kyeHBZMnRoWW14bElIUjVjR1Z6SUdsdUlHbFBVeUJoYm1RZ1UyRm1ZWEpwTGx4eVhHNGdLaUF5TGlCRGFHRnVaMlVnWm05dWRDQndjbTl3WlhKMGFXVnpJSFJ2SUdCcGJtaGxjbWwwWUNCcGJpQlRZV1poY21rdVhISmNiaUFxTDF4eVhHNWNjbHh1T2pvdGQyVmlhMmwwTFdacGJHVXRkWEJzYjJGa0xXSjFkSFJ2YmlCN1hISmNiaUFnTFhkbFltdHBkQzFoY0hCbFlYSmhibU5sT2lCaWRYUjBiMjQ3SUM4cUlERWdLaTljY2x4dUlDQm1iMjUwT2lCcGJtaGxjbWwwT3lBdktpQXlJQ292WEhKY2JuMWNjbHh1WEhKY2JpOHFJRWx1ZEdWeVlXTjBhWFpsWEhKY2JpQWdJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5SUNvdlhISmNibHh5WEc0dktseHlYRzRnS2lCQlpHUWdkR2hsSUdOdmNuSmxZM1FnWkdsemNHeGhlU0JwYmlCRlpHZGxMQ0JKUlNBeE1Dc3NJR0Z1WkNCR2FYSmxabTk0TGx4eVhHNGdLaTljY2x4dVhISmNibVJsZEdGcGJITWdlMXh5WEc0Z0lHUnBjM0JzWVhrNklHSnNiMk5yTzF4eVhHNTlYSEpjYmx4eVhHNHZLbHh5WEc0Z0tpQkJaR1FnZEdobElHTnZjbkpsWTNRZ1pHbHpjR3hoZVNCcGJpQmhiR3dnWW5KdmQzTmxjbk11WEhKY2JpQXFMMXh5WEc1Y2NseHVjM1Z0YldGeWVTQjdYSEpjYmlBZ1pHbHpjR3hoZVRvZ2JHbHpkQzFwZEdWdE8xeHlYRzU5WEhKY2JseHlYRzR2S2lCTmFYTmpYSEpjYmlBZ0lEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlJQ292WEhKY2JseHlYRzR2S2lwY2NseHVJQ29nUVdSa0lIUm9aU0JqYjNKeVpXTjBJR1JwYzNCc1lYa2dhVzRnU1VVZ01UQXJMbHh5WEc0Z0tpOWNjbHh1WEhKY2JuUmxiWEJzWVhSbElIdGNjbHh1SUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh5WEc1OVhISmNibHh5WEc0dktpcGNjbHh1SUNvZ1FXUmtJSFJvWlNCamIzSnlaV04wSUdScGMzQnNZWGtnYVc0Z1NVVWdNVEF1WEhKY2JpQXFMMXh5WEc1Y2NseHVXMmhwWkdSbGJsMGdlMXh5WEc0Z0lHUnBjM0JzWVhrNklHNXZibVU3WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVYSEpjYmk4cUlEMDlQVDA5SUVKaGMyVWdQVDA5UFQwZ0tpOWNjbHh1YUhSdGJDeGNjbHh1WW05a2VTQjdYSEpjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lHSmhZMnRuY205MWJtUTZJRUJpWjE5amIyeHZjanRjY2x4dUlDQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNCbWIyNTBMWE5wZW1VNklERTBjSGc3WEhKY2JpQWdiR2x1WlMxb1pXbG5hSFE2SURFMU1DVTdYSEpjYmlBZ1ptOXVkQzFtWVcxcGJIazZJQ2ROYVdOeWIzTnZablFnV1dGSVpXa2dWVWtuTENCQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmp0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1OVhISmNibHh5WEc1aElIdGNjbHh1SUNBbU9teHBibXNzWEhKY2JpQWdKanAyYVhOcGRHVmtMRnh5WEc0Z0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ1kyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJSFZ1WkdWeWJHbHVaVHRjY2x4dUlDQjlYSEpjYm4xY2NseHVYSEpjYm1OdlpHVWdlMXh5WEc0Z0lHWnZiblF0Wm1GdGFXeDVPaUFuVTI5MWNtTmxJRU52WkdVZ1VISnZKeXdnUTI5dWMyOXNZWE1zSUVkbGIzSm5hV0VzSUUxdmJtRmpieXdnYlc5dWIzTndZV05sTENCQmNtbGhiQ3hjY2x4dUlDQWdJSE5oYm5NdGMyVnlhV1k3WEhKY2JuMWNjbHh1SWl3aUx5b2dQVDA5UFQwZ1UyTnliMnhzWW1GeUlEMDlQVDA5SUNvdlhISmNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWElnZTF4eVhHNGdJSGRwWkhSb09pQTNjSGc3WEhKY2JpQWdhR1ZwWjJoME9pQTNjSGc3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYm4xY2NseHVYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRISmhZMnN0Y0dsbFkyVWdlMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzU5WEhKY2JseHlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPblpsY25ScFkyRnNJSHRjY2x4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQnlaMkpoS0RBc0lEQXNJREFzSURBdU1qVXBPMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzU5WEhKY2JseHlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPbWh2Y21sNmIyNTBZV3dnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYm4xY2NseHVYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJNmFHOTJaWElnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHhOU2s3WEhKY2JuMWNjbHh1WEhKY2JqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJNmFHOTJaWElnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHpOU2s3WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVYSEpjYmk4cUlFeGhlVzkxZENBcUwxeHlYRzR1Wkc5amN5QjdYSEpjYmlBZ1pHbHpjR3hoZVRvZ1pteGxlRHRjY2x4dUlDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ2NtOTNPMXh5WEc0Z0lHWnNaWGd0ZDNKaGNEb2dibTkzY21Gd08xeHlYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2NseHVJQ0I2TFdsdVpHVjRPaUF4TzF4eVhHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1ZlZ4eVhHNWNjbHh1THlvZ1FYTnBaR1VnS2k5Y2NseHVMbUZ6YVdSbElIdGNjbHh1SUNCa2FYTndiR0Y1T2lCbWJHVjRPMXh5WEc0Z0lHWnNaWGd0YzJoeWFXNXJPaUF3TzF4eVhHNGdJR1pzWlhndFpHbHlaV04wYVc5dU9pQmpiMngxYlc0N1hISmNiaUFnWm14bGVDMTNjbUZ3T2lCdWIzZHlZWEE3WEhKY2JpQWdkMmxrZEdnNklESTJNSEI0TzF4eVhHNGdJRzFoY21kcGJqb2dNRHRjY2x4dUlDQm9aV2xuYUhRNklERXdNQ1U3WEhKY2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSEJ5YVcxaGNubGZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQmpiMnh2Y2pvZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQmliM2d0YzJoaFpHOTNPaUF3SURBZ05YQjRJREp3ZUNCQVltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lIUnlZVzV6YVhScGIyNHRaSFZ5WVhScGIyNDZJREF1TTNNN1hISmNiaUFnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYm4xY2NseHVYSEpjYmk4cUlFMWhhVzRnS2k5Y2NseHVMbTFoYVc0Z2UxeHlYRzRnSUdac1pYZzZJREU3WEhKY2JpQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh5WEc0Z0lIb3RhVzVrWlhnNklERTdYSEpjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNjbHh1ZlZ4eVhHNGlMQ0pBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1Y2NseHVMbUZ6YVdSbElIdGNjbHh1SUNCbWIyNTBMV1poYldsc2VUb2dKMU52ZFhKalpTQkRiMlJsSUZCeWJ5Y3NJRU52Ym5OdmJHRnpMQ0JIWlc5eVoybGhMQ0JOYjI1aFkyOHNJRzF2Ym05emNHRmpaU3dnUVhKcFlXd3NYSEpjYmlBZ0lDQnpZVzV6TFhObGNtbG1PMXh5WEc1Y2NseHVJQ0FtWDE5b1pXRmtaWElnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3SUdGMWRHODdYSEpjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5dVlYWWdlMXh5WEc0Z0lDQWdabXhsZURvZ01UdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmFESWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hISmNiaUFnSUNCb1pXbG5hSFE2SURVMGNIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTlRSd2VEdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNakJ3ZUR0Y2NseHVJQ0FnSUdadmJuUXRkMlZwWjJoME9pQnViM0p0WVd3N1hISmNiaUFnSUNCbWIyNTBMV1poYldsc2VUb2dSMlZ2Y21kcFlTd2dRMjl1YzI5c1lYTXNJRUZ5YVdGc0xDQnpZVzV6TFhObGNtbG1PMXh5WEc0Z0lDQWdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmd6SUh0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTUNCaGRYUnZPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F5TUhCNE8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhObkI0TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJ4cGMzUWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNVEJ3ZUNBd08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgybDBaVzBnZTF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF6TW5CNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRE15Y0hnN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lETXdjSGc3WEhKY2JpQWdJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnTG05MWRHeHBibVV0WTJoaGNIUmxjbk1nZTF4eVhHNGdJQ0FnWm14bGVEb2dNVHRjY2x4dVhISmNiaUFnSUNBbVgxOXRZV2x1SUh0Y2NseHVJQ0FnSUNBZ0pqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJZ2UxeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIwYUdseVpGOTBaWGgwWDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUNBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCbWIzVnlkR2hmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbVgxOXdiR0ZqWldodmJHUmxjaUI3WEhKY2JpQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCelpXTnZibVJoY25sZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdZbTl5WkdWeUxXeGxablE2SUROd2VDQnpiMnhwWkNCQWQyaHBkR1U3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0psOWZZVzVqYUc5eUlIdGNjbHh1SUNBZ0lDQWdKanBzYVc1cklIdGNjbHh1SUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRR0p2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQjBaWGgwTFdSbFkyOXlZWFJwYjI0NklHNXZibVU3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1k2ZG1semFYUmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnZEdWNGRDMWtaV052Y21GMGFXOXVPaUJ1YjI1bE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUhWdVpHVnliR2x1WlR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1pmWVdOMGFYWmxJSHRjY2x4dUlDQWdJQ0FnSmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5aGJtTm9iM0lnZTF4eVhHNGdJQ0FnSUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNBZ0lDQW1PblpwYzJsMFpXUXNYSEpjYmlBZ0lDQWdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNGlMQ0pBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1Y2NseHVMbTFoYVc0Z2UxeHlYRzRnSUNaZlgyaGxZV1JsY2l4Y2NseHVJQ0FtWDE5bWIyOTBaWElnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3SUdGMWRHODdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXhaVzA3WEhKY2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYURFZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEhKY2JpQWdJQ0J3WVdSa2FXNW5MWFJ2Y0RvZ01XVnRPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUExWlcwN1hISmNiaUFnSUNCbWIyNTBMWGRsYVdkb2REb2dibTl5YldGc08xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJREpsYlR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5dVlXMWxJSHRjY2x4dUlDQWdJR052Ykc5eU9pQWpOVEEzWVdabE8xeHlYRzRnSUNBZ1ptOXVkQzEzWldsbmFIUTZJRzV2Y20xaGJEdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM1JoWjJ4cGJtVWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXhaVzBnWVhWMGJ6dGNjbHh1SUNBZ0lHMWhlQzEzYVdSMGFEb2dPVFl3Y0hnN1hISmNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dNUzR6WlcwN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklESmxiVHRjY2x4dUlDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQm1iMjUwTFhkbGFXZG9kRG9nTVRBd08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyTmtiaUI3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREpsYlNBd08xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01tVnRPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4Tm5CNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJREUxTUNVN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQVltZGZZMjlzYjNJN1hISmNiaUFnSUNCaWIzSmtaWEl0ZEc5d09pQXhjSGdnYzI5c2FXUWdRR0p2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjaTFpYjNSMGIyMDZJREZ3ZUNCemIyeHBaQ0JBWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ1kyOXNiM0k2SUVCMGFHbHlaRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJSdmQyNXNiMkZrSUh0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTVdWdElHRjFkRzg3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNakF3Y0hnN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZlluVjBkRzl1SUh0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUdsdWJHbHVaUzFpYkc5amF6dGNjbHh1SUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURSd2VEdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklERTBjSGdnTWpsd2VEdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNVGh3ZUR0Y2NseHVJQ0FnSUdadmJuUXRabUZ0YVd4NU9pQW5VMjkxY21ObElFTnZaR1VnVUhKdkp5d2dRMjl1YzI5c1lYTXNJRWRsYjNKbmFXRXNJRTF2Ym1GamJ5d2diVzl1YjNOd1lXTmxMQ0JCY21saGJDeGNjbHh1SUNBZ0lDQWdjMkZ1Y3kxelpYSnBaanRjY2x4dUlDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJ6ZFdOalpYTnpYMk52Ykc5eU8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVYSEpjYmlBZ0lDQW1PbXhwYm1zc1hISmNiaUFnSUNBbU9uWnBjMmwwWldRc1hISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJQ0FnZEdWNGRDMWtaV052Y21GMGFXOXVPaUJ1YjI1bE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZabTl2ZEdWeUlIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DQXpaVzA3WEhKY2JpQWdJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQjlYSEpjYm4xY2NseHVJaXdpUUdsdGNHOXlkQ0FuWTI5c2IzSnpKenRjY2x4dVhISmNiaTV6WldOMGFXOXVJSHRjY2x4dUlDQnRZWEpuYVc0NklERmxiU0F3TzF4eVhHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ1pmWDJobFlXUmxjaXhjY2x4dUlDQW1YMTlqYjI1MFpXNTBMRnh5WEc0Z0lDWmZYMlp2YjNSbGNpQjdYSEpjYmlBZ0lDQnRZWEpuYVc0NklEQTdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXdJRE5sYlR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFYUnNaU0I3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSFJvYVhKa1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlvTXlCN1hISmNiaUFnSUNCamIyeHZjam9nUUhCeWFXMWhjbmxmWTI5c2IzSTdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREV1TXpWbGJUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmcwSUh0Y2NseHVJQ0FnSUdadmJuUXRjMmw2WlRvZ01TNHhaVzA3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSFJvYVhKa1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlvTlNCN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERmxiVHRjY2x4dUlDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlrYkN4Y2NseHVJQ0FtWDE5a2RDeGNjbHh1SUNBbVgxOWtaQ0I3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJSc0lIdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNjbHh1SUNBZ0lIb3RhVzVrWlhnNklERTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlrZENCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlrWkNCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FITjFZMk5sYzNOZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5d2NtVWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXlaVzBnTUR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURGbGJUdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNVFJ3ZUR0Y2NseHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQXhOVEFsTzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHRjY2x4dUlDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJpWjE5amIyeHZjanRjY2x4dUlDQWdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJRUJpYjNKa1pYSmZZMjlzYjNJN1hISmNiaUFnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUEwY0hnN1hISmNiaUFnSUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMk52WkdVZ2UxeHlYRzRnSUNBZ1pHbHpjR3hoZVRvZ1lteHZZMnM3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOW1iMjkwWlhJZ2UxeHlYRzRnSUNBZ1ltOXlaR1Z5TFhSdmNEb2dNWEI0SUhOdmJHbGtJRUJpYjNKa1pYSmZZMjlzYjNJN1hISmNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQXpaVzA3WEhKY2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBWW1kZlkyOXNiM0k3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRR1p2ZFhKMGFGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmZEdGaWJHVWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXhaVzBnWVhWMGJ6dGNjbHh1SUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc0Z0lDQWdZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTkwYUN4Y2NseHVJQ0FtWDE5MFpDQjdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQTFjSGdnTVRad2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF5Tm5CNE8xeHlYRzRnSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTkwYUNCN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQVltZGZZMjlzYjNJN1hISmNiaUFnZlZ4eVhHNTlYSEpjYmx4eVhHNUFiV1ZrYVdFZ0tHMWhlQzEzYVdSMGFEb2dORGd3Y0hncElIdGNjbHh1SUNBdWMyVmpkR2x2YmlCN1hISmNiaUFnSUNBbVgxOW9aV0ZrWlhJc1hISmNiaUFnSUNBbVgxOWpiMjUwWlc1MElIdGNjbHh1SUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0F4WlcwN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNTlYSEpjYmlJc0lrQnBiWEJ2Y25RZ0p5NHZZMjlzYjNKekp6dGNjbHh1WEhKY2JpNWpZWE5sSUh0Y2NseHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEhKY2JpQWdlaTFwYm1SbGVEb2dNVHRjY2x4dUlDQmthWE53YkdGNU9pQm5jbWxrTzF4eVhHNGdJR2R5YVdRdGRHVnRjR3hoZEdVdFkyOXNkVzF1Y3pvZ2NtVndaV0YwS0RJc0lERm1jaWs3WEhKY2JpQWdaMkZ3T2lBME1IQjRPMXh5WEc0Z0lIQmhaR1JwYm1jNklERmxiVHRjY2x4dUlDQmliM0prWlhJdGRHOXdPaUF4Y0hnZ2MyOXNhV1FnUUdKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnUUdKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNWNjbHh1SUNBbU9tRm1kR1Z5SUh0Y2NseHVJQ0FnSUdOdmJuUmxiblE2SUNjbk8xeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUd4bFpuUTZJRFV3SlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTVRBd0pUdGNjbHh1SUNBZ0lIZHBaSFJvT2lBd08xeHlYRzRnSUNBZ1ltOXlaR1Z5TFd4bFpuUTZJREZ3ZUNCemIyeHBaQ0JBWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgzQnlaU3hjY2x4dUlDQW1YMTkwWlhoMFlYSmxZU0I3WEhKY2JpQWdJQ0JtYjI1MExYTnBlbVU2SURFemNIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTVRVd0pUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM0J5WlN4Y2NseHVJQ0FtWDE5amIyUmxMRnh5WEc0Z0lDWmZYM1JsZUhSaGNtVmhJSHRjY2x4dUlDQWdJR1p2Ym5RdFptRnRhV3g1T2lBblEyOTFjbWxsY2lCT1pYY25MQ0JEYjI1emIyeGhjeXdnUjJWdmNtZHBZU3dnUVhKcFlXd3NJSE5oYm5NdGMyVnlhV1k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5d2NtVWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNV1Z0TzF4eVhHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUdKblgyTnZiRzl5TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTkhCNE8xeHlYRzRnSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZkRzl2YkdKaGNpQjdYSEpjYmlBZ0lDQnRZWEpuYVc0NklEQWdZWFYwYnp0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTXpad2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF6Tm5CNE8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhOSEI0TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUNBeE5uQjRPMXh5WEc0Z0lDQWdkR1Y0ZEMxaGJHbG5iam9nY21sbmFIUTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZZV04wYVc5dUxGeHlYRzRnSUNaZlgzSmxiVzkyWlNCN1hISmNiaUFnSUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNCMWMyVnlMWE5sYkdWamREb2dibTl1WlR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyRmpkR2x2YmlCN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEhKY2JpQWdJQ0J3WVdSa2FXNW5MV3hsWm5RNklERXdjSGc3WEhKY2JseHlYRzRnSUNBZ0pqcG1hWEp6ZEMxamFHbHNaQ0I3WEhKY2JpQWdJQ0FnSUhCaFpHUnBibWN0YkdWbWREb2dNRHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNKbGJXOTJaU0I3WEhKY2JpQWdJQ0JtYkc5aGREb2djbWxuYUhRN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOWpiMjV6YjJ4bElIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DQmhkWFJ2TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4T0RCd2VEdGNjbHh1SUNBZ0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lFQmliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmZEdWNGRHRnlaV0VnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3SUdGMWRHODdYSEpjYmlBZ0lDQjNhV1IwYURvZ01UQXdKVHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0FnSUdKdmNtUmxjam9nYm05dVpUdGNjbHh1SUNBZ0lHOTFkR3hwYm1VNklHNXZibVU3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF4WlcwN1hISmNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR0YxZEc4N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXNhWE4wTEZ4eVhHNGdJQ1pmWDJsMFpXMGdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNRHRjY2x4dUlDQWdJR3hwYzNRdGMzUjViR1V0ZEhsd1pUb2dibTl1WlR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5c2FYTjBJSHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNell3Y0hnN1hISmNiaUFnSUNCaWIzSmtaWEl0ZEc5d09pQXhjSGdnYzI5c2FXUWdRR0p2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjaTFpYjNSMGIyMDZJREZ3ZUNCemIyeHBaQ0JBWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhNM0I0TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlwZEdWdElIdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ016WndlRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBek5uQjRPMXh5WEc0Z0lDQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01DQXhObkI0TzF4eVhHNWNjbHh1SUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFhRzkyWlhKZlltZGZZMjlzYjNJN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNTlYSEpjYmlJc0lqcHliMjkwSUh0Y2NseHVJQ0F0TFc5MWRHeHBibVV0ZWtsdVpHVjRPaUF5TURBd08xeHlYRzRnSUMwdGIzVjBiR2x1WlMxemRHbGphM2t0YUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUMwdGIzVjBiR2x1WlMxamFHRndkR1Z5Y3kxM2FXUjBhRG9nTVRBd0pUdGNjbHh1ZlZ4eVhHNGlMQ0l2S2lBOVBUMDlQVDA5UFQwOUlHbGpiMjR1ZEdobGJXVWdMU0J6ZG1jZzVadSs1cUNINTVxRTVxQzM1YnlQSUQwOVBUMDlQVDA5UFQwZ0tpOWNjbHh1TG05MWRHeHBibVV0YVdOdmJpQjdYSEpjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHlYRzRnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnWkdsemNHeGhlVG9nYVc1c2FXNWxMV0pzYjJOck8xeHlYRzRnSUhabGNuUnBZMkZzTFdGc2FXZHVPaUJ0YVdSa2JHVTdYSEpjYmlBZ2QybGtkR2c2SURGbGJUdGNjbHh1SUNCb1pXbG5hSFE2SURGbGJUdGNjbHh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNWNjbHh1SUNBbVgxOXpkbWNnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTWp0Y2NseHVJQ0FnSUhSdmNEb2dOVEFsTzF4eVhHNGdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnZDJsa2RHZzZJREZsYlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTVdWdE8xeHlYRzRnSUNBZ1ptbHNiRG9nWTNWeWNtVnVkR052Ykc5eU8xeHlYRzRnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVW9MVFV3SlN3Z0xUVXdKU2s3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlvYVdSa1pXNGdlMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2NseHVJQ0I5WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVYSEpjYmk1dmRYUnNhVzVsTFdobFlXUnBibWNnZTF4eVhHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibHh5WEc0Z0lDWmZYMkZ1WTJodmNpQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNWNjbHh1SUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNZNmRtbHphWFJsWkN4Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUdOdmJHOXlPaUJBY0hKcGJXRnllVjlqYjJ4dmNqdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGFHVmhaR2x1WjE5ZllXNWphRzl5SUh0Y2NseHVJQ0FnSUNBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDl6ZEdGeWRDQjdYSEpjYmlBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdiM1psY21ac2IzYzZJSFpwYzJsaWJHVTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnTG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlJSHRjY2x4dUlDQWdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnSUNCNkxXbHVaR1Y0T2lBeU8xeHlYRzRnSUNBZ0lDQjBiM0E2SURVd0pUdGNjbHh1SUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh5WEc0Z0lDQWdJQ0JzWldaME9pQXRNV1Z0TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dWZWeHlYRzRpTENKQWFXMXdiM0owSUNkMllYSnBZV0pzWlhNbk8xeHlYRzVBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1QWFXMXdiM0owSUNkemFHRmtiM2NuTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ2VpMXBibVJsZURvZ0xURTdYSEpjYmlBZ2RHOXdPaUF3TzF4eVhHNGdJR3hsWm5RNklEQTdYSEpjYmlBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUhkcFpIUm9PaUF4TURBbE8xeHlYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNjbHh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh5WEc0Z0lIWnBjMmxpYVd4cGRIazZJR2hwWkdSbGJqdGNjbHh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNWNjbHh1SUNBbVgxOXRiMlJoYkNCN1hISmNiaUFnSUNBdWMyaGhaRzkzWDJ4cFoyaDBYM0psWjNWc1lYSW9LVHRjY2x4dUlDQWdJR1JwYzNCc1lYazZJR1pzWlhnN1hISmNiaUFnSUNCbWJHVjRMV1JwY21WamRHbHZiam9nWTI5c2RXMXVPMXh5WEc0Z0lDQWdabXhsZUMxM2NtRndPaUJ1YjNkeVlYQTdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXlNVHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJSFJ5WVc1emFYUnBiMjR0WkhWeVlYUnBiMjQ2SURBdU5ITTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZhR1ZoWkdWeUxGeHlYRzRnSUNaZlgyMWhhVzRzWEhKY2JpQWdKbDlmWm05dmRHVnlJSHRjY2x4dUlDQWdJSGRwWkhSb09pQXhNREFsTzF4eVhHNGdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmhsWVdSbGNpeGNjbHh1SUNBbVgxOW1iMjkwWlhJZ2UxeHlYRzRnSUNBZ1pteGxlQzF6YUhKcGJtczZJREE3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFYUnNaU3hjY2x4dUlDQW1YMTl0WVdsdUxGeHlYRzRnSUNaZlgyWnZiM1JsY2lCN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5b1pXRmtaWElzWEhKY2JpQWdKbDlmZEdsMGJHVWdlMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh5WEc0Z0lDQWdlaTFwYm1SbGVEb2dNVHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBMU1uQjRPMXh5WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SURVeWNIZzdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhObkI0TzF4eVhHNGdJQ0FnWm05dWRDMTNaV2xuYUhRNklEUXdNRHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNQ0F4Tm5CNE8xeHlYRzRnSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjY2x4dUlDQWdJR0p2Y21SbGNpMWliM1IwYjIwNklERndlQ0J6YjJ4cFpDQkFjSEpwYldGeWVWOWliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5amJHOXpaU0I3WEhKY2JpQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0J5YVdkb2REb2dNVEp3ZUR0Y2NseHVJQ0FnSUhkcFpIUm9PaUF5TUhCNE8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeU1IQjRPMXh5WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SURJd2NIZzdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FHWnZkWEowYUY5MFpYaDBYMk52Ykc5eU8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXlNSEI0TzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4eVhHNGdJQ0FnWTNWeWMyOXlPaUJ3YjJsdWRHVnlPMXh5WEc0Z0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzFwWTI5dUlIdGNjbHh1SUNBZ0lDQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPMXh5WEc0Z0lDQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnSUNCMGIzQTZJREE3WEhKY2JpQWdJQ0FnSUd4bFpuUTZJREE3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQWRHaHBjbVJmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyMWhhVzRnZTF4eVhHNGdJQ0FnWm14bGVEb2dNVHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZabTl2ZEdWeUlIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DQmhkWFJ2TzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ2NtbG5hSFE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYjNabGNteGhlU0I3WEhKY2JpQWdJQ0JqYjI1MFpXNTBPaUFuSnp0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnSUNCMGIzQTZJREE3WEhKY2JpQWdJQ0JzWldaME9pQXdPMXh5WEc0Z0lDQWdkMmxrZEdnNklERXdNQ1U3WEhKY2JpQWdJQ0JvWldsbmFIUTZJREV3TUNVN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0J2Y0dGamFYUjVPaUF3TGpFN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5eWRHd3NYSEpjYmlBZ0psOXNkSElnZTF4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNaZmRHbHVlU0I3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURJNE1IQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFwYm1rZ2UxeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQTBPREJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5emJXRnNiQ0I3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURVME1IQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUhkcFpIUm9PaUEyT0RCd2VEdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXRaV1JwZFcwZ2UxeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQTNNakJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c1lYSm5aU0I3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURrMk1IQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKMGJDQjdYSEpjYmlBZ0lDQmliM0prWlhJdGJHVm1kRG9nTVhCNElITnZiR2xrSUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5MGFXNTVJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnlhV2RvZERvZ0xUSTVNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXRhVzVwSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J5YVdkb2REb2dMVFE1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl6YldGc2JDQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2NtbG5hSFE2SUMwMU5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmNtVm5kV3hoY2lCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnY21sbmFIUTZJQzAyT1RCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYldWa2FYVnRJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnlhV2RvZERvZ0xUY3pNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXNZWEpuWlNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnY21sbmFIUTZJQzA1TnpCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmJIUnlJSHRjY2x4dUlDQWdJR0p2Y21SbGNpMXlhV2RvZERvZ01YQjRJSE52Ykdsa0lFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjanRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5SUh0Y2NseHVJQ0FnSUNBZ0psOTBhVzU1SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0JzWldaME9pQXRNamt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFwYm1rZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUd4bFpuUTZJQzAwT1RCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYzIxaGJHd2dlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHeGxablE2SUMwMU5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmNtVm5kV3hoY2lCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYkdWbWREb2dMVFk1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl0WldScGRXMGdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHeGxablE2SUMwM016QndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJHRnlaMlVnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR3hsWm5RNklDMDVOekJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZEhSaUxGeHlYRzRnSUNaZlluUjBJSHRjY2x4dUlDQWdJR3hsWm5RNklEQTdYSEpjYmlBZ0lDQjNhV1IwYURvZ01UQXdKVHRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5SUh0Y2NseHVJQ0FnSUNBZ0psOTBhVzU1SUh0Y2NseHVJQ0FnSUNBZ0lDQm9aV2xuYUhRNklESTBNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxcGJta2dlMXh5WEc0Z0lDQWdJQ0FnSUdobGFXZG9kRG9nTXpJd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZjMjFoYkd3Z2UxeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dNell3Y0hnN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmNtVm5kV3hoY2lCN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQTBNREJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5dFpXUnBkVzBnZTF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ05EUXdjSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYkdGeVoyVWdlMXh5WEc0Z0lDQWdJQ0FnSUdobGFXZG9kRG9nTkRnd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZEhSaUlIdGNjbHh1SUNBZ0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNCQWNISnBiV0Z5ZVY5aWIzSmtaWEpmWTI5c2IzSTdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNaZmRHbHVlU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdkRzl3T2lBdE1qVXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMXBibWtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSFJ2Y0RvZ0xUTXpNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXpiV0ZzYkNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnZEc5d09pQXRNemN3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lIUnZjRG9nTFRReE1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5dFpXUnBkVzBnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSFJ2Y0RvZ0xUUTFNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXNZWEpuWlNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnZEc5d09pQXRORGt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJKMGRDQjdYSEpjYmlBZ0lDQjBiM0E2SUdsdWFYUnBZV3c3WEhKY2JpQWdJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJQ0FnSUNBbVgzUnBibmtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dMVEkxTUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl0YVc1cElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCaWIzUjBiMjA2SUMwek16QndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmMyMWhiR3dnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dMVE0zTUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl5WldkMWJHRnlJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQmliM1IwYjIwNklDMDBNVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV1ZrYVhWdElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCaWIzUjBiMjA2SUMwME5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJHRnlaMlVnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dMVFE1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5dmNHVnVaV1FnZTF4eVhHNGdJQ0FnZG1semFXSnBiR2wwZVRvZ2RtbHphV0pzWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SUhaaGNpZ3RMVzkxZEd4cGJtVXRla2x1WkdWNEtUdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh5WEc1Y2NseHVJQ0FnSUNBZ0psOXlkR3dnZTF4eVhHNGdJQ0FnSUNBZ0lISnBaMmgwT2lBd08xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0FnSUNBZ2JHVm1kRG9nTUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5MGRHSWdlMXh5WEc0Z0lDQWdJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlpZEhRZ2UxeHlYRzRnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dNRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5dlptWnpaWFFnZTF4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNaZmNuUnNMRnh5WEc0Z0lDQWdJQ0FtWDJ4MGNpQjdYSEpjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUJqWVd4aktERXdNQ1VnTFNBMFpXMHBPMXh5WEc0Z0lDQWdJQ0FnSUhSdmNEb2dOVEFsTzF4eVhHNGdJQ0FnSUNBZ0lIUnlZVzV6Wm05eWJUb2dkSEpoYm5Oc1lYUmxXU2d0TlRBbEtUdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOTBkR0lzWEhKY2JpQWdJQ0FnSUNaZlluUjBJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nWTJGc1l5Z3hNREFsSUMwZ05HVnRLVHRjY2x4dUlDQWdJQ0FnSUNCc1pXWjBPaUExTUNVN1hISmNiaUFnSUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZZS0MwMU1DVXBPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjl3Wlc1bFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQW1YM0owYkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhKcFoyaDBPaUF5WlcwN1hISmNiaUFnSUNBZ0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQWdJQ0FnSmw5c2RISWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaV1owT2lBeVpXMDdYSEpjYmlBZ0lDQWdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FnSUNBZ0psOTBkR0lnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYjNBNklESmxiVHRjY2x4dUlDQWdJQ0FnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNBZ0lDQW1YMkowZENCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdKdmRIUnZiVG9nTW1WdE8xeHlYRzRnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDloZFhSdklIdGNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YM0owYkN4Y2NseHVJQ0FnSUNBZ0psOXNkSElnZTF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ1lYVjBienRjY2x4dUlDQWdJQ0FnSUNCdFlYZ3RhR1ZwWjJoME9pQmpZV3hqS0RFd01DVWdMU0EwWlcwcE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMloxYkd3Z2UxeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01EdGNjbHh1SUNCOVhISmNibjFjY2x4dUlpd2lMeW9xWEhKY2JpQXFJRzFwZUdsdWN5NXNaWE56SUMwZzViZWw1WVczNVllOTVwV3dYSEpjYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2NseHVJQ29nUTNKbFlYUmxaQ0JDZVRvZ1dXRnZhR0ZwZUdsaGIxeHlYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR4TVZ4eVhHNGdLaTljY2x4dVFHbHRjRzl5ZENBbkxpOWpiMnh2Y25Nbk8xeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPYVdoK2Fjck9lY2dlZVZwZVdIdmVhVnNDQTlQVDA5UFQwZ0tpOWNjbHh1TG1Wc2JHbHdjMmx6SUNoQWJHbHVaWE1wSUhkb1pXNGdLRUJzYVc1bGN6MHhLU0I3WEhKY2JpQWdkMmhwZEdVdGMzQmhZMlU2SUc1dmQzSmhjRHRjY2x4dUlDQjBaWGgwTFc5MlpYSm1iRzkzT2lCbGJHeHBjSE5wY3p0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1OVhISmNibHh5WEc0dVpXeHNhWEJ6YVhNZ0tFQnNhVzVsY3lrZ2QyaGxiaUFvUUd4cGJtVnpQajB5S1NCN1hISmNiaUFnTFhkbFltdHBkQzFzYVc1bExXTnNZVzF3T2lCQWJHbHVaWE03WEhKY2JpQWdaR2x6Y0d4aGVUb2dZbTk0TzF4eVhHNGdJQzEzWldKcmFYUXRZbTk0TFc5eWFXVnVkRG9nZG1WeWRHbGpZV3c3WEhKY2JpQWdkR1Y0ZEMxdmRtVnlabXh2ZHpvZ1pXeHNhWEJ6YVhNN1hISmNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dWZWeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPV2NodWlua3VhZ3QrVzhqK2l1dnVlOXJ1V0h2ZWFWc0NBOVBUMDlQVDBnS2k5Y2NseHVMbkpoWkdsMWN5aEFiblZ0T2lBeWNIZ3BJSHRjY2x4dUlDQmliM0prWlhJdGNtRmthWFZ6T2lCQWJuVnRPMXh5WEc1OVhISmNibHh5WEc0dWNtRmthWFZ6WDI1dmJtVW9LU0I3WEhKY2JpQWdMbkpoWkdsMWN5Z3dLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5dGFXNXBLQ2tnZTF4eVhHNGdJQzV5WVdScGRYTW9NbkI0S1R0Y2NseHVmVnh5WEc1Y2NseHVMbkpoWkdsMWMxOXpiV0ZzYkNncElIdGNjbHh1SUNBdWNtRmthWFZ6S0ROd2VDazdYSEpjYm4xY2NseHVYSEpjYmk1eVlXUnBkWE5mY21WbmRXeGhjaWdwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLRFJ3ZUNrN1hISmNibjFjY2x4dVhISmNiaTV5WVdScGRYTmZiV1ZrYVhWdEtDa2dlMXh5WEc0Z0lDNXlZV1JwZFhNb05YQjRLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5c1lYSm5aU2dwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLREV3Y0hncE8xeHlYRzU5WEhKY2JseHlYRzR1Y21Ga2FYVnpYMmgxWjJVb0tTQjdYSEpjYmlBZ0xuSmhaR2wxY3lneE5uQjRLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5eWIzVnVaQ2dwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLRE13Y0hncE8xeHlYRzU5WEhKY2JseHlYRzR2S2lBOVBUMDlQVDBnNlppMDViMng1cUMzNWJ5UDZLNis1NzJ1NVllOTVwV3dJRDA5UFQwOVBTQXFMMXh5WEc0dWMyaGhaRzkzS0VCdlptWnpaWFE2SURBZ01DQTJjSGdnTVhCNExDQkFZMjlzYjNJNklFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjaWtnZTF4eVhHNGdJR0p2ZUMxemFHRmtiM2M2SUVCdlptWnpaWFFnUUdOdmJHOXlPMXh5WEc1OVhISmNibHh5WEc0dWMyaGhaRzkzWDNKbFozVnNZWElvUUdOdmJHOXlPaUJBY0hKcGJXRnllVjlpYjNKa1pYSmZZMjlzYjNJcElIdGNjbHh1SUNBdWMyaGhaRzkzS0RBZ01DQTJjSGdnTVhCNExDQkFZMjlzYjNJcE8xeHlYRzU5WEhKY2JseHlYRzR1YzJoaFpHOTNYMnhoY21kbEtFQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlLU0I3WEhKY2JpQWdMbk5vWVdSdmR5Z3dJREFnTVRKd2VDQXhjSGdzSUVCamIyeHZjaWs3WEhKY2JuMWNjbHh1WEhKY2JpNXphR0ZrYjNkZmJHbG5hSFJmY21WbmRXeGhjaWdwSUh0Y2NseHVJQ0F1YzJoaFpHOTNYM0psWjNWc1lYSW9LVHRjY2x4dWZWeHlYRzVjY2x4dUxuTm9ZV1J2ZDE5c2FXZG9kRjlzWVhKblpTZ3BJSHRjY2x4dUlDQXVjMmhoWkc5M1gyeGhjbWRsS0NrN1hISmNibjFjY2x4dVhISmNiaTV6YUdGa2IzZGZaR0Z5YTE5eVpXZDFiR0Z5S0NrZ2UxeHlYRzRnSUM1emFHRmtiM2RmY21WbmRXeGhjaWhBYzJWamIyNWtZWEo1WDJKdmNtUmxjbDlqYjJ4dmNpazdYSEpjYm4xY2NseHVJaXdpUUdsdGNHOXlkQ0FuZG1GeWFXRmliR1Z6Snp0Y2NseHVRR2x0Y0c5eWRDQW5ZMjlzYjNKekp6dGNjbHh1UUdsdGNHOXlkQ0FuWld4c2FYQnphWE1uTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk1nZTF4eVhHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNCM2FXUjBhRG9nZG1GeUtDMHRiM1YwYkdsdVpTMWphR0Z3ZEdWeWN5MTNhV1IwYUNrN1hISmNiaUFnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYmx4eVhHNGdJQ1l0Y0dGeVpXNTBJSHRjY2x4dUlDQWdJSFJ5WVc1emFYUnBiMjQ2SURBdU0zTWdaV0Z6WlMxcGJpMXZkWFE3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFYUnNaU0I3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREFnTVRad2VEdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ05EQndlRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBME1IQjRPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F4Tm5CNE8xeHlYRzRnSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNVFp3ZUR0Y2NseHVJQ0FnSUdadmJuUXRkMlZwWjJoME9pQTBNREE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYldGcGJpQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMnhwYzNRc1hISmNiaUFnSmw5ZmMzVmlhbVZqZEN4Y2NseHVJQ0FtWDE5cGRHVnRJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREk3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3TzF4eVhHNGdJQ0FnYkdsemRDMXpkSGxzWlMxMGVYQmxPaUJ1YjI1bE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyeHBjM1FnZTF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUM0MVpXMGdNRHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNOMVltcGxZM1FnZTF4eVhHNGdJQ0FnY0dGa1pHbHVaeTFzWldaME9pQXhaVzA3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5cGRHVnRJSHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBek1IQjRPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgzQnNZV05sYUc5c1pHVnlJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREU3WEhKY2JpQWdJQ0IwYjNBNklEQTdYSEpjYmlBZ0lDQnNaV1owT2lBd08xeHlYRzRnSUNBZ2QybGtkR2c2SURFd01DVTdYSEpjYmlBZ0lDQm9aV2xuYUhRNklETXdjSGc3WEhKY2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBYUc5MlpYSmZZbWRmWTI5c2IzSTdYSEpjYmlBZ0lDQmliM0prWlhJdGJHVm1kRG9nTW5CNElITnZiR2xrSUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdkSEpoYm5OcGRHbHZiaTFrZFhKaGRHbHZiam9nTUM0eWN6dGNjbHh1SUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmWVc1amFHOXlJSHRjY2x4dUlDQWdJQzVsYkd4cGNITnBjeWd4S1R0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F4TGpWbGJUdGNjbHh1WEhKY2JpQWdJQ0FtT214cGJtc3NYSEpjYmlBZ0lDQW1PblpwYzJsMFpXUXNYSEpjYmlBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4eVhHNGdJQ0FnSUNCamIyeHZjam9nUUhObFkyOXVaR0Z5ZVY5MFpYaDBYMk52Ykc5eU8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOWpiMlJsSUh0Y2NseHVJQ0FnSUhCaFpHUnBibWN0Y21sbmFIUTZJREF1TldWdE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOW9hV2RvYkdsbmFIUWdlMXh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSWdlMXh5WEc0Z0lDQWdJQ0FtT214cGJtc3NYSEpjYmlBZ0lDQWdJQ1k2ZG1semFYUmxaQ3hjY2x4dUlDQWdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUdadmJuUXRkMlZwWjJoME9pQmliMnhrTzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzTjBhV05yZVN4Y2NseHVJQ0FtWDJacGVHVmtJSHRjY2x4dUlDQWdJR1JwYzNCc1lYazZJR1pzWlhnN1hISmNiaUFnSUNCbWJHVjRMWGR5WVhBNklHNXZkM0poY0R0Y2NseHVJQ0FnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQjJZWElvTFMxdmRYUnNhVzVsTFhwSmJtUmxlQ2s3WEhKY2JpQWdJQ0IwYjNBNklEQTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpJSHRjY2x4dUlDQWdJQ0FnSmw5ZmRHbDBiR1VzWEhKY2JpQWdJQ0FnSUNaZlgyMWhhVzRnZTF4eVhHNGdJQ0FnSUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmWDNScGRHeGxJSHRjY2x4dUlDQWdJQ0FnSUNCbWJHVjRMWE5vY21sdWF6b2dNRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlmYldGcGJpQjdYSEpjYmlBZ0lDQWdJQ0FnWm14bGVEb2dNVHRjY2x4dUlDQWdJQ0FnSUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5emRHbGphM2tnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUhOMGFXTnJlVHRjY2x4dUlDQWdJRzFoZUMxb1pXbG5hSFE2SUhaaGNpZ3RMVzkxZEd4cGJtVXRjM1JwWTJ0NUxXaGxhV2RvZENrN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyWnBlR1ZrSUh0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjY2x4dUlDQWdJRzFoZUMxb1pXbG5hSFE2SURFd01DVTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5bWIyeGtaV1FnZTF4eVhHNGdJQ0FnZDJsa2RHZzZJREE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNGlMQ0pBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1QWFXMXdiM0owSUNkdGFYaHBibk1uTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0Y21WaFpHVnlJSHRjY2x4dUlDQW1YMTlqYkc5elpTQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmRHbDBiR1VnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TGpZM1pXMGdNQ0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNCbWIyNTBMV1poYldsc2VUb2dKMDFwWTNKdmMyOW1kQ0JaWVVobGFTQlZTU2NzSUVGeWFXRnNMQ0J6WVc1ekxYTmxjbWxtTzF4eVhHNGdJQ0FnWm05dWRDMTNaV2xuYUhRNklHNXZjbTFoYkR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJocFpHUmxiaUI3WEhKY2JpQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bElDRnBiWEJ2Y25SaGJuUTdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFhKbFlXUmxjbDl6YVdKc2FXNW5JSHRjY2x4dUlDQWdJQ0FnWkdsemNHeGhlVG9nYm05dVpTQWhhVzF3YjNKMFlXNTBPMXh5WEc1Y2NseHVJQ0FnSUNBZ0ppNTNjbUZ3Y0dWeUlIdGNjbHh1SUNBZ0lDQWdJQ0FtTG5CdmMzUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWXRMWEpsWVdScGJtY2dlMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hISmNiaUFnSUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3WEhKY2JpQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnZEc5d09pQXdPMXh5WEc0Z0lDQWdiR1ZtZERvZ01EdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQXhNREFsTzF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TzF4eVhHNGdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklETmxiU0EwWlcwN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0J6WTNKdmJHd3RkR2x0Wld4cGJtVXRibUZ0WlRvZ0xTMVFjbTluY21WemMxUnBiV1ZzYVc1bE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklITmpjbTlzYkR0Y2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YMTl3Y205bmNtVnpjeUI3WEhKY2JpQWdJQ0FnSUNBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4eVhHNGdJQ0FnSUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUNBZ0lDQnNaV1owT2lBd08xeHlYRzRnSUNBZ0lDQWdJSG90YVc1a1pYZzZJRE03WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lBMGNIZzdYSEpjYmlBZ0lDQWdJQ0FnZDJsa2RHZzZJREV3TUNVN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSEJ5YVcxaGNubGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdjMk5oYkdVNklEQWdNVHRjY2x4dUlDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wdGIzSnBaMmx1T2lCc1pXWjBPMXh5WEc0Z0lDQWdJQ0FnSUdGdWFXMWhkR2x2YmpvZ2IzVjBiR2x1WlMxeVpXRmtaWEl0Y0hKdlozSmxjM01nYkdsdVpXRnlPMXh5WEc0Z0lDQWdJQ0FnSUdGdWFXMWhkR2x2YmkxMGFXMWxiR2x1WlRvZ0xTMVFjbTluY21WemMxUnBiV1ZzYVc1bE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgxOWpiRzl6WlNCN1hISmNiaUFnSUNBZ0lDQWdMbk5vWVdSdmQxOXNhV2RvZEY5eVpXZDFiR0Z5S0NrN1hISmNiaUFnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hISmNiaUFnSUNBZ0lDQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUNBZ0lDQWdJSG90YVc1a1pYZzZJRE03WEhKY2JpQWdJQ0FnSUNBZ2RHOXdPaUExTUNVN1hISmNiaUFnSUNBZ0lDQWdjbWxuYUhRNklESXljSGc3WEhKY2JpQWdJQ0FnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQXpObkI0TzF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ016WndlRHRjY2x4dUlDQWdJQ0FnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF4T0hCNE8xeHlYRzRnSUNBZ0lDQWdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTXpCd2VEdGNjbHh1SUNBZ0lDQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEhKY2JpQWdJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHlYRzRnSUNBZ0lDQWdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNjbHh1SUNBZ0lDQWdJQ0JpYjNndGMyaGhaRzkzT2lBd0lEQWdPSEI0SUVCelpXTnZibVJoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnSUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibHh5WEc0Z0lDQWdJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRSGRvYVhSbE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdhREVzWEhKY2JpQWdJQ0FnSUNaZlgzUnBkR3hsSUh0Y2NseHVJQ0FnSUNBZ0lDQnRZWEpuYVc0NklEQXVOamRsYlNBd0lDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJQ0FnYkdsdVpTMW9aV2xuYUhRNklERXVNMlZ0TzF4eVhHNGdJQ0FnSUNBZ0lHWnZiblF0YzJsNlpUb2dNeTQxWlcwN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibjFjY2x4dVhISmNia0JyWlhsbWNtRnRaWE1nYjNWMGJHbHVaUzF5WldGa1pYSXRjSEp2WjNKbGMzTWdlMXh5WEc0Z0lIUnZJSHRjY2x4dUlDQWdJSE5qWVd4bE9pQXhJREU3WEhKY2JpQWdmVnh5WEc1OVhISmNibHh5WEc1QWJXVmthV0VnS0cxaGVDMTNhV1IwYURvZ05EZ3djSGdwSUh0Y2NseHVJQ0F1YjNWMGJHbHVaUzF5WldGa1pYSWdlMXh5WEc0Z0lDQWdKaTB0Y21WaFpHbHVaeUI3WEhKY2JpQWdJQ0FnSUhCaFpHUnBibWM2SURBZ01TNHlOV1Z0TzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDWmZYMk5zYjNObElIdGNjbHh1SUNBZ0lDQWdjbWxuYUhRNklERXljSGdnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ2IzQmhZMmwwZVRvZ01DNDRPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNaZlgzUnBkR3hsSUh0Y2NseHVJQ0FnSUNBZ1ptOXVkQzF6YVhwbE9pQXlaVzA3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1OVhISmNibHh5WEc1QWJXVmthV0VnY0hKcGJuUWdlMXh5WEc0Z0lHaDBiV3dzWEhKY2JpQWdZbTlrZVNCN1hISmNiaUFnSUNCb1pXbG5hSFE2SUdsdWFYUnBZV3dnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUM1dmRYUnNhVzVsSUh0Y2NseHVJQ0FnSUNZdGJXVnpjMkZuWlN4Y2NseHVJQ0FnSUNZdGRHOXZiR0poY2lCN1hISmNiaUFnSUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQW1MWEpsWVdSbGNpQjdYSEpjYmlBZ0lDQWdJR1JwYzNCc1lYazZJR0pzYjJOcklDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ0FnSUNCb01TeGNjbHh1SUNBZ0lDQWdKbDlmZEdsMGJHVWdlMXh5WEc0Z0lDQWdJQ0FnSUcxaGNtZHBiam9nTVRNdU5IQjBJREFnTWpod2RDQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdJQ0FnSUhSbGVIUXRZV3hwWjI0NklHTmxiblJsY2lBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQWdJR1p2Ym5RdGMybDZaVG9nTWpCd2RDQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1MbTkxZEd4cGJtVXRjbVZoWkdWeUlIdGNjbHh1SUNBZ0lDQWdJQ0FtTFMxeVpXRmthVzVuSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaU0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdhR1ZwWjJoME9pQmhkWFJ2SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lDQWdJQ0J3WVdSa2FXNW5PaUF3SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lDQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSUNCb01TeGNjbHh1SUNBZ0lDQWdJQ0FtWDE5MGFYUnNaU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnRZWEpuYVc0NklERXpMalJ3ZENBd0lESTRjSFFnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ0lDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjaUFoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdabTl1ZEMxemFYcGxPaUF5TUhCMElDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdJQ0FtWDE5amJHOXpaU3hjY2x4dUlDQWdJQ0FnSUNBbVgxOXdjbTluY21WemN5QjdYSEpjYmlBZ0lDQWdJQ0FnSUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNCd2NtVWdlMXh5WEc0Z0lDQWdJQ0FnSUhCaFpHUnBibWM2SURGbGJTQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjam9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUEwY0hnZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ2NISmxMRnh5WEc0Z0lDQWdJQ0JqYjJSbElIdGNjbHh1SUNBZ0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBZDJocGRHVWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdkR0ZpYkdVc1hISmNiaUFnSUNBZ0lHbHRaeXhjY2x4dUlDQWdJQ0FnYzNabklIdGNjbHh1SUNBZ0lDQWdJQ0JpY21WaGF5MXBibk5wWkdVNklHRjJiMmxrTzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNOcFlteHBibWNnZTF4eVhHNGdJQ0FnSUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVmVnh5WEc0aUxDSXZLaUE5UFQwOVBUMDlQVDA5SUdKMWRIUnZibk11ZEdobGJXVWdMU0RtaklucGtxN2xyN3pvaUtybW9MZmx2SThnUFQwOVBUMDlQVDA5UFNBcUwxeHlYRzVBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1QWFXMXdiM0owSUNkemFHRmtiM2NuTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0ZEc5dmJHSmhjaUI3WEhKY2JpQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUhvdGFXNWtaWGc2SURrNU9UazVPMXh5WEc0Z0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNCMGNtRnVjMmwwYVc5dUxXUjFjbUYwYVc5dU9pQXdMak56TzF4eVhHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ1pmWDJKMWRIUnZiaUI3WEhKY2JpQWdJQ0F1YzJoaFpHOTNYMnhwWjJoMFgzSmxaM1ZzWVhJb0tUdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNjbHh1SUNBZ0lIb3RhVzVrWlhnNklERTdYSEpjYmlBZ0lDQnRZWEpuYVc0NklERXdjSGc3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNelp3ZUR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTXpad2VEdGNjbHh1SUNBZ0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQWdJR0p2Y21SbGNpMXlZV1JwZFhNNklETndlRHRjY2x4dUlDQWdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYSEpjYmlBZ0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FHWnZkWEowYUY5MFpYaDBYMk52Ykc5eU8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVYSEpjYmlBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdZMjlzYjNJNklFQnpkV05qWlhOelgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCaWIzSmtaWEl0WTI5c2IzSTZJRUJ6ZFdOalpYTnpYMk52Ykc5eU8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1l1YUdsa1pTQjdYSEpjYmlBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOWhibU5vYjNJZ2UxeHlYRzRnSUNBZ0pqcHNhVzVyTEZ4eVhHNGdJQ0FnSmpwMmFYTnBkR1ZrTEZ4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpUdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnWTI5c2IzSTZJRUJ6ZFdOalpYTnpYMk52Ykc5eU8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZhV052YmlCN1hISmNiaUFnSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hISmNiaUFnSUNCNkxXbHVaR1Y0T2lBeU8xeHlYRzRnSUNBZ2RHOXdPaUExTUNVN1hISmNiaUFnSUNCc1pXWjBPaUExTUNVN1hISmNiaUFnSUNCM2FXUjBhRG9nTWpCd2VEdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ01qQndlRHRjY2x4dUlDQWdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHlYRzRnSUNBZ1ptbHNiRG9nWTNWeWNtVnVkR052Ykc5eU8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZllXTjBhWFpsSUh0Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxMGIyOXNZbUZ5SUh0Y2NseHVJQ0FnSUNBZ0psOWZZblYwZEc5dUlIdGNjbHh1SUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRSGRvYVhSbE8xeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJ6ZFdOalpYTnpYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJR0p2Y21SbGNpMWpiMnh2Y2pvZ1FITjFZMk5sYzNOZlkyOXNiM0k3WEhKY2JseHlYRzRnSUNBZ0lDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSWdlMXh5WEc0Z0lDQWdJQ0FtT214cGJtc3NYSEpjYmlBZ0lDQWdJQ1k2ZG1semFYUmxaQ3hjY2x4dUlDQWdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5eWIzVnVaR1ZrSUh0Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aWRYUjBiMjRnZTF4eVhHNGdJQ0FnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF4T0hCNE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWthWE5oWW14bFpDQjdYSEpjYmlBZ0lDQW1MbTkxZEd4cGJtVXRkRzl2YkdKaGNpeGNjbHh1SUNBZ0lDNXZkWFJzYVc1bExYUnZiMnhpWVhJZ2UxeHlYRzRnSUNBZ0lDQW1YMTloYm1Ob2IzSTZiR2x1YXl4Y2NseHVJQ0FnSUNBZ0psOWZZVzVqYUc5eU9uWnBjMmwwWldRc1hISmNiaUFnSUNBZ0lDWmZYMkZ1WTJodmNqcG9iM1psY2l4Y2NseHVJQ0FnSUNBZ0psOWZZblYwZEc5dUlIdGNjbHh1SUNBZ0lDQWdJQ0JqZFhKemIzSTZJRzV2ZEMxaGJHeHZkMlZrTzF4eVhHNGdJQ0FnSUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdZbTl5WkdWeUxXTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNibHh5WEc0Z0lDQWdJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZMjlzYjNJNklFQm1iM1Z5ZEdoZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0FnSUdKdmNtUmxjaTFqYjJ4dmNqb2dRR1p2ZFhKMGFGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5ZlluVjBkRzl1SUh0Y2NseHVJQ0FnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFaR2x6WVdKc1pXUmZZbWRmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZEhSaUxGeHlYRzRnSUNaZlluUjBJSHRjY2x4dUlDQWdJR3hsWm5RNklEVXdKVHRjY2x4dUlDQWdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV0NndE5UQWxLVHRjY2x4dVhISmNiaUFnSUNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aWRYUjBiMjRnZTF4eVhHNGdJQ0FnSUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM1IwWWlCN1hISmNiaUFnSUNCMGIzQTZJREV5Y0hnN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZhR2xrWkdWdUlIdGNjbHh1SUNBZ0lDQWdkRzl3T2lBdE5UWndlRHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWW5SMElIdGNjbHh1SUNBZ0lHSnZkSFJ2YlRvZ01USndlRHRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4eVhHNGdJQ0FnSUNCaWIzUjBiMjA2SUMwMU5uQjRPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDl5ZEd3c1hISmNiaUFnSmw5c2RISWdlMXh5WEc0Z0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh5WEc0Z0lDQWdkMmxrZEdnNklEVTJjSGc3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKMGJDQjdYSEpjYmlBZ0lDQjBiM0E2SURVd0pUdGNjbHh1SUNBZ0lISnBaMmgwT2lBeE1uQjRPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJocFpHUmxiaUI3WEhKY2JpQWdJQ0FnSUhKcFoyaDBPaUF0T0Rad2VEdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZiSFJ5SUh0Y2NseHVJQ0FnSUhSdmNEb2dOVEFsTzF4eVhHNGdJQ0FnYkdWbWREb2dNVEp3ZUR0Y2NseHVYSEpjYmlBZ0lDQW1MbTkxZEd4cGJtVXRkRzl2YkdKaGNsOW9hV1JrWlc0Z2UxeHlYRzRnSUNBZ0lDQnNaV1owT2lBdE9EWndlRHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZEhSaUxGeHlYRzRnSUNaZmNuUnNMRnh5WEc0Z0lDWmZZblIwTEZ4eVhHNGdJQ1pmYkhSeUlIdGNjbHh1SUNBZ0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBZ0lDWXViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYmlCN1hISmNiaUFnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVmVnh5WEc0aUxDSkFhVzF3YjNKMElDY3VMMk52Ykc5eWN5YzdYSEpjYmtCcGJYQnZjblFnSnk0dlptOXVkQ2M3WEhKY2JrQnBiWEJ2Y25RZ0p5NHZiV2w0YVc1ekp6dGNjbHh1UUdsdGNHOXlkQ0FuTGk5cFkyOXVjeWM3WEhKY2JseHlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxJSHRjY2x4dUlDQXVjbUZrYVhWelgzTnRZV3hzS0NrN1hISmNiaUFnTG5Ob1lXUnZkMTlzYVdkb2RGOXlaV2QxYkdGeUtDazdYSEpjYmlBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4eVhHNGdJSG90YVc1a1pYZzZJRGs1T1RrN1hISmNiaUFnYjNCaFkybDBlVG9nTUM0eE8xeHlYRzRnSUhSdmNEb2dMVFV3Y0hnN1hISmNiaUFnYkdWbWREb2dOVEFsTzF4eVhHNGdJR2hsYVdkb2REb2dOREJ3ZUR0Y2NseHVJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdjR0ZrWkdsdVp6b2dNQ0ExTUhCNE8xeHlYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQTBNSEI0TzF4eVhHNGdJR1p2Ym5RdGMybDZaVG9nUUdadmJuUmZjMmw2WlY5emJXRnNiRHRjY2x4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFkMmhwZEdVN1hISmNiaUFnWTI5c2IzSTZJRUIwYUdseVpGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lIUnlZVzV6YVhScGIyNDZJR0ZzYkNBd0xqVnpJR1ZoYzJVdGFXNHRiM1YwTzF4eVhHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV0NndE5UQWxLVHRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQW1YMTlqYjI1MFpXNTBJSHRjY2x4dUlDQWdJQzVsYkd4cGNITnBjeWd4S1R0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTUR0Y2NseHVJQ0FnSUcxaGVDMTNhV1IwYURvZ056QXdjSGc3WEhKY2JpQWdJQ0JvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dOREJ3ZUR0Y2NseHVJQ0FnSUdadmJuUXRjMmw2WlRvZ01UTndlRHRjY2x4dUlDQWdJR052Ykc5eU9pQkFkR2hwY21SZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOWpiRzl6WlN4Y2NseHVJQ0FtWDE5cFkyOXVJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREk3WEhKY2JpQWdJQ0IwYjNBNklEQTdYSEpjYmlBZ0lDQjNhV1IwYURvZ05EQndlRHRjY2x4dUlDQWdJR2hsYVdkb2REb2dOREJ3ZUR0Y2NseHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQTBNSEI0TzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJsamIyNGdlMXh5WEc0Z0lDQWdiR1ZtZERvZ01EdGNjbHh1SUNBZ0lHTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JseHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGFXTnZiaUI3WEhKY2JpQWdJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2NseHVJQ0FnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lDQWdkRzl3T2lBMU1DVTdYSEpjYmlBZ0lDQWdJR3hsWm5RNklEVXdKVHRjY2x4dUlDQWdJQ0FnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdVb0xUVXdKU3dnTFRVd0pTazdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlqYkc5elpTQjdYSEpjYmlBZ0lDQnlhV2RvZERvZ01EdGNjbHh1SUNBZ0lHTjFjbk52Y2pvZ2NHOXBiblJsY2p0Y2NseHVJQ0FnSUdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JseHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGFXTnZiaUI3WEhKY2JpQWdJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2NseHVJQ0FnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lDQWdkRzl3T2lBMU1DVTdYSEpjYmlBZ0lDQWdJR3hsWm5RNklEVXdKVHRjY2x4dUlDQWdJQ0FnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdVb0xUVXdKU3dnTFRVd0pTazdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUdOdmJHOXlPaUJBZEdocGNtUmZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmYVc1bWJ5QjdYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FIQnlhVzFoY25sZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNkaGNtNXBibWNnZTF4eVhHNGdJQ0FnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYSEpjYmlBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzWVhKdWFXNW5YMk52Ykc5eU8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOXpkV05qWlhOeklIdGNjbHh1SUNBZ0lDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4eVhHNGdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWMzVmpZMlZ6YzE5amIyeHZjanRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWlhKeWIzSWdlMXh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQmtZVzVuWlhKZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNCc1lXbHVJSHRjY2x4dUlDQWdJRzFwYmkxM2FXUjBhRG9nTVRrd2NIZzdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXdJRFV3Y0hnZ01DQXhOWEI0TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMXRaWE56WVdkbElIdGNjbHh1SUNBZ0lDQWdKbDlwYm1adklIdGNjbHh1SUNBZ0lDQWdJQ0JpYjNKa1pYSXRiR1ZtZERvZ05YQjRJSE52Ykdsa0lFQndjbWx0WVhKNVgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQnBibVp2WDNScGNGOWlaMTlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOTNZWEp1YVc1bklIdGNjbHh1SUNBZ0lDQWdJQ0JpYjNKa1pYSXRiR1ZtZERvZ05YQjRJSE52Ykdsa0lFQjNZWEp1YVc1blgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQjNZWEp1YVc1blgzUnBjRjlpWjE5amIyeHZjanRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl6ZFdOalpYTnpJSHRjY2x4dUlDQWdJQ0FnSUNCaWIzSmtaWEl0YkdWbWREb2dOWEI0SUhOdmJHbGtJRUJ6ZFdOalpYTnpYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJ6ZFdOalpYTnpYM1JwY0Y5aVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5bGNuSnZjaUI3WEhKY2JpQWdJQ0FnSUNBZ1ltOXlaR1Z5TFd4bFpuUTZJRFZ3ZUNCemIyeHBaQ0JBWkdGdVoyVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJrWVc1blpYSmZkR2x3WDJKblgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lIZHBaSFJvT2lBd08xeHlYRzRnSUNBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNWNjbHh1SUNBZ0lDQWdMbTkxZEd4cGJtVXRhV052YmlCN1hISmNiaUFnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOXNhV2RvZENCN1hISmNiaUFnSUNCdGFXNHRkMmxrZEdnNklERTRNSEI0TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUNBME1IQjRPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxdFpYTnpZV2RsSUh0Y2NseHVJQ0FnSUNBZ0psOXBibVp2SUh0Y2NseHVJQ0FnSUNBZ0lDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR052Ykc5eU9pQkFjSEpwYldGeWVWOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZkMkZ5Ym1sdVp5QjdYSEpjYmlBZ0lDQWdJQ0FnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCamIyeHZjam9nUUhkaGNtNXBibWRmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNOMVkyTmxjM01nZTF4eVhHNGdJQ0FnSUNBZ0lDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZMjlzYjNJNklFQnpkV05qWlhOelgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOWxjbkp2Y2lCN1hISmNiaUFnSUNBZ0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRR1JoYm1kbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhkb2FYUmxPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDl5YjNWdVpDQjdYSEpjYmlBZ0lDQXVjbUZrYVhWektESXdjSGdwTzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMXRaWE56WVdkbElIdGNjbHh1SUNBZ0lDQWdKbDlrWldaaGRXeDBJSHRjY2x4dUlDQWdJQ0FnSUNCdGFXNHRkMmxrZEdnNklERTRNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklEQWdOREJ3ZUR0Y2NseHVYSEpjYmlBZ0lDQWdJQ0FnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBdWNtRmthWFZ6S0RFd2NIZ3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ2RHOXdPaUF4TUhCNE8xeHlYRzRnSUNBZ0lDQWdJQ0FnYkdWbWREb2dNVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQWdJSGRwWkhSb09pQXlNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lDQWdhR1ZwWjJoME9pQXlNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lDQWdiR2x1WlMxb1pXbG5hSFE2SURJd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0YldWemMyRm5aVjltZFd4c0xYZHBaSFJvSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJRzFwYmkxM2FXUjBhRG9nTWpBd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnSUNCd1lXUmthVzVuT2lBd0lESXdjSGdnTUNBME1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5d2JHRnBiaUI3WEhKY2JpQWdJQ0FnSUNBZ2JXbHVMWGRwWkhSb09pQXhPVFZ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQXdJRFF3Y0hnZ01DQXlNSEI0TzF4eVhHNWNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0YldWemMyRm5aVjltZFd4c0xYZHBaSFJvSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJRzFwYmkxM2FXUjBhRG9nTWpFMWNIZzdYSEpjYmlBZ0lDQWdJQ0FnSUNCd1lXUmthVzVuT2lBd0lESXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMloxYkd3dGQybGtkR2dnZTF4eVhHNGdJQ0FnYldsdUxYZHBaSFJvT2lBeU1EQndlRHRjY2x4dUlDQWdJSEJoWkdScGJtYzZJREFnTVRCd2VDQXdJRFV3Y0hnN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVWdlMXh5WEc0Z0lDQWdJQ0FtWDNCc1lXbHVJSHRjY2x4dUlDQWdJQ0FnSUNCdGFXNHRkMmxrZEdnNklESXpNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklEQWdNVEJ3ZUNBd0lERTFjSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYkdsbmFIUWdlMXh5WEc0Z0lDQWdJQ0FnSUcxcGJpMTNhV1IwYURvZ01qRXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DQXhNSEI0SURBZ05EQndlRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5MmFYTnBZbXhsSUh0Y2NseHVJQ0FnSUc5d1lXTnBkSGs2SURFN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyaHBaR1JsYmlCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNGlMQ0l2S2lBOVBUMDlQU0JUWTNKdmJHeGlZWElnUFQwOVBUMGdLaTljY2x4dU9qb3RkMlZpYTJsMExYTmpjbTlzYkdKaGNpQjdYSEpjYmlBZ2QybGtkR2c2SURkd2VEdGNjbHh1SUNCb1pXbG5hSFE2SURkd2VEdGNjbHh1SUNBdGQyVmlhMmwwTFdKdmNtUmxjaTF5WVdScGRYTTZJRFZ3ZUR0Y2NseHVYSEpjYmlBZ0ppMTBjbUZqYXkxd2FXVmpaU0I3WEhKY2JpQWdJQ0F0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEVndlRHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1l0ZEdoMWJXSWdlMXh5WEc0Z0lDQWdKanAyWlhKMGFXTmhiQ0I3WEhKY2JpQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhKblltRW9NQ3dnTUN3Z01Dd2dNQzR5TlNrN1hISmNiaUFnSUNBZ0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1k2YUc5eWFYcHZiblJoYkNCN1hISmNiaUFnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eU5TazdYSEpjYmlBZ0lDQWdJQzEzWldKcmFYUXRZbTl5WkdWeUxYSmhaR2wxY3pvZ05YQjRPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TXpVcE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TVRVcE8xeHlYRzRnSUgxY2NseHVmVnh5WEc0aVhYMD0gKi9cbiJdLCJmaWxlIjoiY3NzL2RvY3MubWluLmNzcyJ9 */ diff --git a/docs/css/example.css b/docs/css/example.css index 2fa2503..82d3bcb 100644 --- a/docs/css/example.css +++ b/docs/css/example.css @@ -1010,6 +1010,10 @@ code, body { height: initial !important; } + .outline-message, + .outline-toolbar { + display: none !important; + } .outline-reader { display: block !important; overflow: hidden; @@ -1410,4 +1414,4 @@ code, background-color: rgba(0, 0, 0, 0.15); } -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLzxpbnB1dCBjc3MgMj4iLCJzY3JvbGxiYXIubGVzcyIsInNlY3Rpb24ubGVzcyIsImNhc2UubGVzcyIsInBhZ2VyLmxlc3MiLCIuLi8uLi90aGVtZS9zaGFkb3cubGVzcyIsIi4uLy4uL3RoZW1lL3ZhcmlhYmxlcy5sZXNzIiwiLi4vLi4vdGhlbWUvaWNvbnMubGVzcyIsIi4uLy4uL3RoZW1lL2FuY2hvcnMubGVzcyIsIi4uLy4uL3RoZW1lL2RyYXdlci5sZXNzIiwiLi4vLi4vdGhlbWUvY2hhcHRlcnMubGVzcyIsIi4uLy4uL3RoZW1lL2VsbGlwc2lzLmxlc3MiLCIuLi8uLi90aGVtZS9yZWFkZXIubGVzcyIsIi4uLy4uL3RoZW1lL3Rvb2xiYXIubGVzcyIsIi4uLy4uL3RoZW1lL21lc3NhZ2UubGVzcyIsIi4uLy4uL3RoZW1lL21peGlucy5sZXNzIiwiLi4vLi4vdGhlbWUvc2Nyb2xsYmFyLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkJBQTJCO0FDQzNCO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSwyQkFBQTtDRENEO0FDRUQ7RUFDRSwyQkFBQTtDREFEO0FDR0Q7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NEREQ7QUNJRDtFQUNFLHNDQUFBO0VBQ0EsMkJBQUE7Q0RGRDtBQ0tEO0VBQ0Usc0NBQUE7Q0RIRDtBQ01EO0VBQ0Usc0NBQUE7Q0RKRDtBRXBCRDtFQUNFLGNBQUE7RUFDQSxpQkFBQTtDRnNCRDtBRXBCQzs7O0VBR0UsVUFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtDRnNCSDtBRW5CQztFQUNFLFlBQUE7Q0ZxQkg7QUVsQkM7RUFDRSxlQUFBO0VBQ0Esa0JBQUE7Q0ZvQkg7QUVqQkM7RUFDRSxpQkFBQTtFQUNBLFlBQUE7Q0ZtQkg7QUVoQkM7RUFDRSxlQUFBO0VBQ0EsWUFBQTtDRmtCSDtBRWZDOzs7RUFHRSxVQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0NGaUJIO0FFZEM7RUFDRSxtQkFBQTtFQUNBLFdBQUE7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YzNqQ087RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0NkNmpDVDtBY3pqQ0s7RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0NkMmpDUDtBY3pqQ087RUFDRSxpQkFBQTtFQUNBLGdCQUFBO0NkMmpDVDtBY3JqQ0M7RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0NkdWpDSDtBY3BqQ0s7RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0Nkc2pDUDtBY25qQ0s7RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0NkcWpDUDtBY2hqQ0M7RUFDRSxXQUFBO0Nka2pDSDtBYy9pQ0M7RUFDRSxjQUFBO0NkaWpDSDtBQUNELDJCQUEyQjtBZ0J2eEMzQjtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsMkJBQUE7Q2hCeXhDRDtBZ0J2eENDO0VBQ0UsMkJBQUE7Q2hCeXhDSDtBZ0JyeENHO0VBQ0Usc0NBQUE7RUFDQSwyQkFBQTtDaEJ1eENMO0FnQnB4Q0c7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NoQnN4Q0w7QWdCbnhDRztFQUNFLHNDQUFBO0NoQnF4Q0w7QWdCanhDQztFQUNFLHNDQUFBO0NoQm14Q0giLCJmaWxlIjoiZXhhbXBsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT09PSBTY3JvbGxiYXIgPT09PT0gKi9cbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogN3B4O1xuICBoZWlnaHQ6IDdweDtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIHtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG59XG4uc2VjdGlvbiB7XG4gIG1hcmdpbjogMWVtIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9faGVhZGVyLFxuLnNlY3Rpb25fX2NvbnRlbnQsXG4uc2VjdGlvbl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDNlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zZWN0aW9uX190aXRsZSB7XG4gIGNvbG9yOiAjNjY2O1xufVxuLnNlY3Rpb25fX2gzIHtcbiAgY29sb3I6ICM1MDdhZmU7XG4gIGZvbnQtc2l6ZTogMS4zNWVtO1xufVxuLnNlY3Rpb25fX2g0IHtcbiAgZm9udC1zaXplOiAxLjFlbTtcbiAgY29sb3I6ICM2NjY7XG59XG4uc2VjdGlvbl9faDUge1xuICBmb250LXNpemU6IDFlbTtcbiAgY29sb3I6ICM5OTk7XG59XG4uc2VjdGlvbl9fZGwsXG4uc2VjdGlvbl9fZHQsXG4uc2VjdGlvbl9fZGQge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fZGwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG4uc2VjdGlvbl9fZHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uc2VjdGlvbl9fZGQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLnNlY3Rpb25fX3ByZSB7XG4gIG1hcmdpbjogMmVtIDA7XG4gIHBhZGRpbmc6IDFlbTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjb2xvcjogIzY2NjtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uc2VjdGlvbl9fY29kZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDAgYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zZWN0aW9uX19mb290ZXIge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgbWFyZ2luLXRvcDogM2VtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBjb2xvcjogIzk5OTtcbn1cbi5zZWN0aW9uX190YWJsZSB7XG4gIG1hcmdpbjogMWVtIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5zZWN0aW9uX190aCxcbi5zZWN0aW9uX190ZCB7XG4gIHBhZGRpbmc6IDVweCAxNnB4O1xuICBsaW5lLWhlaWdodDogMjZweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG59XG4uc2VjdGlvbl9fdGgge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG59XG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLnNlY3Rpb25fX2hlYWRlcixcbiAgLnNlY3Rpb25fX2NvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAgMWVtO1xuICB9XG59XG4uY2FzZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgZ2FwOiA0MHB4O1xuICBwYWRkaW5nOiAxZW07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICBsZWZ0OiA1MCU7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX19wcmUsXG4uY2FzZV9fdGV4dGFyZWEge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxNTAlO1xufVxuLmNhc2VfX3ByZSxcbi5jYXNlX19jb2RlLFxuLmNhc2VfX3RleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIENvbnNvbGFzLCBHZW9yZ2lhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cbi5jYXNlX19wcmUge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLmNhc2VfX3Rvb2xiYXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiAzNnB4O1xuICBsaW5lLWhlaWdodDogMzZweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNhc2VfX2FjdGlvbixcbi5jYXNlX19yZW1vdmUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5jYXNlX19hY3Rpb24ge1xuICBmb250LXNpemU6IDEzcHg7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbn1cbi5jYXNlX19hY3Rpb246Zmlyc3QtY2hpbGQge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG4uY2FzZV9fcmVtb3ZlIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuLmNhc2VfX2NvbnNvbGUge1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiAxODBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX190ZXh0YXJlYSB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6IDFlbTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uY2FzZV9fbGlzdCxcbi5jYXNlX19pdGVtIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fbGlzdCB7XG4gIGhlaWdodDogMzYwcHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jYXNlX19pdGVtIHtcbiAgaGVpZ2h0OiAzNnB4O1xuICBsaW5lLWhlaWdodDogMzZweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4uY2FzZV9faXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y4Zjk7XG59XG4vKipcbiAqIG1peGlucy5sZXNzIC0g5bel5YW35Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOWchuinkuagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi8qID09PT09PSDpmLTlvbHmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXG4ucGFwZXIge1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBtYXJnaW46IDNlbSBhdXRvO1xuICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgcGFkZGluZzogMmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLnBhcGVyLmZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ucGFwZXIuZmxleCAuYXJ0aWNsZSB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLnBhcGVyLmZsZXggLmFydGljbGVfX21haW4ge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLnBhcGVyLmZsZXggLmFydGljbGVfX2FzaWRlIHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5oZWFkZXIge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB6LWluZGV4OiAzO1xuICB0b3A6IDA7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmhlYWRlcl9zdGlja3kge1xuICBwYWRkaW5nLWxlZnQ6IDI2MHB4O1xufVxuLmFydGljbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgcGFkZGluZzogMmVtIDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG59XG4uYXJ0aWNsZV9fbWFpbiB7XG4gIGZsZXg6IDE7XG4gIHBhZGRpbmc6IDAgMmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFydGljbGVfX21haW4gLnNlY3Rpb24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5hcnRpY2xlX19tYWluIC5zZWN0aW9uX19jb250ZW50LFxuLmFydGljbGVfX21haW4gLnNlY3Rpb25fX2Zvb3Rlcixcbi5hcnRpY2xlX19tYWluIC5zZWN0aW9uX19oZWFkZXIge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5hcnRpY2xlX19tYWluIC5zZWN0aW9uX19oZWFkZXIsXG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbl9fY29udGVudCB7XG4gIG1hcmdpbjogMDtcbn1cbi5hcnRpY2xlX19hc2lkZSB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogMjQwcHg7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDtcbn1cbi5hcnRpY2xlX19hc2lkZS5sdHIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItbGVmdDogbm9uZTtcbn1cbi5hcnRpY2xlX19hc2lkZSAub3V0bGluZS1jaGFwdGVycyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5wcmUsXG4uc2VjdGlvbl9fcHJlIHtcbiAgcGFkZGluZzogMmVtO1xuICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuY29kZSxcbi5zZWN0aW9uX19jb2RlIHtcbiAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG59XG4uZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkY2RmZTY7XG4gIHBhZGRpbmc6IDNlbSAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uZm9vdGVyIGE6bGluayxcbi5mb290ZXIgYTp2aXNpdGVkLFxuLmZvb3RlciBhOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5mb290ZXIgYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnV0aWxzLWJvcmRlci1yaWdodCB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgLnBhcGVyIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICAuYXJ0aWNsZV9fbWFpbiB7XG4gICAgcGFkZGluZzogMCAyZW07XG4gIH1cbn1cbjpyb290IHtcbiAgLS1vdXRsaW5lLXpJbmRleDogMjAwMDtcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcbn1cbi8qID09PT09PT09PT0gY29sb3JzLnRoZW1lIC0g5Z+656GA6aKc6Imy5Y+Y6YeP6ZuG5ZCIID09PT09PT09PT0gKi9cbi8qKlxuICogZWxsaXBzaXMubGVzcyAtIOaWh+acrOecgeeVpSBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyoqXG4gKiBzaGFkb3cubGVzcyAtIOmYtOW9seagt+W8j+iuvue9riBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4yMFxuICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09PT09PSBpY29uLnRoZW1lIC0gc3ZnIOWbvuagh+eahOagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9fc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWljb25faGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmc6aG92ZXIgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydDpob3ZlciB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydCAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGxlZnQ6IC0xZW07XG59XG4ub3V0bGluZS1kcmF3ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IC0xO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19tb2RhbCB7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDIxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDUycHg7XG4gIGxpbmUtaGVpZ2h0OiA1MnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAxMnB4O1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICM5OTk7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2UgLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZTpob3ZlciB7XG4gIGNvbG9yOiAjNjY2O1xufVxuLm91dGxpbmUtZHJhd2VyX19tYWluIHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fb3ZlcmxheSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC4xO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55LFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55IHtcbiAgd2lkdGg6IDI4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgd2lkdGg6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICB3aWR0aDogNTQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIsXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIge1xuICB3aWR0aDogNjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgd2lkdGg6IDcyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICB3aWR0aDogOTYwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtMjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTY5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3NtYWxsLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNzMwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX2xhcmdlLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICBoZWlnaHQ6IDI0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgaGVpZ2h0OiAzMjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3NtYWxsIHtcbiAgaGVpZ2h0OiAzNjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIGhlaWdodDogNDAwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgaGVpZ2h0OiA0NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2UsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX2xhcmdlIHtcbiAgaGVpZ2h0OiA0ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgdG9wOiBpbml0aWFsO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgcmlnaHQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIHRvcDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgYm90dG9tOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9ydGwsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfdHRiLFxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB3aWR0aDogY2FsYygxMDAlIC0gNGVtKTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9mdWxsIHtcbiAgcGFkZGluZzogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiB2YXIoLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1jaGFwdGVycy1wYXJlbnQge1xuICB0cmFuc2l0aW9uOiAwLjNzIGVhc2UtaW4tb3V0O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbGlzdCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19zdWJqZWN0LFxuLm91dGxpbmUtY2hhcHRlcnNfX2l0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2xpc3Qge1xuICBwYWRkaW5nOiAwLjVlbSAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3N1YmplY3Qge1xuICBwYWRkaW5nLWxlZnQ6IDFlbTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19pdGVtIHtcbiAgbWFyZ2luOiAwO1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3BsYWNlaG9sZGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y4Zjk7XG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzA1ODk0MjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAgMS41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzU1NTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19jb2RlIHtcbiAgcGFkZGluZy1yaWdodDogMC41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5LFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xuICB0b3A6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIG1heC1oZWlnaHQ6IHZhcigtLW91dGxpbmUtc3RpY2t5LWhlaWdodCk7XG59XG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19mb2xkZWQge1xuICB3aWR0aDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nLndyYXBwZXIucG9zdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogM2VtIDRlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgc2Nyb2xsLXRpbWVsaW5lLW5hbWU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDM7XG4gIGhlaWdodDogNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbiAgc2NhbGU6IDAgMTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcbiAgYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAzO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDIycHg7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDM2cHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGZlNjtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggI2RkZDtcbiAgY29sb3I6ICM5OTk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX19jbG9zZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlciBoMSxcbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMS4zZW07XG4gIGZvbnQtc2l6ZTogMy41ZW07XG59XG5Aa2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAgIHJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICB9XG59XG5AbWVkaWEgcHJpbnQge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fY2xvc2UsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fcHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlIHtcbiAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHByZSxcbiAgLm91dGxpbmUtcmVhZGVyIGNvZGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgdGFibGUsXG4gIC5vdXRsaW5lLXJlYWRlciBpbWcsXG4gIC5vdXRsaW5lLXJlYWRlciBzdmcge1xuICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLyogPT09PT09PT09PSBidXR0b25zLnRoZW1lIC0g5oyJ6ZKu5a+86Iiq5qC35byPID09PT09PT09PT0gKi9cbi5vdXRsaW5lLXRvb2xiYXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk5O1xuICBtYXJnaW46IDA7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMTBweDtcbiAgd2lkdGg6IDM2cHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGZlNjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM5OTk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBmaWxsOiBjdXJyZW50Y29sb3I7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZS5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBib3JkZXItY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZS5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtdG9vbGJhcl9yb3VuZGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgY29sb3I6ICM5OTk7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbms6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG4ub3V0bGluZS10b29sYmFyX3R0Yixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IHtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiAub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2J0dCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiB7XG4gIHRvcDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICB0b3A6IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBib3R0b206IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dC5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgYm90dG9tOiAtNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiA1NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwge1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bC5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgcmlnaHQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIge1xuICB0b3A6IDUwJTtcbiAgbGVmdDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfbHRyLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBsZWZ0OiAtODZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9ydGwgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX2J0dCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfbHRyIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qKlxuICogZm9udC5sZXNzIC0g5a2X5L2T55u45YWz5qC35byPXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xNlxuICovXG4vKiA9PT09PT0g5a2X5L2TID09PT09PSAqL1xuLyogPT09PT09IOWtl+mHjSA9PT09PT0gKi9cbi8qID09PT09PSDlrZflj7cgPT09PT09ICovXG4ub3V0bGluZS1tZXNzYWdlIHtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk7XG4gIG9wYWNpdHk6IDAuMTtcbiAgdG9wOiAtNTBweDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCA1MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb2xvcjogIzY2NjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2NvbnRlbnQge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWFyZ2luOiAwO1xuICBtYXgtd2lkdGg6IDcwMHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGNvbG9yOiAjNjY2O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UsXG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgbGVmdDogMDtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2Uge1xuICByaWdodDogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjVkNWQ7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTBweDtcbiAgcGFkZGluZzogMCA1MHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2luZm8ge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICM1MDdhZmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2Y4ZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY5OTAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmYmU2O1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzA1ODk0MjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZjZlYjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY1ZDVkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMWYwO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgd2lkdGg6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0IHtcbiAgbWluLXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHRvcDogMTBweDtcbiAgbGVmdDogMTBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0Lm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAyMHB4IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTVweDtcbiAgcGFkZGluZzogMCA0MHB4IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMTVweDtcbiAgcGFkZGluZzogMCAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgNTBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDIzMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCAxNXB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMjEwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3Zpc2libGUge1xuICBvcGFjaXR5OiAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDdweDtcbiAgaGVpZ2h0OiA3cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuIiwiLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIHdpZHRoOiA3cHg7XHJcbiAgaGVpZ2h0OiA3cHg7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi5zZWN0aW9uIHtcclxuICBtYXJnaW46IDFlbSAwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX19jb250ZW50LFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwIDNlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19oMyB7XHJcbiAgICBjb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICBmb250LXNpemU6IDEuMzVlbTtcclxuICB9XHJcblxyXG4gICZfX2g0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4xZW07XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19oNSB7XHJcbiAgICBmb250LXNpemU6IDFlbTtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19kbCxcclxuICAmX19kdCxcclxuICAmX19kZCB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2RsIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgfVxyXG5cclxuICAmX19kdCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG5cclxuICAmX19kZCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19wcmUge1xyXG4gICAgbWFyZ2luOiAyZW0gMDtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxNTAlO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBiZ19jb2xvcjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcblxyXG4gICZfX2NvZGUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXIge1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBtYXJnaW4tdG9wOiAzZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gIH1cclxuXHJcbiAgJl9fdGFibGUge1xyXG4gICAgbWFyZ2luOiAxZW0gYXV0bztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX190aCxcclxuICAmX190ZCB7XHJcbiAgICBwYWRkaW5nOiA1cHggMTZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyNnB4O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX190aCB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAuc2VjdGlvbiB7XHJcbiAgICAmX19oZWFkZXIsXHJcbiAgICAmX19jb250ZW50IHtcclxuICAgICAgcGFkZGluZzogMCAxZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJy4vY29sb3JzJztcclxuXHJcbi5jYXNlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBkaXNwbGF5OiBncmlkO1xyXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcbiAgZ2FwOiA0MHB4O1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX3ByZSxcclxuICAmX190ZXh0YXJlYSB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTUwJTtcclxuICB9XHJcblxyXG4gICZfX3ByZSxcclxuICAmX19jb2RlLFxyXG4gICZfX3RleHRhcmVhIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgfVxyXG5cclxuICAmX19wcmUge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQGJnX2NvbG9yO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9fdG9vbGJhciB7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fYWN0aW9uLFxyXG4gICZfX3JlbW92ZSB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcclxuICB9XHJcblxyXG4gICZfX2FjdGlvbiB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX3JlbW92ZSB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgfVxyXG5cclxuICAmX19jb25zb2xlIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgaGVpZ2h0OiAxODBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fdGV4dGFyZWEge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19saXN0LFxyXG4gICZfX2l0ZW0ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19saXN0IHtcclxuICAgIGhlaWdodDogMzYwcHg7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19pdGVtIHtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaG92ZXJfYmdfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJy4uLy4uL3RoZW1lL21peGlucyc7XHJcblxyXG4ucGFwZXIge1xyXG4gIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gIG1hcmdpbjogM2VtIGF1dG87XHJcbiAgbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiAgcGFkZGluZzogMmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cclxuICAmLmZsZXgge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgLmFydGljbGUge1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHJcbiAgICAgICZfX21haW4ge1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19hc2lkZSB7XHJcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uaGVhZGVyIHtcclxuICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gIHotaW5kZXg6IDM7XHJcbiAgdG9wOiAwO1xyXG4gIG1hcmdpbjogMCBhdXRvO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX3N0aWNreSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDI2MHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmFydGljbGUge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICBwYWRkaW5nOiAyZW0gMDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XHJcblxyXG4gICZfX21haW4ge1xyXG4gICAgZmxleDogMTtcclxuICAgIHBhZGRpbmc6IDAgMmVtO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAuc2VjdGlvbiB7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG5cclxuICAgICAgJl9fY29udGVudCxcclxuICAgICAgJl9fZm9vdGVyLFxyXG4gICAgICAmX19oZWFkZXIge1xyXG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19oZWFkZXIsXHJcbiAgICAgICZfX2NvbnRlbnQge1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fYXNpZGUge1xyXG4gICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICB3aWR0aDogMjQwcHg7XHJcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5sdHIge1xyXG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgICBib3JkZXItbGVmdDogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1jaGFwdGVycyB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbnByZSxcclxuLnNlY3Rpb25fX3ByZSB7XHJcbiAgcGFkZGluZzogMmVtO1xyXG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcbn1cclxuXHJcbmNvZGUsXHJcbi5zZWN0aW9uX19jb2RlIHtcclxuICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG59XHJcblxyXG4uZm9vdGVyIHtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gIHBhZGRpbmc6IDNlbSAwO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgYSB7XHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnV0aWxzLWJvcmRlci1yaWdodCB7XHJcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG59XHJcblxyXG4uaGlkZGVuIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICBodG1sLFxyXG4gIGJvZHkge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxuXHJcbiAgLnBhcGVyIHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgfVxyXG5cclxuICAuYXJ0aWNsZV9fbWFpbiB7XHJcbiAgICBwYWRkaW5nOiAwIDJlbTtcclxuICB9XHJcbn1cclxuIiwiLyoqXHJcbiAqIHNoYWRvdy5sZXNzIC0g6Zi05b2x5qC35byP6K6+572uIG1peGlueCDlh73mlbBcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXHJcbiAqIFVwZGF0ZTogMjAyMi4zLjIwXHJcbiAqL1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cclxuLnNoYWRvdyhAb2Zmc2V0OiAwIDAgNnB4IDFweCwgQGNvbG9yOiBAcHJpbWFyeV9ib3JkZXJfY29sb3IpIHtcclxuICBib3gtc2hhZG93OiBAb2Zmc2V0IEBjb2xvcjtcclxufVxyXG5cclxuLnNoYWRvd19yZWd1bGFyKEBjb2xvcjogQHByaW1hcnlfYm9yZGVyX2NvbG9yKSB7XHJcbiAgLnNoYWRvdygwIDAgNnB4IDFweCwgQGNvbG9yKTtcclxufVxyXG5cclxuLnNoYWRvd19sYXJnZShAY29sb3I6IEBwcmltYXJ5X2JvcmRlcl9jb2xvcikge1xyXG4gIC5zaGFkb3coMCAwIDEycHggMXB4LCBAY29sb3IpO1xyXG59XHJcblxyXG4uc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKSB7XHJcbiAgLnNoYWRvd19yZWd1bGFyKCk7XHJcbn1cclxuXHJcbi5zaGFkb3dfbGlnaHRfbGFyZ2UoKSB7XHJcbiAgLnNoYWRvd19sYXJnZSgpO1xyXG59XHJcblxyXG4uc2hhZG93X2RhcmtfcmVndWxhcigpIHtcclxuICAuc2hhZG93X3JlZ3VsYXIoQHNlY29uZGFyeV9ib3JkZXJfY29sb3IpO1xyXG59XHJcblxyXG4uc2hhZG93X2RhcmtfbGFyZ2UoKSB7XHJcbiAgLnNoYWRvd19sYXJnZShAc2Vjb25kYXJ5X2JvcmRlcl9jb2xvcik7XHJcbn1cclxuIiwiOnJvb3Qge1xyXG4gIC0tb3V0bGluZS16SW5kZXg6IDIwMDA7XHJcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XHJcbiAgLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoOiAxMDAlO1xyXG59XHJcbiIsIi8qID09PT09PT09PT0gaWNvbi50aGVtZSAtIHN2ZyDlm77moIfnmoTmoLflvI8gPT09PT09PT09PSAqL1xyXG4ub3V0bGluZS1pY29uIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB3aWR0aDogMWVtO1xyXG4gIGhlaWdodDogMWVtO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX3N2ZyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB3aWR0aDogMWVtO1xyXG4gICAgaGVpZ2h0OiAxZW07XHJcbiAgICBmaWxsOiBjdXJyZW50Y29sb3I7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLm91dGxpbmUtaGVhZGluZyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fYW5jaG9yIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcblxyXG4gICAgJjpsaW5rLFxyXG4gICAgJjp2aXNpdGVkLFxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N0YXJ0IHtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgIGxlZnQ6IC0xZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XHJcbkBpbXBvcnQgJ2NvbG9ycyc7XHJcbkBpbXBvcnQgJ3NoYWRvdyc7XHJcblxyXG4ub3V0bGluZS1kcmF3ZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAtMTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICBtYXJnaW46IDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX21vZGFsIHtcclxuICAgIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDIxO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40cztcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19oZWFkZXIsXHJcbiAgJl9fbWFpbixcclxuICAmX19mb290ZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIH1cclxuXHJcbiAgJl9faGVhZGVyLFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBmbGV4LXNocmluazogMDtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlLFxyXG4gICZfX21haW4sXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIHBhZGRpbmc6IDAgMTZweDtcclxuICB9XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX190aXRsZSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDUycHg7XHJcbiAgICBsaW5lLWhlaWdodDogNTJweDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgbWFyZ2luOiAwIDE2cHg7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICB9XHJcblxyXG4gICZfX2Nsb3NlIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIHJpZ2h0OiAxMnB4O1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fbWFpbiB7XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19vdmVybGF5IHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIG9wYWNpdHk6IDAuMTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX3J0bCxcclxuICAmX2x0ciB7XHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICB3aWR0aDogMjgwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgd2lkdGg6IDQ4MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICB3aWR0aDogNTQwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgd2lkdGg6IDY4MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgd2lkdGg6IDcyMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICB3aWR0aDogOTYwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcnRsIHtcclxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtMjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTU1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTY5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtNzMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTk3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9sdHIge1xyXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC0yOTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTQ5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTU1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtNjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTczMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTk3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIsXHJcbiAgJl9idHQge1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgIGhlaWdodDogMjQwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgaGVpZ2h0OiAzMjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgaGVpZ2h0OiAzNjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICBoZWlnaHQ6IDQwMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgaGVpZ2h0OiA0NDBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgaGVpZ2h0OiA0ODBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC0yNTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtMzMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC0zNzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtNDEwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtNDUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC00OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfYnR0IHtcclxuICAgIHRvcDogaW5pdGlhbDtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtMjUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTMzMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtMzcwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTQxMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTQ1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX29wZW5lZCB7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcblxyXG4gICAgICAmX3J0bCB7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbHRyIHtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3R0YiB7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2J0dCB7XHJcbiAgICAgICAgYm90dG9tOiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX29mZnNldCB7XHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl9ydGwsXHJcbiAgICAgICZfbHRyIHtcclxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDRlbSk7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3R0YixcclxuICAgICAgJl9idHQge1xyXG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xyXG4gICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfb3BlbmVkIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgICAgICZfcnRsIHtcclxuICAgICAgICAgICAgcmlnaHQ6IDJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmX2x0ciB7XHJcbiAgICAgICAgICAgIGxlZnQ6IDJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmX3R0YiB7XHJcbiAgICAgICAgICAgIHRvcDogMmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICZfYnR0IHtcclxuICAgICAgICAgICAgYm90dG9tOiAyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2F1dG8ge1xyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfcnRsLFxyXG4gICAgICAmX2x0ciB7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZnVsbCB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICd2YXJpYWJsZXMnO1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdlbGxpcHNpcyc7XHJcblxyXG4ub3V0bGluZS1jaGFwdGVycyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHdpZHRoOiB2YXIoLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoKTtcclxuICBvdmVyZmxvdzogYXV0bztcclxuXHJcbiAgJi1wYXJlbnQge1xyXG4gICAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlIHtcclxuICAgIG1hcmdpbjogMCAxNnB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19tYWluIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fbGlzdCxcclxuICAmX19zdWJqZWN0LFxyXG4gICZfX2l0ZW0ge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fbGlzdCB7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAwO1xyXG4gIH1cclxuXHJcbiAgJl9fc3ViamVjdCB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcclxuICB9XHJcblxyXG4gICZfX2l0ZW0ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fcGxhY2Vob2xkZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMzBweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBob3Zlcl9iZ19jb2xvcjtcclxuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19hbmNob3Ige1xyXG4gICAgLmVsbGlwc2lzKDEpO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAwIDEuNWVtO1xyXG5cclxuICAgICY6bGluayxcclxuICAgICY6dmlzaXRlZCxcclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgIGNvbG9yOiBAc2Vjb25kYXJ5X3RleHRfY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2NvZGUge1xyXG4gICAgcGFkZGluZy1yaWdodDogMC41ZW07XHJcbiAgfVxyXG5cclxuICAmX2hpZ2hsaWdodCB7XHJcbiAgICAmLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvciB7XHJcbiAgICAgICY6bGluayxcclxuICAgICAgJjp2aXNpdGVkLFxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfc3RpY2t5LFxyXG4gICZfZml4ZWQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcclxuICAgIHRvcDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgLm91dGxpbmUtY2hhcHRlcnMge1xyXG4gICAgICAmX190aXRsZSxcclxuICAgICAgJl9fbWFpbiB7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fdGl0bGUge1xyXG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19tYWluIHtcclxuICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N0aWNreSB7XHJcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gICAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcclxuICB9XHJcblxyXG4gICZfZml4ZWQge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgbWF4LWhlaWdodDogMTAwJTtcclxuICB9XHJcblxyXG4gICZfaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAmX2ZvbGRlZCB7XHJcbiAgICB3aWR0aDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcbiIsIi8qKlxyXG4gKiBlbGxpcHNpcy5sZXNzIC0g5paH5pys55yB55WlIG1peGlueCDlh73mlbBcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXHJcbiAqIFVwZGF0ZTogMjAyMi4zLjExXHJcbiAqL1xyXG5cclxuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cclxuLmVsbGlwc2lzIChAbGluZXMpIHdoZW4gKEBsaW5lcz0xKSB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uZWxsaXBzaXMgKEBsaW5lcykgd2hlbiAoQGxpbmVzPj0yKSB7XHJcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiBAbGluZXM7XHJcbiAgZGlzcGxheTogYm94O1xyXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdtaXhpbnMnO1xyXG5cclxuLm91dGxpbmUtcmVhZGVyIHtcclxuICAmX19jbG9zZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgICBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYUhlaSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgJi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICAgJi53cmFwcGVyIHtcclxuICAgICAgICAmLnBvc3Qge1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYtLXJlYWRpbmcge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIHBhZGRpbmc6IDNlbSA0ZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICBzY3JvbGwtdGltZWxpbmUtbmFtZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xyXG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcclxuXHJcbiAgICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgICAmX19wcm9ncmVzcyB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDM7XHJcbiAgICAgICAgaGVpZ2h0OiA0cHg7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICAgICAgc2NhbGU6IDAgMTtcclxuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xyXG4gICAgICAgIGFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xyXG4gICAgICAgIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19jbG9zZSB7XHJcbiAgICAgICAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHotaW5kZXg6IDM7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgcmlnaHQ6IDIycHg7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDAgOHB4IEBzZWNvbmRhcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaDEsXHJcbiAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuM2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMy41ZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xyXG4gIHRvIHtcclxuICAgIHNjYWxlOiAxIDE7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgJi0tcmVhZGluZyB7XHJcbiAgICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xyXG4gICAgfVxyXG5cclxuICAgICZfX2Nsb3NlIHtcclxuICAgICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcclxuICAgICAgb3BhY2l0eTogMC44O1xyXG4gICAgfVxyXG5cclxuICAgICZfX3RpdGxlIHtcclxuICAgICAgZm9udC1zaXplOiAyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgcHJpbnQge1xyXG4gIGh0bWwsXHJcbiAgYm9keSB7XHJcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5vdXRsaW5lLXJlYWRlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICBoMSxcclxuICAgICZfX3RpdGxlIHtcclxuICAgICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAmLm91dGxpbmUtcmVhZGVyIHtcclxuICAgICAgJi0tcmVhZGluZyB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaDEsXHJcbiAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICBtYXJnaW46IDEzLjRwdCAwIDI4cHQgIWltcG9ydGFudDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICAgICAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fY2xvc2UsXHJcbiAgICAgICZfX3Byb2dyZXNzIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcmUge1xyXG4gICAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgQGJvcmRlcl9jb2xvciAhaW1wb3J0YW50O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICBwcmUsXHJcbiAgICBjb2RlIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGFibGUsXHJcbiAgICBpbWcsXHJcbiAgICBzdmcge1xyXG4gICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xyXG4gICAgfVxyXG5cclxuICAgICZfc2libGluZyB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PSBidXR0b25zLnRoZW1lIC0g5oyJ6ZKu5a+86Iiq5qC35byPID09PT09PT09PT0gKi9cclxuQGltcG9ydCAnY29sb3JzJztcclxuQGltcG9ydCAnc2hhZG93JztcclxuXHJcbi5vdXRsaW5lLXRvb2xiYXIge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB6LWluZGV4OiA5OTk5OTtcclxuICBtYXJnaW46IDA7XHJcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19idXR0b24ge1xyXG4gICAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgbWFyZ2luOiAxMHB4O1xyXG4gICAgd2lkdGg6IDM2cHg7XHJcbiAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgYm9yZGVyLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICAmLmhpZGUge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fYW5jaG9yIHtcclxuICAgICY6bGluayxcclxuICAgICY6dmlzaXRlZCxcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2ljb24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIGZpbGw6IGN1cnJlbnRjb2xvcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2FjdGl2ZSB7XHJcbiAgICAmLm91dGxpbmUtdG9vbGJhciB7XHJcbiAgICAgICZfX2J1dHRvbiB7XHJcbiAgICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgICBib3JkZXItY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGNvbG9yOiBAd2hpdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yIHtcclxuICAgICAgJjpsaW5rLFxyXG4gICAgICAmOnZpc2l0ZWQsXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGNvbG9yOiBAd2hpdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcm91bmRlZCB7XHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZGlzYWJsZWQge1xyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXIsXHJcbiAgICAub3V0bGluZS10b29sYmFyIHtcclxuICAgICAgJl9fYW5jaG9yOmxpbmssXHJcbiAgICAgICZfX2FuY2hvcjp2aXNpdGVkLFxyXG4gICAgICAmX19hbmNob3I6aG92ZXIsXHJcbiAgICAgICZfX2J1dHRvbiB7XHJcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfX2J1dHRvbiB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGRpc2FibGVkX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3R0YixcclxuICAmX2J0dCB7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcblxyXG4gICAgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIge1xyXG4gICAgdG9wOiAxMnB4O1xyXG5cclxuICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgIHRvcDogLTU2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2J0dCB7XHJcbiAgICBib3R0b206IDEycHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgYm90dG9tOiAtNTZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcnRsLFxyXG4gICZfbHRyIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgIHdpZHRoOiA1NnB4O1xyXG4gIH1cclxuXHJcbiAgJl9ydGwge1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICByaWdodDogMTJweDtcclxuXHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICByaWdodDogLTg2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2x0ciB7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIGxlZnQ6IDEycHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgbGVmdDogLTg2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3R0YixcclxuICAmX3J0bCxcclxuICAmX2J0dCxcclxuICAmX2x0ciB7XHJcbiAgICAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xyXG4gICAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCAnLi9jb2xvcnMnO1xyXG5AaW1wb3J0ICcuL2ZvbnQnO1xyXG5AaW1wb3J0ICcuL21peGlucyc7XHJcbkBpbXBvcnQgJy4vaWNvbnMnO1xyXG5cclxuLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgLnJhZGl1c19zbWFsbCgpO1xyXG4gIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB6LWluZGV4OiA5OTk5O1xyXG4gIG9wYWNpdHk6IDAuMTtcclxuICB0b3A6IC01MHB4O1xyXG4gIGxlZnQ6IDUwJTtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDAgNTBweDtcclxuICBsaW5lLWhlaWdodDogNDBweDtcclxuICBmb250LXNpemU6IEBmb250X3NpemVfc21hbGw7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gIGNvbG9yOiBAdGhpcmRfdGV4dF9jb2xvcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fY29udGVudCB7XHJcbiAgICAuZWxsaXBzaXMoMSk7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBtYXgtd2lkdGg6IDcwMHB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fY2xvc2UsXHJcbiAgJl9faWNvbiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgd2lkdGg6IDQwcHg7XHJcbiAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19pY29uIHtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBjb2xvcjogQHdoaXRlO1xyXG5cclxuICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fY2xvc2Uge1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG5cclxuICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2luZm8ge1xyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl93YXJuaW5nIHtcclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2FybmluZ19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfc3VjY2VzcyB7XHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2Vycm9yIHtcclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZGFuZ2VyX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9wbGFpbiB7XHJcbiAgICBtaW4td2lkdGg6IDE5MHB4O1xyXG4gICAgcGFkZGluZzogMCA1MHB4IDAgMTVweDtcclxuXHJcbiAgICAmLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgICAgICZfaW5mbyB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAcHJpbWFyeV9jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaW5mb190aXBfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfd2FybmluZyB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAd2FybmluZ19jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2FybmluZ190aXBfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc3VjY2VzcyB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAc3VjY2Vzc190aXBfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfZXJyb3Ige1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQGRhbmdlcl9jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZGFuZ2VyX3RpcF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICB3aWR0aDogMDtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfbGlnaHQge1xyXG4gICAgbWluLXdpZHRoOiAxODBweDtcclxuICAgIHBhZGRpbmc6IDAgNDBweDtcclxuXHJcbiAgICAmLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgICAgICZfaW5mbyB7XHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICBjb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3dhcm5pbmcge1xyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgY29sb3I6IEB3YXJuaW5nX2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zdWNjZXNzIHtcclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfZXJyb3Ige1xyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgY29sb3I6IEBkYW5nZXJfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcm91bmQge1xyXG4gICAgLnJhZGl1cygyMHB4KTtcclxuXHJcbiAgICAmLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgICAgICZfZGVmYXVsdCB7XHJcbiAgICAgICAgbWluLXdpZHRoOiAxODBweDtcclxuICAgICAgICBwYWRkaW5nOiAwIDQwcHg7XHJcblxyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgLnJhZGl1cygxMHB4KTtcclxuICAgICAgICAgIHRvcDogMTBweDtcclxuICAgICAgICAgIGxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IDIwMHB4O1xyXG4gICAgICAgICAgcGFkZGluZzogMCAyMHB4IDAgNDBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcGxhaW4ge1xyXG4gICAgICAgIG1pbi13aWR0aDogMTk1cHg7XHJcbiAgICAgICAgcGFkZGluZzogMCA0MHB4IDAgMjBweDtcclxuXHJcbiAgICAgICAgJi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IDIxNXB4O1xyXG4gICAgICAgICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9mdWxsLXdpZHRoIHtcclxuICAgIG1pbi13aWR0aDogMjAwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDEwcHggMCA1MHB4O1xyXG5cclxuICAgICYub3V0bGluZS1tZXNzYWdlIHtcclxuICAgICAgJl9wbGFpbiB7XHJcbiAgICAgICAgbWluLXdpZHRoOiAyMzBweDtcclxuICAgICAgICBwYWRkaW5nOiAwIDEwcHggMCAxNXB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xpZ2h0IHtcclxuICAgICAgICBtaW4td2lkdGg6IDIxMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweCAwIDQwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdmlzaWJsZSB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gIH1cclxuXHJcbiAgJl9oaWRkZW4ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuIiwiLyoqXHJcbiAqIG1peGlucy5sZXNzIC0g5bel5YW35Ye95pWwXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xyXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxyXG4gKi9cclxuQGltcG9ydCAnLi9jb2xvcnMnO1xyXG5cclxuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cclxuLmVsbGlwc2lzIChAbGluZXMpIHdoZW4gKEBsaW5lcz0xKSB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uZWxsaXBzaXMgKEBsaW5lcykgd2hlbiAoQGxpbmVzPj0yKSB7XHJcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiBAbGluZXM7XHJcbiAgZGlzcGxheTogYm94O1xyXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLyogPT09PT09IOWchuinkuagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cclxuLnJhZGl1cyhAbnVtOiAycHgpIHtcclxuICBib3JkZXItcmFkaXVzOiBAbnVtO1xyXG59XHJcblxyXG4ucmFkaXVzX25vbmUoKSB7XHJcbiAgLnJhZGl1cygwKTtcclxufVxyXG5cclxuLnJhZGl1c19taW5pKCkge1xyXG4gIC5yYWRpdXMoMnB4KTtcclxufVxyXG5cclxuLnJhZGl1c19zbWFsbCgpIHtcclxuICAucmFkaXVzKDNweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfcmVndWxhcigpIHtcclxuICAucmFkaXVzKDRweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfbWVkaXVtKCkge1xyXG4gIC5yYWRpdXMoNXB4KTtcclxufVxyXG5cclxuLnJhZGl1c19sYXJnZSgpIHtcclxuICAucmFkaXVzKDEwcHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX2h1Z2UoKSB7XHJcbiAgLnJhZGl1cygxNnB4KTtcclxufVxyXG5cclxuLnJhZGl1c19yb3VuZCgpIHtcclxuICAucmFkaXVzKDMwcHgpO1xyXG59XHJcblxyXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xyXG4uc2hhZG93KEBvZmZzZXQ6IDAgMCA2cHggMXB4LCBAY29sb3I6IEBwcmltYXJ5X2JvcmRlcl9jb2xvcikge1xyXG4gIGJveC1zaGFkb3c6IEBvZmZzZXQgQGNvbG9yO1xyXG59XHJcblxyXG4uc2hhZG93X3JlZ3VsYXIoQGNvbG9yOiBAcHJpbWFyeV9ib3JkZXJfY29sb3IpIHtcclxuICAuc2hhZG93KDAgMCA2cHggMXB4LCBAY29sb3IpO1xyXG59XHJcblxyXG4uc2hhZG93X2xhcmdlKEBjb2xvcjogQHByaW1hcnlfYm9yZGVyX2NvbG9yKSB7XHJcbiAgLnNoYWRvdygwIDAgMTJweCAxcHgsIEBjb2xvcik7XHJcbn1cclxuXHJcbi5zaGFkb3dfbGlnaHRfcmVndWxhcigpIHtcclxuICAuc2hhZG93X3JlZ3VsYXIoKTtcclxufVxyXG5cclxuLnNoYWRvd19saWdodF9sYXJnZSgpIHtcclxuICAuc2hhZG93X2xhcmdlKCk7XHJcbn1cclxuXHJcbi5zaGFkb3dfZGFya19yZWd1bGFyKCkge1xyXG4gIC5zaGFkb3dfcmVndWxhcihAc2Vjb25kYXJ5X2JvcmRlcl9jb2xvcik7XHJcbn1cclxuIiwiLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIHdpZHRoOiA3cHg7XHJcbiAgaGVpZ2h0OiA3cHg7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcblxyXG4gICYtdHJhY2stcGllY2Uge1xyXG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgfVxyXG5cclxuICAmLXRodW1iIHtcclxuICAgICY6dmVydGljYWwge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvcml6b250YWwge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICB9XHJcbn1cclxuIl19 */ +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLzxpbnB1dCBjc3MgMj4iLCJzY3JvbGxiYXIubGVzcyIsInNlY3Rpb24ubGVzcyIsImNhc2UubGVzcyIsInBhZ2VyLmxlc3MiLCIuLi8uLi90aGVtZS9zaGFkb3cubGVzcyIsIi4uLy4uL3RoZW1lL3ZhcmlhYmxlcy5sZXNzIiwiLi4vLi4vdGhlbWUvaWNvbnMubGVzcyIsIi4uLy4uL3RoZW1lL2FuY2hvcnMubGVzcyIsIi4uLy4uL3RoZW1lL2RyYXdlci5sZXNzIiwiLi4vLi4vdGhlbWUvY2hhcHRlcnMubGVzcyIsIi4uLy4uL3RoZW1lL2VsbGlwc2lzLmxlc3MiLCIuLi8uLi90aGVtZS9yZWFkZXIubGVzcyIsIi4uLy4uL3RoZW1lL3Rvb2xiYXIubGVzcyIsIi4uLy4uL3RoZW1lL21lc3NhZ2UubGVzcyIsIi4uLy4uL3RoZW1lL21peGlucy5sZXNzIiwiLi4vLi4vdGhlbWUvc2Nyb2xsYmFyLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkJBQTJCO0FDQzNCO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSwyQkFBQTtDRENEO0FDRUQ7RUFDRSwyQkFBQTtDREFEO0FDR0Q7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NEREQ7QUNJRDtFQUNFLHNDQUFBO0VBQ0EsMkJBQUE7Q0RGRDtBQ0tEO0VBQ0Usc0NBQUE7Q0RIRDtBQ01EO0VBQ0Usc0NBQUE7Q0RKRDtBRXBCRDtFQUNFLGNBQUE7RUFDQSxpQkFBQTtDRnNCRDtBRXBCQzs7O0VBR0UsVUFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtDRnNCSDtBRW5CQztFQUNFLFlBQUE7Q0ZxQkg7QUVsQkM7RUFDRSxlQUFBO0VBQ0Esa0JBQUE7Q0ZvQkg7QUVqQkM7RUFDRSxpQkFBQTtFQUNBLFlBQUE7Q0ZtQkg7QUVoQkM7RUFDRSxlQUFBO0VBQ0EsWUFBQTtDRmtCSDtBRWZDOzs7RUFHRSxVQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0NGaUJIO0FFZEM7RUFDRSxtQkFBQTtFQUNBLFdBQUE7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QSxhQUFBO0VBQ0Esa0JBQUE7Q2Rra0NUO0FjL2pDTztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2Rpa0NUO0FjN2pDSztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2QrakNQO0FjN2pDTztFQUNFLGlCQUFBO0VBQ0EsZ0JBQUE7Q2QrakNUO0FjempDQztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2QyakNIO0FjeGpDSztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2QwakNQO0FjdmpDSztFQUNFLGlCQUFBO0VBQ0EsdUJBQUE7Q2R5akNQO0FjcGpDQztFQUNFLFdBQUE7Q2RzakNIO0FjbmpDQztFQUNFLGNBQUE7Q2RxakNIO0FBQ0QsMkJBQTJCO0FnQjN4QzNCO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSwyQkFBQTtDaEI2eENEO0FnQjN4Q0M7RUFDRSwyQkFBQTtDaEI2eENIO0FnQnp4Q0c7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NoQjJ4Q0w7QWdCeHhDRztFQUNFLHNDQUFBO0VBQ0EsMkJBQUE7Q2hCMHhDTDtBZ0J2eENHO0VBQ0Usc0NBQUE7Q2hCeXhDTDtBZ0JyeENDO0VBQ0Usc0NBQUE7Q2hCdXhDSCIsImZpbGUiOiJleGFtcGxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA3cHg7XG4gIGhlaWdodDogN3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbi5zZWN0aW9uIHtcbiAgbWFyZ2luOiAxZW0gMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zZWN0aW9uX19oZWFkZXIsXG4uc2VjdGlvbl9fY29udGVudCxcbi5zZWN0aW9uX19mb290ZXIge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAgM2VtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX3RpdGxlIHtcbiAgY29sb3I6ICM2NjY7XG59XG4uc2VjdGlvbl9faDMge1xuICBjb2xvcjogIzUwN2FmZTtcbiAgZm9udC1zaXplOiAxLjM1ZW07XG59XG4uc2VjdGlvbl9faDQge1xuICBmb250LXNpemU6IDEuMWVtO1xuICBjb2xvcjogIzY2Njtcbn1cbi5zZWN0aW9uX19oNSB7XG4gIGZvbnQtc2l6ZTogMWVtO1xuICBjb2xvcjogIzk5OTtcbn1cbi5zZWN0aW9uX19kbCxcbi5zZWN0aW9uX19kdCxcbi5zZWN0aW9uX19kZCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zZWN0aW9uX19kbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cbi5zZWN0aW9uX19kdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5zZWN0aW9uX19kZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4uc2VjdGlvbl9fcHJlIHtcbiAgbWFyZ2luOiAyZW0gMDtcbiAgcGFkZGluZzogMWVtO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNTAlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGNvbG9yOiAjNjY2O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5zZWN0aW9uX19jb2RlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2Zvb3RlciB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBtYXJnaW4tdG9wOiAzZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGNvbG9yOiAjOTk5O1xufVxuLnNlY3Rpb25fX3RhYmxlIHtcbiAgbWFyZ2luOiAxZW0gYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb25fX3RoLFxuLnNlY3Rpb25fX3RkIHtcbiAgcGFkZGluZzogNXB4IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbn1cbi5zZWN0aW9uX190aCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAuc2VjdGlvbl9faGVhZGVyLFxuICAuc2VjdGlvbl9fY29udGVudCB7XG4gICAgcGFkZGluZzogMCAxZW07XG4gIH1cbn1cbi5jYXNlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICBnYXA6IDQwcHg7XG4gIHBhZGRpbmc6IDFlbTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNhc2U6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDUwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGRkO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNhc2VfX3ByZSxcbi5jYXNlX190ZXh0YXJlYSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG59XG4uY2FzZV9fcHJlLFxuLmNhc2VfX2NvZGUsXG4uY2FzZV9fdGV4dGFyZWEge1xuICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQ29uc29sYXMsIEdlb3JnaWEsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuLmNhc2VfX3ByZSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uY2FzZV9fdG9vbGJhciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fYWN0aW9uLFxuLmNhc2VfX3JlbW92ZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmNhc2VfX2FjdGlvbiB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuLmNhc2VfX2FjdGlvbjpmaXJzdC1jaGlsZCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbn1cbi5jYXNlX19yZW1vdmUge1xuICBmbG9hdDogcmlnaHQ7XG59XG4uY2FzZV9fY29uc29sZSB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDE4MHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNhc2VfX3RleHRhcmVhIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogMWVtO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jYXNlX19saXN0LFxuLmNhc2VfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX19saXN0IHtcbiAgaGVpZ2h0OiAzNjBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLmNhc2VfX2l0ZW0ge1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDAgMTZweDtcbn1cbi5jYXNlX19pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbn1cbi8qKlxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi5wYXBlciB7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIG1hcmdpbjogM2VtIGF1dG87XG4gIG1heC13aWR0aDogMTIwMHB4O1xuICBwYWRkaW5nOiAyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ucGFwZXIuZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5wYXBlci5mbGV4IC5hcnRpY2xlIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ucGFwZXIuZmxleCAuYXJ0aWNsZV9fbWFpbiB7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ucGFwZXIuZmxleCAuYXJ0aWNsZV9fYXNpZGUge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLmhlYWRlciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHotaW5kZXg6IDM7XG4gIHRvcDogMDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uaGVhZGVyX3N0aWNreSB7XG4gIHBhZGRpbmctbGVmdDogMjYwcHg7XG59XG4uYXJ0aWNsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBwYWRkaW5nOiAyZW0gMDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbn1cbi5hcnRpY2xlX19tYWluIHtcbiAgZmxleDogMTtcbiAgcGFkZGluZzogMCAyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbiB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLmFydGljbGVfX21haW4gLnNlY3Rpb25fX2NvbnRlbnQsXG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbl9fZm9vdGVyLFxuLmFydGljbGVfX21haW4gLnNlY3Rpb25fX2hlYWRlciB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLmFydGljbGVfX21haW4gLnNlY3Rpb25fX2hlYWRlcixcbi5hcnRpY2xlX19tYWluIC5zZWN0aW9uX19jb250ZW50IHtcbiAgbWFyZ2luOiAwO1xufVxuLmFydGljbGVfX2FzaWRlIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHdpZHRoOiAyNDBweDtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGRkO1xufVxuLmFydGljbGVfX2FzaWRlLmx0ciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1sZWZ0OiBub25lO1xufVxuLmFydGljbGVfX2FzaWRlIC5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbnByZSxcbi5zZWN0aW9uX19wcmUge1xuICBwYWRkaW5nOiAyZW07XG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5jb2RlLFxuLnNlY3Rpb25fX2NvZGUge1xuICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5mb290ZXIge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGZlNjtcbiAgcGFkZGluZzogM2VtIDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5mb290ZXIgYTpsaW5rLFxuLmZvb3RlciBhOnZpc2l0ZWQsXG4uZm9vdGVyIGE6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLmZvb3RlciBhOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4udXRpbHMtYm9yZGVyLXJpZ2h0IHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICAucGFwZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIC5hcnRpY2xlX19tYWluIHtcbiAgICBwYWRkaW5nOiAwIDJlbTtcbiAgfVxufVxuOnJvb3Qge1xuICAtLW91dGxpbmUtekluZGV4OiAyMDAwO1xuICAtLW91dGxpbmUtc3RpY2t5LWhlaWdodDogMTAwJTtcbiAgLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoOiAxMDAlO1xufVxuLyogPT09PT09PT09PSBjb2xvcnMudGhlbWUgLSDln7rnoYDpopzoibLlj5jph4/pm4blkIggPT09PT09PT09PSAqL1xuLyoqXG4gKiBlbGxpcHNpcy5sZXNzIC0g5paH5pys55yB55WlIG1peGlueCDlh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKipcbiAqIHNoYWRvdy5sZXNzIC0g6Zi05b2x5qC35byP6K6+572uIG1peGlueCDlh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjIwXG4gKi9cbi8qID09PT09PSDpmLTlvbHmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXG4vKiA9PT09PT09PT09IGljb24udGhlbWUgLSBzdmcg5Zu+5qCH55qE5qC35byPID09PT09PT09PT0gKi9cbi5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1pY29uX19zdmcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBmaWxsOiBjdXJyZW50Y29sb3I7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtaGVhZGluZzpob3ZlciAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0OmhvdmVyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0IC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgbGVmdDogLTFlbTtcbn1cbi5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogLTE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX21vZGFsIHtcbiAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjE7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40cztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9faGVhZGVyLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICB3aWR0aDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9faGVhZGVyLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBmbGV4LXNocmluazogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUsXG4ub3V0bGluZS1kcmF3ZXJfX21haW4sXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIHBhZGRpbmc6IDAgMTZweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9faGVhZGVyLFxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogNTJweDtcbiAgbGluZS1oZWlnaHQ6IDUycHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBtYXJnaW46IDAgMTZweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDEycHg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzk5OTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZSAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG4ub3V0bGluZS1kcmF3ZXJfX21haW4ge1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19vdmVybGF5IHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvcGFjaXR5OiAwLjE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICB3aWR0aDogMjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21pbmkge1xuICB3aWR0aDogNDgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3NtYWxsLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9zbWFsbCB7XG4gIHdpZHRoOiA1NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIHdpZHRoOiA2ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICB3aWR0aDogNzIwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX2xhcmdlLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9sYXJnZSB7XG4gIHdpZHRoOiA5NjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTczMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTI5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC02OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yixcbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueSB7XG4gIGhlaWdodDogMjQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21pbmkge1xuICBoZWlnaHQ6IDMyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICBoZWlnaHQ6IDM2MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyIHtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICBoZWlnaHQ6IDQ0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICBoZWlnaHQ6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB0b3A6IGluaXRpYWw7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3J0bCB7XG4gIHJpZ2h0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBsZWZ0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl90dGIge1xuICB0b3A6IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIGJvdHRvbTogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfcnRsLFxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xufVxuLm91dGxpbmUtZHJhd2VyX2Z1bGwge1xuICBwYWRkaW5nOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IHZhcigtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGgpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzLXBhcmVudCB7XG4gIHRyYW5zaXRpb246IDAuM3MgZWFzZS1pbi1vdXQ7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fdGl0bGUge1xuICBtYXJnaW46IDAgMTZweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0LFxuLm91dGxpbmUtY2hhcHRlcnNfX3N1YmplY3QsXG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbGlzdCB7XG4gIHBhZGRpbmc6IDAuNWVtIDA7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCB7XG4gIHBhZGRpbmctbGVmdDogMWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fcGxhY2Vob2xkZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDU4OTQyO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvciB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMCAxLjVlbTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjNTU1O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2NvZGUge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVlbTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZ2hsaWdodC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZ2hsaWdodC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZ2hsaWdodC5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3ksXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG4gIHRvcDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX21haW4sXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX21haW4sXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZvbGRlZCB7XG4gIHdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcud3JhcHBlci5wb3N0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAzZW0gNGVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBzY3JvbGwtdGltZWxpbmUtbmFtZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xuICBvdmVyZmxvdzogc2Nyb2xsO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fcHJvZ3Jlc3Mge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMztcbiAgaGVpZ2h0OiA0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTA3YWZlO1xuICBzY2FsZTogMCAxO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICBhbmltYXRpb246IG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIGxpbmVhcjtcbiAgYW5pbWF0aW9uLXRpbWVsaW5lOiAtLVByb2dyZXNzVGltZWxpbmU7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDM7XG4gIHRvcDogNTAlO1xuICByaWdodDogMjJweDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogMCAwIDhweCAjZGRkO1xuICBjb2xvcjogIzk5OTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX2Nsb3NlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyIGgxLFxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjNlbTtcbiAgZm9udC1zaXplOiAzLjVlbTtcbn1cbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xuICB0byB7XG4gICAgc2NhbGU6IDEgMTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcGFkZGluZzogMCAxLjI1ZW07XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gIH1cbn1cbkBtZWRpYSBwcmludCB7XG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLW1lc3NhZ2UsXG4gIC5vdXRsaW5lLXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fY2xvc2UsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fcHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlIHtcbiAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHByZSxcbiAgLm91dGxpbmUtcmVhZGVyIGNvZGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgdGFibGUsXG4gIC5vdXRsaW5lLXJlYWRlciBpbWcsXG4gIC5vdXRsaW5lLXJlYWRlciBzdmcge1xuICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLyogPT09PT09PT09PSBidXR0b25zLnRoZW1lIC0g5oyJ6ZKu5a+86Iiq5qC35byPID09PT09PT09PT0gKi9cbi5vdXRsaW5lLXRvb2xiYXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk5O1xuICBtYXJnaW46IDA7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMTBweDtcbiAgd2lkdGg6IDM2cHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGZlNjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM5OTk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBmaWxsOiBjdXJyZW50Y29sb3I7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZS5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBib3JkZXItY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZS5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtdG9vbGJhcl9yb3VuZGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgY29sb3I6ICM5OTk7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbms6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG4ub3V0bGluZS10b29sYmFyX3R0Yixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IHtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiAub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2J0dCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiB7XG4gIHRvcDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICB0b3A6IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBib3R0b206IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dC5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgYm90dG9tOiAtNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiA1NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwge1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bC5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgcmlnaHQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIge1xuICB0b3A6IDUwJTtcbiAgbGVmdDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfbHRyLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBsZWZ0OiAtODZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9ydGwgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX2J0dCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfbHRyIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qKlxuICogZm9udC5sZXNzIC0g5a2X5L2T55u45YWz5qC35byPXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xNlxuICovXG4vKiA9PT09PT0g5a2X5L2TID09PT09PSAqL1xuLyogPT09PT09IOWtl+mHjSA9PT09PT0gKi9cbi8qID09PT09PSDlrZflj7cgPT09PT09ICovXG4ub3V0bGluZS1tZXNzYWdlIHtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk7XG4gIG9wYWNpdHk6IDAuMTtcbiAgdG9wOiAtNTBweDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCA1MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb2xvcjogIzY2NjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2NvbnRlbnQge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWFyZ2luOiAwO1xuICBtYXgtd2lkdGg6IDcwMHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGNvbG9yOiAjNjY2O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UsXG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgbGVmdDogMDtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2Uge1xuICByaWdodDogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjVkNWQ7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTBweDtcbiAgcGFkZGluZzogMCA1MHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2luZm8ge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICM1MDdhZmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2Y4ZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY5OTAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmYmU2O1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzA1ODk0MjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZjZlYjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY1ZDVkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMWYwO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgd2lkdGg6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0IHtcbiAgbWluLXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHRvcDogMTBweDtcbiAgbGVmdDogMTBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0Lm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAyMHB4IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTVweDtcbiAgcGFkZGluZzogMCA0MHB4IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMTVweDtcbiAgcGFkZGluZzogMCAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgNTBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDIzMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCAxNXB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMjEwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3Zpc2libGUge1xuICBvcGFjaXR5OiAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDdweDtcbiAgaGVpZ2h0OiA3cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuIiwiLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIHdpZHRoOiA3cHg7XHJcbiAgaGVpZ2h0OiA3cHg7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbn1cclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuXHJcbi5zZWN0aW9uIHtcclxuICBtYXJnaW46IDFlbSAwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX19jb250ZW50LFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwIDNlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19oMyB7XHJcbiAgICBjb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICBmb250LXNpemU6IDEuMzVlbTtcclxuICB9XHJcblxyXG4gICZfX2g0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4xZW07XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19oNSB7XHJcbiAgICBmb250LXNpemU6IDFlbTtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19kbCxcclxuICAmX19kdCxcclxuICAmX19kZCB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2RsIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgfVxyXG5cclxuICAmX19kdCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG5cclxuICAmX19kZCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX19wcmUge1xyXG4gICAgbWFyZ2luOiAyZW0gMDtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxNTAlO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBiZ19jb2xvcjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcblxyXG4gICZfX2NvZGUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXIge1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBtYXJnaW4tdG9wOiAzZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gIH1cclxuXHJcbiAgJl9fdGFibGUge1xyXG4gICAgbWFyZ2luOiAxZW0gYXV0bztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX190aCxcclxuICAmX190ZCB7XHJcbiAgICBwYWRkaW5nOiA1cHggMTZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyNnB4O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgfVxyXG5cclxuICAmX190aCB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAuc2VjdGlvbiB7XHJcbiAgICAmX19oZWFkZXIsXHJcbiAgICAmX19jb250ZW50IHtcclxuICAgICAgcGFkZGluZzogMCAxZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJy4vY29sb3JzJztcclxuXHJcbi5jYXNlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBkaXNwbGF5OiBncmlkO1xyXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcbiAgZ2FwOiA0MHB4O1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX3ByZSxcclxuICAmX190ZXh0YXJlYSB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTUwJTtcclxuICB9XHJcblxyXG4gICZfX3ByZSxcclxuICAmX19jb2RlLFxyXG4gICZfX3RleHRhcmVhIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgfVxyXG5cclxuICAmX19wcmUge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQGJnX2NvbG9yO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9fdG9vbGJhciB7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fYWN0aW9uLFxyXG4gICZfX3JlbW92ZSB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcclxuICB9XHJcblxyXG4gICZfX2FjdGlvbiB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX3JlbW92ZSB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgfVxyXG5cclxuICAmX19jb25zb2xlIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgaGVpZ2h0OiAxODBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fdGV4dGFyZWEge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19saXN0LFxyXG4gICZfX2l0ZW0ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19saXN0IHtcclxuICAgIGhlaWdodDogMzYwcHg7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQGJvcmRlcl9jb2xvcjtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19pdGVtIHtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaG92ZXJfYmdfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJy4uLy4uL3RoZW1lL21peGlucyc7XHJcblxyXG4ucGFwZXIge1xyXG4gIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gIG1hcmdpbjogM2VtIGF1dG87XHJcbiAgbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiAgcGFkZGluZzogMmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cclxuICAmLmZsZXgge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgLmFydGljbGUge1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHJcbiAgICAgICZfX21haW4ge1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19hc2lkZSB7XHJcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uaGVhZGVyIHtcclxuICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gIHotaW5kZXg6IDM7XHJcbiAgdG9wOiAwO1xyXG4gIG1hcmdpbjogMCBhdXRvO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX3N0aWNreSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDI2MHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmFydGljbGUge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICBwYWRkaW5nOiAyZW0gMDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XHJcblxyXG4gICZfX21haW4ge1xyXG4gICAgZmxleDogMTtcclxuICAgIHBhZGRpbmc6IDAgMmVtO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAuc2VjdGlvbiB7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG5cclxuICAgICAgJl9fY29udGVudCxcclxuICAgICAgJl9fZm9vdGVyLFxyXG4gICAgICAmX19oZWFkZXIge1xyXG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19oZWFkZXIsXHJcbiAgICAgICZfX2NvbnRlbnQge1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fYXNpZGUge1xyXG4gICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICB3aWR0aDogMjQwcHg7XHJcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIEBib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5sdHIge1xyXG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBAYm9yZGVyX2NvbG9yO1xyXG4gICAgICBib3JkZXItbGVmdDogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1jaGFwdGVycyB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbnByZSxcclxuLnNlY3Rpb25fX3ByZSB7XHJcbiAgcGFkZGluZzogMmVtO1xyXG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmdfY29sb3I7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcbn1cclxuXHJcbmNvZGUsXHJcbi5zZWN0aW9uX19jb2RlIHtcclxuICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG59XHJcblxyXG4uZm9vdGVyIHtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gIHBhZGRpbmc6IDNlbSAwO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgYSB7XHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnV0aWxzLWJvcmRlci1yaWdodCB7XHJcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG59XHJcblxyXG4uaGlkZGVuIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICBodG1sLFxyXG4gIGJvZHkge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxuXHJcbiAgLnBhcGVyIHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgfVxyXG5cclxuICAuYXJ0aWNsZV9fbWFpbiB7XHJcbiAgICBwYWRkaW5nOiAwIDJlbTtcclxuICB9XHJcbn1cclxuIiwiLyoqXHJcbiAqIHNoYWRvdy5sZXNzIC0g6Zi05b2x5qC35byP6K6+572uIG1peGlueCDlh73mlbBcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXHJcbiAqIFVwZGF0ZTogMjAyMi4zLjIwXHJcbiAqL1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cclxuLnNoYWRvdyhAb2Zmc2V0OiAwIDAgNnB4IDFweCwgQGNvbG9yOiBAcHJpbWFyeV9ib3JkZXJfY29sb3IpIHtcclxuICBib3gtc2hhZG93OiBAb2Zmc2V0IEBjb2xvcjtcclxufVxyXG5cclxuLnNoYWRvd19yZWd1bGFyKEBjb2xvcjogQHByaW1hcnlfYm9yZGVyX2NvbG9yKSB7XHJcbiAgLnNoYWRvdygwIDAgNnB4IDFweCwgQGNvbG9yKTtcclxufVxyXG5cclxuLnNoYWRvd19sYXJnZShAY29sb3I6IEBwcmltYXJ5X2JvcmRlcl9jb2xvcikge1xyXG4gIC5zaGFkb3coMCAwIDEycHggMXB4LCBAY29sb3IpO1xyXG59XHJcblxyXG4uc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKSB7XHJcbiAgLnNoYWRvd19yZWd1bGFyKCk7XHJcbn1cclxuXHJcbi5zaGFkb3dfbGlnaHRfbGFyZ2UoKSB7XHJcbiAgLnNoYWRvd19sYXJnZSgpO1xyXG59XHJcblxyXG4uc2hhZG93X2RhcmtfcmVndWxhcigpIHtcclxuICAuc2hhZG93X3JlZ3VsYXIoQHNlY29uZGFyeV9ib3JkZXJfY29sb3IpO1xyXG59XHJcblxyXG4uc2hhZG93X2RhcmtfbGFyZ2UoKSB7XHJcbiAgLnNoYWRvd19sYXJnZShAc2Vjb25kYXJ5X2JvcmRlcl9jb2xvcik7XHJcbn1cclxuIiwiOnJvb3Qge1xyXG4gIC0tb3V0bGluZS16SW5kZXg6IDIwMDA7XHJcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XHJcbiAgLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoOiAxMDAlO1xyXG59XHJcbiIsIi8qID09PT09PT09PT0gaWNvbi50aGVtZSAtIHN2ZyDlm77moIfnmoTmoLflvI8gPT09PT09PT09PSAqL1xyXG4ub3V0bGluZS1pY29uIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB3aWR0aDogMWVtO1xyXG4gIGhlaWdodDogMWVtO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX3N2ZyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB3aWR0aDogMWVtO1xyXG4gICAgaGVpZ2h0OiAxZW07XHJcbiAgICBmaWxsOiBjdXJyZW50Y29sb3I7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLm91dGxpbmUtaGVhZGluZyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fYW5jaG9yIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcblxyXG4gICAgJjpsaW5rLFxyXG4gICAgJjp2aXNpdGVkLFxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N0YXJ0IHtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgIGxlZnQ6IC0xZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XHJcbkBpbXBvcnQgJ2NvbG9ycyc7XHJcbkBpbXBvcnQgJ3NoYWRvdyc7XHJcblxyXG4ub3V0bGluZS1kcmF3ZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAtMTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICBtYXJnaW46IDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX21vZGFsIHtcclxuICAgIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDIxO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40cztcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19oZWFkZXIsXHJcbiAgJl9fbWFpbixcclxuICAmX19mb290ZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIH1cclxuXHJcbiAgJl9faGVhZGVyLFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBmbGV4LXNocmluazogMDtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlLFxyXG4gICZfX21haW4sXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIHBhZGRpbmc6IDAgMTZweDtcclxuICB9XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX190aXRsZSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDUycHg7XHJcbiAgICBsaW5lLWhlaWdodDogNTJweDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgbWFyZ2luOiAwIDE2cHg7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICB9XHJcblxyXG4gICZfX2Nsb3NlIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIHJpZ2h0OiAxMnB4O1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fbWFpbiB7XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19vdmVybGF5IHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIG9wYWNpdHk6IDAuMTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX3J0bCxcclxuICAmX2x0ciB7XHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICB3aWR0aDogMjgwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgd2lkdGg6IDQ4MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICB3aWR0aDogNTQwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgd2lkdGg6IDY4MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgd2lkdGg6IDcyMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICB3aWR0aDogOTYwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcnRsIHtcclxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtMjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTU1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTY5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtNzMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTk3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9sdHIge1xyXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC0yOTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTQ5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTU1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtNjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTczMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTk3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIsXHJcbiAgJl9idHQge1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgIGhlaWdodDogMjQwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgaGVpZ2h0OiAzMjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgaGVpZ2h0OiAzNjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICBoZWlnaHQ6IDQwMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgaGVpZ2h0OiA0NDBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgaGVpZ2h0OiA0ODBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC0yNTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtMzMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC0zNzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtNDEwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtNDUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC00OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfYnR0IHtcclxuICAgIHRvcDogaW5pdGlhbDtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtMjUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTMzMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtMzcwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTQxMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTQ1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX29wZW5lZCB7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcblxyXG4gICAgICAmX3J0bCB7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbHRyIHtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3R0YiB7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2J0dCB7XHJcbiAgICAgICAgYm90dG9tOiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX29mZnNldCB7XHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl9ydGwsXHJcbiAgICAgICZfbHRyIHtcclxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDRlbSk7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3R0YixcclxuICAgICAgJl9idHQge1xyXG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xyXG4gICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfb3BlbmVkIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgICAgICZfcnRsIHtcclxuICAgICAgICAgICAgcmlnaHQ6IDJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmX2x0ciB7XHJcbiAgICAgICAgICAgIGxlZnQ6IDJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmX3R0YiB7XHJcbiAgICAgICAgICAgIHRvcDogMmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICZfYnR0IHtcclxuICAgICAgICAgICAgYm90dG9tOiAyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2F1dG8ge1xyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfcnRsLFxyXG4gICAgICAmX2x0ciB7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZnVsbCB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICd2YXJpYWJsZXMnO1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdlbGxpcHNpcyc7XHJcblxyXG4ub3V0bGluZS1jaGFwdGVycyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHdpZHRoOiB2YXIoLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoKTtcclxuICBvdmVyZmxvdzogYXV0bztcclxuXHJcbiAgJi1wYXJlbnQge1xyXG4gICAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlIHtcclxuICAgIG1hcmdpbjogMCAxNnB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19tYWluIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fbGlzdCxcclxuICAmX19zdWJqZWN0LFxyXG4gICZfX2l0ZW0ge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fbGlzdCB7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAwO1xyXG4gIH1cclxuXHJcbiAgJl9fc3ViamVjdCB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcclxuICB9XHJcblxyXG4gICZfX2l0ZW0ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fcGxhY2Vob2xkZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMzBweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBob3Zlcl9iZ19jb2xvcjtcclxuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19hbmNob3Ige1xyXG4gICAgLmVsbGlwc2lzKDEpO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAwIDEuNWVtO1xyXG5cclxuICAgICY6bGluayxcclxuICAgICY6dmlzaXRlZCxcclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgIGNvbG9yOiBAc2Vjb25kYXJ5X3RleHRfY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2NvZGUge1xyXG4gICAgcGFkZGluZy1yaWdodDogMC41ZW07XHJcbiAgfVxyXG5cclxuICAmX2hpZ2hsaWdodCB7XHJcbiAgICAmLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvciB7XHJcbiAgICAgICY6bGluayxcclxuICAgICAgJjp2aXNpdGVkLFxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfc3RpY2t5LFxyXG4gICZfZml4ZWQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcclxuICAgIHRvcDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgLm91dGxpbmUtY2hhcHRlcnMge1xyXG4gICAgICAmX190aXRsZSxcclxuICAgICAgJl9fbWFpbiB7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fdGl0bGUge1xyXG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19tYWluIHtcclxuICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N0aWNreSB7XHJcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gICAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcclxuICB9XHJcblxyXG4gICZfZml4ZWQge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgbWF4LWhlaWdodDogMTAwJTtcclxuICB9XHJcblxyXG4gICZfaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAmX2ZvbGRlZCB7XHJcbiAgICB3aWR0aDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcbiIsIi8qKlxyXG4gKiBlbGxpcHNpcy5sZXNzIC0g5paH5pys55yB55WlIG1peGlueCDlh73mlbBcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXHJcbiAqIFVwZGF0ZTogMjAyMi4zLjExXHJcbiAqL1xyXG5cclxuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cclxuLmVsbGlwc2lzIChAbGluZXMpIHdoZW4gKEBsaW5lcz0xKSB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uZWxsaXBzaXMgKEBsaW5lcykgd2hlbiAoQGxpbmVzPj0yKSB7XHJcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiBAbGluZXM7XHJcbiAgZGlzcGxheTogYm94O1xyXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdtaXhpbnMnO1xyXG5cclxuLm91dGxpbmUtcmVhZGVyIHtcclxuICAmX19jbG9zZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgICBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYUhlaSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgJi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICAgJi53cmFwcGVyIHtcclxuICAgICAgICAmLnBvc3Qge1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYtLXJlYWRpbmcge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIHBhZGRpbmc6IDNlbSA0ZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICBzY3JvbGwtdGltZWxpbmUtbmFtZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xyXG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcclxuXHJcbiAgICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgICAmX19wcm9ncmVzcyB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDM7XHJcbiAgICAgICAgaGVpZ2h0OiA0cHg7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICAgICAgc2NhbGU6IDAgMTtcclxuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xyXG4gICAgICAgIGFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xyXG4gICAgICAgIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19jbG9zZSB7XHJcbiAgICAgICAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHotaW5kZXg6IDM7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgcmlnaHQ6IDIycHg7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDAgOHB4IEBzZWNvbmRhcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaDEsXHJcbiAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuM2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMy41ZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xyXG4gIHRvIHtcclxuICAgIHNjYWxlOiAxIDE7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgJi0tcmVhZGluZyB7XHJcbiAgICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xyXG4gICAgfVxyXG5cclxuICAgICZfX2Nsb3NlIHtcclxuICAgICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcclxuICAgICAgb3BhY2l0eTogMC44O1xyXG4gICAgfVxyXG5cclxuICAgICZfX3RpdGxlIHtcclxuICAgICAgZm9udC1zaXplOiAyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgcHJpbnQge1xyXG4gIGh0bWwsXHJcbiAgYm9keSB7XHJcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5vdXRsaW5lIHtcclxuICAgICYtbWVzc2FnZSxcclxuICAgICYtdG9vbGJhciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAmLXJlYWRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgICBoMSxcclxuICAgICAgJl9fdGl0bGUge1xyXG4gICAgICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLm91dGxpbmUtcmVhZGVyIHtcclxuICAgICAgICAmLS1yZWFkaW5nIHtcclxuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoMSxcclxuICAgICAgICAmX190aXRsZSB7XHJcbiAgICAgICAgICBtYXJnaW46IDEzLjRwdCAwIDI4cHQgIWltcG9ydGFudDtcclxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmX19jbG9zZSxcclxuICAgICAgICAmX19wcm9ncmVzcyB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBwcmUge1xyXG4gICAgICAgIHBhZGRpbmc6IDFlbSAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3IgIWltcG9ydGFudDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcHJlLFxyXG4gICAgICBjb2RlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGUgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGFibGUsXHJcbiAgICAgIGltZyxcclxuICAgICAgc3ZnIHtcclxuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NpYmxpbmcge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09IGJ1dHRvbnMudGhlbWUgLSDmjInpkq7lr7zoiKrmoLflvI8gPT09PT09PT09PSAqL1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdzaGFkb3cnO1xyXG5cclxuLm91dGxpbmUtdG9vbGJhciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDk5OTk5O1xyXG4gIG1hcmdpbjogMDtcclxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2J1dHRvbiB7XHJcbiAgICAuc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBtYXJnaW46IDEwcHg7XHJcbiAgICB3aWR0aDogMzZweDtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICBib3JkZXItY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgICYuaGlkZSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19hbmNob3Ige1xyXG4gICAgJjpsaW5rLFxyXG4gICAgJjp2aXNpdGVkLFxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9faWNvbiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgZmlsbDogY3VycmVudGNvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfYWN0aXZlIHtcclxuICAgICYub3V0bGluZS10b29sYmFyIHtcclxuICAgICAgJl9fYnV0dG9uIHtcclxuICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS10b29sYmFyX19hbmNob3Ige1xyXG4gICAgICAmOmxpbmssXHJcbiAgICAgICY6dmlzaXRlZCxcclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9yb3VuZGVkIHtcclxuICAgICYub3V0bGluZS10b29sYmFyX19idXR0b24ge1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9kaXNhYmxlZCB7XHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcixcclxuICAgIC5vdXRsaW5lLXRvb2xiYXIge1xyXG4gICAgICAmX19hbmNob3I6bGluayxcclxuICAgICAgJl9fYW5jaG9yOnZpc2l0ZWQsXHJcbiAgICAgICZfX2FuY2hvcjpob3ZlcixcclxuICAgICAgJl9fYnV0dG9uIHtcclxuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICAgIGJvcmRlci1jb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fYnV0dG9uIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZGlzYWJsZWRfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiLFxyXG4gICZfYnR0IHtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuXHJcbiAgICAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3R0YiB7XHJcbiAgICB0b3A6IDEycHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgdG9wOiAtNTZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfYnR0IHtcclxuICAgIGJvdHRvbTogMTJweDtcclxuXHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICBib3R0b206IC01NnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9ydGwsXHJcbiAgJl9sdHIge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgd2lkdGg6IDU2cHg7XHJcbiAgfVxyXG5cclxuICAmX3J0bCB7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIHJpZ2h0OiAxMnB4O1xyXG5cclxuICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgIHJpZ2h0OiAtODZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfbHRyIHtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgbGVmdDogMTJweDtcclxuXHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICBsZWZ0OiAtODZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiLFxyXG4gICZfcnRsLFxyXG4gICZfYnR0LFxyXG4gICZfbHRyIHtcclxuICAgIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XHJcbiAgICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICcuL2NvbG9ycyc7XHJcbkBpbXBvcnQgJy4vZm9udCc7XHJcbkBpbXBvcnQgJy4vbWl4aW5zJztcclxuQGltcG9ydCAnLi9pY29ucyc7XHJcblxyXG4ub3V0bGluZS1tZXNzYWdlIHtcclxuICAucmFkaXVzX3NtYWxsKCk7XHJcbiAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDk5OTk7XHJcbiAgb3BhY2l0eTogMC4xO1xyXG4gIHRvcDogLTUwcHg7XHJcbiAgbGVmdDogNTAlO1xyXG4gIGhlaWdodDogNDBweDtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMCA1MHB4O1xyXG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gIGZvbnQtc2l6ZTogQGZvbnRfc2l6ZV9zbWFsbDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2UtaW4tb3V0O1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19jb250ZW50IHtcclxuICAgIC5lbGxpcHNpcygxKTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIG1heC13aWR0aDogNzAwcHg7XHJcbiAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgIGZvbnQtc2l6ZTogMTNweDtcclxuICAgIGNvbG9yOiBAdGhpcmRfdGV4dF9jb2xvcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19jbG9zZSxcclxuICAmX19pY29uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDA7XHJcbiAgICB3aWR0aDogNDBweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2ljb24ge1xyXG4gICAgbGVmdDogMDtcclxuICAgIGNvbG9yOiBAd2hpdGU7XHJcblxyXG4gICAgLm91dGxpbmUtaWNvbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgei1pbmRleDogMjtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19jbG9zZSB7XHJcbiAgICByaWdodDogMDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcblxyXG4gICAgLm91dGxpbmUtaWNvbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgei1pbmRleDogMjtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAdGhpcmRfdGV4dF9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfaW5mbyB7XHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3dhcm5pbmcge1xyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3YXJuaW5nX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9zdWNjZXNzIHtcclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZXJyb3Ige1xyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBkYW5nZXJfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3BsYWluIHtcclxuICAgIG1pbi13aWR0aDogMTkwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDUwcHggMCAxNXB4O1xyXG5cclxuICAgICYub3V0bGluZS1tZXNzYWdlIHtcclxuICAgICAgJl9pbmZvIHtcclxuICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBpbmZvX3RpcF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl93YXJuaW5nIHtcclxuICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEB3YXJuaW5nX2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3YXJuaW5nX3RpcF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zdWNjZXNzIHtcclxuICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX3RpcF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9lcnJvciB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAZGFuZ2VyX2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBkYW5nZXJfdGlwX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIHdpZHRoOiAwO1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG5cclxuICAgICAgLm91dGxpbmUtaWNvbiB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9saWdodCB7XHJcbiAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgcGFkZGluZzogMCA0MHB4O1xyXG5cclxuICAgICYub3V0bGluZS1tZXNzYWdlIHtcclxuICAgICAgJl9pbmZvIHtcclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiBAcHJpbWFyeV9jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfd2FybmluZyB7XHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICBjb2xvcjogQHdhcm5pbmdfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3N1Y2Nlc3Mge1xyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9lcnJvciB7XHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICBjb2xvcjogQGRhbmdlcl9jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9yb3VuZCB7XHJcbiAgICAucmFkaXVzKDIwcHgpO1xyXG5cclxuICAgICYub3V0bGluZS1tZXNzYWdlIHtcclxuICAgICAgJl9kZWZhdWx0IHtcclxuICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgNDBweDtcclxuXHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICAucmFkaXVzKDEwcHgpO1xyXG4gICAgICAgICAgdG9wOiAxMHB4O1xyXG4gICAgICAgICAgbGVmdDogMTBweDtcclxuICAgICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcclxuICAgICAgICAgIG1pbi13aWR0aDogMjAwcHg7XHJcbiAgICAgICAgICBwYWRkaW5nOiAwIDIwcHggMCA0MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9wbGFpbiB7XHJcbiAgICAgICAgbWluLXdpZHRoOiAxOTVweDtcclxuICAgICAgICBwYWRkaW5nOiAwIDQwcHggMCAyMHB4O1xyXG5cclxuICAgICAgICAmLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcclxuICAgICAgICAgIG1pbi13aWR0aDogMjE1cHg7XHJcbiAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2Z1bGwtd2lkdGgge1xyXG4gICAgbWluLXdpZHRoOiAyMDBweDtcclxuICAgIHBhZGRpbmc6IDAgMTBweCAwIDUwcHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gICAgICAmX3BsYWluIHtcclxuICAgICAgICBtaW4td2lkdGg6IDIzMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweCAwIDE1cHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGlnaHQge1xyXG4gICAgICAgIG1pbi13aWR0aDogMjEwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMCAxMHB4IDAgNDBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl92aXNpYmxlIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG4iLCIvKipcclxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXHJcbiAqIFVwZGF0ZTogMjAyMi4zLjExXHJcbiAqL1xyXG5AaW1wb3J0ICcuL2NvbG9ycyc7XHJcblxyXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xyXG4uZWxsaXBzaXMgKEBsaW5lcykgd2hlbiAoQGxpbmVzPTEpIHtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi5lbGxpcHNpcyAoQGxpbmVzKSB3aGVuIChAbGluZXM+PTIpIHtcclxuICAtd2Via2l0LWxpbmUtY2xhbXA6IEBsaW5lcztcclxuICBkaXNwbGF5OiBib3g7XHJcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xyXG4ucmFkaXVzKEBudW06IDJweCkge1xyXG4gIGJvcmRlci1yYWRpdXM6IEBudW07XHJcbn1cclxuXHJcbi5yYWRpdXNfbm9uZSgpIHtcclxuICAucmFkaXVzKDApO1xyXG59XHJcblxyXG4ucmFkaXVzX21pbmkoKSB7XHJcbiAgLnJhZGl1cygycHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX3NtYWxsKCkge1xyXG4gIC5yYWRpdXMoM3B4KTtcclxufVxyXG5cclxuLnJhZGl1c19yZWd1bGFyKCkge1xyXG4gIC5yYWRpdXMoNHB4KTtcclxufVxyXG5cclxuLnJhZGl1c19tZWRpdW0oKSB7XHJcbiAgLnJhZGl1cyg1cHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX2xhcmdlKCkge1xyXG4gIC5yYWRpdXMoMTBweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfaHVnZSgpIHtcclxuICAucmFkaXVzKDE2cHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX3JvdW5kKCkge1xyXG4gIC5yYWRpdXMoMzBweCk7XHJcbn1cclxuXHJcbi8qID09PT09PSDpmLTlvbHmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXHJcbi5zaGFkb3coQG9mZnNldDogMCAwIDZweCAxcHgsIEBjb2xvcjogQHByaW1hcnlfYm9yZGVyX2NvbG9yKSB7XHJcbiAgYm94LXNoYWRvdzogQG9mZnNldCBAY29sb3I7XHJcbn1cclxuXHJcbi5zaGFkb3dfcmVndWxhcihAY29sb3I6IEBwcmltYXJ5X2JvcmRlcl9jb2xvcikge1xyXG4gIC5zaGFkb3coMCAwIDZweCAxcHgsIEBjb2xvcik7XHJcbn1cclxuXHJcbi5zaGFkb3dfbGFyZ2UoQGNvbG9yOiBAcHJpbWFyeV9ib3JkZXJfY29sb3IpIHtcclxuICAuc2hhZG93KDAgMCAxMnB4IDFweCwgQGNvbG9yKTtcclxufVxyXG5cclxuLnNoYWRvd19saWdodF9yZWd1bGFyKCkge1xyXG4gIC5zaGFkb3dfcmVndWxhcigpO1xyXG59XHJcblxyXG4uc2hhZG93X2xpZ2h0X2xhcmdlKCkge1xyXG4gIC5zaGFkb3dfbGFyZ2UoKTtcclxufVxyXG5cclxuLnNoYWRvd19kYXJrX3JlZ3VsYXIoKSB7XHJcbiAgLnNoYWRvd19yZWd1bGFyKEBzZWNvbmRhcnlfYm9yZGVyX2NvbG9yKTtcclxufVxyXG4iLCIvKiA9PT09PSBTY3JvbGxiYXIgPT09PT0gKi9cclxuOjotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgd2lkdGg6IDdweDtcclxuICBoZWlnaHQ6IDdweDtcclxuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcclxuXHJcbiAgJi10cmFjay1waWVjZSB7XHJcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcclxuICB9XHJcblxyXG4gICYtdGh1bWIge1xyXG4gICAgJjp2ZXJ0aWNhbCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgICY6aG9yaXpvbnRhbCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4gIH1cclxufVxyXG4iXX0= */ diff --git a/docs/css/example.min.css b/docs/css/example.min.css index 1b488ca..0fb79cd 100644 --- a/docs/css/example.min.css +++ b/docs/css/example.min.css @@ -1,2 +1,2 @@ -.case,.section__dl{position:relative;z-index:1}.section__dd,.section__dt{display:inline-block}.case,.section__footer,.section__table{border-top:1px solid #ddd}.case:after,.outline-drawer__overlay{content:''}.article,.paper.flex{-webkit-box-orient:horizontal}.section{margin:1em 0;overflow:hidden}.section__content,.section__footer,.section__header{margin:0;padding:0 3em;overflow:hidden}.section__title{color:#666}.section__h3{color:#507afe;font-size:1.35em}.section__h4{font-size:1.1em;color:#666}.section__h5{font-size:1em;color:#999}.section__dd,.section__dl,.section__dt{margin:0;padding:0;overflow:hidden}.section__dd{color:#058942}.section__pre{margin:2em 0;font-size:14px;line-height:150%;text-align:left;border:1px solid #ddd;border-radius:4px;color:#666}.section__code{display:block;margin:0 auto;overflow:hidden}.section__footer{margin-top:3em;background-color:#fafafa;color:#999}.section__table{margin:1em auto;width:100%}.section__td,.section__th{padding:5px 16px;line-height:26px;border-bottom:1px solid #ddd}.section__th{text-align:center;background-color:#fafafa}@media (max-width:480px){.section__content,.section__header{padding:0 1em}}.case{display:grid;grid-template-columns:repeat(2,1fr);gap:40px;padding:1em;border-bottom:1px solid #ddd;overflow:hidden}.case:after{position:absolute;z-index:2;top:0;left:50%;height:100%;width:0;border-left:1px solid #ddd;overflow:hidden}.case__pre,.case__textarea{font-size:13px;line-height:150%}.case__code,.case__pre,.case__textarea{font-family:'Courier New',Consolas,Georgia,Arial,sans-serif}.case__pre{margin:0;padding:1em;background-color:#fafafa;height:100%;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto}.case__textarea,.paper,.paper.flex .article{-webkit-box-sizing:border-box}.case__toolbar{margin:0 auto;height:36px;line-height:36px;font-size:14px;padding:0 16px;text-align:right;overflow:hidden}.case__action,.case__remove{cursor:pointer;color:#058942;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.case__action{font-size:13px;padding-left:10px}.case__action:first-child{padding-left:0}.case__remove{float:right}.case__console{margin:0 auto;height:180px;border:1px solid #ddd;overflow:hidden}.case__textarea{margin:0 auto;width:100%;height:100%;border:none;outline:0;padding:1em;box-sizing:border-box;overflow:auto}.case__list,.header{border-bottom:1px solid #ddd}.case__item,.case__list{margin:0;padding:0;list-style-type:none;overflow:hidden}.case__list{height:360px;border-top:1px solid #ddd;font-size:13px;overflow:auto}.case__item{height:36px;line-height:36px;cursor:pointer;padding:0 16px}.case__item:hover{background-color:#f7f8f9}.article__aside .outline-chapters,.header,.paper{background-color:#fff}.paper{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;margin:3em auto;max-width:1200px;padding:2em;box-sizing:border-box}.paper.flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin:0;width:100%;max-width:100%;height:100%;padding:0;overflow:hidden}.article,.outline-chapters_fixed,.outline-chapters_sticky,.outline-drawer__modal{display:-webkit-box;-webkit-box-direction:normal}.paper.flex .article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;box-sizing:border-box}.paper.flex .article__main{height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto}.paper.flex .article__aside{border-right:1px solid #dcdfe6}.header{position:sticky;z-index:3;top:0;margin:0 auto;text-align:center;-webkit-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.header_sticky{padding-left:260px}.article{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:2em 0;font-size:16px;line-height:150%}.article__main{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 2em;overflow:hidden}.article__main .section,.article__main .section__content,.article__main .section__footer,.article__main .section__header{overflow:visible}.article__main .section__content,.article__main .section__header{margin:0}.article__aside{-ms-flex-negative:0;flex-shrink:0;width:240px;border-left:1px solid #ddd}.article__aside.ltr{border-right:1px solid #ddd;border-left:none}.outline-drawer_ltr,.utils-border-right{border-right:1px solid #dcdfe6}.section__pre,pre{padding:2em;font-family:'Courier New',Arial,sans-serif;background-color:#fafafa;overflow:auto}.section__code,code{font-family:'Courier New',Arial,sans-serif;font-size:16px}.footer{border-top:1px solid #dcdfe6;padding:3em 0;text-align:center}.footer a:hover,.footer a:link,.footer a:visited{text-decoration:none;color:#058942}.footer a:hover{text-decoration:underline}.hidden{display:none}@media (max-width:480px){.paper,body,html{margin:0}.paper{padding:0}.article__main{padding:0 2em}}:root{--outline-zIndex:2000;--outline-sticky-height:100%;--outline-chapters-width:100%}.outline-icon{position:relative;z-index:1;display:inline-block;vertical-align:middle;width:1em;height:1em;overflow:hidden}.outline-heading__anchor,.outline-icon_hidden{display:none}.outline-icon__svg{position:absolute;z-index:2;top:50%;left:50%;width:1em;height:1em;fill:currentcolor;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:hidden}.outline-heading{position:relative;z-index:1;overflow:hidden}.outline-heading__anchor:hover,.outline-heading__anchor:link,.outline-heading__anchor:visited{color:#999;text-decoration:none}.outline-heading__anchor:hover{color:#507afe}.outline-heading:hover .outline-heading__anchor{display:inline-block}.outline-heading_start:hover{overflow:visible}.outline-heading_start .outline-heading__anchor{position:absolute;z-index:2;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:-1em}.outline-drawer{position:relative;z-index:-1;top:0;left:0;margin:0;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:hidden;overflow:hidden}.outline-drawer__modal{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;z-index:21;height:100%;background-color:#fff;-webkit-transition-duration:.4s;transition-duration:.4s;overflow:hidden}.outline-drawer__footer,.outline-drawer__header,.outline-drawer__main{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.outline-drawer__footer,.outline-drawer__header{-ms-flex-negative:0;flex-shrink:0}.outline-drawer__footer,.outline-drawer__main,.outline-drawer__title{padding:0 16px}.outline-drawer__header,.outline-drawer__title{position:relative;z-index:1;margin:0 auto;height:52px;line-height:52px;overflow:hidden}.outline-drawer__title{font-size:16px;font-weight:400;margin:0 16px;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #dcdfe6}.outline-drawer__close{position:absolute;z-index:2;top:50%;right:12px;width:20px;height:20px;line-height:20px;color:#999;font-size:20px;text-align:center;cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%);overflow:hidden}.outline-drawer__close .outline-icon{position:absolute;z-index:2;top:0;left:0}.outline-drawer__close:hover{color:#666}.outline-drawer__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-drawer__footer{margin:0 auto;text-align:right;overflow:hidden}.outline-drawer__overlay{position:relative;z-index:1;top:0;left:0;width:100%;height:100%;background-color:#fff;opacity:.1;overflow:hidden}.outline-drawer_ltr.outline-drawer_tiny,.outline-drawer_rtl.outline-drawer_tiny{width:280px}.outline-drawer_ltr.outline-drawer_mini,.outline-drawer_rtl.outline-drawer_mini{width:480px}.outline-drawer_ltr.outline-drawer_small,.outline-drawer_rtl.outline-drawer_small{width:540px}.outline-drawer_ltr.outline-drawer_regular,.outline-drawer_rtl.outline-drawer_regular{width:680px}.outline-drawer_ltr.outline-drawer_medium,.outline-drawer_rtl.outline-drawer_medium{width:720px}.outline-drawer_ltr.outline-drawer_large,.outline-drawer_rtl.outline-drawer_large{width:960px}.outline-drawer_rtl{border-left:1px solid #dcdfe6}.outline-drawer_rtl.outline-drawer_tiny.outline-drawer_closed{right:-290px}.outline-drawer_rtl.outline-drawer_mini.outline-drawer_closed{right:-490px}.outline-drawer_rtl.outline-drawer_small.outline-drawer_closed{right:-550px}.outline-drawer_rtl.outline-drawer_regular.outline-drawer_closed{right:-690px}.outline-drawer_rtl.outline-drawer_medium.outline-drawer_closed{right:-730px}.outline-drawer_rtl.outline-drawer_large.outline-drawer_closed{right:-970px}.outline-drawer_ltr.outline-drawer_tiny.outline-drawer_closed{left:-290px}.outline-drawer_ltr.outline-drawer_mini.outline-drawer_closed{left:-490px}.outline-drawer_ltr.outline-drawer_small.outline-drawer_closed{left:-550px}.outline-drawer_ltr.outline-drawer_regular.outline-drawer_closed{left:-690px}.outline-drawer_ltr.outline-drawer_medium.outline-drawer_closed{left:-730px}.outline-drawer_ltr.outline-drawer_large.outline-drawer_closed{left:-970px}.outline-drawer_btt,.outline-drawer_ttb{left:0;width:100%}.outline-drawer_btt.outline-drawer_tiny,.outline-drawer_ttb.outline-drawer_tiny{height:240px}.outline-drawer_btt.outline-drawer_mini,.outline-drawer_ttb.outline-drawer_mini{height:320px}.outline-drawer_btt.outline-drawer_small,.outline-drawer_ttb.outline-drawer_small{height:360px}.outline-drawer_btt.outline-drawer_regular,.outline-drawer_ttb.outline-drawer_regular{height:400px}.outline-drawer_btt.outline-drawer_medium,.outline-drawer_ttb.outline-drawer_medium{height:440px}.outline-drawer_btt.outline-drawer_large,.outline-drawer_ttb.outline-drawer_large{height:480px}.outline-drawer_ttb{border-bottom:1px solid #dcdfe6}.outline-drawer_ttb.outline-drawer_tiny.outline-drawer_closed{top:-250px}.outline-drawer_ttb.outline-drawer_mini.outline-drawer_closed{top:-330px}.outline-drawer_ttb.outline-drawer_small.outline-drawer_closed{top:-370px}.outline-drawer_ttb.outline-drawer_regular.outline-drawer_closed{top:-410px}.outline-drawer_ttb.outline-drawer_medium.outline-drawer_closed{top:-450px}.outline-drawer_ttb.outline-drawer_large.outline-drawer_closed{top:-490px}.outline-drawer_btt{top:initial;border-top:1px solid #dcdfe6}.outline-drawer_btt.outline-drawer_tiny.outline-drawer_closed{bottom:-250px}.outline-drawer_btt.outline-drawer_mini.outline-drawer_closed{bottom:-330px}.outline-drawer_btt.outline-drawer_small.outline-drawer_closed{bottom:-370px}.outline-drawer_btt.outline-drawer_regular.outline-drawer_closed{bottom:-410px}.outline-drawer_btt.outline-drawer_medium.outline-drawer_closed{bottom:-450px}.outline-drawer_btt.outline-drawer_large.outline-drawer_closed{bottom:-490px}.outline-drawer_opened{visibility:visible;z-index:var(--outline-zIndex)}.outline-drawer_opened.outline-drawer{position:fixed}.outline-drawer_opened.outline-drawer_rtl{right:0}.outline-drawer_opened.outline-drawer_ltr{left:0}.outline-drawer_opened.outline-drawer_ttb{top:0}.outline-drawer_opened.outline-drawer_btt{bottom:0}.outline-drawer_offset.outline-drawer_ltr,.outline-drawer_offset.outline-drawer_rtl{height:calc(100% - 4em);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.outline-drawer_offset.outline-drawer_btt,.outline-drawer_offset.outline-drawer_ttb{width:calc(100% - 4em);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-drawer_offset.outline-drawer_opened.outline-drawer_rtl{right:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ltr{left:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ttb{top:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_btt{bottom:2em}.outline-drawer_auto.outline-drawer_ltr,.outline-drawer_auto.outline-drawer_rtl{height:auto;max-height:calc(100% - 4em)}.outline-drawer_full{padding:0}.outline-chapters{position:relative;z-index:1;margin:0;width:var(--outline-chapters-width);overflow:auto}.outline-chapters-parent{-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.outline-chapters__title{margin:0 16px;height:40px;line-height:40px;padding:0 16px;border-bottom:1px solid #dcdfe6;font-size:16px;font-weight:400;overflow:hidden}.outline-chapters__main{position:relative;z-index:1;margin:0;overflow:hidden}.outline-chapters__item,.outline-chapters__list,.outline-chapters__subject{position:relative;z-index:2;margin:0;padding:0;list-style-type:none;overflow:hidden}.outline-chapters__list{padding:.5em 0}.outline-chapters__subject{padding-left:1em}.outline-chapters__item{margin:0;line-height:30px;font-size:13px;overflow:hidden}.outline-chapters__placeholder{position:absolute;z-index:1;top:0;left:0;width:100%;height:30px;background-color:#f7f8f9;border-left:2px solid #058942;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.outline-chapters__anchor{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;padding:0 1.5em}.outline-chapters__anchor:hover,.outline-chapters__anchor:link,.outline-chapters__anchor:visited{text-decoration:none;color:#555}.outline-chapters__anchor:hover{color:#058942}.outline-chapters__code{padding-right:.5em}.outline-chapters_highlight.outline-chapters__anchor:hover,.outline-chapters_highlight.outline-chapters__anchor:link,.outline-chapters_highlight.outline-chapters__anchor:visited{color:#058942;font-weight:700}.outline-chapters_fixed,.outline-chapters_sticky{display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;z-index:var(--outline-zIndex);top:0;overflow:hidden}.outline-chapters_hidden,.outline-reader__close{display:none}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__main,.outline-chapters_sticky .outline-chapters__title{-webkit-box-sizing:border-box;box-sizing:border-box}.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__title{-ms-flex-negative:0;flex-shrink:0}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_sticky .outline-chapters__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-chapters_sticky{position:sticky;max-height:var(--outline-sticky-height)}.outline-chapters_fixed{position:fixed;max-height:100%}.outline-chapters_folded{width:0;overflow:hidden}.outline-reader__title{margin:.67em 0!important;text-align:center!important;font-family:'Microsoft YaHei UI',Arial,sans-serif;font-weight:400;overflow:hidden}.outline-reader_hidden,.outline-reader_hidden.outline-reader_sibling{display:none!important}.outline-reader_hidden.outline-reader_sibling.wrapper.post{display:none}.outline-reader--reading{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:3em 4em;background-color:#fff;scroll-timeline-name:--ProgressTimeline;overflow:scroll}.outline-reader--reading .outline-reader__progress{position:fixed;top:0;left:0;z-index:3;height:4px;width:100%;background-color:#507afe;scale:0 1;-webkit-transform-origin:left;transform-origin:left;-webkit-animation:outline-reader-progress linear;animation:outline-reader-progress linear;animation-timeline:--ProgressTimeline}.outline-reader--reading .outline-reader__close{display:block;position:fixed;z-index:3;top:50%;right:22px;margin:0;width:36px;height:36px;border-radius:18px;border:1px solid #dcdfe6;line-height:30px;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;-webkit-box-shadow:0 0 8px #ddd;box-shadow:0 0 8px #ddd;color:#999;background-color:#fff;overflow:hidden}.outline-reader--reading .outline-reader__close:hover{background-color:#058942;color:#fff}.outline-reader--reading .outline-reader h1,.outline-reader--reading .outline-reader__title{margin:.67em 0!important;line-height:1.3em;font-size:3.5em}@-webkit-keyframes outline-reader-progress{to{scale:1 1}}@keyframes outline-reader-progress{to{scale:1 1}}@media (max-width:480px){.outline-reader--reading{padding:0 1.25em}.outline-reader__close{right:12px!important;opacity:.8}.outline-reader__title{font-size:2em}}@media print{.outline-reader h1,.outline-reader.outline-reader h1,.outline-reader.outline-reader__title,.outline-reader__title{margin:13.4pt 0 28pt!important;text-align:center!important;font-size:20pt!important}body,html{height:initial!important}.outline-reader{display:block!important;overflow:hidden}.outline-reader.outline-reader__close,.outline-reader.outline-reader__progress,.outline-reader_sibling{display:none!important}.outline-reader.outline-reader--reading{position:relative!important;height:auto!important;padding:0!important;overflow:hidden!important}.outline-reader pre{padding:1em!important;border:1px solid #ddd!important;border-radius:4px!important}.outline-reader code,.outline-reader pre{background-color:#fff!important}.outline-reader img,.outline-reader svg,.outline-reader table{-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}}.outline-toolbar{position:fixed;z-index:99999;margin:0;-webkit-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.outline-toolbar__button{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:relative;z-index:1;margin:10px;width:36px;height:36px;border:1px solid #dcdfe6;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;cursor:pointer;text-align:center;color:#999;overflow:hidden}.outline-toolbar__button:hover{color:#058942;border-color:#058942}.outline-toolbar__button.hide{display:none}.outline-toolbar__anchor:hover,.outline-toolbar__anchor:link,.outline-toolbar__anchor:visited{color:#999;text-decoration:none}.outline-toolbar__anchor:hover{color:#058942}.outline-toolbar__icon{position:absolute;z-index:2;top:50%;left:50%;width:20px;height:20px;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);fill:currentcolor;overflow:hidden}.outline-toolbar_active.outline-toolbar__button{color:#fff;background-color:#058942;border-color:#058942}.outline-toolbar_active .outline-toolbar__anchor:hover,.outline-toolbar_active .outline-toolbar__anchor:link,.outline-toolbar_active .outline-toolbar__anchor:visited,.outline-toolbar_active.outline-toolbar__button:hover{color:#fff}.outline-toolbar_rounded.outline-toolbar__button{border-radius:18px}.outline-toolbar_disabled .outline-toolbar__anchor:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link,.outline-toolbar_disabled .outline-toolbar__anchor:visited,.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__anchor:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link,.outline-toolbar_disabled.outline-toolbar__anchor:visited,.outline-toolbar_disabled.outline-toolbar__button{cursor:not-allowed;color:#999;border-color:#999}.outline-toolbar_disabled .outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link:hover,.outline-toolbar_disabled .outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled .outline-toolbar__button:hover,.outline-toolbar_disabled.outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link:hover,.outline-toolbar_disabled.outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled.outline-toolbar__button:hover{color:#999;border-color:#999}.outline-message,.outline-message__content{margin:0;font-size:13px;color:#666;height:40px;line-height:40px;overflow:hidden}.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__button{background-color:#f5f5f5}.outline-toolbar_btt,.outline-toolbar_ttb{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-toolbar_btt .outline-toolbar__button,.outline-toolbar_ttb .outline-toolbar__button{display:inline-block}.outline-toolbar_ttb{top:12px}.outline-toolbar_ttb.outline-toolbar_hidden{top:-56px}.outline-toolbar_btt{bottom:12px}.outline-toolbar_btt.outline-toolbar_hidden{bottom:-56px}.outline-toolbar_ltr,.outline-toolbar_rtl{-webkit-transform:translateY(-50%);transform:translateY(-50%);width:56px}.outline-toolbar_rtl{top:50%;right:12px}.outline-toolbar_rtl.outline-toolbar_hidden{right:-86px}.outline-toolbar_ltr{top:50%;left:12px}.outline-toolbar_ltr.outline-toolbar_hidden{left:-86px}.outline-toolbar_btt .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ltr .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_rtl .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ttb .outline-toolbar__button.outline-toolbar_hidden{display:none}.outline-message{border-radius:3px;-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:fixed;z-index:9999;opacity:.1;top:-50px;left:50%;padding:0 50px;background-color:#fff;-webkit-transition:all .5s ease-in-out;transition:all .5s ease-in-out;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-message__content{white-space:nowrap;text-overflow:ellipsis;max-width:700px}.outline-message__close,.outline-message__icon{position:absolute;z-index:2;top:0;width:40px;height:40px;line-height:40px;text-align:center;overflow:hidden}.outline-message__icon{left:0;color:#fff}.outline-message__icon .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close{right:0;cursor:pointer;color:#999}.outline-message__close .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close:hover{color:#666}.outline-message_info .outline-message__icon{background-color:#507afe}.outline-message_warning .outline-message__icon{background-color:#ff9901}.outline-message_success .outline-message__icon{background-color:#058942}.outline-message_error .outline-message__icon{background-color:#ff5d5d}.outline-message_plain{min-width:190px;padding:0 50px 0 15px}.outline-message_light,.outline-message_round.outline-message_default{min-width:180px;padding:0 40px}.outline-message_plain.outline-message_info{border-left:5px solid #507afe;background-color:#ecf8ff}.outline-message_plain.outline-message_warning{border-left:5px solid #ff9901;background-color:#fffbe6}.outline-message_plain.outline-message_success{border-left:5px solid #058942;background-color:#e1f6eb}.outline-message_plain.outline-message_error{border-left:5px solid #ff5d5d;background-color:#fff1f0}.outline-message_plain .outline-message__icon{width:0;display:none}.outline-message_plain .outline-message__icon .outline-icon{display:none}.outline-message_light.outline-message_info .outline-message__icon{color:#507afe}.outline-message_light.outline-message_warning .outline-message__icon{color:#ff9901}.outline-message_light.outline-message_success .outline-message__icon{color:#058942}.outline-message_light.outline-message_error .outline-message__icon{color:#ff5d5d}.outline-message_light .outline-message__icon{background-color:#fff}.outline-message_round{border-radius:20px}.outline-message_round.outline-message_default .outline-message__icon{border-radius:10px;top:10px;left:10px;width:20px;height:20px;line-height:20px}.outline-message_round.outline-message_default.outline-message_full-width{min-width:200px;padding:0 20px 0 40px}.outline-message_round.outline-message_plain{min-width:195px;padding:0 40px 0 20px}.outline-message_round.outline-message_plain.outline-message_full-width{min-width:215px;padding:0 20px}.outline-message_full-width{min-width:200px;padding:0 10px 0 50px}.outline-message_full-width.outline-message_plain{min-width:230px;padding:0 10px 0 15px}.outline-message_full-width.outline-message_light{min-width:210px;padding:0 10px 0 40px}.outline-message_visible{opacity:1}.outline-message_hidden{display:none}::-webkit-scrollbar{width:7px;height:7px;-webkit-border-radius:5px}::-webkit-scrollbar-track-piece{-webkit-border-radius:5px}::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:horizontal{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.35)}::-webkit-scrollbar:hover{background-color:rgba(0,0,0,.15)} -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJjc3MvZXhhbXBsZS5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDdweDtcbiAgaGVpZ2h0OiA3cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xufVxuLnNlY3Rpb24ge1xuICBtYXJnaW46IDFlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2hlYWRlcixcbi5zZWN0aW9uX19jb250ZW50LFxuLnNlY3Rpb25fX2Zvb3RlciB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAzZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fdGl0bGUge1xuICBjb2xvcjogIzY2Njtcbn1cbi5zZWN0aW9uX19oMyB7XG4gIGNvbG9yOiAjNTA3YWZlO1xuICBmb250LXNpemU6IDEuMzVlbTtcbn1cbi5zZWN0aW9uX19oNCB7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGNvbG9yOiAjNjY2O1xufVxuLnNlY3Rpb25fX2g1IHtcbiAgZm9udC1zaXplOiAxZW07XG4gIGNvbG9yOiAjOTk5O1xufVxuLnNlY3Rpb25fX2RsLFxuLnNlY3Rpb25fX2R0LFxuLnNlY3Rpb25fX2RkIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2RsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuLnNlY3Rpb25fX2R0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLnNlY3Rpb25fX2RkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5zZWN0aW9uX19wcmUge1xuICBtYXJnaW46IDJlbSAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLnNlY3Rpb25fX2NvZGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIG1hcmdpbi10b3A6IDNlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgY29sb3I6ICM5OTk7XG59XG4uc2VjdGlvbl9fdGFibGUge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG59XG4uc2VjdGlvbl9fdGgsXG4uc2VjdGlvbl9fdGQge1xuICBwYWRkaW5nOiA1cHggMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb25fX3RoIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5zZWN0aW9uX19oZWFkZXIsXG4gIC5zZWN0aW9uX19jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwIDFlbTtcbiAgfVxufVxuLmNhc2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogNDBweDtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAwO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fcHJlLFxuLmNhc2VfX3RleHRhcmVhIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbn1cbi5jYXNlX19wcmUsXG4uY2FzZV9fY29kZSxcbi5jYXNlX190ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG4uY2FzZV9fcHJlIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uY2FzZV9fdG9vbGJhciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fYWN0aW9uLFxuLmNhc2VfX3JlbW92ZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uY2FzZV9fYWN0aW9uIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY2FzZV9fYWN0aW9uOmZpcnN0LWNoaWxkIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuLmNhc2VfX3JlbW92ZSB7XG4gIGZsb2F0OiByaWdodDtcbn1cbi5jYXNlX19jb25zb2xlIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogMTgwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fdGV4dGFyZWEge1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAxZW07XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jYXNlX19saXN0LFxuLmNhc2VfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX19saXN0IHtcbiAgaGVpZ2h0OiAzNjBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLmNhc2VfX2l0ZW0ge1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDAgMTZweDtcbn1cbi5jYXNlX19pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbn1cbi8qKlxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi5wYXBlciB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBtYXJnaW46IDNlbSBhdXRvO1xuICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgcGFkZGluZzogMmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5wYXBlci5mbGV4IHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnBhcGVyLmZsZXggLmFydGljbGUge1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5wYXBlci5mbGV4IC5hcnRpY2xlX19tYWluIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ucGFwZXIuZmxleCAuYXJ0aWNsZV9fYXNpZGUge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLmhlYWRlciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHotaW5kZXg6IDM7XG4gIHRvcDogMDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmhlYWRlcl9zdGlja3kge1xuICBwYWRkaW5nLWxlZnQ6IDI2MHB4O1xufVxuLmFydGljbGUge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAtbXMtZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgcGFkZGluZzogMmVtIDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG59XG4uYXJ0aWNsZV9fbWFpbiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBwYWRkaW5nOiAwIDJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5hcnRpY2xlX19tYWluIC5zZWN0aW9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbl9fY29udGVudCxcbi5hcnRpY2xlX19tYWluIC5zZWN0aW9uX19mb290ZXIsXG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbl9faGVhZGVyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbl9faGVhZGVyLFxuLmFydGljbGVfX21haW4gLnNlY3Rpb25fX2NvbnRlbnQge1xuICBtYXJnaW46IDA7XG59XG4uYXJ0aWNsZV9fYXNpZGUge1xuICAtbXMtZmxleC1uZWdhdGl2ZTogMDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogMjQwcHg7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDtcbn1cbi5hcnRpY2xlX19hc2lkZS5sdHIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItbGVmdDogbm9uZTtcbn1cbi5hcnRpY2xlX19hc2lkZSAub3V0bGluZS1jaGFwdGVycyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5wcmUsXG4uc2VjdGlvbl9fcHJlIHtcbiAgcGFkZGluZzogMmVtO1xuICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuY29kZSxcbi5zZWN0aW9uX19jb2RlIHtcbiAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG59XG4uZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkY2RmZTY7XG4gIHBhZGRpbmc6IDNlbSAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uZm9vdGVyIGE6bGluayxcbi5mb290ZXIgYTp2aXNpdGVkLFxuLmZvb3RlciBhOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5mb290ZXIgYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnV0aWxzLWJvcmRlci1yaWdodCB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgLnBhcGVyIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICAuYXJ0aWNsZV9fbWFpbiB7XG4gICAgcGFkZGluZzogMCAyZW07XG4gIH1cbn1cbjpyb290IHtcbiAgLS1vdXRsaW5lLXpJbmRleDogMjAwMDtcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcbn1cbi8qID09PT09PT09PT0gY29sb3JzLnRoZW1lIC0g5Z+656GA6aKc6Imy5Y+Y6YeP6ZuG5ZCIID09PT09PT09PT0gKi9cbi8qKlxuICogZWxsaXBzaXMubGVzcyAtIOaWh+acrOecgeeVpSBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyoqXG4gKiBzaGFkb3cubGVzcyAtIOmYtOW9seagt+W8j+iuvue9riBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4yMFxuICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09PT09PSBpY29uLnRoZW1lIC0gc3ZnIOWbvuagh+eahOagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9fc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtaGVhZGluZzpob3ZlciAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0OmhvdmVyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0IC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgbGVmdDogLTFlbTtcbn1cbi5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogLTE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19tb2RhbCB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjE7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzO1xuICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDUycHg7XG4gIGxpbmUtaGVpZ2h0OiA1MnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjOTk5O1xuICBmb250LXNpemU6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fbWFpbiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19vdmVybGF5IHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvcGFjaXR5OiAwLjE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICB3aWR0aDogMjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21pbmkge1xuICB3aWR0aDogNDgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3NtYWxsLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9zbWFsbCB7XG4gIHdpZHRoOiA1NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIHdpZHRoOiA2ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICB3aWR0aDogNzIwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX2xhcmdlLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9sYXJnZSB7XG4gIHdpZHRoOiA5NjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTczMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTI5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC02OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yixcbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueSB7XG4gIGhlaWdodDogMjQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21pbmkge1xuICBoZWlnaHQ6IDMyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICBoZWlnaHQ6IDM2MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyIHtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICBoZWlnaHQ6IDQ0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICBoZWlnaHQ6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB0b3A6IGluaXRpYWw7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xuICB0b3A6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3J0bCB7XG4gIHJpZ2h0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBsZWZ0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl90dGIge1xuICB0b3A6IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIGJvdHRvbTogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfcnRsLFxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xufVxuLm91dGxpbmUtZHJhd2VyX2Z1bGwge1xuICBwYWRkaW5nOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IHZhcigtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGgpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzLXBhcmVudCB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIG1hcmdpbjogMCAxNnB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2xpc3QsXG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0IHtcbiAgcGFkZGluZzogMC41ZW0gMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19zdWJqZWN0IHtcbiAgcGFkZGluZy1sZWZ0OiAxZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIG1hcmdpbjogMDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19wbGFjZWhvbGRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmOGY5O1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMwNTg5NDI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAgMS41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzU1NTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19jb2RlIHtcbiAgcGFkZGluZy1yaWdodDogMC41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5LFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcbiAgdG9wOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7XG4gICAgICBmbGV4LXNocmluazogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgIC1tcy1mbGV4OiAxO1xuICAgICAgICAgIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZvbGRlZCB7XG4gIHdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcud3JhcHBlci5wb3N0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogM2VtIDRlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgc2Nyb2xsLXRpbWVsaW5lLW5hbWU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDM7XG4gIGhlaWdodDogNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbiAgc2NhbGU6IDAgMTtcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gICAgICAgICAgYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMztcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAyMnB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA4cHggI2RkZDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgOHB4ICNkZGQ7XG4gIGNvbG9yOiAjOTk5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXIgaDEsXG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBmb250LXNpemU6IDMuNWVtO1xufVxuQC13ZWJraXQta2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xuICB0byB7XG4gICAgc2NhbGU6IDEgMTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcGFkZGluZzogMCAxLjI1ZW07XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gIH1cbn1cbkBtZWRpYSBwcmludCB7XG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBoMSxcbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlciBoMSxcbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX19jbG9zZSxcbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyX19wcm9ncmVzcyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBwcmUge1xuICAgIHBhZGRpbmc6IDFlbSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlLFxuICAub3V0bGluZS1yZWFkZXIgY29kZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciB0YWJsZSxcbiAgLm91dGxpbmUtcmVhZGVyIGltZyxcbiAgLm91dGxpbmUtcmVhZGVyIHN2ZyB7XG4gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAtbW96LWNvbHVtbi1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXJfc2libGluZyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4vKiA9PT09PT09PT09IGJ1dHRvbnMudGhlbWUgLSDmjInpkq7lr7zoiKrmoLflvI8gPT09PT09PT09PSAqL1xuLm91dGxpbmUtdG9vbGJhciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTk7XG4gIG1hcmdpbjogMDtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDEwcHg7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzk5OTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICBib3JkZXItY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24uaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9faWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcm91bmRlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIGNvbG9yOiAjOTk5O1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbms6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZDpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXI6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIsXG4ub3V0bGluZS10b29sYmFyX2J0dCB7XG4gIGxlZnQ6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9idHQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIge1xuICB0b3A6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX3R0Yi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgdG9wOiAtNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYnR0IHtcbiAgYm90dG9tOiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9idHQub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGJvdHRvbTogLTU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bCxcbi5vdXRsaW5lLXRvb2xiYXJfbHRyIHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB3aWR0aDogNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsIHtcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIHJpZ2h0OiAtODZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfbHRyIHtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX2x0ci5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgbGVmdDogLTg2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfcnRsIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9idHQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX2x0ciAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKipcbiAqIGZvbnQubGVzcyAtIOWtl+S9k+ebuOWFs+agt+W8j1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTZcbiAqL1xuLyogPT09PT09IOWtl+S9kyA9PT09PT0gKi9cbi8qID09PT09PSDlrZfph40gPT09PT09ICovXG4vKiA9PT09PT0g5a2X5Y+3ID09PT09PSAqL1xuLm91dGxpbmUtbWVzc2FnZSB7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTtcbiAgb3BhY2l0eTogMC4xO1xuICB0b3A6IC01MHB4O1xuICBsZWZ0OiA1MCU7XG4gIGhlaWdodDogNDBweDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDUwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjNjY2O1xuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2UtaW4tb3V0O1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY29udGVudCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtYXJnaW46IDA7XG4gIG1heC13aWR0aDogNzAwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSxcbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBsZWZ0OiAwO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlIHtcbiAgcmlnaHQ6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjVkNWQ7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTBweDtcbiAgcGFkZGluZzogMCA1MHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2luZm8ge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICM1MDdhZmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2Y4ZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY5OTAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmYmU2O1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzA1ODk0MjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZjZlYjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY1ZDVkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMWYwO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgd2lkdGg6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0IHtcbiAgbWluLXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHRvcDogMTBweDtcbiAgbGVmdDogMTBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0Lm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAyMHB4IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTVweDtcbiAgcGFkZGluZzogMCA0MHB4IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMTVweDtcbiAgcGFkZGluZzogMCAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgNTBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDIzMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCAxNXB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMjEwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3Zpc2libGUge1xuICBvcGFjaXR5OiAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDdweDtcbiAgaGVpZ2h0OiA3cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGY4O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THp4cGJuQjFkQ0JqYzNNZ01qNGlMQ0p6WTNKdmJHeGlZWEl1YkdWemN5SXNJbk5sWTNScGIyNHViR1Z6Y3lJc0ltTmhjMlV1YkdWemN5SXNJbkJoWjJWeUxteGxjM01pTENJdUxpOHVMaTkwYUdWdFpTOXphR0ZrYjNjdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwzWmhjbWxoWW14bGN5NXNaWE56SWl3aUxpNHZMaTR2ZEdobGJXVXZhV052Ym5NdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwyRnVZMmh2Y25NdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwyUnlZWGRsY2k1c1pYTnpJaXdpTGk0dkxpNHZkR2hsYldVdlkyaGhjSFJsY25NdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwyVnNiR2x3YzJsekxteGxjM01pTENJdUxpOHVMaTkwYUdWdFpTOXlaV0ZrWlhJdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwzUnZiMnhpWVhJdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwyMWxjM05oWjJVdWJHVnpjeUlzSWk0dUx5NHVMM1JvWlcxbEwyMXBlR2x1Y3k1c1pYTnpJaXdpTGk0dkxpNHZkR2hsYldVdmMyTnliMnhzWW1GeUxteGxjM01pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc01rSkJRVEpDTzBGRFF6TkNPMFZCUTBVc1YwRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTd3lRa0ZCUVR0RFJFTkVPMEZEUlVRN1JVRkRSU3d5UWtGQlFUdERSRUZFTzBGRFIwUTdSVUZEUlN4elEwRkJRVHRGUVVOQkxESkNRVUZCTzBORVJFUTdRVU5KUkR0RlFVTkZMSE5EUVVGQk8wVkJRMEVzTWtKQlFVRTdRMFJHUkR0QlEwdEVPMFZCUTBVc2MwTkJRVUU3UTBSSVJEdEJRMDFFTzBWQlEwVXNjME5CUVVFN1EwUktSRHRCUlhCQ1JEdEZRVU5GTEdOQlFVRTdSVUZEUVN4cFFrRkJRVHREUm5OQ1JEdEJSWEJDUXpzN08wVkJSMFVzVlVGQlFUdEZRVU5CTEdWQlFVRTdSVUZEUVN4cFFrRkJRVHREUm5OQ1NEdEJSVzVDUXp0RlFVTkZMRmxCUVVFN1EwWnhRa2c3UVVWc1FrTTdSVUZEUlN4bFFVRkJPMFZCUTBFc2EwSkJRVUU3UTBadlFrZzdRVVZxUWtNN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEZsQlFVRTdRMFp0UWtnN1FVVm9Ra003UlVGRFJTeGxRVUZCTzBWQlEwRXNXVUZCUVR0RFJtdENTRHRCUldaRE96czdSVUZIUlN4VlFVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxHbENRVUZCTzBOR2FVSklPMEZGWkVNN1JVRkRSU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdRMFpuUWtnN1FVVmlRenRGUVVORkxITkNRVUZCTzBOR1pVZzdRVVZhUXp0RlFVTkZMSE5DUVVGQk8wVkJRMEVzWlVGQlFUdERSbU5JTzBGRldFTTdSVUZEUlN4alFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNhMEpCUVVFN1JVRkRRU3hwUWtGQlFUdEZRVU5CTERCQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3hsUVVGQk8wTkdZVWc3UVVWV1F6dEZRVU5GTEdWQlFVRTdSVUZEUVN4bFFVRkJPMFZCUTBFc2FVSkJRVUU3UTBaWlNEdEJSVlJETzBWQlEwVXNNa0pCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTERCQ1FVRkJPMFZCUTBFc1dVRkJRVHREUmxkSU8wRkZVa003UlVGRFJTeHBRa0ZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3d5UWtGQlFUdERSbFZJTzBGRlVFTTdPMFZCUlVVc2EwSkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMRGhDUVVGQk8wTkdVMGc3UVVWT1F6dEZRVU5GTEcxQ1FVRkJPMFZCUTBFc01FSkJRVUU3UTBaUlNEdEJSVXBFTzBWQlJVazdPMGxCUlVVc1pVRkJRVHRIUmt0SU8wTkJRMFk3UVVjMVIwUTdSVUZEUlN4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeGpRVUZCTzBWQlEwRXNjME5CUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTERKQ1FVRkJPMFZCUTBFc09FSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFNEaEhSRHRCUnpWSFF6dEZRVU5GTEZsQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFBRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hUUVVGQk8wVkJRMEVzTkVKQlFVRTdSVUZEUVN4cFFrRkJRVHREU0RoSFNEdEJSek5IUXpzN1JVRkZSU3huUWtGQlFUdEZRVU5CTEd0Q1FVRkJPME5JTmtkSU8wRkhNVWRET3pzN1JVRkhSU3hwUlVGQlFUdERTRFJIU0R0QlIzcEhRenRGUVVORkxGVkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNNRUpCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN3clFrRkJRVHRWUVVGQkxIVkNRVUZCTzBWQlEwRXNaVUZCUVR0RFNESkhTRHRCUjNoSFF6dEZRVU5GTEdWQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4cFFrRkJRVHREU0RCSFNEdEJSM1pIUXpzN1JVRkZSU3huUWtGQlFUdEZRVU5CTEdWQlFVRTdSVUZEUVN3d1FrRkJRVHRMUVVGQkxIVkNRVUZCTzAxQlFVRXNjMEpCUVVFN1ZVRkJRU3hyUWtGQlFUdERTSGxIU0R0QlIzUkhRenRGUVVORkxHZENRVUZCTzBWQlEwRXNiVUpCUVVFN1EwaDNSMGc3UVVkMFIwYzdSVUZEUlN4blFrRkJRVHREU0hkSFREdEJSM0JIUXp0RlFVTkZMR0ZCUVVFN1EwaHpSMGc3UVVkdVIwTTdSVUZEUlN4bFFVRkJPMFZCUTBFc1kwRkJRVHRGUVVOQkxIVkNRVUZCTzBWQlEwRXNhVUpCUVVFN1EwaHhSMGc3UVVkc1IwTTdSVUZEUlN4bFFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNZMEZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc1pVRkJRVHREU0c5SFNEdEJSMnBIUXpzN1JVRkZSU3hWUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEhOQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTBodFIwZzdRVWRvUjBNN1JVRkRSU3hqUVVGQk8wVkJRMEVzTWtKQlFVRTdSVUZEUVN3NFFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNaVUZCUVR0RFNHdEhTRHRCUnk5R1F6dEZRVU5GTEdGQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNaMEpCUVVFN1EwaHBSMGc3UVVjdlJrYzdSVUZEUlN3d1FrRkJRVHREU0dsSFREdEJRVU5FT3pzN096dEhRVXRITzBGQlEwZ3NNRUpCUVRCQ08wRkJRekZDTERSQ1FVRTBRanRCUVVNMVFpdzBRa0ZCTkVJN1FVazVUalZDTzBWRFQzZEVMSGREUVVGQk8xVkJRVUVzWjBOQlFVRTdSVVJNZEVRc2FVSkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3gxUWtGQlFUdEZRVU5CTEN0Q1FVRkJPMVZCUVVFc2RVSkJRVUU3UTBwblQwUTdRVWs1VGtNN1JVRkRSU3h4UWtGQlFUdEZRVUZCTEhGQ1FVRkJPMFZCUVVFc1kwRkJRVHRGUVVOQkxDdENRVUZCTzBWQlFVRXNPRUpCUVVFN1RVRkJRU3gzUWtGQlFUdFZRVUZCTEc5Q1FVRkJPMFZCUTBFc2MwSkJRVUU3VFVGQlFTeHJRa0ZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxHbENRVUZCTzBOS1owOUlPMEZKZWs5RE8wVkJXVWtzTmtKQlFVRTdSVUZCUVN3NFFrRkJRVHROUVVGQkxESkNRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHREU21kUFREdEJTVGxPU3p0RlFVTkZMR0ZCUVVFN1JVRkRRU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc1pVRkJRVHREU21kUFVEdEJTVGRPU3p0RlFVTkZMR2REUVVGQk8wTktLMDVRTzBGSmVrNUVPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNUMEZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3c0UWtGQlFUdEZRVU5CTEhWQ1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeHJRMEZCUVR0VlFVRkJMREJDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMG95VGtRN1FVbDZUa003UlVGRFJTeHZRa0ZCUVR0RFNqSk9TRHRCU1haT1JEdEZRVU5GTEhGQ1FVRkJPMFZCUVVFc2NVSkJRVUU3UlVGQlFTeGpRVUZCTzBWQlEwRXNLMEpCUVVFN1JVRkJRU3c0UWtGQlFUdE5RVUZCTEhkQ1FVRkJPMVZCUVVFc2IwSkJRVUU3UlVGRFFTeHpRa0ZCUVR0TlFVRkJMR3RDUVVGQk8wVkJRMEVzWlVGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc2EwSkJRVUU3UTBwNVRrUTdRVWwyVGtNN1JVRkRSU3h2UWtGQlFUdE5RVUZCTEZsQlFVRTdWVUZCUVN4UlFVRkJPMFZCUTBFc1pVRkJRVHRGUVVOQkxHbENRVUZCTzBOS2VVNUlPMEZKTlU1RE8wVkJUVWtzYTBKQlFVRTdRMHA1VGt3N1FVbDJUa3M3T3p0RlFVZEZMR3RDUVVGQk8wTktlVTVRTzBGSmRFNUxPenRGUVVWRkxGVkJRVUU3UTBwM1RsQTdRVWx1VGtNN1JVRkRSU3h4UWtGQlFUdE5RVUZCTEdWQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc05FSkJRVUU3UTBweFRrZzdRVWx1VGtjN1JVRkRSU3cyUWtGQlFUdEZRVU5CTEd0Q1FVRkJPME5LY1U1TU8wRkpOVTVETzBWQlYwa3NkVUpCUVVFN1EwcHZUa3c3UVVrdlRVUTdPMFZCUlVVc1lVRkJRVHRGUVVOQkxEaERRVUZCTzBWQlEwRXNNRUpCUVVFN1JVRkRRU3hsUVVGQk8wTkthVTVFTzBGSk9VMUVPenRGUVVWRkxEaERRVUZCTzBWQlEwRXNaMEpCUVVFN1EwcG5Ua1E3UVVrM1RVUTdSVUZEUlN3NFFrRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTeHRRa0ZCUVR0RFNpdE5SRHRCU1RWTlJ6czdPMFZCUjBVc2MwSkJRVUU3UlVGRFFTeGxRVUZCTzBOS09FMU1PMEZKTTAxSE8wVkJRMFVzTWtKQlFVRTdRMG8yVFV3N1FVbDRUVVE3UlVGRFJTeG5RMEZCUVR0RFNqQk5SRHRCU1haTlJEdEZRVU5GTEdOQlFVRTdRMHA1VFVRN1FVbDBUVVE3UlVGRFJUczdTVUZGUlN4VlFVRkJPMGRLZDAxRU8wVkpjazFFTzBsQlEwVXNWVUZCUVR0SlFVTkJMRmRCUVVFN1IwcDFUVVE3UlVsd1RVUTdTVUZEUlN4bFFVRkJPMGRLYzAxRU8wTkJRMFk3UVUxb1YwUTdSVUZEUXl4MVFrRkJRVHRGUVVORUxEaENRVUZCTzBWQlFXbERMQ3RDUVVGQk8wTk9iVmRvUXp0QlFVTkVMRzFFUVVGdFJEdEJRVU51UkRzN096czdSMEZMUnp0QlFVTklMREJDUVVFd1FqdEJRVU14UWpzN096czdSMEZMUnp0QlFVTklMRFJDUVVFMFFqdEJRVU0xUWl4clJFRkJhMFE3UVU5eVdFTTdSVUZGYmtRc2JVSkJRVUU3UlVGQmMwSXNWMEZCUVR0RlFVTlVMSE5DUVVGQk8wVkJRMVVzZFVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTJJc1dVRkJRVHRGUVVOQkxHbENRVUZCTzBOUWRWaFVPMEZQZEZoak8wVkJSVllzYlVKQlFVRTdSVUZEV1N4WFFVRkJPMFZCUTFRc1UwRkJRVHRGUVVOSUxGVkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMDBzZVVOQlFVRTdWVUZCUVN4cFEwRkJRVHRGUVVOaExHbENRVUZCTzBOUWRWaDJRanRCVDNSWVV6dEZRVU5TTEdOQlFVRTdRMUIzV0VRN1FWRXhXVVE3UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hwUWtGQlFUdERValJaUkR0QlVURlpRenRGUVVORkxHTkJRVUU3UTFJMFdVZzdRVkV4V1VjN096dEZRVWRGTEZsQlFVRTdSVUZEUVN4elFrRkJRVHREVWpSWlREdEJVWHBaUnp0RlFVTkZMR1ZCUVVFN1ExSXlXVXc3UVZGMldVTTdSVUZGU1N4elFrRkJRVHREVW5kWlREdEJVVzVaUnp0RlFVTkZMR3RDUVVGQk8wTlNjVmxNTzBGUmRsbERPMFZCVFVrc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNVMEZCUVR0RlFVTkJMRzlEUVVGQk8xVkJRVUVzTkVKQlFVRTdSVUZEUVN4WFFVRkJPME5TYjFsTU8wRlRkR0ZFTzBWQlEwVXNiVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzVDBGQlFUdEZRVU5CTEZGQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTd3JRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVkhkaFJEdEJVM1JoUXp0RlNsQnpSQ3gzUTBGQlFUdFZRVUZCTEdkRFFVRkJPMFZKVTNCRUxIRkNRVUZCTzBWQlFVRXNjVUpCUVVFN1JVRkJRU3hqUVVGQk8wVkJRMEVzTmtKQlFVRTdSVUZCUVN3NFFrRkJRVHROUVVGQkxESkNRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3h6UWtGQlFUdE5RVUZCTEd0Q1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMSFZDUVVGQk8wVkJRMEVzYTBOQlFVRTdWVUZCUVN3d1FrRkJRVHRGUVVOQkxHbENRVUZCTzBOVWQyRklPMEZUY21GRE96czdSVUZIUlN4WlFVRkJPMFZCUTBFc0swSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RFZIVmhTRHRCVTNCaFF6czdSVUZGUlN4eFFrRkJRVHROUVVGQkxHVkJRVUU3UTFSellVZzdRVk51WVVNN096dEZRVWRGTEdkQ1FVRkJPME5VY1dGSU8wRlRiR0ZET3p0RlFVVkZMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEdWQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFZHOWhTRHRCVTJwaFF6dEZRVU5GTEdkQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UlVGRFFTeGxRVUZCTzBWQlEwRXNLMEpCUVVFN1ZVRkJRU3gxUWtGQlFUdEZRVU5CTEdsRFFVRkJPME5VYldGSU8wRlRhR0ZETzBWQlEwVXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVTBGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxHdENRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1JVRkRRU3hwUWtGQlFUdERWR3RoU0R0QlV5OWhRenRGUVdkQ1NTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzVVVGQlFUdERWR3RoVER0QlV5OWFSenRGUVVORkxGbEJRVUU3UTFScFlVdzdRVk0zV2tNN1JVRkRSU3h2UWtGQlFUdE5RVUZCTEZsQlFVRTdWVUZCUVN4UlFVRkJPMFZCUTBFc1pVRkJRVHREVkN0YVNEdEJVelZhUXp0RlFVTkZMR1ZCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5VT0ZwSU8wRlRNMXBETzBWQlEwVXNXVUZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEU5QlFVRTdSVUZEUVN4UlFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeDFRa0ZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hwUWtGQlFUdERWRFphU0R0QlUzWmFTenM3UlVGRFJTeGhRVUZCTzBOVU1GcFFPMEZUZGxwTE96dEZRVU5GTEdGQlFVRTdRMVF3V2xBN1FWTjJXa3M3TzBWQlEwVXNZVUZCUVR0RFZEQmFVRHRCVTNaYVN6czdSVUZEUlN4aFFVRkJPME5VTUZwUU8wRlRkbHBMT3p0RlFVTkZMR0ZCUVVFN1ExUXdXbEE3UVZOMldrczdPMFZCUTBVc1lVRkJRVHREVkRCYVVEdEJVM0phUXp0RlFVTkZMQ3RDUVVGQk8wTlVkVnBJTzBGVGJscFBPMFZCUTBVc1kwRkJRVHREVkhGYVZEdEJVMmhhVHp0RlFVTkZMR05CUVVFN1ExUnJXbFE3UVZNM1dVODdSVUZEUlN4alFVRkJPME5VSzFsVU8wRlRNVmxQTzBWQlEwVXNZMEZCUVR0RFZEUlpWRHRCVTNaWlR6dEZRVU5GTEdOQlFVRTdRMVI1V1ZRN1FWTndXVTg3UlVGRFJTeGpRVUZCTzBOVWMxbFVPMEZUYUZsRE8wVkJRMFVzWjBOQlFVRTdRMVJyV1VnN1FWTTVXRTg3UlVGRFJTeGhRVUZCTzBOVVoxbFVPMEZUTTFoUE8wVkJRMFVzWVVGQlFUdERWRFpZVkR0QlUzaFlUenRGUVVORkxHRkJRVUU3UTFRd1dGUTdRVk55V0U4N1JVRkRSU3hoUVVGQk8wTlVkVmhVTzBGVGJGaFBPMFZCUTBVc1lVRkJRVHREVkc5WVZEdEJVeTlYVHp0RlFVTkZMR0ZCUVVFN1ExUnBXRlE3UVZNelYwTTdPMFZCUlVVc1VVRkJRVHRGUVVOQkxGbEJRVUU3UTFRMlYwZzdRVk14VjBzN08wVkJRMFVzWTBGQlFUdERWRFpYVUR0QlV6RlhTenM3UlVGRFJTeGpRVUZCTzBOVU5sZFFPMEZUTVZkTE96dEZRVU5GTEdOQlFVRTdRMVEyVjFBN1FWTXhWMHM3TzBWQlEwVXNZMEZCUVR0RFZEWlhVRHRCVXpGWFN6czdSVUZEUlN4alFVRkJPME5VTmxkUU8wRlRNVmRMT3p0RlFVTkZMR05CUVVFN1ExUTJWMUE3UVZONFYwTTdSVUZEUlN4cFEwRkJRVHREVkRCWFNEdEJVM1JYVHp0RlFVTkZMRmxCUVVFN1ExUjNWMVE3UVZOdVYwODdSVUZEUlN4WlFVRkJPME5VY1ZkVU8wRlRhRmRQTzBWQlEwVXNXVUZCUVR0RFZHdFhWRHRCVXpkV1R6dEZRVU5GTEZsQlFVRTdRMVFyVmxRN1FWTXhWazg3UlVGRFJTeFpRVUZCTzBOVU5GWlVPMEZUZGxaUE8wVkJRMFVzV1VGQlFUdERWSGxXVkR0QlUyNVdRenRGUVVORkxHRkJRVUU3UlVGRFFTdzRRa0ZCUVR0RFZIRldTRHRCVTJwV1R6dEZRVU5GTEdWQlFVRTdRMVJ0VmxRN1FWTTVWVTg3UlVGRFJTeGxRVUZCTzBOVVoxWlVPMEZUTTFWUE8wVkJRMFVzWlVGQlFUdERWRFpWVkR0QlUzaFZUenRGUVVORkxHVkJRVUU3UTFRd1ZWUTdRVk55VlU4N1JVRkRSU3hsUVVGQk8wTlVkVlZVTzBGVGJGVlBPMFZCUTBVc1pVRkJRVHREVkc5VlZEdEJVemxVUXp0RlFVTkZMRzlDUVVGQk8wVkJRMEVzSzBKQlFVRTdRMVJuVlVnN1FWTTVWRWM3UlVGRFJTeG5Ra0ZCUVR0RFZHZFZURHRCVXpsVVN6dEZRVU5GTEZOQlFVRTdRMVJuVlZBN1FWTTNWRXM3UlVGRFJTeFJRVUZCTzBOVUsxUlFPMEZUTlZSTE8wVkJRMFVzVDBGQlFUdERWRGhVVUR0QlV6TlVTenRGUVVORkxGVkJRVUU3UTFRMlZGQTdRVk4wVkVzN08wVkJSVVVzZVVKQlFVRTdSVUZEUVN4VFFVRkJPMFZCUTBFc2IwTkJRVUU3VlVGQlFTdzBRa0ZCUVR0RFZIZFVVRHRCVTNKVVN6czdSVUZGUlN4M1FrRkJRVHRGUVVOQkxGVkJRVUU3UlVGRFFTeHZRMEZCUVR0VlFVRkJMRFJDUVVGQk8wTlVkVlJRTzBGVGJGUlRPMFZCUTBVc1YwRkJRVHREVkc5VVdEdEJVMnBVVXp0RlFVTkZMRlZCUVVFN1ExUnRWRmc3UVZOb1ZGTTdSVUZEUlN4VFFVRkJPME5VYTFSWU8wRlRMMU5UTzBWQlEwVXNXVUZCUVR0RFZHbFVXRHRCVTNoVFN6czdSVUZGUlN4aFFVRkJPMFZCUTBFc05rSkJRVUU3UTFRd1UxQTdRVk55VTBNN1JVRkRSU3hYUVVGQk8wTlVkVk5JTzBGVmRuTkNSRHRGUVVORkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3h4UTBGQlFUdEZRVU5CTEdWQlFVRTdRMVo1YzBKRU8wRlZkbk5DUXp0RlFVTkZMSEZEUVVGQk8wVkJRVUVzTmtKQlFVRTdRMVo1YzBKSU8wRlZkSE5DUXp0RlFVTkZMR1ZCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHbERRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3hwUWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5XZDNOQ1NEdEJWWEp6UWtNN1JVRkRSU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc2FVSkJRVUU3UTFaMWMwSklPMEZWY0hOQ1F6czdPMFZCUjBVc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3h6UWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5XYzNOQ1NEdEJWVzV6UWtNN1JVRkRSU3hwUWtGQlFUdERWbkZ6UWtnN1FWVnNjMEpETzBWQlEwVXNhMEpCUVVFN1ExWnZjMEpJTzBGVmFuTkNRenRGUVVORkxGVkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMVp0YzBKSU8wRlZhSE5DUXp0RlFVTkZMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEU5QlFVRTdSVUZEUVN4UlFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTd3dRa0ZCUVR0RlFVTkJMQ3RDUVVGQk8wVkJRMEVzYTBOQlFVRTdWVUZCUVN3d1FrRkJRVHRGUVVOQkxDdENRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3hwUWtGQlFUdERWbXR6UWtnN1FWVXZja0pETzBWRGFrVTJRaXh2UWtGQlFUdEZRVU5tTEhkQ1FVRkJPMFZCUTBjc2FVSkJRVUU3UlVScFJXWXNaVUZCUVR0RlFVTkJMR2xDUVVGQk8wTldiWE5DU0R0QlZXcHpRa2M3T3p0RlFVZEZMSE5DUVVGQk8wVkJRMEVzV1VGQlFUdERWbTF6UWt3N1FWVm9jMEpITzBWQlEwVXNaVUZCUVR0RFZtdHpRa3c3UVZVNWNrSkRPMFZCUTBVc2NVSkJRVUU3UTFabmMwSklPMEZWTTNKQ1N6czdPMFZCUjBVc1pVRkJRVHRGUVVOQkxHdENRVUZCTzBOV05uSkNVRHRCVlhoeVFrTTdPMFZCUlVVc2NVSkJRVUU3UlVGQlFTeHhRa0ZCUVR0RlFVRkJMR05CUVVFN1JVRkRRU3h6UWtGQlFUdE5RVUZCTEd0Q1FVRkJPMFZCUTBFc05rSkJRVUU3UlVGQlFTdzRRa0ZCUVR0TlFVRkJMREpDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN3clFrRkJRVHRGUVVOQkxFOUJRVUU3UlVGRFFTeHBRa0ZCUVR0RFZqQnlRa2c3UVZWMmNrSkxPenM3TzBWQlJVVXNLMEpCUVVFN1ZVRkJRU3gxUWtGQlFUdERWakp5UWxBN1FWVjRja0pMT3p0RlFVTkZMSEZDUVVGQk8wMUJRVUVzWlVGQlFUdERWakp5UWxBN1FWVjRja0pMT3p0RlFVTkZMRzlDUVVGQk8wMUJRVUVzV1VGQlFUdFZRVUZCTEZGQlFVRTdSVUZEUVN4bFFVRkJPME5XTW5KQ1VEdEJWWFJ5UWtNN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEhsRFFVRkJPME5XZDNKQ1NEdEJWWEp5UWtNN1JVRkRSU3huUWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5XZFhKQ1NEdEJWWEJ5UWtNN1JVRkRSU3hqUVVGQk8wTldjM0pDU0R0QlZXNXlRa003UlVGRFJTeFRRVUZCTzBWQlEwRXNhVUpCUVVFN1ExWnhja0pJTzBGWmNEQkNRenRGUVVORkxHTkJRVUU3UTFwek1FSklPMEZaYmpCQ1F6dEZRVU5GTERSQ1FVRkJPMFZCUTBFc09FSkJRVUU3UlVGRFFTeHhSRUZCUVR0RlFVTkJMRzlDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMXB4TUVKSU8wRlpiREJDUXp0RlFVTkZMSGxDUVVGQk8wTmFiekJDU0R0QldXd3dRa2M3UlVGRFJTeDVRa0ZCUVR0RFdtOHdRa3c3UVZscU1FSlBPMFZCUTBVc1kwRkJRVHREV20wd1FsUTdRVmszZWtKRE8wVkJRMFVzWlVGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxFOUJRVUU3UlVGRFFTeFJRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHRGUVVOQkxHbENRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3g1UTBGQlFUdEZRVU5CTEdsQ1FVRkJPME5hSzNwQ1NEdEJXVFY2UWtzN1JVRkRSU3huUWtGQlFUdEZRVU5CTEU5QlFVRTdSVUZEUVN4UlFVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNNRUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHRGUVVOQkxHdEVRVUZCTzFWQlFVRXNNRU5CUVVFN1JVRkRRU3gxUTBGQlFUdERXamg2UWxBN1FWa3pla0pMTzBWUWJrUnJSQ3gzUTBGQlFUdFZRVUZCTEdkRFFVRkJPMFZQY1VSb1JDeGxRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVTBGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeHZRa0ZCUVR0RlFVTkJMREJDUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEdsRFFVRkJPMVZCUVVFc2VVSkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3hwUWtGQlFUdERXalo2UWxBN1FWa3pla0pQTzBWQlEwVXNNRUpCUVVFN1JVRkRRU3haUVVGQk8wTmFObnBDVkR0QldXd3pRa003TzBWQk1rUk5MRFJDUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4cFFrRkJRVHREV2pKNlFsQTdRVmx5ZWtKRU8wVkJRMFU3U1VGRFJTeFhRVUZCTzBkYWRYcENSRHREUVVOR08wRlpNWHBDUkR0RlFVTkZPMGxCUTBVc1YwRkJRVHRIV25WNlFrUTdRMEZEUmp0QldYQjZRa1E3UlVGRlNUdEpRVU5GTEd0Q1FVRkJPMGRhY1hwQ1NEdEZXV3g2UWtNN1NVRkRSU3gxUWtGQlFUdEpRVU5CTEdGQlFVRTdSMXB2ZWtKSU8wVlphbnBDUXp0SlFVTkZMR1ZCUVVFN1IxcHRla0pJTzBOQlEwWTdRVmt2ZVVKRU8wVkJRMFU3TzBsQlJVVXNNa0pCUVVFN1IxcHBla0pFTzBWWk9YbENSRHRKUVVORkxEQkNRVUZCTzBsQlEwRXNhVUpCUVVFN1IxcG5la0pFTzBWWmJIcENSRHM3U1VGTlNTeHBRMEZCUVR0SlFVTkJMRGhDUVVGQk8wbEJRMEVzTWtKQlFVRTdSMXBuZWtKSU8wVlpOWGxDUnp0SlFVTkZMRGhDUVVGQk8wbEJRMEVzZDBKQlFVRTdTVUZEUVN4elFrRkJRVHRKUVVOQkxEUkNRVUZCTzBkYU9IbENURHRGV1c1NlFrTTdPMGxCVlVrc2FVTkJRVUU3U1VGRFFTdzRRa0ZCUVR0SlFVTkJMREpDUVVGQk8wZGFObmxDVER0RldURjVRa2M3TzBsQlJVVXNlVUpCUVVFN1IxbzBlVUpNTzBWWmVEQkNSRHRKUVdsRFNTeDNRa0ZCUVR0SlFVTkJMR3REUVVGQk8wbEJRMEVzT0VKQlFVRTdSMW93ZVVKSU8wVlpOekJDUkRzN1NVRjNRMGtzYTBOQlFVRTdSMXA1ZVVKSU8wVlphakZDUkRzN08wbEJPRU5KTEcxRFFVRkJPMDlCUVVFc1owTkJRVUU3V1VGQlFTeHZRa0ZCUVR0SFduZDVRa2c3UlZseWVVSkRPMGxCUTBVc2VVSkJRVUU3UjFwMWVVSklPME5CUTBZN1FVRkRSQ3hyUkVGQmEwUTdRV0Z5T1VKc1JEdEZRVU5GTEdkQ1FVRkJPMFZCUTBFc1pVRkJRVHRGUVVOQkxGVkJRVUU3UlVGRFFTeHJRMEZCUVR0VlFVRkJMREJDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMkoxT1VKRU8wRmhjamxDUXp0RlVrWnpSQ3gzUTBGQlFUdFZRVUZCTEdkRFFVRkJPMFZSU1hCRUxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTERCQ1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTd3JRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR2xDUVVGQk8wTmlkVGxDU0R0QllYSTVRa2M3UlVGRFJTeGxRVUZCTzBWQlEwRXNjMEpCUVVFN1EySjFPVUpNTzBGaGNEbENSenRGUVVORkxHTkJRVUU3UTJKek9VSk1PMEZoYWpsQ1J6czdPMFZCUjBVc1dVRkJRVHRGUVVOQkxITkNRVUZCTzBOaWJUbENURHRCWVdnNVFrYzdSVUZEUlN4bFFVRkJPME5pYXpsQ1REdEJZVGs0UWtNN1JVRkRSU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4VFFVRkJPMFZCUTBFc1ZVRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNlVU5CUVVFN1ZVRkJRU3hwUTBGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTJKbk9VSklPMEZoTXpoQ1N6dEZRVU5GTEZsQlFVRTdSVUZEUVN3d1FrRkJRVHRGUVVOQkxITkNRVUZCTzBOaU5qaENVRHRCWVRNNFFrODdSVUZEUlN4WlFVRkJPME5pTmpoQ1ZEdEJZWFk0UWtzN096dEZRVWRGTEZsQlFVRTdRMko1T0VKUU8wRmhiamhDUnp0RlFVTkZMRzlDUVVGQk8wTmljVGhDVER0QllUazNRa3M3T3pzN096czdPMFZCU1VVc2IwSkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNiVUpCUVVFN1EySnZPRUpRTzBGaGJEaENUenM3T3pzN096czdSVUZEUlN4WlFVRkJPMFZCUTBFc2JVSkJRVUU3UTJJeU9FSlVPMEZoZGpoQ1N6czdSVUZEUlN3d1FrRkJRVHREWWpBNFFsQTdRV0Z5T0VKRE96dEZRVVZGTEZWQlFVRTdSVUZEUVN4dlEwRkJRVHRWUVVGQkxEUkNRVUZCTzBOaWRUaENTRHRCWVRFNFFrTTdPMFZCVFVrc2MwSkJRVUU3UTJKM09FSk1PMEZoY0RoQ1F6dEZRVU5GTEZWQlFVRTdRMkp6T0VKSU8wRmhjRGhDUnp0RlFVTkZMRmRCUVVFN1EySnpPRUpNTzBGaGJEaENRenRGUVVORkxHRkJRVUU3UTJKdk9FSklPMEZoYkRoQ1J6dEZRVU5GTEdOQlFVRTdRMkp2T0VKTU8wRmhhRGhDUXpzN1JVRkZSU3h2UTBGQlFUdFZRVUZCTERSQ1FVRkJPMFZCUTBFc1dVRkJRVHREWW1zNFFrZzdRV0V2TjBKRE8wVkJRMFVzVTBGQlFUdEZRVU5CTEZsQlFVRTdRMkpwT0VKSU8wRmhMemRDUnp0RlFVTkZMR0ZCUVVFN1EySnBPRUpNTzBGaE56ZENRenRGUVVORkxGTkJRVUU3UlVGRFFTeFhRVUZCTzBOaUt6ZENTRHRCWVRjM1FrYzdSVUZEUlN4WlFVRkJPME5pS3pkQ1REdEJZWFEzUWtzN096czdSVUZEUlN4alFVRkJPME5pTWpkQ1VEdEJRVU5FT3pzN096dEhRVXRITzBGQlEwZ3NjMEpCUVhOQ08wRkJRM1JDTEhOQ1FVRnpRanRCUVVOMFFpeHpRa0ZCYzBJN1FXTjRiVU4wUWp0RlEydENOa0lzYlVKQlFVRTdSVlprTWtJc2QwTkJRVUU3VlVGQlFTeG5RMEZCUVR0RlUwUjBSQ3huUWtGQlFUdEZRVU5CTEdOQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxGVkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxIVkNRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMSGxEUVVGQk8wVkJRVUVzYVVOQlFVRTdSVUZEUVN4dlEwRkJRVHRWUVVGQkxEUkNRVUZCTzBWQlEwRXNhVUpCUVVFN1EyUXdiVU5FTzBGamVHMURRenRGU0doQ05rSXNiMEpCUVVFN1JVRkRaaXgzUWtGQlFUdEZSMmxDV2l4VlFVRkJPMFZCUTBFc2FVSkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNhMEpCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4cFFrRkJRVHREWkRKdFEwZzdRV040YlVORE96dEZRVVZGTEcxQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxFOUJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMR3RDUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4cFFrRkJRVHREWkRCdFEwZzdRV04yYlVORE8wVkJRMFVzVVVGQlFUdEZRVU5CTEZsQlFVRTdRMlI1YlVOSU8wRmpNMjFEUXp0RlFVdEpMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZOQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc2VVTkJRVUU3VlVGQlFTeHBRMEZCUVR0RFpIbHRRMHc3UVdOeWJVTkRPMFZCUTBVc1UwRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNXVUZCUVR0RFpIVnRRMGc3UVdNeGJVTkRPMFZCVFVrc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNVMEZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3g1UTBGQlFUdFZRVUZCTEdsRFFVRkJPME5rZFcxRFREdEJZM0J0UTBjN1JVRkRSU3haUVVGQk8wTmtjMjFEVER0QlkyeHRRME03UlVGRlNTd3dRa0ZCUVR0RFpHMXRRMHc3UVdNdmJFTkRPMFZCUlVrc01FSkJRVUU3UTJSbmJVTk1PMEZqTld4RFF6dEZRVVZKTERCQ1FVRkJPME5rTm14RFREdEJZM3BzUTBNN1JVRkZTU3d3UWtGQlFUdERaREJzUTB3N1FXTjBiRU5ETzBWQlEwVXNhVUpCUVVFN1JVRkRRU3gxUWtGQlFUdERaSGRzUTBnN1FXTnliRU5MTzBWQlEwVXNLMEpCUVVFN1JVRkRRU3d3UWtGQlFUdERaSFZzUTFBN1FXTndiRU5MTzBWQlEwVXNLMEpCUVVFN1JVRkRRU3d3UWtGQlFUdERaSE5zUTFBN1FXTnViRU5MTzBWQlEwVXNLMEpCUVVFN1JVRkRRU3d3UWtGQlFUdERaSEZzUTFBN1FXTnNiRU5MTzBWQlEwVXNLMEpCUVVFN1JVRkRRU3d3UWtGQlFUdERaRzlzUTFBN1FXTXhiVU5ETzBWQk1rSkpMRk5CUVVFN1JVRkRRU3hqUVVGQk8wTmthMnhEVER0Qll6bHRRME03UlVFclFrMHNZMEZCUVR0RFpHdHNRMUE3UVdNM2EwTkRPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RFpDdHJRMGc3UVdNMWEwTkxPMFZCUlVrc1pVRkJRVHREWkRaclExUTdRV042YTBOTE8wVkJSVWtzWlVGQlFUdERaREJyUTFRN1FXTjBhME5MTzBWQlJVa3NaVUZCUVR0RFpIVnJRMVE3UVdOdWEwTkxPMFZCUlVrc1pVRkJRVHREWkc5clExUTdRV00zYkVORE8wVkJLMEpKTEhWQ1FVRkJPME5rYVd0RFREdEJZemRxUTBNN1JVTjBTakpDTEc5Q1FVRkJPME5tYzNSRE5VSTdRV00xYWtOTE8wVkJRMFVzYVVKQlFVRTdSVUZEUVN4blFrRkJRVHREWkRocVExQTdRV05vYTBOTE8wVkRNVXAxUWl4dlFrRkJRVHRGUkdkTGJrSXNWVUZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEd0Q1FVRkJPME5rT0dwRFZEdEJZek5xUTA4N1JVRkRSU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPME5rTm1wRFZEdEJZM3BxUTBzN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPME5rTW1wRFVEdEJZM3BxUTA4N1JVRkRSU3hwUWtGQlFUdEZRVU5CTEdkQ1FVRkJPME5rTW1wRFZEdEJZM0pxUTBNN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPME5rZFdwRFNEdEJZM0JxUTBzN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPME5rYzJwRFVEdEJZMjVxUTBzN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPME5rY1dwRFVEdEJZMmhxUTBNN1JVRkRSU3hYUVVGQk8wTmthMnBEU0R0Qll5OXBRME03UlVGRFJTeGpRVUZCTzBOa2FXcERTRHRCUVVORUxESkNRVUV5UWp0QlowSjJlRU16UWp0RlFVTkZMRmRCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzTWtKQlFVRTdRMmhDZVhoRFJEdEJaMEoyZUVORE8wVkJRMFVzTWtKQlFVRTdRMmhDZVhoRFNEdEJaMEp5ZUVOSE8wVkJRMFVzYzBOQlFVRTdSVUZEUVN3eVFrRkJRVHREYUVKMWVFTk1PMEZuUW5CNFEwYzdSVUZEUlN4elEwRkJRVHRGUVVOQkxESkNRVUZCTzBOb1FuTjRRMHc3UVdkQ2JuaERSenRGUVVORkxITkRRVUZCTzBOb1FuRjRRMHc3UVdkQ2FuaERRenRGUVVORkxITkRRVUZCTzBOb1FtMTRRMGdpTENKbWFXeGxJam9pWlhoaGJYQnNaUzVqYzNNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaUE5UFQwOVBTQlRZM0p2Ykd4aVlYSWdQVDA5UFQwZ0tpOWNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWElnZTF4dUlDQjNhV1IwYURvZ04zQjRPMXh1SUNCb1pXbG5hSFE2SURkd2VEdGNiaUFnTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQTFjSGc3WEc1OVhHNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlMWFJ5WVdOckxYQnBaV05sSUh0Y2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYRzU5WEc0Nk9pMTNaV0pyYVhRdGMyTnliMnhzWW1GeUxYUm9kVzFpT25abGNuUnBZMkZzSUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqSTFLVHRjYmlBZ0xYZGxZbXRwZEMxaWIzSmtaWEl0Y21Ga2FYVnpPaUExY0hnN1hHNTlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPbWh2Y21sNmIyNTBZV3dnZTF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQnlaMkpoS0RBc0lEQXNJREFzSURBdU1qVXBPMXh1SUNBdGQyVmlhMmwwTFdKdmNtUmxjaTF5WVdScGRYTTZJRFZ3ZUR0Y2JuMWNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWEk2YUc5MlpYSWdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TVRVcE8xeHVmVnh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2kxMGFIVnRZanBvYjNabGNpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhKblltRW9NQ3dnTUN3Z01Dd2dNQzR6TlNrN1hHNTlYRzR1YzJWamRHbHZiaUI3WEc0Z0lHMWhjbWRwYmpvZ01XVnRJREE3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YzJWamRHbHZibDlmYUdWaFpHVnlMRnh1TG5ObFkzUnBiMjVmWDJOdmJuUmxiblFzWEc0dWMyVmpkR2x2Ymw5ZlptOXZkR1Z5SUh0Y2JpQWdiV0Z5WjJsdU9pQXdPMXh1SUNCd1lXUmthVzVuT2lBd0lETmxiVHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV6WldOMGFXOXVYMTkwYVhSc1pTQjdYRzRnSUdOdmJHOXlPaUFqTmpZMk8xeHVmVnh1TG5ObFkzUnBiMjVmWDJneklIdGNiaUFnWTI5c2IzSTZJQ00xTURkaFptVTdYRzRnSUdadmJuUXRjMmw2WlRvZ01TNHpOV1Z0TzF4dWZWeHVMbk5sWTNScGIyNWZYMmcwSUh0Y2JpQWdabTl1ZEMxemFYcGxPaUF4TGpGbGJUdGNiaUFnWTI5c2IzSTZJQ00yTmpZN1hHNTlYRzR1YzJWamRHbHZibDlmYURVZ2UxeHVJQ0JtYjI1MExYTnBlbVU2SURGbGJUdGNiaUFnWTI5c2IzSTZJQ001T1RrN1hHNTlYRzR1YzJWamRHbHZibDlmWkd3c1hHNHVjMlZqZEdsdmJsOWZaSFFzWEc0dWMyVmpkR2x2Ymw5ZlpHUWdlMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJSEJoWkdScGJtYzZJREE3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YzJWamRHbHZibDlmWkd3Z2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklERTdYRzU5WEc0dWMyVmpkR2x2Ymw5ZlpIUWdlMXh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYRzU5WEc0dWMyVmpkR2x2Ymw5ZlpHUWdlMXh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYRzRnSUdOdmJHOXlPaUFqTURVNE9UUXlPMXh1ZlZ4dUxuTmxZM1JwYjI1ZlgzQnlaU0I3WEc0Z0lHMWhjbWRwYmpvZ01tVnRJREE3WEc0Z0lIQmhaR1JwYm1jNklERmxiVHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhOSEI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTVRVd0pUdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWmhabUZtWVR0Y2JpQWdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJMlJrWkR0Y2JpQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ05IQjRPMXh1SUNCamIyeHZjam9nSXpZMk5qdGNiaUFnYjNabGNtWnNiM2M2SUdGMWRHODdYRzU5WEc0dWMyVmpkR2x2Ymw5ZlkyOWtaU0I3WEc0Z0lHUnBjM0JzWVhrNklHSnNiMk5yTzF4dUlDQnRZWEpuYVc0NklEQWdZWFYwYnp0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1elpXTjBhVzl1WDE5bWIyOTBaWElnZTF4dUlDQmliM0prWlhJdGRHOXdPaUF4Y0hnZ2MyOXNhV1FnSTJSa1pEdGNiaUFnYldGeVoybHVMWFJ2Y0RvZ00yVnRPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalptRm1ZV1poTzF4dUlDQmpiMnh2Y2pvZ0l6azVPVHRjYm4xY2JpNXpaV04wYVc5dVgxOTBZV0pzWlNCN1hHNGdJRzFoY21kcGJqb2dNV1Z0SUdGMWRHODdYRzRnSUhkcFpIUm9PaUF4TURBbE8xeHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYm4xY2JpNXpaV04wYVc5dVgxOTBhQ3hjYmk1elpXTjBhVzl1WDE5MFpDQjdYRzRnSUhCaFpHUnBibWM2SURWd2VDQXhObkI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTWpad2VEdGNiaUFnWW05eVpHVnlMV0p2ZEhSdmJUb2dNWEI0SUhOdmJHbGtJQ05rWkdRN1hHNTlYRzR1YzJWamRHbHZibDlmZEdnZ2UxeHVJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1ZV1poWm1FN1hHNTlYRzVBYldWa2FXRWdLRzFoZUMxM2FXUjBhRG9nTkRnd2NIZ3BJSHRjYmlBZ0xuTmxZM1JwYjI1ZlgyaGxZV1JsY2l4Y2JpQWdMbk5sWTNScGIyNWZYMk52Ym5SbGJuUWdlMXh1SUNBZ0lIQmhaR1JwYm1jNklEQWdNV1Z0TzF4dUlDQjlYRzU5WEc0dVkyRnpaU0I3WEc0Z0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNiaUFnZWkxcGJtUmxlRG9nTVR0Y2JpQWdaR2x6Y0d4aGVUb2daM0pwWkR0Y2JpQWdaM0pwWkMxMFpXMXdiR0YwWlMxamIyeDFiVzV6T2lCeVpYQmxZWFFvTWl3Z01XWnlLVHRjYmlBZ1oyRndPaUEwTUhCNE8xeHVJQ0J3WVdSa2FXNW5PaUF4WlcwN1hHNGdJR0p2Y21SbGNpMTBiM0E2SURGd2VDQnpiMnhwWkNBalpHUmtPMXh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTJSa1pEdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNWpZWE5sT21GbWRHVnlJSHRjYmlBZ1kyOXVkR1Z1ZERvZ0p5YzdYRzRnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2JpQWdlaTFwYm1SbGVEb2dNanRjYmlBZ2RHOXdPaUF3TzF4dUlDQnNaV1owT2lBMU1DVTdYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNiaUFnZDJsa2RHZzZJREE3WEc0Z0lHSnZjbVJsY2kxc1pXWjBPaUF4Y0hnZ2MyOXNhV1FnSTJSa1pEdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNWpZWE5sWDE5d2NtVXNYRzR1WTJGelpWOWZkR1Y0ZEdGeVpXRWdlMXh1SUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEc0Z0lHeHBibVV0YUdWcFoyaDBPaUF4TlRBbE8xeHVmVnh1TG1OaGMyVmZYM0J5WlN4Y2JpNWpZWE5sWDE5amIyUmxMRnh1TG1OaGMyVmZYM1JsZUhSaGNtVmhJSHRjYmlBZ1ptOXVkQzFtWVcxcGJIazZJQ2REYjNWeWFXVnlJRTVsZHljc0lFTnZibk52YkdGekxDQkhaVzl5WjJsaExDQkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFpqdGNibjFjYmk1allYTmxYMTl3Y21VZ2UxeHVJQ0J0WVhKbmFXNDZJREE3WEc0Z0lIQmhaR1JwYm1jNklERmxiVHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWmhabUZtWVR0Y2JpQWdhR1ZwWjJoME9pQXhNREFsTzF4dUlDQmliM0prWlhJdGNtRmthWFZ6T2lBMGNIZzdYRzRnSUdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdYRzRnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh1ZlZ4dUxtTmhjMlZmWDNSdmIyeGlZWElnZTF4dUlDQnRZWEpuYVc0NklEQWdZWFYwYnp0Y2JpQWdhR1ZwWjJoME9pQXpObkI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTXpad2VEdGNiaUFnWm05dWRDMXphWHBsT2lBeE5IQjRPMXh1SUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEc0Z0lIUmxlSFF0WVd4cFoyNDZJSEpwWjJoME8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtTmhjMlZmWDJGamRHbHZiaXhjYmk1allYTmxYMTl5WlcxdmRtVWdlMXh1SUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEc0Z0lHTnZiRzl5T2lBak1EVTRPVFF5TzF4dUlDQjFjMlZ5TFhObGJHVmpkRG9nYm05dVpUdGNibjFjYmk1allYTmxYMTloWTNScGIyNGdlMXh1SUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEc0Z0lIQmhaR1JwYm1jdGJHVm1kRG9nTVRCd2VEdGNibjFjYmk1allYTmxYMTloWTNScGIyNDZabWx5YzNRdFkyaHBiR1FnZTF4dUlDQndZV1JrYVc1bkxXeGxablE2SURBN1hHNTlYRzR1WTJGelpWOWZjbVZ0YjNabElIdGNiaUFnWm14dllYUTZJSEpwWjJoME8xeHVmVnh1TG1OaGMyVmZYMk52Ym5OdmJHVWdlMXh1SUNCdFlYSm5hVzQ2SURBZ1lYVjBienRjYmlBZ2FHVnBaMmgwT2lBeE9EQndlRHRjYmlBZ1ltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTVqWVhObFgxOTBaWGgwWVhKbFlTQjdYRzRnSUcxaGNtZHBiam9nTUNCaGRYUnZPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHVJQ0JpYjNKa1pYSTZJRzV2Ym1VN1hHNGdJRzkxZEd4cGJtVTZJRzV2Ym1VN1hHNGdJSEJoWkdScGJtYzZJREZsYlR0Y2JpQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1WTJGelpWOWZiR2x6ZEN4Y2JpNWpZWE5sWDE5cGRHVnRJSHRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0J3WVdSa2FXNW5PaUF3TzF4dUlDQnNhWE4wTFhOMGVXeGxMWFI1Y0dVNklHNXZibVU3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1WTJGelpWOWZiR2x6ZENCN1hHNGdJR2hsYVdkb2REb2dNell3Y0hnN1hHNGdJR0p2Y21SbGNpMTBiM0E2SURGd2VDQnpiMnhwWkNBalpHUmtPMXh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTJSa1pEdGNiaUFnWm05dWRDMXphWHBsT2lBeE0zQjRPMXh1SUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjYm4xY2JpNWpZWE5sWDE5cGRHVnRJSHRjYmlBZ2FHVnBaMmgwT2lBek5uQjRPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNelp3ZUR0Y2JpQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHVJQ0J3WVdSa2FXNW5PaUF3SURFMmNIZzdYRzU5WEc0dVkyRnpaVjlmYVhSbGJUcG9iM1psY2lCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tTjJZNFpqazdYRzU5WEc0dktpcGNiaUFxSUcxcGVHbHVjeTVzWlhOeklDMGc1YmVsNVlXMzVZZTk1cFd3WEc0Z0tpQTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNGdLaUJEY21WaGRHVmtJRUo1T2lCWllXOW9ZV2w0YVdGdlhHNGdLaUJWY0dSaGRHVTZJREl3TWpJdU15NHhNVnh1SUNvdlhHNHZLaUE5UFQwOVBUMGc1cGFINXB5czU1eUI1NVdsNVllOTVwV3dJRDA5UFQwOVBTQXFMMXh1THlvZ1BUMDlQVDA5SU9XY2h1aW5rdWFndCtXOGoraXV2dWU5cnVXSHZlYVZzQ0E5UFQwOVBUMGdLaTljYmk4cUlEMDlQVDA5UFNEcG1MVGx2Ykhtb0xmbHZJL29ycjdudmE3bGg3M21sYkFnUFQwOVBUMDlJQ292WEc0dWNHRndaWElnZTF4dUlDQmliM2d0YzJoaFpHOTNPaUF3SURBZ05uQjRJREZ3ZUNBalpHTmtabVUyTzF4dUlDQnRZWEpuYVc0NklETmxiU0JoZFhSdk8xeHVJQ0J0WVhndGQybGtkR2c2SURFeU1EQndlRHRjYmlBZ2NHRmtaR2x1WnpvZ01tVnRPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalptWm1PMXh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1ZlZ4dUxuQmhjR1Z5TG1ac1pYZ2dlMXh1SUNCa2FYTndiR0Y1T2lCbWJHVjRPMXh1SUNCbWJHVjRMV1JwY21WamRHbHZiam9nY205M08xeHVJQ0JtYkdWNExYZHlZWEE2SUc1dmQzSmhjRHRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0IzYVdSMGFEb2dNVEF3SlR0Y2JpQWdiV0Y0TFhkcFpIUm9PaUF4TURBbE8xeHVJQ0JvWldsbmFIUTZJREV3TUNVN1hHNGdJSEJoWkdScGJtYzZJREE3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1Y0dGd1pYSXVabXhsZUNBdVlYSjBhV05zWlNCN1hHNGdJR1pzWlhndFpHbHlaV04wYVc5dU9pQmpiMngxYlc0N1hHNGdJSGRwWkhSb09pQXhNREFsTzF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dWZWeHVMbkJoY0dWeUxtWnNaWGdnTG1GeWRHbGpiR1ZmWDIxaGFXNGdlMXh1SUNCb1pXbG5hSFE2SURFd01DVTdYRzRnSUdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdYRzRnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh1ZlZ4dUxuQmhjR1Z5TG1ac1pYZ2dMbUZ5ZEdsamJHVmZYMkZ6YVdSbElIdGNiaUFnWW05eVpHVnlMWEpwWjJoME9pQXhjSGdnYzI5c2FXUWdJMlJqWkdabE5qdGNibjFjYmk1b1pXRmtaWElnZTF4dUlDQndiM05wZEdsdmJqb2djM1JwWTJ0NU8xeHVJQ0I2TFdsdVpHVjRPaUF6TzF4dUlDQjBiM0E2SURBN1hHNGdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHVJQ0JpYjNKa1pYSXRZbTkwZEc5dE9pQXhjSGdnYzI5c2FXUWdJMlJrWkR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmp0Y2JpQWdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPMXh1SUNCMGNtRnVjMmwwYVc5dUxXUjFjbUYwYVc5dU9pQXdMak56TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG1obFlXUmxjbDl6ZEdsamEza2dlMXh1SUNCd1lXUmthVzVuTFd4bFpuUTZJREkyTUhCNE8xeHVmVnh1TG1GeWRHbGpiR1VnZTF4dUlDQmthWE53YkdGNU9pQm1iR1Y0TzF4dUlDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ2NtOTNPMXh1SUNCbWJHVjRMWGR5WVhBNklHNXZkM0poY0R0Y2JpQWdjR0ZrWkdsdVp6b2dNbVZ0SURBN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVRad2VEdGNiaUFnYkdsdVpTMW9aV2xuYUhRNklERTFNQ1U3WEc1OVhHNHVZWEowYVdOc1pWOWZiV0ZwYmlCN1hHNGdJR1pzWlhnNklERTdYRzRnSUhCaFpHUnBibWM2SURBZ01tVnRPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbUZ5ZEdsamJHVmZYMjFoYVc0Z0xuTmxZM1JwYjI0Z2UxeHVJQ0J2ZG1WeVpteHZkem9nZG1semFXSnNaVHRjYm4xY2JpNWhjblJwWTJ4bFgxOXRZV2x1SUM1elpXTjBhVzl1WDE5amIyNTBaVzUwTEZ4dUxtRnlkR2xqYkdWZlgyMWhhVzRnTG5ObFkzUnBiMjVmWDJadmIzUmxjaXhjYmk1aGNuUnBZMnhsWDE5dFlXbHVJQzV6WldOMGFXOXVYMTlvWldGa1pYSWdlMXh1SUNCdmRtVnlabXh2ZHpvZ2RtbHphV0pzWlR0Y2JuMWNiaTVoY25ScFkyeGxYMTl0WVdsdUlDNXpaV04wYVc5dVgxOW9aV0ZrWlhJc1hHNHVZWEowYVdOc1pWOWZiV0ZwYmlBdWMyVmpkR2x2Ymw5ZlkyOXVkR1Z1ZENCN1hHNGdJRzFoY21kcGJqb2dNRHRjYm4xY2JpNWhjblJwWTJ4bFgxOWhjMmxrWlNCN1hHNGdJR1pzWlhndGMyaHlhVzVyT2lBd08xeHVJQ0IzYVdSMGFEb2dNalF3Y0hnN1hHNGdJR0p2Y21SbGNpMXNaV1owT2lBeGNIZ2djMjlzYVdRZ0kyUmtaRHRjYm4xY2JpNWhjblJwWTJ4bFgxOWhjMmxrWlM1c2RISWdlMXh1SUNCaWIzSmtaWEl0Y21sbmFIUTZJREZ3ZUNCemIyeHBaQ0FqWkdSa08xeHVJQ0JpYjNKa1pYSXRiR1ZtZERvZ2JtOXVaVHRjYm4xY2JpNWhjblJwWTJ4bFgxOWhjMmxrWlNBdWIzVjBiR2x1WlMxamFHRndkR1Z5Y3lCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN1hHNTlYRzV3Y21Vc1hHNHVjMlZqZEdsdmJsOWZjSEpsSUh0Y2JpQWdjR0ZrWkdsdVp6b2dNbVZ0TzF4dUlDQm1iMjUwTFdaaGJXbHNlVG9nSjBOdmRYSnBaWElnVG1WM0p5d2dRWEpwWVd3c0lITmhibk10YzJWeWFXWTdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVlXWmhabUU3WEc0Z0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4dWZWeHVZMjlrWlN4Y2JpNXpaV04wYVc5dVgxOWpiMlJsSUh0Y2JpQWdabTl1ZEMxbVlXMXBiSGs2SUNkRGIzVnlhV1Z5SUU1bGR5Y3NJRUZ5YVdGc0xDQnpZVzV6TFhObGNtbG1PMXh1SUNCbWIyNTBMWE5wZW1VNklERTJjSGc3WEc1OVhHNHVabTl2ZEdWeUlIdGNiaUFnWW05eVpHVnlMWFJ2Y0RvZ01YQjRJSE52Ykdsa0lDTmtZMlJtWlRZN1hHNGdJSEJoWkdScGJtYzZJRE5sYlNBd08xeHVJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEc1OVhHNHVabTl2ZEdWeUlHRTZiR2x1YXl4Y2JpNW1iMjkwWlhJZ1lUcDJhWE5wZEdWa0xGeHVMbVp2YjNSbGNpQmhPbWh2ZG1WeUlIdGNiaUFnZEdWNGRDMWtaV052Y21GMGFXOXVPaUJ1YjI1bE8xeHVJQ0JqYjJ4dmNqb2dJekExT0RrME1qdGNibjFjYmk1bWIyOTBaWElnWVRwb2IzWmxjaUI3WEc0Z0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2RXNWtaWEpzYVc1bE8xeHVmVnh1TG5WMGFXeHpMV0p2Y21SbGNpMXlhV2RvZENCN1hHNGdJR0p2Y21SbGNpMXlhV2RvZERvZ01YQjRJSE52Ykdsa0lDTmtZMlJtWlRZN1hHNTlYRzR1YUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JrQnRaV1JwWVNBb2JXRjRMWGRwWkhSb09pQTBPREJ3ZUNrZ2UxeHVJQ0JvZEcxc0xGeHVJQ0JpYjJSNUlIdGNiaUFnSUNCdFlYSm5hVzQ2SURBN1hHNGdJSDFjYmlBZ0xuQmhjR1Z5SUh0Y2JpQWdJQ0J0WVhKbmFXNDZJREE3WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNRHRjYmlBZ2ZWeHVJQ0F1WVhKMGFXTnNaVjlmYldGcGJpQjdYRzRnSUNBZ2NHRmtaR2x1WnpvZ01DQXlaVzA3WEc0Z0lIMWNibjFjYmpweWIyOTBJSHRjYmlBZ0xTMXZkWFJzYVc1bExYcEpibVJsZURvZ01qQXdNRHRjYmlBZ0xTMXZkWFJzYVc1bExYTjBhV05yZVMxb1pXbG5hSFE2SURFd01DVTdYRzRnSUMwdGIzVjBiR2x1WlMxamFHRndkR1Z5Y3kxM2FXUjBhRG9nTVRBd0pUdGNibjFjYmk4cUlEMDlQVDA5UFQwOVBUMGdZMjlzYjNKekxuUm9aVzFsSUMwZzVaKzY1NkdBNmFLYzZJbXk1WStZNlllUDZadUc1WkNJSUQwOVBUMDlQVDA5UFQwZ0tpOWNiaThxS2x4dUlDb2daV3hzYVhCemFYTXViR1Z6Y3lBdElPYVdoK2Fjck9lY2dlZVZwU0J0YVhocGJuZ2c1WWU5NXBXd1hHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR4TVZ4dUlDb3ZYRzR2S2lBOVBUMDlQVDBnNXBhSDVweXM1NXlCNTVXbDVZZTk1cFd3SUQwOVBUMDlQU0FxTDF4dUx5b3FYRzRnS2lCemFHRmtiM2N1YkdWemN5QXRJT21ZdE9XOXNlYWd0K1c4aitpdXZ1ZTlyaUJ0YVhocGJuZ2c1WWU5NXBXd1hHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR5TUZ4dUlDb3ZYRzR2S2lBOVBUMDlQVDBnNlppMDViMng1cUMzNWJ5UDZLNis1NzJ1NVllOTVwV3dJRDA5UFQwOVBTQXFMMXh1THlvZ1BUMDlQVDA5UFQwOVBTQnBZMjl1TG5Sb1pXMWxJQzBnYzNabklPV2J2dWFnaCtlYWhPYWd0K1c4anlBOVBUMDlQVDA5UFQwOUlDb3ZYRzR1YjNWMGJHbHVaUzFwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4dUlDQjZMV2x1WkdWNE9pQXhPMXh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYRzRnSUhabGNuUnBZMkZzTFdGc2FXZHVPaUJ0YVdSa2JHVTdYRzRnSUhkcFpIUm9PaUF4WlcwN1hHNGdJR2hsYVdkb2REb2dNV1Z0TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0YVdOdmJsOWZjM1puSUh0Y2JpQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPMXh1SUNCNkxXbHVaR1Y0T2lBeU8xeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2JHVm1kRG9nTlRBbE8xeHVJQ0IzYVdSMGFEb2dNV1Z0TzF4dUlDQm9aV2xuYUhRNklERmxiVHRjYmlBZ1ptbHNiRG9nWTNWeWNtVnVkR052Ykc5eU8xeHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlNndE5UQWxMQ0F0TlRBbEtUdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExXbGpiMjVmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1jZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklERTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMW9aV0ZrYVc1blgxOWhibU5vYjNJZ2UxeHVJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHVmVnh1TG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMW9aV0ZrYVc1blgxOWhibU5vYjNJNmRtbHphWFJsWkN4Y2JpNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2pwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak9UazVPMXh1SUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0k2YUc5MlpYSWdlMXh1SUNCamIyeHZjam9nSXpVd04yRm1aVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1jNmFHOTJaWElnTG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlJSHRjYmlBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh1ZlZ4dUxtOTFkR3hwYm1VdGFHVmhaR2x1WjE5emRHRnlkRHBvYjNabGNpQjdYRzRnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4dWZWeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVoxOXpkR0Z5ZENBdWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0lnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpWa29MVFV3SlNrN1hHNGdJR3hsWm5RNklDMHhaVzA3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklDMHhPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNiaUFnZG1semFXSnBiR2wwZVRvZ2FHbGtaR1Z1TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTl0YjJSaGJDQjdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0EyY0hnZ01YQjRJQ05rWTJSbVpUWTdYRzRnSUdScGMzQnNZWGs2SUdac1pYZzdYRzRnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYRzRnSUdac1pYZ3RkM0poY0RvZ2JtOTNjbUZ3TzF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJeE8xeHVJQ0JvWldsbmFIUTZJREV3TUNVN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN1hHNGdJSFJ5WVc1emFYUnBiMjR0WkhWeVlYUnBiMjQ2SURBdU5ITTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyaGxZV1JsY2l4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmJXRnBiaXhjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWm05dmRHVnlJSHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWDJobFlXUmxjaXhjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWm05dmRHVnlJSHRjYmlBZ1pteGxlQzF6YUhKcGJtczZJREE3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgzUnBkR3hsTEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5dFlXbHVMRnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTltYjI5MFpYSWdlMXh1SUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyaGxZV1JsY2l4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmRHbDBiR1VnZTF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHVJQ0JvWldsbmFIUTZJRFV5Y0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBMU1uQjRPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOTBhWFJzWlNCN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVRad2VEdGNiaUFnWm05dWRDMTNaV2xuYUhRNklEUXdNRHRjYmlBZ2JXRnlaMmx1T2lBd0lERTJjSGc3WEc0Z0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc0Z0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNBalpHTmtabVUyTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOWpiRzl6WlNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lISnBaMmgwT2lBeE1uQjRPMXh1SUNCM2FXUjBhRG9nTWpCd2VEdGNiaUFnYUdWcFoyaDBPaUF5TUhCNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01qQndlRHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUdadmJuUXRjMmw2WlRvZ01qQndlRHRjYmlBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWTJ4dmMyVWdMbTkxZEd4cGJtVXRhV052YmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQXdPMXh1SUNCc1pXWjBPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOWpiRzl6WlRwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak5qWTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5dFlXbHVJSHRjYmlBZ1pteGxlRG9nTVR0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYMlp2YjNSbGNpQjdYRzRnSUcxaGNtZHBiam9nTUNCaGRYUnZPMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQnlhV2RvZER0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmYjNabGNteGhlU0I3WEc0Z0lHTnZiblJsYm5RNklDY25PMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNGdJSG90YVc1a1pYZzZJREU3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnZDJsa2RHZzZJREV3TUNVN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmp0Y2JpQWdiM0JoWTJsMGVUb2dNQzR4TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDkwYVc1NUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBhVzU1SUh0Y2JpQWdkMmxrZEdnNklESTRNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRhVzVwTEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4MGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5dGFXNXBJSHRjYmlBZ2QybGtkR2c2SURRNE1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQ3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlzZEhJdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd2dlMXh1SUNCM2FXUjBhRG9nTlRRd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWElzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWElnZTF4dUlDQjNhV1IwYURvZ05qZ3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMWxaR2wxYlN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXVmthWFZ0SUh0Y2JpQWdkMmxrZEdnNklEY3lNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlVnZTF4dUlDQjNhV1IwYURvZ09UWXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNJSHRjYmlBZ1ltOXlaR1Z5TFd4bFpuUTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5MGFXNTVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJSEpwWjJoME9pQXRNamt3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzTG05MWRHeHBibVV0WkhKaGQyVnlYMjFwYm1rdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2NtbG5hSFE2SUMwME9UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5eWRHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZmMyMWhiR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnY21sbmFIUTZJQzAxTlRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3dWIzVjBiR2x1WlMxa2NtRjNaWEpmY21WbmRXeGhjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0J5YVdkb2REb2dMVFk1TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl0WldScGRXMHViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdjbWxuYUhRNklDMDNNekJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2NtbG5hSFE2SUMwNU56QndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISWdlMXh1SUNCaWIzSmtaWEl0Y21sbmFIUTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4MGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGFXNTVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMHlPVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZiV2x1YVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0TkRrd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNOdFlXeHNMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMDFOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQnNaV1owT2lBdE5qa3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMWxaR2wxYlM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0TnpNd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMDVOekJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0lzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMElIdGNiaUFnYkdWbWREb2dNRHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNScGJua3NYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYM1JwYm5rZ2UxeHVJQ0JvWldsbmFIUTZJREkwTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl0YVc1cExGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgySjBkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRhVzVwSUh0Y2JpQWdhR1ZwWjJoME9pQXpNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZjMjFoYkd3c1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlluUjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgzTnRZV3hzSUh0Y2JpQWdhR1ZwWjJoME9pQXpOakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpeGNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpQjdYRzRnSUdobGFXZG9kRG9nTkRBd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxbFpHbDFiU3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYldWa2FYVnRJSHRjYmlBZ2FHVnBaMmgwT2lBME5EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlVzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMExtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxJSHRjYmlBZ2FHVnBaMmgwT2lBME9EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSWdlMXh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTJSalpHWmxOanRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmRHbHVlUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0IwYjNBNklDMHlOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZiV2x1YVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCMGIzQTZJQzB6TXpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDkwZEdJdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdkRzl3T2lBdE16Y3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmRIUmlMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSmxaM1ZzWVhJdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2RHOXdPaUF0TkRFd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxbFpHbDFiUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0IwYjNBNklDMDBOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2RHOXdPaUF0TkRrd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMElIdGNiaUFnZEc5d09pQnBibWwwYVdGc08xeHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ0kyUmpaR1psTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZkR2x1ZVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCaWIzUjBiMjA2SUMweU5UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXbHVhUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0JpYjNSMGIyMDZJQzB6TXpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdZbTkwZEc5dE9pQXRNemN3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYM0psWjNWc1lYSXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdZbTkwZEc5dE9pQXROREV3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYMjFsWkdsMWJTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQmliM1IwYjIwNklDMDBOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ1ltOTBkRzl0T2lBdE5Ea3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmIzQmxibVZrSUh0Y2JpQWdkbWx6YVdKcGJHbDBlVG9nZG1semFXSnNaVHRjYmlBZ2VpMXBibVJsZURvZ2RtRnlLQzB0YjNWMGJHbHVaUzE2U1c1a1pYZ3BPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDI5d1pXNWxaQzV2ZFhSc2FXNWxMV1J5WVhkbGNpQjdYRzRnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzSUh0Y2JpQWdjbWxuYUhRNklEQTdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjNCbGJtVmtMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHeGxablE2SURBN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNSMFlpQjdYRzRnSUhSdmNEb2dNRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwSUh0Y2JpQWdZbTkwZEc5dE9pQXdPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDI5bVpuTmxkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3dzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHaGxhV2RvZERvZ1kyRnNZeWd4TURBbElDMGdOR1Z0S1R0Y2JpQWdkRzl3T2lBMU1DVTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXZabVp6WlhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRZ2UxeHVJQ0IzYVdSMGFEb2dZMkZzWXlneE1EQWxJQzBnTkdWdEtUdGNiaUFnYkdWbWREb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3Z2UxeHVJQ0J5YVdkb2REb2dNbVZ0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Y0dWdVpXUXViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlJSHRjYmlBZ2JHVm1kRG9nTW1WdE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMjltWm5ObGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZkSFJpSUh0Y2JpQWdkRzl3T2lBeVpXMDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRZ2UxeHVJQ0JpYjNSMGIyMDZJREpsYlR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWhkWFJ2TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aGRYUnZMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHaGxhV2RvZERvZ1lYVjBienRjYmlBZ2JXRjRMV2hsYVdkb2REb2dZMkZzWXlneE1EQWxJQzBnTkdWdEtUdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDltZFd4c0lIdGNiaUFnY0dGa1pHbHVaem9nTUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpJSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhkcFpIUm9PaUIyWVhJb0xTMXZkWFJzYVc1bExXTm9ZWEIwWlhKekxYZHBaSFJvS1R0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljeTF3WVhKbGJuUWdlMXh1SUNCMGNtRnVjMmwwYVc5dU9pQXdMak56SUdWaGMyVXRhVzR0YjNWME8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDNScGRHeGxJSHRjYmlBZ2JXRnlaMmx1T2lBd0lERTJjSGc3WEc0Z0lHaGxhV2RvZERvZ05EQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTVRad2VEdGNiaUFnWW05eVpHVnlMV0p2ZEhSdmJUb2dNWEI0SUhOdmJHbGtJQ05rWTJSbVpUWTdYRzRnSUdadmJuUXRjMmw2WlRvZ01UWndlRHRjYmlBZ1ptOXVkQzEzWldsbmFIUTZJRFF3TUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5dFlXbHVJSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZiR2x6ZEN4Y2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXpkV0pxWldOMExGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMmwwWlcwZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklESTdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdjR0ZrWkdsdVp6b2dNRHRjYmlBZ2JHbHpkQzF6ZEhsc1pTMTBlWEJsT2lCdWIyNWxPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMnhwYzNRZ2UxeHVJQ0J3WVdSa2FXNW5PaUF3TGpWbGJTQXdPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzTjFZbXBsWTNRZ2UxeHVJQ0J3WVdSa2FXNW5MV3hsWm5RNklERmxiVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXBkR1Z0SUh0Y2JpQWdiV0Z5WjJsdU9pQXdPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNekJ3ZUR0Y2JpQWdabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzQnNZV05sYUc5c1pHVnlJSHRjYmlBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQjBiM0E2SURBN1hHNGdJR3hsWm5RNklEQTdYRzRnSUhkcFpIUm9PaUF4TURBbE8xeHVJQ0JvWldsbmFIUTZJRE13Y0hnN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tTjJZNFpqazdYRzRnSUdKdmNtUmxjaTFzWldaME9pQXljSGdnYzI5c2FXUWdJekExT0RrME1qdGNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNHljenRjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSWdlMXh1SUNCM2FHbDBaUzF6Y0dGalpUb2dibTkzY21Gd08xeHVJQ0IwWlhoMExXOTJaWEptYkc5M09pQmxiR3hwY0hOcGN6dGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYmlBZ1pHbHpjR3hoZVRvZ1lteHZZMnM3WEc0Z0lIQmhaR1JwYm1jNklEQWdNUzQxWlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9uWnBjMmwwWldRc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4dUlDQmpiMnh2Y2pvZ0l6VTFOVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOWhibU5vYjNJNmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTlqYjJSbElIdGNiaUFnY0dGa1pHbHVaeTF5YVdkb2REb2dNQzQxWlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlvYVdkb2JHbG5hSFF1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW9hV2RvYkdsbmFIUXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9uWnBjMmwwWldRc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW9hV2RvYkdsbmFIUXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTXdOVGc1TkRJN1hHNGdJR1p2Ym5RdGQyVnBaMmgwT2lCaWIyeGtPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZmMzUnBZMnQ1TEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnZTF4dUlDQmthWE53YkdGNU9pQm1iR1Y0TzF4dUlDQm1iR1Y0TFhkeVlYQTZJRzV2ZDNKaGNEdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJR052YkhWdGJqdGNiaUFnZWkxcGJtUmxlRG9nZG1GeUtDMHRiM1YwYkdsdVpTMTZTVzVrWlhncE8xeHVJQ0IwYjNBNklEQTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOXpkR2xqYTNrZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzUnBkR3hsTEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDNScGRHeGxMRnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mYzNScFkydDVJQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTl0WVdsdUxGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZabWw0WldRZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyMWhhVzRnZTF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZjM1JwWTJ0NUlDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOTBhWFJzWlN4Y2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgyWnBlR1ZrSUM1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5MGFYUnNaU0I3WEc0Z0lHWnNaWGd0YzJoeWFXNXJPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZjM1JwWTJ0NUlDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXRZV2x1TEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDIxaGFXNGdlMXh1SUNCbWJHVjRPaUF4TzF4dUlDQnZkbVZ5Wm14dmR6b2dZWFYwYnp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYM04wYVdOcmVTQjdYRzRnSUhCdmMybDBhVzl1T2lCemRHbGphM2s3WEc0Z0lHMWhlQzFvWldsbmFIUTZJSFpoY2lndExXOTFkR3hwYm1VdGMzUnBZMnQ1TFdobGFXZG9kQ2s3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNiaUFnYldGNExXaGxhV2RvZERvZ01UQXdKVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgyaHBaR1JsYmlCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTltYjJ4a1pXUWdlMXh1SUNCM2FXUjBhRG9nTUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDlmWTJ4dmMyVWdlMXh1SUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh1ZlZ4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5MGFYUnNaU0I3WEc0Z0lHMWhjbWRwYmpvZ01DNDJOMlZ0SURBZ0lXbHRjRzl5ZEdGdWREdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5SUNGcGJYQnZjblJoYm5RN1hHNGdJR1p2Ym5RdFptRnRhV3g1T2lBblRXbGpjbTl6YjJaMElGbGhTR1ZwSUZWSkp5d2dRWEpwWVd3c0lITmhibk10YzJWeWFXWTdYRzRnSUdadmJuUXRkMlZwWjJoME9pQnViM0p0WVd3N1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxeVpXRmtaWEpmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4dWZWeHVMbTkxZEd4cGJtVXRjbVZoWkdWeVgyaHBaR1JsYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDl6YVdKc2FXNW5JSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4dWZWeHVMbTkxZEd4cGJtVXRjbVZoWkdWeVgyaHBaR1JsYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDl6YVdKc2FXNW5MbmR5WVhCd1pYSXVjRzl6ZENCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzF5WldGa1pYSXRMWEpsWVdScGJtY2dlMXh1SUNCa2FYTndiR0Y1T2lCaWJHOWphenRjYmlBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJSGRwWkhSb09pQXhNREFsTzF4dUlDQm9aV2xuYUhRNklERXdNQ1U3WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNiaUFnY0dGa1pHbHVaem9nTTJWdElEUmxiVHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1aanRjYmlBZ2MyTnliMnhzTFhScGJXVnNhVzVsTFc1aGJXVTZJQzB0VUhKdlozSmxjM05VYVcxbGJHbHVaVHRjYmlBZ2IzWmxjbVpzYjNjNklITmpjbTlzYkR0Y2JuMWNiaTV2ZFhSc2FXNWxMWEpsWVdSbGNpMHRjbVZoWkdsdVp5QXViM1YwYkdsdVpTMXlaV0ZrWlhKZlgzQnliMmR5WlhOeklIdGNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJSG90YVc1a1pYZzZJRE03WEc0Z0lHaGxhV2RvZERvZ05IQjRPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpVd04yRm1aVHRjYmlBZ2MyTmhiR1U2SURBZ01UdGNiaUFnZEhKaGJuTm1iM0p0TFc5eWFXZHBiam9nYkdWbWREdGNiaUFnWVc1cGJXRjBhVzl1T2lCdmRYUnNhVzVsTFhKbFlXUmxjaTF3Y205bmNtVnpjeUJzYVc1bFlYSTdYRzRnSUdGdWFXMWhkR2x2YmkxMGFXMWxiR2x1WlRvZ0xTMVFjbTluY21WemMxUnBiV1ZzYVc1bE8xeHVmVnh1TG05MWRHeHBibVV0Y21WaFpHVnlMUzF5WldGa2FXNW5JQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZZMnh2YzJVZ2UxeHVJQ0JpYjNndGMyaGhaRzkzT2lBd0lEQWdObkI0SURGd2VDQWpaR05rWm1VMk8xeHVJQ0JrYVhOd2JHRjVPaUJpYkc5amF6dGNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh1SUNCNkxXbHVaR1Y0T2lBek8xeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2NtbG5hSFE2SURJeWNIZzdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdkMmxrZEdnNklETTJjSGc3WEc0Z0lHaGxhV2RvZERvZ016WndlRHRjYmlBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTVRod2VEdGNiaUFnWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSTJSalpHWmxOanRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRE13Y0hnN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0E0Y0hnZ0kyUmtaRHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMXlaV0ZrWlhJdExYSmxZV1JwYm1jZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5amJHOXpaVHBvYjNabGNpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNNd05UZzVOREk3WEc0Z0lHTnZiRzl5T2lBalptWm1PMXh1ZlZ4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5TFMxeVpXRmthVzVuSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUJvTVN4Y2JpNXZkWFJzYVc1bExYSmxZV1JsY2kwdGNtVmhaR2x1WnlBdWIzVjBiR2x1WlMxeVpXRmtaWEpmWDNScGRHeGxJSHRjYmlBZ2JXRnlaMmx1T2lBd0xqWTNaVzBnTUNBaGFXMXdiM0owWVc1ME8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01TNHpaVzA3WEc0Z0lHWnZiblF0YzJsNlpUb2dNeTQxWlcwN1hHNTlYRzVBYTJWNVpuSmhiV1Z6SUc5MWRHeHBibVV0Y21WaFpHVnlMWEJ5YjJkeVpYTnpJSHRjYmlBZ2RHOGdlMXh1SUNBZ0lITmpZV3hsT2lBeElERTdYRzRnSUgxY2JuMWNia0J0WldScFlTQW9iV0Y0TFhkcFpIUm9PaUEwT0RCd2VDa2dlMXh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl0TFhKbFlXUnBibWNnZTF4dUlDQWdJSEJoWkdScGJtYzZJREFnTVM0eU5XVnRPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZZMnh2YzJVZ2UxeHVJQ0FnSUhKcFoyaDBPaUF4TW5CNElDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ2IzQmhZMmwwZVRvZ01DNDRPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZkR2wwYkdVZ2UxeHVJQ0FnSUdadmJuUXRjMmw2WlRvZ01tVnRPMXh1SUNCOVhHNTlYRzVBYldWa2FXRWdjSEpwYm5RZ2UxeHVJQ0JvZEcxc0xGeHVJQ0JpYjJSNUlIdGNiaUFnSUNCb1pXbG5hSFE2SUdsdWFYUnBZV3dnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnZTF4dUlDQWdJR1JwYzNCc1lYazZJR0pzYjJOcklDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnYURFc1hHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZkR2wwYkdVZ2UxeHVJQ0FnSUcxaGNtZHBiam9nTVRNdU5IQjBJREFnTWpod2RDQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNpQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNakJ3ZENBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjaTB0Y21WaFpHbHVaeUI3WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lDQWdhR1ZwWjJoME9pQmhkWFJ2SUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnY0dGa1pHbHVaem9nTUNBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzRnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl1YjNWMGJHbHVaUzF5WldGa1pYSWdhREVzWEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjbDlmZEdsMGJHVWdlMXh1SUNBZ0lHMWhjbWRwYmpvZ01UTXVOSEIwSURBZ01qaHdkQ0FoYVcxd2IzSjBZVzUwTzF4dUlDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjaUFoYVcxd2IzSjBZVzUwTzF4dUlDQWdJR1p2Ym5RdGMybDZaVG9nTWpCd2RDQWhhVzF3YjNKMFlXNTBPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpNXZkWFJzYVc1bExYSmxZV1JsY2w5ZlkyeHZjMlVzWEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjbDlmY0hKdlozSmxjM01nZTF4dUlDQWdJR1JwYzNCc1lYazZJRzV2Ym1VZ0lXbHRjRzl5ZEdGdWREdGNiaUFnZlZ4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ2NISmxJSHRjYmlBZ0lDQndZV1JrYVc1bk9pQXhaVzBnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdJQ0JpYjNKa1pYSTZJREZ3ZUNCemIyeHBaQ0FqWkdSa0lDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTkhCNElDRnBiWEJ2Y25SaGJuUTdYRzRnSUgxY2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUlIQnlaU3hjYmlBZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUdOdlpHVWdlMXh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVlnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnZEdGaWJHVXNYRzRnSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUJwYldjc1hHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpQnpkbWNnZTF4dUlDQWdJR0p5WldGckxXbHVjMmxrWlRvZ1lYWnZhV1E3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYM05wWW14cGJtY2dlMXh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1ZlZ4dUx5b2dQVDA5UFQwOVBUMDlQU0JpZFhSMGIyNXpMblJvWlcxbElDMGc1b3lKNlpLdTVhKzg2SWlxNXFDMzVieVBJRDA5UFQwOVBUMDlQVDBnS2k5Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhJZ2UxeHVJQ0J3YjNOcGRHbHZiam9nWm1sNFpXUTdYRzRnSUhvdGFXNWtaWGc2SURrNU9UazVPMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJSFJ5WVc1emFYUnBiMjR0WkhWeVlYUnBiMjQ2SURBdU0zTTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0Z2UxeHVJQ0JpYjNndGMyaGhaRzkzT2lBd0lEQWdObkI0SURGd2VDQWpaR05rWm1VMk8xeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklERTdYRzRnSUcxaGNtZHBiam9nTVRCd2VEdGNiaUFnZDJsa2RHZzZJRE0yY0hnN1hHNGdJR2hsYVdkb2REb2dNelp3ZUR0Y2JpQWdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJMlJqWkdabE5qdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNM0I0TzF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTzF4dUlDQmpkWEp6YjNJNklIQnZhVzUwWlhJN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0NmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JpQWdZbTl5WkdWeUxXTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxtaHBaR1VnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZVzVqYUc5eU9teHBibXNzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2ZG1semFYUmxaQ3hjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqT1RrNU8xeHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJekExT0RrME1qdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJsamIyNGdlMXh1SUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTlRBbE8xeHVJQ0JzWldaME9pQTFNQ1U3WEc0Z0lIZHBaSFJvT2lBeU1IQjRPMXh1SUNCb1pXbG5hSFE2SURJd2NIZzdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbEtDMDFNQ1VzSUMwMU1DVXBPMXh1SUNCbWFXeHNPaUJqZFhKeVpXNTBZMjlzYjNJN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJGamRHbDJaUzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYRzRnSUdOdmJHOXlPaUFqWm1abU8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqTURVNE9UUXlPMXh1SUNCaWIzSmtaWEl0WTI5c2IzSTZJQ013TlRnNU5ESTdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJGamRHbDJaUzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJqcG9iM1psY2lCN1hHNGdJR052Ykc5eU9pQWpabVptTzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWhZM1JwZG1VZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T214cGJtc3NYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkZqZEdsMlpTQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmRtbHphWFJsWkN4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZllXTjBhWFpsSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqWm1abU8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDl5YjNWdVpHVmtMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNVGh3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmJHbHVheXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T25acGMybDBaV1FzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanAyYVhOcGRHVmtMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcG9iM1psY2l4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlpHbHpZV0pzWldRZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNiaUFnWTNWeWMyOXlPaUJ1YjNRdFlXeHNiM2RsWkR0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXprNU9UdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZiR2x1YXpwb2IzWmxjaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbXhwYm1zNmFHOTJaWElzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPblpwYzJsMFpXUTZhRzkyWlhJc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgyRnVZMmh2Y2pwMmFYTnBkR1ZrT21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcG9iM1psY2pwb2IzWmxjaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbWh2ZG1WeU9taHZkbVZ5TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJKMWRIUnZianBvYjNabGNpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXprNU9UdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNHNYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMlJwYzJGaWJHVmtJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObU5XWTFaalU3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzUjBZaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWW5SMElIdGNiaUFnYkdWbWREb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNSMFlpQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0c1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgySjBkQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNGdlMXh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNSMFlpQjdYRzRnSUhSdmNEb2dNVEp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZkSFJpTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh1SUNCMGIzQTZJQzAxTm5CNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlpZEhRZ2UxeHVJQ0JpYjNSMGIyMDZJREV5Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkowZEM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjYmlBZ1ltOTBkRzl0T2lBdE5UWndlRHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmNuUnNMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlzZEhJZ2UxeHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb0xUVXdKU2s3WEc0Z0lIZHBaSFJvT2lBMU5uQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5eWRHd2dlMXh1SUNCMGIzQTZJRFV3SlR0Y2JpQWdjbWxuYUhRNklERXljSGc3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzSjBiQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZhR2xrWkdWdUlIdGNiaUFnY21sbmFIUTZJQzA0Tm5CNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlzZEhJZ2UxeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2JHVm1kRG9nTVRKd2VEdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYkhSeUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4dUlDQnNaV1owT2lBdE9EWndlRHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmRIUmlJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5eWRHd2dMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJKMGRDQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJocFpHUmxiaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYkhSeUlDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2Ymk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpOHFLbHh1SUNvZ1ptOXVkQzVzWlhOeklDMGc1YTJYNUwyVDU1dTQ1WVd6NXFDMzVieVBYRzRnS2lBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0Z0tpQkRjbVZoZEdWa0lFSjVPaUJaWVc5b1lXbDRhV0Z2WEc0Z0tpQlZjR1JoZEdVNklESXdNakl1TXk0eE5seHVJQ292WEc0dktpQTlQVDA5UFQwZzVhMlg1TDJUSUQwOVBUMDlQU0FxTDF4dUx5b2dQVDA5UFQwOUlPV3RsK21IalNBOVBUMDlQVDBnS2k5Y2JpOHFJRDA5UFQwOVBTRGxyWmZsajdjZ1BUMDlQVDA5SUNvdlhHNHViM1YwYkdsdVpTMXRaWE56WVdkbElIdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNM0I0TzF4dUlDQmliM2d0YzJoaFpHOTNPaUF3SURBZ05uQjRJREZ3ZUNBalpHTmtabVUyTzF4dUlDQndiM05wZEdsdmJqb2dabWw0WldRN1hHNGdJSG90YVc1a1pYZzZJRGs1T1RrN1hHNGdJRzl3WVdOcGRIazZJREF1TVR0Y2JpQWdkRzl3T2lBdE5UQndlRHRjYmlBZ2JHVm1kRG9nTlRBbE8xeHVJQ0JvWldsbmFIUTZJRFF3Y0hnN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQTFNSEI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTkRCd2VEdGNiaUFnWm05dWRDMXphWHBsT2lBeE0zQjRPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalptWm1PMXh1SUNCamIyeHZjam9nSXpZMk5qdGNiaUFnZEhKaGJuTnBkR2x2YmpvZ1lXeHNJREF1TlhNZ1pXRnpaUzFwYmkxdmRYUTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdDZ3ROVEFsS1R0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJOdmJuUmxiblFnZTF4dUlDQjNhR2wwWlMxemNHRmpaVG9nYm05M2NtRndPMXh1SUNCMFpYaDBMVzkyWlhKbWJHOTNPaUJsYkd4cGNITnBjenRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0J0WVhndGQybGtkR2c2SURjd01IQjRPMXh1SUNCb1pXbG5hSFE2SURRd2NIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hHNGdJR052Ykc5eU9pQWpOalkyTzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVXNYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJREE3WEc0Z0lIZHBaSFJvT2lBME1IQjRPMXh1SUNCb1pXbG5hSFE2SURRd2NIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnWTI5c2IzSTZJQ05tWm1ZN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlDNXZkWFJzYVc1bExXbGpiMjRnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVWdlMXh1SUNCeWFXZG9kRG9nTUR0Y2JpQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMk5zYjNObElDNXZkWFJzYVc1bExXbGpiMjRnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJelkyTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZhVzVtYnlBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0l6VXdOMkZtWlR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZkMkZ5Ym1sdVp5QXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptT1Rrd01UdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmYzNWalkyVnpjeUF1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpBMU9EazBNanRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZlpYSnliM0lnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVpqVmtOV1E3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzQnNZV2x1SUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF4T1RCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBMU1IQjRJREFnTVRWd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNHViM1YwYkdsdVpTMXRaWE56WVdkbFgybHVabThnZTF4dUlDQmliM0prWlhJdGJHVm1kRG9nTlhCNElITnZiR2xrSUNNMU1EZGhabVU3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTmxZMlk0Wm1ZN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM0JzWVdsdUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5M1lYSnVhVzVuSUh0Y2JpQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNBalptWTVPVEF4TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptWW1VMk8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpNXZkWFJzYVc1bExXMWxjM05oWjJWZmMzVmpZMlZ6Y3lCN1hHNGdJR0p2Y21SbGNpMXNaV1owT2lBMWNIZ2djMjlzYVdRZ0l6QTFPRGswTWp0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlV4WmpabFlqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyVnljbTl5SUh0Y2JpQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNBalptWTFaRFZrTzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTVdZd08xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdkMmxrZEdnNklEQTdYRzRnSUdScGMzQnNZWGs2SUc1dmJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z0xtOTFkR3hwYm1VdGFXTnZiaUI3WEc0Z0lHUnBjM0JzWVhrNklHNXZibVU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyeHBaMmgwSUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF4T0RCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBME1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5c2FXZG9kQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZhVzVtYnlBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjYmlBZ1kyOXNiM0k2SUNNMU1EZGhabVU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyeHBaMmgwTG05MWRHeHBibVV0YldWemMyRm5aVjkzWVhKdWFXNW5JQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JqYjJ4dmNqb2dJMlptT1Rrd01UdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmYkdsbmFIUXViM1YwYkdsdVpTMXRaWE56WVdkbFgzTjFZMk5sYzNNZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXNhV2RvZEM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWlhKeWIzSWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hHNGdJR052Ykc5eU9pQWpabVkxWkRWa08xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlzYVdkb2RDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RZ2UxeHVJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQXlNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXliM1Z1WkM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWkdWbVlYVnNkQ0I3WEc0Z0lHMXBiaTEzYVdSMGFEb2dNVGd3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTkRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY205MWJtUXViM1YwYkdsdVpTMXRaWE56WVdkbFgyUmxabUYxYkhRZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHSnZjbVJsY2kxeVlXUnBkWE02SURFd2NIZzdYRzRnSUhSdmNEb2dNVEJ3ZUR0Y2JpQWdiR1ZtZERvZ01UQndlRHRjYmlBZ2QybGtkR2c2SURJd2NIZzdYRzRnSUdobGFXZG9kRG9nTWpCd2VEdGNiaUFnYkdsdVpTMW9aV2xuYUhRNklESXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzSnZkVzVrTG05MWRHeHBibVV0YldWemMyRm5aVjlrWldaaGRXeDBMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9JSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXlNREJ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F5TUhCNElEQWdOREJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVJSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXhPVFZ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0EwTUhCNElEQWdNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9JSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXlNVFZ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F5TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjltZFd4c0xYZHBaSFJvSUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF5TURCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBeE1IQjRJREFnTlRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWm5Wc2JDMTNhV1IwYUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNGdlMXh1SUNCdGFXNHRkMmxrZEdnNklESXpNSEI0TzF4dUlDQndZV1JrYVc1bk9pQXdJREV3Y0hnZ01DQXhOWEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9MbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXNhV2RvZENCN1hHNGdJRzFwYmkxM2FXUjBhRG9nTWpFd2NIZzdYRzRnSUhCaFpHUnBibWM2SURBZ01UQndlQ0F3SURRd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNacGMybGliR1VnZTF4dUlDQnZjR0ZqYVhSNU9pQXhPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMeW9nUFQwOVBUMGdVMk55YjJ4c1ltRnlJRDA5UFQwOUlDb3ZYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5SUh0Y2JpQWdkMmxrZEdnNklEZHdlRHRjYmlBZ2FHVnBaMmgwT2lBM2NIZzdYRzRnSUMxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0TzF4dWZWeHVPam90ZDJWaWEybDBMWE5qY205c2JHSmhjaTEwY21GamF5MXdhV1ZqWlNCN1hHNGdJQzEzWldKcmFYUXRZbTl5WkdWeUxYSmhaR2wxY3pvZ05YQjRPMXh1ZlZ4dU9qb3RkMlZpYTJsMExYTmpjbTlzYkdKaGNpMTBhSFZ0WWpwMlpYSjBhV05oYkNCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHVmVnh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2kxMGFIVnRZanBvYjNKcGVtOXVkR0ZzSUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqSTFLVHRjYmlBZ0xYZGxZbXRwZEMxaWIzSmtaWEl0Y21Ga2FYVnpPaUExY0hnN1hHNTlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPbWh2ZG1WeUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMak0xS1R0Y2JuMWNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWEk2YUc5MlpYSWdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TVRVcE8xeHVmVnh1SWl3aUx5b2dQVDA5UFQwZ1UyTnliMnhzWW1GeUlEMDlQVDA5SUNvdlhISmNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWElnZTF4eVhHNGdJSGRwWkhSb09pQTNjSGc3WEhKY2JpQWdhR1ZwWjJoME9pQTNjSGc3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYm4xY2NseHVYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRISmhZMnN0Y0dsbFkyVWdlMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzU5WEhKY2JseHlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPblpsY25ScFkyRnNJSHRjY2x4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQnlaMkpoS0RBc0lEQXNJREFzSURBdU1qVXBPMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzU5WEhKY2JseHlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPbWh2Y21sNmIyNTBZV3dnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYm4xY2NseHVYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJNmFHOTJaWElnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHhOU2s3WEhKY2JuMWNjbHh1WEhKY2JqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJNmFHOTJaWElnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHpOU2s3WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVYSEpjYmk1elpXTjBhVzl1SUh0Y2NseHVJQ0J0WVhKbmFXNDZJREZsYlNBd08xeHlYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNaZlgyaGxZV1JsY2l4Y2NseHVJQ0FtWDE5amIyNTBaVzUwTEZ4eVhHNGdJQ1pmWDJadmIzUmxjaUI3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3SURObGJUdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOTBhWFJzWlNCN1hISmNiaUFnSUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5b015QjdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlkyOXNiM0k3WEhKY2JpQWdJQ0JtYjI1MExYTnBlbVU2SURFdU16VmxiVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJnMElIdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNUzR4WlcwN1hISmNiaUFnSUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5b05TQjdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREZsYlR0Y2NseHVJQ0FnSUdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5a2JDeGNjbHh1SUNBbVgxOWtkQ3hjY2x4dUlDQW1YMTlrWkNCN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyUnNJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREU3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5a2RDQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5a1pDQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXdjbVVnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF5WlcwZ01EdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklERmxiVHRjY2x4dUlDQWdJR1p2Ym5RdGMybDZaVG9nTVRSd2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF4TlRBbE8xeHlYRzRnSUNBZ2RHVjRkQzFoYkdsbmJqb2diR1ZtZER0Y2NseHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCaVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjam9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBMGNIZzdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FIUm9hWEprWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJOdlpHVWdlMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBZ1lYVjBienRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTltYjI5MFpYSWdlMXh5WEc0Z0lDQWdZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQnRZWEpuYVc0dGRHOXdPaUF6WlcwN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQVltZGZZMjlzYjNJN1hISmNiaUFnSUNCamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmRHRmliR1VnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF4WlcwZ1lYVjBienRjY2x4dUlDQWdJSGRwWkhSb09pQXhNREFsTzF4eVhHNGdJQ0FnWW05eVpHVnlMWFJ2Y0RvZ01YQjRJSE52Ykdsa0lFQmliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFDeGNjbHh1SUNBbVgxOTBaQ0I3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUExY0hnZ01UWndlRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBeU5uQjRPMXh5WEc0Z0lDQWdZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lFQmliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFDQjdYSEpjYmlBZ0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYSEpjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFZbWRmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JseHlYRzVBYldWa2FXRWdLRzFoZUMxM2FXUjBhRG9nTkRnd2NIZ3BJSHRjY2x4dUlDQXVjMlZqZEdsdmJpQjdYSEpjYmlBZ0lDQW1YMTlvWldGa1pYSXNYSEpjYmlBZ0lDQW1YMTlqYjI1MFpXNTBJSHRjY2x4dUlDQWdJQ0FnY0dGa1pHbHVaem9nTUNBeFpXMDdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJa0JwYlhCdmNuUWdKeTR2WTI5c2IzSnpKenRjY2x4dVhISmNiaTVqWVhObElIdGNjbHh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hISmNiaUFnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0JrYVhOd2JHRjVPaUJuY21sa08xeHlYRzRnSUdkeWFXUXRkR1Z0Y0d4aGRHVXRZMjlzZFcxdWN6b2djbVZ3WldGMEtESXNJREZtY2lrN1hISmNiaUFnWjJGd09pQTBNSEI0TzF4eVhHNGdJSEJoWkdScGJtYzZJREZsYlR0Y2NseHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQmliM0prWlhJdFltOTBkRzl0T2lBeGNIZ2djMjlzYVdRZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQW1PbUZtZEdWeUlIdGNjbHh1SUNBZ0lHTnZiblJsYm5RNklDY25PMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPMXh5WEc0Z0lDQWdlaTFwYm1SbGVEb2dNanRjY2x4dUlDQWdJSFJ2Y0RvZ01EdGNjbHh1SUNBZ0lHeGxablE2SURVd0pUdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ01UQXdKVHRjY2x4dUlDQWdJSGRwWkhSb09pQXdPMXh5WEc0Z0lDQWdZbTl5WkdWeUxXeGxablE2SURGd2VDQnpiMnhwWkNCQVltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM0J5WlN4Y2NseHVJQ0FtWDE5MFpYaDBZWEpsWVNCN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEhKY2JpQWdJQ0JzYVc1bExXaGxhV2RvZERvZ01UVXdKVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNCeVpTeGNjbHh1SUNBbVgxOWpiMlJsTEZ4eVhHNGdJQ1pmWDNSbGVIUmhjbVZoSUh0Y2NseHVJQ0FnSUdadmJuUXRabUZ0YVd4NU9pQW5RMjkxY21sbGNpQk9aWGNuTENCRGIyNXpiMnhoY3l3Z1IyVnZjbWRwWVN3Z1FYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXdjbVVnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTVdWdE8xeHlYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FHSm5YMk52Ykc5eU8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lDQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ05IQjRPMXh5WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmZEc5dmJHSmhjaUI3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNjbHh1SUNBZ0lHaGxhV2RvZERvZ016WndlRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBek5uQjRPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4TkhCNE8xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01DQXhObkI0TzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ2NtbG5hSFE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmWVdOMGFXOXVMRnh5WEc0Z0lDWmZYM0psYlc5MlpTQjdYSEpjYmlBZ0lDQmpkWEp6YjNJNklIQnZhVzUwWlhJN1hISmNiaUFnSUNCamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQjFjMlZ5TFhObGJHVmpkRG9nYm05dVpUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMkZqZEdsdmJpQjdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hISmNiaUFnSUNCd1lXUmthVzVuTFd4bFpuUTZJREV3Y0hnN1hISmNibHh5WEc0Z0lDQWdKanBtYVhKemRDMWphR2xzWkNCN1hISmNiaUFnSUNBZ0lIQmhaR1JwYm1jdGJHVm1kRG9nTUR0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgzSmxiVzkyWlNCN1hISmNiaUFnSUNCbWJHOWhkRG9nY21sbmFIUTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlqYjI1emIyeGxJSHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeE9EQndlRHRjY2x4dUlDQWdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJRUJpYjNKa1pYSmZZMjlzYjNJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmRHVjRkR0Z5WldFZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTVRBd0pUdGNjbHh1SUNBZ0lHSnZjbVJsY2pvZ2JtOXVaVHRjY2x4dUlDQWdJRzkxZEd4cGJtVTZJRzV2Ym1VN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBeFpXMDdYSEpjYmlBZ0lDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlzYVhOMExGeHlYRzRnSUNaZlgybDBaVzBnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUR0Y2NseHVJQ0FnSUd4cGMzUXRjM1I1YkdVdGRIbHdaVG9nYm05dVpUdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXNhWE4wSUh0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTXpZd2NIZzdYSEpjYmlBZ0lDQmliM0prWlhJdGRHOXdPaUF4Y0hnZ2MyOXNhV1FnUUdKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNBZ0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNCQVltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHRjFkRzg3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5cGRHVnRJSHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNelp3ZUR0Y2NseHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQXpObkI0TzF4eVhHNGdJQ0FnWTNWeWMyOXlPaUJ3YjJsdWRHVnlPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F4Tm5CNE8xeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBYUc5MlpYSmZZbWRmWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJa0JwYlhCdmNuUWdKeTR1THk0dUwzUm9aVzFsTDIxcGVHbHVjeWM3WEhKY2JseHlYRzR1Y0dGd1pYSWdlMXh5WEc0Z0lDNXphR0ZrYjNkZmJHbG5hSFJmY21WbmRXeGhjaWdwTzF4eVhHNGdJRzFoY21kcGJqb2dNMlZ0SUdGMWRHODdYSEpjYmlBZ2JXRjRMWGRwWkhSb09pQXhNakF3Y0hnN1hISmNiaUFnY0dGa1pHbHVaem9nTW1WdE8xeHlYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4eVhHNWNjbHh1SUNBbUxtWnNaWGdnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nWm14bGVEdGNjbHh1SUNBZ0lHWnNaWGd0WkdseVpXTjBhVzl1T2lCeWIzYzdYSEpjYmlBZ0lDQm1iR1Y0TFhkeVlYQTZJRzV2ZDNKaGNEdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc0Z0lDQWdiV0Y0TFhkcFpIUm9PaUF4TURBbE8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ0FnTG1GeWRHbGpiR1VnZTF4eVhHNGdJQ0FnSUNCbWJHVjRMV1JwY21WamRHbHZiam9nWTI5c2RXMXVPMXh5WEc0Z0lDQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0FnSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjY2x4dVhISmNiaUFnSUNBZ0lDWmZYMjFoYVc0Z2UxeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0FnSUNBZ0lDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4eVhHNGdJQ0FnSUNBZ0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDE5aGMybGtaU0I3WEhKY2JpQWdJQ0FnSUNBZ1ltOXlaR1Z5TFhKcFoyaDBPaUF4Y0hnZ2MyOXNhV1FnUUhCeWFXMWhjbmxmWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JseHlYRzR1YUdWaFpHVnlJSHRjY2x4dUlDQndiM05wZEdsdmJqb2djM1JwWTJ0NU8xeHlYRzRnSUhvdGFXNWtaWGc2SURNN1hISmNiaUFnZEc5d09pQXdPMXh5WEc0Z0lHMWhjbWRwYmpvZ01DQmhkWFJ2TzF4eVhHNGdJR0p2Y21SbGNpMWliM1IwYjIwNklERndlQ0J6YjJ4cFpDQkFZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNHpjenRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQW1YM04wYVdOcmVTQjdYSEpjYmlBZ0lDQndZV1JrYVc1bkxXeGxablE2SURJMk1IQjRPMXh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNWNjbHh1TG1GeWRHbGpiR1VnZTF4eVhHNGdJR1JwYzNCc1lYazZJR1pzWlhnN1hISmNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJSEp2ZHp0Y2NseHVJQ0JtYkdWNExYZHlZWEE2SUc1dmQzSmhjRHRjY2x4dUlDQndZV1JrYVc1bk9pQXlaVzBnTUR0Y2NseHVJQ0JtYjI1MExYTnBlbVU2SURFMmNIZzdYSEpjYmlBZ2JHbHVaUzFvWldsbmFIUTZJREUxTUNVN1hISmNibHh5WEc0Z0lDWmZYMjFoYVc0Z2UxeHlYRzRnSUNBZ1pteGxlRG9nTVR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBZ01tVnRPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdJQ0F1YzJWamRHbHZiaUI3WEhKY2JpQWdJQ0FnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4eVhHNWNjbHh1SUNBZ0lDQWdKbDlmWTI5dWRHVnVkQ3hjY2x4dUlDQWdJQ0FnSmw5ZlptOXZkR1Z5TEZ4eVhHNGdJQ0FnSUNBbVgxOW9aV0ZrWlhJZ2UxeHlYRzRnSUNBZ0lDQWdJRzkyWlhKbWJHOTNPaUIyYVhOcFlteGxPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMTlvWldGa1pYSXNYSEpjYmlBZ0lDQWdJQ1pmWDJOdmJuUmxiblFnZTF4eVhHNGdJQ0FnSUNBZ0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmWVhOcFpHVWdlMXh5WEc0Z0lDQWdabXhsZUMxemFISnBibXM2SURBN1hISmNiaUFnSUNCM2FXUjBhRG9nTWpRd2NIZzdYSEpjYmlBZ0lDQmliM0prWlhJdGJHVm1kRG9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmx4eVhHNGdJQ0FnSmk1c2RISWdlMXh5WEc0Z0lDQWdJQ0JpYjNKa1pYSXRjbWxuYUhRNklERndlQ0J6YjJ4cFpDQkFZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCaWIzSmtaWEl0YkdWbWREb2dibTl1WlR0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWN5QjdYSEpjYmlBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibjFjY2x4dVhISmNibkJ5WlN4Y2NseHVMbk5sWTNScGIyNWZYM0J5WlNCN1hISmNiaUFnY0dGa1pHbHVaem9nTW1WdE8xeHlYRzRnSUdadmJuUXRabUZ0YVd4NU9pQW5RMjkxY21sbGNpQk9aWGNuTENCQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmp0Y2NseHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBWW1kZlkyOXNiM0k3WEhKY2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hISmNibjFjY2x4dVhISmNibU52WkdVc1hISmNiaTV6WldOMGFXOXVYMTlqYjJSbElIdGNjbHh1SUNCbWIyNTBMV1poYldsc2VUb2dKME52ZFhKcFpYSWdUbVYzSnl3Z1FYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZN1hISmNiaUFnWm05dWRDMXphWHBsT2lBeE5uQjRPMXh5WEc1OVhISmNibHh5WEc0dVptOXZkR1Z5SUh0Y2NseHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lIQmhaR1JwYm1jNklETmxiU0F3TzF4eVhHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjY2x4dVhISmNiaUFnWVNCN1hISmNiaUFnSUNBbU9teHBibXNzWEhKY2JpQWdJQ0FtT25acGMybDBaV1FzWEhKY2JpQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnZEdWNGRDMWtaV052Y21GMGFXOXVPaUJ1YjI1bE8xeHlYRzRnSUNBZ0lDQmpiMnh2Y2pvZ1FITjFZMk5sYzNOZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2RXNWtaWEpzYVc1bE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVmVnh5WEc1Y2NseHVMblYwYVd4ekxXSnZjbVJsY2kxeWFXZG9kQ0I3WEhKY2JpQWdZbTl5WkdWeUxYSnBaMmgwT2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc1OVhISmNibHh5WEc0dWFHbGtaR1Z1SUh0Y2NseHVJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzU5WEhKY2JseHlYRzVBYldWa2FXRWdLRzFoZUMxM2FXUjBhRG9nTkRnd2NIZ3BJSHRjY2x4dUlDQm9kRzFzTEZ4eVhHNGdJR0p2WkhrZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0xuQmhjR1Z5SUh0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTUR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBdVlYSjBhV05zWlY5ZmJXRnBiaUI3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3SURKbGJUdGNjbHh1SUNCOVhISmNibjFjY2x4dUlpd2lMeW9xWEhKY2JpQXFJSE5vWVdSdmR5NXNaWE56SUMwZzZaaTA1YjJ4NXFDMzVieVA2SzYrNTcydUlHMXBlR2x1ZUNEbGg3M21sYkJjY2x4dUlDb2dQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYSEpjYmlBcUlGVndaR0YwWlRvZ01qQXlNaTR6TGpJd1hISmNiaUFxTDF4eVhHNUFhVzF3YjNKMElDZGpiMnh2Y25Nbk8xeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPbVl0T1c5c2VhZ3QrVzhqK2l1dnVlOXJ1V0h2ZWFWc0NBOVBUMDlQVDBnS2k5Y2NseHVMbk5vWVdSdmR5aEFiMlptYzJWME9pQXdJREFnTm5CNElERndlQ3dnUUdOdmJHOXlPaUJBY0hKcGJXRnllVjlpYjNKa1pYSmZZMjlzYjNJcElIdGNjbHh1SUNCaWIzZ3RjMmhoWkc5M09pQkFiMlptYzJWMElFQmpiMnh2Y2p0Y2NseHVmVnh5WEc1Y2NseHVMbk5vWVdSdmQxOXlaV2QxYkdGeUtFQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlLU0I3WEhKY2JpQWdMbk5vWVdSdmR5Z3dJREFnTm5CNElERndlQ3dnUUdOdmJHOXlLVHRjY2x4dWZWeHlYRzVjY2x4dUxuTm9ZV1J2ZDE5c1lYSm5aU2hBWTI5c2IzSTZJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2lrZ2UxeHlYRzRnSUM1emFHRmtiM2NvTUNBd0lERXljSGdnTVhCNExDQkFZMjlzYjNJcE8xeHlYRzU5WEhKY2JseHlYRzR1YzJoaFpHOTNYMnhwWjJoMFgzSmxaM1ZzWVhJb0tTQjdYSEpjYmlBZ0xuTm9ZV1J2ZDE5eVpXZDFiR0Z5S0NrN1hISmNibjFjY2x4dVhISmNiaTV6YUdGa2IzZGZiR2xuYUhSZmJHRnlaMlVvS1NCN1hISmNiaUFnTG5Ob1lXUnZkMTlzWVhKblpTZ3BPMXh5WEc1OVhISmNibHh5WEc0dWMyaGhaRzkzWDJSaGNtdGZjbVZuZFd4aGNpZ3BJSHRjY2x4dUlDQXVjMmhoWkc5M1gzSmxaM1ZzWVhJb1FITmxZMjl1WkdGeWVWOWliM0prWlhKZlkyOXNiM0lwTzF4eVhHNTlYSEpjYmx4eVhHNHVjMmhoWkc5M1gyUmhjbXRmYkdGeVoyVW9LU0I3WEhKY2JpQWdMbk5vWVdSdmQxOXNZWEpuWlNoQWMyVmpiMjVrWVhKNVgySnZjbVJsY2w5amIyeHZjaWs3WEhKY2JuMWNjbHh1SWl3aU9uSnZiM1FnZTF4eVhHNGdJQzB0YjNWMGJHbHVaUzE2U1c1a1pYZzZJREl3TURBN1hISmNiaUFnTFMxdmRYUnNhVzVsTFhOMGFXTnJlUzFvWldsbmFIUTZJREV3TUNVN1hISmNiaUFnTFMxdmRYUnNhVzVsTFdOb1lYQjBaWEp6TFhkcFpIUm9PaUF4TURBbE8xeHlYRzU5WEhKY2JpSXNJaThxSUQwOVBUMDlQVDA5UFQwZ2FXTnZiaTUwYUdWdFpTQXRJSE4yWnlEbG03N21vSWZubW9UbW9MZmx2SThnUFQwOVBUMDlQVDA5UFNBcUwxeHlYRzR1YjNWMGJHbHVaUzFwWTI5dUlIdGNjbHh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hISmNiaUFnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0JrYVhOd2JHRjVPaUJwYm14cGJtVXRZbXh2WTJzN1hISmNiaUFnZG1WeWRHbGpZV3d0WVd4cFoyNDZJRzFwWkdSc1pUdGNjbHh1SUNCM2FXUjBhRG9nTVdWdE8xeHlYRzRnSUdobGFXZG9kRG9nTVdWdE8xeHlYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNaZlgzTjJaeUI3WEhKY2JpQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0JzWldaME9pQTFNQ1U3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNV1Z0TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4WlcwN1hISmNiaUFnSUNCbWFXeHNPaUJqZFhKeVpXNTBZMjlzYjNJN1hISmNiaUFnSUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpTZ3ROVEFsTENBdE5UQWxLVHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dWZWeHlYRzRpTENKQWFXMXdiM0owSUNkamIyeHZjbk1uTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0YUdWaFpHbHVaeUI3WEhKY2JpQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh5WEc0Z0lIb3RhVzVrWlhnNklERTdYSEpjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVYSEpjYmlBZ0psOWZZVzVqYUc5eUlIdGNjbHh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVU3WEhKY2JseHlYRzRnSUNBZ0pqcHNhVzVyTEZ4eVhHNGdJQ0FnSmpwMmFYTnBkR1ZrTEZ4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpUdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnWTI5c2IzSTZJRUJ3Y21sdFlYSjVYMk52Ykc5eU8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBdWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0lnZTF4eVhHNGdJQ0FnSUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM04wWVhKMElIdGNjbHh1SUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQnZkbVZ5Wm14dmR6b2dkbWx6YVdKc1pUdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzFvWldGa2FXNW5YMTloYm1Ob2IzSWdlMXh5WEc0Z0lDQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0FnSUhvdGFXNWtaWGc2SURJN1hISmNiaUFnSUNBZ0lIUnZjRG9nTlRBbE8xeHlYRzRnSUNBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYSEpjYmlBZ0lDQWdJR3hsWm5RNklDMHhaVzA3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1OVhISmNiaUlzSWtCcGJYQnZjblFnSjNaaGNtbGhZbXhsY3ljN1hISmNia0JwYlhCdmNuUWdKMk52Ykc5eWN5YzdYSEpjYmtCcGJYQnZjblFnSjNOb1lXUnZkeWM3WEhKY2JseHlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSWdlMXh5WEc0Z0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNjbHh1SUNCNkxXbHVaR1Y0T2lBdE1UdGNjbHh1SUNCMGIzQTZJREE3WEhKY2JpQWdiR1ZtZERvZ01EdGNjbHh1SUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnZDJsa2RHZzZJREV3TUNVN1hISmNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdYSEpjYmlBZ2RtbHphV0pwYkdsMGVUb2dhR2xrWkdWdU8xeHlYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNaZlgyMXZaR0ZzSUh0Y2NseHVJQ0FnSUM1emFHRmtiM2RmYkdsbmFIUmZjbVZuZFd4aGNpZ3BPMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dabXhsZUR0Y2NseHVJQ0FnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYSEpjYmlBZ0lDQm1iR1Y0TFhkeVlYQTZJRzV2ZDNKaGNEdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNjbHh1SUNBZ0lIb3RhVzVrWlhnNklESXhPMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQXhNREFsTzF4eVhHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhkb2FYUmxPMXh5WEc0Z0lDQWdkSEpoYm5OcGRHbHZiaTFrZFhKaGRHbHZiam9nTUM0MGN6dGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOW9aV0ZrWlhJc1hISmNiaUFnSmw5ZmJXRnBiaXhjY2x4dUlDQW1YMTltYjI5MFpYSWdlMXh5WEc0Z0lDQWdkMmxrZEdnNklERXdNQ1U3WEhKY2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZhR1ZoWkdWeUxGeHlYRzRnSUNaZlgyWnZiM1JsY2lCN1hISmNiaUFnSUNCbWJHVjRMWE5vY21sdWF6b2dNRHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNScGRHeGxMRnh5WEc0Z0lDWmZYMjFoYVc0c1hISmNiaUFnSmw5ZlptOXZkR1Z5SUh0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBZ01UWndlRHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJobFlXUmxjaXhjY2x4dUlDQW1YMTkwYVhSc1pTQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hISmNiaUFnSUNCb1pXbG5hSFE2SURVeWNIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTlRKd2VEdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOTBhWFJzWlNCN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERTJjSGc3WEhKY2JpQWdJQ0JtYjI1MExYZGxhV2RvZERvZ05EQXdPMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdJREUyY0hnN1hISmNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh5WEc0Z0lDQWdZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJOc2IzTmxJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREk3WEhKY2JpQWdJQ0IwYjNBNklEVXdKVHRjY2x4dUlDQWdJSEpwWjJoME9pQXhNbkI0TzF4eVhHNGdJQ0FnZDJsa2RHZzZJREl3Y0hnN1hISmNiaUFnSUNCb1pXbG5hSFE2SURJd2NIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTWpCd2VEdGNjbHh1SUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklESXdjSGc3WEhKY2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEhKY2JpQWdJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYSEpjYmlBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMV2xqYjI0Z2UxeHlYRzRnSUNBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYSEpjYmlBZ0lDQWdJSG90YVc1a1pYZzZJREk3WEhKY2JpQWdJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJQ0FnYkdWbWREb2dNRHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCMGFHbHlaRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmJXRnBiaUI3WEhKY2JpQWdJQ0JtYkdWNE9pQXhPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR0YxZEc4N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOW1iMjkwWlhJZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEhKY2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCeWFXZG9kRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTl2ZG1WeWJHRjVJSHRjY2x4dUlDQWdJR052Ym5SbGJuUTZJQ2NuTzF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJR3hsWm5RNklEQTdYSEpjYmlBZ0lDQjNhV1IwYURvZ01UQXdKVHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJRzl3WVdOcGRIazZJREF1TVR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKMGJDeGNjbHh1SUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5MGFXNTVJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nTWpnd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV2x1YVNCN1hISmNiaUFnSUNBZ0lDQWdkMmxrZEdnNklEUTRNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNOdFlXeHNJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nTlRRd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZjbVZuZFd4aGNpQjdYSEpjYmlBZ0lDQWdJQ0FnZDJsa2RHZzZJRFk0TUhCNE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMWxaR2wxYlNCN1hISmNiaUFnSUNBZ0lDQWdkMmxrZEdnNklEY3lNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDJ4aGNtZGxJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nT1RZd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmY25Sc0lIdGNjbHh1SUNBZ0lHSnZjbVJsY2kxc1pXWjBPaUF4Y0hnZ2MyOXNhV1FnUUhCeWFXMWhjbmxmWW05eVpHVnlYMk52Ykc5eU8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSWdlMXh5WEc0Z0lDQWdJQ0FtWDNScGJua2dlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lISnBaMmgwT2lBdE1qa3djSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMXBibWtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSEpwWjJoME9pQXRORGt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM050WVd4c0lIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCeWFXZG9kRG9nTFRVMU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5eVpXZDFiR0Z5SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J5YVdkb2REb2dMVFk1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl0WldScGRXMGdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lISnBaMmgwT2lBdE56TXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyeGhjbWRsSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J5YVdkb2REb2dMVGszTUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5c2RISWdlMXh5WEc0Z0lDQWdZbTl5WkdWeUxYSnBaMmgwT2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJQ0FnSUNBbVgzUnBibmtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR3hsWm5RNklDMHlPVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV2x1YVNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYkdWbWREb2dMVFE1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl6YldGc2JDQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2JHVm1kRG9nTFRVMU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5eVpXZDFiR0Z5SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0JzWldaME9pQXROamt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFsWkdsMWJTQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2JHVm1kRG9nTFRjek1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c1lYSm5aU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdiR1ZtZERvZ0xUazNNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDkwZEdJc1hISmNiaUFnSmw5aWRIUWdlMXh5WEc0Z0lDQWdiR1ZtZERvZ01EdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJQ0FnSUNBbVgzUnBibmtnZTF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ01qUXdjSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYldsdWFTQjdYSEpjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUF6TWpCd2VEdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXpiV0ZzYkNCN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQXpOakJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5eVpXZDFiR0Z5SUh0Y2NseHVJQ0FnSUNBZ0lDQm9aV2xuYUhRNklEUXdNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxbFpHbDFiU0I3WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lBME5EQndlRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlzWVhKblpTQjdYSEpjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUEwT0RCd2VEdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDkwZEdJZ2UxeHlYRzRnSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5MGFXNTVJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQjBiM0E2SUMweU5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJXbHVhU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdkRzl3T2lBdE16TXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzTnRZV3hzSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0IwYjNBNklDMHpOekJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZjbVZuZFd4aGNpQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2RHOXdPaUF0TkRFd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxbFpHbDFiU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdkRzl3T2lBdE5EVXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyeGhjbWRsSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0IwYjNBNklDMDBPVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWW5SMElIdGNjbHh1SUNBZ0lIUnZjRG9nYVc1cGRHbGhiRHRjY2x4dUlDQWdJR0p2Y21SbGNpMTBiM0E2SURGd2VDQnpiMnhwWkNCQWNISnBiV0Z5ZVY5aWIzSmtaWEpmWTI5c2IzSTdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNaZmRHbHVlU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbTkwZEc5dE9pQXRNalV3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFwYm1rZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdKdmRIUnZiVG9nTFRNek1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5emJXRnNiQ0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbTkwZEc5dE9pQXRNemN3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHSnZkSFJ2YlRvZ0xUUXhNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXRaV1JwZFcwZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdKdmRIUnZiVG9nTFRRMU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c1lYSm5aU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbTkwZEc5dE9pQXRORGt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDI5d1pXNWxaQ0I3WEhKY2JpQWdJQ0IyYVhOcFltbHNhWFI1T2lCMmFYTnBZbXhsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nZG1GeUtDMHRiM1YwYkdsdVpTMTZTVzVrWlhncE8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSWdlMXh5WEc0Z0lDQWdJQ0J3YjNOcGRHbHZiam9nWm1sNFpXUTdYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzSjBiQ0I3WEhKY2JpQWdJQ0FnSUNBZ2NtbG5hSFE2SURBN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJIUnlJSHRjY2x4dUlDQWdJQ0FnSUNCc1pXWjBPaUF3TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNSMFlpQjdYSEpjYmlBZ0lDQWdJQ0FnZEc5d09pQXdPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMkowZENCN1hISmNiaUFnSUNBZ0lDQWdZbTkwZEc5dE9pQXdPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDI5bVpuTmxkQ0I3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5eWRHd3NYSEpjYmlBZ0lDQWdJQ1pmYkhSeUlIdGNjbHh1SUNBZ0lDQWdJQ0JvWldsbmFIUTZJR05oYkdNb01UQXdKU0F0SURSbGJTazdYSEpjYmlBZ0lDQWdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzUjBZaXhjY2x4dUlDQWdJQ0FnSmw5aWRIUWdlMXh5WEc0Z0lDQWdJQ0FnSUhkcFpIUm9PaUJqWVd4aktERXdNQ1VnTFNBMFpXMHBPMXh5WEc0Z0lDQWdJQ0FnSUd4bFpuUTZJRFV3SlR0Y2NseHVJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiM0JsYm1Wa0lIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDWmZjblJzSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY21sbmFIUTZJREpsYlR0Y2NseHVJQ0FnSUNBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDQWdJQ0FtWDJ4MGNpQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxablE2SURKbGJUdGNjbHh1SUNBZ0lDQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ0FnSUNBbVgzUjBZaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFJ2Y0RvZ01tVnRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSUNBZ0lDWmZZblIwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWW05MGRHOXRPaUF5WlcwN1hISmNiaUFnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMkYxZEc4Z2UxeHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2lCN1hISmNiaUFnSUNBZ0lDWmZjblJzTEZ4eVhHNGdJQ0FnSUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lCaGRYUnZPMXh5WEc0Z0lDQWdJQ0FnSUcxaGVDMW9aV2xuYUhRNklHTmhiR01vTVRBd0pTQXRJRFJsYlNrN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZablZzYkNCN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd08xeHlYRzRnSUgxY2NseHVmVnh5WEc0aUxDSkFhVzF3YjNKMElDZDJZWEpwWVdKc1pYTW5PMXh5WEc1QWFXMXdiM0owSUNkamIyeHZjbk1uTzF4eVhHNUFhVzF3YjNKMElDZGxiR3hwY0hOcGN5YzdYSEpjYmx4eVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWN5QjdYSEpjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHlYRzRnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnYldGeVoybHVPaUF3TzF4eVhHNGdJSGRwWkhSb09pQjJZWElvTFMxdmRYUnNhVzVsTFdOb1lYQjBaWEp6TFhkcFpIUm9LVHRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dZWFYwYnp0Y2NseHVYSEpjYmlBZ0ppMXdZWEpsYm5RZ2UxeHlYRzRnSUNBZ2RISmhibk5wZEdsdmJqb2dNQzR6Y3lCbFlYTmxMV2x1TFc5MWREdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DQXhObkI0TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEhKY2JpQWdJQ0JpYjNKa1pYSXRZbTkwZEc5dE9pQXhjSGdnYzI5c2FXUWdRSEJ5YVcxaGNubGZZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnWm05dWRDMXphWHBsT2lBeE5uQjRPMXh5WEc0Z0lDQWdabTl1ZEMxM1pXbG5hSFE2SURRd01EdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXRZV2x1SUh0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmJHbHpkQ3hjY2x4dUlDQW1YMTl6ZFdKcVpXTjBMRnh5WEc0Z0lDWmZYMmwwWlcwZ2UxeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklEQTdYSEpjYmlBZ0lDQnNhWE4wTFhOMGVXeGxMWFI1Y0dVNklHNXZibVU3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYkdsemRDQjdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXdMalZsYlNBd08xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZjM1ZpYW1WamRDQjdYSEpjYmlBZ0lDQndZV1JrYVc1bkxXeGxablE2SURGbGJUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmwwWlcwZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRE13Y0hnN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmY0d4aFkyVm9iMnhrWlhJZ2UxeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01UdGNjbHh1SUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUd4bFpuUTZJREE3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTXpCd2VEdGNjbHh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQm9iM1psY2w5aVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjaTFzWldaME9pQXljSGdnYzI5c2FXUWdRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNCMGNtRnVjMmwwYVc5dUxXUjFjbUYwYVc5dU9pQXdMakp6TzF4eVhHNGdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOWhibU5vYjNJZ2UxeHlYRzRnSUNBZ0xtVnNiR2x3YzJsektERXBPMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lERXVOV1Z0TzF4eVhHNWNjbHh1SUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNZNmRtbHphWFJsWkN4Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYSEpjYmlBZ0lDQWdJR052Ykc5eU9pQkFjMlZqYjI1a1lYSjVYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQWMzVmpZMlZ6YzE5amIyeHZjanRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJOdlpHVWdlMXh5WEc0Z0lDQWdjR0ZrWkdsdVp5MXlhV2RvZERvZ01DNDFaVzA3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJocFoyaHNhV2RvZENCN1hISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyRnVZMmh2Y2lCN1hISmNiaUFnSUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNBZ0pqcDJhWE5wZEdWa0xGeHlYRzRnSUNBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdabTl1ZEMxM1pXbG5hSFE2SUdKdmJHUTdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmYzNScFkydDVMRnh5WEc0Z0lDWmZabWw0WldRZ2UxeHlYRzRnSUNBZ1pHbHpjR3hoZVRvZ1pteGxlRHRjY2x4dUlDQWdJR1pzWlhndGQzSmhjRG9nYm05M2NtRndPMXh5WEc0Z0lDQWdabXhsZUMxa2FYSmxZM1JwYjI0NklHTnZiSFZ0Ymp0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SUhaaGNpZ3RMVzkxZEd4cGJtVXRla2x1WkdWNEtUdGNjbHh1SUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNBZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25NZ2UxeHlYRzRnSUNBZ0lDQW1YMTkwYVhSc1pTeGNjbHh1SUNBZ0lDQWdKbDlmYldGcGJpQjdYSEpjYmlBZ0lDQWdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ0lDQWdJR1pzWlhndGMyaHlhVzVyT2lBd08xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgxOXRZV2x1SUh0Y2NseHVJQ0FnSUNBZ0lDQm1iR1Y0T2lBeE8xeHlYRzRnSUNBZ0lDQWdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM04wYVdOcmVTQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2djM1JwWTJ0NU8xeHlYRzRnSUNBZ2JXRjRMV2hsYVdkb2REb2dkbUZ5S0MwdGIzVjBiR2x1WlMxemRHbGphM2t0YUdWcFoyaDBLVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWm1sNFpXUWdlMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUNBZ2JXRjRMV2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmFHbGtaR1Z1SUh0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMlp2YkdSbFpDQjdYSEpjYmlBZ0lDQjNhV1IwYURvZ01EdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNTlYSEpjYmlJc0lpOHFLbHh5WEc0Z0tpQmxiR3hwY0hOcGN5NXNaWE56SUMwZzVwYUg1cHlzNTV5QjU1V2xJRzFwZUdsdWVDRGxoNzNtbGJCY2NseHVJQ29nUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh5WEc0Z0tpQkRjbVZoZEdWa0lFSjVPaUJaWVc5b1lXbDRhV0Z2WEhKY2JpQXFJRlZ3WkdGMFpUb2dNakF5TWk0ekxqRXhYSEpjYmlBcUwxeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPYVdoK2Fjck9lY2dlZVZwZVdIdmVhVnNDQTlQVDA5UFQwZ0tpOWNjbHh1TG1Wc2JHbHdjMmx6SUNoQWJHbHVaWE1wSUhkb1pXNGdLRUJzYVc1bGN6MHhLU0I3WEhKY2JpQWdkMmhwZEdVdGMzQmhZMlU2SUc1dmQzSmhjRHRjY2x4dUlDQjBaWGgwTFc5MlpYSm1iRzkzT2lCbGJHeHBjSE5wY3p0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1OVhISmNibHh5WEc0dVpXeHNhWEJ6YVhNZ0tFQnNhVzVsY3lrZ2QyaGxiaUFvUUd4cGJtVnpQajB5S1NCN1hISmNiaUFnTFhkbFltdHBkQzFzYVc1bExXTnNZVzF3T2lCQWJHbHVaWE03WEhKY2JpQWdaR2x6Y0d4aGVUb2dZbTk0TzF4eVhHNGdJQzEzWldKcmFYUXRZbTk0TFc5eWFXVnVkRG9nZG1WeWRHbGpZV3c3WEhKY2JpQWdkR1Y0ZEMxdmRtVnlabXh2ZHpvZ1pXeHNhWEJ6YVhNN1hISmNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dWZWeHlYRzRpTENKQWFXMXdiM0owSUNkamIyeHZjbk1uTzF4eVhHNUFhVzF3YjNKMElDZHRhWGhwYm5Nbk8xeHlYRzVjY2x4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5SUh0Y2NseHVJQ0FtWDE5amJHOXpaU0I3WEhKY2JpQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0xqWTNaVzBnTUNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeUlDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQm1iMjUwTFdaaGJXbHNlVG9nSjAxcFkzSnZjMjltZENCWllVaGxhU0JWU1Njc0lFRnlhV0ZzTENCellXNXpMWE5sY21sbU8xeHlYRzRnSUNBZ1ptOXVkQzEzWldsbmFIUTZJRzV2Y20xaGJEdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyaHBaR1JsYmlCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYSmxZV1JsY2w5emFXSnNhVzVuSUh0Y2NseHVJQ0FnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4eVhHNWNjbHh1SUNBZ0lDQWdKaTUzY21Gd2NHVnlJSHRjY2x4dUlDQWdJQ0FnSUNBbUxuQnZjM1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1l0TFhKbFlXUnBibWNnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nWW14dlkyczdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2dabWw0WldRN1hISmNiaUFnSUNCNkxXbHVaR1Y0T2lBeU8xeHlYRzRnSUNBZ2RHOXdPaUF3TzF4eVhHNGdJQ0FnYkdWbWREb2dNRHRjY2x4dUlDQWdJSGRwWkhSb09pQXhNREFsTzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjY2x4dUlDQWdJSEJoWkdScGJtYzZJRE5sYlNBMFpXMDdYSEpjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFkMmhwZEdVN1hISmNiaUFnSUNCelkzSnZiR3d0ZEdsdFpXeHBibVV0Ym1GdFpUb2dMUzFRY205bmNtVnpjMVJwYldWc2FXNWxPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJSE5qY205c2JEdGNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzF5WldGa1pYSWdlMXh5WEc0Z0lDQWdJQ0FtWDE5d2NtOW5jbVZ6Y3lCN1hISmNiaUFnSUNBZ0lDQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUNBZ0lDQWdJSFJ2Y0RvZ01EdGNjbHh1SUNBZ0lDQWdJQ0JzWldaME9pQXdPMXh5WEc0Z0lDQWdJQ0FnSUhvdGFXNWtaWGc2SURNN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQTBjSGc3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURFd01DVTdYSEpjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhCeWFXMWhjbmxmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnYzJOaGJHVTZJREFnTVR0Y2NseHVJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMHRiM0pwWjJsdU9pQnNaV1owTzF4eVhHNGdJQ0FnSUNBZ0lHRnVhVzFoZEdsdmJqb2diM1YwYkdsdVpTMXlaV0ZrWlhJdGNISnZaM0psYzNNZ2JHbHVaV0Z5TzF4eVhHNGdJQ0FnSUNBZ0lHRnVhVzFoZEdsdmJpMTBhVzFsYkdsdVpUb2dMUzFRY205bmNtVnpjMVJwYldWc2FXNWxPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMTlqYkc5elpTQjdYSEpjYmlBZ0lDQWdJQ0FnTG5Ob1lXUnZkMTlzYVdkb2RGOXlaV2QxYkdGeUtDazdYSEpjYmlBZ0lDQWdJQ0FnWkdsemNHeGhlVG9nWW14dlkyczdYSEpjYmlBZ0lDQWdJQ0FnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh5WEc0Z0lDQWdJQ0FnSUhvdGFXNWtaWGc2SURNN1hISmNiaUFnSUNBZ0lDQWdkRzl3T2lBMU1DVTdYSEpjYmlBZ0lDQWdJQ0FnY21sbmFIUTZJREl5Y0hnN1hISmNiaUFnSUNBZ0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdJQ0FnSUhkcFpIUm9PaUF6Tm5CNE8xeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dNelp3ZUR0Y2NseHVJQ0FnSUNBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBeE9IQjRPMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjam9nTVhCNElITnZiR2xrSUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0JzYVc1bExXaGxhV2RvZERvZ016QndlRHRjY2x4dUlDQWdJQ0FnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh5WEc0Z0lDQWdJQ0FnSUdOMWNuTnZjam9nY0c5cGJuUmxjanRjY2x4dUlDQWdJQ0FnSUNCaWIzZ3RjMmhoWkc5M09pQXdJREFnT0hCNElFQnpaV052Ym1SaGNubGZZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSGRvYVhSbE8xeHlYRzRnSUNBZ0lDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ0FnSUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnSUNCamIyeHZjam9nUUhkb2FYUmxPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnYURFc1hISmNiaUFnSUNBZ0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lDQWdJQ0J0WVhKbmFXNDZJREF1TmpkbGJTQXdJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2JHbHVaUzFvWldsbmFIUTZJREV1TTJWdE8xeHlYRzRnSUNBZ0lDQWdJR1p2Ym5RdGMybDZaVG9nTXk0MVpXMDdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYm4xY2NseHVYSEpjYmtCclpYbG1jbUZ0WlhNZ2IzVjBiR2x1WlMxeVpXRmtaWEl0Y0hKdlozSmxjM01nZTF4eVhHNGdJSFJ2SUh0Y2NseHVJQ0FnSUhOallXeGxPaUF4SURFN1hISmNiaUFnZlZ4eVhHNTlYSEpjYmx4eVhHNUFiV1ZrYVdFZ0tHMWhlQzEzYVdSMGFEb2dORGd3Y0hncElIdGNjbHh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnZTF4eVhHNGdJQ0FnSmkwdGNtVmhaR2x1WnlCN1hISmNiaUFnSUNBZ0lIQmhaR1JwYm1jNklEQWdNUzR5TldWdE8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1pmWDJOc2IzTmxJSHRjY2x4dUlDQWdJQ0FnY21sbmFIUTZJREV5Y0hnZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdiM0JoWTJsMGVUb2dNQzQ0TzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lDQWdabTl1ZEMxemFYcGxPaUF5WlcwN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNTlYSEpjYmx4eVhHNUFiV1ZrYVdFZ2NISnBiblFnZTF4eVhHNGdJR2gwYld3c1hISmNiaUFnWW05a2VTQjdYSEpjYmlBZ0lDQm9aV2xuYUhRNklHbHVhWFJwWVd3Z0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2lCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCaWJHOWpheUFoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dVhISmNiaUFnSUNCb01TeGNjbHh1SUNBZ0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lDQWdiV0Z5WjJsdU9pQXhNeTQwY0hRZ01DQXlPSEIwSUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNpQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdJQ0JtYjI1MExYTnBlbVU2SURJd2NIUWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGNtVmhaR1Z5SUh0Y2NseHVJQ0FnSUNBZ0ppMHRjbVZoWkdsdVp5QjdYSEpjYmlBZ0lDQWdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsSUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQmhkWFJ2SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0Z0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ2FERXNYSEpjYmlBZ0lDQWdJQ1pmWDNScGRHeGxJSHRjY2x4dUlDQWdJQ0FnSUNCdFlYSm5hVzQ2SURFekxqUndkQ0F3SURJNGNIUWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdJQ0JtYjI1MExYTnBlbVU2SURJd2NIUWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlmWTJ4dmMyVXNYSEpjYmlBZ0lDQWdJQ1pmWDNCeWIyZHlaWE56SUh0Y2NseHVJQ0FnSUNBZ0lDQmthWE53YkdGNU9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0J3Y21VZ2UxeHlYRzRnSUNBZ0lDQndZV1JrYVc1bk9pQXhaVzBnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ1ltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ1FHSnZjbVJsY2w5amIyeHZjaUFoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUEwY0hnZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0J3Y21Vc1hISmNiaUFnSUNCamIyUmxJSHRjY2x4dUlDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhkb2FYUmxJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ2RHRmliR1VzWEhKY2JpQWdJQ0JwYldjc1hISmNiaUFnSUNCemRtY2dlMXh5WEc0Z0lDQWdJQ0JpY21WaGF5MXBibk5wWkdVNklHRjJiMmxrTzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDWmZjMmxpYkdsdVp5QjdYSEpjYmlBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibjFjY2x4dUlpd2lMeW9nUFQwOVBUMDlQVDA5UFNCaWRYUjBiMjV6TG5Sb1pXMWxJQzBnNW95SjZaS3U1YSs4NklpcTVxQzM1YnlQSUQwOVBUMDlQVDA5UFQwZ0tpOWNjbHh1UUdsdGNHOXlkQ0FuWTI5c2IzSnpKenRjY2x4dVFHbHRjRzl5ZENBbmMyaGhaRzkzSnp0Y2NseHVYSEpjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWElnZTF4eVhHNGdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNjbHh1SUNCNkxXbHVaR1Y0T2lBNU9UazVPVHRjY2x4dUlDQnRZWEpuYVc0NklEQTdYSEpjYmlBZ2RISmhibk5wZEdsdmJpMWtkWEpoZEdsdmJqb2dNQzR6Y3p0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1Y2NseHVJQ0FtWDE5aWRYUjBiMjRnZTF4eVhHNGdJQ0FnTG5Ob1lXUnZkMTlzYVdkb2RGOXlaV2QxYkdGeUtDazdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXhNSEI0TzF4eVhHNGdJQ0FnZDJsa2RHZzZJRE0yY0hnN1hISmNiaUFnSUNCb1pXbG5hSFE2SURNMmNIZzdYSEpjYmlBZ0lDQmliM0prWlhJNklERndlQ0J6YjJ4cFpDQkFjSEpwYldGeWVWOWliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQXpjSGc3WEhKY2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHlYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnWTNWeWMyOXlPaUJ3YjJsdWRHVnlPMXh5WEc0Z0lDQWdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPMXh5WEc0Z0lDQWdZMjlzYjNJNklFQm1iM1Z5ZEdoZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibHh5WEc0Z0lDQWdKanBvYjNabGNpQjdYSEpjYmlBZ0lDQWdJR052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ1ltOXlaR1Z5TFdOdmJHOXlPaUJBYzNWalkyVnpjMTlqYjJ4dmNqdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FtTG1ocFpHVWdlMXh5WEc0Z0lDQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZZVzVqYUc5eUlIdGNjbHh1SUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNZNmRtbHphWFJsWkN4Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUdOdmJHOXlPaUJBYzNWalkyVnpjMTlqYjJ4dmNqdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lIUnZjRG9nTlRBbE8xeHlYRzRnSUNBZ2JHVm1kRG9nTlRBbE8xeHlYRzRnSUNBZ2QybGtkR2c2SURJd2NIZzdYSEpjYmlBZ0lDQm9aV2xuYUhRNklESXdjSGc3WEhKY2JpQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlNndE5UQWxMQ0F0TlRBbEtUdGNjbHh1SUNBZ0lHWnBiR3c2SUdOMWNuSmxiblJqYjJ4dmNqdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyRmpkR2wyWlNCN1hISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGRHOXZiR0poY2lCN1hISmNiaUFnSUNBZ0lDWmZYMkoxZEhSdmJpQjdYSEpjYmlBZ0lDQWdJQ0FnWTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNBZ0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBYzNWalkyVnpjMTlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0JpYjNKa1pYSXRZMjlzYjNJNklFQnpkV05qWlhOelgyTnZiRzl5TzF4eVhHNWNjbHh1SUNBZ0lDQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlJSHRjY2x4dUlDQWdJQ0FnSmpwc2FXNXJMRnh5WEc0Z0lDQWdJQ0FtT25acGMybDBaV1FzWEhKY2JpQWdJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNBZ0lHTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmNtOTFibVJsWkNCN1hISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZlluVjBkRzl1SUh0Y2NseHVJQ0FnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTVRod2VEdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZaR2x6WVdKc1pXUWdlMXh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSXNYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMTBiMjlzWW1GeUlIdGNjbHh1SUNBZ0lDQWdKbDlmWVc1amFHOXlPbXhwYm1zc1hISmNiaUFnSUNBZ0lDWmZYMkZ1WTJodmNqcDJhWE5wZEdWa0xGeHlYRzRnSUNBZ0lDQW1YMTloYm1Ob2IzSTZhRzkyWlhJc1hISmNiaUFnSUNBZ0lDWmZYMkoxZEhSdmJpQjdYSEpjYmlBZ0lDQWdJQ0FnWTNWeWMyOXlPaUJ1YjNRdFlXeHNiM2RsWkR0Y2NseHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FHWnZkWEowYUY5MFpYaDBYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJR0p2Y21SbGNpMWpiMnh2Y2pvZ1FHWnZkWEowYUY5MFpYaDBYMk52Ykc5eU8xeHlYRzVjY2x4dUlDQWdJQ0FnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnSUNCaWIzSmtaWEl0WTI5c2IzSTZJRUJtYjNWeWRHaGZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRR1JwYzJGaWJHVmtYMkpuWDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNSMFlpeGNjbHh1SUNBbVgySjBkQ0I3WEhKY2JpQWdJQ0JzWldaME9pQTFNQ1U3WEhKY2JpQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZnb0xUVXdKU2s3WEhKY2JseHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZlluVjBkRzl1SUh0Y2NseHVJQ0FnSUNBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDkwZEdJZ2UxeHlYRzRnSUNBZ2RHOXdPaUF4TW5CNE8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQWdJSFJ2Y0RvZ0xUVTJjSGc3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJKMGRDQjdYSEpjYmlBZ0lDQmliM1IwYjIwNklERXljSGc3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1SUh0Y2NseHVJQ0FnSUNBZ1ltOTBkRzl0T2lBdE5UWndlRHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmY25Sc0xGeHlYRzRnSUNaZmJIUnlJSHRjY2x4dUlDQWdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV1NndE5UQWxLVHRjY2x4dUlDQWdJSGRwWkhSb09pQTFObkI0TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5eWRHd2dlMXh5WEc0Z0lDQWdkRzl3T2lBMU1DVTdYSEpjYmlBZ0lDQnlhV2RvZERvZ01USndlRHRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4eVhHNGdJQ0FnSUNCeWFXZG9kRG9nTFRnMmNIZzdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMngwY2lCN1hISmNiaUFnSUNCMGIzQTZJRFV3SlR0Y2NseHVJQ0FnSUd4bFpuUTZJREV5Y0hnN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZhR2xrWkdWdUlIdGNjbHh1SUNBZ0lDQWdiR1ZtZERvZ0xUZzJjSGc3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNSMFlpeGNjbHh1SUNBbVgzSjBiQ3hjY2x4dUlDQW1YMkowZEN4Y2NseHVJQ0FtWDJ4MGNpQjdYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0Z2UxeHlYRzRnSUNBZ0lDQW1MbTkxZEd4cGJtVXRkRzl2YkdKaGNsOW9hV1JrWlc0Z2UxeHlYRzRnSUNBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibjFjY2x4dUlpd2lRR2x0Y0c5eWRDQW5MaTlqYjJ4dmNuTW5PMXh5WEc1QWFXMXdiM0owSUNjdUwyWnZiblFuTzF4eVhHNUFhVzF3YjNKMElDY3VMMjFwZUdsdWN5YzdYSEpjYmtCcGJYQnZjblFnSnk0dmFXTnZibk1uTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0YldWemMyRm5aU0I3WEhKY2JpQWdMbkpoWkdsMWMxOXpiV0ZzYkNncE8xeHlYRzRnSUM1emFHRmtiM2RmYkdsbmFIUmZjbVZuZFd4aGNpZ3BPMXh5WEc0Z0lIQnZjMmwwYVc5dU9pQm1hWGhsWkR0Y2NseHVJQ0I2TFdsdVpHVjRPaUE1T1RrNU8xeHlYRzRnSUc5d1lXTnBkSGs2SURBdU1UdGNjbHh1SUNCMGIzQTZJQzAxTUhCNE8xeHlYRzRnSUd4bFpuUTZJRFV3SlR0Y2NseHVJQ0JvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnYldGeVoybHVPaUF3TzF4eVhHNGdJSEJoWkdScGJtYzZJREFnTlRCd2VEdGNjbHh1SUNCc2FXNWxMV2hsYVdkb2REb2dOREJ3ZUR0Y2NseHVJQ0JtYjI1MExYTnBlbVU2SUVCbWIyNTBYM05wZW1WZmMyMWhiR3c3WEhKY2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSGRvYVhSbE8xeHlYRzRnSUdOdmJHOXlPaUJBZEdocGNtUmZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQjBjbUZ1YzJsMGFXOXVPaUJoYkd3Z01DNDFjeUJsWVhObExXbHVMVzkxZER0Y2NseHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZnb0xUVXdKU2s3WEhKY2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdKbDlmWTI5dWRHVnVkQ0I3WEhKY2JpQWdJQ0F1Wld4c2FYQnphWE1vTVNrN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnSUNCdFlYZ3RkMmxrZEdnNklEY3dNSEI0TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSFJvYVhKa1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZZMnh2YzJVc1hISmNiaUFnSmw5ZmFXTnZiaUI3WEhKY2JpQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnZEc5d09pQXdPMXh5WEc0Z0lDQWdkMmxrZEdnNklEUXdjSGc3WEhKY2JpQWdJQ0JvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dOREJ3ZUR0Y2NseHVJQ0FnSUhSbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5cFkyOXVJSHRjY2x4dUlDQWdJR3hsWm5RNklEQTdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNWNjbHh1SUNBZ0lDNXZkWFJzYVc1bExXbGpiMjRnZTF4eVhHNGdJQ0FnSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hISmNiaUFnSUNBZ0lIb3RhVzVrWlhnNklESTdYSEpjYmlBZ0lDQWdJSFJ2Y0RvZ05UQWxPMXh5WEc0Z0lDQWdJQ0JzWldaME9pQTFNQ1U3WEhKY2JpQWdJQ0FnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbEtDMDFNQ1VzSUMwMU1DVXBPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmWTJ4dmMyVWdlMXh5WEc0Z0lDQWdjbWxuYUhRNklEQTdYSEpjYmlBZ0lDQmpkWEp6YjNJNklIQnZhVzUwWlhJN1hISmNiaUFnSUNCamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNWNjbHh1SUNBZ0lDNXZkWFJzYVc1bExXbGpiMjRnZTF4eVhHNGdJQ0FnSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hISmNiaUFnSUNBZ0lIb3RhVzVrWlhnNklESTdYSEpjYmlBZ0lDQWdJSFJ2Y0RvZ05UQWxPMXh5WEc0Z0lDQWdJQ0JzWldaME9pQTFNQ1U3WEhKY2JpQWdJQ0FnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbEtDMDFNQ1VzSUMwMU1DVXBPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJsdVptOGdlMXh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQndjbWx0WVhKNVgyTnZiRzl5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5M1lYSnVhVzVuSUh0Y2NseHVJQ0FnSUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh5WEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBZDJGeWJtbHVaMTlqYjJ4dmNqdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZjM1ZqWTJWemN5QjdYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FITjFZMk5sYzNOZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJWeWNtOXlJSHRjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFaR0Z1WjJWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5d2JHRnBiaUI3WEhKY2JpQWdJQ0J0YVc0dGQybGtkR2c2SURFNU1IQjRPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0ExTUhCNElEQWdNVFZ3ZUR0Y2NseHVYSEpjYmlBZ0lDQW1MbTkxZEd4cGJtVXRiV1Z6YzJGblpTQjdYSEpjYmlBZ0lDQWdJQ1pmYVc1bWJ5QjdYSEpjYmlBZ0lDQWdJQ0FnWW05eVpHVnlMV3hsWm5RNklEVndlQ0J6YjJ4cFpDQkFjSEpwYldGeWVWOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFhVzVtYjE5MGFYQmZZbWRmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZkMkZ5Ym1sdVp5QjdYSEpjYmlBZ0lDQWdJQ0FnWW05eVpHVnlMV3hsWm5RNklEVndlQ0J6YjJ4cFpDQkFkMkZ5Ym1sdVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFkMkZ5Ym1sdVoxOTBhWEJmWW1kZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYzNWalkyVnpjeUI3WEhKY2JpQWdJQ0FnSUNBZ1ltOXlaR1Z5TFd4bFpuUTZJRFZ3ZUNCemIyeHBaQ0JBYzNWalkyVnpjMTlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBYzNWalkyVnpjMTkwYVhCZlltZGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZlpYSnliM0lnZTF4eVhHNGdJQ0FnSUNBZ0lHSnZjbVJsY2kxc1pXWjBPaUExY0hnZ2MyOXNhV1FnUUdSaGJtZGxjbDlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBWkdGdVoyVnlYM1JwY0Y5aVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQjNhV1IwYURvZ01EdGNjbHh1SUNBZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2NseHVYSEpjYmlBZ0lDQWdJQzV2ZFhSc2FXNWxMV2xqYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZiR2xuYUhRZ2UxeHlYRzRnSUNBZ2JXbHVMWGRwWkhSb09pQXhPREJ3ZUR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBZ05EQndlRHRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGJXVnpjMkZuWlNCN1hISmNiaUFnSUNBZ0lDWmZhVzVtYnlCN1hISmNiaUFnSUNBZ0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRSEJ5YVcxaGNubGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM2RoY201cGJtY2dlMXh5WEc0Z0lDQWdJQ0FnSUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCM1lYSnVhVzVuWDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5emRXTmpaWE56SUh0Y2NseHVJQ0FnSUNBZ0lDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZaWEp5YjNJZ2UxeHlYRzRnSUNBZ0lDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWTI5c2IzSTZJRUJrWVc1blpYSmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEhKY2JpQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmY205MWJtUWdlMXh5WEc0Z0lDQWdMbkpoWkdsMWN5Z3lNSEI0S1R0Y2NseHVYSEpjYmlBZ0lDQW1MbTkxZEd4cGJtVXRiV1Z6YzJGblpTQjdYSEpjYmlBZ0lDQWdJQ1pmWkdWbVlYVnNkQ0I3WEhKY2JpQWdJQ0FnSUNBZ2JXbHVMWGRwWkhSb09pQXhPREJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQXdJRFF3Y0hnN1hISmNibHh5WEc0Z0lDQWdJQ0FnSUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0xuSmhaR2wxY3lneE1IQjRLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lIUnZjRG9nTVRCd2VEdGNjbHh1SUNBZ0lDQWdJQ0FnSUd4bFpuUTZJREV3Y0hnN1hISmNiaUFnSUNBZ0lDQWdJQ0IzYVdSMGFEb2dNakJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQWdJR2hsYVdkb2REb2dNakJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQWdJR3hwYm1VdGFHVnBaMmgwT2lBeU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWm5Wc2JDMTNhV1IwYUNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J0YVc0dGQybGtkR2c2SURJd01IQjRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DQXlNSEI0SURBZ05EQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmNHeGhhVzRnZTF4eVhHNGdJQ0FnSUNBZ0lHMXBiaTEzYVdSMGFEb2dNVGsxY0hnN1hISmNiaUFnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0EwTUhCNElEQWdNakJ3ZUR0Y2NseHVYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWm5Wc2JDMTNhV1IwYUNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J0YVc0dGQybGtkR2c2SURJeE5YQjRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DQXlNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDltZFd4c0xYZHBaSFJvSUh0Y2NseHVJQ0FnSUcxcGJpMTNhV1IwYURvZ01qQXdjSGc3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3SURFd2NIZ2dNQ0ExTUhCNE8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzF0WlhOellXZGxJSHRjY2x4dUlDQWdJQ0FnSmw5d2JHRnBiaUI3WEhKY2JpQWdJQ0FnSUNBZ2JXbHVMWGRwWkhSb09pQXlNekJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQXdJREV3Y0hnZ01DQXhOWEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDJ4cFoyaDBJSHRjY2x4dUlDQWdJQ0FnSUNCdGFXNHRkMmxrZEdnNklESXhNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklEQWdNVEJ3ZUNBd0lEUXdjSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmRtbHphV0pzWlNCN1hISmNiaUFnSUNCdmNHRmphWFI1T2lBeE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOW9hV1JrWlc0Z2UxeHlYRzRnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjY2x4dUlDQjlYSEpjYm4xY2NseHVJaXdpTHlvcVhISmNiaUFxSUcxcGVHbHVjeTVzWlhOeklDMGc1YmVsNVlXMzVZZTk1cFd3WEhKY2JpQXFJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNjbHh1SUNvZ1EzSmxZWFJsWkNCQ2VUb2dXV0Z2YUdGcGVHbGhiMXh5WEc0Z0tpQlZjR1JoZEdVNklESXdNakl1TXk0eE1WeHlYRzRnS2k5Y2NseHVRR2x0Y0c5eWRDQW5MaTlqYjJ4dmNuTW5PMXh5WEc1Y2NseHVMeW9nUFQwOVBUMDlJT2FXaCthY3JPZWNnZWVWcGVXSHZlYVZzQ0E5UFQwOVBUMGdLaTljY2x4dUxtVnNiR2x3YzJseklDaEFiR2x1WlhNcElIZG9aVzRnS0VCc2FXNWxjejB4S1NCN1hISmNiaUFnZDJocGRHVXRjM0JoWTJVNklHNXZkM0poY0R0Y2NseHVJQ0IwWlhoMExXOTJaWEptYkc5M09pQmxiR3hwY0hOcGN6dGNjbHh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNTlYSEpjYmx4eVhHNHVaV3hzYVhCemFYTWdLRUJzYVc1bGN5a2dkMmhsYmlBb1FHeHBibVZ6UGoweUtTQjdYSEpjYmlBZ0xYZGxZbXRwZEMxc2FXNWxMV05zWVcxd09pQkFiR2x1WlhNN1hISmNiaUFnWkdsemNHeGhlVG9nWW05NE8xeHlYRzRnSUMxM1pXSnJhWFF0WW05NExXOXlhV1Z1ZERvZ2RtVnlkR2xqWVd3N1hISmNiaUFnZEdWNGRDMXZkbVZ5Wm14dmR6b2daV3hzYVhCemFYTTdYSEpjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVmVnh5WEc1Y2NseHVMeW9nUFQwOVBUMDlJT1djaHVpbmt1YWd0K1c4aitpdXZ1ZTlydVdIdmVhVnNDQTlQVDA5UFQwZ0tpOWNjbHh1TG5KaFpHbDFjeWhBYm5WdE9pQXljSGdwSUh0Y2NseHVJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQkFiblZ0TzF4eVhHNTlYSEpjYmx4eVhHNHVjbUZrYVhWelgyNXZibVVvS1NCN1hISmNiaUFnTG5KaFpHbDFjeWd3S1R0Y2NseHVmVnh5WEc1Y2NseHVMbkpoWkdsMWMxOXRhVzVwS0NrZ2UxeHlYRzRnSUM1eVlXUnBkWE1vTW5CNEtUdGNjbHh1ZlZ4eVhHNWNjbHh1TG5KaFpHbDFjMTl6YldGc2JDZ3BJSHRjY2x4dUlDQXVjbUZrYVhWektETndlQ2s3WEhKY2JuMWNjbHh1WEhKY2JpNXlZV1JwZFhOZmNtVm5kV3hoY2lncElIdGNjbHh1SUNBdWNtRmthWFZ6S0RSd2VDazdYSEpjYm4xY2NseHVYSEpjYmk1eVlXUnBkWE5mYldWa2FYVnRLQ2tnZTF4eVhHNGdJQzV5WVdScGRYTW9OWEI0S1R0Y2NseHVmVnh5WEc1Y2NseHVMbkpoWkdsMWMxOXNZWEpuWlNncElIdGNjbHh1SUNBdWNtRmthWFZ6S0RFd2NIZ3BPMXh5WEc1OVhISmNibHh5WEc0dWNtRmthWFZ6WDJoMVoyVW9LU0I3WEhKY2JpQWdMbkpoWkdsMWN5Z3hObkI0S1R0Y2NseHVmVnh5WEc1Y2NseHVMbkpoWkdsMWMxOXliM1Z1WkNncElIdGNjbHh1SUNBdWNtRmthWFZ6S0RNd2NIZ3BPMXh5WEc1OVhISmNibHh5WEc0dktpQTlQVDA5UFQwZzZaaTA1YjJ4NXFDMzVieVA2SzYrNTcydTVZZTk1cFd3SUQwOVBUMDlQU0FxTDF4eVhHNHVjMmhoWkc5M0tFQnZabVp6WlhRNklEQWdNQ0EyY0hnZ01YQjRMQ0JBWTI5c2IzSTZJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2lrZ2UxeHlYRzRnSUdKdmVDMXphR0ZrYjNjNklFQnZabVp6WlhRZ1FHTnZiRzl5TzF4eVhHNTlYSEpjYmx4eVhHNHVjMmhoWkc5M1gzSmxaM1ZzWVhJb1FHTnZiRzl5T2lCQWNISnBiV0Z5ZVY5aWIzSmtaWEpmWTI5c2IzSXBJSHRjY2x4dUlDQXVjMmhoWkc5M0tEQWdNQ0EyY0hnZ01YQjRMQ0JBWTI5c2IzSXBPMXh5WEc1OVhISmNibHh5WEc0dWMyaGhaRzkzWDJ4aGNtZGxLRUJqYjJ4dmNqb2dRSEJ5YVcxaGNubGZZbTl5WkdWeVgyTnZiRzl5S1NCN1hISmNiaUFnTG5Ob1lXUnZkeWd3SURBZ01USndlQ0F4Y0hnc0lFQmpiMnh2Y2lrN1hISmNibjFjY2x4dVhISmNiaTV6YUdGa2IzZGZiR2xuYUhSZmNtVm5kV3hoY2lncElIdGNjbHh1SUNBdWMyaGhaRzkzWDNKbFozVnNZWElvS1R0Y2NseHVmVnh5WEc1Y2NseHVMbk5vWVdSdmQxOXNhV2RvZEY5c1lYSm5aU2dwSUh0Y2NseHVJQ0F1YzJoaFpHOTNYMnhoY21kbEtDazdYSEpjYm4xY2NseHVYSEpjYmk1emFHRmtiM2RmWkdGeWExOXlaV2QxYkdGeUtDa2dlMXh5WEc0Z0lDNXphR0ZrYjNkZmNtVm5kV3hoY2loQWMyVmpiMjVrWVhKNVgySnZjbVJsY2w5amIyeHZjaWs3WEhKY2JuMWNjbHh1SWl3aUx5b2dQVDA5UFQwZ1UyTnliMnhzWW1GeUlEMDlQVDA5SUNvdlhISmNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWElnZTF4eVhHNGdJSGRwWkhSb09pQTNjSGc3WEhKY2JpQWdhR1ZwWjJoME9pQTNjSGc3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYmx4eVhHNGdJQ1l0ZEhKaFkyc3RjR2xsWTJVZ2UxeHlYRzRnSUNBZ0xYZGxZbXRwZEMxaWIzSmtaWEl0Y21Ga2FYVnpPaUExY0hnN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbUxYUm9kVzFpSUh0Y2NseHVJQ0FnSUNZNmRtVnlkR2xqWVd3Z2UxeHlYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQnlaMkpoS0RBc0lEQXNJREFzSURBdU1qVXBPMXh5WEc0Z0lDQWdJQ0F0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEVndlRHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbU9taHZjbWw2YjI1MFlXd2dlMXh5WEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJ5WjJKaEtEQXNJREFzSURBc0lEQXVNalVwTzF4eVhHNGdJQ0FnSUNBdGQyVmlhMmwwTFdKdmNtUmxjaTF5WVdScGRYTTZJRFZ3ZUR0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqTTFLVHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqRTFLVHRjY2x4dUlDQjlYSEpjYm4xY2NseHVJbDE5ICovXG4iXSwiZmlsZSI6ImNzcy9leGFtcGxlLm1pbi5jc3MifQ== */ +.case,.section__dl{position:relative;z-index:1}.section__dd,.section__dt{display:inline-block}.case,.section__footer,.section__table{border-top:1px solid #ddd}.case:after,.outline-drawer__overlay{content:''}.article,.paper.flex{-webkit-box-orient:horizontal}.section{margin:1em 0;overflow:hidden}.section__content,.section__footer,.section__header{margin:0;padding:0 3em;overflow:hidden}.section__title{color:#666}.section__h3{color:#507afe;font-size:1.35em}.section__h4{font-size:1.1em;color:#666}.section__h5{font-size:1em;color:#999}.section__dd,.section__dl,.section__dt{margin:0;padding:0;overflow:hidden}.section__dd{color:#058942}.section__pre{margin:2em 0;font-size:14px;line-height:150%;text-align:left;border:1px solid #ddd;border-radius:4px;color:#666}.section__code{display:block;margin:0 auto;overflow:hidden}.section__footer{margin-top:3em;background-color:#fafafa;color:#999}.section__table{margin:1em auto;width:100%}.section__td,.section__th{padding:5px 16px;line-height:26px;border-bottom:1px solid #ddd}.section__th{text-align:center;background-color:#fafafa}@media (max-width:480px){.section__content,.section__header{padding:0 1em}}.case{display:grid;grid-template-columns:repeat(2,1fr);gap:40px;padding:1em;border-bottom:1px solid #ddd;overflow:hidden}.case:after{position:absolute;z-index:2;top:0;left:50%;height:100%;width:0;border-left:1px solid #ddd;overflow:hidden}.case__pre,.case__textarea{font-size:13px;line-height:150%}.case__code,.case__pre,.case__textarea{font-family:'Courier New',Consolas,Georgia,Arial,sans-serif}.case__pre{margin:0;padding:1em;background-color:#fafafa;height:100%;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto}.case__textarea,.paper,.paper.flex .article{-webkit-box-sizing:border-box}.case__toolbar{margin:0 auto;height:36px;line-height:36px;font-size:14px;padding:0 16px;text-align:right;overflow:hidden}.case__action,.case__remove{cursor:pointer;color:#058942;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.case__action{font-size:13px;padding-left:10px}.case__action:first-child{padding-left:0}.case__remove{float:right}.case__console{margin:0 auto;height:180px;border:1px solid #ddd;overflow:hidden}.case__textarea{margin:0 auto;width:100%;height:100%;border:none;outline:0;padding:1em;box-sizing:border-box;overflow:auto}.case__list,.header{border-bottom:1px solid #ddd}.case__item,.case__list{margin:0;padding:0;list-style-type:none;overflow:hidden}.case__list{height:360px;border-top:1px solid #ddd;font-size:13px;overflow:auto}.case__item{height:36px;line-height:36px;cursor:pointer;padding:0 16px}.case__item:hover{background-color:#f7f8f9}.article__aside .outline-chapters,.header,.paper{background-color:#fff}.paper{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;margin:3em auto;max-width:1200px;padding:2em;box-sizing:border-box}.paper.flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin:0;width:100%;max-width:100%;height:100%;padding:0;overflow:hidden}.article,.outline-chapters_fixed,.outline-chapters_sticky,.outline-drawer__modal{display:-webkit-box;-webkit-box-direction:normal}.paper.flex .article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;box-sizing:border-box}.paper.flex .article__main{height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto}.paper.flex .article__aside{border-right:1px solid #dcdfe6}.header{position:sticky;z-index:3;top:0;margin:0 auto;text-align:center;-webkit-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.header_sticky{padding-left:260px}.article{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:2em 0;font-size:16px;line-height:150%}.article__main{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 2em;overflow:hidden}.article__main .section,.article__main .section__content,.article__main .section__footer,.article__main .section__header{overflow:visible}.article__main .section__content,.article__main .section__header{margin:0}.article__aside{-ms-flex-negative:0;flex-shrink:0;width:240px;border-left:1px solid #ddd}.article__aside.ltr{border-right:1px solid #ddd;border-left:none}.outline-drawer_ltr,.utils-border-right{border-right:1px solid #dcdfe6}.section__pre,pre{padding:2em;font-family:'Courier New',Arial,sans-serif;background-color:#fafafa;overflow:auto}.section__code,code{font-family:'Courier New',Arial,sans-serif;font-size:16px}.footer{border-top:1px solid #dcdfe6;padding:3em 0;text-align:center}.footer a:hover,.footer a:link,.footer a:visited{text-decoration:none;color:#058942}.footer a:hover{text-decoration:underline}.hidden{display:none}@media (max-width:480px){.paper,body,html{margin:0}.paper{padding:0}.article__main{padding:0 2em}}:root{--outline-zIndex:2000;--outline-sticky-height:100%;--outline-chapters-width:100%}.outline-icon{position:relative;z-index:1;display:inline-block;vertical-align:middle;width:1em;height:1em;overflow:hidden}.outline-heading__anchor,.outline-icon_hidden{display:none}.outline-icon__svg{position:absolute;z-index:2;top:50%;left:50%;width:1em;height:1em;fill:currentcolor;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:hidden}.outline-heading{position:relative;z-index:1;overflow:hidden}.outline-heading__anchor:hover,.outline-heading__anchor:link,.outline-heading__anchor:visited{color:#999;text-decoration:none}.outline-heading__anchor:hover{color:#507afe}.outline-heading:hover .outline-heading__anchor{display:inline-block}.outline-heading_start:hover{overflow:visible}.outline-heading_start .outline-heading__anchor{position:absolute;z-index:2;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:-1em}.outline-drawer{position:relative;z-index:-1;top:0;left:0;margin:0;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:hidden;overflow:hidden}.outline-drawer__modal{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;z-index:21;height:100%;background-color:#fff;-webkit-transition-duration:.4s;transition-duration:.4s;overflow:hidden}.outline-drawer__footer,.outline-drawer__header,.outline-drawer__main{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.outline-drawer__footer,.outline-drawer__header{-ms-flex-negative:0;flex-shrink:0}.outline-drawer__footer,.outline-drawer__main,.outline-drawer__title{padding:0 16px}.outline-drawer__header,.outline-drawer__title{position:relative;z-index:1;margin:0 auto;height:52px;line-height:52px;overflow:hidden}.outline-drawer__title{font-size:16px;font-weight:400;margin:0 16px;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #dcdfe6}.outline-drawer__close{position:absolute;z-index:2;top:50%;right:12px;width:20px;height:20px;line-height:20px;color:#999;font-size:20px;text-align:center;cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%);overflow:hidden}.outline-drawer__close .outline-icon{position:absolute;z-index:2;top:0;left:0}.outline-drawer__close:hover{color:#666}.outline-drawer__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-drawer__footer{margin:0 auto;text-align:right;overflow:hidden}.outline-drawer__overlay{position:relative;z-index:1;top:0;left:0;width:100%;height:100%;background-color:#fff;opacity:.1;overflow:hidden}.outline-drawer_ltr.outline-drawer_tiny,.outline-drawer_rtl.outline-drawer_tiny{width:280px}.outline-drawer_ltr.outline-drawer_mini,.outline-drawer_rtl.outline-drawer_mini{width:480px}.outline-drawer_ltr.outline-drawer_small,.outline-drawer_rtl.outline-drawer_small{width:540px}.outline-drawer_ltr.outline-drawer_regular,.outline-drawer_rtl.outline-drawer_regular{width:680px}.outline-drawer_ltr.outline-drawer_medium,.outline-drawer_rtl.outline-drawer_medium{width:720px}.outline-drawer_ltr.outline-drawer_large,.outline-drawer_rtl.outline-drawer_large{width:960px}.outline-drawer_rtl{border-left:1px solid #dcdfe6}.outline-drawer_rtl.outline-drawer_tiny.outline-drawer_closed{right:-290px}.outline-drawer_rtl.outline-drawer_mini.outline-drawer_closed{right:-490px}.outline-drawer_rtl.outline-drawer_small.outline-drawer_closed{right:-550px}.outline-drawer_rtl.outline-drawer_regular.outline-drawer_closed{right:-690px}.outline-drawer_rtl.outline-drawer_medium.outline-drawer_closed{right:-730px}.outline-drawer_rtl.outline-drawer_large.outline-drawer_closed{right:-970px}.outline-drawer_ltr.outline-drawer_tiny.outline-drawer_closed{left:-290px}.outline-drawer_ltr.outline-drawer_mini.outline-drawer_closed{left:-490px}.outline-drawer_ltr.outline-drawer_small.outline-drawer_closed{left:-550px}.outline-drawer_ltr.outline-drawer_regular.outline-drawer_closed{left:-690px}.outline-drawer_ltr.outline-drawer_medium.outline-drawer_closed{left:-730px}.outline-drawer_ltr.outline-drawer_large.outline-drawer_closed{left:-970px}.outline-drawer_btt,.outline-drawer_ttb{left:0;width:100%}.outline-drawer_btt.outline-drawer_tiny,.outline-drawer_ttb.outline-drawer_tiny{height:240px}.outline-drawer_btt.outline-drawer_mini,.outline-drawer_ttb.outline-drawer_mini{height:320px}.outline-drawer_btt.outline-drawer_small,.outline-drawer_ttb.outline-drawer_small{height:360px}.outline-drawer_btt.outline-drawer_regular,.outline-drawer_ttb.outline-drawer_regular{height:400px}.outline-drawer_btt.outline-drawer_medium,.outline-drawer_ttb.outline-drawer_medium{height:440px}.outline-drawer_btt.outline-drawer_large,.outline-drawer_ttb.outline-drawer_large{height:480px}.outline-drawer_ttb{border-bottom:1px solid #dcdfe6}.outline-drawer_ttb.outline-drawer_tiny.outline-drawer_closed{top:-250px}.outline-drawer_ttb.outline-drawer_mini.outline-drawer_closed{top:-330px}.outline-drawer_ttb.outline-drawer_small.outline-drawer_closed{top:-370px}.outline-drawer_ttb.outline-drawer_regular.outline-drawer_closed{top:-410px}.outline-drawer_ttb.outline-drawer_medium.outline-drawer_closed{top:-450px}.outline-drawer_ttb.outline-drawer_large.outline-drawer_closed{top:-490px}.outline-drawer_btt{top:initial;border-top:1px solid #dcdfe6}.outline-drawer_btt.outline-drawer_tiny.outline-drawer_closed{bottom:-250px}.outline-drawer_btt.outline-drawer_mini.outline-drawer_closed{bottom:-330px}.outline-drawer_btt.outline-drawer_small.outline-drawer_closed{bottom:-370px}.outline-drawer_btt.outline-drawer_regular.outline-drawer_closed{bottom:-410px}.outline-drawer_btt.outline-drawer_medium.outline-drawer_closed{bottom:-450px}.outline-drawer_btt.outline-drawer_large.outline-drawer_closed{bottom:-490px}.outline-drawer_opened{visibility:visible;z-index:var(--outline-zIndex)}.outline-drawer_opened.outline-drawer{position:fixed}.outline-drawer_opened.outline-drawer_rtl{right:0}.outline-drawer_opened.outline-drawer_ltr{left:0}.outline-drawer_opened.outline-drawer_ttb{top:0}.outline-drawer_opened.outline-drawer_btt{bottom:0}.outline-drawer_offset.outline-drawer_ltr,.outline-drawer_offset.outline-drawer_rtl{height:calc(100% - 4em);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.outline-drawer_offset.outline-drawer_btt,.outline-drawer_offset.outline-drawer_ttb{width:calc(100% - 4em);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-drawer_offset.outline-drawer_opened.outline-drawer_rtl{right:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ltr{left:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ttb{top:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_btt{bottom:2em}.outline-drawer_auto.outline-drawer_ltr,.outline-drawer_auto.outline-drawer_rtl{height:auto;max-height:calc(100% - 4em)}.outline-drawer_full{padding:0}.outline-chapters{position:relative;z-index:1;margin:0;width:var(--outline-chapters-width);overflow:auto}.outline-chapters-parent{-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.outline-chapters__title{margin:0 16px;height:40px;line-height:40px;padding:0 16px;border-bottom:1px solid #dcdfe6;font-size:16px;font-weight:400;overflow:hidden}.outline-chapters__main{position:relative;z-index:1;margin:0;overflow:hidden}.outline-chapters__item,.outline-chapters__list,.outline-chapters__subject{position:relative;z-index:2;margin:0;padding:0;list-style-type:none;overflow:hidden}.outline-chapters__list{padding:.5em 0}.outline-chapters__subject{padding-left:1em}.outline-chapters__item{margin:0;line-height:30px;font-size:13px;overflow:hidden}.outline-chapters__placeholder{position:absolute;z-index:1;top:0;left:0;width:100%;height:30px;background-color:#f7f8f9;border-left:2px solid #058942;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.outline-chapters__anchor{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;padding:0 1.5em}.outline-chapters__anchor:hover,.outline-chapters__anchor:link,.outline-chapters__anchor:visited{text-decoration:none;color:#555}.outline-chapters__anchor:hover{color:#058942}.outline-chapters__code{padding-right:.5em}.outline-chapters_highlight.outline-chapters__anchor:hover,.outline-chapters_highlight.outline-chapters__anchor:link,.outline-chapters_highlight.outline-chapters__anchor:visited{color:#058942;font-weight:700}.outline-chapters_fixed,.outline-chapters_sticky{display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;z-index:var(--outline-zIndex);top:0;overflow:hidden}.outline-chapters_hidden,.outline-reader__close{display:none}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__main,.outline-chapters_sticky .outline-chapters__title{-webkit-box-sizing:border-box;box-sizing:border-box}.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__title{-ms-flex-negative:0;flex-shrink:0}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_sticky .outline-chapters__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-chapters_sticky{position:sticky;max-height:var(--outline-sticky-height)}.outline-chapters_fixed{position:fixed;max-height:100%}.outline-chapters_folded{width:0;overflow:hidden}.outline-reader__title{margin:.67em 0!important;text-align:center!important;font-family:'Microsoft YaHei UI',Arial,sans-serif;font-weight:400;overflow:hidden}.outline-reader_hidden,.outline-reader_hidden.outline-reader_sibling{display:none!important}.outline-reader_hidden.outline-reader_sibling.wrapper.post{display:none}.outline-reader--reading{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:3em 4em;background-color:#fff;scroll-timeline-name:--ProgressTimeline;overflow:scroll}.outline-reader--reading .outline-reader__progress{position:fixed;top:0;left:0;z-index:3;height:4px;width:100%;background-color:#507afe;scale:0 1;-webkit-transform-origin:left;transform-origin:left;-webkit-animation:outline-reader-progress linear;animation:outline-reader-progress linear;animation-timeline:--ProgressTimeline}.outline-reader--reading .outline-reader__close{display:block;position:fixed;z-index:3;top:50%;right:22px;margin:0;width:36px;height:36px;border-radius:18px;border:1px solid #dcdfe6;line-height:30px;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;-webkit-box-shadow:0 0 8px #ddd;box-shadow:0 0 8px #ddd;color:#999;background-color:#fff;overflow:hidden}.outline-reader--reading .outline-reader__close:hover{background-color:#058942;color:#fff}.outline-reader--reading .outline-reader h1,.outline-reader--reading .outline-reader__title{margin:.67em 0!important;line-height:1.3em;font-size:3.5em}@-webkit-keyframes outline-reader-progress{to{scale:1 1}}@keyframes outline-reader-progress{to{scale:1 1}}@media (max-width:480px){.outline-reader--reading{padding:0 1.25em}.outline-reader__close{right:12px!important;opacity:.8}.outline-reader__title{font-size:2em}}@media print{.outline-reader h1,.outline-reader.outline-reader h1,.outline-reader.outline-reader__title,.outline-reader__title{margin:13.4pt 0 28pt!important;text-align:center!important;font-size:20pt!important}body,html{height:initial!important}.outline-message,.outline-toolbar{display:none!important}.outline-reader{display:block!important;overflow:hidden}.outline-reader.outline-reader__close,.outline-reader.outline-reader__progress,.outline-reader_sibling{display:none!important}.outline-reader.outline-reader--reading{position:relative!important;height:auto!important;padding:0!important;overflow:hidden!important}.outline-reader pre{padding:1em!important;border:1px solid #ddd!important;border-radius:4px!important}.outline-reader code,.outline-reader pre{background-color:#fff!important}.outline-reader img,.outline-reader svg,.outline-reader table{-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}}.outline-toolbar{position:fixed;z-index:99999;margin:0;-webkit-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.outline-toolbar__button{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:relative;z-index:1;margin:10px;width:36px;height:36px;border:1px solid #dcdfe6;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;cursor:pointer;text-align:center;color:#999;overflow:hidden}.outline-toolbar__button:hover{color:#058942;border-color:#058942}.outline-toolbar__button.hide{display:none}.outline-toolbar__anchor:hover,.outline-toolbar__anchor:link,.outline-toolbar__anchor:visited{color:#999;text-decoration:none}.outline-toolbar__anchor:hover{color:#058942}.outline-toolbar__icon{position:absolute;z-index:2;top:50%;left:50%;width:20px;height:20px;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);fill:currentcolor;overflow:hidden}.outline-toolbar_active.outline-toolbar__button{color:#fff;background-color:#058942;border-color:#058942}.outline-toolbar_active .outline-toolbar__anchor:hover,.outline-toolbar_active .outline-toolbar__anchor:link,.outline-toolbar_active .outline-toolbar__anchor:visited,.outline-toolbar_active.outline-toolbar__button:hover{color:#fff}.outline-toolbar_rounded.outline-toolbar__button{border-radius:18px}.outline-toolbar_disabled .outline-toolbar__anchor:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link,.outline-toolbar_disabled .outline-toolbar__anchor:visited,.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__anchor:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link,.outline-toolbar_disabled.outline-toolbar__anchor:visited,.outline-toolbar_disabled.outline-toolbar__button{cursor:not-allowed;color:#999;border-color:#999}.outline-toolbar_disabled .outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link:hover,.outline-toolbar_disabled .outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled .outline-toolbar__button:hover,.outline-toolbar_disabled.outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link:hover,.outline-toolbar_disabled.outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled.outline-toolbar__button:hover{color:#999;border-color:#999}.outline-message,.outline-message__content{margin:0;font-size:13px;color:#666;height:40px;line-height:40px;overflow:hidden}.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__button{background-color:#f5f5f5}.outline-toolbar_btt,.outline-toolbar_ttb{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-toolbar_btt .outline-toolbar__button,.outline-toolbar_ttb .outline-toolbar__button{display:inline-block}.outline-toolbar_ttb{top:12px}.outline-toolbar_ttb.outline-toolbar_hidden{top:-56px}.outline-toolbar_btt{bottom:12px}.outline-toolbar_btt.outline-toolbar_hidden{bottom:-56px}.outline-toolbar_ltr,.outline-toolbar_rtl{-webkit-transform:translateY(-50%);transform:translateY(-50%);width:56px}.outline-toolbar_rtl{top:50%;right:12px}.outline-toolbar_rtl.outline-toolbar_hidden{right:-86px}.outline-toolbar_ltr{top:50%;left:12px}.outline-toolbar_ltr.outline-toolbar_hidden{left:-86px}.outline-toolbar_btt .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ltr .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_rtl .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ttb .outline-toolbar__button.outline-toolbar_hidden{display:none}.outline-message{border-radius:3px;-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:fixed;z-index:9999;opacity:.1;top:-50px;left:50%;padding:0 50px;background-color:#fff;-webkit-transition:all .5s ease-in-out;transition:all .5s ease-in-out;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-message__content{white-space:nowrap;text-overflow:ellipsis;max-width:700px}.outline-message__close,.outline-message__icon{position:absolute;z-index:2;top:0;width:40px;height:40px;line-height:40px;text-align:center;overflow:hidden}.outline-message__icon{left:0;color:#fff}.outline-message__icon .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close{right:0;cursor:pointer;color:#999}.outline-message__close .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close:hover{color:#666}.outline-message_info .outline-message__icon{background-color:#507afe}.outline-message_warning .outline-message__icon{background-color:#ff9901}.outline-message_success .outline-message__icon{background-color:#058942}.outline-message_error .outline-message__icon{background-color:#ff5d5d}.outline-message_plain{min-width:190px;padding:0 50px 0 15px}.outline-message_light,.outline-message_round.outline-message_default{min-width:180px;padding:0 40px}.outline-message_plain.outline-message_info{border-left:5px solid #507afe;background-color:#ecf8ff}.outline-message_plain.outline-message_warning{border-left:5px solid #ff9901;background-color:#fffbe6}.outline-message_plain.outline-message_success{border-left:5px solid #058942;background-color:#e1f6eb}.outline-message_plain.outline-message_error{border-left:5px solid #ff5d5d;background-color:#fff1f0}.outline-message_plain .outline-message__icon{width:0;display:none}.outline-message_plain .outline-message__icon .outline-icon{display:none}.outline-message_light.outline-message_info .outline-message__icon{color:#507afe}.outline-message_light.outline-message_warning .outline-message__icon{color:#ff9901}.outline-message_light.outline-message_success .outline-message__icon{color:#058942}.outline-message_light.outline-message_error .outline-message__icon{color:#ff5d5d}.outline-message_light .outline-message__icon{background-color:#fff}.outline-message_round{border-radius:20px}.outline-message_round.outline-message_default .outline-message__icon{border-radius:10px;top:10px;left:10px;width:20px;height:20px;line-height:20px}.outline-message_round.outline-message_default.outline-message_full-width{min-width:200px;padding:0 20px 0 40px}.outline-message_round.outline-message_plain{min-width:195px;padding:0 40px 0 20px}.outline-message_round.outline-message_plain.outline-message_full-width{min-width:215px;padding:0 20px}.outline-message_full-width{min-width:200px;padding:0 10px 0 50px}.outline-message_full-width.outline-message_plain{min-width:230px;padding:0 10px 0 15px}.outline-message_full-width.outline-message_light{min-width:210px;padding:0 10px 0 40px}.outline-message_visible{opacity:1}.outline-message_hidden{display:none}::-webkit-scrollbar{width:7px;height:7px;-webkit-border-radius:5px}::-webkit-scrollbar-track-piece{-webkit-border-radius:5px}::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:horizontal{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.35)}::-webkit-scrollbar:hover{background-color:rgba(0,0,0,.15)} +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJjc3MvZXhhbXBsZS5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDdweDtcbiAgaGVpZ2h0OiA3cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xufVxuLnNlY3Rpb24ge1xuICBtYXJnaW46IDFlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2hlYWRlcixcbi5zZWN0aW9uX19jb250ZW50LFxuLnNlY3Rpb25fX2Zvb3RlciB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAzZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fdGl0bGUge1xuICBjb2xvcjogIzY2Njtcbn1cbi5zZWN0aW9uX19oMyB7XG4gIGNvbG9yOiAjNTA3YWZlO1xuICBmb250LXNpemU6IDEuMzVlbTtcbn1cbi5zZWN0aW9uX19oNCB7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGNvbG9yOiAjNjY2O1xufVxuLnNlY3Rpb25fX2g1IHtcbiAgZm9udC1zaXplOiAxZW07XG4gIGNvbG9yOiAjOTk5O1xufVxuLnNlY3Rpb25fX2RsLFxuLnNlY3Rpb25fX2R0LFxuLnNlY3Rpb25fX2RkIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnNlY3Rpb25fX2RsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuLnNlY3Rpb25fX2R0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLnNlY3Rpb25fX2RkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5zZWN0aW9uX19wcmUge1xuICBtYXJnaW46IDJlbSAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY29sb3I6ICM2NjY7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLnNlY3Rpb25fX2NvZGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2VjdGlvbl9fZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIG1hcmdpbi10b3A6IDNlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgY29sb3I6ICM5OTk7XG59XG4uc2VjdGlvbl9fdGFibGUge1xuICBtYXJnaW46IDFlbSBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG59XG4uc2VjdGlvbl9fdGgsXG4uc2VjdGlvbl9fdGQge1xuICBwYWRkaW5nOiA1cHggMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xufVxuLnNlY3Rpb25fX3RoIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5zZWN0aW9uX19oZWFkZXIsXG4gIC5zZWN0aW9uX19jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwIDFlbTtcbiAgfVxufVxuLmNhc2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogNDBweDtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAwO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fcHJlLFxuLmNhc2VfX3RleHRhcmVhIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMTUwJTtcbn1cbi5jYXNlX19wcmUsXG4uY2FzZV9fY29kZSxcbi5jYXNlX190ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb25zb2xhcywgR2VvcmdpYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG4uY2FzZV9fcHJlIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uY2FzZV9fdG9vbGJhciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fYWN0aW9uLFxuLmNhc2VfX3JlbW92ZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uY2FzZV9fYWN0aW9uIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY2FzZV9fYWN0aW9uOmZpcnN0LWNoaWxkIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuLmNhc2VfX3JlbW92ZSB7XG4gIGZsb2F0OiByaWdodDtcbn1cbi5jYXNlX19jb25zb2xlIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogMTgwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FzZV9fdGV4dGFyZWEge1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAxZW07XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5jYXNlX19saXN0LFxuLmNhc2VfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXNlX19saXN0IHtcbiAgaGVpZ2h0OiAzNjBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLmNhc2VfX2l0ZW0ge1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDAgMTZweDtcbn1cbi5jYXNlX19pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbn1cbi8qKlxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi5wYXBlciB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBtYXJnaW46IDNlbSBhdXRvO1xuICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgcGFkZGluZzogMmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5wYXBlci5mbGV4IHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnBhcGVyLmZsZXggLmFydGljbGUge1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5wYXBlci5mbGV4IC5hcnRpY2xlX19tYWluIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ucGFwZXIuZmxleCAuYXJ0aWNsZV9fYXNpZGUge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLmhlYWRlciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHotaW5kZXg6IDM7XG4gIHRvcDogMDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmhlYWRlcl9zdGlja3kge1xuICBwYWRkaW5nLWxlZnQ6IDI2MHB4O1xufVxuLmFydGljbGUge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDtcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAtbXMtZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgcGFkZGluZzogMmVtIDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XG59XG4uYXJ0aWNsZV9fbWFpbiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBwYWRkaW5nOiAwIDJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5hcnRpY2xlX19tYWluIC5zZWN0aW9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbl9fY29udGVudCxcbi5hcnRpY2xlX19tYWluIC5zZWN0aW9uX19mb290ZXIsXG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbl9faGVhZGVyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uYXJ0aWNsZV9fbWFpbiAuc2VjdGlvbl9faGVhZGVyLFxuLmFydGljbGVfX21haW4gLnNlY3Rpb25fX2NvbnRlbnQge1xuICBtYXJnaW46IDA7XG59XG4uYXJ0aWNsZV9fYXNpZGUge1xuICAtbXMtZmxleC1uZWdhdGl2ZTogMDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogMjQwcHg7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDtcbn1cbi5hcnRpY2xlX19hc2lkZS5sdHIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItbGVmdDogbm9uZTtcbn1cbi5hcnRpY2xlX19hc2lkZSAub3V0bGluZS1jaGFwdGVycyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5wcmUsXG4uc2VjdGlvbl9fcHJlIHtcbiAgcGFkZGluZzogMmVtO1xuICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuY29kZSxcbi5zZWN0aW9uX19jb2RlIHtcbiAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG59XG4uZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkY2RmZTY7XG4gIHBhZGRpbmc6IDNlbSAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uZm9vdGVyIGE6bGluayxcbi5mb290ZXIgYTp2aXNpdGVkLFxuLmZvb3RlciBhOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5mb290ZXIgYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnV0aWxzLWJvcmRlci1yaWdodCB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgLnBhcGVyIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICAuYXJ0aWNsZV9fbWFpbiB7XG4gICAgcGFkZGluZzogMCAyZW07XG4gIH1cbn1cbjpyb290IHtcbiAgLS1vdXRsaW5lLXpJbmRleDogMjAwMDtcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcbn1cbi8qID09PT09PT09PT0gY29sb3JzLnRoZW1lIC0g5Z+656GA6aKc6Imy5Y+Y6YeP6ZuG5ZCIID09PT09PT09PT0gKi9cbi8qKlxuICogZWxsaXBzaXMubGVzcyAtIOaWh+acrOecgeeVpSBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyoqXG4gKiBzaGFkb3cubGVzcyAtIOmYtOW9seagt+W8j+iuvue9riBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4yMFxuICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09PT09PSBpY29uLnRoZW1lIC0gc3ZnIOWbvuagh+eahOagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9fc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6bGluayxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtaGVhZGluZzpob3ZlciAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0OmhvdmVyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4ub3V0bGluZS1oZWFkaW5nX3N0YXJ0IC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgbGVmdDogLTFlbTtcbn1cbi5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogLTE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19tb2RhbCB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLW1zLWZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjE7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzO1xuICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDUycHg7XG4gIGxpbmUtaGVpZ2h0OiA1MnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjOTk5O1xuICBmb250LXNpemU6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fbWFpbiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19vdmVybGF5IHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvcGFjaXR5OiAwLjE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICB3aWR0aDogMjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21pbmkge1xuICB3aWR0aDogNDgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3NtYWxsLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9zbWFsbCB7XG4gIHdpZHRoOiA1NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIHdpZHRoOiA2ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICB3aWR0aDogNzIwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX2xhcmdlLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9sYXJnZSB7XG4gIHdpZHRoOiA5NjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTQ5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTczMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3Rpbnkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTI5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTU1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC02OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgbGVmdDogLTk3MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yixcbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueSB7XG4gIGhlaWdodDogMjQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21pbmksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21pbmkge1xuICBoZWlnaHQ6IDMyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICBoZWlnaHQ6IDM2MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9yZWd1bGFyIHtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ge1xuICBoZWlnaHQ6IDQ0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICBoZWlnaHQ6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHRvcDogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB0b3A6IGluaXRpYWw7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTI1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTMzMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9zbWFsbC5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zNzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00MTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGJvdHRvbTogLTQ1MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9sYXJnZS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xuICB0b3A6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3J0bCB7XG4gIHJpZ2h0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBsZWZ0OiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl90dGIge1xuICB0b3A6IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2J0dCB7XG4gIGJvdHRvbTogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfcnRsLFxuLm91dGxpbmUtZHJhd2VyX2F1dG8ub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA0ZW0pO1xufVxuLm91dGxpbmUtZHJhd2VyX2Z1bGwge1xuICBwYWRkaW5nOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IHZhcigtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGgpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzLXBhcmVudCB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIG1hcmdpbjogMCAxNnB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2xpc3QsXG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0IHtcbiAgcGFkZGluZzogMC41ZW0gMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19zdWJqZWN0IHtcbiAgcGFkZGluZy1sZWZ0OiAxZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIG1hcmdpbjogMDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19wbGFjZWhvbGRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmOGY5O1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMwNTg5NDI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAgMS41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzU1NTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19jb2RlIHtcbiAgcGFkZGluZy1yaWdodDogMC41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5LFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcbiAgdG9wOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7XG4gICAgICBmbGV4LXNocmluazogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fbWFpbixcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgIC1tcy1mbGV4OiAxO1xuICAgICAgICAgIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2ZvbGRlZCB7XG4gIHdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcud3JhcHBlci5wb3N0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogM2VtIDRlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgc2Nyb2xsLXRpbWVsaW5lLW5hbWU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDM7XG4gIGhlaWdodDogNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbiAgc2NhbGU6IDAgMTtcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gICAgICAgICAgYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMztcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAyMnB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA4cHggI2RkZDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgOHB4ICNkZGQ7XG4gIGNvbG9yOiAjOTk5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXIgaDEsXG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBmb250LXNpemU6IDMuNWVtO1xufVxuQC13ZWJraXQta2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBrZXlmcmFtZXMgb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3Mge1xuICB0byB7XG4gICAgc2NhbGU6IDEgMTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcGFkZGluZzogMCAxLjI1ZW07XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX19jbG9zZSB7XG4gICAgcmlnaHQ6IDEycHggIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gIH1cbn1cbkBtZWRpYSBwcmludCB7XG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLW1lc3NhZ2UsXG4gIC5vdXRsaW5lLXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fY2xvc2UsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fcHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlIHtcbiAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHByZSxcbiAgLm91dGxpbmUtcmVhZGVyIGNvZGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgdGFibGUsXG4gIC5vdXRsaW5lLXJlYWRlciBpbWcsXG4gIC5vdXRsaW5lLXJlYWRlciBzdmcge1xuICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgLW1vei1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLyogPT09PT09PT09PSBidXR0b25zLnRoZW1lIC0g5oyJ6ZKu5a+86Iiq5qC35byPID09PT09PT09PT0gKi9cbi5vdXRsaW5lLXRvb2xiYXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk5O1xuICBtYXJnaW46IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAxMHB4O1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM5OTk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGZpbGw6IGN1cnJlbnRjb2xvcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG4gIGJvcmRlci1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX3JvdW5kZWQub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZDpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXI6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLFxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIHtcbiAgdG9wOiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIHRvcDogLTU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dCB7XG4gIGJvdHRvbTogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYnR0Lm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBib3R0b206IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwsXG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bCB7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICByaWdodDogLTg2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGxlZnQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX3J0bCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyoqXG4gKiBmb250Lmxlc3MgLSDlrZfkvZPnm7jlhbPmoLflvI9cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjE2XG4gKi9cbi8qID09PT09PSDlrZfkvZMgPT09PT09ICovXG4vKiA9PT09PT0g5a2X6YeNID09PT09PSAqL1xuLyogPT09PT09IOWtl+WPtyA9PT09PT0gKi9cbi5vdXRsaW5lLW1lc3NhZ2Uge1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk7XG4gIG9wYWNpdHk6IDAuMTtcbiAgdG9wOiAtNTBweDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCA1MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb2xvcjogIzY2NjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2NvbnRlbnQge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWFyZ2luOiAwO1xuICBtYXgtd2lkdGg6IDcwMHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGNvbG9yOiAjNjY2O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UsXG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgbGVmdDogMDtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSB7XG4gIHJpZ2h0OiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UgLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG4ub3V0bGluZS1tZXNzYWdlX2luZm8gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjk5MDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMTkwcHg7XG4gIHBhZGRpbmc6IDAgNTBweCAwIDE1cHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9pbmZvIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjNTA3YWZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmOGZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2ZmOTkwMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmJlNjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3Mge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICMwNTg5NDI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWY2ZWI7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9lcnJvciB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2ZmNWQ1ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIHdpZHRoOiAwO1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX2luZm8gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICNmZjk5MDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX2Vycm9yIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmNWQ1ZDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kIHtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQge1xuICBtaW4td2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nOiAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0IC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDEwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdC5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDAgMjBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMTk1cHg7XG4gIHBhZGRpbmc6IDAgNDBweCAwIDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjE1cHg7XG4gIHBhZGRpbmc6IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDUwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAyMzBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQge1xuICBtaW4td2lkdGg6IDIxMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV92aXNpYmxlIHtcbiAgb3BhY2l0eTogMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA3cHg7XG4gIGhlaWdodDogN3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx6eHBibkIxZENCamMzTWdNajRpTENKelkzSnZiR3hpWVhJdWJHVnpjeUlzSW5ObFkzUnBiMjR1YkdWemN5SXNJbU5oYzJVdWJHVnpjeUlzSW5CaFoyVnlMbXhsYzNNaUxDSXVMaTh1TGk5MGFHVnRaUzl6YUdGa2IzY3ViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMM1poY21saFlteGxjeTVzWlhOeklpd2lMaTR2TGk0dmRHaGxiV1V2YVdOdmJuTXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMMkZ1WTJodmNuTXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMMlJ5WVhkbGNpNXNaWE56SWl3aUxpNHZMaTR2ZEdobGJXVXZZMmhoY0hSbGNuTXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMMlZzYkdsd2MybHpMbXhsYzNNaUxDSXVMaTh1TGk5MGFHVnRaUzl5WldGa1pYSXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMM1J2YjJ4aVlYSXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMMjFsYzNOaFoyVXViR1Z6Y3lJc0lpNHVMeTR1TDNSb1pXMWxMMjFwZUdsdWN5NXNaWE56SWl3aUxpNHZMaTR2ZEdobGJXVXZjMk55YjJ4c1ltRnlMbXhsYzNNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNNa0pCUVRKQ08wRkRRek5DTzBWQlEwVXNWMEZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3d5UWtGQlFUdERSRU5FTzBGRFJVUTdSVUZEUlN3eVFrRkJRVHREUkVGRU8wRkRSMFE3UlVGRFJTeHpRMEZCUVR0RlFVTkJMREpDUVVGQk8wTkVSRVE3UVVOSlJEdEZRVU5GTEhORFFVRkJPMFZCUTBFc01rSkJRVUU3UTBSR1JEdEJRMHRFTzBWQlEwVXNjME5CUVVFN1EwUklSRHRCUTAxRU8wVkJRMFVzYzBOQlFVRTdRMFJLUkR0QlJYQkNSRHRGUVVORkxHTkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFJuTkNSRHRCUlhCQ1F6czdPMFZCUjBVc1ZVRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFJuTkNTRHRCUlc1Q1F6dEZRVU5GTEZsQlFVRTdRMFp4UWtnN1FVVnNRa003UlVGRFJTeGxRVUZCTzBWQlEwRXNhMEpCUVVFN1EwWnZRa2c3UVVWcVFrTTdSVUZEUlN4cFFrRkJRVHRGUVVOQkxGbEJRVUU3UTBadFFrZzdRVVZvUWtNN1JVRkRSU3hsUVVGQk8wVkJRMEVzV1VGQlFUdERSbXRDU0R0QlJXWkRPenM3UlVGSFJTeFZRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMR2xDUVVGQk8wTkdhVUpJTzBGRlpFTTdSVUZEUlN4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UTBablFrZzdRVVZpUXp0RlFVTkZMSE5DUVVGQk8wTkdaVWc3UVVWYVF6dEZRVU5GTEhOQ1FVRkJPMFZCUTBFc1pVRkJRVHREUm1OSU8wRkZXRU03UlVGRFJTeGpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4cFFrRkJRVHRGUVVOQkxEQkNRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4bFFVRkJPME5HWVVnN1FVVldRenRGUVVORkxHVkJRVUU3UlVGRFFTeGxRVUZCTzBWQlEwRXNhVUpCUVVFN1EwWlpTRHRCUlZSRE8wVkJRMFVzTWtKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxEQkNRVUZCTzBWQlEwRXNXVUZCUVR0RFJsZElPMEZGVWtNN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN3eVFrRkJRVHREUmxWSU8wRkZVRU03TzBWQlJVVXNhMEpCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTERoQ1FVRkJPME5HVTBnN1FVVk9RenRGUVVORkxHMUNRVUZCTzBWQlEwRXNNRUpCUVVFN1EwWlJTRHRCUlVwRU8wVkJSVWs3TzBsQlJVVXNaVUZCUVR0SFJrdElPME5CUTBZN1FVYzFSMFE3UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hqUVVGQk8wVkJRMEVzYzBOQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxESkNRVUZCTzBWQlEwRXNPRUpCUVVFN1JVRkRRU3hwUWtGQlFUdERTRGhIUkR0QlJ6VkhRenRGUVVORkxGbEJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4VFFVRkJPMFZCUTBFc05FSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFNEaEhTRHRCUnpOSFF6czdSVUZGUlN4blFrRkJRVHRGUVVOQkxHdENRVUZCTzBOSU5rZElPMEZITVVkRE96czdSVUZIUlN4cFJVRkJRVHREU0RSSFNEdEJSM3BIUXp0RlFVTkZMRlZCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzTUVKQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTd3JRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wVkJRMEVzWlVGQlFUdERTREpIU0R0QlIzaEhRenRGUVVORkxHVkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNhMEpCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFNEQkhTRHRCUjNaSFF6czdSVUZGUlN4blFrRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTd3dRa0ZCUVR0TFFVRkJMSFZDUVVGQk8wMUJRVUVzYzBKQlFVRTdWVUZCUVN4clFrRkJRVHREU0hsSFNEdEJSM1JIUXp0RlFVTkZMR2RDUVVGQk8wVkJRMEVzYlVKQlFVRTdRMGgzUjBnN1FVZDBSMGM3UlVGRFJTeG5Ra0ZCUVR0RFNIZEhURHRCUjNCSFF6dEZRVU5GTEdGQlFVRTdRMGh6UjBnN1FVZHVSME03UlVGRFJTeGxRVUZCTzBWQlEwRXNZMEZCUVR0RlFVTkJMSFZDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMGh4UjBnN1FVZHNSME03UlVGRFJTeGxRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzWTBGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN3clFrRkJRVHRWUVVGQkxIVkNRVUZCTzBWQlEwRXNaVUZCUVR0RFNHOUhTRHRCUjJwSFF6czdSVUZGUlN4VlFVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxITkNRVUZCTzBWQlEwRXNhVUpCUVVFN1EwaHRSMGc3UVVkb1IwTTdSVUZEUlN4alFVRkJPMFZCUTBFc01rSkJRVUU3UlVGRFFTdzRRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzWlVGQlFUdERTR3RIU0R0QlJ5OUdRenRGUVVORkxHRkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzWjBKQlFVRTdRMGhwUjBnN1FVY3ZSa2M3UlVGRFJTd3dRa0ZCUVR0RFNHbEhURHRCUVVORU96czdPenRIUVV0SE8wRkJRMGdzTUVKQlFUQkNPMEZCUXpGQ0xEUkNRVUUwUWp0QlFVTTFRaXcwUWtGQk5FSTdRVWs1VGpWQ08wVkRUM2RFTEhkRFFVRkJPMVZCUVVFc1owTkJRVUU3UlVSTWRFUXNhVUpCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4MVFrRkJRVHRGUVVOQkxDdENRVUZCTzFWQlFVRXNkVUpCUVVFN1EwcG5UMFE3UVVrNVRrTTdSVUZEUlN4eFFrRkJRVHRGUVVGQkxIRkNRVUZCTzBWQlFVRXNZMEZCUVR0RlFVTkJMQ3RDUVVGQk8wVkJRVUVzT0VKQlFVRTdUVUZCUVN4M1FrRkJRVHRWUVVGQkxHOUNRVUZCTzBWQlEwRXNjMEpCUVVFN1RVRkJRU3hyUWtGQlFUdEZRVU5CTEZWQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMR2xDUVVGQk8wTktaMDlJTzBGSmVrOURPMFZCV1Vrc05rSkJRVUU3UlVGQlFTdzRRa0ZCUVR0TlFVRkJMREpDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc0swSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RFNtZFBURHRCU1RsT1N6dEZRVU5GTEdGQlFVRTdSVUZEUVN3clFrRkJRVHRWUVVGQkxIVkNRVUZCTzBWQlEwRXNaVUZCUVR0RFNtZFBVRHRCU1RkT1N6dEZRVU5GTEdkRFFVRkJPME5LSzA1UU8wRkplazVFTzBWQlEwVXNhVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVDBGQlFUdEZRVU5CTEdWQlFVRTdSVUZEUVN3NFFrRkJRVHRGUVVOQkxIVkNRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRRU3hyUTBGQlFUdFZRVUZCTERCQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTBveVRrUTdRVWw2VGtNN1JVRkRSU3h2UWtGQlFUdERTakpPU0R0QlNYWk9SRHRGUVVORkxIRkNRVUZCTzBWQlFVRXNjVUpCUVVFN1JVRkJRU3hqUVVGQk8wVkJRMEVzSzBKQlFVRTdSVUZCUVN3NFFrRkJRVHROUVVGQkxIZENRVUZCTzFWQlFVRXNiMEpCUVVFN1JVRkRRU3h6UWtGQlFUdE5RVUZCTEd0Q1FVRkJPMFZCUTBFc1pVRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNhMEpCUVVFN1EwcDVUa1E3UVVsMlRrTTdSVUZEUlN4dlFrRkJRVHROUVVGQkxGbEJRVUU3VlVGQlFTeFJRVUZCTzBWQlEwRXNaVUZCUVR0RlFVTkJMR2xDUVVGQk8wTktlVTVJTzBGSk5VNURPMFZCVFVrc2EwSkJRVUU3UTBwNVRrdzdRVWwyVGtzN096dEZRVWRGTEd0Q1FVRkJPME5LZVU1UU8wRkpkRTVMT3p0RlFVVkZMRlZCUVVFN1EwcDNUbEE3UVVsdVRrTTdSVUZEUlN4eFFrRkJRVHROUVVGQkxHVkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNORUpCUVVFN1EwcHhUa2c3UVVsdVRrYzdSVUZEUlN3MlFrRkJRVHRGUVVOQkxHdENRVUZCTzBOS2NVNU1PMEZKTlU1RE8wVkJWMGtzZFVKQlFVRTdRMHB2VGt3N1FVa3ZUVVE3TzBWQlJVVXNZVUZCUVR0RlFVTkJMRGhEUVVGQk8wVkJRMEVzTUVKQlFVRTdSVUZEUVN4bFFVRkJPME5LYVU1RU8wRkpPVTFFT3p0RlFVVkZMRGhEUVVGQk8wVkJRMEVzWjBKQlFVRTdRMHBuVGtRN1FVazNUVVE3UlVGRFJTdzRRa0ZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3h0UWtGQlFUdERTaXROUkR0QlNUVk5SenM3TzBWQlIwVXNjMEpCUVVFN1JVRkRRU3hsUVVGQk8wTktPRTFNTzBGSk0wMUhPMFZCUTBVc01rSkJRVUU3UTBvMlRVdzdRVWw0VFVRN1JVRkRSU3huUTBGQlFUdERTakJOUkR0QlNYWk5SRHRGUVVORkxHTkJRVUU3UTBwNVRVUTdRVWwwVFVRN1JVRkRSVHM3U1VGRlJTeFZRVUZCTzBkS2QwMUVPMFZKY2sxRU8wbEJRMFVzVlVGQlFUdEpRVU5CTEZkQlFVRTdSMHAxVFVRN1JVbHdUVVE3U1VGRFJTeGxRVUZCTzBkS2MwMUVPME5CUTBZN1FVMW9WMFE3UlVGRFF5eDFRa0ZCUVR0RlFVTkVMRGhDUVVGQk8wVkJRV2xETEN0Q1FVRkJPME5PYlZkb1F6dEJRVU5FTEcxRVFVRnRSRHRCUVVOdVJEczdPenM3UjBGTFJ6dEJRVU5JTERCQ1FVRXdRanRCUVVNeFFqczdPenM3UjBGTFJ6dEJRVU5JTERSQ1FVRTBRanRCUVVNMVFpeHJSRUZCYTBRN1FVOXlXRU03UlVGRmJrUXNiVUpCUVVFN1JVRkJjMElzVjBGQlFUdEZRVU5VTEhOQ1FVRkJPMFZCUTFVc2RVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEySXNXVUZCUVR0RlFVTkJMR2xDUVVGQk8wTlFkVmhVTzBGUGRGaGpPMFZCUlZZc2JVSkJRVUU3UlVGRFdTeFhRVUZCTzBWQlExUXNVMEZCUVR0RlFVTklMRlZCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTAwc2VVTkJRVUU3VlVGQlFTeHBRMEZCUVR0RlFVTmhMR2xDUVVGQk8wTlFkVmgyUWp0QlQzUllVenRGUVVOU0xHTkJRVUU3UTFCM1dFUTdRVkV4V1VRN1JVRkRSU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4cFFrRkJRVHREVWpSWlJEdEJVVEZaUXp0RlFVTkZMR05CUVVFN1ExSTBXVWc3UVZFeFdVYzdPenRGUVVkRkxGbEJRVUU3UlVGRFFTeHpRa0ZCUVR0RFVqUlpURHRCVVhwWlJ6dEZRVU5GTEdWQlFVRTdRMUl5V1V3N1FWRjJXVU03UlVGRlNTeHpRa0ZCUVR0RFVuZFpURHRCVVc1WlJ6dEZRVU5GTEd0Q1FVRkJPME5TY1ZsTU8wRlJkbGxETzBWQlRVa3NiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVTBGQlFUdEZRVU5CTEc5RFFVRkJPMVZCUVVFc05FSkJRVUU3UlVGRFFTeFhRVUZCTzBOU2IxbE1PMEZUZEdGRU8wVkJRMFVzYlVKQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1QwRkJRVHRGUVVOQkxGRkJRVUU3UlVGRFFTeFZRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFZIZGhSRHRCVTNSaFF6dEZTbEJ6UkN4M1EwRkJRVHRWUVVGQkxHZERRVUZCTzBWSlUzQkVMSEZDUVVGQk8wVkJRVUVzY1VKQlFVRTdSVUZCUVN4alFVRkJPMFZCUTBFc05rSkJRVUU3UlVGQlFTdzRRa0ZCUVR0TlFVRkJMREpDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN4elFrRkJRVHROUVVGQkxHdENRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEhWQ1FVRkJPMFZCUTBFc2EwTkJRVUU3VlVGQlFTd3dRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTlVkMkZJTzBGVGNtRkRPenM3UlVGSFJTeFpRVUZCTzBWQlEwRXNLMEpCUVVFN1ZVRkJRU3gxUWtGQlFUdERWSFZoU0R0QlUzQmhRenM3UlVGRlJTeHhRa0ZCUVR0TlFVRkJMR1ZCUVVFN1ExUnpZVWc3UVZOdVlVTTdPenRGUVVkRkxHZENRVUZCTzBOVWNXRklPMEZUYkdGRE96dEZRVVZGTEcxQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNhMEpCUVVFN1JVRkRRU3hwUWtGQlFUdERWRzloU0R0QlUycGhRenRGUVVORkxHZENRVUZCTzBWQlEwRXNhVUpCUVVFN1JVRkRRU3hsUVVGQk8wVkJRMEVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHRGUVVOQkxHbERRVUZCTzBOVWJXRklPMEZUYUdGRE8wVkJRMFVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1UwRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMR3RDUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMRzlEUVVGQk8xVkJRVUVzTkVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVkd0aFNEdEJVeTloUXp0RlFXZENTU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4UFFVRkJPMFZCUTBFc1VVRkJRVHREVkd0aFREdEJVeTlhUnp0RlFVTkZMRmxCUVVFN1ExUnBZVXc3UVZNM1drTTdSVUZEUlN4dlFrRkJRVHROUVVGQkxGbEJRVUU3VlVGQlFTeFJRVUZCTzBWQlEwRXNaVUZCUVR0RFZDdGFTRHRCVXpWYVF6dEZRVU5GTEdWQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHbENRVUZCTzBOVU9GcElPMEZUTTFwRE8wVkJRMFVzV1VGQlFUdEZRVU5CTEcxQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxFOUJRVUU3UlVGRFFTeFJRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3gxUWtGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4cFFrRkJRVHREVkRaYVNEdEJVM1phU3pzN1JVRkRSU3hoUVVGQk8wTlVNRnBRTzBGVGRscExPenRGUVVORkxHRkJRVUU3UTFRd1dsQTdRVk4yV2tzN08wVkJRMFVzWVVGQlFUdERWREJhVUR0QlUzWmFTenM3UlVGRFJTeGhRVUZCTzBOVU1GcFFPMEZUZGxwTE96dEZRVU5GTEdGQlFVRTdRMVF3V2xBN1FWTjJXa3M3TzBWQlEwVXNZVUZCUVR0RFZEQmFVRHRCVTNKYVF6dEZRVU5GTEN0Q1FVRkJPME5VZFZwSU8wRlRibHBQTzBWQlEwVXNZMEZCUVR0RFZIRmFWRHRCVTJoYVR6dEZRVU5GTEdOQlFVRTdRMVJyV2xRN1FWTTNXVTg3UlVGRFJTeGpRVUZCTzBOVUsxbFVPMEZUTVZsUE8wVkJRMFVzWTBGQlFUdERWRFJaVkR0QlUzWlpUenRGUVVORkxHTkJRVUU3UTFSNVdWUTdRVk53V1U4N1JVRkRSU3hqUVVGQk8wTlVjMWxVTzBGVGFGbERPMFZCUTBVc1owTkJRVUU3UTFScldVZzdRVk01V0U4N1JVRkRSU3hoUVVGQk8wTlVaMWxVTzBGVE0xaFBPMFZCUTBVc1lVRkJRVHREVkRaWVZEdEJVM2hZVHp0RlFVTkZMR0ZCUVVFN1ExUXdXRlE3UVZOeVdFODdSVUZEUlN4aFFVRkJPME5VZFZoVU8wRlRiRmhQTzBWQlEwVXNZVUZCUVR0RFZHOVlWRHRCVXk5WFR6dEZRVU5GTEdGQlFVRTdRMVJwV0ZRN1FWTXpWME03TzBWQlJVVXNVVUZCUVR0RlFVTkJMRmxCUVVFN1ExUTJWMGc3UVZNeFYwczdPMFZCUTBVc1kwRkJRVHREVkRaWFVEdEJVekZYU3pzN1JVRkRSU3hqUVVGQk8wTlVObGRRTzBGVE1WZExPenRGUVVORkxHTkJRVUU3UTFRMlYxQTdRVk14VjBzN08wVkJRMFVzWTBGQlFUdERWRFpYVUR0QlV6RlhTenM3UlVGRFJTeGpRVUZCTzBOVU5sZFFPMEZUTVZkTE96dEZRVU5GTEdOQlFVRTdRMVEyVjFBN1FWTjRWME03UlVGRFJTeHBRMEZCUVR0RFZEQlhTRHRCVTNSWFR6dEZRVU5GTEZsQlFVRTdRMVIzVjFRN1FWTnVWMDg3UlVGRFJTeFpRVUZCTzBOVWNWZFVPMEZUYUZkUE8wVkJRMFVzV1VGQlFUdERWR3RYVkR0QlV6ZFdUenRGUVVORkxGbEJRVUU3UTFRclZsUTdRVk14Vms4N1JVRkRSU3haUVVGQk8wTlVORlpVTzBGVGRsWlBPMFZCUTBVc1dVRkJRVHREVkhsV1ZEdEJVMjVXUXp0RlFVTkZMR0ZCUVVFN1JVRkRRU3c0UWtGQlFUdERWSEZXU0R0QlUycFdUenRGUVVORkxHVkJRVUU3UTFSdFZsUTdRVk01VlU4N1JVRkRSU3hsUVVGQk8wTlVaMVpVTzBGVE0xVlBPMFZCUTBVc1pVRkJRVHREVkRaVlZEdEJVM2hWVHp0RlFVTkZMR1ZCUVVFN1ExUXdWVlE3UVZOeVZVODdSVUZEUlN4bFFVRkJPME5VZFZWVU8wRlRiRlZQTzBWQlEwVXNaVUZCUVR0RFZHOVZWRHRCVXpsVVF6dEZRVU5GTEc5Q1FVRkJPMFZCUTBFc0swSkJRVUU3UTFSblZVZzdRVk01VkVjN1JVRkRSU3huUWtGQlFUdERWR2RWVER0QlV6bFVTenRGUVVORkxGTkJRVUU3UTFSblZWQTdRVk0zVkVzN1JVRkRSU3hSUVVGQk8wTlVLMVJRTzBGVE5WUkxPMFZCUTBVc1QwRkJRVHREVkRoVVVEdEJVek5VU3p0RlFVTkZMRlZCUVVFN1ExUTJWRkE3UVZOMFZFczdPMFZCUlVVc2VVSkJRVUU3UlVGRFFTeFRRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdERWSGRVVUR0QlUzSlVTenM3UlVGRlJTeDNRa0ZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3h2UTBGQlFUdFZRVUZCTERSQ1FVRkJPME5VZFZSUU8wRlRiRlJUTzBWQlEwVXNWMEZCUVR0RFZHOVVXRHRCVTJwVVV6dEZRVU5GTEZWQlFVRTdRMVJ0VkZnN1FWTm9WRk03UlVGRFJTeFRRVUZCTzBOVWExUllPMEZUTDFOVE8wVkJRMFVzV1VGQlFUdERWR2xVV0R0QlUzaFRTenM3UlVGRlJTeGhRVUZCTzBWQlEwRXNOa0pCUVVFN1ExUXdVMUE3UVZOeVUwTTdSVUZEUlN4WFFVRkJPME5VZFZOSU8wRlZkbk5DUkR0RlFVTkZMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZWQlFVRTdSVUZEUVN4eFEwRkJRVHRGUVVOQkxHVkJRVUU3UTFaNWMwSkVPMEZWZG5OQ1F6dEZRVU5GTEhGRFFVRkJPMFZCUVVFc05rSkJRVUU3UTFaNWMwSklPMEZWZEhOQ1F6dEZRVU5GTEdWQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMR2xEUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4cFFrRkJRVHRGUVVOQkxHbENRVUZCTzBOV2QzTkNTRHRCVlhKelFrTTdSVUZEUlN4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFZRVUZCTzBWQlEwRXNhVUpCUVVFN1ExWjFjMEpJTzBGVmNITkNRenM3TzBWQlIwVXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4elFrRkJRVHRGUVVOQkxHbENRVUZCTzBOV2MzTkNTRHRCVlc1elFrTTdSVUZEUlN4cFFrRkJRVHREVm5GelFrZzdRVlZzYzBKRE8wVkJRMFVzYTBKQlFVRTdRMVp2YzBKSU8wRlZhbk5DUXp0RlFVTkZMRlZCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTFadGMwSklPMEZWYUhOQ1F6dEZRVU5GTEcxQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxFOUJRVUU3UlVGRFFTeFJRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3d3UWtGQlFUdEZRVU5CTEN0Q1FVRkJPMFZCUTBFc2EwTkJRVUU3VlVGQlFTd3dRa0ZCUVR0RlFVTkJMQ3RDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVm10elFrZzdRVlV2Y2tKRE8wVkRha1UyUWl4dlFrRkJRVHRGUVVObUxIZENRVUZCTzBWQlEwY3NhVUpCUVVFN1JVUnBSV1lzWlVGQlFUdEZRVU5CTEdsQ1FVRkJPME5XYlhOQ1NEdEJWV3B6UWtjN096dEZRVWRGTEhOQ1FVRkJPMFZCUTBFc1dVRkJRVHREVm0xelFrdzdRVlZvYzBKSE8wVkJRMFVzWlVGQlFUdERWbXR6UWt3N1FWVTVja0pETzBWQlEwVXNjVUpCUVVFN1ExWm5jMEpJTzBGVk0zSkNTenM3TzBWQlIwVXNaVUZCUVR0RlFVTkJMR3RDUVVGQk8wTldObkpDVUR0QlZYaHlRa003TzBWQlJVVXNjVUpCUVVFN1JVRkJRU3h4UWtGQlFUdEZRVUZCTEdOQlFVRTdSVUZEUVN4elFrRkJRVHROUVVGQkxHdENRVUZCTzBWQlEwRXNOa0pCUVVFN1JVRkJRU3c0UWtGQlFUdE5RVUZCTERKQ1FVRkJPMVZCUVVFc2RVSkJRVUU3UlVGRFFTd3JRa0ZCUVR0RlFVTkJMRTlCUVVFN1JVRkRRU3hwUWtGQlFUdERWakJ5UWtnN1FWVjJja0pMT3pzN08wVkJSVVVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHREVmpKeVFsQTdRVlY0Y2tKTE96dEZRVU5GTEhGQ1FVRkJPMDFCUVVFc1pVRkJRVHREVmpKeVFsQTdRVlY0Y2tKTE96dEZRVU5GTEc5Q1FVRkJPMDFCUVVFc1dVRkJRVHRWUVVGQkxGRkJRVUU3UlVGRFFTeGxRVUZCTzBOV01uSkNVRHRCVlhSeVFrTTdSVUZEUlN4cFFrRkJRVHRGUVVOQkxIbERRVUZCTzBOV2QzSkNTRHRCVlhKeVFrTTdSVUZEUlN4blFrRkJRVHRGUVVOQkxHbENRVUZCTzBOV2RYSkNTRHRCVlhCeVFrTTdSVUZEUlN4alFVRkJPME5XYzNKQ1NEdEJWVzV5UWtNN1JVRkRSU3hUUVVGQk8wVkJRMEVzYVVKQlFVRTdRMVp4Y2tKSU8wRlpjREJDUXp0RlFVTkZMR05CUVVFN1ExcHpNRUpJTzBGWmJqQkNRenRGUVVORkxEUkNRVUZCTzBWQlEwRXNPRUpCUVVFN1JVRkRRU3h4UkVGQlFUdEZRVU5CTEc5Q1FVRkJPMFZCUTBFc2FVSkJRVUU3UTFweE1FSklPMEZaYkRCQ1F6dEZRVU5GTEhsQ1FVRkJPME5hYnpCQ1NEdEJXV3d3UWtjN1JVRkRSU3g1UWtGQlFUdERXbTh3UWt3N1FWbHFNRUpQTzBWQlEwVXNZMEZCUVR0RFdtMHdRbFE3UVZrM2VrSkRPMFZCUTBVc1pVRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMRTlCUVVFN1JVRkRRU3hSUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc0swSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4NVEwRkJRVHRGUVVOQkxHbENRVUZCTzBOYUszcENTRHRCV1RWNlFrczdSVUZEUlN4blFrRkJRVHRGUVVOQkxFOUJRVUU3UlVGRFFTeFJRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzTUVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc0swSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RlFVTkJMR3RFUVVGQk8xVkJRVUVzTUVOQlFVRTdSVUZEUVN4MVEwRkJRVHREV2poNlFsQTdRVmt6ZWtKTE8wVlFia1JyUkN4M1EwRkJRVHRWUVVGQkxHZERRVUZCTzBWUGNVUm9SQ3hsUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1UwRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeFZRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3h2UWtGQlFUdEZRVU5CTERCQ1FVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMRzlEUVVGQk8xVkJRVUVzTkVKQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxHbERRVUZCTzFWQlFVRXNlVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4cFFrRkJRVHREV2paNlFsQTdRVmt6ZWtKUE8wVkJRMFVzTUVKQlFVRTdSVUZEUVN4WlFVRkJPME5hTm5wQ1ZEdEJXV3d6UWtNN08wVkJNa1JOTERSQ1FVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFdqSjZRbEE3UVZseWVrSkVPMFZCUTBVN1NVRkRSU3hYUVVGQk8wZGFkWHBDUkR0RFFVTkdPMEZaTVhwQ1JEdEZRVU5GTzBsQlEwVXNWMEZCUVR0SFduVjZRa1E3UTBGRFJqdEJXWEI2UWtRN1JVRkZTVHRKUVVORkxHdENRVUZCTzBkYWNYcENTRHRGV1d4NlFrTTdTVUZEUlN4MVFrRkJRVHRKUVVOQkxHRkJRVUU3UjFwdmVrSklPMFZaYW5wQ1F6dEpRVU5GTEdWQlFVRTdSMXB0ZWtKSU8wTkJRMFk3UVZrdmVVSkVPMFZCUTBVN08wbEJSVVVzTWtKQlFVRTdSMXBwZWtKRU8wVlpOM2xDUXpzN1NVRkZSU3g1UWtGQlFUdEhXaXQ1UWtnN1JWazFlVUpETzBsQlEwVXNNRUpCUVVFN1NVRkRRU3hwUWtGQlFUdEhXamg1UWtnN1JWbG9la0pET3p0SlFVMUpMR2xEUVVGQk8wbEJRMEVzT0VKQlFVRTdTVUZEUVN3eVFrRkJRVHRIV2poNVFrdzdSVmt4ZVVKTE8wbEJRMFVzT0VKQlFVRTdTVUZEUVN4M1FrRkJRVHRKUVVOQkxITkNRVUZCTzBsQlEwRXNORUpCUVVFN1IxbzBlVUpRTzBWWmFucENSenM3U1VGVlNTeHBRMEZCUVR0SlFVTkJMRGhDUVVGQk8wbEJRMEVzTWtKQlFVRTdSMW95ZVVKUU8wVlplSGxDU3pzN1NVRkZSU3g1UWtGQlFUdEhXakI1UWxBN1JWbDBNRUpETzBsQmFVTkpMSGRDUVVGQk8wbEJRMEVzYTBOQlFVRTdTVUZEUVN3NFFrRkJRVHRIV25kNVFrdzdSVmt6TUVKRE96dEpRWGREU1N4clEwRkJRVHRIV25WNVFrdzdSVmt2TUVKRE96czdTVUU0UTBrc2JVTkJRVUU3VDBGQlFTeG5RMEZCUVR0WlFVRkJMRzlDUVVGQk8wZGFjM2xDVER0RldXNTVRa2M3U1VGRFJTeDVRa0ZCUVR0SFduRjVRa3c3UTBGRFJqdEJRVU5FTEd0RVFVRnJSRHRCWVhvNVFteEVPMFZCUTBVc1owSkJRVUU3UlVGRFFTeGxRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMR3REUVVGQk8xVkJRVUVzTUVKQlFVRTdSVUZEUVN4cFFrRkJRVHREWWpJNVFrUTdRV0Y2T1VKRE8wVlNSbk5FTEhkRFFVRkJPMVZCUVVFc1owTkJRVUU3UlZGSmNFUXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc01FSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMQ3RDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN4MVFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzYVVKQlFVRTdRMkl5T1VKSU8wRmhlamxDUnp0RlFVTkZMR1ZCUVVFN1JVRkRRU3h6UWtGQlFUdERZakk1UWt3N1FXRjRPVUpITzBWQlEwVXNZMEZCUVR0RFlqQTVRa3c3UVdGeU9VSkhPenM3UlVGSFJTeFpRVUZCTzBWQlEwRXNjMEpCUVVFN1EySjFPVUpNTzBGaGNEbENSenRGUVVORkxHVkJRVUU3UTJKek9VSk1PMEZoYkRsQ1F6dEZRVU5GTEcxQ1FVRkJPMFZCUTBFc1YwRkJRVHRGUVVOQkxGTkJRVUU3UlVGRFFTeFZRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3g1UTBGQlFUdFZRVUZCTEdsRFFVRkJPMFZCUTBFc2JVSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFltODVRa2c3UVdFdk9FSkxPMFZCUTBVc1dVRkJRVHRGUVVOQkxEQkNRVUZCTzBWQlEwRXNjMEpCUVVFN1EySnBPVUpRTzBGaEx6aENUenRGUVVORkxGbEJRVUU3UTJKcE9VSlVPMEZoTXpoQ1N6czdPMFZCUjBVc1dVRkJRVHREWWpZNFFsQTdRV0YyT0VKSE8wVkJRMFVzYjBKQlFVRTdRMko1T0VKTU8wRmhiRGhDU3pzN096czdPenM3UlVGSlJTeHZRa0ZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3h0UWtGQlFUdERZbmM0UWxBN1FXRjBPRUpQT3pzN096czdPenRGUVVORkxGbEJRVUU3UlVGRFFTeHRRa0ZCUVR0RFlpczRRbFE3UVdFek9FSkxPenRGUVVORkxEQkNRVUZCTzBOaU9EaENVRHRCWVhvNFFrTTdPMFZCUlVVc1ZVRkJRVHRGUVVOQkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1EySXlPRUpJTzBGaE9UaENRenM3UlVGTlNTeHpRa0ZCUVR0RFlqUTRRa3c3UVdGNE9FSkRPMFZCUTBVc1ZVRkJRVHREWWpBNFFrZzdRV0Y0T0VKSE8wVkJRMFVzVjBGQlFUdERZakE0UWt3N1FXRjBPRUpETzBWQlEwVXNZVUZCUVR0RFluYzRRa2c3UVdGME9FSkhPMFZCUTBVc1kwRkJRVHREWW5jNFFrdzdRV0Z3T0VKRE96dEZRVVZGTEc5RFFVRkJPMVZCUVVFc05FSkJRVUU3UlVGRFFTeFpRVUZCTzBOaWN6aENTRHRCWVc0NFFrTTdSVUZEUlN4VFFVRkJPMFZCUTBFc1dVRkJRVHREWW5FNFFrZzdRV0Z1T0VKSE8wVkJRMFVzWVVGQlFUdERZbkU0UWt3N1FXRnFPRUpETzBWQlEwVXNVMEZCUVR0RlFVTkJMRmRCUVVFN1EySnRPRUpJTzBGaGFqaENSenRGUVVORkxGbEJRVUU3UTJKdE9FSk1PMEZoTVRkQ1N6czdPenRGUVVORkxHTkJRVUU3UTJJck4wSlFPMEZCUTBRN096czdPMGRCUzBjN1FVRkRTQ3h6UWtGQmMwSTdRVUZEZEVJc2MwSkJRWE5DTzBGQlEzUkNMSE5DUVVGelFqdEJZelZ0UTNSQ08wVkRhMEkyUWl4dFFrRkJRVHRGVm1ReVFpeDNRMEZCUVR0VlFVRkJMR2REUVVGQk8wVlRSSFJFTEdkQ1FVRkJPMFZCUTBFc1kwRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzZVVOQlFVRTdSVUZCUVN4cFEwRkJRVHRGUVVOQkxHOURRVUZCTzFWQlFVRXNORUpCUVVFN1JVRkRRU3hwUWtGQlFUdERaRGh0UTBRN1FXTTFiVU5ETzBWSWFFSTJRaXh2UWtGQlFUdEZRVU5tTEhkQ1FVRkJPMFZIYVVKYUxGVkJRVUU3UlVGRFFTeHBRa0ZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hyUWtGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHbENRVUZCTzBOa0syMURTRHRCWXpWdFEwTTdPMFZCUlVVc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNUMEZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzYTBKQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxHbENRVUZCTzBOa09HMURTRHRCWXpOdFEwTTdSVUZEUlN4UlFVRkJPMFZCUTBFc1dVRkJRVHREWkRadFEwZzdRV012YlVORE8wVkJTMGtzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1UwRkJRVHRGUVVOQkxGVkJRVUU3UlVGRFFTeDVRMEZCUVR0VlFVRkJMR2xEUVVGQk8wTmtObTFEVER0QlkzcHRRME03UlVGRFJTeFRRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3haUVVGQk8wTmtNbTFEU0R0Qll6bHRRME03UlVGTlNTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hUUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEhsRFFVRkJPMVZCUVVFc2FVTkJRVUU3UTJReWJVTk1PMEZqZUcxRFJ6dEZRVU5GTEZsQlFVRTdRMlF3YlVOTU8wRmpkRzFEUXp0RlFVVkpMREJDUVVGQk8wTmtkVzFEVER0QlkyNXRRME03UlVGRlNTd3dRa0ZCUVR0RFpHOXRRMHc3UVdOb2JVTkRPMFZCUlVrc01FSkJRVUU3UTJScGJVTk1PMEZqTjJ4RFF6dEZRVVZKTERCQ1FVRkJPME5rT0d4RFREdEJZekZzUTBNN1JVRkRSU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPME5rTkd4RFNEdEJZM3BzUTBzN1JVRkRSU3dyUWtGQlFUdEZRVU5CTERCQ1FVRkJPME5rTW14RFVEdEJZM2hzUTBzN1JVRkRSU3dyUWtGQlFUdEZRVU5CTERCQ1FVRkJPME5rTUd4RFVEdEJZM1pzUTBzN1JVRkRSU3dyUWtGQlFUdEZRVU5CTERCQ1FVRkJPME5rZVd4RFVEdEJZM1JzUTBzN1JVRkRSU3dyUWtGQlFUdEZRVU5CTERCQ1FVRkJPME5rZDJ4RFVEdEJZemx0UTBNN1JVRXlRa2tzVTBGQlFUdEZRVU5CTEdOQlFVRTdRMlJ6YkVOTU8wRmpiRzVEUXp0RlFTdENUU3hqUVVGQk8wTmtjMnhEVUR0QlkycHNRME03UlVGRFJTeHBRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wTmtiV3hEU0R0QlkyaHNRMHM3UlVGRlNTeGxRVUZCTzBOa2FXeERWRHRCWXpkclEwczdSVUZGU1N4bFFVRkJPME5rT0d0RFZEdEJZekZyUTBzN1JVRkZTU3hsUVVGQk8wTmtNbXREVkR0QlkzWnJRMHM3UlVGRlNTeGxRVUZCTzBOa2QydERWRHRCWTJwdFEwTTdSVUVyUWtrc2RVSkJRVUU3UTJSeGEwTk1PMEZqYW10RFF6dEZRM1JLTWtJc2IwSkJRVUU3UTJZd2RFTTFRanRCWTJoclEwczdSVUZEUlN4cFFrRkJRVHRGUVVOQkxHZENRVUZCTzBOa2EydERVRHRCWTNCclEwczdSVU14U25WQ0xHOUNRVUZCTzBWRVowdHVRaXhWUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UTJScmEwTlVPMEZqTDJwRFR6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTJScGEwTlVPMEZqTjJwRFN6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTJRcmFrTlFPMEZqTjJwRFR6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc1owSkJRVUU3UTJRcmFrTlVPMEZqZW1wRFF6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTJReWFrTklPMEZqZUdwRFN6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTJRd2FrTlFPMEZqZG1wRFN6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTJSNWFrTlFPMEZqY0dwRFF6dEZRVU5GTEZkQlFVRTdRMlJ6YWtOSU8wRmpibXBEUXp0RlFVTkZMR05CUVVFN1EyUnhha05JTzBGQlEwUXNNa0pCUVRKQ08wRm5Rak40UXpOQ08wVkJRMFVzVjBGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN3eVFrRkJRVHREYUVJMmVFTkVPMEZuUWpONFEwTTdSVUZEUlN3eVFrRkJRVHREYUVJMmVFTklPMEZuUW5wNFEwYzdSVUZEUlN4elEwRkJRVHRGUVVOQkxESkNRVUZCTzBOb1FqSjRRMHc3UVdkQ2VIaERSenRGUVVORkxITkRRVUZCTzBWQlEwRXNNa0pCUVVFN1EyaENNSGhEVER0QlowSjJlRU5ITzBWQlEwVXNjME5CUVVFN1EyaENlWGhEVER0QlowSnllRU5ETzBWQlEwVXNjME5CUVVFN1EyaENkWGhEU0NJc0ltWnBiR1VpT2lKbGVHRnRjR3hsTG1OemN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxSUQwOVBUMDlJRk5qY205c2JHSmhjaUE5UFQwOVBTQXFMMXh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2lCN1hHNGdJSGRwWkhSb09pQTNjSGc3WEc0Z0lHaGxhV2RvZERvZ04zQjRPMXh1SUNBdGQyVmlhMmwwTFdKdmNtUmxjaTF5WVdScGRYTTZJRFZ3ZUR0Y2JuMWNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWEl0ZEhKaFkyc3RjR2xsWTJVZ2UxeHVJQ0F0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEVndlRHRjYm4xY2JqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJNmRtVnlkR2xqWVd3Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJ5WjJKaEtEQXNJREFzSURBc0lEQXVNalVwTzF4dUlDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEdGNibjFjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRHaDFiV0k2YUc5eWFYcHZiblJoYkNCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHVmVnh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2pwb2IzWmxjaUI3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eE5TazdYRzU5WEc0Nk9pMTNaV0pyYVhRdGMyTnliMnhzWW1GeUxYUm9kVzFpT21odmRtVnlJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2NtZGlZU2d3TENBd0xDQXdMQ0F3TGpNMUtUdGNibjFjYmk1elpXTjBhVzl1SUh0Y2JpQWdiV0Z5WjJsdU9pQXhaVzBnTUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1elpXTjBhVzl1WDE5b1pXRmtaWElzWEc0dWMyVmpkR2x2Ymw5ZlkyOXVkR1Z1ZEN4Y2JpNXpaV04wYVc5dVgxOW1iMjkwWlhJZ2UxeHVJQ0J0WVhKbmFXNDZJREE3WEc0Z0lIQmhaR1JwYm1jNklEQWdNMlZ0TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG5ObFkzUnBiMjVmWDNScGRHeGxJSHRjYmlBZ1kyOXNiM0k2SUNNMk5qWTdYRzU5WEc0dWMyVmpkR2x2Ymw5ZmFETWdlMXh1SUNCamIyeHZjam9nSXpVd04yRm1aVHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhMak0xWlcwN1hHNTlYRzR1YzJWamRHbHZibDlmYURRZ2UxeHVJQ0JtYjI1MExYTnBlbVU2SURFdU1XVnRPMXh1SUNCamIyeHZjam9nSXpZMk5qdGNibjFjYmk1elpXTjBhVzl1WDE5b05TQjdYRzRnSUdadmJuUXRjMmw2WlRvZ01XVnRPMXh1SUNCamIyeHZjam9nSXprNU9UdGNibjFjYmk1elpXTjBhVzl1WDE5a2JDeGNiaTV6WldOMGFXOXVYMTlrZEN4Y2JpNXpaV04wYVc5dVgxOWtaQ0I3WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnY0dGa1pHbHVaem9nTUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1elpXTjBhVzl1WDE5a2JDQjdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dNVHRjYm4xY2JpNXpaV04wYVc5dVgxOWtkQ0I3WEc0Z0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjYm4xY2JpNXpaV04wYVc5dVgxOWtaQ0I3WEc0Z0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjYmlBZ1kyOXNiM0k2SUNNd05UZzVOREk3WEc1OVhHNHVjMlZqZEdsdmJsOWZjSEpsSUh0Y2JpQWdiV0Z5WjJsdU9pQXlaVzBnTUR0Y2JpQWdjR0ZrWkdsdVp6b2dNV1Z0TzF4dUlDQm1iMjUwTFhOcGVtVTZJREUwY0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBeE5UQWxPMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQnNaV1owTzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabUZtWVdaaE8xeHVJQ0JpYjNKa1pYSTZJREZ3ZUNCemIyeHBaQ0FqWkdSa08xeHVJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQTBjSGc3WEc0Z0lHTnZiRzl5T2lBak5qWTJPMXh1SUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjYm4xY2JpNXpaV04wYVc5dVgxOWpiMlJsSUh0Y2JpQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hHNGdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxuTmxZM1JwYjI1ZlgyWnZiM1JsY2lCN1hHNGdJR0p2Y21SbGNpMTBiM0E2SURGd2VDQnpiMnhwWkNBalpHUmtPMXh1SUNCdFlYSm5hVzR0ZEc5d09pQXpaVzA3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1ZV1poWm1FN1hHNGdJR052Ykc5eU9pQWpPVGs1TzF4dWZWeHVMbk5sWTNScGIyNWZYM1JoWW14bElIdGNiaUFnYldGeVoybHVPaUF4WlcwZ1lYVjBienRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdKdmNtUmxjaTEwYjNBNklERndlQ0J6YjJ4cFpDQWpaR1JrTzF4dWZWeHVMbk5sWTNScGIyNWZYM1JvTEZ4dUxuTmxZM1JwYjI1ZlgzUmtJSHRjYmlBZ2NHRmtaR2x1WnpvZ05YQjRJREUyY0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBeU5uQjRPMXh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTJSa1pEdGNibjFjYmk1elpXTjBhVzl1WDE5MGFDQjdYRzRnSUhSbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlpoWm1GbVlUdGNibjFjYmtCdFpXUnBZU0FvYldGNExYZHBaSFJvT2lBME9EQndlQ2tnZTF4dUlDQXVjMlZqZEdsdmJsOWZhR1ZoWkdWeUxGeHVJQ0F1YzJWamRHbHZibDlmWTI5dWRHVnVkQ0I3WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F4WlcwN1hHNGdJSDFjYm4xY2JpNWpZWE5sSUh0Y2JpQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh1SUNCNkxXbHVaR1Y0T2lBeE8xeHVJQ0JrYVhOd2JHRjVPaUJuY21sa08xeHVJQ0JuY21sa0xYUmxiWEJzWVhSbExXTnZiSFZ0Ym5NNklISmxjR1ZoZENneUxDQXhabklwTzF4dUlDQm5ZWEE2SURRd2NIZzdYRzRnSUhCaFpHUnBibWM2SURGbGJUdGNiaUFnWW05eVpHVnlMWFJ2Y0RvZ01YQjRJSE52Ykdsa0lDTmtaR1E3WEc0Z0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNBalpHUmtPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbU5oYzJVNllXWjBaWElnZTF4dUlDQmpiMjUwWlc1ME9pQW5KenRjYmlBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHVJQ0I2TFdsdVpHVjRPaUF5TzF4dUlDQjBiM0E2SURBN1hHNGdJR3hsWm5RNklEVXdKVHRjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh1SUNCM2FXUjBhRG9nTUR0Y2JpQWdZbTl5WkdWeUxXeGxablE2SURGd2VDQnpiMnhwWkNBalpHUmtPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbU5oYzJWZlgzQnlaU3hjYmk1allYTmxYMTkwWlhoMFlYSmxZU0I3WEc0Z0lHWnZiblF0YzJsNlpUb2dNVE53ZUR0Y2JpQWdiR2x1WlMxb1pXbG5hSFE2SURFMU1DVTdYRzU5WEc0dVkyRnpaVjlmY0hKbExGeHVMbU5oYzJWZlgyTnZaR1VzWEc0dVkyRnpaVjlmZEdWNGRHRnlaV0VnZTF4dUlDQm1iMjUwTFdaaGJXbHNlVG9nSjBOdmRYSnBaWElnVG1WM0p5d2dRMjl1YzI5c1lYTXNJRWRsYjNKbmFXRXNJRUZ5YVdGc0xDQnpZVzV6TFhObGNtbG1PMXh1ZlZ4dUxtTmhjMlZmWDNCeVpTQjdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdjR0ZrWkdsdVp6b2dNV1Z0TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabUZtWVdaaE8xeHVJQ0JvWldsbmFIUTZJREV3TUNVN1hHNGdJR0p2Y21SbGNpMXlZV1JwZFhNNklEUndlRHRjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjYmlBZ2IzWmxjbVpzYjNjNklHRjFkRzg3WEc1OVhHNHVZMkZ6WlY5ZmRHOXZiR0poY2lCN1hHNGdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHVJQ0JvWldsbmFIUTZJRE0yY0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBek5uQjRPMXh1SUNCbWIyNTBMWE5wZW1VNklERTBjSGc3WEc0Z0lIQmhaR1JwYm1jNklEQWdNVFp3ZUR0Y2JpQWdkR1Y0ZEMxaGJHbG5iam9nY21sbmFIUTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHVZMkZ6WlY5ZllXTjBhVzl1TEZ4dUxtTmhjMlZmWDNKbGJXOTJaU0I3WEc0Z0lHTjFjbk52Y2pvZ2NHOXBiblJsY2p0Y2JpQWdZMjlzYjNJNklDTXdOVGc1TkRJN1hHNGdJSFZ6WlhJdGMyVnNaV04wT2lCdWIyNWxPMXh1ZlZ4dUxtTmhjMlZmWDJGamRHbHZiaUI3WEc0Z0lHWnZiblF0YzJsNlpUb2dNVE53ZUR0Y2JpQWdjR0ZrWkdsdVp5MXNaV1owT2lBeE1IQjRPMXh1ZlZ4dUxtTmhjMlZmWDJGamRHbHZianBtYVhKemRDMWphR2xzWkNCN1hHNGdJSEJoWkdScGJtY3RiR1ZtZERvZ01EdGNibjFjYmk1allYTmxYMTl5WlcxdmRtVWdlMXh1SUNCbWJHOWhkRG9nY21sbmFIUTdYRzU5WEc0dVkyRnpaVjlmWTI5dWMyOXNaU0I3WEc0Z0lHMWhjbWRwYmpvZ01DQmhkWFJ2TzF4dUlDQm9aV2xuYUhRNklERTRNSEI0TzF4dUlDQmliM0prWlhJNklERndlQ0J6YjJ4cFpDQWpaR1JrTzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG1OaGMyVmZYM1JsZUhSaGNtVmhJSHRjYmlBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEc0Z0lIZHBaSFJvT2lBeE1EQWxPMXh1SUNCb1pXbG5hSFE2SURFd01DVTdYRzRnSUdKdmNtUmxjam9nYm05dVpUdGNiaUFnYjNWMGJHbHVaVG9nYm05dVpUdGNiaUFnY0dGa1pHbHVaem9nTVdWdE8xeHVJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmk1allYTmxYMTlzYVhOMExGeHVMbU5oYzJWZlgybDBaVzBnZTF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhCaFpHUnBibWM2SURBN1hHNGdJR3hwYzNRdGMzUjViR1V0ZEhsd1pUb2dibTl1WlR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1allYTmxYMTlzYVhOMElIdGNiaUFnYUdWcFoyaDBPaUF6TmpCd2VEdGNiaUFnWW05eVpHVnlMWFJ2Y0RvZ01YQjRJSE52Ykdsa0lDTmtaR1E3WEc0Z0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNBalpHUmtPMXh1SUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEc0Z0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4dWZWeHVMbU5oYzJWZlgybDBaVzBnZTF4dUlDQm9aV2xuYUhRNklETTJjSGc3WEc0Z0lHeHBibVV0YUdWcFoyaDBPaUF6Tm5CNE8xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUhCaFpHUnBibWM2SURBZ01UWndlRHRjYm4xY2JpNWpZWE5sWDE5cGRHVnRPbWh2ZG1WeUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTJZM1pqaG1PVHRjYm4xY2JpOHFLbHh1SUNvZ2JXbDRhVzV6TG14bGMzTWdMU0RsdDZYbGhiZmxoNzNtbGJCY2JpQXFJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNiaUFxSUVOeVpXRjBaV1FnUW5rNklGbGhiMmhoYVhocFlXOWNiaUFxSUZWd1pHRjBaVG9nTWpBeU1pNHpMakV4WEc0Z0tpOWNiaThxSUQwOVBUMDlQU0RtbG9mbW5Lem5uSUhubGFYbGg3M21sYkFnUFQwOVBUMDlJQ292WEc0dktpQTlQVDA5UFQwZzVaeUc2S2VTNXFDMzVieVA2SzYrNTcydTVZZTk1cFd3SUQwOVBUMDlQU0FxTDF4dUx5b2dQVDA5UFQwOUlPbVl0T1c5c2VhZ3QrVzhqK2l1dnVlOXJ1V0h2ZWFWc0NBOVBUMDlQVDBnS2k5Y2JpNXdZWEJsY2lCN1hHNGdJR0p2ZUMxemFHRmtiM2M2SURBZ01DQTJjSGdnTVhCNElDTmtZMlJtWlRZN1hHNGdJRzFoY21kcGJqb2dNMlZ0SUdGMWRHODdYRzRnSUcxaGVDMTNhV1IwYURvZ01USXdNSEI0TzF4dUlDQndZV1JrYVc1bk9pQXlaVzA3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3WEc0Z0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc1OVhHNHVjR0Z3WlhJdVpteGxlQ0I3WEc0Z0lHUnBjM0JzWVhrNklHWnNaWGc3WEc0Z0lHWnNaWGd0WkdseVpXTjBhVzl1T2lCeWIzYzdYRzRnSUdac1pYZ3RkM0poY0RvZ2JtOTNjbUZ3TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhkcFpIUm9PaUF4TURBbE8xeHVJQ0J0WVhndGQybGtkR2c2SURFd01DVTdYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNiaUFnY0dGa1pHbHVaem9nTUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1d1lYQmxjaTVtYkdWNElDNWhjblJwWTJ4bElIdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJR052YkhWdGJqdGNiaUFnZDJsa2RHZzZJREV3TUNVN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNTlYRzR1Y0dGd1pYSXVabXhsZUNBdVlYSjBhV05zWlY5ZmJXRnBiaUI3WEc0Z0lHaGxhV2RvZERvZ01UQXdKVHRjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjYmlBZ2IzWmxjbVpzYjNjNklHRjFkRzg3WEc1OVhHNHVjR0Z3WlhJdVpteGxlQ0F1WVhKMGFXTnNaVjlmWVhOcFpHVWdlMXh1SUNCaWIzSmtaWEl0Y21sbmFIUTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1ZlZ4dUxtaGxZV1JsY2lCN1hHNGdJSEJ2YzJsMGFXOXVPaUJ6ZEdsamEzazdYRzRnSUhvdGFXNWtaWGc2SURNN1hHNGdJSFJ2Y0RvZ01EdGNiaUFnYldGeVoybHVPaUF3SUdGMWRHODdYRzRnSUdKdmNtUmxjaTFpYjNSMGIyMDZJREZ3ZUNCemIyeHBaQ0FqWkdSa08xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1abU8xeHVJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEc0Z0lIUnlZVzV6YVhScGIyNHRaSFZ5WVhScGIyNDZJREF1TTNNN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWFHVmhaR1Z5WDNOMGFXTnJlU0I3WEc0Z0lIQmhaR1JwYm1jdGJHVm1kRG9nTWpZd2NIZzdYRzU5WEc0dVlYSjBhV05zWlNCN1hHNGdJR1JwYzNCc1lYazZJR1pzWlhnN1hHNGdJR1pzWlhndFpHbHlaV04wYVc5dU9pQnliM2M3WEc0Z0lHWnNaWGd0ZDNKaGNEb2dibTkzY21Gd08xeHVJQ0J3WVdSa2FXNW5PaUF5WlcwZ01EdGNiaUFnWm05dWRDMXphWHBsT2lBeE5uQjRPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNVFV3SlR0Y2JuMWNiaTVoY25ScFkyeGxYMTl0WVdsdUlIdGNiaUFnWm14bGVEb2dNVHRjYmlBZ2NHRmtaR2x1WnpvZ01DQXlaVzA3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1WVhKMGFXTnNaVjlmYldGcGJpQXVjMlZqZEdsdmJpQjdYRzRnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4dWZWeHVMbUZ5ZEdsamJHVmZYMjFoYVc0Z0xuTmxZM1JwYjI1ZlgyTnZiblJsYm5Rc1hHNHVZWEowYVdOc1pWOWZiV0ZwYmlBdWMyVmpkR2x2Ymw5ZlptOXZkR1Z5TEZ4dUxtRnlkR2xqYkdWZlgyMWhhVzRnTG5ObFkzUnBiMjVmWDJobFlXUmxjaUI3WEc0Z0lHOTJaWEptYkc5M09pQjJhWE5wWW14bE8xeHVmVnh1TG1GeWRHbGpiR1ZmWDIxaGFXNGdMbk5sWTNScGIyNWZYMmhsWVdSbGNpeGNiaTVoY25ScFkyeGxYMTl0WVdsdUlDNXpaV04wYVc5dVgxOWpiMjUwWlc1MElIdGNiaUFnYldGeVoybHVPaUF3TzF4dWZWeHVMbUZ5ZEdsamJHVmZYMkZ6YVdSbElIdGNiaUFnWm14bGVDMXphSEpwYm1zNklEQTdYRzRnSUhkcFpIUm9PaUF5TkRCd2VEdGNiaUFnWW05eVpHVnlMV3hsWm5RNklERndlQ0J6YjJ4cFpDQWpaR1JrTzF4dWZWeHVMbUZ5ZEdsamJHVmZYMkZ6YVdSbExteDBjaUI3WEc0Z0lHSnZjbVJsY2kxeWFXZG9kRG9nTVhCNElITnZiR2xrSUNOa1pHUTdYRzRnSUdKdmNtUmxjaTFzWldaME9pQnViMjVsTzF4dWZWeHVMbUZ5ZEdsamJHVmZYMkZ6YVdSbElDNXZkWFJzYVc1bExXTm9ZWEIwWlhKeklIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTJabVpqdGNibjFjYm5CeVpTeGNiaTV6WldOMGFXOXVYMTl3Y21VZ2UxeHVJQ0J3WVdSa2FXNW5PaUF5WlcwN1hHNGdJR1p2Ym5RdFptRnRhV3g1T2lBblEyOTFjbWxsY2lCT1pYY25MQ0JCY21saGJDd2djMkZ1Y3kxelpYSnBaanRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWmhabUZtWVR0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzVqYjJSbExGeHVMbk5sWTNScGIyNWZYMk52WkdVZ2UxeHVJQ0JtYjI1MExXWmhiV2xzZVRvZ0owTnZkWEpwWlhJZ1RtVjNKeXdnUVhKcFlXd3NJSE5oYm5NdGMyVnlhV1k3WEc0Z0lHWnZiblF0YzJsNlpUb2dNVFp3ZUR0Y2JuMWNiaTVtYjI5MFpYSWdlMXh1SUNCaWIzSmtaWEl0ZEc5d09pQXhjSGdnYzI5c2FXUWdJMlJqWkdabE5qdGNiaUFnY0dGa1pHbHVaem9nTTJWdElEQTdYRzRnSUhSbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y2JuMWNiaTVtYjI5MFpYSWdZVHBzYVc1ckxGeHVMbVp2YjNSbGNpQmhPblpwYzJsMFpXUXNYRzR1Wm05dmRHVnlJR0U2YUc5MlpYSWdlMXh1SUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYRzRnSUdOdmJHOXlPaUFqTURVNE9UUXlPMXh1ZlZ4dUxtWnZiM1JsY2lCaE9taHZkbVZ5SUh0Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQjFibVJsY214cGJtVTdYRzU5WEc0dWRYUnBiSE10WW05eVpHVnlMWEpwWjJoMElIdGNiaUFnWW05eVpHVnlMWEpwWjJoME9pQXhjSGdnYzI5c2FXUWdJMlJqWkdabE5qdGNibjFjYmk1b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVRRzFsWkdsaElDaHRZWGd0ZDJsa2RHZzZJRFE0TUhCNEtTQjdYRzRnSUdoMGJXd3NYRzRnSUdKdlpIa2dlMXh1SUNBZ0lHMWhjbWRwYmpvZ01EdGNiaUFnZlZ4dUlDQXVjR0Z3WlhJZ2UxeHVJQ0FnSUcxaGNtZHBiam9nTUR0Y2JpQWdJQ0J3WVdSa2FXNW5PaUF3TzF4dUlDQjlYRzRnSUM1aGNuUnBZMnhsWDE5dFlXbHVJSHRjYmlBZ0lDQndZV1JrYVc1bk9pQXdJREpsYlR0Y2JpQWdmVnh1ZlZ4dU9uSnZiM1FnZTF4dUlDQXRMVzkxZEd4cGJtVXRla2x1WkdWNE9pQXlNREF3TzF4dUlDQXRMVzkxZEd4cGJtVXRjM1JwWTJ0NUxXaGxhV2RvZERvZ01UQXdKVHRjYmlBZ0xTMXZkWFJzYVc1bExXTm9ZWEIwWlhKekxYZHBaSFJvT2lBeE1EQWxPMXh1ZlZ4dUx5b2dQVDA5UFQwOVBUMDlQU0JqYjJ4dmNuTXVkR2hsYldVZ0xTRGxuN3Jub1lEcG9wem9pYkxsajVqcGg0L3BtNGJsa0lnZ1BUMDlQVDA5UFQwOVBTQXFMMXh1THlvcVhHNGdLaUJsYkd4cGNITnBjeTVzWlhOeklDMGc1cGFINXB5czU1eUI1NVdsSUcxcGVHbHVlQ0RsaDczbWxiQmNiaUFxSUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBcUlFTnlaV0YwWldRZ1FuazZJRmxoYjJoaGFYaHBZVzljYmlBcUlGVndaR0YwWlRvZ01qQXlNaTR6TGpFeFhHNGdLaTljYmk4cUlEMDlQVDA5UFNEbWxvZm1uS3pubklIbmxhWGxoNzNtbGJBZ1BUMDlQVDA5SUNvdlhHNHZLaXBjYmlBcUlITm9ZV1J2ZHk1c1pYTnpJQzBnNlppMDViMng1cUMzNWJ5UDZLNis1NzJ1SUcxcGVHbHVlQ0RsaDczbWxiQmNiaUFxSUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBcUlFTnlaV0YwWldRZ1FuazZJRmxoYjJoaGFYaHBZVzljYmlBcUlGVndaR0YwWlRvZ01qQXlNaTR6TGpJd1hHNGdLaTljYmk4cUlEMDlQVDA5UFNEcG1MVGx2Ykhtb0xmbHZJL29ycjdudmE3bGg3M21sYkFnUFQwOVBUMDlJQ292WEc0dktpQTlQVDA5UFQwOVBUMDlJR2xqYjI0dWRHaGxiV1VnTFNCemRtY2c1WnUrNXFDSDU1cUU1cUMzNWJ5UElEMDlQVDA5UFQwOVBUMGdLaTljYmk1dmRYUnNhVzVsTFdsamIyNGdlMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNGdJSG90YVc1a1pYZzZJREU3WEc0Z0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjYmlBZ2RtVnlkR2xqWVd3dFlXeHBaMjQ2SUcxcFpHUnNaVHRjYmlBZ2QybGtkR2c2SURGbGJUdGNiaUFnYUdWcFoyaDBPaUF4WlcwN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxcFkyOXVYMTl6ZG1jZ2UxeHVJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEc0Z0lIb3RhVzVrWlhnNklESTdYRzRnSUhSdmNEb2dOVEFsTzF4dUlDQnNaV1owT2lBMU1DVTdYRzRnSUhkcFpIUm9PaUF4WlcwN1hHNGdJR2hsYVdkb2REb2dNV1Z0TzF4dUlDQm1hV3hzT2lCamRYSnlaVzUwWTI5c2IzSTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbEtDMDFNQ1VzSUMwMU1DVXBPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRhV052Ymw5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVp5QjdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dNVHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV2hsWVdScGJtZGZYMkZ1WTJodmNpQjdYRzRnSUdScGMzQnNZWGs2SUc1dmJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0k2YkdsdWF5eGNiaTV2ZFhSc2FXNWxMV2hsWVdScGJtZGZYMkZ1WTJodmNqcDJhWE5wZEdWa0xGeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVoxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2pwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak5UQTNZV1psTzF4dWZWeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVp6cG9iM1psY2lBdWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0lnZTF4dUlDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEc1OVhHNHViM1YwYkdsdVpTMW9aV0ZrYVc1blgzTjBZWEowT21odmRtVnlJSHRjYmlBZ2IzWmxjbVpzYjNjNklIWnBjMmxpYkdVN1hHNTlYRzR1YjNWMGJHbHVaUzFvWldGa2FXNW5YM04wWVhKMElDNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2lCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lIUnlZVzV6Wm05eWJUb2dkSEpoYm5Oc1lYUmxXU2d0TlRBbEtUdGNiaUFnYkdWbWREb2dMVEZsYlR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNpQjdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dMVEU3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQjNhV1IwYURvZ01UQXdKVHRjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1SUNCMmFYTnBZbWxzYVhSNU9pQm9hV1JrWlc0N1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWDIxdlpHRnNJSHRjYmlBZ1ltOTRMWE5vWVdSdmR6b2dNQ0F3SURad2VDQXhjSGdnSTJSalpHWmxOanRjYmlBZ1pHbHpjR3hoZVRvZ1pteGxlRHRjYmlBZ1pteGxlQzFrYVhKbFkzUnBiMjQ2SUdOdmJIVnRianRjYmlBZ1pteGxlQzEzY21Gd09pQnViM2R5WVhBN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qRTdYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTJabVpqdGNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNDBjenRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWZhR1ZoWkdWeUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOXRZV2x1TEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5bWIyOTBaWElnZTF4dUlDQjNhV1IwYURvZ01UQXdKVHRjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmFHVmhaR1Z5TEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5bWIyOTBaWElnZTF4dUlDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWZkR2wwYkdVc1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyMWhhVzRzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWDJadmIzUmxjaUI3WEc0Z0lIQmhaR1JwYm1jNklEQWdNVFp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWZhR1ZoWkdWeUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOTBhWFJzWlNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjYmlBZ2VpMXBibVJsZURvZ01UdGNiaUFnYldGeVoybHVPaUF3SUdGMWRHODdYRzRnSUdobGFXZG9kRG9nTlRKd2VEdGNiaUFnYkdsdVpTMW9aV2xuYUhRNklEVXljSGc3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYM1JwZEd4bElIdGNiaUFnWm05dWRDMXphWHBsT2lBeE5uQjRPMXh1SUNCbWIyNTBMWGRsYVdkb2REb2dOREF3TzF4dUlDQnRZWEpuYVc0NklEQWdNVFp3ZUR0Y2JpQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lDTmtZMlJtWlRZN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYMk5zYjNObElIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJRFV3SlR0Y2JpQWdjbWxuYUhRNklERXljSGc3WEc0Z0lIZHBaSFJvT2lBeU1IQjRPMXh1SUNCb1pXbG5hSFE2SURJd2NIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXlNSEI0TzF4dUlDQmpiMnh2Y2pvZ0l6azVPVHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXlNSEI0TzF4dUlDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRzRnSUdOMWNuTnZjam9nY0c5cGJuUmxjanRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5amJHOXpaU0F1YjNWMGJHbHVaUzFwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYMk5zYjNObE9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTJOalk3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyMWhhVzRnZTF4dUlDQm1iR1Y0T2lBeE8xeHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWm05dmRHVnlJSHRjYmlBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEc0Z0lIUmxlSFF0WVd4cFoyNDZJSEpwWjJoME8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5dmRtVnliR0Y1SUh0Y2JpQWdZMjl1ZEdWdWREb2dKeWM3WEc0Z0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNiaUFnZWkxcGJtUmxlRG9nTVR0Y2JpQWdkRzl3T2lBd08xeHVJQ0JzWldaME9pQXdPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1abU8xeHVJQ0J2Y0dGamFYUjVPaUF3TGpFN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNScGJua3NYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5TG05MWRHeHBibVV0WkhKaGQyVnlYM1JwYm5rZ2UxeHVJQ0IzYVdSMGFEb2dNamd3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzTG05MWRHeHBibVV0WkhKaGQyVnlYMjFwYm1rc1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMXBibWtnZTF4dUlDQjNhV1IwYURvZ05EZ3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNMbTkxZEd4cGJtVXRaSEpoZDJWeVgzTnRZV3hzTEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4MGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQ0I3WEc0Z0lIZHBaSFJvT2lBMU5EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5eWRHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZmNtVm5kV3hoY2l4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmNtVm5kV3hoY2lCN1hHNGdJSGRwWkhSb09pQTJPREJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZiV1ZrYVhWdExGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRaV1JwZFcwZ2UxeHVJQ0IzYVdSMGFEb2dOekl3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzTG05MWRHeHBibVV0WkhKaGQyVnlYMnhoY21kbExGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlNCN1hHNGdJSGRwWkhSb09pQTVOakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3dnZTF4dUlDQmliM0prWlhJdGJHVm1kRG9nTVhCNElITnZiR2xrSUNOa1kyUm1aVFk3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUnBibmt1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnY21sbmFIUTZJQzB5T1RCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3dWIzVjBiR2x1WlMxa2NtRjNaWEpmYldsdWFTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQnlhV2RvZERvZ0xUUTVNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXpiV0ZzYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCeWFXZG9kRG9nTFRVMU1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5eVpXZDFiR0Z5TG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUhKcFoyaDBPaUF0Tmprd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xtOTFkR3hwYm1VdFpISmhkMlZ5WDIxbFpHbDFiUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0J5YVdkb2REb2dMVGN6TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlzWVhKblpTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQnlhV2RvZERvZ0xUazNNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHSnZjbVJsY2kxeWFXZG9kRG9nTVhCNElITnZiR2xrSUNOa1kyUm1aVFk3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUnBibmt1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnYkdWbWREb2dMVEk1TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMngwY2k1dmRYUnNhVzVsTFdSeVlYZGxjbDl0YVc1cExtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lHeGxablE2SUMwME9UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmMyMWhiR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnYkdWbWREb2dMVFUxTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMngwY2k1dmRYUnNhVzVsTFdSeVlYZGxjbDl5WldkMWJHRnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMDJPVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZiV1ZrYVhWdExtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lHeGxablE2SUMwM016QndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlV1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnYkdWbWREb2dMVGszTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWl4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUWdlMXh1SUNCc1pXWjBPaUF3TzF4dUlDQjNhV1IwYURvZ01UQXdKVHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmRHbHVlU3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmZEdsdWVTQjdYRzRnSUdobGFXZG9kRG9nTWpRd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxcGJta3NYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYMjFwYm1rZ2UxeHVJQ0JvWldsbmFIUTZJRE15TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl6YldGc2JDeGNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZjMjFoYkd3Z2UxeHVJQ0JvWldsbmFIUTZJRE0yTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5WldkMWJHRnlMRnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkowZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDl5WldkMWJHRnlJSHRjYmlBZ2FHVnBaMmgwT2lBME1EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXVmthWFZ0TEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5dFpXUnBkVzBnZTF4dUlDQm9aV2xuYUhRNklEUTBNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlVnZTF4dUlDQm9aV2xuYUhRNklEUTRNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaUI3WEc0Z0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNBalpHTmtabVUyTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzUjBZaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBhVzU1TG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUhSdmNEb2dMVEkxTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl0YVc1cExtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lIUnZjRG9nTFRNek1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNSMFlpNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0IwYjNBNklDMHpOekJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQjBiM0E2SUMwME1UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXVmthWFZ0TG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUhSdmNEb2dMVFExTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDlzWVhKblpTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQjBiM0E2SUMwME9UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUWdlMXh1SUNCMGIzQTZJR2x1YVhScFlXdzdYRzRnSUdKdmNtUmxjaTEwYjNBNklERndlQ0J6YjJ4cFpDQWpaR05rWm1VMk8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkowZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDkwYVc1NUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEc0Z0lHSnZkSFJ2YlRvZ0xUSTFNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgySjBkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRhVzVwTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYRzRnSUdKdmRIUnZiVG9nTFRNek1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0JpYjNSMGIyMDZJQzB6TnpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmY21WbmRXeGhjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0JpYjNSMGIyMDZJQzAwTVRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYldWa2FYVnRMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR0p2ZEhSdmJUb2dMVFExTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkowZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDlzWVhKblpTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQmliM1IwYjIwNklDMDBPVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXZjR1Z1WldRZ2UxeHVJQ0IyYVhOcFltbHNhWFI1T2lCMmFYTnBZbXhsTzF4dUlDQjZMV2x1WkdWNE9pQjJZWElvTFMxdmRYUnNhVzVsTFhwSmJtUmxlQ2s3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmIzQmxibVZrTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjYmlBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3Z2UxeHVJQ0J5YVdkb2REb2dNRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5SUh0Y2JpQWdiR1ZtZERvZ01EdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Y0dWdVpXUXViM1YwYkdsdVpTMWtjbUYzWlhKZmRIUmlJSHRjYmlBZ2RHOXdPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRZ2UxeHVJQ0JpYjNSMGIyMDZJREE3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmIyWm1jMlYwTG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dlptWnpaWFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5SUh0Y2JpQWdhR1ZwWjJoME9pQmpZV3hqS0RFd01DVWdMU0EwWlcwcE8xeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMjltWm5ObGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXNYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiMlptYzJWMExtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDQjdYRzRnSUhkcFpIUm9PaUJqWVd4aktERXdNQ1VnTFNBMFpXMHBPMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV0NndE5UQWxLVHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dlptWnpaWFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDQjdYRzRnSUhKcFoyaDBPaUF5WlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiMlptYzJWMExtOTFkR3hwYm1VdFpISmhkMlZ5WDI5d1pXNWxaQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSElnZTF4dUlDQnNaV1owT2lBeVpXMDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDkwZEdJZ2UxeHVJQ0IwYjNBNklESmxiVHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dlptWnpaWFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDJKMGRDQjdYRzRnSUdKdmRIUnZiVG9nTW1WdE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMkYxZEc4dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyRjFkRzh1YjNWMGJHbHVaUzFrY21GM1pYSmZiSFJ5SUh0Y2JpQWdhR1ZwWjJoME9pQmhkWFJ2TzF4dUlDQnRZWGd0YUdWcFoyaDBPaUJqWVd4aktERXdNQ1VnTFNBMFpXMHBPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJaMWJHd2dlMXh1SUNCd1lXUmthVzVuT2lBd08xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk1nZTF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2QybGtkR2c2SUhaaGNpZ3RMVzkxZEd4cGJtVXRZMmhoY0hSbGNuTXRkMmxrZEdncE8xeHVJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6TFhCaGNtVnVkQ0I3WEc0Z0lIUnlZVzV6YVhScGIyNDZJREF1TTNNZ1pXRnpaUzFwYmkxdmRYUTdYRzU5WEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZmRHbDBiR1VnZTF4dUlDQnRZWEpuYVc0NklEQWdNVFp3ZUR0Y2JpQWdhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTkRCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBeE5uQjRPMXh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTJSalpHWmxOanRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhObkI0TzF4dUlDQm1iMjUwTFhkbGFXZG9kRG9nTkRBd08xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyMWhhVzRnZTF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTlzYVhOMExGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYM04xWW1wbFkzUXNYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmYVhSbGJTQjdYRzRnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2JpQWdlaTFwYm1SbGVEb2dNanRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0J3WVdSa2FXNW5PaUF3TzF4dUlDQnNhWE4wTFhOMGVXeGxMWFI1Y0dVNklHNXZibVU3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmYkdsemRDQjdYRzRnSUhCaFpHUnBibWM2SURBdU5XVnRJREE3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZjM1ZpYW1WamRDQjdYRzRnSUhCaFpHUnBibWN0YkdWbWREb2dNV1Z0TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMmwwWlcwZ2UxeHVJQ0J0WVhKbmFXNDZJREE3WEc0Z0lHeHBibVV0YUdWcFoyaDBPaUF6TUhCNE8xeHVJQ0JtYjI1MExYTnBlbVU2SURFemNIZzdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZjR3hoWTJWb2IyeGtaWElnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJSFJ2Y0RvZ01EdGNiaUFnYkdWbWREb2dNRHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdobGFXZG9kRG9nTXpCd2VEdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTJZM1pqaG1PVHRjYmlBZ1ltOXlaR1Z5TFd4bFpuUTZJREp3ZUNCemIyeHBaQ0FqTURVNE9UUXlPMXh1SUNCMGNtRnVjMmwwYVc5dUxXUjFjbUYwYVc5dU9pQXdMakp6TzF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJGdVkyaHZjaUI3WEc0Z0lIZG9hWFJsTFhOd1lXTmxPaUJ1YjNkeVlYQTdYRzRnSUhSbGVIUXRiM1psY21ac2IzYzZJR1ZzYkdsd2MybHpPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dUlDQmthWE53YkdGNU9pQmliRzlqYXp0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F4TGpWbGJUdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5aGJtTm9iM0k2YkdsdWF5eGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZkbWx6YVhSbFpDeGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN1hHNGdJR052Ykc5eU9pQWpOVFUxTzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMkZ1WTJodmNqcG9iM1psY2lCN1hHNGdJR052Ykc5eU9pQWpNRFU0T1RReU8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJOdlpHVWdlMXh1SUNCd1lXUmthVzVuTFhKcFoyaDBPaUF3TGpWbGJUdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDJocFoyaHNhV2RvZEM1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5aGJtTm9iM0k2YkdsdWF5eGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMmhwWjJoc2FXZG9kQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZkbWx6YVhSbFpDeGNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMmhwWjJoc2FXZG9kQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJekExT0RrME1qdGNiaUFnWm05dWRDMTNaV2xuYUhRNklHSnZiR1E3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOXpkR2xqYTNrc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNCN1hHNGdJR1JwYzNCc1lYazZJR1pzWlhnN1hHNGdJR1pzWlhndGQzSmhjRG9nYm05M2NtRndPMXh1SUNCbWJHVjRMV1JwY21WamRHbHZiam9nWTI5c2RXMXVPMXh1SUNCNkxXbHVaR1Y0T2lCMllYSW9MUzF2ZFhSc2FXNWxMWHBKYm1SbGVDazdYRzRnSUhSdmNEb2dNRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYM04wYVdOcmVTQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZkR2wwYkdVc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNBdWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZmRHbDBiR1VzWEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5emRHbGphM2tnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDIxaGFXNHNYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTltYVhobFpDQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZiV0ZwYmlCN1hHNGdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTl6ZEdsamEza2dMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYM1JwZEd4bExGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZabWw0WldRZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzUnBkR3hsSUh0Y2JpQWdabXhsZUMxemFISnBibXM2SURBN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTl6ZEdsamEza2dMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMjFoYVc0c1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNBdWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZmJXRnBiaUI3WEc0Z0lHWnNaWGc2SURFN1hHNGdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mYzNScFkydDVJSHRjYmlBZ2NHOXphWFJwYjI0NklITjBhV05yZVR0Y2JpQWdiV0Y0TFdobGFXZG9kRG9nZG1GeUtDMHRiM1YwYkdsdVpTMXpkR2xqYTNrdGFHVnBaMmgwS1R0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMlpwZUdWa0lIdGNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh1SUNCdFlYZ3RhR1ZwWjJoME9pQXhNREFsTzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZhR2xrWkdWdUlIdGNiaUFnWkdsemNHeGhlVG9nYm05dVpUdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDJadmJHUmxaQ0I3WEc0Z0lIZHBaSFJvT2lBd08xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5amJHOXpaU0I3WEc0Z0lHUnBjM0JzWVhrNklHNXZibVU3WEc1OVhHNHViM1YwYkdsdVpTMXlaV0ZrWlhKZlgzUnBkR3hsSUh0Y2JpQWdiV0Z5WjJsdU9pQXdMalkzWlcwZ01DQWhhVzF3YjNKMFlXNTBPMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJZ0lXbHRjRzl5ZEdGdWREdGNiaUFnWm05dWRDMW1ZVzFwYkhrNklDZE5hV055YjNOdlpuUWdXV0ZJWldrZ1ZVa25MQ0JCY21saGJDd2djMkZ1Y3kxelpYSnBaanRjYmlBZ1ptOXVkQzEzWldsbmFIUTZJRzV2Y20xaGJEdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExYSmxZV1JsY2w5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hHNTlYRzR1YjNWMGJHbHVaUzF5WldGa1pYSmZhR2xrWkdWdUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDNOcFlteHBibWNnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hHNTlYRzR1YjNWMGJHbHVaUzF5WldGa1pYSmZhR2xrWkdWdUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDNOcFlteHBibWN1ZDNKaGNIQmxjaTV3YjNOMElIdGNiaUFnWkdsemNHeGhlVG9nYm05dVpUdGNibjFjYmk1dmRYUnNhVzVsTFhKbFlXUmxjaTB0Y21WaFpHbHVaeUI3WEc0Z0lHUnBjM0JzWVhrNklHSnNiMk5yTzF4dUlDQndiM05wZEdsdmJqb2dabWw0WldRN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnZDJsa2RHZzZJREV3TUNVN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdiV0Z5WjJsdU9pQXdPMXh1SUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1SUNCd1lXUmthVzVuT2lBelpXMGdOR1Z0TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTzF4dUlDQnpZM0p2Ykd3dGRHbHRaV3hwYm1VdGJtRnRaVG9nTFMxUWNtOW5jbVZ6YzFScGJXVnNhVzVsTzF4dUlDQnZkbVZ5Wm14dmR6b2djMk55YjJ4c08xeHVmVnh1TG05MWRHeHBibVV0Y21WaFpHVnlMUzF5WldGa2FXNW5JQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZjSEp2WjNKbGMzTWdlMXh1SUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnZWkxcGJtUmxlRG9nTXp0Y2JpQWdhR1ZwWjJoME9pQTBjSGc3WEc0Z0lIZHBaSFJvT2lBeE1EQWxPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBak5UQTNZV1psTzF4dUlDQnpZMkZzWlRvZ01DQXhPMXh1SUNCMGNtRnVjMlp2Y20wdGIzSnBaMmx1T2lCc1pXWjBPMXh1SUNCaGJtbHRZWFJwYjI0NklHOTFkR3hwYm1VdGNtVmhaR1Z5TFhCeWIyZHlaWE56SUd4cGJtVmhjanRjYmlBZ1lXNXBiV0YwYVc5dUxYUnBiV1ZzYVc1bE9pQXRMVkJ5YjJkeVpYTnpWR2x0Wld4cGJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxeVpXRmtaWEl0TFhKbFlXUnBibWNnTG05MWRHeHBibVV0Y21WaFpHVnlYMTlqYkc5elpTQjdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0EyY0hnZ01YQjRJQ05rWTJSbVpUWTdYRzRnSUdScGMzQnNZWGs2SUdKc2IyTnJPMXh1SUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3WEc0Z0lIb3RhVzVrWlhnNklETTdYRzRnSUhSdmNEb2dOVEFsTzF4dUlDQnlhV2RvZERvZ01qSndlRHRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0IzYVdSMGFEb2dNelp3ZUR0Y2JpQWdhR1ZwWjJoME9pQXpObkI0TzF4dUlDQmliM0prWlhJdGNtRmthWFZ6T2lBeE9IQjRPMXh1SUNCaWIzSmtaWEk2SURGd2VDQnpiMnhwWkNBalpHTmtabVUyTzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTXpCd2VEdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYRzRnSUdOMWNuTnZjam9nY0c5cGJuUmxjanRjYmlBZ1ltOTRMWE5vWVdSdmR6b2dNQ0F3SURod2VDQWpaR1JrTzF4dUlDQmpiMnh2Y2pvZ0l6azVPVHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1aanRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMWEpsWVdSbGNpMHRjbVZoWkdsdVp5QXViM1YwYkdsdVpTMXlaV0ZrWlhKZlgyTnNiM05sT21odmRtVnlJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JpQWdZMjlzYjNJNklDTm1abVk3WEc1OVhHNHViM1YwYkdsdVpTMXlaV0ZrWlhJdExYSmxZV1JwYm1jZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUdneExGeHVMbTkxZEd4cGJtVXRjbVZoWkdWeUxTMXlaV0ZrYVc1bklDNXZkWFJzYVc1bExYSmxZV1JsY2w5ZmRHbDBiR1VnZTF4dUlDQnRZWEpuYVc0NklEQXVOamRsYlNBd0lDRnBiWEJ2Y25SaGJuUTdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQXhMak5sYlR0Y2JpQWdabTl1ZEMxemFYcGxPaUF6TGpWbGJUdGNibjFjYmtCclpYbG1jbUZ0WlhNZ2IzVjBiR2x1WlMxeVpXRmtaWEl0Y0hKdlozSmxjM01nZTF4dUlDQjBieUI3WEc0Z0lDQWdjMk5oYkdVNklERWdNVHRjYmlBZ2ZWeHVmVnh1UUcxbFpHbGhJQ2h0WVhndGQybGtkR2c2SURRNE1IQjRLU0I3WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2kwdGNtVmhaR2x1WnlCN1hHNGdJQ0FnY0dGa1pHbHVaem9nTUNBeExqSTFaVzA3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYMTlqYkc5elpTQjdYRzRnSUNBZ2NtbG5hSFE2SURFeWNIZ2dJV2x0Y0c5eWRHRnVkRHRjYmlBZ0lDQnZjR0ZqYVhSNU9pQXdMamc3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYMTkwYVhSc1pTQjdYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXlaVzA3WEc0Z0lIMWNibjFjYmtCdFpXUnBZU0J3Y21sdWRDQjdYRzRnSUdoMGJXd3NYRzRnSUdKdlpIa2dlMXh1SUNBZ0lHaGxhV2RvZERvZ2FXNXBkR2xoYkNBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExXMWxjM05oWjJVc1hHNGdJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSWdlMXh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnZTF4dUlDQWdJR1JwYzNCc1lYazZJR0pzYjJOcklDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnYURFc1hHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZkR2wwYkdVZ2UxeHVJQ0FnSUcxaGNtZHBiam9nTVRNdU5IQjBJREFnTWpod2RDQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNpQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNakJ3ZENBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjaTB0Y21WaFpHbHVaeUI3WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lDQWdhR1ZwWjJoME9pQmhkWFJ2SUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnY0dGa1pHbHVaem9nTUNBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzRnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl1YjNWMGJHbHVaUzF5WldGa1pYSWdhREVzWEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjbDlmZEdsMGJHVWdlMXh1SUNBZ0lHMWhjbWRwYmpvZ01UTXVOSEIwSURBZ01qaHdkQ0FoYVcxd2IzSjBZVzUwTzF4dUlDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjaUFoYVcxd2IzSjBZVzUwTzF4dUlDQWdJR1p2Ym5RdGMybDZaVG9nTWpCd2RDQWhhVzF3YjNKMFlXNTBPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpNXZkWFJzYVc1bExYSmxZV1JsY2w5ZlkyeHZjMlVzWEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjbDlmY0hKdlozSmxjM01nZTF4dUlDQWdJR1JwYzNCc1lYazZJRzV2Ym1VZ0lXbHRjRzl5ZEdGdWREdGNiaUFnZlZ4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ2NISmxJSHRjYmlBZ0lDQndZV1JrYVc1bk9pQXhaVzBnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdJQ0JpYjNKa1pYSTZJREZ3ZUNCemIyeHBaQ0FqWkdSa0lDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTkhCNElDRnBiWEJ2Y25SaGJuUTdYRzRnSUgxY2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUlIQnlaU3hjYmlBZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUdOdlpHVWdlMXh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVlnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnZEdGaWJHVXNYRzRnSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUJwYldjc1hHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpQnpkbWNnZTF4dUlDQWdJR0p5WldGckxXbHVjMmxrWlRvZ1lYWnZhV1E3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYM05wWW14cGJtY2dlMXh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1ZlZ4dUx5b2dQVDA5UFQwOVBUMDlQU0JpZFhSMGIyNXpMblJvWlcxbElDMGc1b3lKNlpLdTVhKzg2SWlxNXFDMzVieVBJRDA5UFQwOVBUMDlQVDBnS2k5Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhJZ2UxeHVJQ0J3YjNOcGRHbHZiam9nWm1sNFpXUTdYRzRnSUhvdGFXNWtaWGc2SURrNU9UazVPMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJSFJ5WVc1emFYUnBiMjR0WkhWeVlYUnBiMjQ2SURBdU0zTTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0Z2UxeHVJQ0JpYjNndGMyaGhaRzkzT2lBd0lEQWdObkI0SURGd2VDQWpaR05rWm1VMk8xeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklERTdYRzRnSUcxaGNtZHBiam9nTVRCd2VEdGNiaUFnZDJsa2RHZzZJRE0yY0hnN1hHNGdJR2hsYVdkb2REb2dNelp3ZUR0Y2JpQWdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJMlJqWkdabE5qdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNM0I0TzF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTzF4dUlDQmpkWEp6YjNJNklIQnZhVzUwWlhJN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0NmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JpQWdZbTl5WkdWeUxXTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxtaHBaR1VnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZVzVqYUc5eU9teHBibXNzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2ZG1semFYUmxaQ3hjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqT1RrNU8xeHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJekExT0RrME1qdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJsamIyNGdlMXh1SUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTlRBbE8xeHVJQ0JzWldaME9pQTFNQ1U3WEc0Z0lIZHBaSFJvT2lBeU1IQjRPMXh1SUNCb1pXbG5hSFE2SURJd2NIZzdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbEtDMDFNQ1VzSUMwMU1DVXBPMXh1SUNCbWFXeHNPaUJqZFhKeVpXNTBZMjlzYjNJN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJGamRHbDJaUzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYRzRnSUdOdmJHOXlPaUFqWm1abU8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqTURVNE9UUXlPMXh1SUNCaWIzSmtaWEl0WTI5c2IzSTZJQ013TlRnNU5ESTdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJGamRHbDJaUzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJqcG9iM1psY2lCN1hHNGdJR052Ykc5eU9pQWpabVptTzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWhZM1JwZG1VZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T214cGJtc3NYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkZqZEdsMlpTQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmRtbHphWFJsWkN4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZllXTjBhWFpsSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqWm1abU8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDl5YjNWdVpHVmtMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNVGh3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmJHbHVheXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T25acGMybDBaV1FzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanAyYVhOcGRHVmtMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcG9iM1psY2l4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlpHbHpZV0pzWldRZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNiaUFnWTNWeWMyOXlPaUJ1YjNRdFlXeHNiM2RsWkR0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXprNU9UdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZiR2x1YXpwb2IzWmxjaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbXhwYm1zNmFHOTJaWElzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPblpwYzJsMFpXUTZhRzkyWlhJc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgyRnVZMmh2Y2pwMmFYTnBkR1ZrT21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcG9iM1psY2pwb2IzWmxjaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbWh2ZG1WeU9taHZkbVZ5TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJKMWRIUnZianBvYjNabGNpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXprNU9UdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNHNYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMlJwYzJGaWJHVmtJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObU5XWTFaalU3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzUjBZaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWW5SMElIdGNiaUFnYkdWbWREb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNSMFlpQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0c1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgySjBkQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNGdlMXh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNSMFlpQjdYRzRnSUhSdmNEb2dNVEp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZkSFJpTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh1SUNCMGIzQTZJQzAxTm5CNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlpZEhRZ2UxeHVJQ0JpYjNSMGIyMDZJREV5Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkowZEM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjYmlBZ1ltOTBkRzl0T2lBdE5UWndlRHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmNuUnNMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlzZEhJZ2UxeHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb0xUVXdKU2s3WEc0Z0lIZHBaSFJvT2lBMU5uQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5eWRHd2dlMXh1SUNCMGIzQTZJRFV3SlR0Y2JpQWdjbWxuYUhRNklERXljSGc3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzSjBiQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZhR2xrWkdWdUlIdGNiaUFnY21sbmFIUTZJQzA0Tm5CNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlzZEhJZ2UxeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2JHVm1kRG9nTVRKd2VEdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYkhSeUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4dUlDQnNaV1owT2lBdE9EWndlRHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmRIUmlJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5eWRHd2dMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJKMGRDQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJocFpHUmxiaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYkhSeUlDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2Ymk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpOHFLbHh1SUNvZ1ptOXVkQzVzWlhOeklDMGc1YTJYNUwyVDU1dTQ1WVd6NXFDMzVieVBYRzRnS2lBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0Z0tpQkRjbVZoZEdWa0lFSjVPaUJaWVc5b1lXbDRhV0Z2WEc0Z0tpQlZjR1JoZEdVNklESXdNakl1TXk0eE5seHVJQ292WEc0dktpQTlQVDA5UFQwZzVhMlg1TDJUSUQwOVBUMDlQU0FxTDF4dUx5b2dQVDA5UFQwOUlPV3RsK21IalNBOVBUMDlQVDBnS2k5Y2JpOHFJRDA5UFQwOVBTRGxyWmZsajdjZ1BUMDlQVDA5SUNvdlhHNHViM1YwYkdsdVpTMXRaWE56WVdkbElIdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNM0I0TzF4dUlDQmliM2d0YzJoaFpHOTNPaUF3SURBZ05uQjRJREZ3ZUNBalpHTmtabVUyTzF4dUlDQndiM05wZEdsdmJqb2dabWw0WldRN1hHNGdJSG90YVc1a1pYZzZJRGs1T1RrN1hHNGdJRzl3WVdOcGRIazZJREF1TVR0Y2JpQWdkRzl3T2lBdE5UQndlRHRjYmlBZ2JHVm1kRG9nTlRBbE8xeHVJQ0JvWldsbmFIUTZJRFF3Y0hnN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQTFNSEI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTkRCd2VEdGNiaUFnWm05dWRDMXphWHBsT2lBeE0zQjRPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalptWm1PMXh1SUNCamIyeHZjam9nSXpZMk5qdGNiaUFnZEhKaGJuTnBkR2x2YmpvZ1lXeHNJREF1TlhNZ1pXRnpaUzFwYmkxdmRYUTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdDZ3ROVEFsS1R0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJOdmJuUmxiblFnZTF4dUlDQjNhR2wwWlMxemNHRmpaVG9nYm05M2NtRndPMXh1SUNCMFpYaDBMVzkyWlhKbWJHOTNPaUJsYkd4cGNITnBjenRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0J0WVhndGQybGtkR2c2SURjd01IQjRPMXh1SUNCb1pXbG5hSFE2SURRd2NIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hHNGdJR052Ykc5eU9pQWpOalkyTzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVXNYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJREE3WEc0Z0lIZHBaSFJvT2lBME1IQjRPMXh1SUNCb1pXbG5hSFE2SURRd2NIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnWTI5c2IzSTZJQ05tWm1ZN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlDNXZkWFJzYVc1bExXbGpiMjRnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVWdlMXh1SUNCeWFXZG9kRG9nTUR0Y2JpQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMk5zYjNObElDNXZkWFJzYVc1bExXbGpiMjRnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJelkyTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZhVzVtYnlBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0l6VXdOMkZtWlR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZkMkZ5Ym1sdVp5QXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptT1Rrd01UdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmYzNWalkyVnpjeUF1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpBMU9EazBNanRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZlpYSnliM0lnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVpqVmtOV1E3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzQnNZV2x1SUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF4T1RCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBMU1IQjRJREFnTVRWd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNHViM1YwYkdsdVpTMXRaWE56WVdkbFgybHVabThnZTF4dUlDQmliM0prWlhJdGJHVm1kRG9nTlhCNElITnZiR2xrSUNNMU1EZGhabVU3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTmxZMlk0Wm1ZN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM0JzWVdsdUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5M1lYSnVhVzVuSUh0Y2JpQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNBalptWTVPVEF4TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptWW1VMk8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpNXZkWFJzYVc1bExXMWxjM05oWjJWZmMzVmpZMlZ6Y3lCN1hHNGdJR0p2Y21SbGNpMXNaV1owT2lBMWNIZ2djMjlzYVdRZ0l6QTFPRGswTWp0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlV4WmpabFlqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyVnljbTl5SUh0Y2JpQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNBalptWTFaRFZrTzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTVdZd08xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdkMmxrZEdnNklEQTdYRzRnSUdScGMzQnNZWGs2SUc1dmJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z0xtOTFkR3hwYm1VdGFXTnZiaUI3WEc0Z0lHUnBjM0JzWVhrNklHNXZibVU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyeHBaMmgwSUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF4T0RCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBME1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5c2FXZG9kQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZhVzVtYnlBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjYmlBZ1kyOXNiM0k2SUNNMU1EZGhabVU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyeHBaMmgwTG05MWRHeHBibVV0YldWemMyRm5aVjkzWVhKdWFXNW5JQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JqYjJ4dmNqb2dJMlptT1Rrd01UdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmYkdsbmFIUXViM1YwYkdsdVpTMXRaWE56WVdkbFgzTjFZMk5sYzNNZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXNhV2RvZEM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWlhKeWIzSWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hHNGdJR052Ykc5eU9pQWpabVkxWkRWa08xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlzYVdkb2RDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RZ2UxeHVJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQXlNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXliM1Z1WkM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWkdWbVlYVnNkQ0I3WEc0Z0lHMXBiaTEzYVdSMGFEb2dNVGd3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTkRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY205MWJtUXViM1YwYkdsdVpTMXRaWE56WVdkbFgyUmxabUYxYkhRZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHSnZjbVJsY2kxeVlXUnBkWE02SURFd2NIZzdYRzRnSUhSdmNEb2dNVEJ3ZUR0Y2JpQWdiR1ZtZERvZ01UQndlRHRjYmlBZ2QybGtkR2c2SURJd2NIZzdYRzRnSUdobGFXZG9kRG9nTWpCd2VEdGNiaUFnYkdsdVpTMW9aV2xuYUhRNklESXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzSnZkVzVrTG05MWRHeHBibVV0YldWemMyRm5aVjlrWldaaGRXeDBMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9JSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXlNREJ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F5TUhCNElEQWdOREJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVJSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXhPVFZ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0EwTUhCNElEQWdNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9JSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXlNVFZ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F5TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjltZFd4c0xYZHBaSFJvSUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF5TURCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBeE1IQjRJREFnTlRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWm5Wc2JDMTNhV1IwYUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNGdlMXh1SUNCdGFXNHRkMmxrZEdnNklESXpNSEI0TzF4dUlDQndZV1JrYVc1bk9pQXdJREV3Y0hnZ01DQXhOWEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9MbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXNhV2RvZENCN1hHNGdJRzFwYmkxM2FXUjBhRG9nTWpFd2NIZzdYRzRnSUhCaFpHUnBibWM2SURBZ01UQndlQ0F3SURRd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNacGMybGliR1VnZTF4dUlDQnZjR0ZqYVhSNU9pQXhPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMeW9nUFQwOVBUMGdVMk55YjJ4c1ltRnlJRDA5UFQwOUlDb3ZYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5SUh0Y2JpQWdkMmxrZEdnNklEZHdlRHRjYmlBZ2FHVnBaMmgwT2lBM2NIZzdYRzRnSUMxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0TzF4dWZWeHVPam90ZDJWaWEybDBMWE5qY205c2JHSmhjaTEwY21GamF5MXdhV1ZqWlNCN1hHNGdJQzEzWldKcmFYUXRZbTl5WkdWeUxYSmhaR2wxY3pvZ05YQjRPMXh1ZlZ4dU9qb3RkMlZpYTJsMExYTmpjbTlzYkdKaGNpMTBhSFZ0WWpwMlpYSjBhV05oYkNCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHVmVnh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2kxMGFIVnRZanBvYjNKcGVtOXVkR0ZzSUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqSTFLVHRjYmlBZ0xYZGxZbXRwZEMxaWIzSmtaWEl0Y21Ga2FYVnpPaUExY0hnN1hHNTlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPbWh2ZG1WeUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMak0xS1R0Y2JuMWNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWEk2YUc5MlpYSWdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TVRVcE8xeHVmVnh1SWl3aUx5b2dQVDA5UFQwZ1UyTnliMnhzWW1GeUlEMDlQVDA5SUNvdlhISmNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWElnZTF4eVhHNGdJSGRwWkhSb09pQTNjSGc3WEhKY2JpQWdhR1ZwWjJoME9pQTNjSGc3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYm4xY2NseHVYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRISmhZMnN0Y0dsbFkyVWdlMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzU5WEhKY2JseHlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPblpsY25ScFkyRnNJSHRjY2x4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQnlaMkpoS0RBc0lEQXNJREFzSURBdU1qVXBPMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzU5WEhKY2JseHlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPbWh2Y21sNmIyNTBZV3dnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEhKY2JpQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYm4xY2NseHVYSEpjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJNmFHOTJaWElnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHhOU2s3WEhKY2JuMWNjbHh1WEhKY2JqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkR2gxYldJNmFHOTJaWElnZTF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHpOU2s3WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVYSEpjYmk1elpXTjBhVzl1SUh0Y2NseHVJQ0J0WVhKbmFXNDZJREZsYlNBd08xeHlYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNaZlgyaGxZV1JsY2l4Y2NseHVJQ0FtWDE5amIyNTBaVzUwTEZ4eVhHNGdJQ1pmWDJadmIzUmxjaUI3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3SURObGJUdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOTBhWFJzWlNCN1hISmNiaUFnSUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5b015QjdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlkyOXNiM0k3WEhKY2JpQWdJQ0JtYjI1MExYTnBlbVU2SURFdU16VmxiVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJnMElIdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNUzR4WlcwN1hISmNiaUFnSUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5b05TQjdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREZsYlR0Y2NseHVJQ0FnSUdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5a2JDeGNjbHh1SUNBbVgxOWtkQ3hjY2x4dUlDQW1YMTlrWkNCN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyUnNJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREU3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5a2RDQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5a1pDQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXdjbVVnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF5WlcwZ01EdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklERmxiVHRjY2x4dUlDQWdJR1p2Ym5RdGMybDZaVG9nTVRSd2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF4TlRBbE8xeHlYRzRnSUNBZ2RHVjRkQzFoYkdsbmJqb2diR1ZtZER0Y2NseHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCaVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjam9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBMGNIZzdYSEpjYmlBZ0lDQmpiMnh2Y2pvZ1FIUm9hWEprWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJOdlpHVWdlMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBZ1lYVjBienRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTltYjI5MFpYSWdlMXh5WEc0Z0lDQWdZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQnRZWEpuYVc0dGRHOXdPaUF6WlcwN1hISmNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQVltZGZZMjlzYjNJN1hISmNiaUFnSUNCamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmRHRmliR1VnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF4WlcwZ1lYVjBienRjY2x4dUlDQWdJSGRwWkhSb09pQXhNREFsTzF4eVhHNGdJQ0FnWW05eVpHVnlMWFJ2Y0RvZ01YQjRJSE52Ykdsa0lFQmliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFDeGNjbHh1SUNBbVgxOTBaQ0I3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUExY0hnZ01UWndlRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBeU5uQjRPMXh5WEc0Z0lDQWdZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lFQmliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5MGFDQjdYSEpjYmlBZ0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYSEpjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFZbWRmWTI5c2IzSTdYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JseHlYRzVBYldWa2FXRWdLRzFoZUMxM2FXUjBhRG9nTkRnd2NIZ3BJSHRjY2x4dUlDQXVjMlZqZEdsdmJpQjdYSEpjYmlBZ0lDQW1YMTlvWldGa1pYSXNYSEpjYmlBZ0lDQW1YMTlqYjI1MFpXNTBJSHRjY2x4dUlDQWdJQ0FnY0dGa1pHbHVaem9nTUNBeFpXMDdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJa0JwYlhCdmNuUWdKeTR2WTI5c2IzSnpKenRjY2x4dVhISmNiaTVqWVhObElIdGNjbHh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hISmNiaUFnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0JrYVhOd2JHRjVPaUJuY21sa08xeHlYRzRnSUdkeWFXUXRkR1Z0Y0d4aGRHVXRZMjlzZFcxdWN6b2djbVZ3WldGMEtESXNJREZtY2lrN1hISmNiaUFnWjJGd09pQTBNSEI0TzF4eVhHNGdJSEJoWkdScGJtYzZJREZsYlR0Y2NseHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQmliM0prWlhJdFltOTBkRzl0T2lBeGNIZ2djMjlzYVdRZ1FHSnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQW1PbUZtZEdWeUlIdGNjbHh1SUNBZ0lHTnZiblJsYm5RNklDY25PMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPMXh5WEc0Z0lDQWdlaTFwYm1SbGVEb2dNanRjY2x4dUlDQWdJSFJ2Y0RvZ01EdGNjbHh1SUNBZ0lHeGxablE2SURVd0pUdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ01UQXdKVHRjY2x4dUlDQWdJSGRwWkhSb09pQXdPMXh5WEc0Z0lDQWdZbTl5WkdWeUxXeGxablE2SURGd2VDQnpiMnhwWkNCQVltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM0J5WlN4Y2NseHVJQ0FtWDE5MFpYaDBZWEpsWVNCN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEhKY2JpQWdJQ0JzYVc1bExXaGxhV2RvZERvZ01UVXdKVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNCeVpTeGNjbHh1SUNBbVgxOWpiMlJsTEZ4eVhHNGdJQ1pmWDNSbGVIUmhjbVZoSUh0Y2NseHVJQ0FnSUdadmJuUXRabUZ0YVd4NU9pQW5RMjkxY21sbGNpQk9aWGNuTENCRGIyNXpiMnhoY3l3Z1IyVnZjbWRwWVN3Z1FYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXdjbVVnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTVdWdE8xeHlYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FHSm5YMk52Ykc5eU8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lDQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ05IQjRPMXh5WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmZEc5dmJHSmhjaUI3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNjbHh1SUNBZ0lHaGxhV2RvZERvZ016WndlRHRjY2x4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lBek5uQjRPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4TkhCNE8xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01DQXhObkI0TzF4eVhHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ2NtbG5hSFE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmWVdOMGFXOXVMRnh5WEc0Z0lDWmZYM0psYlc5MlpTQjdYSEpjYmlBZ0lDQmpkWEp6YjNJNklIQnZhVzUwWlhJN1hISmNiaUFnSUNCamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQjFjMlZ5TFhObGJHVmpkRG9nYm05dVpUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMkZqZEdsdmJpQjdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hISmNiaUFnSUNCd1lXUmthVzVuTFd4bFpuUTZJREV3Y0hnN1hISmNibHh5WEc0Z0lDQWdKanBtYVhKemRDMWphR2xzWkNCN1hISmNiaUFnSUNBZ0lIQmhaR1JwYm1jdGJHVm1kRG9nTUR0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgzSmxiVzkyWlNCN1hISmNiaUFnSUNCbWJHOWhkRG9nY21sbmFIUTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlqYjI1emIyeGxJSHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeE9EQndlRHRjY2x4dUlDQWdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJRUJpYjNKa1pYSmZZMjlzYjNJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmRHVjRkR0Z5WldFZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTVRBd0pUdGNjbHh1SUNBZ0lHSnZjbVJsY2pvZ2JtOXVaVHRjY2x4dUlDQWdJRzkxZEd4cGJtVTZJRzV2Ym1VN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBeFpXMDdYSEpjYmlBZ0lDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlzYVhOMExGeHlYRzRnSUNaZlgybDBaVzBnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUR0Y2NseHVJQ0FnSUd4cGMzUXRjM1I1YkdVdGRIbHdaVG9nYm05dVpUdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXNhWE4wSUh0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTXpZd2NIZzdYSEpjYmlBZ0lDQmliM0prWlhJdGRHOXdPaUF4Y0hnZ2MyOXNhV1FnUUdKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNBZ0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNCQVltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHRjFkRzg3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5cGRHVnRJSHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNelp3ZUR0Y2NseHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQXpObkI0TzF4eVhHNGdJQ0FnWTNWeWMyOXlPaUJ3YjJsdWRHVnlPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F4Tm5CNE8xeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBYUc5MlpYSmZZbWRmWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJa0JwYlhCdmNuUWdKeTR1THk0dUwzUm9aVzFsTDIxcGVHbHVjeWM3WEhKY2JseHlYRzR1Y0dGd1pYSWdlMXh5WEc0Z0lDNXphR0ZrYjNkZmJHbG5hSFJmY21WbmRXeGhjaWdwTzF4eVhHNGdJRzFoY21kcGJqb2dNMlZ0SUdGMWRHODdYSEpjYmlBZ2JXRjRMWGRwWkhSb09pQXhNakF3Y0hnN1hISmNiaUFnY0dGa1pHbHVaem9nTW1WdE8xeHlYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4eVhHNWNjbHh1SUNBbUxtWnNaWGdnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nWm14bGVEdGNjbHh1SUNBZ0lHWnNaWGd0WkdseVpXTjBhVzl1T2lCeWIzYzdYSEpjYmlBZ0lDQm1iR1Y0TFhkeVlYQTZJRzV2ZDNKaGNEdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc0Z0lDQWdiV0Y0TFhkcFpIUm9PaUF4TURBbE8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ0FnTG1GeWRHbGpiR1VnZTF4eVhHNGdJQ0FnSUNCbWJHVjRMV1JwY21WamRHbHZiam9nWTI5c2RXMXVPMXh5WEc0Z0lDQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0FnSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjY2x4dVhISmNiaUFnSUNBZ0lDWmZYMjFoYVc0Z2UxeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0FnSUNBZ0lDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4eVhHNGdJQ0FnSUNBZ0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDE5aGMybGtaU0I3WEhKY2JpQWdJQ0FnSUNBZ1ltOXlaR1Z5TFhKcFoyaDBPaUF4Y0hnZ2MyOXNhV1FnUUhCeWFXMWhjbmxmWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JseHlYRzR1YUdWaFpHVnlJSHRjY2x4dUlDQndiM05wZEdsdmJqb2djM1JwWTJ0NU8xeHlYRzRnSUhvdGFXNWtaWGc2SURNN1hISmNiaUFnZEc5d09pQXdPMXh5WEc0Z0lHMWhjbWRwYmpvZ01DQmhkWFJ2TzF4eVhHNGdJR0p2Y21SbGNpMWliM1IwYjIwNklERndlQ0J6YjJ4cFpDQkFZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNHpjenRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQW1YM04wYVdOcmVTQjdYSEpjYmlBZ0lDQndZV1JrYVc1bkxXeGxablE2SURJMk1IQjRPMXh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNWNjbHh1TG1GeWRHbGpiR1VnZTF4eVhHNGdJR1JwYzNCc1lYazZJR1pzWlhnN1hISmNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJSEp2ZHp0Y2NseHVJQ0JtYkdWNExYZHlZWEE2SUc1dmQzSmhjRHRjY2x4dUlDQndZV1JrYVc1bk9pQXlaVzBnTUR0Y2NseHVJQ0JtYjI1MExYTnBlbVU2SURFMmNIZzdYSEpjYmlBZ2JHbHVaUzFvWldsbmFIUTZJREUxTUNVN1hISmNibHh5WEc0Z0lDWmZYMjFoYVc0Z2UxeHlYRzRnSUNBZ1pteGxlRG9nTVR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBZ01tVnRPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdJQ0F1YzJWamRHbHZiaUI3WEhKY2JpQWdJQ0FnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4eVhHNWNjbHh1SUNBZ0lDQWdKbDlmWTI5dWRHVnVkQ3hjY2x4dUlDQWdJQ0FnSmw5ZlptOXZkR1Z5TEZ4eVhHNGdJQ0FnSUNBbVgxOW9aV0ZrWlhJZ2UxeHlYRzRnSUNBZ0lDQWdJRzkyWlhKbWJHOTNPaUIyYVhOcFlteGxPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMTlvWldGa1pYSXNYSEpjYmlBZ0lDQWdJQ1pmWDJOdmJuUmxiblFnZTF4eVhHNGdJQ0FnSUNBZ0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmWVhOcFpHVWdlMXh5WEc0Z0lDQWdabXhsZUMxemFISnBibXM2SURBN1hISmNiaUFnSUNCM2FXUjBhRG9nTWpRd2NIZzdYSEpjYmlBZ0lDQmliM0prWlhJdGJHVm1kRG9nTVhCNElITnZiR2xrSUVCaWIzSmtaWEpmWTI5c2IzSTdYSEpjYmx4eVhHNGdJQ0FnSmk1c2RISWdlMXh5WEc0Z0lDQWdJQ0JpYjNKa1pYSXRjbWxuYUhRNklERndlQ0J6YjJ4cFpDQkFZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCaWIzSmtaWEl0YkdWbWREb2dibTl1WlR0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMWphR0Z3ZEdWeWN5QjdYSEpjYmlBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibjFjY2x4dVhISmNibkJ5WlN4Y2NseHVMbk5sWTNScGIyNWZYM0J5WlNCN1hISmNiaUFnY0dGa1pHbHVaem9nTW1WdE8xeHlYRzRnSUdadmJuUXRabUZ0YVd4NU9pQW5RMjkxY21sbGNpQk9aWGNuTENCQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmp0Y2NseHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBWW1kZlkyOXNiM0k3WEhKY2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hISmNibjFjY2x4dVhISmNibU52WkdVc1hISmNiaTV6WldOMGFXOXVYMTlqYjJSbElIdGNjbHh1SUNCbWIyNTBMV1poYldsc2VUb2dKME52ZFhKcFpYSWdUbVYzSnl3Z1FYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZN1hISmNiaUFnWm05dWRDMXphWHBsT2lBeE5uQjRPMXh5WEc1OVhISmNibHh5WEc0dVptOXZkR1Z5SUh0Y2NseHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lIQmhaR1JwYm1jNklETmxiU0F3TzF4eVhHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjY2x4dVhISmNiaUFnWVNCN1hISmNiaUFnSUNBbU9teHBibXNzWEhKY2JpQWdJQ0FtT25acGMybDBaV1FzWEhKY2JpQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnZEdWNGRDMWtaV052Y21GMGFXOXVPaUJ1YjI1bE8xeHlYRzRnSUNBZ0lDQmpiMnh2Y2pvZ1FITjFZMk5sYzNOZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2RXNWtaWEpzYVc1bE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVmVnh5WEc1Y2NseHVMblYwYVd4ekxXSnZjbVJsY2kxeWFXZG9kQ0I3WEhKY2JpQWdZbTl5WkdWeUxYSnBaMmgwT2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc1OVhISmNibHh5WEc0dWFHbGtaR1Z1SUh0Y2NseHVJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzU5WEhKY2JseHlYRzVBYldWa2FXRWdLRzFoZUMxM2FXUjBhRG9nTkRnd2NIZ3BJSHRjY2x4dUlDQm9kRzFzTEZ4eVhHNGdJR0p2WkhrZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0xuQmhjR1Z5SUh0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTUR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBdVlYSjBhV05zWlY5ZmJXRnBiaUI3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3SURKbGJUdGNjbHh1SUNCOVhISmNibjFjY2x4dUlpd2lMeW9xWEhKY2JpQXFJSE5vWVdSdmR5NXNaWE56SUMwZzZaaTA1YjJ4NXFDMzVieVA2SzYrNTcydUlHMXBlR2x1ZUNEbGg3M21sYkJjY2x4dUlDb2dQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYSEpjYmlBcUlGVndaR0YwWlRvZ01qQXlNaTR6TGpJd1hISmNiaUFxTDF4eVhHNUFhVzF3YjNKMElDZGpiMnh2Y25Nbk8xeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPbVl0T1c5c2VhZ3QrVzhqK2l1dnVlOXJ1V0h2ZWFWc0NBOVBUMDlQVDBnS2k5Y2NseHVMbk5vWVdSdmR5aEFiMlptYzJWME9pQXdJREFnTm5CNElERndlQ3dnUUdOdmJHOXlPaUJBY0hKcGJXRnllVjlpYjNKa1pYSmZZMjlzYjNJcElIdGNjbHh1SUNCaWIzZ3RjMmhoWkc5M09pQkFiMlptYzJWMElFQmpiMnh2Y2p0Y2NseHVmVnh5WEc1Y2NseHVMbk5vWVdSdmQxOXlaV2QxYkdGeUtFQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlLU0I3WEhKY2JpQWdMbk5vWVdSdmR5Z3dJREFnTm5CNElERndlQ3dnUUdOdmJHOXlLVHRjY2x4dWZWeHlYRzVjY2x4dUxuTm9ZV1J2ZDE5c1lYSm5aU2hBWTI5c2IzSTZJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2lrZ2UxeHlYRzRnSUM1emFHRmtiM2NvTUNBd0lERXljSGdnTVhCNExDQkFZMjlzYjNJcE8xeHlYRzU5WEhKY2JseHlYRzR1YzJoaFpHOTNYMnhwWjJoMFgzSmxaM1ZzWVhJb0tTQjdYSEpjYmlBZ0xuTm9ZV1J2ZDE5eVpXZDFiR0Z5S0NrN1hISmNibjFjY2x4dVhISmNiaTV6YUdGa2IzZGZiR2xuYUhSZmJHRnlaMlVvS1NCN1hISmNiaUFnTG5Ob1lXUnZkMTlzWVhKblpTZ3BPMXh5WEc1OVhISmNibHh5WEc0dWMyaGhaRzkzWDJSaGNtdGZjbVZuZFd4aGNpZ3BJSHRjY2x4dUlDQXVjMmhoWkc5M1gzSmxaM1ZzWVhJb1FITmxZMjl1WkdGeWVWOWliM0prWlhKZlkyOXNiM0lwTzF4eVhHNTlYSEpjYmx4eVhHNHVjMmhoWkc5M1gyUmhjbXRmYkdGeVoyVW9LU0I3WEhKY2JpQWdMbk5vWVdSdmQxOXNZWEpuWlNoQWMyVmpiMjVrWVhKNVgySnZjbVJsY2w5amIyeHZjaWs3WEhKY2JuMWNjbHh1SWl3aU9uSnZiM1FnZTF4eVhHNGdJQzB0YjNWMGJHbHVaUzE2U1c1a1pYZzZJREl3TURBN1hISmNiaUFnTFMxdmRYUnNhVzVsTFhOMGFXTnJlUzFvWldsbmFIUTZJREV3TUNVN1hISmNiaUFnTFMxdmRYUnNhVzVsTFdOb1lYQjBaWEp6TFhkcFpIUm9PaUF4TURBbE8xeHlYRzU5WEhKY2JpSXNJaThxSUQwOVBUMDlQVDA5UFQwZ2FXTnZiaTUwYUdWdFpTQXRJSE4yWnlEbG03N21vSWZubW9UbW9MZmx2SThnUFQwOVBUMDlQVDA5UFNBcUwxeHlYRzR1YjNWMGJHbHVaUzFwWTI5dUlIdGNjbHh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hISmNiaUFnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0JrYVhOd2JHRjVPaUJwYm14cGJtVXRZbXh2WTJzN1hISmNiaUFnZG1WeWRHbGpZV3d0WVd4cFoyNDZJRzFwWkdSc1pUdGNjbHh1SUNCM2FXUjBhRG9nTVdWdE8xeHlYRzRnSUdobGFXZG9kRG9nTVdWdE8xeHlYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNaZlgzTjJaeUI3WEhKY2JpQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0I2TFdsdVpHVjRPaUF5TzF4eVhHNGdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0JzWldaME9pQTFNQ1U3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNV1Z0TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4WlcwN1hISmNiaUFnSUNCbWFXeHNPaUJqZFhKeVpXNTBZMjlzYjNJN1hISmNiaUFnSUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpTZ3ROVEFsTENBdE5UQWxLVHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dWZWeHlYRzRpTENKQWFXMXdiM0owSUNkamIyeHZjbk1uTzF4eVhHNWNjbHh1TG05MWRHeHBibVV0YUdWaFpHbHVaeUI3WEhKY2JpQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh5WEc0Z0lIb3RhVzVrWlhnNklERTdYSEpjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVYSEpjYmlBZ0psOWZZVzVqYUc5eUlIdGNjbHh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVU3WEhKY2JseHlYRzRnSUNBZ0pqcHNhVzVyTEZ4eVhHNGdJQ0FnSmpwMmFYTnBkR1ZrTEZ4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpUdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnWTI5c2IzSTZJRUJ3Y21sdFlYSjVYMk52Ykc5eU8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBdWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0lnZTF4eVhHNGdJQ0FnSUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM04wWVhKMElIdGNjbHh1SUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQnZkbVZ5Wm14dmR6b2dkbWx6YVdKc1pUdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzFvWldGa2FXNW5YMTloYm1Ob2IzSWdlMXh5WEc0Z0lDQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0FnSUhvdGFXNWtaWGc2SURJN1hISmNiaUFnSUNBZ0lIUnZjRG9nTlRBbE8xeHlYRzRnSUNBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYSEpjYmlBZ0lDQWdJR3hsWm5RNklDMHhaVzA3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1OVhISmNiaUlzSWtCcGJYQnZjblFnSjNaaGNtbGhZbXhsY3ljN1hISmNia0JwYlhCdmNuUWdKMk52Ykc5eWN5YzdYSEpjYmtCcGJYQnZjblFnSjNOb1lXUnZkeWM3WEhKY2JseHlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSWdlMXh5WEc0Z0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUdGNjbHh1SUNCNkxXbHVaR1Y0T2lBdE1UdGNjbHh1SUNCMGIzQTZJREE3WEhKY2JpQWdiR1ZtZERvZ01EdGNjbHh1SUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnZDJsa2RHZzZJREV3TUNVN1hISmNiaUFnYUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdYSEpjYmlBZ2RtbHphV0pwYkdsMGVUb2dhR2xrWkdWdU8xeHlYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNaZlgyMXZaR0ZzSUh0Y2NseHVJQ0FnSUM1emFHRmtiM2RmYkdsbmFIUmZjbVZuZFd4aGNpZ3BPMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dabXhsZUR0Y2NseHVJQ0FnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYSEpjYmlBZ0lDQm1iR1Y0TFhkeVlYQTZJRzV2ZDNKaGNEdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNjbHh1SUNBZ0lIb3RhVzVrWlhnNklESXhPMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQXhNREFsTzF4eVhHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhkb2FYUmxPMXh5WEc0Z0lDQWdkSEpoYm5OcGRHbHZiaTFrZFhKaGRHbHZiam9nTUM0MGN6dGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOW9aV0ZrWlhJc1hISmNiaUFnSmw5ZmJXRnBiaXhjY2x4dUlDQW1YMTltYjI5MFpYSWdlMXh5WEc0Z0lDQWdkMmxrZEdnNklERXdNQ1U3WEhKY2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZhR1ZoWkdWeUxGeHlYRzRnSUNaZlgyWnZiM1JsY2lCN1hISmNiaUFnSUNCbWJHVjRMWE5vY21sdWF6b2dNRHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNScGRHeGxMRnh5WEc0Z0lDWmZYMjFoYVc0c1hISmNiaUFnSmw5ZlptOXZkR1Z5SUh0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBZ01UWndlRHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJobFlXUmxjaXhjY2x4dUlDQW1YMTkwYVhSc1pTQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hISmNiaUFnSUNCb1pXbG5hSFE2SURVeWNIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTlRKd2VEdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOTBhWFJzWlNCN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERTJjSGc3WEhKY2JpQWdJQ0JtYjI1MExYZGxhV2RvZERvZ05EQXdPMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdJREUyY0hnN1hISmNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh5WEc0Z0lDQWdZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjanRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJOc2IzTmxJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREk3WEhKY2JpQWdJQ0IwYjNBNklEVXdKVHRjY2x4dUlDQWdJSEpwWjJoME9pQXhNbkI0TzF4eVhHNGdJQ0FnZDJsa2RHZzZJREl3Y0hnN1hISmNiaUFnSUNCb1pXbG5hSFE2SURJd2NIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTWpCd2VEdGNjbHh1SUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklESXdjSGc3WEhKY2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEhKY2JpQWdJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYSEpjYmlBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMV2xqYjI0Z2UxeHlYRzRnSUNBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYSEpjYmlBZ0lDQWdJSG90YVc1a1pYZzZJREk3WEhKY2JpQWdJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJQ0FnYkdWbWREb2dNRHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCMGFHbHlaRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmJXRnBiaUI3WEhKY2JpQWdJQ0JtYkdWNE9pQXhPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR0YxZEc4N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOW1iMjkwWlhJZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3WEhKY2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCeWFXZG9kRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTl2ZG1WeWJHRjVJSHRjY2x4dUlDQWdJR052Ym5SbGJuUTZJQ2NuTzF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJR3hsWm5RNklEQTdYSEpjYmlBZ0lDQjNhV1IwYURvZ01UQXdKVHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJRzl3WVdOcGRIazZJREF1TVR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKMGJDeGNjbHh1SUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5MGFXNTVJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nTWpnd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV2x1YVNCN1hISmNiaUFnSUNBZ0lDQWdkMmxrZEdnNklEUTRNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNOdFlXeHNJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nTlRRd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZjbVZuZFd4aGNpQjdYSEpjYmlBZ0lDQWdJQ0FnZDJsa2RHZzZJRFk0TUhCNE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMWxaR2wxYlNCN1hISmNiaUFnSUNBZ0lDQWdkMmxrZEdnNklEY3lNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDJ4aGNtZGxJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nT1RZd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmY25Sc0lIdGNjbHh1SUNBZ0lHSnZjbVJsY2kxc1pXWjBPaUF4Y0hnZ2MyOXNhV1FnUUhCeWFXMWhjbmxmWW05eVpHVnlYMk52Ykc5eU8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSWdlMXh5WEc0Z0lDQWdJQ0FtWDNScGJua2dlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lISnBaMmgwT2lBdE1qa3djSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMXBibWtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSEpwWjJoME9pQXRORGt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM050WVd4c0lIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCeWFXZG9kRG9nTFRVMU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5eVpXZDFiR0Z5SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J5YVdkb2REb2dMVFk1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl0WldScGRXMGdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lISnBaMmgwT2lBdE56TXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyeGhjbWRsSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J5YVdkb2REb2dMVGszTUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5c2RISWdlMXh5WEc0Z0lDQWdZbTl5WkdWeUxYSnBaMmgwT2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJQ0FnSUNBbVgzUnBibmtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR3hsWm5RNklDMHlPVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV2x1YVNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYkdWbWREb2dMVFE1TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl6YldGc2JDQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2JHVm1kRG9nTFRVMU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5eVpXZDFiR0Z5SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0JzWldaME9pQXROamt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFsWkdsMWJTQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2JHVm1kRG9nTFRjek1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c1lYSm5aU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdiR1ZtZERvZ0xUazNNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDkwZEdJc1hISmNiaUFnSmw5aWRIUWdlMXh5WEc0Z0lDQWdiR1ZtZERvZ01EdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJQ0FnSUNBbVgzUnBibmtnZTF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ01qUXdjSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYldsdWFTQjdYSEpjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUF6TWpCd2VEdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXpiV0ZzYkNCN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQXpOakJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5eVpXZDFiR0Z5SUh0Y2NseHVJQ0FnSUNBZ0lDQm9aV2xuYUhRNklEUXdNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxbFpHbDFiU0I3WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lBME5EQndlRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlzWVhKblpTQjdYSEpjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUEwT0RCd2VEdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDkwZEdJZ2UxeHlYRzRnSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5MGFXNTVJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQjBiM0E2SUMweU5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJXbHVhU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdkRzl3T2lBdE16TXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzTnRZV3hzSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0IwYjNBNklDMHpOekJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZjbVZuZFd4aGNpQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2RHOXdPaUF0TkRFd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxbFpHbDFiU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdkRzl3T2lBdE5EVXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyeGhjbWRsSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0IwYjNBNklDMDBPVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWW5SMElIdGNjbHh1SUNBZ0lIUnZjRG9nYVc1cGRHbGhiRHRjY2x4dUlDQWdJR0p2Y21SbGNpMTBiM0E2SURGd2VDQnpiMnhwWkNCQWNISnBiV0Z5ZVY5aWIzSmtaWEpmWTI5c2IzSTdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjaUI3WEhKY2JpQWdJQ0FnSUNaZmRHbHVlU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbTkwZEc5dE9pQXRNalV3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFwYm1rZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdKdmRIUnZiVG9nTFRNek1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5emJXRnNiQ0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbTkwZEc5dE9pQXRNemN3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHSnZkSFJ2YlRvZ0xUUXhNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXRaV1JwZFcwZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdKdmRIUnZiVG9nTFRRMU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c1lYSm5aU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbTkwZEc5dE9pQXRORGt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDI5d1pXNWxaQ0I3WEhKY2JpQWdJQ0IyYVhOcFltbHNhWFI1T2lCMmFYTnBZbXhsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nZG1GeUtDMHRiM1YwYkdsdVpTMTZTVzVrWlhncE8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSWdlMXh5WEc0Z0lDQWdJQ0J3YjNOcGRHbHZiam9nWm1sNFpXUTdYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzSjBiQ0I3WEhKY2JpQWdJQ0FnSUNBZ2NtbG5hSFE2SURBN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJIUnlJSHRjY2x4dUlDQWdJQ0FnSUNCc1pXWjBPaUF3TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNSMFlpQjdYSEpjYmlBZ0lDQWdJQ0FnZEc5d09pQXdPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMkowZENCN1hISmNiaUFnSUNBZ0lDQWdZbTkwZEc5dE9pQXdPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDI5bVpuTmxkQ0I3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5eWRHd3NYSEpjYmlBZ0lDQWdJQ1pmYkhSeUlIdGNjbHh1SUNBZ0lDQWdJQ0JvWldsbmFIUTZJR05oYkdNb01UQXdKU0F0SURSbGJTazdYSEpjYmlBZ0lDQWdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzUjBZaXhjY2x4dUlDQWdJQ0FnSmw5aWRIUWdlMXh5WEc0Z0lDQWdJQ0FnSUhkcFpIUm9PaUJqWVd4aktERXdNQ1VnTFNBMFpXMHBPMXh5WEc0Z0lDQWdJQ0FnSUd4bFpuUTZJRFV3SlR0Y2NseHVJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiM0JsYm1Wa0lIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDWmZjblJzSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY21sbmFIUTZJREpsYlR0Y2NseHVJQ0FnSUNBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDQWdJQ0FtWDJ4MGNpQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxablE2SURKbGJUdGNjbHh1SUNBZ0lDQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ0FnSUNBbVgzUjBZaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFJ2Y0RvZ01tVnRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSUNBZ0lDWmZZblIwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWW05MGRHOXRPaUF5WlcwN1hISmNiaUFnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMkYxZEc4Z2UxeHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2lCN1hISmNiaUFnSUNBZ0lDWmZjblJzTEZ4eVhHNGdJQ0FnSUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lCaGRYUnZPMXh5WEc0Z0lDQWdJQ0FnSUcxaGVDMW9aV2xuYUhRNklHTmhiR01vTVRBd0pTQXRJRFJsYlNrN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZablZzYkNCN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd08xeHlYRzRnSUgxY2NseHVmVnh5WEc0aUxDSkFhVzF3YjNKMElDZDJZWEpwWVdKc1pYTW5PMXh5WEc1QWFXMXdiM0owSUNkamIyeHZjbk1uTzF4eVhHNUFhVzF3YjNKMElDZGxiR3hwY0hOcGN5YzdYSEpjYmx4eVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWN5QjdYSEpjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHlYRzRnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnYldGeVoybHVPaUF3TzF4eVhHNGdJSGRwWkhSb09pQjJZWElvTFMxdmRYUnNhVzVsTFdOb1lYQjBaWEp6TFhkcFpIUm9LVHRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dZWFYwYnp0Y2NseHVYSEpjYmlBZ0ppMXdZWEpsYm5RZ2UxeHlYRzRnSUNBZ2RISmhibk5wZEdsdmJqb2dNQzR6Y3lCbFlYTmxMV2x1TFc5MWREdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DQXhObkI0TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEhKY2JpQWdJQ0JpYjNKa1pYSXRZbTkwZEc5dE9pQXhjSGdnYzI5c2FXUWdRSEJ5YVcxaGNubGZZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnWm05dWRDMXphWHBsT2lBeE5uQjRPMXh5WEc0Z0lDQWdabTl1ZEMxM1pXbG5hSFE2SURRd01EdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXRZV2x1SUh0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmJHbHpkQ3hjY2x4dUlDQW1YMTl6ZFdKcVpXTjBMRnh5WEc0Z0lDWmZYMmwwWlcwZ2UxeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklEQTdYSEpjYmlBZ0lDQnNhWE4wTFhOMGVXeGxMWFI1Y0dVNklHNXZibVU3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYkdsemRDQjdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXdMalZsYlNBd08xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZjM1ZpYW1WamRDQjdYSEpjYmlBZ0lDQndZV1JrYVc1bkxXeGxablE2SURGbGJUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMmwwWlcwZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRE13Y0hnN1hISmNiaUFnSUNCbWIyNTBMWE5wZW1VNklERXpjSGc3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmY0d4aFkyVm9iMnhrWlhJZ2UxeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01UdGNjbHh1SUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUd4bFpuUTZJREE3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTXpCd2VEdGNjbHh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQm9iM1psY2w5aVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjaTFzWldaME9pQXljSGdnYzI5c2FXUWdRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNCMGNtRnVjMmwwYVc5dUxXUjFjbUYwYVc5dU9pQXdMakp6TzF4eVhHNGdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOWhibU5vYjNJZ2UxeHlYRzRnSUNBZ0xtVnNiR2x3YzJsektERXBPMXh5WEc0Z0lDQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lERXVOV1Z0TzF4eVhHNWNjbHh1SUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNZNmRtbHphWFJsWkN4Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYSEpjYmlBZ0lDQWdJR052Ykc5eU9pQkFjMlZqYjI1a1lYSjVYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQWMzVmpZMlZ6YzE5amIyeHZjanRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJOdlpHVWdlMXh5WEc0Z0lDQWdjR0ZrWkdsdVp5MXlhV2RvZERvZ01DNDFaVzA3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJocFoyaHNhV2RvZENCN1hISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyRnVZMmh2Y2lCN1hISmNiaUFnSUNBZ0lDWTZiR2x1YXl4Y2NseHVJQ0FnSUNBZ0pqcDJhWE5wZEdWa0xGeHlYRzRnSUNBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdabTl1ZEMxM1pXbG5hSFE2SUdKdmJHUTdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmYzNScFkydDVMRnh5WEc0Z0lDWmZabWw0WldRZ2UxeHlYRzRnSUNBZ1pHbHpjR3hoZVRvZ1pteGxlRHRjY2x4dUlDQWdJR1pzWlhndGQzSmhjRG9nYm05M2NtRndPMXh5WEc0Z0lDQWdabXhsZUMxa2FYSmxZM1JwYjI0NklHTnZiSFZ0Ymp0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SUhaaGNpZ3RMVzkxZEd4cGJtVXRla2x1WkdWNEtUdGNjbHh1SUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNBZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25NZ2UxeHlYRzRnSUNBZ0lDQW1YMTkwYVhSc1pTeGNjbHh1SUNBZ0lDQWdKbDlmYldGcGJpQjdYSEpjYmlBZ0lDQWdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ0lDQWdJR1pzWlhndGMyaHlhVzVyT2lBd08xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgxOXRZV2x1SUh0Y2NseHVJQ0FnSUNBZ0lDQm1iR1Y0T2lBeE8xeHlYRzRnSUNBZ0lDQWdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM04wYVdOcmVTQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2djM1JwWTJ0NU8xeHlYRzRnSUNBZ2JXRjRMV2hsYVdkb2REb2dkbUZ5S0MwdGIzVjBiR2x1WlMxemRHbGphM2t0YUdWcFoyaDBLVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWm1sNFpXUWdlMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUNBZ2JXRjRMV2hsYVdkb2REb2dNVEF3SlR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmFHbGtaR1Z1SUh0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMlp2YkdSbFpDQjdYSEpjYmlBZ0lDQjNhV1IwYURvZ01EdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNTlYSEpjYmlJc0lpOHFLbHh5WEc0Z0tpQmxiR3hwY0hOcGN5NXNaWE56SUMwZzVwYUg1cHlzNTV5QjU1V2xJRzFwZUdsdWVDRGxoNzNtbGJCY2NseHVJQ29nUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh5WEc0Z0tpQkRjbVZoZEdWa0lFSjVPaUJaWVc5b1lXbDRhV0Z2WEhKY2JpQXFJRlZ3WkdGMFpUb2dNakF5TWk0ekxqRXhYSEpjYmlBcUwxeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPYVdoK2Fjck9lY2dlZVZwZVdIdmVhVnNDQTlQVDA5UFQwZ0tpOWNjbHh1TG1Wc2JHbHdjMmx6SUNoQWJHbHVaWE1wSUhkb1pXNGdLRUJzYVc1bGN6MHhLU0I3WEhKY2JpQWdkMmhwZEdVdGMzQmhZMlU2SUc1dmQzSmhjRHRjY2x4dUlDQjBaWGgwTFc5MlpYSm1iRzkzT2lCbGJHeHBjSE5wY3p0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1OVhISmNibHh5WEc0dVpXeHNhWEJ6YVhNZ0tFQnNhVzVsY3lrZ2QyaGxiaUFvUUd4cGJtVnpQajB5S1NCN1hISmNiaUFnTFhkbFltdHBkQzFzYVc1bExXTnNZVzF3T2lCQWJHbHVaWE03WEhKY2JpQWdaR2x6Y0d4aGVUb2dZbTk0TzF4eVhHNGdJQzEzWldKcmFYUXRZbTk0TFc5eWFXVnVkRG9nZG1WeWRHbGpZV3c3WEhKY2JpQWdkR1Y0ZEMxdmRtVnlabXh2ZHpvZ1pXeHNhWEJ6YVhNN1hISmNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dWZWeHlYRzRpTENKQWFXMXdiM0owSUNkamIyeHZjbk1uTzF4eVhHNUFhVzF3YjNKMElDZHRhWGhwYm5Nbk8xeHlYRzVjY2x4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5SUh0Y2NseHVJQ0FtWDE5amJHOXpaU0I3WEhKY2JpQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0xqWTNaVzBnTUNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeUlDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQm1iMjUwTFdaaGJXbHNlVG9nSjAxcFkzSnZjMjltZENCWllVaGxhU0JWU1Njc0lFRnlhV0ZzTENCellXNXpMWE5sY21sbU8xeHlYRzRnSUNBZ1ptOXVkQzEzWldsbmFIUTZJRzV2Y20xaGJEdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyaHBaR1JsYmlCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYSmxZV1JsY2w5emFXSnNhVzVuSUh0Y2NseHVJQ0FnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4eVhHNWNjbHh1SUNBZ0lDQWdKaTUzY21Gd2NHVnlJSHRjY2x4dUlDQWdJQ0FnSUNBbUxuQnZjM1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1l0TFhKbFlXUnBibWNnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nWW14dlkyczdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2dabWw0WldRN1hISmNiaUFnSUNCNkxXbHVaR1Y0T2lBeU8xeHlYRzRnSUNBZ2RHOXdPaUF3TzF4eVhHNGdJQ0FnYkdWbWREb2dNRHRjY2x4dUlDQWdJSGRwWkhSb09pQXhNREFsTzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjY2x4dUlDQWdJSEJoWkdScGJtYzZJRE5sYlNBMFpXMDdYSEpjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFkMmhwZEdVN1hISmNiaUFnSUNCelkzSnZiR3d0ZEdsdFpXeHBibVV0Ym1GdFpUb2dMUzFRY205bmNtVnpjMVJwYldWc2FXNWxPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJSE5qY205c2JEdGNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzF5WldGa1pYSWdlMXh5WEc0Z0lDQWdJQ0FtWDE5d2NtOW5jbVZ6Y3lCN1hISmNiaUFnSUNBZ0lDQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUNBZ0lDQWdJSFJ2Y0RvZ01EdGNjbHh1SUNBZ0lDQWdJQ0JzWldaME9pQXdPMXh5WEc0Z0lDQWdJQ0FnSUhvdGFXNWtaWGc2SURNN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQTBjSGc3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURFd01DVTdYSEpjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhCeWFXMWhjbmxmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnYzJOaGJHVTZJREFnTVR0Y2NseHVJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMHRiM0pwWjJsdU9pQnNaV1owTzF4eVhHNGdJQ0FnSUNBZ0lHRnVhVzFoZEdsdmJqb2diM1YwYkdsdVpTMXlaV0ZrWlhJdGNISnZaM0psYzNNZ2JHbHVaV0Z5TzF4eVhHNGdJQ0FnSUNBZ0lHRnVhVzFoZEdsdmJpMTBhVzFsYkdsdVpUb2dMUzFRY205bmNtVnpjMVJwYldWc2FXNWxPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMTlqYkc5elpTQjdYSEpjYmlBZ0lDQWdJQ0FnTG5Ob1lXUnZkMTlzYVdkb2RGOXlaV2QxYkdGeUtDazdYSEpjYmlBZ0lDQWdJQ0FnWkdsemNHeGhlVG9nWW14dlkyczdYSEpjYmlBZ0lDQWdJQ0FnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh5WEc0Z0lDQWdJQ0FnSUhvdGFXNWtaWGc2SURNN1hISmNiaUFnSUNBZ0lDQWdkRzl3T2lBMU1DVTdYSEpjYmlBZ0lDQWdJQ0FnY21sbmFIUTZJREl5Y0hnN1hISmNiaUFnSUNBZ0lDQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lDQWdJQ0FnSUhkcFpIUm9PaUF6Tm5CNE8xeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dNelp3ZUR0Y2NseHVJQ0FnSUNBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBeE9IQjRPMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjam9nTVhCNElITnZiR2xrSUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0JzYVc1bExXaGxhV2RvZERvZ016QndlRHRjY2x4dUlDQWdJQ0FnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh5WEc0Z0lDQWdJQ0FnSUdOMWNuTnZjam9nY0c5cGJuUmxjanRjY2x4dUlDQWdJQ0FnSUNCaWIzZ3RjMmhoWkc5M09pQXdJREFnT0hCNElFQnpaV052Ym1SaGNubGZZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSGRvYVhSbE8xeHlYRzRnSUNBZ0lDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ0FnSUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnSUNCamIyeHZjam9nUUhkb2FYUmxPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnYURFc1hISmNiaUFnSUNBZ0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lDQWdJQ0J0WVhKbmFXNDZJREF1TmpkbGJTQXdJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2JHbHVaUzFvWldsbmFIUTZJREV1TTJWdE8xeHlYRzRnSUNBZ0lDQWdJR1p2Ym5RdGMybDZaVG9nTXk0MVpXMDdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYm4xY2NseHVYSEpjYmtCclpYbG1jbUZ0WlhNZ2IzVjBiR2x1WlMxeVpXRmtaWEl0Y0hKdlozSmxjM01nZTF4eVhHNGdJSFJ2SUh0Y2NseHVJQ0FnSUhOallXeGxPaUF4SURFN1hISmNiaUFnZlZ4eVhHNTlYSEpjYmx4eVhHNUFiV1ZrYVdFZ0tHMWhlQzEzYVdSMGFEb2dORGd3Y0hncElIdGNjbHh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnZTF4eVhHNGdJQ0FnSmkwdGNtVmhaR2x1WnlCN1hISmNiaUFnSUNBZ0lIQmhaR1JwYm1jNklEQWdNUzR5TldWdE8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1pmWDJOc2IzTmxJSHRjY2x4dUlDQWdJQ0FnY21sbmFIUTZJREV5Y0hnZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdiM0JoWTJsMGVUb2dNQzQ0TzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lDQWdabTl1ZEMxemFYcGxPaUF5WlcwN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNTlYSEpjYmx4eVhHNUFiV1ZrYVdFZ2NISnBiblFnZTF4eVhHNGdJR2gwYld3c1hISmNiaUFnWW05a2VTQjdYSEpjYmlBZ0lDQm9aV2xuYUhRNklHbHVhWFJwWVd3Z0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDNXZkWFJzYVc1bElIdGNjbHh1SUNBZ0lDWXRiV1Z6YzJGblpTeGNjbHh1SUNBZ0lDWXRkRzl2YkdKaGNpQjdYSEpjYmlBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FtTFhKbFlXUmxjaUI3WEhKY2JpQWdJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNBZ0lDQm9NU3hjY2x4dUlDQWdJQ0FnSmw5ZmRHbDBiR1VnZTF4eVhHNGdJQ0FnSUNBZ0lHMWhjbWRwYmpvZ01UTXVOSEIwSURBZ01qaHdkQ0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNpQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdJQ0FnSUdadmJuUXRjMmw2WlRvZ01qQndkQ0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtTG05MWRHeHBibVV0Y21WaFpHVnlJSHRjY2x4dUlDQWdJQ0FnSUNBbUxTMXlaV0ZrYVc1bklIdGNjbHh1SUNBZ0lDQWdJQ0FnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQWdJQ0FnYUdWcFoyaDBPaUJoZFhSdklDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJQ0FnSUNCd1lXUmthVzVuT2lBd0lDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJQ0FnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0lDQm9NU3hjY2x4dUlDQWdJQ0FnSUNBbVgxOTBhWFJzWlNCN1hISmNiaUFnSUNBZ0lDQWdJQ0J0WVhKbmFXNDZJREV6TGpSd2RDQXdJREk0Y0hRZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdJQ0FnSUhSbGVIUXRZV3hwWjI0NklHTmxiblJsY2lBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQWdJQ0FnWm05dWRDMXphWHBsT2lBeU1IQjBJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSUNBbVgxOWpiRzl6WlN4Y2NseHVJQ0FnSUNBZ0lDQW1YMTl3Y205bmNtVnpjeUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQmthWE53YkdGNU9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQndjbVVnZTF4eVhHNGdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklERmxiU0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNBZ0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lFQmliM0prWlhKZlkyOXNiM0lnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBMGNIZ2dJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdjSEpsTEZ4eVhHNGdJQ0FnSUNCamIyUmxJSHRjY2x4dUlDQWdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyaHBkR1VnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnZEdGaWJHVXNYSEpjYmlBZ0lDQWdJR2x0Wnl4Y2NseHVJQ0FnSUNBZ2MzWm5JSHRjY2x4dUlDQWdJQ0FnSUNCaWNtVmhheTFwYm5OcFpHVTZJR0YyYjJsa08xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzTnBZbXhwYm1jZ2UxeHlYRzRnSUNBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNGlMQ0l2S2lBOVBUMDlQVDA5UFQwOUlHSjFkSFJ2Ym5NdWRHaGxiV1VnTFNEbWpJbnBrcTdscjd6b2lLcm1vTGZsdkk4Z1BUMDlQVDA5UFQwOVBTQXFMMXh5WEc1QWFXMXdiM0owSUNkamIyeHZjbk1uTzF4eVhHNUFhVzF3YjNKMElDZHphR0ZrYjNjbk8xeHlYRzVjY2x4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2lCN1hISmNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh5WEc0Z0lIb3RhVzVrWlhnNklEazVPVGs1TzF4eVhHNGdJRzFoY21kcGJqb2dNRHRjY2x4dUlDQjBjbUZ1YzJsMGFXOXVMV1IxY21GMGFXOXVPaUF3TGpOek8xeHlYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNaZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBdWMyaGhaRzkzWDJ4cFoyaDBYM0psWjNWc1lYSW9LVHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREU3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREV3Y0hnN1hISmNiaUFnSUNCM2FXUjBhRG9nTXpad2VEdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ016WndlRHRjY2x4dUlDQWdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUdKdmNtUmxjaTF5WVdScGRYTTZJRE53ZUR0Y2NseHVJQ0FnSUdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdYSEpjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFkMmhwZEdVN1hISmNiaUFnSUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEhKY2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEhKY2JpQWdJQ0JqYjJ4dmNqb2dRR1p2ZFhKMGFGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQ0FnWTI5c2IzSTZJRUJ6ZFdOalpYTnpYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQmliM0prWlhJdFkyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNZdWFHbGtaU0I3WEhKY2JpQWdJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTloYm1Ob2IzSWdlMXh5WEc0Z0lDQWdKanBzYVc1ckxGeHlYRzRnSUNBZ0pqcDJhWE5wZEdWa0xGeHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2JtOXVaVHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYVdOdmJpQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXlPMXh5WEc0Z0lDQWdkRzl3T2lBMU1DVTdYSEpjYmlBZ0lDQnNaV1owT2lBMU1DVTdYSEpjYmlBZ0lDQjNhV1IwYURvZ01qQndlRHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNakJ3ZUR0Y2NseHVJQ0FnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbEtDMDFNQ1VzSUMwMU1DVXBPMXh5WEc0Z0lDQWdabWxzYkRvZ1kzVnljbVZ1ZEdOdmJHOXlPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZZV04wYVhabElIdGNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMTBiMjlzWW1GeUlIdGNjbHh1SUNBZ0lDQWdKbDlmWW5WMGRHOXVJSHRjY2x4dUlDQWdJQ0FnSUNCamIyeHZjam9nUUhkb2FYUmxPMXh5WEc0Z0lDQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjaTFqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNibHh5WEc0Z0lDQWdJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0lnZTF4eVhHNGdJQ0FnSUNBbU9teHBibXNzWEhKY2JpQWdJQ0FnSUNZNmRtbHphWFJsWkN4Y2NseHVJQ0FnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lDQWdZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOXliM1Z1WkdWa0lIdGNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0Z2UxeHlYRzRnSUNBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBeE9IQjRPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlrYVhOaFlteGxaQ0I3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0ZEc5dmJHSmhjaXhjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSWdlMXh5WEc0Z0lDQWdJQ0FtWDE5aGJtTm9iM0k2YkdsdWF5eGNjbHh1SUNBZ0lDQWdKbDlmWVc1amFHOXlPblpwYzJsMFpXUXNYSEpjYmlBZ0lDQWdJQ1pmWDJGdVkyaHZjanBvYjNabGNpeGNjbHh1SUNBZ0lDQWdKbDlmWW5WMGRHOXVJSHRjY2x4dUlDQWdJQ0FnSUNCamRYSnpiM0k2SUc1dmRDMWhiR3h2ZDJWa08xeHlYRzRnSUNBZ0lDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnWW05eVpHVnlMV052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmx4eVhHNGdJQ0FnSUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWTI5c2IzSTZJRUJtYjNWeWRHaGZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNBZ0lHSnZjbVJsY2kxamIyeHZjam9nUUdadmRYSjBhRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOWZZblYwZEc5dUlIdGNjbHh1SUNBZ0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBWkdsellXSnNaV1JmWW1kZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmRIUmlMRnh5WEc0Z0lDWmZZblIwSUh0Y2NseHVJQ0FnSUd4bFpuUTZJRFV3SlR0Y2NseHVJQ0FnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdDZ3ROVEFsS1R0Y2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0Z2UxeHlYRzRnSUNBZ0lDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNSMFlpQjdYSEpjYmlBZ0lDQjBiM0E2SURFeWNIZzdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjY2x4dUlDQWdJQ0FnZEc5d09pQXROVFp3ZUR0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlluUjBJSHRjY2x4dUlDQWdJR0p2ZEhSdmJUb2dNVEp3ZUR0Y2NseHVYSEpjYmlBZ0lDQW1MbTkxZEd4cGJtVXRkRzl2YkdKaGNsOW9hV1JrWlc0Z2UxeHlYRzRnSUNBZ0lDQmliM1IwYjIwNklDMDFObkI0TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5eWRHd3NYSEpjYmlBZ0psOXNkSElnZTF4eVhHNGdJQ0FnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdWWktDMDFNQ1VwTzF4eVhHNGdJQ0FnZDJsa2RHZzZJRFUyY0hnN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzSjBiQ0I3WEhKY2JpQWdJQ0IwYjNBNklEVXdKVHRjY2x4dUlDQWdJSEpwWjJoME9pQXhNbkI0TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYmlCN1hISmNiaUFnSUNBZ0lISnBaMmgwT2lBdE9EWndlRHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmYkhSeUlIdGNjbHh1SUNBZ0lIUnZjRG9nTlRBbE8xeHlYRzRnSUNBZ2JHVm1kRG9nTVRKd2VEdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh5WEc0Z0lDQWdJQ0JzWldaME9pQXRPRFp3ZUR0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmRIUmlMRnh5WEc0Z0lDWmZjblJzTEZ4eVhHNGdJQ1pmWW5SMExGeHlYRzRnSUNaZmJIUnlJSHRjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYSEpjYmlBZ0lDQWdJQ1l1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQWdJQ0FnWkdsemNHeGhlVG9nYm05dVpUdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNGlMQ0pBYVcxd2IzSjBJQ2N1TDJOdmJHOXljeWM3WEhKY2JrQnBiWEJ2Y25RZ0p5NHZabTl1ZENjN1hISmNia0JwYlhCdmNuUWdKeTR2YldsNGFXNXpKenRjY2x4dVFHbHRjRzl5ZENBbkxpOXBZMjl1Y3ljN1hISmNibHh5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsSUh0Y2NseHVJQ0F1Y21Ga2FYVnpYM050WVd4c0tDazdYSEpjYmlBZ0xuTm9ZV1J2ZDE5c2FXZG9kRjl5WldkMWJHRnlLQ2s3WEhKY2JpQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUhvdGFXNWtaWGc2SURrNU9UazdYSEpjYmlBZ2IzQmhZMmwwZVRvZ01DNHhPMXh5WEc0Z0lIUnZjRG9nTFRVd2NIZzdYSEpjYmlBZ2JHVm1kRG9nTlRBbE8xeHlYRzRnSUdobGFXZG9kRG9nTkRCd2VEdGNjbHh1SUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnY0dGa1pHbHVaem9nTUNBMU1IQjRPMXh5WEc0Z0lHeHBibVV0YUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUdadmJuUXRjMmw2WlRvZ1FHWnZiblJmYzJsNlpWOXpiV0ZzYkR0Y2NseHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBZDJocGRHVTdYSEpjYmlBZ1kyOXNiM0k2SUVCMGFHbHlaRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJSFJ5WVc1emFYUnBiMjQ2SUdGc2JDQXdMalZ6SUdWaGMyVXRhVzR0YjNWME8xeHlYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdDZ3ROVEFsS1R0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1Y2NseHVJQ0FtWDE5amIyNTBaVzUwSUh0Y2NseHVJQ0FnSUM1bGJHeHBjSE5wY3lneEtUdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNBZ0lHMWhlQzEzYVdSMGFEb2dOekF3Y0hnN1hISmNiaUFnSUNCb1pXbG5hSFE2SURRd2NIZzdYSEpjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nTkRCd2VEdGNjbHh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNVE53ZUR0Y2NseHVJQ0FnSUdOdmJHOXlPaUJBZEdocGNtUmZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlqYkc5elpTeGNjbHh1SUNBbVgxOXBZMjl1SUh0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SURJN1hISmNiaUFnSUNCMGIzQTZJREE3WEhKY2JpQWdJQ0IzYVdSMGFEb2dOREJ3ZUR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTkRCd2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUNBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgybGpiMjRnZTF4eVhHNGdJQ0FnYkdWbWREb2dNRHRjY2x4dUlDQWdJR052Ykc5eU9pQkFkMmhwZEdVN1hISmNibHh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRhV052YmlCN1hISmNiaUFnSUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNjbHh1SUNBZ0lDQWdlaTFwYm1SbGVEb2dNanRjY2x4dUlDQWdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0FnSUd4bFpuUTZJRFV3SlR0Y2NseHVJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVW9MVFV3SlN3Z0xUVXdKU2s3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5amJHOXpaU0I3WEhKY2JpQWdJQ0J5YVdkb2REb2dNRHRjY2x4dUlDQWdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNjbHh1SUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNibHh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRhV052YmlCN1hISmNiaUFnSUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNjbHh1SUNBZ0lDQWdlaTFwYm1SbGVEb2dNanRjY2x4dUlDQWdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0FnSUd4bFpuUTZJRFV3SlR0Y2NseHVJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVW9MVFV3SlN3Z0xUVXdKU2s3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQWRHaHBjbVJmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmFXNW1ieUI3WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNjbHh1SUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSEJ5YVcxaGNubGZZMjlzYjNJN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzZGhjbTVwYm1jZ2UxeHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEhKY2JpQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM1lYSnVhVzVuWDJOdmJHOXlPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDl6ZFdOalpYTnpJSHRjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlpYSnliM0lnZTF4eVhHNGdJQ0FnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYSEpjYmlBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJrWVc1blpYSmZZMjlzYjNJN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzQnNZV2x1SUh0Y2NseHVJQ0FnSUcxcGJpMTNhV1IwYURvZ01Ua3djSGc3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3SURVd2NIZ2dNQ0F4TlhCNE8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzF0WlhOellXZGxJSHRjY2x4dUlDQWdJQ0FnSmw5cGJtWnZJSHRjY2x4dUlDQWdJQ0FnSUNCaWIzSmtaWEl0YkdWbWREb2dOWEI0SUhOdmJHbGtJRUJ3Y21sdFlYSjVYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJwYm1adlgzUnBjRjlpWjE5amIyeHZjanRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDkzWVhKdWFXNW5JSHRjY2x4dUlDQWdJQ0FnSUNCaWIzSmtaWEl0YkdWbWREb2dOWEI0SUhOdmJHbGtJRUIzWVhKdWFXNW5YMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzWVhKdWFXNW5YM1JwY0Y5aVoxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5emRXTmpaWE56SUh0Y2NseHVJQ0FnSUNBZ0lDQmliM0prWlhJdGJHVm1kRG9nTlhCNElITnZiR2xrSUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCemRXTmpaWE56WDNScGNGOWlaMTlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOWxjbkp2Y2lCN1hISmNiaUFnSUNBZ0lDQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNCQVpHRnVaMlZ5WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCa1lXNW5aWEpmZEdsd1gySm5YMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYSEpjYmlBZ0lDQWdJSGRwWkhSb09pQXdPMXh5WEc0Z0lDQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzVjY2x4dUlDQWdJQ0FnTG05MWRHeHBibVV0YVdOdmJpQjdYSEpjYmlBZ0lDQWdJQ0FnWkdsemNHeGhlVG9nYm05dVpUdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlzYVdkb2RDQjdYSEpjYmlBZ0lDQnRhVzR0ZDJsa2RHZzZJREU0TUhCNE8xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01DQTBNSEI0TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMXRaWE56WVdkbElIdGNjbHh1SUNBZ0lDQWdKbDlwYm1adklIdGNjbHh1SUNBZ0lDQWdJQ0F1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdOdmJHOXlPaUJBY0hKcGJXRnllVjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmZDJGeWJtbHVaeUI3WEhKY2JpQWdJQ0FnSUNBZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FIZGhjbTVwYm1kZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzTjFZMk5sYzNNZ2UxeHlYRzRnSUNBZ0lDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWTI5c2IzSTZJRUJ6ZFdOalpYTnpYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlsY25KdmNpQjdYSEpjYmlBZ0lDQWdJQ0FnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCamIyeHZjam9nUUdSaGJtZGxjbDlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5eWIzVnVaQ0I3WEhKY2JpQWdJQ0F1Y21Ga2FYVnpLREl3Y0hncE8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzF0WlhOellXZGxJSHRjY2x4dUlDQWdJQ0FnSmw5a1pXWmhkV3gwSUh0Y2NseHVJQ0FnSUNBZ0lDQnRhVzR0ZDJsa2RHZzZJREU0TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJREFnTkRCd2VEdGNjbHh1WEhKY2JpQWdJQ0FnSUNBZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQXVjbUZrYVhWektERXdjSGdwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdkRzl3T2lBeE1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ2JHVm1kRG9nTVRCd2VEdGNjbHh1SUNBZ0lDQWdJQ0FnSUhkcFpIUm9PaUF5TUhCNE8xeHlYRzRnSUNBZ0lDQWdJQ0FnYUdWcFoyaDBPaUF5TUhCNE8xeHlYRzRnSUNBZ0lDQWdJQ0FnYkdsdVpTMW9aV2xuYUhRNklESXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5bWRXeHNMWGRwWkhSb0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUcxcGJpMTNhV1IwYURvZ01qQXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQXdJREl3Y0hnZ01DQTBNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXdiR0ZwYmlCN1hISmNiaUFnSUNBZ0lDQWdiV2x1TFhkcFpIUm9PaUF4T1RWd2VEdGNjbHh1SUNBZ0lDQWdJQ0J3WVdSa2FXNW5PaUF3SURRd2NIZ2dNQ0F5TUhCNE8xeHlYRzVjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5bWRXeHNMWGRwWkhSb0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUcxcGJpMTNhV1IwYURvZ01qRTFjSGc3WEhKY2JpQWdJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQXdJREl3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJaMWJHd3RkMmxrZEdnZ2UxeHlYRzRnSUNBZ2JXbHVMWGRwWkhSb09pQXlNREJ3ZUR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBZ01UQndlQ0F3SURVd2NIZzdYSEpjYmx4eVhHNGdJQ0FnSmk1dmRYUnNhVzVsTFcxbGMzTmhaMlVnZTF4eVhHNGdJQ0FnSUNBbVgzQnNZV2x1SUh0Y2NseHVJQ0FnSUNBZ0lDQnRhVzR0ZDJsa2RHZzZJREl6TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJREFnTVRCd2VDQXdJREUxY0hnN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJHbG5hSFFnZTF4eVhHNGdJQ0FnSUNBZ0lHMXBiaTEzYVdSMGFEb2dNakV3Y0hnN1hISmNiaUFnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0F4TUhCNElEQWdOREJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOTJhWE5wWW14bElIdGNjbHh1SUNBZ0lHOXdZV05wZEhrNklERTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJSDFjY2x4dWZWeHlYRzRpTENJdktpcGNjbHh1SUNvZ2JXbDRhVzV6TG14bGMzTWdMU0RsdDZYbGhiZmxoNzNtbGJCY2NseHVJQ29nUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh5WEc0Z0tpQkRjbVZoZEdWa0lFSjVPaUJaWVc5b1lXbDRhV0Z2WEhKY2JpQXFJRlZ3WkdGMFpUb2dNakF5TWk0ekxqRXhYSEpjYmlBcUwxeHlYRzVBYVcxd2IzSjBJQ2N1TDJOdmJHOXljeWM3WEhKY2JseHlYRzR2S2lBOVBUMDlQVDBnNXBhSDVweXM1NXlCNTVXbDVZZTk1cFd3SUQwOVBUMDlQU0FxTDF4eVhHNHVaV3hzYVhCemFYTWdLRUJzYVc1bGN5a2dkMmhsYmlBb1FHeHBibVZ6UFRFcElIdGNjbHh1SUNCM2FHbDBaUzF6Y0dGalpUb2dibTkzY21Gd08xeHlYRzRnSUhSbGVIUXRiM1psY21ac2IzYzZJR1ZzYkdsd2MybHpPMXh5WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibjFjY2x4dVhISmNiaTVsYkd4cGNITnBjeUFvUUd4cGJtVnpLU0IzYUdWdUlDaEFiR2x1WlhNK1BUSXBJSHRjY2x4dUlDQXRkMlZpYTJsMExXeHBibVV0WTJ4aGJYQTZJRUJzYVc1bGN6dGNjbHh1SUNCa2FYTndiR0Y1T2lCaWIzZzdYSEpjYmlBZ0xYZGxZbXRwZEMxaWIzZ3RiM0pwWlc1ME9pQjJaWEowYVdOaGJEdGNjbHh1SUNCMFpYaDBMVzkyWlhKbWJHOTNPaUJsYkd4cGNITnBjenRjY2x4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzU5WEhKY2JseHlYRzR2S2lBOVBUMDlQVDBnNVp5RzZLZVM1cUMzNWJ5UDZLNis1NzJ1NVllOTVwV3dJRDA5UFQwOVBTQXFMMXh5WEc0dWNtRmthWFZ6S0VCdWRXMDZJREp3ZUNrZ2UxeHlYRzRnSUdKdmNtUmxjaTF5WVdScGRYTTZJRUJ1ZFcwN1hISmNibjFjY2x4dVhISmNiaTV5WVdScGRYTmZibTl1WlNncElIdGNjbHh1SUNBdWNtRmthWFZ6S0RBcE8xeHlYRzU5WEhKY2JseHlYRzR1Y21Ga2FYVnpYMjFwYm1rb0tTQjdYSEpjYmlBZ0xuSmhaR2wxY3lneWNIZ3BPMXh5WEc1OVhISmNibHh5WEc0dWNtRmthWFZ6WDNOdFlXeHNLQ2tnZTF4eVhHNGdJQzV5WVdScGRYTW9NM0I0S1R0Y2NseHVmVnh5WEc1Y2NseHVMbkpoWkdsMWMxOXlaV2QxYkdGeUtDa2dlMXh5WEc0Z0lDNXlZV1JwZFhNb05IQjRLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5dFpXUnBkVzBvS1NCN1hISmNiaUFnTG5KaFpHbDFjeWcxY0hncE8xeHlYRzU5WEhKY2JseHlYRzR1Y21Ga2FYVnpYMnhoY21kbEtDa2dlMXh5WEc0Z0lDNXlZV1JwZFhNb01UQndlQ2s3WEhKY2JuMWNjbHh1WEhKY2JpNXlZV1JwZFhOZmFIVm5aU2dwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLREUyY0hncE8xeHlYRzU5WEhKY2JseHlYRzR1Y21Ga2FYVnpYM0p2ZFc1a0tDa2dlMXh5WEc0Z0lDNXlZV1JwZFhNb016QndlQ2s3WEhKY2JuMWNjbHh1WEhKY2JpOHFJRDA5UFQwOVBTRHBtTFRsdmJIbW9MZmx2SS9vcnI3bnZhN2xoNzNtbGJBZ1BUMDlQVDA5SUNvdlhISmNiaTV6YUdGa2IzY29RRzltWm5ObGREb2dNQ0F3SURad2VDQXhjSGdzSUVCamIyeHZjam9nUUhCeWFXMWhjbmxmWW05eVpHVnlYMk52Ykc5eUtTQjdYSEpjYmlBZ1ltOTRMWE5vWVdSdmR6b2dRRzltWm5ObGRDQkFZMjlzYjNJN1hISmNibjFjY2x4dVhISmNiaTV6YUdGa2IzZGZjbVZuZFd4aGNpaEFZMjlzYjNJNklFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjaWtnZTF4eVhHNGdJQzV6YUdGa2IzY29NQ0F3SURad2VDQXhjSGdzSUVCamIyeHZjaWs3WEhKY2JuMWNjbHh1WEhKY2JpNXphR0ZrYjNkZmJHRnlaMlVvUUdOdmJHOXlPaUJBY0hKcGJXRnllVjlpYjNKa1pYSmZZMjlzYjNJcElIdGNjbHh1SUNBdWMyaGhaRzkzS0RBZ01DQXhNbkI0SURGd2VDd2dRR052Ykc5eUtUdGNjbHh1ZlZ4eVhHNWNjbHh1TG5Ob1lXUnZkMTlzYVdkb2RGOXlaV2QxYkdGeUtDa2dlMXh5WEc0Z0lDNXphR0ZrYjNkZmNtVm5kV3hoY2lncE8xeHlYRzU5WEhKY2JseHlYRzR1YzJoaFpHOTNYMnhwWjJoMFgyeGhjbWRsS0NrZ2UxeHlYRzRnSUM1emFHRmtiM2RmYkdGeVoyVW9LVHRjY2x4dWZWeHlYRzVjY2x4dUxuTm9ZV1J2ZDE5a1lYSnJYM0psWjNWc1lYSW9LU0I3WEhKY2JpQWdMbk5vWVdSdmQxOXlaV2QxYkdGeUtFQnpaV052Ym1SaGNubGZZbTl5WkdWeVgyTnZiRzl5S1R0Y2NseHVmVnh5WEc0aUxDSXZLaUE5UFQwOVBTQlRZM0p2Ykd4aVlYSWdQVDA5UFQwZ0tpOWNjbHh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2lCN1hISmNiaUFnZDJsa2RHZzZJRGR3ZUR0Y2NseHVJQ0JvWldsbmFIUTZJRGR3ZUR0Y2NseHVJQ0F0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEVndlRHRjY2x4dVhISmNiaUFnSmkxMGNtRmpheTF3YVdWalpTQjdYSEpjYmlBZ0lDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWXRkR2gxYldJZ2UxeHlYRzRnSUNBZ0pqcDJaWEowYVdOaGJDQjdYSEpjYmlBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEhKY2JpQWdJQ0FnSUMxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0TzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDWTZhRzl5YVhwdmJuUmhiQ0I3WEhKY2JpQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhKblltRW9NQ3dnTUN3Z01Dd2dNQzR5TlNrN1hISmNiaUFnSUNBZ0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJ5WjJKaEtEQXNJREFzSURBc0lEQXVNelVwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJ5WjJKaEtEQXNJREFzSURBc0lEQXVNVFVwTzF4eVhHNGdJSDFjY2x4dWZWeHlYRzRpWFgwPSAqL1xuIl0sImZpbGUiOiJjc3MvZXhhbXBsZS5taW4uY3NzIn0= */ diff --git a/docs/js/outline.min.js b/docs/js/outline.min.js index 42a47cb..a370647 100644 --- a/docs/js/outline.min.js +++ b/docs/js/outline.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Outline=e()}(this,(function(){"use strict";const t=t=>Object.prototype.toString.apply(t),e=e=>"function"==typeof e||"[object Function]"===t(e),s=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return!!e(t)&&setTimeout((()=>{t()}),s)},i=s=>("[object Object]"===t(s)||"object"==typeof s||e(s))&&null!==s,r=e=>Array.isArray?Array.isArray(e):"[object Array]"===t(e),n=t=>{let e={};return null===t?null:(r(t)?e=Array.from(t):(e=Object.assign({},t),Object.keys(e).forEach((s=>e[s]=i(t[s])?n(t[s]):t[s]))),e)},l=(t,e,s)=>{const i={},r=[];return t.forEach(((t,s)=>{i[t[e]]=s,t.children=[]})),t.forEach((e=>{const n=t[i[e[s]]];-1!==e[s]?n.children.push(e):r.push(e)})),r},o=t=>"string"==typeof t,h=t=>!!(i(t)&&t.nodeName&&t.tagName&&1===t.nodeType),a=(t,e)=>{const s=new RegExp("(\\s|^)"+e+"(\\s|$)");let i,r;return!!h(t)&&(i=t.className,!!i&&(r=t.classList,r&&r.contains?t.classList.contains(e):!!s.exec(i)))},c=(t,e)=>{var s;let i,r;if(a(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.add?i.add(e):(r=t.className,r+=r.length>0?" "+e:e,t.className=r)},d=t=>t*t,u=function(){let t,e,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return s?o(s)?e=document.querySelector(s):h(s)&&(e=s):(t=document.querySelectorAll("html,body"),e=t[0].scrollTop-t[1].scrollTop>=0?t[0]:t[1]),e},m=(t,s,i)=>{const r=u(t);let n=r.scrollTop,l=0;const o=s-n,h=r.scrollHeight,a=s-h<=0?s:h,c=t=>(e(i)&&i(t),!1),m=()=>{if(l+=1,o<0){if(n-=d(l),r.scrollTop=n,n<=s)return r.scrollTop=s,c(s)}else if(n+=d(l),r.scrollTop=n,n>=a)return r.scrollTop=a,c(a);requestAnimationFrame(m)};requestAnimationFrame(m)},p=(t,e)=>{const s=Object.prototype.hasOwnProperty;return t&&s.call(t,e)},g=(t,e)=>{Object.keys(e).forEach((s=>{p(e,s)&&(t[s]=e[s])}))},f={},b=t=>p(f,t)&&f[t].length>0,y=function(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?b(t):(t=>{let e=b(t),s=t.lastIndexOf(".");for(;!e&&-1!==s;)s=(t=t.substring(0,s)).lastIndexOf("."),e=b(t);return e})(t)},$=function(e,s){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r=e=>{if(!b(e))return!1;f[e].forEach((e=>{const i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object BigInt64Array]","[object BigUint64Array]"].indexOf(t(s))>-1?s.toString():s;e.callback.call(e.context||e,i)}))},n=()=>{let t=e,s=e.lastIndexOf(".");for(;-1!==s;)t=t.substring(0,s),s=t.lastIndexOf("."),r(t);r(e),r("*")};if(!y(e))return!1;i?setTimeout(n,10):n()},v=(()=>{let t=0;return e=>(t+=1,e?e+"-"+t:"guid-"+t)})(),_=t=>{if(!p(f,t))return!1;delete f[t]},x=(t,e)=>{if(!y(t))return!1;e?(t=>{const e=Object.keys(f);if(!t||e.length<1)return!1;e.forEach((e=>{const s=f[e];let i;s.forEach(((e,r)=>{e.callback!==t&&e.token!==t||(i=e.topic,s.splice(-1,r))})),s.length<1&&_(i)}))})(e):_(t)};class T{constructor(t){this.attrs={},t&&this.initialize(t)}initialize(t){return this.attr(t).render().addListeners(),this}attr(t,e){const s=this.attrs;return o(t)?e&&p(s,t)?(s[t]=e,this):s[t]:i(t)?(g(s,t),this):0===arguments.length?s:this}render(){return this}refresh(){return this}destroy(){return this.removeListeners(),this}reload(t){let e=this.attr();return t&&(e=this.attr(t)),this.destroy().initialize(e),this}$emit(t,e){return $(t,e),this}$on(t,s){return function(t,s){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const r=v();let n="symbol"==typeof t?t.toString():t;e(s)&&(f[n]||(f[n]=[]),f[n].push({topic:n,callback:s,context:i,token:r}))}(t,s,this),this}$off(t,e){return x(t,e),this}addListeners(){return this}removeListeners(){return this}}const w=[];let C,E;function L(t){for(;t.timeRemaining()>0&&w.length;){const t=w.shift();if(!e(t))return!1;t()}w.length?C=requestIdleCallback(L):(C=0,e(E)&&(E(),E=null))}void 0===window.requestIdleCallback&&(window.requestIdleCallback=function(t){const e=Date.now();return s((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),10)},window.cancelIdleCallback=function(t){clearTimeout(t)});const z=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;w.push(t),e(s)&&(E=s),C||requestIdleCallback(L)},S=t=>{let e=t.offsetTop;return null!==t.offsetParent&&(e+=S(t.offsetParent)),e},M=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=e.replace(/^>/i,"");return!!(e&&s&&t)&&(t.matches?t.matches(s):!!t.msMatchesSelector&&t.msMatchesSelector(s))},k=t=>t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode,A=["focusout","blur","focusin","focus","load","unload","mouseenter","mouseleave"],N=(t,e,s)=>{const i=A.indexOf(e)>-1;s._delegateListener&&delete(s=s._delegateListener)._delegateListener,function(t,e,s){const i=t._listeners;let r=-1;if(i.length<1)return!1;i.forEach(((t,i)=>{const n=t.fn;e===t.type&&(r=i,n===s&&(r=i))})),r>-1&&i.splice(r,1)}(t,e,s),t.removeEventListener(e,s,i)},H=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=o(t)?document.querySelector(t):t,r=i.childNodes,n=((t,e)=>{let s=t._listeners||[];return o(e)&&e&&(s=s.filter((t=>t.type===e))),s})(i,e);n.forEach((t=>{N(i,t.type,t.fn)})),(s||!0===e||1===arguments.length)&&i&&r&&r.forEach((t=>{h(t)&&H(t,e,s)}))},O=(t,s,i)=>{if(!e(i))return H(t,s),!1;N(t,s,i)},D=function(t,e,s,i,r,n){let l=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const o=A.indexOf(s)>-1,h=function(o){const a=function(t){const e=t.target;return(s=e)&&3===s.nodeType?s.parentNode:s;var s}(o),c=((t,e,s,i)=>{const r=s||document;if(!t)return null;do{if(null!=e&&(e.startsWith(">")?t.parentNode===r&&M(t,e):M(t,e))||i&&t===r)return t;if(t===r)break}while(t=k(t))})(a,e,t);let d=n||t;o.delegateTarget=c,!0===n&&(d=r),c&&(!0===l&&O(t,s,h),i.call(d,o,r))};if(!t)return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,selector:e,type:s,fn:h,data:r,context:n,capture:o}),i._delegateListener=h,t.addEventListener(s,h,o)},F=function(t){t.stopPropagation(),t.preventDefault()},q=['','','','','','','','','','','','','','','','','','',''],j=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";return o(t)?function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";const s=/id="(.*?)"/,i=/^(\w+)-/;return q.find((r=>{const n=s.exec(r)[1];return i.exec(n)[1]===e&&n===("icon"===e?`${e}-${t}`:`${e}-icon-${t}`)}))}(t,e):[...q]},I=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=document.body;let s=document.querySelector("#outline-icons"),i=[];(t=>{if(!t)return!1;r(t)&&t.length>0?t.forEach((t=>{-1===q.indexOf(t)&&o(t)&&q.push(t)})):o(t)&&q.push(t)})(t),i=j(),s?s.innerHTML=i.join(""):(s=document.createElement("div"),s.innerHTML=``,e.insertBefore(s.firstChild,e.firstChild))},R=t=>!!o(t)&&t.replace(/(^\s+)|(\s+$)/g,""),U=e=>{return!(!i(e)||!(h(e)||(e=>!(!i(e)||"[object NodeList]"!==t(e)))(e)||(s=e,i(s)&&"[object DocumentFragment]"===t(s))||(e=>!(!i(e)||!("[object Text]"===t(e)||e.tagName&&3===e.nodeType)))(e)));var s},B=(t,e,s)=>{let i=t.tagName.toLowerCase();switch(e){case"style":t.style.cssText=s;break;case"value":"input"===i||"textarea"===i?t.value=s:t.setAttribute(e,s);break;case"htmlFor":t.setAttribute("for",s);break;case"className":t.className=s;break;case"innerHTML":t.innerHTML=s;break;case"innerText":t.innerText=s;break;default:t.setAttribute(e,s)}},P=(t,e)=>{if(!t||!i(e))return!1;Object.keys(e).forEach((s=>{const i=e[s];p(e,s)&&B(t,s,i)}))},V=(t,e,s)=>{const n=document.createDocumentFragment(),l=document.createElement(t),h=t=>U(t)||o(t),a=t=>{let e;if(!h(t))return!1;U(t)?e=t:o(t)&&(e=document.createTextNode(t)),n.appendChild(e)};return i(e)?P(l,e):r(e)&&e.every((t=>h(t)))?e.forEach((t=>{a(t)})):U(e)?a(e):o(e)&&a(document.createTextNode(e)),r(s)?s.forEach((t=>{a(t)})):a(s),l.appendChild(n),l},W=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s="outline-icon",i=e.size||0,n=e.color||"",l=e.iconSet||"",h=r(i)?i[0]:i,a=r(i)?i[1]:i,c=i?`width:${h}px;height:${a}px;`:"",d=n?c+`color:${n}`:c,u=e.attrs||{},m=document.createElement("i");let p,g="",f="";return o(t)?((t=>{const e=new RegExp("^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<\\!doctype svg[^>]*\\s*(?:\\[?(?:\\s*]*>\\s*)*\\]?)*[^>]*>\\s*)?]*>[^]*<\\/svg>\\s*$\\s*$","i");return o(t)&&e.test(t)})(t)?f=t:(g=l&&"icon"!==l?`xlink:href="#${l}-icon-${t}"`:`xlink:href="#icon-${t}"`,f=``),m.innerHTML=f,u.className?u.className=`${s} ${u.className}`:u.className=s,P(m,u),p=m.querySelector("svg"),P(p,{"aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",class:"outline-icon__svg",width:200,height:200,style:d}),m):null},Q=function(t){return W(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},J=(t,e)=>{var s;let i,r=t.className;if(!r||!a(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.remove?i.remove(e):(r=R(r.replace(e,"")),t.className=r)},Y=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const i="outline-heading",r=t.innerHTML;let n;if(t.innerHTML=r.replace(/^\d+(\.?\d+)*\s?/gi,""),t.removeAttribute("id"),t.removeAttribute("data-id"),J(t,i),!e)return!1;var l;n=t.querySelector(`.${i}__anchor`),s&&J(t,`${i}_start`),l=R(t.className),o(l)&&""===l&&t.removeAttribute("class"),n&&t.removeChild(n)},G=function(t){let s=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=1,l=0,h="";const a=[];return t.forEach(((t,s)=>{const r=t.tagName,c=r.replace(/h/i,"");let d=parseInt(c,10),u=-1;var m;d>n?(l+=1,u=1===l?-1:s-1):d===n||dl?1===d?(l=1,u=-1):u=a[s-1].pid:d<=l&&(1===d?l=1:(l-=n-d,l<=1&&(l=1)),u=1===l?-1:((t,e,s)=>{let i,r,n=t[s-1];for(r=0;r]+(>|$)/g,""):"",e(i)&&(h=i(h)),a.push({id:s,pid:u,level:l,rel:`heading-${s}`,text:h,tagName:r})})),s?(t=>{const e={};return t.forEach((t=>{const s=JSON.stringify((t=>[t.pid])(t));e[s]=e[s]||[],e[s].push(t),t.index=e[s].length,-1===t.pid&&(t.code=String(t.index))})),Object.keys(e).forEach((t=>{e[t].forEach((t=>{const s=e[`[${t.id}]`];if(!s||!r(s))return!1;s.forEach((e=>{e.code=t.code+"."+e.index}))}))})),t})(a):a};class K extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(K.DEFAULTS),this.$articleElement=null,this.$scrollElement=null,this.$headings=[],this.chapters=[],this}initialize(t){const s=this.attr("showCode")||!0;let i,r,n,l,a;return this.attr(t),a=this.attr("articleElement"),r=this.attr("scrollElement"),n=this.attr("selector"),i=this.attr("created"),o(a)?l=document.querySelector(a):h(a)&&(l=a),l?(this.$articleElement=l,this.$scrollElement=u(r),this.$headings=[...l.querySelectorAll(n)],this.$headings.length<1||(this.chapters=G(this.$headings,s,this.attr("chapterTextFilter")),e(i)&&i.call(this),this.render().addListeners()),this):this}getChapters(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=this.chapters;return t?l(e,"id","pid"):e}count(){return this.chapters.length}render(){const t=this.attr("mounted");return I(),this._paint(this.chapters),e(t)&&t.call(this),this}erase(){return this._remove(),this}_paint(t){const e=400,s=this.attr("hasAnchor"),i=this.attr("isAtStart"),r=this.attr("showCode"),n=this.attr("anchorURL"),l=this.count(),o=[...this.$headings],h=(l,o)=>{l.forEach(((l,h)=>{const a=h+o*e,c=t[a].code;((t,e,s)=>{const i="outline-heading",r=s.hasAnchor||!0,n=s.isAtStart||!0,l=s.showCode||!1,o=s.chapterCode||"",h=s.anchorURL||"",a=`heading-${e}`,c={id:a,className:n?`${i} ${i}_start`:i,"data-id":e},d=R(t.innerHTML);let u,m;if(l&&(c.innerHTML=o+" "+d),P(t,c),!r)return!1;m=Q("hash",{iconSet:"outline"}),u=V("a",{id:`anchor-${e}`,className:`${i}__anchor anchor-${e}`,href:h||`#${a}`,target:h?"_blank":"self","data-id":e},m),t.appendChild(u)})(l,a,{hasAnchor:s,isAtStart:i,showCode:r,chapterCode:c,anchorURL:n})}))};let a=-1;if(l>e)for(a+=1,h(o.splice(0,e),0);o.length>0;){const t=o.splice(0,e);z((()=>{h(t,a+=1)}),(()=>{this.$emit("anchors:all:paint")}))}else h(o,0);return this}_remove(){const t=this.attr("hasAnchor"),e=this.attr("isAtStart");return this.$headings.forEach((s=>{Y(s,t,e)})),this}refresh(t){const e=this.$articleElement,s=this.attr("selector");return this.$headings=[...e.querySelectorAll(s)],this.chapters=t,this.erase()._paint(t),this}scrollTo(t,e){const s=this.$scrollElement;return m(s,t,e),this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}onAnchorTrigger(t){const i=this.attr("anchorURL"),r=this.attr("afterScroll"),n=this.attr("stickyHeight"),l=t.delegateTarget.parentNode,o=S(l)-(n+10),h=this.$scrollElement,a=h.scrollHeight-h.clientHeight;return this.scrollTo(o,(()=>{e(r)&&r.call(this,"anchor"),s((()=>{this.$emit("toolbar:update",{top:o,min:0,max:a})}))})),i||F(t),this}addListeners(){const t=this.$articleElement;return this.count()<1||D(t,".outline-heading__anchor","click",this.onAnchorTrigger,this,!0),this}removeListeners(){const t=this.$articleElement;return this.count()<1||O(t,"click",this.onAnchorTrigger),this}}K.DEFAULTS=n({scrollElement:"html,body",articleElement:"#article",selector:"h1,h2,h3,h4,h5,h6",stickyHeight:0,anchorURL:"",hasAnchor:!0,isAtStart:!0,showCode:!1,created:null,mounted:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,chapterTextFilter:null});const X=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],Z=t=>{let e,s,i;return!!o(t)&&(e=R(t).slice(0,1e3),s=/\s*|]*>|]*>|]+>/i,i=new RegExp(X.map((t=>`<${t}\\b[^>]*>`)).join("|"),"i"),s.test(e)||i.test(e))},tt=t=>t.replace(/]*>.*?<\/script>/gi,""),et=(t,e)=>{document.documentElement.style.setProperty(t,e)};let st=2e3;const it=t=>(t?st=t:st+=1,et("--outline-zIndex",`${st}`),st);class rt extends T{constructor(t){super(),this._default(),this.zIndex=0,t&&this.initialize(t)}_default(){return this.attrs=n(rt.DEFAULTS),this.title="",this.closed=!1,this.$el=null,this.$modal=null,this.$header=null,this.$title=null,this.$close=null,this.$main=null,this.$footer=null,this.$overlay=null,this}initialize(t){let s;return this.attr(t),this.title=this.attr("title"),s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}setTitle(t){return this.attr("title",t),this.title=t,this.$title.innerHTML=t,this}isClosed(){return this.closed}render(){const t=this.attr("mounted"),s=this.attr("size"),i=this.attr("placement"),r=this.attr("hasClose"),n=this.attr("hasOverlay"),l=this.attr("hasOffset"),o=this.attr("hasPadding"),h=this.attr("autoHeight"),a=this.attr("customClass");let d,u,m,p,g,f,b,y;return I(),this.zIndex=it(),p=V("h2",{className:"outline-drawer__title"},this.title),this.$title=p,r&&(g=V("div",{className:"outline-drawer__close"},Q("close",{iconSet:"outline",size:20})),this.$close=g),m=V("header",{className:"outline-drawer__header"},[p,g]),this.$header=m,f=V("div",{className:"outline-drawer__main"}),this.$main=f,o||c(f,"outline-drawer_full"),b=V("footer",{className:"outline-drawer__footer"}),this.$footer=b,u=V("div",{className:`outline-drawer__modal outline-drawer_${i} outline-drawer_${s} outline-drawer_closed`},[m,f,b]),this.$modal=u,l&&c(u,"outline-drawer_offset"),h&&c(u,"outline-drawer_auto"),a&&c(u,a),n&&(y=V("div",{className:"outline-drawer__overlay"}),this.$overlay=y),d=V("div",{className:"outline-drawer"},[u,y]),this.$el=d,document.body.appendChild(d),e(t)&&t.call(this),this}erase(){return this.$main.innerHTML="",this}_paint(t){let s=null;return e(t)?s=t():U(t)?s=t:Z(t)&&(s=((t,e)=>{const s=document.createDocumentFragment();if(!t||!Z(t)&&!o(t)&&!h(t))return null;if(Z(t)){const e=V("div");let i=[];return e.innerHTML=tt(t),i=[...e.childNodes],i.forEach((t=>{s.appendChild(t)})),s}if(!o(e))return t.innerHTML;t.innerHTML=tt(e)})(t)),s&&this.$main.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.erase()._paint(t),this}open(){const t=this.attr("afterOpened"),i=this.$modal;return c(this.$el,"outline-drawer_opened"),J(i,"outline-drawer_closed"),c(i,"outline-drawer_opened"),s((()=>{this.closed=!1,e(t)&&t.call(this)})),this}close(){const t=this.attr("afterClosed"),i=this.$modal;return J(i,"outline-drawer_opened"),c(i,"outline-drawer_closed"),s((()=>{J(this.$el,"outline-drawer_opened"),this.closed=!0,e(t)&&t.call(this)})),this}toggle(){const t=this.attr("afterToggle"),i=this.isClosed();return i?this.open():this.close(),e(t)&&s((()=>{t.call(this,i)})),this}destroy(){const t=this.attr("afterDestroy"),s=this.attr("beforeDestroy");let i=this.zIndex;return e(s)&&s.call(this),this.removeListeners()._remove()._default(),i-=1,it(i),this.zIndex=0,e(t)&&t.call(this),this}onClose(){return this.close(),this}addListeners(){const t=this.attr("hasClose"),e=this.attr("hasOverlay"),s=this.attr("closeOnClickModal"),i=this.$el;return t&&D(i,".outline-drawer__close","click",this.onClose,this,!0),e&&s&&D(i,".outline-drawer__overlay","click",this.onClose,this,!0),this}removeListeners(){const t=this.attr("hasClose"),e=this.attr("hasOverlay"),s=this.$el;return t||e?(O(s,"click",this.onClose),this):this}}rt.DEFAULTS=n({placement:"rtl",title:"标题",size:"regular",hasClose:!0,hasOverlay:!0,hasOffset:!1,hasPadding:!0,autoHeight:!0,closeOnClickModal:!0,created:null,mounted:null,afterClosed:null,afterOpened:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,afterToggle:null});const nt=function(t,s,i,r,n){let l=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const o=A.indexOf(s)>-1,h=function(e){let o=n||t;!0===n&&(o=r),!0===l&&O(t,s,h),i.call(o,e,r)};if(!e(i))return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,type:s,fn:h,data:r,context:n,capture:o}),i._delegateListener=h,t.addEventListener(s,h,o)},lt=(t,e)=>getComputedStyle(t)[e];class ot extends T{constructor(t){super(),this._default(),this.scrollTimer=null,this.resizeTimer=null,this.observerTimer=null,this.Observer=null,t&&this.initialize(t)}_default(){return this.attrs=n(ot.DEFAULTS),this.$el=null,this.$title=null,this.$main=null,this.$list=null,this.$placeholder=null,this.$parentElement=null,this.$scrollElement=null,this.$active=null,this.chapters=[],this.active=0,this.offsetWidth=0,this.offsetTop=0,this.playing=!1,this.closed=!1,this}initialize(t){let s,i,r,n;return this.attr(t),s=this.attr("created"),i=this.attr("parentElement"),r=this.attr("scrollElement"),o(i)?n=document.querySelector(i):h(i)&&(n=i),this.$parentElement=n,this.$scrollElement=u(r),this.chapters=this.attr("chapters"),this.closed=this.attr("closed"),this.active=this.attr("active"),e(s)&&s.call(this),this.chapters.length<1||(this.render().addListeners(),this.$active=document.querySelector(`#chapter-${this.active}`)),this}isClosed(){return this.closed}isSticky(){return"sticky"===this.attr("position")}isFixed(){return"fixed"===this.attr("position")}isInside(){return this.isFixed()||this.isSticky()}isOutside(){return!this.isInside()}count(){return this.chapters.length}_paintEdge(){const t=document.createDocumentFragment(),e=this.attr("title"),s=this.attr("animationCurrent"),i=this.attr("customClass"),r=this.$parentElement,n=[],l=[];let o,h,a,d,u=null;return r?(this.isInside()&&e&&(u=V("h2",{className:"outline-chapters__title"},e),this.$title=u,l.push(u)),a=V("ul",{className:"outline-chapters__list"}),this.$list=a,n.push(a),s&&(d=V("div",{className:"outline-chapters__placeholder"}),this.$placeholder=d,n.push(d)),h=V("div",{className:"outline-chapters__main"},n),this.$main=h,l.push(h),o=V("nav",{id:"outline-chapters",className:"outline-chapters outline-chapters_hidden"},l),this.$el=o,this.isSticky()&&(this.calculateStickyHeight(),c(o,"outline-chapters_sticky")),i&&c(o,i),t.appendChild(o),r.appendChild(t),this):this}render(){const t=this.attr("mounted"),i=this.$parentElement,r=this.chapters,n=this.count();let l;return!i||r.length<1||(this.isInside()&&c(i,"outline-chapters-parent"),this._paintEdge(),l=this.$el,this._paint(r),s((()=>{this.highlight(this.active)}),60),this.offsetTop=S(l),this.offsetWidth=l.offsetWidth,this.isFixed()&&(this.sticky(),et("--outline-chapters-width",`${this.offsetWidth}px`)),e(t)&&t.call(this),n<400&&this.onObserver()),this}erase(){return this.$list.innerHTML="",this}_paint(t){const e=this.attr("showCode"),s=this.$el;return function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=e.length,r=[...e],n=e=>{const i=e=>t.querySelector(`#${e}`);e.forEach((e=>{const r=e.pid,n=e.id,l=e.rel,o=[],h=V("span",{className:"outline-chapters__text"},e.text);let a,c,d,u,m;s&&(c=V("span",{className:"outline-chapters__code","data-id":n},e.code),o.push(c)),o.push(h),a=V("a",{id:`chapter__anchor-${n}`,className:"outline-chapters__anchor",href:"#"+l,rel:l,"data-id":n},o),d=V("li",{id:`chapter-${n}`,className:"outline-chapters__item","data-id":n},a),-1===r?t.appendChild(d):(m=i(`chapter-${r}`),u=i(`subject-${r}`),u?u.appendChild(d):(u=V("ul",{id:"subject-"+r,className:"outline-chapters__subject"},d),m.appendChild(u)))}))};if(i>400)for(n(r.splice(0,400));r.length>0;){const t=r.splice(0,400);z((()=>{n(t)}))}else n(r)}(this.$list,t,e),J(s,"outline-chapters_hidden"),this}_remove(){return this.$parentElement.removeChild(this.$el),this}refresh(t){const e=this.$el;return J(e,"outline-chapters_hidden"),this.erase()._paint(t),this}_getPlaceholderOffset(t){const e=this.$main,s=this.$list,i=s.querySelector(".outline-chapters__anchor"),r=this.attr("animationCurrent"),n=parseInt(lt(e,"padding-top"),10),l=parseInt(lt(e,"border-top-width"),10),o=parseInt(lt(s,"padding-top"),10),h=parseInt(lt(s,"margin-top"),10),a=parseInt(lt(s,"border-top-width"),10);let c,d=i.offsetHeight,u=0;return r?(n&&(u+=n),o&&(u+=o),h&&(u+=h),l&&(u+=l),a&&(u+=a),c=d*t,u+c):this}positionPlaceholder(t){const e=this.$list,s=this.$placeholder,i=e.querySelector(".outline-chapters__anchor"),r=this.attr("animationCurrent"),n=i.offsetHeight;let l=0;return r?(l=this._getPlaceholderOffset(t),s.style.cssText=`transform: translateY(${l}px);height:${n}px;`,this):this}highlight(t){const e=this.$el,i=this.attr("animationCurrent"),r="outline-chapters_active",n="outline-chapters_highlight";let l=null,o=0;return e?(l=e.querySelector(`#chapter__anchor-${t}`),l?(this.active=parseInt(l.getAttribute("data-id"),10),this.$active&&(J(this.$active,n),J(this.$active,r)),this.$active=l,c(this.$active,r),i?(this.positionPlaceholder(this.active),s((()=>{((t,e)=>{let s,i;return!(!h(t)||!h(e))&&(s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),i.top>=s.top&&i.right<=s.right&&i.bottom<=s.bottom&&i.left>=s.left)})(this.$active,this.$parentElement)||(o=this._getPlaceholderOffset(this.active),m(this.$main,o))}))):c(this.$active,n),this):this):this}sticky(){const t=this.attr("afterSticky"),s="outline-chapters_fixed",i=this.$el,r=this.offsetTop,n=this.$scrollElement.scrollTop;let l;return this.isFixed()?(l=n>=r,l?c(i,s):J(i,s),e(t)&&t.call(this,this.isClosed(),l),this):this}calculateStickyHeight(){const t=document.documentElement,e=Math.max(t.clientHeight||0,window.innerHeight||0);return et("--outline-sticky-height",`${e}px`),this}scrollTo(t,e){const s=this.$scrollElement;return m(s,t,e),this}show(){const t="outline-chapters_hidden",i=this.attr("afterOpened"),r=this.count(),n=this.$el,l=this.$parentElement;return this.isInside()?r>800?J(l,t):(J(l,t),s((()=>{J(l,"outline-chapters_folded")}),30)):J(n,t),this.closed=!1,e(i)&&i.call(this),this}hide(){const t="outline-chapters_hidden",i=this.attr("afterClosed"),r=this.count(),n=this.$el,l=this.$parentElement;return this.isInside()?r>800?c(l,t):(c(l,"outline-chapters_folded"),s((()=>{c(l,t)}))):c(n,t),this.closed=!0,e(i)&&i.call(this),this}toggle(){const t=this.attr("afterToggle"),i=this.offsetTop,r=this.$scrollElement.scrollTop;let n;return this.isClosed()?this.show():this.hide(),e(t)&&s((()=>{n=r>=i,t.call(this,this.isClosed(),n)})),this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.removeListeners()._remove()._default(),this.scrollTimer&&(clearTimeout(this.scrollTimer),this.scrollTimer=null),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null),this.observerTimer&&(clearTimeout(this.observerTimer),this.observerTimer=null),this.Observer&&(this.Observer=null),e(s)&&s.call(this),this}onObserver(){const t=this.attr("selector");return this.Observer=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=s.root||null,r=s.selector||".outline-heading",n=s.context||null,l={rootMargin:s.rootMargin||"0px 0px -90% 0px"},o=new IntersectionObserver((s=>{s.forEach((s=>{s.intersectionRatio>0&&e(t)&&t.call(n||s.target,s.target)}))}),l),a=h(i)?i:document;return i&&(l.root=i),a.querySelectorAll(r).forEach((t=>{o.observe(t)})),o}((t=>{const e=t.getAttribute("data-id");if(this.playing)return!1;this.observerTimer&&clearTimeout(this.observerTimer),this.observerTimer=s((()=>{this.highlight(e)}),100)}),{selector:t,context:this}),this}onSelect(t){const i=this.attr("stickyHeight"),r=t.delegateTarget,n=r.getAttribute("data-id"),l=r.href.split("#")[1],o=document.querySelector(`#${l}`),h=S(o)-(i+10),a=this.$scrollElement.scrollHeight,c=this.attr("afterScroll"),d=()=>{e(c)&&c.call(this,"chapter"),s((()=>{this.playing=!1,this.$emit("toolbar:update",{top:h,min:0,max:a})}))};return this.playing=!0,this.isFixed()?(this.sticky(),s((()=>{this.scrollTo(h,d),this.highlight(n)}),10)):(this.scrollTo(h,d),this.highlight(n)),F(t),this}onScroll(){const t=this.$scrollElement;return this.scrollTimer&&clearTimeout(this.scrollTimer),this.scrollTimer=s((()=>{const e=t.scrollTop,s=t.scrollHeight-t.clientHeight;this.isFixed()&&this.sticky(),this.$emit("toolbar:update",{top:e,min:0,max:s})}),100),this}onResize(){return this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=s((()=>{this.calculateStickyHeight()})),this}addListeners(){const t=this.$el,e=this.$scrollElement,s=e.tagName.toLowerCase();let i=e;return this.count()<1||("html"!==s&&"body"!==s||(i=window),D(t,".outline-chapters__anchor","click",this.onSelect,this,!0),nt(i,"scroll",this.onScroll,this,!0),this.isSticky()&&nt(window,"resize",this.onResize,this,!0),this.$on("anchors:all:paint",this.onObserver,this)),this}removeListeners(){const t=this.attr("selector"),e=this.$el,s=this.$scrollElement,i=s.tagName.toLowerCase();let r=s;return this.count()<1||("html"!==i&&"body"!==i||(r=window),O(e,"click",this.onSelect),O(r,"scroll",this.onScroll),this.isSticky()&&O(window,"resize",this.onResize),this.$off("anchors:all:paint"),this.Observer&&document.querySelectorAll(t).forEach((t=>{this.Observer.unobserve(t)}))),this}}ot.DEFAULTS=n({parentElement:"",scrollElement:"",selector:".outline-heading",active:0,closed:!1,showCode:!0,animationCurrent:!0,position:"relative",stickyHeight:0,chapters:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,afterSticky:null});const ht=t=>{const e=Object.getPrototypeOf;let s;if(!(t=>i(t)&&null!==t)(t))return!1;if(s=t.prototype,!s)return!0;for(s=t;null!==e(s);)s=e(s);return e(t)===s},at=t=>{const e={"&":"&","<":"<",">":">","'":"'",'"':"""};return t.replace(/[&<>'"]/g,(t=>e[t]||t))},ct=[];let dt;I();class ut extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(ut.DEFAULTS),this.$el=null,this.id="",this.closed=!1,this.visible=!1,this.offset=-50,this.timer=null,this.destroyed=!1,this}initialize(t){return this.attr(t),this.id=this.attr("id"),this.offset=this.attr("offset")||-50,this.$emit("created",{...this.attr()}),this.render().addListeners(),this.attr("visible")&&this.open(),this}isClosed(){return this.closed}isDestroyed(){return this.destroyed}_getClassName(){const t=this.attr("type"),e=this.attr("effect"),s=this.attr("round"),i=this.attr("closable"),r=this.attr("visible"),n=this.attr("customClass"),l=["outline-message",`outline-message_${t}`,`outline-message_${e}`];return s&&l.push("outline-message_round"),i||l.push("outline-message_full-width"),r&&l.push("outline-message_visible"),n&&l.push(n),l}render(){const t=this.attr("type"),e=this.attr("message"),s=this.attr("effect"),i=this.attr("round"),r=this.attr("closable"),n=this.attr("dangerouslyUseHTMLString"),l=this._getClassName(),o=[];let h,a,d,u,m,p=20;return i&&"default"===s&&(p=12),"plain"!==s&&(h=Q("light"===s?`circle-${t}`:t,{iconSet:"outline",size:p}),c(h,"outline-message__icon"),o.push(h)),n?(d=document.createDocumentFragment(),d.innerHTML=e):d=document.createTextNode(at(tt(e))),a=V("p",{className:"outline-message__content"},[d]),o.push(a),r&&(u=Q("close",{iconSet:"outline",size:18}),c(u,"outline-message__close"),o.push(u)),m=V("div",{className:l.join(" ")},o),m.style.cssText="top:-50px;",this.$el=m,document.body.appendChild(this.$el),this.$emit("mounted"),this}_refreshIcon(){const t=".outline-message_hidden",e=this.$el;let s,i,r,n,l,o,h,a=20;return this.isDestroyed()?this:(l=e.querySelector(".outline-icon"),l?(s=this.attr("type"),i=this.attr("effect"),r=this.attr("round"),"plain"===i?c(l,t):(J(l,t),r&&"default"===i&&(a=12)),o=l.querySelector(".outline-icon__svg"),P(o,{style:`width:${a}px;height:${a}px;`}),h=o.querySelector("use"),n="light"===i?`circle-${s}`:s,B(h,"xlink:href",`#outline-icon-${n}`),this):this)}_refreshMessage(){const t=this.$el;let e,s,i,r;return this.isDestroyed()||(e=t.querySelector(".outline-message__content"),s=this.attr("dangerouslyUseHTMLString"),i=this.attr("message"),r=s?i:at(tt(i)),e.innerHTML=r),this}_refreshClose(){const t=".outline-message_hidden",e=this.$el;let s,i;return this.isDestroyed()||(s=e.querySelector(".outline-message__close"),i=this.attr("closable"),s&&(i?c(s,t):J(s,t))),this}_refreshEl(){const t=this.$el;let e;return this.isDestroyed()||(e=this._getClassName(),B(t,"className",e.join(" "))),this}refresh(t){return ht(t)?(this.attr(t)._refreshIcon()._refreshMessage()._refreshClose()._refreshEl(),this):this}clearTimer(){return this.isDestroyed()||this.timer&&(clearTimeout(this.timer),this.timer=null),this}startTimer(t){return this.isDestroyed()||(this.timer=s((()=>{this.$emit("opened"),this.close()}),1e3*t)),this}open(t){const e=this.$el;let i,r,n,l;return this.isDestroyed()||(this.isClosed()&&this.refresh(t),i=this.attr("offset"),r=this.attr("duration"),n=i&&i>=this.offset?i:this.offset,l=`top:${n}px;`,this.clearTimer(),this.$emit("beforeOpen"),s((()=>{this.visible=!0,c(e,"outline-message_visible"),e.style.cssText=l,r>0&&this.startTimer(r)}),100)),this}close(){const t=this.$el;let i,r;return this.isDestroyed()||(i=this.attr("destroyAfterClosed"),r=this.attr("beforeClose"),e(r)&&r.call(this),t.style.cssText="top:-50px;",J(t,"outline-message_visible"),this.visible=!1,this.closed=!0,s((()=>{this.$emit("closed"),i&&this.destroy()}),500)),this}destroy(){return this.$emit("beforeDestroy"),this.isDestroyed()||(this.removeListeners(),document.body.removeChild(this.$el),clearTimeout(this.timer),this._default(),this.$emit("afterDestroy")),this}onMouseEnter(){return this.clearTimer(),this}onMouseLeave(){const t=this.attr("duration"),e=this.attr("delay");return t<=0||this.startTimer(e),this}onClose(){return this.clearTimer(),this.close(),this}addListeners(){const t=this.$el;return D(t,".outline-message__content","mouseenter",this.onMouseEnter,this,!0),D(t,".outline-message__content","mouseleave",this.onMouseLeave,this,!0),D(t,".outline-message__close","click",this.onClose,this,!0),this}removeListeners(){const t=this.$el;return O(t,"mouseenter",this.onMouseEnter),O(t,"mouseleave",this.onMouseLeave),O(t,"click",this.onClose),this}}ut.DEFAULTS=n({id:"",type:"info",effect:"default",round:!1,offset:30,duration:3,delay:2,message:"",customClass:"",closable:!0,visible:!0,dangerouslyUseHTMLString:!1,destroyAfterClosed:!0,beforeClose:null}),["info","success","warning","error"].forEach((t=>{ut[t]=e=>{const s={},i=v("outline-message-"),r=e.beforeClose||null;let n=e.offset||30;return o(e)?s.message=e:ht(e)&&g(s,e),s.id=i,s.type=t,s.offset=n,s.visible=!1,s.beforeClose=()=>{ut.close(i,r)},dt=new ut(s),ct.forEach((t=>{n+=t.$el.offsetHeight+16})),dt.offset=n,dt.open(),ct.push(dt),dt}})),ut.close=(t,s)=>{const i=ct.length;let r,n,l=-1;if(ct.forEach(((i,r)=>{t===i.id&&(n=i.$el.offsetHeight,l=r,e(s)&&s.call(i),ct.splice(r,1))})),i<=1||-1===l||l>ct.length-1)return!1;for(r=l;r{let t=ct.length-1;for(;t>=0;t-=1)ct[t].close()};class mt{constructor(t,s){this.name=t,e(s)&&(this.action=s)}execute(){return this.action(),this}}class pt{constructor(){this.commands=[]}get(t){return this.commands.find((e=>e.name===t))}add(t){return this.commands.push(t),this}del(t){const e=this.commands,s=e.find((e=>e.name===t)),i=s?e.indexOf(s):-1;return i>-1&&e.splice(i,1),this}clear(){return this.commands=[],this}execute(t){const s=this.commands.find((e=>e.name===t));return e(null==s?void 0:s.execute)&&s.execute(),this}}const gt=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const s=Q(t.icon,{iconSet:t.iconSet||"outline",color:t.color||"",size:t.size}),i=V("a",{className:"outline-toolbar__anchor",href:t.link},s),r=V("div",{className:`outline-toolbar__button ${t.name}`,"data-cmd":t.name},[t.link?i:s]);return c(s,"outline-toolbar__icon"),e&&c(r,"outline-toolbar_rounded"),t.disabled&&c(r,"outline-toolbar_disabled"),r},ft="outline-toolbar_disabled",bt="outline-toolbar_hidden";class yt extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(yt.DEFAULTS),this.disabled=!1,this.closed=!1,this.$el=null,this.buttons=[],this.commands=null,this}initialize(t){let s;return this.attr(t),this.disabled=this.attr("disabled"),this.closed=this.attr("closed"),this.commands=new pt,s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}isDisabled(t){let e;return t?(e=this.get(t),e.disabled):this.disabled}isExist(t){return!!this.get(t)}isClosed(){return this.closed}_getCommand(t){const s=this,{action:i,name:r}=t;let n,l,h=null,a=null;return i?(a=i.handler,n=i.context||this,e(a)?l=a:o(a)&&(l=function(){s.$emit(a,r)}),e(l)&&(h=new mt(r,l.bind(n))),h):h}get(t){return this.buttons.find((e=>e.name===t))}render(){const t=this.attr("mounted"),s=this.attr("buttons")||[],i=this.attr("placement");return I(),this.$el=V("div",{id:v("outline-toolbar"),className:`outline-toolbar outline-toolbar_${i}`}),this._paint(s),document.body.appendChild(this.$el),this.closed&&this.hide(),this.disabled&&this.disable(),e(t)&&t.call(this),this}erase(){return this.$el.innerHTML="",this}_paint(t){const e=this.attr("rounded"),s=document.createDocumentFragment();return t.forEach((t=>{const i=gt(t,e),r=this._getCommand(t),{name:n,disabled:l,context:o}=t;s.appendChild(i),this.isExist(n)||(this.buttons.push({$el:i,name:n,disabled:l||!1,context:o||this}),r&&this.commands.add(r))})),this.$el.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.attr({buttons:t}),this.erase()._paint(t),this}add(t){const e=this.$el,s=document.createDocumentFragment(),n=this.attr("buttons")||[],{name:l,disabled:o,context:h}=t,a=this._getCommand(t),c=t=>{const e=gt(t);s.appendChild(e),n.push(t),this.buttons.push({$el:e,name:l,disabled:o||!1,context:h||this,command:a}),a&&this.commands.add(a)};return i(t)?c(t):r(t)&&t.forEach((t=>{i(t)&&c(t)})),e.appendChild(s),this}remove(t){const e=this.$el,s=this.buttons,i=this.get(t);let r=-1;return i?(r=s.indexOf(i),r>-1&&(s.splice(r,1),this.attrs("buttons").splice(r,1)),this._disable(t),e.removeChild(i.$el),this):this}_disable(t){const e=this.get(t),s=this.commands.get(t);return!e||e.disabled||(e.disabled=!0,s&&this.commands.del(s),c(e.$el,ft)),this}_enable(t){const e=this.get(t),s=this.commands.get(t);return e&&e.disabled?(e.disabled=!1,s&&this.commands.add(s),J(e.$el,ft),this):this}disable(t){const s=this.attr("afterDisabled");return t?this._disable(t):(c(this.$el,ft),this.removeListeners(),this.disabled=!0,e(s)&&s.call(this)),this}enable(t){const s=this.attr("afterEnabled");return t?this._enable(t):(this.disabled=!1,J(this.$el,ft),this.addListeners(),e(s)&&s.call(this)),this}show(t){const i=this.attr("afterOpened"),r=this.get(t),n=this.$el;if(t){if(!r)return this;J(r.$el,bt)}else J(n,bt),this.closed=!1,e(i)&&s((()=>{i.call(this)}),310);return this}hide(t){const i=this.attr("afterClosed"),r=this.get(t),n=this.$el;if(t){if(!r)return this;c(r.$el,bt)}else c(n,bt),this.closed=!0,e(i)&&s((()=>{i.call(this)}),310);return this}toggle(){return this.isClosed()?this.show():this.hide(),this}highlight(t){const e=this.get(t),s="outline-toolbar_active";let i;return e?(i=e.$el,a(i,s)?J(i,s):c(i,s),this):this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.commands.clear(),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}execute(t){return this.isDisabled(t)||this.commands.execute(t),this}onExecute(t){const e=t.delegateTarget;let s="";return e&&(s=e.getAttribute("data-cmd"),s&&this.execute(s)),this}addListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||D(e,".outline-toolbar__button","click",this.onExecute,this,!0),this}removeListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||O(e,".outline-toolbar__button",this.onExecute),this}}yt.DEFAULTS=n({placement:"ltr",closed:!1,disabled:!1,rounded:!0,buttons:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterDisabled:null,afterEnabled:null,beforeDestroy:null,afterDestroy:null});const $t=(t,e)=>{let s,i=t;for(;i;)s=i.tagName.toLowerCase(),"script"!==s&&"style"!==s&&c(i,"outline-reader_sibling"),i=e?i.previousElementSibling:i.nextElementSibling},vt="进入阅读模式,按 ESC 键可退出阅读模式";class _t extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(_t.DEFAULTS),this.reading=!1,this.$target=null,this.$paper=null,this.$title=null,this.$article=null,this.$progress=null,this.toolbar=null,this}initialize(t){let e=null;return this.attr(t),e=this.attr("target"),o(e)?this.$target=document.querySelector(e):h(e)&&(this.$target=e),this.$target?(this.render().addListeners(),this):this}render(){return this._renderEdge()._paint(this.$target),this}erase(){return this.$article.innerHTML="",this}_paint(t){const e=document.createDocumentFragment(),i=[...t.cloneNode(!0).children];return s((()=>{i.forEach((t=>{e.appendChild(t)})),this.$article.appendChild(e)})),this}_remove(){const t=this.$paper,e=this.toolbar;return t&&document.body.removeChild(t),e&&e.destroy(),this}refresh(){return this.erase()._paint(this.$target),this}_renderEdge(){const t=this.$target;let e,i,r,n,l,o=this.attr("title");return i=t.querySelector("h1"),h(o)&&(i=o),h(i)&&(o=i.innerText),i=V("h1",{className:"outline-reader__title"},o),this.$title=i,r=V("article",{id:"outline-reader__article",className:"outline-reader__article"}),this.$article=r,n=V("div",{className:"outline-reader__progress"}),this.$progress=n,this.toolbar=new yt({placement:"rtl",buttons:[{name:"exit",icon:"close",size:20,action:{context:this,handler:this.exit}}]}),e=V("section",{id:"outline-reader",className:"outline-reader outline-reader_hidden"},[n,i,r,this.toolbar.$el]),this.$paper=e,document.body.appendChild(e),s((()=>{l=e.previousElementSibling,$t(l,!0),l=e.nextElementSibling,$t(l)})),this}enter(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,r=document.querySelectorAll(".outline-reader_sibling"),n=this.attr("enterReadingTip")||vt;return this.reading||!i||(r.forEach((t=>{c(t,s)})),c(i,e),J(i,s),this.toolbar.show(),this.reading=!0,ut.info({round:!0,message:n}),this.$emit("enterReading")),this}exit(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,r=document.querySelectorAll(".outline-reader_sibling");return this.reading&&i?(c(i,s),J(i,e),r.forEach((t=>{J(t,s)})),this.toolbar.hide(),this.reading=!1,this.$emit("exitReading"),this):this}toggle(){return this.reading?this.exit():this.enter(),this}print(){return e(print)?(print(),this):this}destroy(){return this.$paper?(this.removeListeners()._remove()._default(),this):this}onPrint(){return this.print(),this}onEnterReading(){return this.toggle(),this}onExitReading(t){return 27===t.keyCode&&this.reading&&(this.toggle(),F(t)),this}addListeners(){return this.$paper?(nt(document,"keyup",this.onExitReading,this,!0),this.$on("toolbar:action:print",this.onPrint),this.$on("toolbar:action:reading",this.onEnterReading),this):this}removeListeners(){return this.$paper?(O(document,"keyup",this.onExitReading),this.$off("toolbar:action:print"),this.$off("toolbar:action:reading"),this):this}}var xt;_t.DEFAULTS=n({target:"",title:"",enterReadingTip:vt});class Tt extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){const t=Tt.DEFAULTS;return this.attrs=n(t),this.$article=null,this.$scrollElement=null,this.buttons=[],this.anchors=null,this.drawer=null,this.chapters=null,this.reader=null,this.toolbar=null,this}initialize(t){let e="",s="",i=null;return this.attr(t),e=this.attr("articleElement"),s=this.attr("scrollElement"),o(e)?i=document.querySelector(e):h(e)&&(i=e),this.$article=i,this.$scrollElement=u(s),this.$emit("created",{...this.attr()}),this.render().addListeners(),this}getChapters(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=this.$article,s=this.attr("selector"),i=this.attr("showCode")||!0,r=this.attr("chapterTextFilter");let n=[],o=[];return e?(n=[...e.querySelectorAll(s)],o=G(n,i,r),t?l(o,"id","pid"):o):o}count(){return this.getChapters().length}render(){const t=this.attr("hasToolbar"),e=this.$scrollElement;return this._renderReader()._renderAnchors()._renderChapters()._renderToolbar(),e&&t&&this._updateToolbar({top:e.scrollTop,min:0,max:e.scrollHeight}),this.$emit("mounted"),this}refresh(){const t=this.getChapters();return this.anchors.refresh(t),this.chapters.refresh(t),this.reader.refresh(),this}_renderReader(){const t=this.attr("reader");return t.target?(c(this.$article,"outline-article"),this.reader=new _t(t),this):this}_renderAnchors(){const t=this.attr("articleElement"),e=this.attr("selector"),s=this.attr("stickyHeight"),i=this.attr("scrollElement"),r=this.attr("showCode"),n=this.attr("anchorURL"),l=this.attr("afterScroll"),o=this.attr("chapterTextFilter");return this.anchors=new K({articleElement:t,stickyHeight:s,scrollElement:i,selector:e,showCode:r,anchorURL:n,afterScroll:l,chapterTextFilter:o}),this}_renderChapters(){const t=this.attr("title"),e=this.attr("stickyHeight"),s=this.attr("scrollElement"),i=this.attr("customClass"),r=this.attr("showCode"),n=this.attr("animationCurrent"),l=this.attr("closeOnClickModal"),o=this.attr("showNavModalFirst"),h=this.attr("position"),a=this.attr("placement"),c=this.attr("afterSticky"),d=this.attr("afterToggle"),u=this.attr("afterScroll"),m=this.count();let p,g=this.attr("parentElement");return m<1||(p={scrollElement:s,showCode:r,animationCurrent:n,position:h,title:t,stickyHeight:e,chapters:this.getChapters(),afterSticky:c,afterToggle:d,afterScroll:u},"relative"===h?(this.drawer=new rt({placement:a,title:t,size:"tiny",hasOffset:!0,hasPadding:!1,closeOnClickModal:l,customClass:i,afterClosed:()=>{this.toolbar.toggle()}}),g=this.drawer.$main,o&&this.drawer.open()):p.customClass=i,p.parentElement=g,this.chapters=new ot(p)),this}_renderToolbar(){const t=this.attr("position"),s=this.attr("hasToolbar"),i=this.attr("showNavModalFirst"),r=this.attr("placement"),n=this.attr("homepage"),l=this.attr("git"),o=this.attr("tags"),h=this.attr("issues"),a=this.attr("tools"),c=this.attr("reader"),d=this.count(),u={name:"up",icon:"up",size:20,action:{context:this,handler:this.toTop}},m={name:"homepage",icon:"homepage",size:20,link:n},p={name:"github",icon:"github",size:20,link:l},g={name:"tags",icon:"tags",size:20,link:o},f={name:"issues",icon:"issues",size:20,link:h},b={name:"toggle",icon:"menu",size:18,action:{context:this,handler:this.toggle}},y={name:"reading",icon:"file",size:18,action:{context:this,handler:"toolbar:action:reading"}},$={name:"print",icon:"print",size:20,action:{handler:"toolbar:action:print"}},v={name:"down",icon:"down",size:20,action:{context:this,handler:this.toBottom}},_=[];return s?(_.push(u),d>0&&_.push(b),n&&_.push(m),l&&_.push(p),o&&_.push(g),h&&_.push(f),c.target&&(_.push(y),e(print)&&_.push($)),(null==a?void 0:a.length)>0&&_.push(...a),_.push(v),this.buttons=[..._],this.toolbar=new yt({placement:r,buttons:_}),"relative"===t&&i&&this.toolbar.hide(),this):this}addButton(t){const e=this.toolbar,s=this.buttons;return s.splice(-1,0,t),e.attr({buttons:s}),e.refresh(),this}removeButton(t){return this.toolbar.remove(t),this}toTop(){const t=this.attr("afterScroll"),s=this.toolbar,i=this.chapters,r=this.count();return r>0&&(i.playing=!0),this.scrollTo(0,(()=>{s.hide("up"),s.show("down"),r>0&&(i.highlight(0),i.playing=!1),e(t)&&t.call(s,"up")})),this}_updateToolbar(t){let{top:e,min:s,max:i}=t;const r=this.toolbar,n=Math.ceil(e);return n<=s?(r.hide("up"),r.show("down")):n>=i?(r.hide("down"),r.show("up")):n>s&&n0&&(r.playing=!0),this.scrollTo(l,(()=>{i.hide("down"),i.show("up"),n>0&&(r.highlight(n-1),r.playing=!1),e(t)&&t.call(i,"bottom")})),this}scrollTo(t,e){return m(this.$scrollElement,t,e),this}enterReading(){const t=this.reader;return!t||t.reading||(this.toolbar.toggle(),t.enter()),this}exitReading(){const t=this.reader;return t&&t.reading?(this.toolbar.toggle(),t.exit(),this):this}switchReading(){const t=this.reader;return t?(t.toggle(),this):this}toggle(){const t=this.attr("position"),e=this.toolbar,i=this.drawer,r=this.chapters;return this.count()<1||("relative"!==t?(r.toggle(),e.highlight("toggle")):(e.toggle(),s((()=>{i.toggle()})))),this}print(){return this.reader.print(),this}_destroy(){const t=this.count();let e=this.anchors,s=this.chapters,i=this.drawer,r=this.reader,n=this.toolbar,l=!1;return this.removeListeners(),r&&r.destroy(),t>0&&s&&(l=s.isOutside(),s.destroy(),l&&i&&i.destroy()),e&&e.destroy(),n&&n.destroy(),this}destroy(){return this.$emit("beforeDestroy"),this._destroy()._default(),this.$emit("destroyed"),this}onToolbarUpdate(t){let{top:e,min:s,max:i}=t;return this._updateToolbar({top:e,min:s,max:i}),this}addListeners(){return this.attr("hasToolbar")?(this.$on("toolbar:update",this.onToolbarUpdate),this):this}removeListeners(){return this.attr("hasToolbar")?(this.$off("toolbar:update"),this):this}}if(Tt.DEFAULTS=n({articleElement:"#article",selector:"h2,h3,h4,h5,h6",parentElement:"#aside",scrollElement:"html,body",title:"目录",position:"relative",placement:"rtl",animationCurrent:!0,showCode:!0,hasToolbar:!0,closeOnClickModal:!0,showNavModalFirst:!1,anchorURL:"",stickyHeight:0,homepage:"",git:"",tags:"",issues:"",tools:[],reader:{target:"",title:"",enterReadingTip:"进入阅读模式,按 ESC 键可退出阅读模式"},customClass:"",afterSticky:null,afterToggle:null,afterScroll:null,chapterTextFilter:null}),null!==(xt=window)&&void 0!==xt&&xt.jQuery){const t=window.jQuery;t.extend(t.fn,{outline:function(e){let s=t(this);return new Tt(t.extend({},e,{articleElement:s}))}})}return Tt})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Outline=e()}(this,(function(){"use strict";const t=t=>Object.prototype.toString.apply(t),e=e=>"function"==typeof e||"[object Function]"===t(e),s=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return!!e(t)&&setTimeout((()=>{t()}),s)},i=s=>("[object Object]"===t(s)||"object"==typeof s||e(s))&&null!==s,r=e=>Array.isArray?Array.isArray(e):"[object Array]"===t(e),n=t=>{let e={};return null===t?null:(r(t)?e=Array.from(t):(e=Object.assign({},t),Object.keys(e).forEach((s=>e[s]=i(t[s])?n(t[s]):t[s]))),e)},l=(t,e,s)=>{const i={},r=[];return t.forEach(((t,s)=>{i[t[e]]=s,t.children=[]})),t.forEach((e=>{const n=t[i[e[s]]];-1!==e[s]?n.children.push(e):r.push(e)})),r},o=t=>"string"==typeof t,h=t=>!!(i(t)&&t.nodeName&&t.tagName&&1===t.nodeType),a=(t,e)=>{const s=new RegExp("(\\s|^)"+e+"(\\s|$)");let i,r;return!!h(t)&&(i=t.className,!!i&&(r=t.classList,r&&r.contains?t.classList.contains(e):!!s.exec(i)))},c=(t,e)=>{var s;let i,r;if(a(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.add?i.add(e):(r=t.className,r+=r.length>0?" "+e:e,t.className=r)},d=t=>t*t,u=function(){let t,e,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return s?o(s)?e=document.querySelector(s):h(s)&&(e=s):(t=document.querySelectorAll("html,body"),e=t[0].scrollTop-t[1].scrollTop>=0?t[0]:t[1]),e},m=(t,s,i)=>{const r=u(t);let n=r.scrollTop,l=0;const o=s-n,h=r.scrollHeight,a=s-h<=0?s:h,c=t=>(e(i)&&i(t),!1),m=()=>{if(l+=1,o<0){if(n-=d(l),r.scrollTop=n,n<=s)return r.scrollTop=s,c(s)}else if(n+=d(l),r.scrollTop=n,n>=a)return r.scrollTop=a,c(a);requestAnimationFrame(m)};requestAnimationFrame(m)},p=(t,e)=>{const s=Object.prototype.hasOwnProperty;return t&&s.call(t,e)},g=(t,e)=>{Object.keys(e).forEach((s=>{p(e,s)&&(t[s]=e[s])}))},f={},b=t=>p(f,t)&&f[t].length>0,y=function(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?b(t):(t=>{let e=b(t),s=t.lastIndexOf(".");for(;!e&&-1!==s;)s=(t=t.substring(0,s)).lastIndexOf("."),e=b(t);return e})(t)},$=function(e,s){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r=e=>{if(!b(e))return!1;f[e].forEach((e=>{const i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object BigInt64Array]","[object BigUint64Array]"].indexOf(t(s))>-1?s.toString():s;e.callback.call(e.context||e,i)}))},n=()=>{let t=e,s=e.lastIndexOf(".");for(;-1!==s;)t=t.substring(0,s),s=t.lastIndexOf("."),r(t);r(e),r("*")};if(!y(e))return!1;i?setTimeout(n,10):n()},v=(()=>{let t=0;return e=>(t+=1,e?e+"-"+t:"guid-"+t)})(),_=t=>{if(!p(f,t))return!1;delete f[t]},x=(t,e)=>{if(!y(t))return!1;e?(t=>{const e=Object.keys(f);if(!t||e.length<1)return!1;e.forEach((e=>{const s=f[e];let i;s.forEach(((e,r)=>{e.callback!==t&&e.token!==t||(i=e.topic,s.splice(-1,r))})),s.length<1&&_(i)}))})(e):_(t)};class T{constructor(t){this.attrs={},t&&this.initialize(t)}initialize(t){return this.attr(t).render().addListeners(),this}attr(t,e){const s=this.attrs;return o(t)?e&&p(s,t)?(s[t]=e,this):s[t]:i(t)?(g(s,t),this):0===arguments.length?s:this}render(){return this}refresh(){return this}destroy(){return this.removeListeners(),this}reload(t){let e=this.attr();return t&&(e=this.attr(t)),this.destroy().initialize(e),this}$emit(t,e){return $(t,e),this}$on(t,s){return function(t,s){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const r=v();let n="symbol"==typeof t?t.toString():t;e(s)&&(f[n]||(f[n]=[]),f[n].push({topic:n,callback:s,context:i,token:r}))}(t,s,this),this}$off(t,e){return x(t,e),this}addListeners(){return this}removeListeners(){return this}}const w=[];let C,E;function L(t){for(;t.timeRemaining()>0&&w.length;){const t=w.shift();if(!e(t))return!1;t()}w.length?C=requestIdleCallback(L):(C=0,e(E)&&(E(),E=null))}void 0===window.requestIdleCallback&&(window.requestIdleCallback=function(t){const e=Date.now();return s((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),10)},window.cancelIdleCallback=function(t){clearTimeout(t)});const z=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;w.push(t),e(s)&&(E=s),C||requestIdleCallback(L)},S=t=>{let e=t.offsetTop;return null!==t.offsetParent&&(e+=S(t.offsetParent)),e},M=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=e.replace(/^>/i,"");return!!(e&&s&&t)&&(t.matches?t.matches(s):!!t.msMatchesSelector&&t.msMatchesSelector(s))},k=t=>t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode,A=["focusout","blur","focusin","focus","load","unload","mouseenter","mouseleave"],N=(t,e,s)=>{const i=A.indexOf(e)>-1;s._delegateListener&&delete(s=s._delegateListener)._delegateListener,function(t,e,s){const i=t._listeners;let r=-1;if(i.length<1)return!1;i.forEach(((t,i)=>{const n=t.fn;e===t.type&&(r=i,n===s&&(r=i))})),r>-1&&i.splice(r,1)}(t,e,s),t.removeEventListener(e,s,i)},H=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=o(t)?document.querySelector(t):t,r=i.childNodes,n=((t,e)=>{let s=t._listeners||[];return o(e)&&e&&(s=s.filter((t=>t.type===e))),s})(i,e);n.forEach((t=>{N(i,t.type,t.fn)})),(s||!0===e||1===arguments.length)&&i&&r&&r.forEach((t=>{h(t)&&H(t,e,s)}))},O=(t,s,i)=>{if(!e(i))return H(t,s),!1;N(t,s,i)},D=function(t,e,s,i,r,n){let l=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const o=A.indexOf(s)>-1,h=function(o){const a=function(t){const e=t.target;return(s=e)&&3===s.nodeType?s.parentNode:s;var s}(o),c=((t,e,s,i)=>{const r=s||document;if(!t)return null;do{if(null!=e&&(e.startsWith(">")?t.parentNode===r&&M(t,e):M(t,e))||i&&t===r)return t;if(t===r)break}while(t=k(t))})(a,e,t);let d=n||t;o.delegateTarget=c,!0===n&&(d=r),c&&(!0===l&&O(t,s,h),i.call(d,o,r))};if(!t)return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,selector:e,type:s,fn:h,data:r,context:n,capture:o}),i._delegateListener=h,t.addEventListener(s,h,o)},F=function(t){t.stopPropagation(),t.preventDefault()},q=['','','','','','','','','','','','','','','','','','',''],j=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";return o(t)?function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";const s=/id="(.*?)"/,i=/^(\w+)-/;return q.find((r=>{const n=s.exec(r)[1];return i.exec(n)[1]===e&&n===("icon"===e?`${e}-${t}`:`${e}-icon-${t}`)}))}(t,e):[...q]},I=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=document.body;let s=document.querySelector("#outline-icons"),i=[];(t=>{if(!t)return!1;r(t)&&t.length>0?t.forEach((t=>{-1===q.indexOf(t)&&o(t)&&q.push(t)})):o(t)&&q.push(t)})(t),i=j(),s?s.innerHTML=i.join(""):(s=document.createElement("div"),s.innerHTML=``,e.insertBefore(s.firstChild,e.firstChild))},R=t=>!!o(t)&&t.replace(/(^\s+)|(\s+$)/g,""),U=e=>{return!(!i(e)||!(h(e)||(e=>!(!i(e)||"[object NodeList]"!==t(e)))(e)||(s=e,i(s)&&"[object DocumentFragment]"===t(s))||(e=>!(!i(e)||!("[object Text]"===t(e)||e.tagName&&3===e.nodeType)))(e)));var s},B=(t,e,s)=>{let i=t.tagName.toLowerCase();switch(e){case"style":t.style.cssText=s;break;case"value":"input"===i||"textarea"===i?t.value=s:t.setAttribute(e,s);break;case"htmlFor":t.setAttribute("for",s);break;case"className":t.className=s;break;case"innerHTML":t.innerHTML=s;break;case"innerText":t.innerText=s;break;default:t.setAttribute(e,s)}},P=(t,e)=>{if(!t||!i(e))return!1;Object.keys(e).forEach((s=>{const i=e[s];p(e,s)&&B(t,s,i)}))},V=(t,e,s)=>{const n=document.createDocumentFragment(),l=document.createElement(t),h=t=>U(t)||o(t),a=t=>{let e;if(!h(t))return!1;U(t)?e=t:o(t)&&(e=document.createTextNode(t)),n.appendChild(e)};return i(e)?P(l,e):r(e)&&e.every((t=>h(t)))?e.forEach((t=>{a(t)})):U(e)?a(e):o(e)&&a(document.createTextNode(e)),r(s)?s.forEach((t=>{a(t)})):a(s),l.appendChild(n),l},W=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s="outline-icon",i=e.size||0,n=e.color||"",l=e.iconSet||"",h=r(i)?i[0]:i,a=r(i)?i[1]:i,c=i?`width:${h}px;height:${a}px;`:"",d=n?c+`color:${n}`:c,u=e.attrs||{},m=document.createElement("i");let p,g="",f="";return o(t)?((t=>{const e=new RegExp("^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<\\!doctype svg[^>]*\\s*(?:\\[?(?:\\s*]*>\\s*)*\\]?)*[^>]*>\\s*)?]*>[^]*<\\/svg>\\s*$\\s*$","i");return o(t)&&e.test(t)})(t)?f=t:(g=l&&"icon"!==l?`xlink:href="#${l}-icon-${t}"`:`xlink:href="#icon-${t}"`,f=``),m.innerHTML=f,u.className?u.className=`${s} ${u.className}`:u.className=s,P(m,u),p=m.querySelector("svg"),P(p,{"aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",class:"outline-icon__svg",width:200,height:200,style:d}),m):null},Q=function(t){return W(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},J=(t,e)=>{var s;let i,r=t.className;if(!r||!a(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.remove?i.remove(e):(r=R(r.replace(e,"")),t.className=r)},Y=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const i="outline-heading",r=t.innerHTML;let n;if(t.innerHTML=r.replace(/^\d+(\.?\d+)*\s?/gi,""),t.removeAttribute("id"),t.removeAttribute("data-id"),J(t,i),!e)return!1;var l;n=t.querySelector(`.${i}__anchor`),s&&J(t,`${i}_start`),l=R(t.className),o(l)&&""===l&&t.removeAttribute("class"),n&&t.removeChild(n)},G=function(t){let s=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=1,l=0,h="";const a=[];return t.forEach(((t,s)=>{const r=t.tagName,c=r.replace(/h/i,"");let d=parseInt(c,10),u=-1;var m;d>n?(l+=1,u=1===l?-1:s-1):d===n||dl?1===d?(l=1,u=-1):u=a[s-1].pid:d<=l&&(1===d?l=1:(l-=n-d,l<=1&&(l=1)),u=1===l?-1:((t,e,s)=>{let i,r,n=t[s-1];for(r=0;r]+(>|$)/g,""):"",e(i)&&(h=i(h)),a.push({id:s,pid:u,level:l,rel:`heading-${s}`,text:h,tagName:r})})),s?(t=>{const e={};return t.forEach((t=>{const s=JSON.stringify((t=>[t.pid])(t));e[s]=e[s]||[],e[s].push(t),t.index=e[s].length,-1===t.pid&&(t.code=String(t.index))})),Object.keys(e).forEach((t=>{e[t].forEach((t=>{const s=e[`[${t.id}]`];if(!s||!r(s))return!1;s.forEach((e=>{e.code=t.code+"."+e.index}))}))})),t})(a):a};class K extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(K.DEFAULTS),this.$articleElement=null,this.$scrollElement=null,this.$headings=[],this.chapters=[],this}initialize(t){const s=this.attr("showCode")||!0;let i,r,n,l,a;return this.attr(t),a=this.attr("articleElement"),r=this.attr("scrollElement"),n=this.attr("selector"),i=this.attr("created"),o(a)?l=document.querySelector(a):h(a)&&(l=a),l?(this.$articleElement=l,this.$scrollElement=u(r),this.$headings=[...l.querySelectorAll(n)],this.$headings.length<1||(this.chapters=G(this.$headings,s,this.attr("chapterTextFilter")),e(i)&&i.call(this),this.render().addListeners()),this):this}getChapters(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=this.chapters;return t?l(e,"id","pid"):e}count(){return this.chapters.length}render(){const t=this.attr("mounted");return I(),this._paint(this.chapters),e(t)&&t.call(this),this}erase(){return this._remove(),this}_paint(t){const e=400,s=this.attr("hasAnchor"),i=this.attr("isAtStart"),r=this.attr("showCode"),n=this.attr("anchorURL"),l=this.count(),o=[...this.$headings],h=(l,o)=>{l.forEach(((l,h)=>{const a=h+o*e,c=t[a].code;((t,e,s)=>{const i="outline-heading",r=s.hasAnchor||!0,n=s.isAtStart||!0,l=s.showCode||!1,o=s.chapterCode||"",h=s.anchorURL||"",a=`heading-${e}`,c={id:a,className:n?`${i} ${i}_start`:i,"data-id":e},d=R(t.innerHTML);let u,m;if(l&&(c.innerHTML=o+" "+d),P(t,c),!r)return!1;m=Q("hash",{iconSet:"outline"}),u=V("a",{id:`anchor-${e}`,className:`${i}__anchor anchor-${e}`,href:h||`#${a}`,target:h?"_blank":"self","data-id":e},m),t.appendChild(u)})(l,a,{hasAnchor:s,isAtStart:i,showCode:r,chapterCode:c,anchorURL:n})}))};let a=-1;if(l>e)for(a+=1,h(o.splice(0,e),0);o.length>0;){const t=o.splice(0,e);z((()=>{h(t,a+=1)}),(()=>{this.$emit("anchors:all:paint")}))}else h(o,0);return this}_remove(){const t=this.attr("hasAnchor"),e=this.attr("isAtStart");return this.$headings.forEach((s=>{Y(s,t,e)})),this}refresh(t){const e=this.$articleElement,s=this.attr("selector");return this.$headings=[...e.querySelectorAll(s)],this.chapters=t,this.erase()._paint(t),this}scrollTo(t,e){const s=this.$scrollElement;return m(s,t,e),this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}onAnchorTrigger(t){const i=this.attr("anchorURL"),r=this.attr("afterScroll"),n=this.attr("stickyHeight"),l=t.delegateTarget.parentNode,o=S(l)-(n+10),h=this.$scrollElement,a=h.scrollHeight-h.clientHeight;return this.scrollTo(o,(()=>{e(r)&&r.call(this,"anchor"),s((()=>{this.$emit("toolbar:update",{top:o,min:0,max:a})}))})),i||F(t),this}addListeners(){const t=this.$articleElement;return this.count()<1||D(t,".outline-heading__anchor","click",this.onAnchorTrigger,this,!0),this}removeListeners(){const t=this.$articleElement;return this.count()<1||O(t,"click",this.onAnchorTrigger),this}}K.DEFAULTS=n({scrollElement:"html,body",articleElement:"#article",selector:"h1,h2,h3,h4,h5,h6",stickyHeight:0,anchorURL:"",hasAnchor:!0,isAtStart:!0,showCode:!1,created:null,mounted:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,chapterTextFilter:null});const X=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],Z=t=>{let e,s,i;return!!o(t)&&(e=R(t).slice(0,1e3),s=/\s*|]*>|]*>|]+>/i,i=new RegExp(X.map((t=>`<${t}\\b[^>]*>`)).join("|"),"i"),s.test(e)||i.test(e))},tt=t=>t.replace(/]*>.*?<\/script>/gi,""),et=(t,e)=>{document.documentElement.style.setProperty(t,e)};let st=2e3;const it=t=>(t?st=t:st+=1,et("--outline-zIndex",`${st}`),st);class rt extends T{constructor(t){super(),this._default(),this.zIndex=0,t&&this.initialize(t)}_default(){return this.attrs=n(rt.DEFAULTS),this.title="",this.closed=!1,this.$el=null,this.$modal=null,this.$header=null,this.$title=null,this.$close=null,this.$main=null,this.$footer=null,this.$overlay=null,this}initialize(t){let s;return this.attr(t),this.title=this.attr("title"),s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}setTitle(t){return this.attr("title",t),this.title=t,this.$title.innerHTML=t,this}isClosed(){return this.closed}render(){const t=this.attr("mounted"),s=this.attr("size"),i=this.attr("placement"),r=this.attr("hasClose"),n=this.attr("hasOverlay"),l=this.attr("hasOffset"),o=this.attr("hasPadding"),h=this.attr("autoHeight"),a=this.attr("customClass");let d,u,m,p,g,f,b,y;return I(),this.zIndex=it(),p=V("h2",{className:"outline-drawer__title"},this.title),this.$title=p,r&&(g=V("div",{className:"outline-drawer__close"},Q("close",{iconSet:"outline",size:20})),this.$close=g),m=V("header",{className:"outline-drawer__header"},[p,g]),this.$header=m,f=V("div",{className:"outline-drawer__main"}),this.$main=f,o||c(f,"outline-drawer_full"),b=V("footer",{className:"outline-drawer__footer"}),this.$footer=b,u=V("div",{className:`outline-drawer__modal outline-drawer_${i} outline-drawer_${s} outline-drawer_closed`},[m,f,b]),this.$modal=u,l&&c(u,"outline-drawer_offset"),h&&c(u,"outline-drawer_auto"),a&&c(u,a),n&&(y=V("div",{className:"outline-drawer__overlay"}),this.$overlay=y),d=V("div",{className:"outline-drawer"},[u,y]),this.$el=d,document.body.appendChild(d),e(t)&&t.call(this),this}erase(){return this.$main.innerHTML="",this}_paint(t){let s=null;return e(t)?s=t():U(t)?s=t:Z(t)&&(s=((t,e)=>{const s=document.createDocumentFragment();if(!t||!Z(t)&&!o(t)&&!h(t))return null;if(Z(t)){const e=V("div");let i=[];return e.innerHTML=tt(t),i=[...e.childNodes],i.forEach((t=>{s.appendChild(t)})),s}if(!o(e))return t.innerHTML;t.innerHTML=tt(e)})(t)),s&&this.$main.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.erase()._paint(t),this}open(){const t=this.attr("afterOpened"),i=this.$modal;return c(this.$el,"outline-drawer_opened"),J(i,"outline-drawer_closed"),c(i,"outline-drawer_opened"),s((()=>{this.closed=!1,e(t)&&t.call(this)})),this}close(){const t=this.attr("afterClosed"),i=this.$modal;return J(i,"outline-drawer_opened"),c(i,"outline-drawer_closed"),s((()=>{J(this.$el,"outline-drawer_opened"),this.closed=!0,e(t)&&t.call(this)})),this}toggle(){const t=this.attr("afterToggle"),i=this.isClosed();return i?this.open():this.close(),e(t)&&s((()=>{t.call(this,i)})),this}destroy(){const t=this.attr("afterDestroy"),s=this.attr("beforeDestroy");let i=this.zIndex;return e(s)&&s.call(this),this.removeListeners()._remove()._default(),i-=1,it(i),this.zIndex=0,e(t)&&t.call(this),this}onClose(){return this.close(),this}addListeners(){const t=this.attr("hasClose"),e=this.attr("hasOverlay"),s=this.attr("closeOnClickModal"),i=this.$el;return t&&D(i,".outline-drawer__close","click",this.onClose,this,!0),e&&s&&D(i,".outline-drawer__overlay","click",this.onClose,this,!0),this}removeListeners(){const t=this.attr("hasClose"),e=this.attr("hasOverlay"),s=this.$el;return t||e?(O(s,"click",this.onClose),this):this}}rt.DEFAULTS=n({placement:"rtl",title:"标题",size:"regular",hasClose:!0,hasOverlay:!0,hasOffset:!1,hasPadding:!0,autoHeight:!0,closeOnClickModal:!0,created:null,mounted:null,afterClosed:null,afterOpened:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,afterToggle:null});const nt=function(t,s,i,r,n){let l=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const o=A.indexOf(s)>-1,h=function(e){let o=n||t;!0===n&&(o=r),!0===l&&O(t,s,h),i.call(o,e,r)};if(!e(i))return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,type:s,fn:h,data:r,context:n,capture:o}),i._delegateListener=h,t.addEventListener(s,h,o)},lt=(t,e)=>getComputedStyle(t)[e];class ot extends T{constructor(t){super(),this._default(),this.scrollTimer=null,this.resizeTimer=null,this.observerTimer=null,this.Observer=null,t&&this.initialize(t)}_default(){return this.attrs=n(ot.DEFAULTS),this.$el=null,this.$title=null,this.$main=null,this.$list=null,this.$placeholder=null,this.$parentElement=null,this.$scrollElement=null,this.$active=null,this.chapters=[],this.active=0,this.offsetWidth=0,this.offsetTop=0,this.playing=!1,this.closed=!1,this}initialize(t){let s,i,r,n;return this.attr(t),s=this.attr("created"),i=this.attr("parentElement"),r=this.attr("scrollElement"),o(i)?n=document.querySelector(i):h(i)&&(n=i),this.$parentElement=n,this.$scrollElement=u(r),this.chapters=this.attr("chapters"),this.closed=this.attr("closed"),this.active=this.attr("active"),e(s)&&s.call(this),this.chapters.length<1||(this.render().addListeners(),this.$active=document.querySelector(`#chapter-${this.active}`)),this}isClosed(){return this.closed}isSticky(){return"sticky"===this.attr("position")}isFixed(){return"fixed"===this.attr("position")}isInside(){return this.isFixed()||this.isSticky()}isOutside(){return!this.isInside()}count(){return this.chapters.length}_paintEdge(){const t=document.createDocumentFragment(),e=this.attr("title"),s=this.attr("animationCurrent"),i=this.attr("customClass"),r=this.$parentElement,n=[],l=[];let o,h,a,d,u=null;return r?(this.isInside()&&e&&(u=V("h2",{className:"outline-chapters__title"},e),this.$title=u,l.push(u)),a=V("ul",{className:"outline-chapters__list"}),this.$list=a,n.push(a),s&&(d=V("div",{className:"outline-chapters__placeholder"}),this.$placeholder=d,n.push(d)),h=V("div",{className:"outline-chapters__main"},n),this.$main=h,l.push(h),o=V("nav",{id:"outline-chapters",className:"outline-chapters outline-chapters_hidden"},l),this.$el=o,this.isSticky()&&(this.calculateStickyHeight(),c(o,"outline-chapters_sticky")),i&&c(o,i),t.appendChild(o),r.appendChild(t),this):this}render(){const t=this.attr("mounted"),i=this.$parentElement,r=this.chapters,n=this.count();let l;return!i||r.length<1||(this.isInside()&&c(i,"outline-chapters-parent"),this._paintEdge(),l=this.$el,this._paint(r),s((()=>{this.highlight(this.active)}),60),this.offsetTop=S(l),this.offsetWidth=l.offsetWidth,this.isFixed()&&(this.sticky(),et("--outline-chapters-width",`${this.offsetWidth}px`)),e(t)&&t.call(this),n<400&&this.onObserver()),this}erase(){return this.$list.innerHTML="",this}_paint(t){const e=this.attr("showCode"),s=this.$el;return function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=e.length,r=[...e],n=e=>{const i=e=>t.querySelector(`#${e}`);e.forEach((e=>{const r=e.pid,n=e.id,l=e.rel,o=[],h=V("span",{className:"outline-chapters__text"},e.text);let a,c,d,u,m;s&&(c=V("span",{className:"outline-chapters__code","data-id":n},e.code),o.push(c)),o.push(h),a=V("a",{id:`chapter__anchor-${n}`,className:"outline-chapters__anchor",href:"#"+l,rel:l,"data-id":n},o),d=V("li",{id:`chapter-${n}`,className:"outline-chapters__item","data-id":n},a),-1===r?t.appendChild(d):(m=i(`chapter-${r}`),u=i(`subject-${r}`),u?u.appendChild(d):(u=V("ul",{id:"subject-"+r,className:"outline-chapters__subject"},d),m.appendChild(u)))}))};if(i>400)for(n(r.splice(0,400));r.length>0;){const t=r.splice(0,400);z((()=>{n(t)}))}else n(r)}(this.$list,t,e),J(s,"outline-chapters_hidden"),this}_remove(){return this.$parentElement.removeChild(this.$el),this}refresh(t){const e=this.$el;return J(e,"outline-chapters_hidden"),this.erase()._paint(t),this}_getPlaceholderOffset(t){const e=this.$main,s=this.$list,i=s.querySelector(".outline-chapters__anchor"),r=this.attr("animationCurrent"),n=parseInt(lt(e,"padding-top"),10),l=parseInt(lt(e,"border-top-width"),10),o=parseInt(lt(s,"padding-top"),10),h=parseInt(lt(s,"margin-top"),10),a=parseInt(lt(s,"border-top-width"),10);let c,d=i.offsetHeight,u=0;return r?(n&&(u+=n),o&&(u+=o),h&&(u+=h),l&&(u+=l),a&&(u+=a),c=d*t,u+c):this}positionPlaceholder(t){const e=this.$list,s=this.$placeholder,i=e.querySelector(".outline-chapters__anchor"),r=this.attr("animationCurrent"),n=i.offsetHeight;let l=0;return r?(l=this._getPlaceholderOffset(t),s.style.cssText=`transform: translateY(${l}px);height:${n}px;`,this):this}highlight(t){const e=this.$el,i=this.attr("animationCurrent"),r="outline-chapters_active",n="outline-chapters_highlight";let l=null,o=0;return e?(l=e.querySelector(`#chapter__anchor-${t}`),l?(this.active=parseInt(l.getAttribute("data-id"),10),this.$active&&(J(this.$active,n),J(this.$active,r)),this.$active=l,c(this.$active,r),i?(this.positionPlaceholder(this.active),s((()=>{((t,e)=>{let s,i;return!(!h(t)||!h(e))&&(s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),i.top>=s.top&&i.right<=s.right&&i.bottom<=s.bottom&&i.left>=s.left)})(this.$active,this.$parentElement)||(o=this._getPlaceholderOffset(this.active),m(this.$main,o))}))):c(this.$active,n),this):this):this}sticky(){const t=this.attr("afterSticky"),s="outline-chapters_fixed",i=this.$el,r=this.offsetTop,n=this.$scrollElement.scrollTop;let l;return this.isFixed()?(l=n>=r,l?c(i,s):J(i,s),e(t)&&t.call(this,this.isClosed(),l),this):this}calculateStickyHeight(){const t=document.documentElement,e=Math.max(t.clientHeight||0,window.innerHeight||0);return et("--outline-sticky-height",`${e}px`),this}scrollTo(t,e){const s=this.$scrollElement;return m(s,t,e),this}show(){const t="outline-chapters_hidden",i=this.attr("afterOpened"),r=this.count(),n=this.$el,l=this.$parentElement;return this.isInside()?r>800?J(l,t):(J(l,t),s((()=>{J(l,"outline-chapters_folded")}),30)):J(n,t),this.closed=!1,e(i)&&i.call(this),this}hide(){const t="outline-chapters_hidden",i=this.attr("afterClosed"),r=this.count(),n=this.$el,l=this.$parentElement;return this.isInside()?r>800?c(l,t):(c(l,"outline-chapters_folded"),s((()=>{c(l,t)}))):c(n,t),this.closed=!0,e(i)&&i.call(this),this}toggle(){const t=this.attr("afterToggle"),i=this.offsetTop,r=this.$scrollElement.scrollTop;let n;return this.isClosed()?this.show():this.hide(),e(t)&&s((()=>{n=r>=i,t.call(this,this.isClosed(),n)})),this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.removeListeners()._remove()._default(),this.scrollTimer&&(clearTimeout(this.scrollTimer),this.scrollTimer=null),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null),this.observerTimer&&(clearTimeout(this.observerTimer),this.observerTimer=null),this.Observer&&(this.Observer=null),e(s)&&s.call(this),this}onObserver(){const t=this.attr("selector");return this.Observer=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=s.root||null,r=s.selector||".outline-heading",n=s.context||null,l={rootMargin:s.rootMargin||"0px 0px -90% 0px"},o=new IntersectionObserver((s=>{s.forEach((s=>{s.intersectionRatio>0&&e(t)&&t.call(n||s.target,s.target)}))}),l),a=h(i)?i:document;return i&&(l.root=i),a.querySelectorAll(r).forEach((t=>{o.observe(t)})),o}((t=>{const e=t.getAttribute("data-id");if(this.playing)return!1;this.observerTimer&&clearTimeout(this.observerTimer),this.observerTimer=s((()=>{this.highlight(e)}),100)}),{selector:t,context:this}),this}onSelect(t){const i=this.attr("stickyHeight"),r=t.delegateTarget,n=r.getAttribute("data-id"),l=r.href.split("#")[1],o=document.querySelector(`#${l}`),h=S(o)-(i+10),a=this.$scrollElement.scrollHeight,c=this.attr("afterScroll"),d=()=>{e(c)&&c.call(this,"chapter"),s((()=>{this.playing=!1,this.$emit("toolbar:update",{top:h,min:0,max:a})}))};return this.playing=!0,this.isFixed()?(this.sticky(),s((()=>{this.scrollTo(h,d),this.highlight(n)}),10)):(this.scrollTo(h,d),this.highlight(n)),F(t),this}onScroll(){const t=this.$scrollElement;return this.scrollTimer&&clearTimeout(this.scrollTimer),this.scrollTimer=s((()=>{const e=t.scrollTop,s=t.scrollHeight-t.clientHeight;this.isFixed()&&this.sticky(),this.$emit("toolbar:update",{top:e,min:0,max:s})}),100),this}onResize(){return this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=s((()=>{this.calculateStickyHeight()})),this}addListeners(){const t=this.$el,e=this.$scrollElement,s=e.tagName.toLowerCase();let i=e;return this.count()<1||("html"!==s&&"body"!==s||(i=window),D(t,".outline-chapters__anchor","click",this.onSelect,this,!0),nt(i,"scroll",this.onScroll,this,!0),this.isSticky()&&nt(window,"resize",this.onResize,this,!0),this.$on("anchors:all:paint",this.onObserver,this)),this}removeListeners(){const t=this.attr("selector"),e=this.$el,s=this.$scrollElement,i=s.tagName.toLowerCase();let r=s;return this.count()<1||("html"!==i&&"body"!==i||(r=window),O(e,"click",this.onSelect),O(r,"scroll",this.onScroll),this.isSticky()&&O(window,"resize",this.onResize),this.$off("anchors:all:paint"),this.Observer&&document.querySelectorAll(t).forEach((t=>{this.Observer.unobserve(t)}))),this}}ot.DEFAULTS=n({parentElement:"",scrollElement:"",selector:".outline-heading",active:0,closed:!1,showCode:!0,animationCurrent:!0,position:"relative",stickyHeight:0,chapters:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,afterSticky:null});const ht=t=>{const e=Object.getPrototypeOf;let s;if(!(t=>i(t)&&null!==t)(t))return!1;if(s=t.prototype,!s)return!0;for(s=t;null!==e(s);)s=e(s);return e(t)===s},at=t=>{const e={"&":"&","<":"<",">":">","'":"'",'"':"""};return t.replace(/[&<>'"]/g,(t=>e[t]||t))},ct=[];let dt;I();class ut extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(ut.DEFAULTS),this.$el=null,this.id="",this.closed=!1,this.visible=!1,this.offset=-50,this.timer=null,this.destroyed=!1,this}initialize(t){return this.attr(t),this.id=this.attr("id"),this.offset=this.attr("offset")||-50,this.$emit("created",{...this.attr()}),this.render().addListeners(),this.attr("visible")&&this.open(),this}isClosed(){return this.closed}isDestroyed(){return this.destroyed}_getClassName(){const t=this.attr("type"),e=this.attr("effect"),s=this.attr("round"),i=this.attr("closable"),r=this.attr("visible"),n=this.attr("customClass"),l=["outline-message",`outline-message_${t}`,`outline-message_${e}`];return s&&l.push("outline-message_round"),i||l.push("outline-message_full-width"),r&&l.push("outline-message_visible"),n&&l.push(n),l}render(){const t=this.attr("type"),e=this.attr("message"),s=this.attr("effect"),i=this.attr("round"),r=this.attr("closable"),n=this.attr("dangerouslyUseHTMLString"),l=this._getClassName(),o=[];let h,a,d,u,m,p=20;return i&&"default"===s&&(p=12),"plain"!==s&&(h=Q("light"===s?`circle-${t}`:t,{iconSet:"outline",size:p}),c(h,"outline-message__icon"),o.push(h)),n?(d=document.createDocumentFragment(),d.innerHTML=e):d=document.createTextNode(at(tt(e))),a=V("p",{className:"outline-message__content"},[d]),o.push(a),r&&(u=Q("close",{iconSet:"outline",size:18}),c(u,"outline-message__close"),o.push(u)),m=V("div",{className:l.join(" ")},o),m.style.cssText="top:-50px;",this.$el=m,document.body.appendChild(this.$el),this.$emit("mounted"),this}_refreshIcon(){const t=".outline-message_hidden",e=this.$el;let s,i,r,n,l,o,h,a=20;return this.isDestroyed()?this:(l=e.querySelector(".outline-icon"),l?(s=this.attr("type"),i=this.attr("effect"),r=this.attr("round"),"plain"===i?c(l,t):(J(l,t),r&&"default"===i&&(a=12)),o=l.querySelector(".outline-icon__svg"),P(o,{style:`width:${a}px;height:${a}px;`}),h=o.querySelector("use"),n="light"===i?`circle-${s}`:s,B(h,"xlink:href",`#outline-icon-${n}`),this):this)}_refreshMessage(){const t=this.$el;let e,s,i,r;return this.isDestroyed()||(e=t.querySelector(".outline-message__content"),s=this.attr("dangerouslyUseHTMLString"),i=this.attr("message"),r=s?i:at(tt(i)),e.innerHTML=r),this}_refreshClose(){const t=".outline-message_hidden",e=this.$el;let s,i;return this.isDestroyed()||(s=e.querySelector(".outline-message__close"),i=this.attr("closable"),s&&(i?c(s,t):J(s,t))),this}_refreshEl(){const t=this.$el;let e;return this.isDestroyed()||(e=this._getClassName(),B(t,"className",e.join(" "))),this}refresh(t){return ht(t)?(this.attr(t)._refreshIcon()._refreshMessage()._refreshClose()._refreshEl(),this):this}clearTimer(){return this.isDestroyed()||this.timer&&(clearTimeout(this.timer),this.timer=null),this}startTimer(t){return this.isDestroyed()||(this.timer=s((()=>{this.$emit("opened"),this.close()}),1e3*t)),this}open(t){const e=this.$el;let i,r,n,l;return this.isDestroyed()||(this.isClosed()&&this.refresh(t),i=this.attr("offset"),r=this.attr("duration"),n=i&&i>=this.offset?i:this.offset,l=`top:${n}px;`,this.clearTimer(),this.$emit("beforeOpen"),s((()=>{this.visible=!0,c(e,"outline-message_visible"),e.style.cssText=l,r>0&&this.startTimer(r)}),100)),this}close(){const t=this.$el;let i,r;return this.isDestroyed()||(i=this.attr("destroyAfterClosed"),r=this.attr("beforeClose"),e(r)&&r.call(this),t.style.cssText="top:-50px;",J(t,"outline-message_visible"),this.visible=!1,this.closed=!0,s((()=>{this.$emit("closed"),i&&this.destroy()}),500)),this}destroy(){return this.$emit("beforeDestroy"),this.isDestroyed()||(this.removeListeners(),document.body.removeChild(this.$el),clearTimeout(this.timer),this._default(),this.$emit("afterDestroy")),this}onMouseEnter(){return this.clearTimer(),this}onMouseLeave(){const t=this.attr("duration"),e=this.attr("delay");return t<=0||this.startTimer(e),this}onClose(){return this.clearTimer(),this.close(),this}addListeners(){const t=this.$el;return D(t,".outline-message__content","mouseenter",this.onMouseEnter,this,!0),D(t,".outline-message__content","mouseleave",this.onMouseLeave,this,!0),D(t,".outline-message__close","click",this.onClose,this,!0),this}removeListeners(){const t=this.$el;return O(t,"mouseenter",this.onMouseEnter),O(t,"mouseleave",this.onMouseLeave),O(t,"click",this.onClose),this}}ut.DEFAULTS=n({id:"",type:"info",effect:"default",round:!1,offset:30,duration:3,delay:2,message:"",customClass:"",closable:!0,visible:!0,dangerouslyUseHTMLString:!1,destroyAfterClosed:!0,beforeClose:null}),["info","success","warning","error"].forEach((t=>{ut[t]=e=>{const s={},i=v("outline-message-"),r=e.beforeClose||null;let n=e.offset||30;return o(e)?s.message=e:ht(e)&&g(s,e),s.id=i,s.type=t,s.offset=n,s.visible=!1,s.beforeClose=()=>{ut.close(i,r)},dt=new ut(s),ct.forEach((t=>{n+=t.$el.offsetHeight+16})),dt.offset=n,dt.open(),ct.push(dt),dt}})),ut.close=(t,s)=>{const i=ct.length;let r,n,l=-1;if(ct.forEach(((i,r)=>{t===i.id&&(n=i.$el.offsetHeight,l=r,e(s)&&s.call(i),ct.splice(r,1))})),i<=1||-1===l||l>ct.length-1)return!1;for(r=l;r{let t=ct.length-1;for(;t>=0;t-=1)ct[t].close()};class mt{constructor(t,s){this.name=t,e(s)&&(this.action=s)}execute(){return this.action(),this}}class pt{constructor(){this.commands=[]}get(t){return this.commands.find((e=>e.name===t))}add(t){return this.commands.push(t),this}del(t){const e=this.commands,s=e.find((e=>e.name===t)),i=s?e.indexOf(s):-1;return i>-1&&e.splice(i,1),this}clear(){return this.commands=[],this}execute(t){const s=this.commands.find((e=>e.name===t));return e(null==s?void 0:s.execute)&&s.execute(),this}}const gt=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const s=Q(t.icon,{iconSet:t.iconSet||"outline",color:t.color||"",size:t.size}),i=V("a",{className:"outline-toolbar__anchor",href:t.link},s),r=V("div",{className:`outline-toolbar__button ${t.name}`,"data-cmd":t.name},[t.link?i:s]);return c(s,"outline-toolbar__icon"),e&&c(r,"outline-toolbar_rounded"),t.disabled&&c(r,"outline-toolbar_disabled"),r},ft="outline-toolbar_disabled",bt="outline-toolbar_hidden";class yt extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(yt.DEFAULTS),this.disabled=!1,this.closed=!1,this.$el=null,this.buttons=[],this.commands=null,this}initialize(t){let s;return this.attr(t),this.disabled=this.attr("disabled"),this.closed=this.attr("closed"),this.commands=new pt,s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}isDisabled(t){let e;return t?(e=this.get(t),e.disabled):this.disabled}isExist(t){return!!this.get(t)}isClosed(){return this.closed}_getCommand(t){const s=this,{action:i,name:r}=t;let n,l,h=null,a=null;return i?(a=i.handler,n=i.context||this,e(a)?l=a:o(a)&&(l=function(){s.$emit(a,r)}),e(l)&&(h=new mt(r,l.bind(n))),h):h}get(t){return this.buttons.find((e=>e.name===t))}render(){const t=this.attr("mounted"),s=this.attr("buttons")||[],i=this.attr("placement");return I(),this.$el=V("div",{id:v("outline-toolbar"),className:`outline-toolbar outline-toolbar_${i}`}),this._paint(s),document.body.appendChild(this.$el),this.closed&&this.hide(),this.disabled&&this.disable(),e(t)&&t.call(this),this}erase(){return this.$el.innerHTML="",this}_paint(t){const e=this.attr("rounded"),s=document.createDocumentFragment();return t.forEach((t=>{const i=gt(t,e),r=this._getCommand(t),{name:n,disabled:l,context:o}=t;s.appendChild(i),this.isExist(n)||(this.buttons.push({$el:i,name:n,disabled:l||!1,context:o||this}),r&&this.commands.add(r))})),this.$el.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.attr({buttons:t}),this.erase()._paint(t),this}add(t){const e=this.$el,s=document.createDocumentFragment(),n=this.attr("buttons")||[],{name:l,disabled:o,context:h}=t,a=this._getCommand(t),c=t=>{const e=gt(t);s.appendChild(e),n.push(t),this.buttons.push({$el:e,name:l,disabled:o||!1,context:h||this,command:a}),a&&this.commands.add(a)};return i(t)?c(t):r(t)&&t.forEach((t=>{i(t)&&c(t)})),e.appendChild(s),this}remove(t){const e=this.$el,s=this.buttons,i=this.get(t);let r=-1;return i?(r=s.indexOf(i),r>-1&&(s.splice(r,1),this.attrs("buttons").splice(r,1)),this._disable(t),e.removeChild(i.$el),this):this}_disable(t){const e=this.get(t),s=this.commands.get(t);return!e||e.disabled||(e.disabled=!0,s&&this.commands.del(s),c(e.$el,ft)),this}_enable(t){const e=this.get(t),s=this.commands.get(t);return e&&e.disabled?(e.disabled=!1,s&&this.commands.add(s),J(e.$el,ft),this):this}disable(t){const s=this.attr("afterDisabled");return t?this._disable(t):(c(this.$el,ft),this.removeListeners(),this.disabled=!0,e(s)&&s.call(this)),this}enable(t){const s=this.attr("afterEnabled");return t?this._enable(t):(this.disabled=!1,J(this.$el,ft),this.addListeners(),e(s)&&s.call(this)),this}show(t){const i=this.attr("afterOpened"),r=this.get(t),n=this.$el;if(t){if(!r)return this;J(r.$el,bt)}else J(n,bt),this.closed=!1,e(i)&&s((()=>{i.call(this)}),310);return this}hide(t){const i=this.attr("afterClosed"),r=this.get(t),n=this.$el;if(t){if(!r)return this;c(r.$el,bt)}else c(n,bt),this.closed=!0,e(i)&&s((()=>{i.call(this)}),310);return this}toggle(){return this.isClosed()?this.show():this.hide(),this}highlight(t){const e=this.get(t),s="outline-toolbar_active";let i;return e?(i=e.$el,a(i,s)?J(i,s):c(i,s),this):this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.commands.clear(),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}execute(t){return this.isDisabled(t)||this.commands.execute(t),this}onExecute(t){const e=t.delegateTarget;let s="";return e&&(s=e.getAttribute("data-cmd"),s&&this.execute(s)),this}addListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||D(e,".outline-toolbar__button","click",this.onExecute,this,!0),this}removeListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||O(e,".outline-toolbar__button",this.onExecute),this}}yt.DEFAULTS=n({placement:"ltr",closed:!1,disabled:!1,rounded:!0,buttons:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterDisabled:null,afterEnabled:null,beforeDestroy:null,afterDestroy:null});const $t=(t,e)=>{let s,i=t;for(;i;)s=i.tagName.toLowerCase(),"script"!==s&&"style"!==s&&c(i,"outline-reader_sibling"),i=e?i.previousElementSibling:i.nextElementSibling},vt="进入阅读模式,按 ESC 键可退出阅读模式";class _t extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(_t.DEFAULTS),this.reading=!1,this.$target=null,this.$paper=null,this.$title=null,this.$article=null,this.$progress=null,this.toolbar=null,this}initialize(t){let e=null;return this.attr(t),e=this.attr("target"),o(e)?this.$target=document.querySelector(e):h(e)&&(this.$target=e),this.$target?(this.render().addListeners(),this):this}render(){return this._renderEdge()._paint(this.$target),this}erase(){return this.$article.innerHTML="",this}_paint(t){const e=document.createDocumentFragment(),i=[...t.cloneNode(!0).children];return s((()=>{i.forEach((t=>{e.appendChild(t)})),this.$article.appendChild(e)})),this}_remove(){const t=this.$paper,e=this.toolbar;return t&&document.body.removeChild(t),e&&e.destroy(),this}refresh(){return this.erase()._paint(this.$target),this}_renderEdge(){const t=this.$target;let e,i,r,n,l,o=this.attr("title");return i=t.querySelector("h1"),h(o)&&(i=o),h(i)&&(o=i.innerText),i=V("h1",{className:"outline-reader__title"},o),this.$title=i,r=V("article",{id:"outline-reader__article",className:"outline-reader__article"}),this.$article=r,n=V("div",{className:"outline-reader__progress"}),this.$progress=n,this.toolbar=new yt({placement:"rtl",buttons:[{name:"print",icon:"print",size:20,action:{context:this,handler:this.print}},{name:"exit",icon:"close",size:20,action:{context:this,handler:this.exit}}]}),e=V("section",{id:"outline-reader",className:"outline-reader outline-reader_hidden"},[n,i,r,this.toolbar.$el]),this.$paper=e,document.body.appendChild(e),s((()=>{l=e.previousElementSibling,$t(l,!0),l=e.nextElementSibling,$t(l)})),this}enter(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,r=document.querySelectorAll(".outline-reader_sibling"),n=this.attr("enterReadingTip")||vt;return this.reading||!i||(r.forEach((t=>{c(t,s)})),c(i,e),J(i,s),this.toolbar.show(),this.reading=!0,ut.info({round:!0,message:n}),this.$emit("enterReading")),this}exit(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,r=document.querySelectorAll(".outline-reader_sibling");return this.reading&&i?(c(i,s),J(i,e),r.forEach((t=>{J(t,s)})),this.toolbar.hide(),this.reading=!1,this.$emit("exitReading"),this):this}toggle(){return this.reading?this.exit():this.enter(),this}print(){return e(print)?(print(),this):this}destroy(){return this.$paper?(this.removeListeners()._remove()._default(),this):this}onPrint(){return this.print(),this}onEnterReading(){return this.toggle(),this}onExitReading(t){return 27===t.keyCode&&this.reading&&(this.toggle(),F(t)),this}addListeners(){return this.$paper?(nt(document,"keyup",this.onExitReading,this,!0),this.$on("toolbar:action:print",this.onPrint),this.$on("toolbar:action:reading",this.onEnterReading),this):this}removeListeners(){return this.$paper?(O(document,"keyup",this.onExitReading),this.$off("toolbar:action:print"),this.$off("toolbar:action:reading"),this):this}}var xt;_t.DEFAULTS=n({target:"",title:"",enterReadingTip:vt});class Tt extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){const t=Tt.DEFAULTS;return this.attrs=n(t),this.$article=null,this.$scrollElement=null,this.buttons=[],this.anchors=null,this.drawer=null,this.chapters=null,this.reader=null,this.toolbar=null,this}initialize(t){let e="",s="",i=null;return this.attr(t),e=this.attr("articleElement"),s=this.attr("scrollElement"),o(e)?i=document.querySelector(e):h(e)&&(i=e),this.$article=i,this.$scrollElement=u(s),this.$emit("created",{...this.attr()}),this.render().addListeners(),this}getChapters(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=this.$article,s=this.attr("selector"),i=this.attr("showCode")||!0,r=this.attr("chapterTextFilter");let n=[],o=[];return e?(n=[...e.querySelectorAll(s)],o=G(n,i,r),t?l(o,"id","pid"):o):o}count(){return this.getChapters().length}render(){const t=this.attr("hasToolbar"),e=this.$scrollElement;return this._renderReader()._renderAnchors()._renderChapters()._renderToolbar(),e&&t&&this._updateToolbar({top:e.scrollTop,min:0,max:e.scrollHeight}),this.$emit("mounted"),this}refresh(){const t=this.getChapters();return this.anchors.refresh(t),this.chapters.refresh(t),this.reader.refresh(),this}_renderReader(){const t=this.attr("reader");return t.target?(c(this.$article,"outline-article"),this.reader=new _t(t),this):this}_renderAnchors(){const t=this.attr("articleElement"),e=this.attr("selector"),s=this.attr("stickyHeight"),i=this.attr("scrollElement"),r=this.attr("showCode"),n=this.attr("anchorURL"),l=this.attr("afterScroll"),o=this.attr("chapterTextFilter");return this.anchors=new K({articleElement:t,stickyHeight:s,scrollElement:i,selector:e,showCode:r,anchorURL:n,afterScroll:l,chapterTextFilter:o}),this}_renderChapters(){const t=this.attr("title"),e=this.attr("stickyHeight"),s=this.attr("scrollElement"),i=this.attr("customClass"),r=this.attr("showCode"),n=this.attr("animationCurrent"),l=this.attr("closeOnClickModal"),o=this.attr("showNavModalFirst"),h=this.attr("position"),a=this.attr("placement"),c=this.attr("afterSticky"),d=this.attr("afterToggle"),u=this.attr("afterScroll"),m=this.count();let p,g=this.attr("parentElement");return m<1||(p={scrollElement:s,showCode:r,animationCurrent:n,position:h,title:t,stickyHeight:e,chapters:this.getChapters(),afterSticky:c,afterToggle:d,afterScroll:u},"relative"===h?(this.drawer=new rt({placement:a,title:t,size:"tiny",hasOffset:!0,hasPadding:!1,closeOnClickModal:l,customClass:i,afterClosed:()=>{this.toolbar.toggle()}}),g=this.drawer.$main,o&&this.drawer.open()):p.customClass=i,p.parentElement=g,this.chapters=new ot(p)),this}_renderToolbar(){const t=this.attr("position"),s=this.attr("hasToolbar"),i=this.attr("showNavModalFirst"),r=this.attr("placement"),n=this.attr("homepage"),l=this.attr("git"),o=this.attr("tags"),h=this.attr("issues"),a=this.attr("tools"),c=this.attr("reader"),d=this.count(),u={name:"up",icon:"up",size:20,action:{context:this,handler:this.toTop}},m={name:"homepage",icon:"homepage",size:20,link:n},p={name:"github",icon:"github",size:20,link:l},g={name:"tags",icon:"tags",size:20,link:o},f={name:"issues",icon:"issues",size:20,link:h},b={name:"toggle",icon:"menu",size:18,action:{context:this,handler:this.toggle}},y={name:"reading",icon:"file",size:18,action:{context:this,handler:"toolbar:action:reading"}},$={name:"print",icon:"print",size:20,action:{handler:"toolbar:action:print"}},v={name:"down",icon:"down",size:20,action:{context:this,handler:this.toBottom}},_=[];return s?(_.push(u),d>0&&_.push(b),n&&_.push(m),l&&_.push(p),o&&_.push(g),h&&_.push(f),c.target&&(_.push(y),e(print)&&_.push($)),(null==a?void 0:a.length)>0&&_.push(...a),_.push(v),this.buttons=[..._],this.toolbar=new yt({placement:r,buttons:_}),"relative"===t&&i&&this.toolbar.hide(),this):this}addButton(t){const e=this.toolbar,s=this.buttons;return s.splice(-1,0,t),e.attr({buttons:s}),e.refresh(),this}removeButton(t){return this.toolbar.remove(t),this}toTop(){const t=this.attr("afterScroll"),s=this.toolbar,i=this.chapters,r=this.count();return r>0&&(i.playing=!0),this.scrollTo(0,(()=>{s.hide("up"),s.show("down"),r>0&&(i.highlight(0),i.playing=!1),e(t)&&t.call(s,"up")})),this}_updateToolbar(t){let{top:e,min:s,max:i}=t;const r=this.toolbar,n=Math.ceil(e);return n<=s?(r.hide("up"),r.show("down")):n>=i?(r.hide("down"),r.show("up")):n>s&&n0&&(r.playing=!0),this.scrollTo(l,(()=>{i.hide("down"),i.show("up"),n>0&&(r.highlight(n-1),r.playing=!1),e(t)&&t.call(i,"bottom")})),this}scrollTo(t,e){return m(this.$scrollElement,t,e),this}enterReading(){const t=this.reader;return!t||t.reading||(this.toolbar.toggle(),t.enter()),this}exitReading(){const t=this.reader;return t&&t.reading?(this.toolbar.toggle(),t.exit(),this):this}switchReading(){const t=this.reader;return t?(t.toggle(),this):this}toggle(){const t=this.attr("position"),e=this.toolbar,i=this.drawer,r=this.chapters;return this.count()<1||("relative"!==t?(r.toggle(),e.highlight("toggle")):(e.toggle(),s((()=>{i.toggle()})))),this}print(){return this.reader.print(),this}_destroy(){const t=this.count();let e=this.anchors,s=this.chapters,i=this.drawer,r=this.reader,n=this.toolbar,l=!1;return this.removeListeners(),r&&r.destroy(),t>0&&s&&(l=s.isOutside(),s.destroy(),l&&i&&i.destroy()),e&&e.destroy(),n&&n.destroy(),this}destroy(){return this.$emit("beforeDestroy"),this._destroy()._default(),this.$emit("destroyed"),this}onToolbarUpdate(t){let{top:e,min:s,max:i}=t;return this._updateToolbar({top:e,min:s,max:i}),this}addListeners(){return this.attr("hasToolbar")?(this.$on("toolbar:update",this.onToolbarUpdate),this):this}removeListeners(){return this.attr("hasToolbar")?(this.$off("toolbar:update"),this):this}}if(Tt.DEFAULTS=n({articleElement:"#article",selector:"h2,h3,h4,h5,h6",parentElement:"#aside",scrollElement:"html,body",title:"目录",position:"relative",placement:"rtl",animationCurrent:!0,showCode:!0,hasToolbar:!0,closeOnClickModal:!0,showNavModalFirst:!1,anchorURL:"",stickyHeight:0,homepage:"",git:"",tags:"",issues:"",tools:[],reader:{target:"",title:"",enterReadingTip:"进入阅读模式,按 ESC 键可退出阅读模式"},customClass:"",afterSticky:null,afterToggle:null,afterScroll:null,chapterTextFilter:null}),null!==(xt=window)&&void 0!==xt&&xt.jQuery){const t=window.jQuery;t.extend(t.fn,{outline:function(e){let s=t(this);return new Tt(t.extend({},e,{articleElement:s}))}})}return Tt})); //# sourceMappingURL=outline.min.js.map diff --git a/docs/js/outline.min.js.map b/docs/js/outline.min.js.map index 865c464..eec0232 100644 --- a/docs/js/outline.min.js.map +++ b/docs/js/outline.min.js.map @@ -1 +1 @@ -{"version":3,"file":"outline.min.js","sources":["../../utils/lang/toString.js","../../utils/types/isFunction.js","../../utils/lang/later.js","../../utils/types/isObject.js","../../utils/types/isArray.js","../../utils/lang/cloneDeep.js","../../utils/lang/toTree.js","../../utils/types/isString.js","../../utils/types/isElement.js","../../utils/dom/hasClass.js","../../utils/dom/addClass.js","../../utils/lang/easeInQuad.js","../../utils/dom/_getScrollElement.js","../../utils/dom/scrollTo.js","../../utils/lang/hasOwn.js","../../utils/lang/extend.js","../../utils/observer/_subscribers.js","../../utils/observer/_hasDirectSubscribersFor.js","../../utils/observer/has.js","../../utils/observer/_hasSubscribers.js","../../utils/observer/emit.js","../../utils/types/isTypedArray.js","../../utils/lang/guid.js","../../utils/observer/_removeSubscriber.js","../../utils/observer/off.js","../../utils/observer/_removeSubscriberByToken.js","../../base.js","../../utils/observer/on.js","../../utils/lang/timeSlice.js","../../utils/dom/offsetTop.js","../../utils/dom/matches.js","../../utils/dom/getParentOrHost.js","../../utils/event/enum.js","../../utils/event/_off.js","../../utils/event/_delete.js","../../utils/event/purgeElement.js","../../utils/event/getListeners.js","../../utils/event/off.js","../../utils/event/on.js","../../utils/event/getTarget.js","../../utils/dom/resolveTextNode.js","../../utils/dom/closest.js","../../utils/event/stop.js","../../utils/icons/symbols.js","../../utils/icons/defaults.js","../../utils/icons/getSymbols.js","../../utils/icons/getSymbol.js","../../utils/icons/paint.js","../../utils/icons/add.js","../../utils/lang/trim.js","../../utils/types/isDOM.js","../../utils/types/isHTMLCollection.js","../../utils/types/isFragment.js","../../utils/types/isTextNode.js","../../utils/dom/setAttribute.js","../../utils/dom/setAttributes.js","../../utils/dom/createElement.js","../../utils/icons/createElement.js","../../utils/types/isSVG.js","../../utils/icons/icon.js","../../utils/dom/removeClass.js","../../_removeHeading.js","../../utils/types/isEmpty.js","../../getChapters.js","../../utils/lang/stripTags.js","../../_getChapterParentIdByDiffer.js","../../_getChaptersWithCode.js","../../anchors.js","../../_updateHeading.js","../../utils/types/tags.js","../../utils/types/isHTML.js","../../utils/lang/stripScripts.js","../../utils/dom/setProperty.js","../../zIndex.js","../../drawer.js","../../utils/dom/html.js","../../utils/event/at.js","../../utils/dom/getStyle.js","../../chapters.js","../../_paintChapters.js","../../utils/dom/inBounding.js","../../utils/dom/intersection.js","../../utils/types/isObjectLike.js","../../utils/types/isPlainObject.js","../../utils/lang/encodeHTML.js","../../message.js","../../command.js","../../commands.js","../../_createButton.js","../../toolbar.js","../../_updateSiblingElements.js","../../reader.js","../../outline.js"],"sourcesContent":["/**\r\n * Object 对象原型上的 toString 方法\r\n * ========================================================================\r\n * @method toString\r\n * @param {*} val\r\n * @returns {string}\r\n */\r\nconst toString = (val) => {\r\n return Object.prototype.toString.apply(val)\r\n}\r\n\r\nexport default toString\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测测试数据是否为 Function 类型\r\n * ========================================================================\r\n * @method isFunction\r\n * @param {*} val - (必须)待检测的数据\r\n * @returns {boolean} 'val' 是 Function 类型返回 true,否则返回 false\r\n */\r\nconst isFunction = (val) => {\r\n return typeof val === 'function' || toString(val) === '[object Function]'\r\n}\r\n\r\nexport default isFunction\r\n","import isFunction from '../types/isFunction'\r\n\r\n/**\r\n * later - 延迟执行方法\r\n * ========================================================================\r\n * @method later\r\n * @param {Function} fn\r\n * @param {Number} [delay]\r\n * @returns {number|boolean}\r\n */\r\nconst later = (fn, delay = 300) => {\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n return setTimeout(() => {\r\n fn()\r\n }, delay)\r\n}\r\n\r\nexport default later\r\n","import toString from '../lang/toString'\r\nimport isFunction from './isFunction'\r\n\r\n/**\r\n * 检测数据是否为 Object 类型\r\n * ========================================================================\r\n * @method isObject\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isObject = (o) => {\r\n return (\r\n (toString(o) === '[object Object]' ||\r\n typeof o === 'object' ||\r\n isFunction(o)) &&\r\n o !== null\r\n )\r\n}\r\n\r\nexport default isObject\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测数据是否为 Array 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isArray = (o) => {\r\n if (Array.isArray) {\r\n return Array.isArray(o)\r\n } else {\r\n return toString(o) === '[object Array]'\r\n }\r\n}\r\n\r\nexport default isArray\r\n","import isObject from '../types/isObject'\r\nimport isArray from '../types/isArray'\r\n\r\n/**\r\n * 深拷贝对象函数\r\n * ========================================================================\r\n * @methods cloneDeep\r\n * @param {Object} obj - 深拷贝的对象\r\n * @returns {Array|Object|*}\r\n *\r\n * @example\r\n * const arr = cloneDeep([2,3,4,6])\r\n * => [2,3,4,6]\r\n */\r\nconst cloneDeep = (obj) => {\r\n let clone = {}\r\n\r\n if (obj === null) {\r\n return null\r\n }\r\n\r\n if (isArray(obj)) {\r\n clone = Array.from(obj)\r\n } else {\r\n clone = Object.assign({}, obj)\r\n Object.keys(clone).forEach((key) => {\r\n return (clone[key] = isObject(obj[key]) ? cloneDeep(obj[key]) : obj[key])\r\n })\r\n }\r\n\r\n return clone\r\n}\r\n\r\nexport default cloneDeep\r\n","const toTree = (list, nodeKey, parentKey) => {\r\n const map = {}\r\n const roots = []\r\n\r\n list.forEach((item, i) => {\r\n // initialize the map\r\n map[item[nodeKey]] = i\r\n // initialize the children\r\n item.children = []\r\n })\r\n\r\n list.forEach((item) => {\r\n const node = list[map[item[parentKey]]]\r\n\r\n if (item[parentKey] !== -1) {\r\n // if you have dangling branches check that map[node.parentId] exists\r\n node.children.push(item)\r\n } else {\r\n roots.push(item)\r\n }\r\n })\r\n\r\n return roots\r\n}\r\n\r\nexport default toTree\r\n","/**\r\n * 检测数据是否为 String 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\nconst isString = (str) => {\r\n return typeof str === 'string'\r\n}\r\n\r\nexport default isString\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测数据是否为 HTMLElement DOM 节点\r\n * ========================================================================\r\n * @method isElement\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isElement = (o) => {\r\n return !!(isObject(o) && o.nodeName && o.tagName && o.nodeType === 1)\r\n}\r\n\r\nexport default isElement\r\n","import isElement from '../types/isElement'\r\n/**\r\n * 检测 DOM 节点是否包含名为 className 的样式\r\n * ========================================================================\r\n * @method hasClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst hasClass = (el, className) => {\r\n const pattern = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\r\n let allClass\r\n let classList\r\n\r\n if (!isElement(el)) {\r\n return false\r\n }\r\n\r\n allClass = el.className\r\n\r\n if (!allClass) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList && classList.contains) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!pattern.exec(allClass)\r\n}\r\n\r\nexport default hasClass\r\n","import hasClass from './hasClass'\r\n\r\n/**\r\n * 给 DOM 节点添加名为 className 的样式\r\n * ========================================================================\r\n * @method addClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst addClass = (el, className) => {\r\n let classList\r\n let allClass\r\n\r\n if (hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.add) {\r\n classList.add(className)\r\n } else {\r\n allClass = el.className\r\n allClass += allClass.length > 0 ? ' ' + className : className\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default addClass\r\n","/**\r\n * 返回给定值的平方值\r\n * ========================================================================\r\n * @method easeInQuad\r\n * @param {Number} x\r\n * @returns {number}\r\n */\r\nconst easeInQuad = (x) => {\r\n return x * x\r\n}\r\n\r\nexport default easeInQuad\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\n\r\n/**\r\n * 通过给的 scrollElement 参数,获取滚动 DOM 元素\r\n * ========================================================================\r\n * @method _getScrollElement\r\n * @param {String|HTMLElement} scrollElement\r\n * @returns {Element}\r\n * @private\r\n */\r\nconst _getScrollElement = (scrollElement = null) => {\r\n let $rootElements\r\n let $scrollElement\r\n\r\n if (!scrollElement) {\r\n $rootElements = document.querySelectorAll('html,body')\r\n $scrollElement =\r\n $rootElements[0].scrollTop - $rootElements[1].scrollTop >= 0\r\n ? $rootElements[0]\r\n : $rootElements[1]\r\n } else {\r\n if (isString(scrollElement)) {\r\n $scrollElement = document.querySelector(scrollElement)\r\n } else if (isElement(scrollElement)) {\r\n $scrollElement = scrollElement\r\n }\r\n }\r\n\r\n return $scrollElement\r\n}\r\n\r\nexport default _getScrollElement\r\n","import easeInQuad from '../lang/easeInQuad'\r\nimport isFunction from '../types/isFunction'\r\nimport _getScrollElement from './_getScrollElement'\r\n\r\n/**\r\n * 指定 rootElement DOM 节点滚动到指定 top 位置\r\n * ========================================================================\r\n * @method scrollTo\r\n * @param {HTMLElement|Object} [scrollElement] - (必须)要滚动的 DOM 节点\r\n * @param {Number} top - (必须)滚动的 scrollTop 数值\r\n * @param {Function} [afterStop] - (可选)滚动完成的回调函数\r\n */\r\nconst scrollTo = (scrollElement, top, afterStop) => {\r\n const $scrollElement = _getScrollElement(scrollElement)\r\n let scrollTop = $scrollElement.scrollTop\r\n let step = 0\r\n const distance = top - scrollTop\r\n const MAX_HEIGHT = $scrollElement.scrollHeight\r\n const MAX_TOP = top - MAX_HEIGHT <= 0 ? top : MAX_HEIGHT\r\n const stop = (top) => {\r\n if (isFunction(afterStop)) {\r\n afterStop(top)\r\n }\r\n\r\n return false\r\n }\r\n const play = () => {\r\n step += 1\r\n\r\n // 向上滚动\r\n if (distance < 0) {\r\n scrollTop -= easeInQuad(step)\r\n $scrollElement.scrollTop = scrollTop\r\n\r\n if (scrollTop <= top) {\r\n $scrollElement.scrollTop = top\r\n return stop(top)\r\n }\r\n } else {\r\n scrollTop += easeInQuad(step)\r\n $scrollElement.scrollTop = scrollTop\r\n\r\n if (scrollTop >= MAX_TOP) {\r\n $scrollElement.scrollTop = MAX_TOP\r\n return stop(MAX_TOP)\r\n }\r\n }\r\n\r\n // eslint-disable-next-line compat/compat\r\n requestAnimationFrame(play)\r\n }\r\n\r\n // eslint-disable-next-line compat/compat\r\n requestAnimationFrame(play)\r\n}\r\n\r\nexport default scrollTo\r\n","/**\r\n * 检测对象自身属性中是否具有指定的属性。\r\n * ========================================================================\r\n * @method hasOwn\r\n * @param {Object} obj - (必须)检测的目标对象\r\n * @param {String} prop - (必须)属性名\r\n * @returns {Boolean}\r\n */\r\nconst hasOwn = (obj, prop) => {\r\n const hasOwnProperty = Object.prototype.hasOwnProperty\r\n return obj && hasOwnProperty.call(obj, prop)\r\n}\r\n\r\nexport default hasOwn\r\n","import hasOwn from './hasOwn'\r\n\r\n/**\r\n * 扩展对象\r\n * ========================================================================\r\n * @method extend\r\n * @param {Object} origin\r\n * @param {Object} source\r\n */\r\nconst extend = (origin, source) => {\r\n const keys = Object.keys(source)\r\n\r\n keys.forEach((prop) => {\r\n if (hasOwn(source, prop)) {\r\n origin[prop] = source[prop]\r\n }\r\n })\r\n}\r\n\r\nexport default extend\r\n","/**\r\n * 存储订阅者(主题和处理器的)私有对象\r\n * ========================================================================\r\n * @type {{}}\r\n * @private\r\n */\r\nconst _subscribers = {}\r\n\r\nexport default _subscribers\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 判断是否存在与给定 topic 完全匹配的订阅者信息\r\n * ========================================================================\r\n * @method _hasDirectSubscribersFor\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasDirectSubscribersFor = (topic) => {\r\n return hasOwn(_subscribers, topic) && _subscribers[topic].length > 0\r\n}\r\n\r\nexport default _hasDirectSubscribersFor\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\nimport _hasSubscribers from './_hasSubscribers'\r\n\r\n/**\r\n * 判断是否存在包含 topic 指定的订阅者信息\r\n * ========================================================================\r\n * @method has\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Boolean} [isDirect] - (可选)是否为直接的主题,默认值:true\r\n * @returns {Boolean}\r\n */\r\nconst has = (topic, isDirect = true) => {\r\n return isDirect ? _hasDirectSubscribersFor(topic) : _hasSubscribers(topic)\r\n}\r\n\r\nexport default has\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * 判断是否存在包含给定 topic 相关的订阅者信息\r\n * ========================================================================\r\n * @method _hasSubscribers\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasSubscribers = (topic) => {\r\n let found = _hasDirectSubscribersFor(topic)\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (!found && position !== -1) {\r\n topic = topic.substring(0, position)\r\n position = topic.lastIndexOf('.')\r\n found = _hasDirectSubscribersFor(topic)\r\n }\r\n\r\n return found\r\n}\r\n\r\nexport default _hasSubscribers\r\n","import isTypedArray from '../types/isTypedArray'\r\nimport _subscribers from './_subscribers'\r\nimport has from './has'\r\nimport _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * (异步)发布订阅主题信息\r\n * ========================================================================\r\n * 主题默认是异步发布的。确保在消费者处理主题时,主题的发起者不会被阻止。\r\n * ========================================================================\r\n * @method emit\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Object} [data] - (可选)数据对象\r\n * @param {Boolean} [async] - (可选) 是否异步发布\r\n */\r\nconst emit = (topic, data, async = true) => {\r\n const execute = (topic) => {\r\n if (!_hasDirectSubscribersFor(topic)) {\r\n return false\r\n }\r\n\r\n _subscribers[topic].forEach((subscriber) => {\r\n // 针对 mqtt 消息服务返回的 Uint8Array 类似的 typed arrays 格式的数据\r\n // 采用 toString() 方法转化为普通(JSON)字符串\r\n const message = isTypedArray(data) ? data.toString() : data\r\n\r\n subscriber.callback.call(subscriber.context || subscriber, message)\r\n })\r\n }\r\n const deliver = () => {\r\n let subscriber = topic\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (position !== -1) {\r\n subscriber = subscriber.substring(0, position)\r\n position = subscriber.lastIndexOf('.')\r\n\r\n execute(subscriber)\r\n }\r\n\r\n // 执行 topic 对应的处理器\r\n execute(topic)\r\n // 执行特殊 topic:'*'(监听全部消息的发布)\r\n execute('*')\r\n }\r\n\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (async) {\r\n setTimeout(deliver, 10)\r\n } else {\r\n deliver()\r\n }\r\n}\r\n\r\nexport default emit\r\n","import toString from '../lang/toString'\r\n/**\r\n * 判断检测数据是否为 Typed Arrays 类型的数据\r\n * ========================================================================\r\n * @param {*} val\r\n * @returns {boolean}\r\n */\r\nconst isTypedArray = (val) => {\r\n const TYPES = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]',\r\n '[object BigInt64Array]',\r\n '[object BigUint64Array]'\r\n ]\r\n\r\n return TYPES.indexOf(toString(val)) > -1\r\n}\r\n\r\nexport default isTypedArray\r\n","/**\r\n * 生成唯一 id 字符串的函数\r\n * ========================================================================\r\n * @method guid\r\n * @param {String} [prefix] - 生成 id 的前缀字符串\r\n * @return {String} 返回一个表示唯一 id 的字符串\r\n */\r\nconst guid = (() => {\r\n let uuid = 0\r\n\r\n return (prefix) => {\r\n uuid += 1\r\n\r\n return prefix ? prefix + '-' + uuid : 'guid-' + uuid\r\n }\r\n})()\r\n\r\nexport default guid\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 删除与给定 topic 相同的订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriber\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _removeSubscriber = (topic) => {\r\n if (!hasOwn(_subscribers, topic)) {\r\n return false\r\n }\r\n\r\n delete _subscribers[topic]\r\n}\r\n\r\nexport default _removeSubscriber\r\n","import has from './has'\r\nimport _removeSubscriber from './_removeSubscriber'\r\nimport _removeSubscriberByToken from './_removeSubscriberByToken'\r\n\r\n/**\r\n * 取消订阅主题\r\n * ========================================================================\r\n * @method off\r\n * @param {String} topic - (必须)订阅的主题\r\n * @param {Function|String} [token] - (可选)订阅主题的处理器函数或者唯一 Id 值\r\n */\r\nconst off = (topic, token) => {\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (token) {\r\n _removeSubscriberByToken(token)\r\n } else {\r\n _removeSubscriber(topic)\r\n }\r\n}\r\n\r\nexport default off\r\n","import _subscribers from './_subscribers'\r\nimport _removeSubscriber from './_removeSubscriber'\r\n\r\n/**\r\n * 通过订阅者 token 值删除订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriberByToken\r\n * @param {String} token - 订阅者 token 字符串\r\n * @returns {boolean}\r\n * @private\r\n */\r\nconst _removeSubscriberByToken = (token) => {\r\n const keys = Object.keys(_subscribers)\r\n let index = -1\r\n\r\n if (!token || keys.length < 1) {\r\n return false\r\n }\r\n\r\n keys.forEach((subject) => {\r\n const subscriber = _subscribers[subject]\r\n let topic\r\n\r\n subscriber.forEach((execution, j) => {\r\n if (execution.callback === token || execution.token === token) {\r\n topic = execution.topic\r\n subscriber.splice(index, j)\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (subscriber.length < 1) {\r\n _removeSubscriber(topic)\r\n }\r\n })\r\n}\r\n\r\nexport default _removeSubscriberByToken\r\n","import isString from './utils/types/isString'\r\nimport hasOwn from './utils/lang/hasOwn'\r\nimport isObject from './utils/types/isObject'\r\nimport extend from './utils/lang/extend'\r\nimport publish from './utils/observer/emit'\r\nimport subscribe from './utils/observer/on'\r\nimport unsubscribe from './utils/observer/off'\r\n\r\nclass Base {\r\n constructor(options) {\r\n this.attrs = {}\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options).render().addListeners()\r\n return this\r\n }\r\n\r\n attr(prop, value) {\r\n const attrs = this.attrs\r\n\r\n if (isString(prop)) {\r\n // 只能扩展 attrs 中已有的属性\r\n if (value && hasOwn(attrs, prop)) {\r\n // 更新单个配置信息\r\n attrs[prop] = value\r\n return this\r\n }\r\n\r\n // 只传递 prop 参数,则返回对应的属性值\r\n return attrs[prop]\r\n } else if (isObject(prop)) {\r\n // 批量更新配置信息\r\n extend(attrs, prop)\r\n\r\n return this\r\n } else if (arguments.length === 0) {\r\n // 不传递参数,直接返回整个\r\n return attrs\r\n }\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n return this\r\n }\r\n\r\n refresh() {\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.removeListeners()\r\n return this\r\n }\r\n\r\n reload(options) {\r\n let attrs = this.attr()\r\n\r\n if (options) {\r\n attrs = this.attr(options)\r\n }\r\n\r\n this.destroy().initialize(attrs)\r\n\r\n return this\r\n }\r\n\r\n $emit(event, data) {\r\n publish(event, data)\r\n return this\r\n }\r\n\r\n $on(event, callback) {\r\n subscribe(event, callback, this)\r\n return this\r\n }\r\n\r\n $off(event, callback) {\r\n unsubscribe(event, callback)\r\n return this\r\n }\r\n\r\n addListeners() {\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n return this\r\n }\r\n}\r\n\r\nexport default Base\r\n","import _subscribers from './_subscribers'\r\nimport isFunction from '../types/isFunction'\r\nimport guid from '../lang/guid'\r\n\r\n/**\r\n * 订阅主题,并给出处理器函数\r\n * ========================================================================\r\n * @method on\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Function} handler - (必须)主题的处理器函数\r\n * @param {Object} [context] - (可选)指定 this 执行上下文\r\n * @return {String} - 唯一的 token 字符串,例如:'guid-1'。\r\n */\r\nconst on = (topic, handler, context = null) => {\r\n const token = guid()\r\n let subject = typeof topic === 'symbol' ? topic.toString() : topic\r\n\r\n if (!isFunction(handler)) {\r\n return ''\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (!_subscribers[subject]) {\r\n _subscribers[subject] = []\r\n }\r\n\r\n _subscribers[subject].push({\r\n topic: subject,\r\n callback: handler,\r\n context,\r\n token\r\n })\r\n\r\n return token\r\n}\r\n\r\nexport default on\r\n","/**\r\n * timeSlice.js 时间切片功能函数\r\n * ====================================================\r\n * Created By: Yaohaixiao\r\n * Update: 2023.09.04\r\n */\r\nimport isFunction from '../types/isFunction'\r\nimport later from './later'\r\n\r\nconst queue = []\r\nlet isHandling\r\nlet done\r\n\r\n// Shim from https://developers.google.com/web/updates/2015/08/using-requestidlecallback\r\nif (typeof window.requestIdleCallback === 'undefined') {\r\n window.requestIdleCallback = function (cb) {\r\n const start = Date.now()\r\n return later(function () {\r\n cb({\r\n didTimeout: false,\r\n timeRemaining: function () {\r\n return Math.max(0, 50 - (Date.now() - start))\r\n }\r\n })\r\n }, 10)\r\n }\r\n\r\n window.cancelIdleCallback = function (id) {\r\n clearTimeout(id)\r\n }\r\n}\r\n\r\nfunction runIdle(idleDeadline) {\r\n while (idleDeadline.timeRemaining() > 0 && queue.length) {\r\n const fn = queue.shift()\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n fn()\r\n }\r\n\r\n if (queue.length) {\r\n isHandling = requestIdleCallback(runIdle)\r\n } else {\r\n isHandling = 0\r\n\r\n if (isFunction(done)) {\r\n done()\r\n done = null\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 时间切片功能函数:主要用于优化长时任务的性能,将长时任务分解成\r\n * 多个短时间任务\r\n * ====================================================\r\n * @param {Function} fn - 需要在空闲时执行的回调函数\r\n * @param {Function} afterComplete - queen 的\r\n * @return {(function(): (boolean|undefined))|*|boolean}\r\n */\r\nconst timeSlice = (fn, afterComplete = null) => {\r\n queue.push(fn)\r\n\r\n if (isFunction(afterComplete)) {\r\n done = afterComplete\r\n }\r\n\r\n if (!isHandling) {\r\n requestIdleCallback(runIdle)\r\n }\r\n}\r\n\r\nexport default timeSlice\r\n","/**\r\n * 获取 DOM 节点相对于窗口的 left (纵坐标)值\r\n * ========================================================================\r\n * @method offsetTop\r\n * @param {HTMLElement} el - DOM 节点\r\n * @returns {Number}\r\n */\r\nconst offsetTop = (el) => {\r\n let top = el.offsetTop\r\n\r\n if (el.offsetParent !== null) {\r\n top += offsetTop(el.offsetParent)\r\n }\r\n\r\n return top\r\n}\r\n\r\nexport default offsetTop\r\n","/**\r\n * 获取 options 节点下匹配 selector 选择器的 DOM 节点\r\n * ========================================================================\r\n * Element.matches() 方法可以用来判断 DOM 元素是否与给定的选择器匹配,事件代理判断是\r\n * 否触发绑定的代理事件回调函数,关键就是使用 Element.matches() 辨别当前事件触发的目\r\n * 标 DOM 元素是否为事件代理所期望触发的目标。\r\n * ========================================================================\r\n * @method matches\r\n * @see https://developer.mozilla.org/en-US/docs/web/api/element/matches\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)匹配 DOM 元素的选择器\r\n * @returns {Boolean}\r\n */\r\nconst matches = (el, selector = '') => {\r\n const sel = selector.replace(/^>/i, '')\r\n\r\n if (!selector || !sel || !el) {\r\n return false\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el.matches) {\r\n return el.matches(sel)\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(sel)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport default matches\r\n","/**\r\n * 获取 DOM 元素的父节点\r\n * ========================================================================\r\n * @method getParentOrHost\r\n * @param {*|HTMLElement} el - (必须)要获取父节点的 DOM 元素\r\n * @returns {*|HTMLElement}\r\n */\r\nconst getParentOrHost = (el) => {\r\n return el.host && el !== document && el.host.nodeType\r\n ? el.host\r\n : el.parentNode\r\n}\r\n\r\nexport default getParentOrHost\r\n","export const CAPTURE_EVENTS = [\r\n 'focusout',\r\n 'blur',\r\n 'focusin',\r\n 'focus',\r\n 'load',\r\n 'unload',\r\n 'mouseenter',\r\n 'mouseleave'\r\n]\r\n","import { CAPTURE_EVENTS } from './enum'\r\nimport _delete from './_delete'\r\n\r\n/**\r\n * (私有方法)取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method _off\r\n * @param {HTMLElement} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} fn - (必须)事件处理器回调函数\r\n * @private\r\n */\r\nconst _off = (el, type, fn) => {\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n /* istanbul ignore else */\r\n if (fn._delegateListener) {\r\n fn = fn._delegateListener\r\n delete fn._delegateListener\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n _delete(el, type, fn)\r\n\r\n el.removeEventListener(type, fn, capture)\r\n}\r\n\r\nexport default _off\r\n","/**\r\n * 删除 DOM 元素缓存的 _listeners 数据\r\n * ========================================================================\r\n * @method _delete\r\n * @param {HTMLElement} el - 要删除 listener 的 DOM 元素\r\n * @param {String} type - 事件类型(名称)\r\n * @param {Function} [fn] - 事件处理器回调函数\r\n */\r\nconst _delete = function (el, type, fn) {\r\n const listeners = el._listeners\r\n let index = -1\r\n\r\n if (listeners.length < 1) {\r\n return false\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n listeners.forEach((listener, i) => {\r\n const handler = listener.fn\r\n\r\n if (type === listener.type) {\r\n index = i\r\n\r\n if (handler === fn) {\r\n index = i\r\n }\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n}\r\n\r\nexport default _delete\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport getListeners from './getListeners'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 销毁(type 类型的)代理事件绑定\r\n * ========================================================================\r\n * 1. 设置了事件类型 type,则销毁指定类型的事件绑定,否则清除所有代理事件绑定\r\n * 2. recurse 设置为 true,递归销毁子节点全部事件绑定\r\n * ========================================================================\r\n * @method purgeElement\r\n * @param {HTMLElement|String} el - (必须)DOM 元素或者其选择器\r\n * @param {String|Boolean} type - (必须)事件类型\r\n * @param {Boolean} [recurse] - (可选)是否递归销毁子节点所有事件绑定\r\n */\r\nconst purgeElement = function (el, type, recurse = false) {\r\n const $element = isString(el) ? document.querySelector(el) : el\r\n const $children = $element.childNodes\r\n const listeners = getListeners($element, type)\r\n\r\n listeners.forEach((listener) => {\r\n _off($element, listener.type, listener.fn)\r\n })\r\n\r\n if (\r\n (recurse || type === true || arguments.length === 1) &&\r\n $element &&\r\n $children\r\n ) {\r\n $children.forEach(($child) => {\r\n if (isElement($child)) {\r\n purgeElement($child, type, recurse)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default purgeElement\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 获取 DOM 元素(type 事件类型)事件绑定信息\r\n * ========================================================================\r\n * 如果设置了事件类型 type, 则返回指定类型的事件绑定信息,否则返回所有事件绑定信息\r\n * ========================================================================\r\n * @methods getListeners\r\n * @param {HTMLElement} el - (必须)要获取事件绑定信息的 DOM 元素\r\n * @param {String} [type] - (可选)事件类型\r\n * @returns {Array} - 已绑定的事件信息\r\n */\r\nconst getListeners = (el, type) => {\r\n let listeners = el._listeners || []\r\n\r\n if (isString(type) && type) {\r\n listeners = listeners.filter((listener) => {\r\n return listener.type === type\r\n })\r\n }\r\n\r\n return listeners\r\n}\r\n\r\nexport default getListeners\r\n","import purgeElement from './purgeElement'\r\nimport isFunction from '../types/isFunction'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method off\r\n * @param {HTMLElement|Object} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} [fn] - (可选)事件处理器回调函数\r\n */\r\nconst off = (el, type, fn) => {\r\n // 如果不设置 fn 参数,默认清除 el 元素上绑定的所有事件处理器\r\n if (!isFunction(fn)) {\r\n purgeElement(el, type)\r\n return false\r\n }\r\n\r\n _off(el, type, fn)\r\n}\r\n\r\nexport default off\r\n","import closest from '../dom/closest'\r\nimport off from './off'\r\nimport getTarget from './getTarget'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定代理事件\r\n * ========================================================================\r\n * @method on\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String} selector - (必须)事件代理目标 DOM 元素的选择器\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (可选) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst on = (el, selector, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n const listener = function (evt) {\r\n const target = getTarget(evt)\r\n // 通过 Element.matches 方法获得点击的目标元素\r\n const delegateTarget = closest(target, selector, el)\r\n let overrideContext = context || el\r\n\r\n evt.delegateTarget = delegateTarget\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (delegateTarget) {\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n }\r\n\r\n if (!el) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n selector,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default on\r\n","import resolveTextNode from '../dom/resolveTextNode'\r\n\r\n/**\r\n * 返回触发事件的 target DOM 元素\r\n * ========================================================================\r\n * @method getTarget\r\n * @param {Event} evt - Event 对象\r\n * @return {HTMLElement} - Event 对象的 target DOM 元素\r\n */\r\nconst getTarget = function (evt) {\r\n const target = evt.target\r\n\r\n return resolveTextNode(target)\r\n}\r\n\r\nexport default getTarget\r\n","/**\r\n * 在某些情况下,某些浏览器(例如:Safari 浏览器)会返回实际的目标元素内部的文本节点。\r\n * resolveTextNode() 方法则会返回实际的目标节点。\r\n * ========================================================================\r\n * @method resolveTextNode\r\n * @param {HTMLElement|Text} el - 要解析的节点\r\n * @return {*|HTMLElement} - 实际的目标 DOM 节点\r\n */\r\nconst resolveTextNode = function (el) {\r\n if (el && el.nodeType === 3) {\r\n return el.parentNode\r\n }\r\n\r\n return el\r\n}\r\n\r\nexport default resolveTextNode\r\n","import matches from './matches'\r\nimport getParentOrHost from './getParentOrHost'\r\n\r\n/**\r\n * 获取 options 元素父元素最近的包含 selector 选择器的元素\r\n * ========================================================================\r\n * @method closest\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)DOM 元素的选择其\r\n * @param {HTMLElement} [ctx] - (必须)比对的 DOM 元素\r\n * @param {Boolean} [includeCTX] - (必须)是否包含 context DOM 元素\r\n * @returns {null|HTMLElement} - 返回最接近的 DOM 元素\r\n */\r\nconst closest = (el, selector, ctx, includeCTX) => {\r\n const context = ctx || document\r\n\r\n if (!el) {\r\n return null\r\n }\r\n\r\n do {\r\n /* istanbul ignore else */\r\n if (\r\n (selector != null &&\r\n (selector.startsWith('>')\r\n ? el.parentNode === context && matches(el, selector)\r\n : matches(el, selector))) ||\r\n (includeCTX && el === context)\r\n ) {\r\n return el\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el === context) {\r\n break\r\n }\r\n\r\n /* jshint boss:true */\r\n } while ((el = getParentOrHost(el)))\r\n}\r\n\r\nexport default closest\r\n","/**\r\n * 停止事件(阻止默认行为和阻止事件的捕获或冒泡)\r\n * ========================================================================\r\n * @method stop\r\n * @param {Event} evt - 事件对象\r\n *\r\n * @example\r\n *
\r\n * Service\r\n * Help\r\n *
\r\n *\r\n * const $nav = document.querySelector('#nav')\r\n * const $service = document.querySelector('.anchor')\r\n *\r\n * on($nav, 'click', function(evt) {\r\n * console.log('你点击了导航栏')\r\n * })\r\n *\r\n * on($anchor, 'click', function(evt) {\r\n * console.log('tagName', this.tagName)\r\n *\r\n * // 工作台输出:'a'\r\n * // 不会触发事件冒泡,输出:'你点击了导航栏'\r\n * // 也不会切换到 href 属性的页面,阻止了点击链接的默认行为\r\n * stopEvent(evt)\r\n * })\r\n */\r\nconst stop = function (evt) {\r\n evt.stopPropagation()\r\n evt.preventDefault()\r\n}\r\n\r\nexport default stop\r\n","import DEFAULTS from './defaults'\r\n\r\nconst SYMBOLS = [...DEFAULTS]\r\n\r\nexport default SYMBOLS\r\n","const DEFAULTS = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n]\r\n\r\nexport default DEFAULTS\r\n","import isString from '../types/isString'\r\nimport getSymbol from './getSymbol'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n *\r\n * @method getSymbols\r\n * @param {String} [name]\r\n * @param {String} [iconSet]\r\n * @returns {string[]|*}\r\n */\r\nconst getSymbols = (name, iconSet = 'icon') => {\r\n if (isString(name)) {\r\n return getSymbol(name, iconSet)\r\n }\r\n\r\n return [...SYMBOLS]\r\n}\r\n\r\nexport default getSymbols\r\n","import SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method getSymbol\r\n * @param {String} name\r\n * @param {String} [iconSet]\r\n * @returns {String}\r\n */\r\nconst getSymbol = (name, iconSet = 'icon') => {\r\n const patternName = /id=\"(.*?)\"/\r\n const patternSet = /^(\\w+)-/\r\n const symbols = SYMBOLS\r\n\r\n return symbols.find((symbol) => {\r\n const names = patternName.exec(symbol)\r\n const fullName = names[1]\r\n const sets = patternSet.exec(fullName)\r\n const setName = sets[1]\r\n const iconName =\r\n iconSet === 'icon' ? `${iconSet}-${name}` : `${iconSet}-icon-${name}`\r\n\r\n return setName === iconSet && fullName === iconName\r\n })\r\n}\r\n\r\nexport default getSymbol\r\n","import add from './add'\r\nimport getSymbols from './getSymbols'\r\n\r\n/**\r\n * 绘制 SVG 图标集\r\n * ========================================================================\r\n * @method paint\r\n * @param {String|Array} symbol\r\n */\r\nconst paint = (symbol = '') => {\r\n const $body = document.body\r\n let $icons = document.querySelector('#outline-icons')\r\n let symbols = []\r\n\r\n add(symbol)\r\n symbols = getSymbols()\r\n\r\n if ($icons) {\r\n $icons.innerHTML = symbols.join('')\r\n } else {\r\n $icons = document.createElement('div')\r\n $icons.innerHTML =\r\n ``\r\n $body.insertBefore($icons.firstChild, $body.firstChild)\r\n }\r\n}\r\n\r\nexport default paint\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method add\r\n * @param {Array|String} symbols\r\n * @return {Boolean}\r\n */\r\nconst add = (symbols) => {\r\n if (!symbols) {\r\n return false\r\n }\r\n\r\n if (isArray(symbols) && symbols.length > 0) {\r\n symbols.forEach((symbol) => {\r\n /* istanbul ignore else */\r\n if (SYMBOLS.indexOf(symbol) === -1 && isString(symbol)) {\r\n SYMBOLS.push(symbol)\r\n }\r\n })\r\n } else {\r\n /* istanbul ignore else */\r\n if (isString(symbols)) {\r\n SYMBOLS.push(symbols)\r\n }\r\n }\r\n}\r\n\r\nexport default add\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 清楚字符串起始位置所有的空格\r\n * ========================================================================\r\n * @method trim\r\n * @param {string} str\r\n * @returns {string|Boolean}\r\n */\r\nconst trim = (str) => {\r\n if (!isString(str)) {\r\n return false\r\n }\r\n return str.replace(/(^\\s+)|(\\s+$)/g, '')\r\n}\r\n\r\nexport default trim\r\n","import isObject from './isObject'\r\nimport isElement from './isElement'\r\nimport isHTMLCollection from './isHTMLCollection'\r\nimport isFragment from './isFragment'\r\nimport isTextNode from './isTextNode'\r\n\r\nconst isDOM = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (isElement(el) || isHTMLCollection(el) || isFragment(el) || isTextNode(el))\r\n )\r\n}\r\n\r\nexport default isDOM\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isHTMLCollection = (el) => {\r\n return !!(isObject(el) && toString(el) === '[object NodeList]')\r\n}\r\n\r\nexport default isHTMLCollection\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isFragment = (fragment) => {\r\n return !!(\r\n isObject(fragment) && toString(fragment) === '[object DocumentFragment]'\r\n )\r\n}\r\n\r\nexport default isFragment\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isTextNode = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (toString(el) === '[object Text]' || (el.tagName && el.nodeType === 3))\r\n )\r\n}\r\n\r\nexport default isTextNode\r\n","/**\r\n * 给 DOM 节点设置属性/值\r\n * ========================================================================\r\n * @method setAttribute\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} attr - 属性名称\r\n * @param {String|Number|Boolean} value - 属性值\r\n */\r\nconst setAttribute = (el, attr, value) => {\r\n let tagName = el.tagName.toLowerCase()\r\n\r\n switch (attr) {\r\n case 'style':\r\n el.style.cssText = value\r\n break\r\n case 'value':\r\n if (tagName === 'input' || tagName === 'textarea') {\r\n el.value = value\r\n } else {\r\n el.setAttribute(attr, value)\r\n }\r\n break\r\n case 'htmlFor':\r\n el.setAttribute('for', value)\r\n break\r\n case 'className':\r\n el.className = value\r\n break\r\n case 'innerHTML':\r\n el.innerHTML = value\r\n break\r\n case 'innerText':\r\n el.innerText = value\r\n break\r\n default:\r\n el.setAttribute(attr, value)\r\n break\r\n }\r\n}\r\n\r\nexport default setAttribute\r\n","import isObject from '../types/isObject'\r\nimport hasOwn from '../lang/hasOwn'\r\nimport setAttribute from './setAttribute'\r\n\r\nconst setAttributes = (el, attrs) => {\r\n if (!el || !isObject(attrs)) {\r\n return false\r\n }\r\n\r\n Object.keys(attrs).forEach((attr) => {\r\n const value = attrs[attr]\r\n if (hasOwn(attrs, attr)) {\r\n setAttribute(el, attr, value)\r\n }\r\n })\r\n}\r\n\r\nexport default setAttributes\r\n","import isObject from '../types/isObject'\r\nimport isString from '../types/isString'\r\nimport isArray from '../types/isArray'\r\nimport isDOM from '../types/isDOM'\r\nimport setAttributes from './setAttributes'\r\n\r\n/**\r\n * 创建 DOM 节点,并添加属性和子节点\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} tagName - 标签名称\r\n * @param {Object|Array|HTMLElement|DocumentFragment|String} attrs - 属性对象或者子节点\r\n * @param {Array|HTMLElement|DocumentFragment|String} [children] - 子节点数组\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (tagName, attrs, children) => {\r\n const $fragment = document.createDocumentFragment()\r\n const $el = document.createElement(tagName)\r\n const isValidChild = (child) => {\r\n return isDOM(child) || isString(child)\r\n }\r\n const append = (child) => {\r\n let $child\r\n\r\n if (!isValidChild(child)) {\r\n return false\r\n }\r\n\r\n if (isDOM(child)) {\r\n $child = child\r\n } else if (isString(child)) {\r\n $child = document.createTextNode(child)\r\n }\r\n\r\n $fragment.appendChild($child)\r\n }\r\n\r\n if (isObject(attrs)) {\r\n setAttributes($el, attrs)\r\n } else if (isArray(attrs) && attrs.every((attr) => isValidChild(attr))) {\r\n attrs.forEach((child) => {\r\n append(child)\r\n })\r\n } else if (isDOM(attrs)) {\r\n append(attrs)\r\n } else if (isString(attrs)) {\r\n append(document.createTextNode(attrs))\r\n }\r\n\r\n if (isArray(children)) {\r\n children.forEach((child) => {\r\n append(child)\r\n })\r\n } else {\r\n append(children)\r\n }\r\n\r\n $el.appendChild($fragment)\r\n\r\n return $el\r\n}\r\n\r\nexport default createElement\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport isSVG from '../types/isSVG'\r\nimport setAttributes from '../dom/setAttributes'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @param {Object} [options.attrs]\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (name, options = {}) => {\r\n const ICON = 'outline-icon'\r\n const size = options.size || 0\r\n const color = options.color || ''\r\n const iconSet = options.iconSet || ''\r\n const width = isArray(size) ? size[0] : size\r\n const height = isArray(size) ? size[1] : size\r\n const defaultRules = size ? `width:${width}px;height:${height}px;` : ''\r\n const cssRules = color ? defaultRules + `color:${color}` : defaultRules\r\n const attrs = options.attrs || {}\r\n const $icon = document.createElement('i')\r\n let binds = ''\r\n let svg = ''\r\n let $svg\r\n\r\n if (!isString(name)) {\r\n return null\r\n }\r\n\r\n if (isSVG(name)) {\r\n svg = name\r\n } else {\r\n binds =\r\n iconSet && iconSet !== 'icon'\r\n ? `xlink:href=\"#${iconSet}-icon-${name}\"`\r\n : `xlink:href=\"#icon-${name}\"`\r\n svg = ``\r\n }\r\n\r\n $icon.innerHTML = svg\r\n\r\n if (attrs.className) {\r\n attrs.className = `${ICON} ${attrs.className}`\r\n } else {\r\n attrs.className = ICON\r\n }\r\n\r\n setAttributes($icon, attrs)\r\n\r\n $svg = $icon.querySelector('svg')\r\n setAttributes($svg, {\r\n 'aria-hidden': true,\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n class: 'outline-icon__svg',\r\n width: 200,\r\n height: 200,\r\n style: cssRules\r\n })\r\n\r\n return $icon\r\n}\r\n\r\nexport default createElement\r\n","import isString from './isString'\r\n\r\nconst isSVG = (str) => {\r\n const declaration = '(?:<\\\\?xml[^>]*>\\\\s*)?'\r\n const doctype =\r\n '(?:<\\\\!doctype svg[^>]*\\\\s*(?:\\\\[?(?:\\\\s*]*>\\\\s*)*\\\\]?)*[^>]*>\\\\s*)?'\r\n const content = ']*>[^]*<\\\\/svg>\\\\s*$'\r\n const svg = `^\\\\s*${declaration}${doctype}${content}\\\\s*$`\r\n const pattern = new RegExp(svg, 'i')\r\n\r\n return isString(str) && pattern.test(str)\r\n}\r\n\r\nexport default isSVG\r\n","import createElement from './createElement'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method icon\r\n * @alias createElement\r\n * @see createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @returns {HTMLElement}\r\n */\r\nconst icon = (name, options = {}) => {\r\n return createElement(name, options)\r\n}\r\n\r\nexport default icon\r\n","import trim from '../lang/trim'\r\nimport hasClass from './hasClass'\r\n\r\n/**\r\n * 移除 DOM 节点的 className 样式\r\n * ========================================================================\r\n * @method removeClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst removeClass = (el, className) => {\r\n let allClass = el.className\r\n let classList\r\n\r\n if (!allClass || !hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.remove) {\r\n classList.remove(className)\r\n } else {\r\n allClass = trim(allClass.replace(className, ''))\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default removeClass\r\n","import removeClass from './utils/dom/removeClass'\r\nimport isEmpty from './utils/types/isEmpty'\r\nimport trim from './utils/lang/trim'\r\n\r\nconst _removeHeading = ($heading, hasAnchor = true, isAtStart = true) => {\r\n const CLS_HEADING = 'outline-heading'\r\n const text = $heading.innerHTML\r\n const pattern = /^\\d+(\\.?\\d+)*\\s?/gi\r\n let $anchor\r\n\r\n $heading.innerHTML = text.replace(pattern, '')\r\n $heading.removeAttribute('id')\r\n $heading.removeAttribute('data-id')\r\n\r\n removeClass($heading, CLS_HEADING)\r\n\r\n if (!hasAnchor) {\r\n return false\r\n }\r\n\r\n $anchor = $heading.querySelector(`.${CLS_HEADING}__anchor`)\r\n\r\n if (isAtStart) {\r\n removeClass($heading, `${CLS_HEADING}_start`)\r\n }\r\n\r\n if (isEmpty(trim($heading.className))) {\r\n $heading.removeAttribute('class')\r\n }\r\n\r\n // 存在锚点才移除\r\n if ($anchor) {\r\n $heading.removeChild($anchor)\r\n }\r\n}\r\n\r\nexport default _removeHeading\r\n","import isString from './isString'\r\n/**\r\n * 检测数据是否为空字符串\r\n * ========================================================================\r\n * @method isEmpty\r\n * @param {String} str\r\n * @returns {boolean}\r\n */\r\nconst isEmpty = (str) => {\r\n return isString(str) && str === ''\r\n}\r\n\r\nexport default isEmpty\r\n","import trim from './utils/lang/trim'\r\nimport stripTags from './utils/lang/stripTags'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport _getChapterParentIdByDiffer from './_getChapterParentIdByDiffer'\r\nimport _getChaptersWithCode from './_getChaptersWithCode'\r\n\r\n/**\r\n * 根据文章中的 h1~h6 标签,自动分析返回文章章节数据\r\n * ========================================================================\r\n * @method getChapters\r\n * @param {Array} headings\r\n * @param {Boolean} [showCode]\r\n * @param {Function} [chapterTextFilter]\r\n * @return {*|*[]}\r\n */\r\nconst getChapters = (headings, showCode = true, chapterTextFilter = null) => {\r\n let previous = 1\r\n let level = 0\r\n let text = ''\r\n const chapters = []\r\n\r\n headings.forEach((heading, i) => {\r\n const tagName = heading.tagName\r\n const headingLevel = tagName.replace(/h/i, '')\r\n let current = parseInt(headingLevel, 10)\r\n let pid = -1\r\n\r\n // 场景1:当前标题是前一个标题的子标题\r\n // 当前标题的(标题标签)序号 > 前一个标题的序号:两个相连的标题是父标题 -> 子标题关系;\r\n // h2 (前一个标题)\r\n // h3 (当前标题)\r\n if (current > previous) {\r\n level += 1\r\n\r\n // 第一层级的 pid 是 -1\r\n if (level === 1) {\r\n pid = -1\r\n } else {\r\n pid = i - 1\r\n }\r\n }\r\n // 场景2:当前标题和前一个标题层级相同\r\n // 当前标题的(标题标签)序号 = 前一个标题的序号\r\n // h2 (前一个标题)\r\n // h2 (当前标题)\r\n // 当前标题的(标题标签)序号 < 前一个标题的序号,并且当前标题序号 > 当前的级别\r\n // h2\r\n // h4 (前一个标题)\r\n // h3 (当前标题:这种情况我们还是任务 h3 是 h2 的下一级章节)\r\n else if (current === previous || (current < previous && current > level)) {\r\n // H1 的层级肯定是 1\r\n if (current === 1) {\r\n level = 1\r\n pid = -1\r\n } else {\r\n pid = chapters[i - 1].pid\r\n }\r\n }\r\n // 场景3:当前标题比前一个标题层级高\r\n else if (current <= level) {\r\n // H1 的层级肯定是 1\r\n if (current === 1) {\r\n level = 1\r\n } else {\r\n level = level - (previous - current)\r\n\r\n if (level <= 1) {\r\n level = 1\r\n }\r\n }\r\n\r\n // 第一级的标题\r\n if (level === 1) {\r\n pid = -1\r\n } else {\r\n // 通过当前标题和前一个标题之间的等级差,获得当前标题的父标题ID\r\n pid = _getChapterParentIdByDiffer(chapters, previous - current, i)\r\n }\r\n }\r\n\r\n previous = current\r\n\r\n text = stripTags(trim(heading.innerHTML))\r\n\r\n if (isFunction(chapterTextFilter)) {\r\n text = chapterTextFilter(text)\r\n }\r\n\r\n chapters.push({\r\n id: i,\r\n pid: pid,\r\n level: level,\r\n rel: `heading-${i}`,\r\n text,\r\n tagName\r\n })\r\n })\r\n\r\n return showCode ? _getChaptersWithCode(chapters) : chapters\r\n}\r\n\r\nexport default getChapters\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 过滤所有 HTML 标签\r\n * ========================================================================\r\n * @method stripTags\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\nconst stripTags = (str) => {\r\n if (!isString(str)) {\r\n return ''\r\n }\r\n return str.replace(/<\\/?[^>]+(>|$)/g, '')\r\n}\r\n\r\nexport default stripTags\r\n","const _getChapterParentIdByDiffer = (chapters, differ, index) => {\r\n let previous = chapters[index - 1]\r\n let pid\r\n let i\r\n\r\n for (i = 0; i < differ; i += 1) {\r\n pid = previous.pid\r\n previous = chapters[pid]\r\n }\r\n\r\n pid = previous.pid\r\n\r\n return pid\r\n}\r\n\r\nexport default _getChapterParentIdByDiffer\r\n","import isArray from './utils/types/isArray'\r\n\r\nconst _getChaptersWithCode = (chapters) => {\r\n const groups = {}\r\n const cb = (o) => {\r\n return [o.pid]\r\n }\r\n\r\n chapters.forEach((o) => {\r\n const group = JSON.stringify(cb(o))\r\n\r\n groups[group] = groups[group] || []\r\n groups[group].push(o)\r\n\r\n o.index = groups[group].length\r\n\r\n if (o.pid === -1) {\r\n o.code = String(o.index)\r\n }\r\n })\r\n\r\n Object.keys(groups).forEach((group) => {\r\n groups[group].forEach((c) => {\r\n const subjects = groups[`[${c.id}]`]\r\n\r\n if (!subjects || !isArray(subjects)) {\r\n return false\r\n }\r\n\r\n subjects.forEach((o) => {\r\n o.code = c.code + '.' + o.index\r\n })\r\n })\r\n })\r\n\r\n return chapters\r\n}\r\n\r\nexport default _getChaptersWithCode\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isElement from './utils/types/isElement'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport timeSlice from './utils/lang/timeSlice'\r\nimport toTree from './utils/lang/toTree'\r\nimport later from './utils/lang/later'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\nimport offsetTop from './utils/dom/offsetTop'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport stop from './utils/event/stop'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport _updateHeading from './_updateHeading'\r\nimport _removeHeading from './_removeHeading'\r\nimport getChapters from './getChapters'\r\n\r\nimport Base from './base'\r\n\r\nclass Anchors extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Anchors.DEFAULTS)\r\n\r\n this.$articleElement = null\r\n this.$scrollElement = null\r\n this.$headings = []\r\n this.chapters = []\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n const showCode = this.attr('showCode') || true\r\n let created\r\n let scrollElement\r\n let selector\r\n let $articleElement\r\n let articleElement\r\n\r\n this.attr(options)\r\n\r\n articleElement = this.attr('articleElement')\r\n scrollElement = this.attr('scrollElement')\r\n selector = this.attr('selector')\r\n created = this.attr('created')\r\n\r\n if (isString(articleElement)) {\r\n $articleElement = document.querySelector(articleElement)\r\n } else if (isElement(articleElement)) {\r\n $articleElement = articleElement\r\n }\r\n\r\n if (!$articleElement) {\r\n return this\r\n }\r\n\r\n this.$articleElement = $articleElement\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n this.$headings = [...$articleElement.querySelectorAll(selector)]\r\n\r\n if (this.$headings.length < 1) {\r\n return this\r\n }\r\n\r\n this.chapters = getChapters(\r\n this.$headings,\r\n showCode,\r\n this.attr('chapterTextFilter')\r\n )\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n getChapters(isTreeStructured = false) {\r\n const chapters = this.chapters\r\n return isTreeStructured ? toTree(chapters, 'id', 'pid') : chapters\r\n }\r\n\r\n count() {\r\n return this.chapters.length\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n\r\n paint()\r\n\r\n this._paint(this.chapters)\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this._remove()\r\n\r\n return this\r\n }\r\n\r\n _paint(chapters) {\r\n const LIMIT = 400\r\n const hasAnchor = this.attr('hasAnchor')\r\n const isAtStart = this.attr('isAtStart')\r\n const showCode = this.attr('showCode')\r\n const anchorURL = this.attr('anchorURL')\r\n const count = this.count()\r\n const $headings = [...this.$headings]\r\n const update = (headings, group) => {\r\n headings.forEach(($heading, i) => {\r\n const id = i + group * LIMIT\r\n const chapterCode = chapters[id].code\r\n _updateHeading($heading, id, {\r\n hasAnchor,\r\n isAtStart,\r\n showCode,\r\n chapterCode,\r\n anchorURL\r\n })\r\n })\r\n }\r\n let groupIndex = -1\r\n\r\n // 针对超长的文章,进行 timeSlice 处理\r\n if (count > LIMIT) {\r\n groupIndex += 1\r\n // 同步绘制 Limit 以内的标题链接(可以确保 50ms 完成绘制)\r\n update($headings.splice(0, LIMIT), 0)\r\n // 采用 timeSlice 处理机制绘制剩余的标题\r\n while ($headings.length > 0) {\r\n const once = $headings.splice(0, LIMIT)\r\n timeSlice(\r\n () => {\r\n update(once, (groupIndex += 1))\r\n },\r\n () => {\r\n this.$emit('anchors:all:paint')\r\n }\r\n )\r\n }\r\n } else {\r\n update($headings, 0)\r\n }\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const hasAnchor = this.attr('hasAnchor')\r\n const isAtStart = this.attr('isAtStart')\r\n const $headings = this.$headings\r\n\r\n $headings.forEach(($heading) => {\r\n _removeHeading($heading, hasAnchor, isAtStart)\r\n })\r\n\r\n return this\r\n }\r\n\r\n refresh(chapters) {\r\n const $articleElement = this.$articleElement\r\n const selector = this.attr('selector')\r\n\r\n this.$headings = [...$articleElement.querySelectorAll(selector)]\r\n this.chapters = chapters\r\n\r\n this.erase()._paint(chapters)\r\n\r\n return this\r\n }\r\n\r\n scrollTo(top, after) {\r\n const el = this.$scrollElement\r\n\r\n scrollTo(el, top, after)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onAnchorTrigger(evt) {\r\n const anchorURL = this.attr('anchorURL')\r\n const afterScroll = this.attr('afterScroll')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const $anchor = evt.delegateTarget\r\n const $heading = $anchor.parentNode\r\n const top = offsetTop($heading) - (stickyHeight + 10)\r\n const $scrollElement = this.$scrollElement\r\n const min = 0\r\n const max = $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n const after = () => {\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(this, 'anchor')\r\n }\r\n\r\n later(() => {\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n })\r\n }\r\n\r\n this.scrollTo(top, after)\r\n\r\n if (!anchorURL) {\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $articleElement = this.$articleElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n on(\r\n $articleElement,\r\n '.outline-heading__anchor',\r\n 'click',\r\n this.onAnchorTrigger,\r\n this,\r\n true\r\n )\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $articleElement = this.$articleElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n off($articleElement, 'click', this.onAnchorTrigger)\r\n\r\n return this\r\n }\r\n}\r\n\r\nAnchors.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n scrollElement: 'html,body',\r\n articleElement: '#article',\r\n selector: 'h1,h2,h3,h4,h5,h6',\r\n stickyHeight: 0,\r\n anchorURL: '',\r\n hasAnchor: true,\r\n isAtStart: true,\r\n showCode: false,\r\n created: null,\r\n mounted: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n chapterTextFilter: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Anchors\r\n","import trim from './utils/lang/trim'\r\nimport createElement from './utils/dom/createElement'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\n\r\nconst _updateHeading = ($heading, i, options) => {\r\n const CLS_HEADING = 'outline-heading'\r\n const hasAnchor = options.hasAnchor || true\r\n const isAtStart = options.isAtStart || true\r\n const showCode = options.showCode || false\r\n const chapterCode = options.chapterCode || ''\r\n const anchorURL = options.anchorURL || ''\r\n const headingId = `heading-${i}`\r\n const attrs = {\r\n id: headingId,\r\n className: isAtStart ? `${CLS_HEADING} ${CLS_HEADING}_start` : CLS_HEADING,\r\n 'data-id': i\r\n }\r\n const text = trim($heading.innerHTML)\r\n let $anchor\r\n let $icon\r\n\r\n if (showCode) {\r\n attrs.innerHTML = chapterCode + ' ' + text\r\n }\r\n setAttributes($heading, attrs)\r\n\r\n if (!hasAnchor) {\r\n return false\r\n }\r\n\r\n $icon = icon('hash', { iconSet: 'outline' })\r\n $anchor = createElement(\r\n 'a',\r\n {\r\n id: `anchor-${i}`,\r\n className: `${CLS_HEADING}__anchor anchor-${i}`,\r\n href: anchorURL || `#${headingId}`,\r\n target: anchorURL ? '_blank' : 'self',\r\n 'data-id': i\r\n },\r\n $icon\r\n )\r\n $heading.appendChild($anchor)\r\n}\r\n\r\nexport default _updateHeading\r\n","// HTML 合法的标签\r\nconst TAGS = [\r\n 'a',\r\n 'abbr',\r\n 'address',\r\n 'area',\r\n 'article',\r\n 'aside',\r\n 'audio',\r\n 'b',\r\n 'base',\r\n 'bdi',\r\n 'bdo',\r\n 'blockquote',\r\n 'body',\r\n 'br',\r\n 'button',\r\n 'canvas',\r\n 'caption',\r\n 'cite',\r\n 'code',\r\n 'col',\r\n 'colgroup',\r\n 'data',\r\n 'datalist',\r\n 'dd',\r\n 'del',\r\n 'details',\r\n 'dfn',\r\n 'dialog',\r\n 'div',\r\n 'dl',\r\n 'dt',\r\n 'em',\r\n 'embed',\r\n 'fieldset',\r\n 'figcaption',\r\n 'figure',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'head',\r\n 'header',\r\n 'hgroup',\r\n 'hr',\r\n 'html',\r\n 'i',\r\n 'iframe',\r\n 'img',\r\n 'input',\r\n 'ins',\r\n 'kbd',\r\n 'label',\r\n 'legend',\r\n 'li',\r\n 'link',\r\n 'main',\r\n 'map',\r\n 'mark',\r\n 'math',\r\n 'menu',\r\n 'menuitem',\r\n 'meta',\r\n 'meter',\r\n 'nav',\r\n 'noscript',\r\n 'object',\r\n 'ol',\r\n 'optgroup',\r\n 'option',\r\n 'output',\r\n 'p',\r\n 'param',\r\n 'picture',\r\n 'pre',\r\n 'progress',\r\n 'q',\r\n 'rb',\r\n 'rp',\r\n 'rt',\r\n 'rtc',\r\n 'ruby',\r\n 's',\r\n 'samp',\r\n 'script',\r\n 'search',\r\n 'section',\r\n 'select',\r\n 'slot',\r\n 'small',\r\n 'source',\r\n 'span',\r\n 'strong',\r\n 'style',\r\n 'sub',\r\n 'summary',\r\n 'sup',\r\n 'svg',\r\n 'table',\r\n 'tbody',\r\n 'td',\r\n 'template',\r\n 'textarea',\r\n 'tfoot',\r\n 'th',\r\n 'thead',\r\n 'time',\r\n 'title',\r\n 'tr',\r\n 'track',\r\n 'u',\r\n 'ul',\r\n 'var',\r\n 'video',\r\n 'wbr'\r\n]\r\n\r\nexport default TAGS\r\n","import isString from './isString'\r\nimport trim from '../lang/trim'\r\nimport TAGS from './tags'\r\n\r\n/**\r\n * 检测测试数据是否为合法的 HTML 代码\r\n * ========================================================================\r\n * @method isHTML\r\n * @category Lang\r\n * @see https://github.com/sindresorhus/html-tags\r\n * @see https://github.com/sindresorhus/is-html\r\n * @param {String} str - 要检测的数据\r\n * @returns {Boolean} 'val' 为合法的 HTML 代码,返回 true,否则返回 false\r\n */\r\nconst isHTML = (str) => {\r\n let html\r\n let basic\r\n let full\r\n\r\n if (!isString(str)) {\r\n return false\r\n }\r\n\r\n // 为了提高性能,我们将其限制在合理的长度内。\r\n html = trim(str).slice(0, 1000)\r\n basic = /\\s*|]*>|]*>|]+>/i\r\n full = new RegExp(TAGS.map((tag) => `<${tag}\\\\b[^>]*>`).join('|'), 'i')\r\n\r\n return basic.test(html) || full.test(html)\r\n}\r\n\r\nexport default isHTML\r\n","/**\r\n * 移除字符串中的 JavaScript 代码\r\n * ====================================================\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nconst stripScripts = (str) => {\r\n return str.replace(/]*>.*?<\\/script>/gi, '')\r\n}\r\n\r\nexport default stripScripts\r\n","const setProperty = (prop, value) => {\r\n const documentElement = document.documentElement\r\n documentElement.style.setProperty(prop, value)\r\n}\r\n\r\nexport default setProperty\r\n","import setProperty from './utils/dom/setProperty'\r\n\r\nlet index = 2000\r\n\r\nconst zIndex = (idx) => {\r\n if (idx) {\r\n index = idx\r\n } else {\r\n index += 1\r\n }\r\n\r\n setProperty('--outline-zIndex', `${index}`)\r\n\r\n return index\r\n}\r\n\r\nexport default zIndex\r\n","import Base from './base'\r\n\r\nimport later from './utils/lang/later'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isDOM from './utils/types/isDOM'\r\nimport isHTML from './utils/types/isHTML'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport html from './utils/dom/html'\r\nimport createElement from './utils/dom/createElement'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport paint from './utils/icons/paint'\r\nimport icon from './utils/icons/icon'\r\nimport zIndex from './zIndex'\r\n\r\nclass Drawer extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n this.zIndex = 0\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Drawer.DEFAULTS)\r\n this.title = ''\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.$modal = null\r\n this.$header = null\r\n this.$title = null\r\n this.$close = null\r\n this.$main = null\r\n this.$footer = null\r\n this.$overlay = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.title = this.attr('title')\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n return this\r\n }\r\n\r\n setTitle(title) {\r\n this.attr('title', title)\r\n this.title = title\r\n this.$title.innerHTML = title\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const size = this.attr('size')\r\n const placement = this.attr('placement')\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const hasOffset = this.attr('hasOffset')\r\n const hasPadding = this.attr('hasPadding')\r\n const autoHeight = this.attr('autoHeight')\r\n const customClass = this.attr('customClass')\r\n let $el\r\n let $modal\r\n let $header\r\n let $title\r\n let $close\r\n let $main\r\n let $footer\r\n let $overlay\r\n\r\n paint()\r\n this.zIndex = zIndex()\r\n\r\n $title = createElement(\r\n 'h2',\r\n {\r\n className: 'outline-drawer__title'\r\n },\r\n this.title\r\n )\r\n this.$title = $title\r\n\r\n if (hasClose) {\r\n $close = createElement(\r\n 'div',\r\n {\r\n className: 'outline-drawer__close'\r\n },\r\n icon('close', { iconSet: 'outline', size: 20 })\r\n )\r\n this.$close = $close\r\n }\r\n\r\n $header = createElement(\r\n 'header',\r\n {\r\n className: 'outline-drawer__header'\r\n },\r\n [$title, $close]\r\n )\r\n this.$header = $header\r\n\r\n $main = createElement('div', {\r\n className: 'outline-drawer__main'\r\n })\r\n this.$main = $main\r\n\r\n if (!hasPadding) {\r\n addClass($main, 'outline-drawer_full')\r\n }\r\n\r\n $footer = createElement('footer', {\r\n className: 'outline-drawer__footer'\r\n })\r\n this.$footer = $footer\r\n\r\n $modal = createElement(\r\n 'div',\r\n {\r\n className: `outline-drawer__modal outline-drawer_${placement} outline-drawer_${size} outline-drawer_closed`\r\n },\r\n [$header, $main, $footer]\r\n )\r\n this.$modal = $modal\r\n\r\n if (hasOffset) {\r\n addClass($modal, 'outline-drawer_offset')\r\n }\r\n\r\n if (autoHeight) {\r\n addClass($modal, 'outline-drawer_auto')\r\n }\r\n\r\n if (customClass) {\r\n addClass($modal, customClass)\r\n }\r\n\r\n if (hasOverlay) {\r\n $overlay = createElement('div', {\r\n className: 'outline-drawer__overlay'\r\n })\r\n this.$overlay = $overlay\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: `outline-drawer`\r\n },\r\n [$modal, $overlay]\r\n )\r\n this.$el = $el\r\n document.body.appendChild($el)\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$main.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(content) {\r\n let $content = null\r\n\r\n if (isFunction(content)) {\r\n $content = content()\r\n } else if (isDOM(content)) {\r\n $content = content\r\n } else if (isHTML(content)) {\r\n $content = html(content)\r\n }\r\n\r\n if ($content) {\r\n this.$main.appendChild($content)\r\n }\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(content) {\r\n this.erase()._paint(content)\r\n return this\r\n }\r\n\r\n open() {\r\n const opened = this.attr('afterOpened')\r\n const $modal = this.$modal\r\n\r\n addClass(this.$el, 'outline-drawer_opened')\r\n removeClass($modal, 'outline-drawer_closed')\r\n addClass($modal, 'outline-drawer_opened')\r\n\r\n later(() => {\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n opened.call(this)\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const closed = this.attr('afterClosed')\r\n const $modal = this.$modal\r\n\r\n removeClass($modal, 'outline-drawer_opened')\r\n addClass($modal, 'outline-drawer_closed')\r\n\r\n later(() => {\r\n removeClass(this.$el, 'outline-drawer_opened')\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n closed.call(this)\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const afterToggle = this.attr('afterToggle')\r\n const closed = this.isClosed()\r\n\r\n if (closed) {\r\n this.open()\r\n } else {\r\n this.close()\r\n }\r\n\r\n if (isFunction(afterToggle)) {\r\n later(() => {\r\n afterToggle.call(this, closed)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const afterDestroy = this.attr('afterDestroy')\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n let index = this.zIndex\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n index -= 1\r\n zIndex(index)\r\n this.zIndex = 0\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const closeOnClickModal = this.attr('closeOnClickModal')\r\n const $el = this.$el\r\n\r\n if (hasClose) {\r\n on($el, '.outline-drawer__close', 'click', this.onClose, this, true)\r\n }\r\n\r\n if (hasOverlay && closeOnClickModal) {\r\n on($el, '.outline-drawer__overlay', 'click', this.onClose, this, true)\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const $el = this.$el\r\n\r\n if (!hasClose && !hasOverlay) {\r\n return this\r\n }\r\n\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nDrawer.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'rtl',\r\n title: '标题',\r\n size: 'regular',\r\n hasClose: true,\r\n hasOverlay: true,\r\n hasOffset: false,\r\n hasPadding: true,\r\n autoHeight: true,\r\n closeOnClickModal: true,\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n afterToggle: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Drawer\r\n","import isHTML from '../types/isHTML'\r\nimport isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport stripScripts from '../lang/stripScripts'\r\nimport createElement from './createElement'\r\n\r\n/**\r\n * 获取或者设置 DOM 元素的 innerHTML 属性值,或者通过 HTML 字符串,创建 DOM 元素\r\n * ========================================================================\r\n * @method html\r\n * @param {HTMLElement|String} el\r\n * @param {String} [strHTML]\r\n * @return {DocumentFragment|null|*}\r\n */\r\nconst html = (el, strHTML) => {\r\n const $fragment = document.createDocumentFragment()\r\n\r\n if (!el || (!isHTML(el) && !isString(el) && !isElement(el))) {\r\n return null\r\n }\r\n\r\n if (isHTML(el)) {\r\n const template = createElement('div')\r\n let children = []\r\n\r\n template.innerHTML = stripScripts(el)\r\n children = [...template.childNodes]\r\n children.forEach((child) => {\r\n $fragment.appendChild(child)\r\n })\r\n\r\n return $fragment\r\n } else if (isString(strHTML)) {\r\n el.innerHTML = stripScripts(strHTML)\r\n } else {\r\n return el.innerHTML\r\n }\r\n}\r\n\r\nexport default html\r\n","import isFunction from '../types/isFunction'\r\nimport off from './off'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定事件\r\n * ========================================================================\r\n * @method at\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (必须) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst at = (el, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n const listener = function (evt) {\r\n let overrideContext = context || el\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default at\r\n","/**\r\n * 获取HTML元素的某个CSS样式值\r\n * ====================================================\r\n * @param el\r\n * @param ruleName\r\n * @returns {*}\r\n */\r\nconst getStyle = (el, ruleName) => {\r\n return getComputedStyle(el)[ruleName]\r\n}\r\n\r\nexport default getStyle\r\n","import Base from './base'\r\n\r\nimport isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isElement from './utils/types/isElement'\r\nimport later from './utils/lang/later'\r\nimport at from './utils/event/at'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport stop from './utils/event/stop'\r\nimport createElement from './utils/dom/createElement'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport addClass from './utils/dom/addClass'\r\nimport intersection from './utils/dom/intersection'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport offsetTop from './utils/dom/offsetTop'\r\nimport getStyle from './utils/dom/getStyle'\r\nimport setProperty from './utils/dom/setProperty'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\n\r\nimport _paintChapters from './_paintChapters'\r\nimport inBounding from './utils/dom/inBounding'\r\n\r\nclass Chapters extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n this.scrollTimer = null\r\n this.resizeTimer = null\r\n this.observerTimer = null\r\n this.Observer = null\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Chapters.DEFAULTS)\r\n\r\n this.$el = null\r\n this.$title = null\r\n this.$main = null\r\n this.$list = null\r\n this.$placeholder = null\r\n this.$parentElement = null\r\n this.$scrollElement = null\r\n this.$active = null\r\n\r\n this.chapters = []\r\n this.active = 0\r\n this.offsetWidth = 0\r\n this.offsetTop = 0\r\n this.playing = false\r\n this.closed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n let parentElement\r\n let scrollElement\r\n let $parent\r\n\r\n this.attr(options)\r\n\r\n created = this.attr('created')\r\n parentElement = this.attr('parentElement')\r\n scrollElement = this.attr('scrollElement')\r\n\r\n if (isString(parentElement)) {\r\n $parent = document.querySelector(parentElement)\r\n } else if (isElement(parentElement)) {\r\n $parent = parentElement\r\n }\r\n this.$parentElement = $parent\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n\r\n this.chapters = this.attr('chapters')\r\n this.closed = this.attr('closed')\r\n this.active = this.attr('active')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n if (this.chapters.length < 1) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n this.$active = document.querySelector(`#chapter-${this.active}`)\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isSticky() {\r\n const position = this.attr('position')\r\n return position === 'sticky'\r\n }\r\n\r\n isFixed() {\r\n const position = this.attr('position')\r\n return position === 'fixed'\r\n }\r\n\r\n isInside() {\r\n return this.isFixed() || this.isSticky()\r\n }\r\n\r\n isOutside() {\r\n return !this.isInside()\r\n }\r\n\r\n count() {\r\n return this.chapters.length\r\n }\r\n\r\n _paintEdge() {\r\n const $fragment = document.createDocumentFragment()\r\n const STICKY = 'outline-chapters_sticky'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const title = this.attr('title')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const customClass = this.attr('customClass')\r\n const $parentElement = this.$parentElement\r\n const children = []\r\n const contents = []\r\n let $title = null\r\n let $el\r\n let $main\r\n let $list\r\n let $placeholder\r\n\r\n if (!$parentElement) {\r\n return this\r\n }\r\n\r\n if (this.isInside() && title) {\r\n $title = createElement(\r\n 'h2',\r\n {\r\n className: 'outline-chapters__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n contents.push($title)\r\n }\r\n\r\n $list = createElement('ul', {\r\n // 为优化性能,添加了 _fixed 和 _hidden\r\n // fixed 为了让 $list 脱离流布局\r\n // hidden 让 $list 不可见\r\n className: `outline-chapters__list`\r\n })\r\n this.$list = $list\r\n children.push($list)\r\n\r\n if (animationCurrent) {\r\n $placeholder = createElement('div', {\r\n className: 'outline-chapters__placeholder'\r\n })\r\n this.$placeholder = $placeholder\r\n children.push($placeholder)\r\n }\r\n\r\n $main = createElement(\r\n 'div',\r\n {\r\n className: 'outline-chapters__main'\r\n },\r\n children\r\n )\r\n this.$main = $main\r\n contents.push($main)\r\n\r\n $el = createElement(\r\n 'nav',\r\n {\r\n id: 'outline-chapters',\r\n className: `outline-chapters ${HIDDEN}`\r\n },\r\n contents\r\n )\r\n this.$el = $el\r\n\r\n if (this.isSticky()) {\r\n this.calculateStickyHeight()\r\n addClass($el, STICKY)\r\n }\r\n\r\n if (customClass) {\r\n addClass($el, customClass)\r\n }\r\n $fragment.appendChild($el)\r\n $parentElement.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const $parentElement = this.$parentElement\r\n const chapters = this.chapters\r\n const count = this.count()\r\n let $el\r\n\r\n if (!$parentElement || chapters.length < 1) {\r\n return this\r\n }\r\n\r\n if (this.isInside()) {\r\n addClass($parentElement, 'outline-chapters-parent')\r\n }\r\n\r\n this._paintEdge()\r\n $el = this.$el\r\n\r\n this._paint(chapters)\r\n\r\n later(() => {\r\n this.highlight(this.active)\r\n }, 60)\r\n\r\n this.offsetTop = offsetTop($el)\r\n this.offsetWidth = $el.offsetWidth\r\n\r\n if (this.isFixed()) {\r\n this.sticky()\r\n setProperty('--outline-chapters-width', `${this.offsetWidth}px`)\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n if (count < 400) {\r\n this.onObserver()\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$list.innerHTML = ''\r\n\r\n return this\r\n }\r\n\r\n _paint(chapters) {\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const showCode = this.attr('showCode')\r\n const $el = this.$el\r\n const $list = this.$list\r\n\r\n _paintChapters($list, chapters, showCode)\r\n removeClass($el, HIDDEN)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n this.$parentElement.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(chapters) {\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const $el = this.$el\r\n\r\n removeClass($el, HIDDEN)\r\n this.erase()._paint(chapters)\r\n\r\n return this\r\n }\r\n\r\n _getPlaceholderOffset(index) {\r\n const $main = this.$main\r\n const $list = this.$list\r\n const $anchor = $list.querySelector('.outline-chapters__anchor')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const mainPaddingTop = parseInt(getStyle($main, 'padding-top'), 10)\r\n const mainBorderTop = parseInt(getStyle($main, 'border-top-width'), 10)\r\n const placeholderPaddingTop = parseInt(getStyle($list, 'padding-top'), 10)\r\n const placeholderMarginTop = parseInt(getStyle($list, 'margin-top'), 10)\r\n const placeholderBorderTop = parseInt(\r\n getStyle($list, 'border-top-width'),\r\n 10\r\n )\r\n let height = $anchor.offsetHeight\r\n let offsetTop = 0\r\n let top\r\n\r\n if (!animationCurrent) {\r\n return this\r\n }\r\n\r\n if (mainPaddingTop) {\r\n offsetTop += mainPaddingTop\r\n }\r\n\r\n if (placeholderPaddingTop) {\r\n offsetTop += placeholderPaddingTop\r\n }\r\n\r\n if (placeholderMarginTop) {\r\n offsetTop += placeholderMarginTop\r\n }\r\n\r\n if (mainBorderTop) {\r\n offsetTop += mainBorderTop\r\n }\r\n\r\n if (placeholderBorderTop) {\r\n offsetTop += placeholderBorderTop\r\n }\r\n\r\n top = height * index\r\n\r\n return offsetTop + top\r\n }\r\n\r\n positionPlaceholder(index) {\r\n const $list = this.$list\r\n const $placeholder = this.$placeholder\r\n const $anchor = $list.querySelector('.outline-chapters__anchor')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const height = $anchor.offsetHeight\r\n let offsetTop = 0\r\n\r\n if (!animationCurrent) {\r\n return this\r\n }\r\n\r\n offsetTop = this._getPlaceholderOffset(index)\r\n\r\n $placeholder.style.cssText = `transform: translateY(${offsetTop}px);height:${height}px;`\r\n\r\n return this\r\n }\r\n\r\n highlight(id) {\r\n const $el = this.$el\r\n const animationCurrent = this.attr('animationCurrent')\r\n const ACTIVE = 'outline-chapters_active'\r\n const HIGHLIGHT = 'outline-chapters_highlight'\r\n let $anchor = null\r\n let placeholderOffsetTop = 0\r\n\r\n if (!$el) {\r\n return this\r\n }\r\n\r\n $anchor = $el.querySelector(`#chapter__anchor-${id}`)\r\n\r\n if (!$anchor) {\r\n return this\r\n }\r\n\r\n this.active = parseInt($anchor.getAttribute('data-id'), 10)\r\n\r\n if (this.$active) {\r\n removeClass(this.$active, HIGHLIGHT)\r\n removeClass(this.$active, ACTIVE)\r\n }\r\n\r\n this.$active = $anchor\r\n addClass(this.$active, ACTIVE)\r\n\r\n if (animationCurrent) {\r\n this.positionPlaceholder(this.active)\r\n\r\n later(() => {\r\n if (!inBounding(this.$active, this.$parentElement)) {\r\n placeholderOffsetTop = this._getPlaceholderOffset(this.active)\r\n scrollTo(this.$main, placeholderOffsetTop)\r\n }\r\n })\r\n } else {\r\n addClass(this.$active, HIGHLIGHT)\r\n }\r\n\r\n return this\r\n }\r\n\r\n sticky() {\r\n const afterSticky = this.attr('afterSticky')\r\n const FIXED = 'outline-chapters_fixed'\r\n const $el = this.$el\r\n const top = this.offsetTop\r\n const scrollTop = this.$scrollElement.scrollTop\r\n let isStickying\r\n\r\n if (!this.isFixed()) {\r\n return this\r\n }\r\n\r\n isStickying = scrollTop >= top\r\n\r\n if (isStickying) {\r\n addClass($el, FIXED)\r\n } else {\r\n removeClass($el, FIXED)\r\n }\r\n\r\n if (isFunction(afterSticky)) {\r\n afterSticky.call(this, this.isClosed(), isStickying)\r\n }\r\n\r\n return this\r\n }\r\n\r\n calculateStickyHeight() {\r\n const documentElement = document.documentElement\r\n const height = Math.max(\r\n documentElement.clientHeight || 0,\r\n window.innerHeight || 0\r\n )\r\n setProperty('--outline-sticky-height', `${height}px`)\r\n return this\r\n }\r\n\r\n scrollTo(top, after) {\r\n const el = this.$scrollElement\r\n\r\n scrollTo(el, top, after)\r\n\r\n return this\r\n }\r\n\r\n show() {\r\n const FOLDED = 'outline-chapters_folded'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const opened = this.attr('afterOpened')\r\n const count = this.count()\r\n const $el = this.$el\r\n const $parent = this.$parentElement\r\n\r\n if (this.isInside()) {\r\n if (count > 800) {\r\n removeClass($parent, HIDDEN)\r\n } else {\r\n removeClass($parent, HIDDEN)\r\n later(() => {\r\n removeClass($parent, FOLDED)\r\n }, 30)\r\n }\r\n } else {\r\n removeClass($el, HIDDEN)\r\n }\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n opened.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide() {\r\n const FOLDED = 'outline-chapters_folded'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const closed = this.attr('afterClosed')\r\n const count = this.count()\r\n const $el = this.$el\r\n const $parent = this.$parentElement\r\n\r\n if (this.isInside()) {\r\n if (count > 800) {\r\n addClass($parent, HIDDEN)\r\n } else {\r\n addClass($parent, FOLDED)\r\n later(() => {\r\n addClass($parent, HIDDEN)\r\n })\r\n }\r\n } else {\r\n addClass($el, HIDDEN)\r\n }\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n closed.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const afterToggle = this.attr('afterToggle')\r\n const top = this.offsetTop\r\n const scrollTop = this.$scrollElement.scrollTop\r\n let isStickying\r\n\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n if (isFunction(afterToggle)) {\r\n later(() => {\r\n isStickying = scrollTop >= top\r\n afterToggle.call(this, this.isClosed(), isStickying)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n if (this.scrollTimer) {\r\n clearTimeout(this.scrollTimer)\r\n this.scrollTimer = null\r\n }\r\n\r\n if (this.resizeTimer) {\r\n clearTimeout(this.resizeTimer)\r\n this.resizeTimer = null\r\n }\r\n\r\n if (this.observerTimer) {\r\n clearTimeout(this.observerTimer)\r\n this.observerTimer = null\r\n }\r\n\r\n if (this.Observer) {\r\n this.Observer = null\r\n }\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onObserver() {\r\n const selector = this.attr('selector')\r\n\r\n this.Observer = intersection(\r\n ($heading) => {\r\n const id = $heading.getAttribute('data-id')\r\n\r\n if (this.playing) {\r\n return false\r\n }\r\n\r\n if (this.observerTimer) {\r\n clearTimeout(this.observerTimer)\r\n }\r\n\r\n this.observerTimer = later(() => {\r\n this.highlight(id)\r\n }, 100)\r\n },\r\n {\r\n selector,\r\n context: this\r\n }\r\n )\r\n\r\n return this\r\n }\r\n\r\n onSelect(evt) {\r\n const stickyHeight = this.attr('stickyHeight')\r\n const $anchor = evt.delegateTarget\r\n const id = $anchor.getAttribute('data-id')\r\n const headingId = $anchor.href.split('#')[1]\r\n const $heading = document.querySelector(`#${headingId}`)\r\n const top = offsetTop($heading) - (stickyHeight + 10)\r\n const min = 0\r\n const max = this.$scrollElement.scrollHeight\r\n const afterScroll = this.attr('afterScroll')\r\n const after = () => {\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(this, 'chapter')\r\n }\r\n\r\n later(() => {\r\n this.playing = false\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n })\r\n }\r\n\r\n this.playing = true\r\n if (this.isFixed()) {\r\n this.sticky()\r\n later(() => {\r\n this.scrollTo(top, after)\r\n this.highlight(id)\r\n }, 10)\r\n } else {\r\n this.scrollTo(top, after)\r\n this.highlight(id)\r\n }\r\n\r\n stop(evt)\r\n\r\n return this\r\n }\r\n\r\n onScroll() {\r\n const $scrollElement = this.$scrollElement\r\n\r\n if (this.scrollTimer) {\r\n clearTimeout(this.scrollTimer)\r\n }\r\n\r\n this.scrollTimer = later(() => {\r\n const top = $scrollElement.scrollTop\r\n const min = 0\r\n const max = $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n\r\n if (this.isFixed()) {\r\n this.sticky()\r\n }\r\n\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n onResize() {\r\n if (this.resizeTimer) {\r\n clearTimeout(this.resizeTimer)\r\n }\r\n\r\n this.resizeTimer = later(() => {\r\n this.calculateStickyHeight()\r\n })\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n const $scrollElement = this.$scrollElement\r\n const tagName = $scrollElement.tagName.toLowerCase()\r\n let $element = $scrollElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n if (tagName === 'html' || tagName === 'body') {\r\n $element = window\r\n }\r\n\r\n on($el, '.outline-chapters__anchor', 'click', this.onSelect, this, true)\r\n at($element, 'scroll', this.onScroll, this, true)\r\n if (this.isSticky()) {\r\n at(window, 'resize', this.onResize, this, true)\r\n }\r\n this.$on('anchors:all:paint', this.onObserver, this)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const selector = this.attr('selector')\r\n const $el = this.$el\r\n const $scrollElement = this.$scrollElement\r\n const tagName = $scrollElement.tagName.toLowerCase()\r\n let $element = $scrollElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n if (tagName === 'html' || tagName === 'body') {\r\n $element = window\r\n }\r\n\r\n off($el, 'click', this.onSelect)\r\n off($element, 'scroll', this.onScroll)\r\n if (this.isSticky()) {\r\n off(window, 'resize', this.onResize)\r\n }\r\n this.$off('anchors:all:paint')\r\n\r\n if (this.Observer) {\r\n document.querySelectorAll(selector).forEach((section) => {\r\n this.Observer.unobserve(section)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nChapters.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n parentElement: '',\r\n scrollElement: '',\r\n selector: '.outline-heading',\r\n active: 0,\r\n closed: false,\r\n showCode: true,\r\n animationCurrent: true,\r\n position: 'relative',\r\n stickyHeight: 0,\r\n chapters: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n afterSticky: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Chapters\r\n","import createElement from './utils/dom/createElement'\r\nimport timeSlice from './utils/lang/timeSlice'\r\n\r\nconst _paintChapters = ($list, chapters, showCode = false) => {\r\n const LIMIT = 400\r\n const count = chapters.length\r\n const clones = [...chapters]\r\n const paint = (parts) => {\r\n const byId = (id) => $list.querySelector(`#${id}`)\r\n parts.forEach((chapter) => {\r\n const pid = chapter.pid\r\n const id = chapter.id\r\n const rel = chapter.rel\r\n const children = []\r\n const $text = createElement(\r\n 'span',\r\n {\r\n className: 'outline-chapters__text'\r\n },\r\n chapter.text\r\n )\r\n let $link\r\n let $code\r\n let $li\r\n let $subject\r\n let $chapter\r\n\r\n if (showCode) {\r\n $code = createElement(\r\n 'span',\r\n {\r\n className: 'outline-chapters__code',\r\n 'data-id': id\r\n },\r\n chapter.code\r\n )\r\n\r\n children.push($code)\r\n }\r\n\r\n children.push($text)\r\n\r\n $link = createElement(\r\n 'a',\r\n {\r\n id: `chapter__anchor-${id}`,\r\n className: 'outline-chapters__anchor',\r\n href: '#' + rel,\r\n rel: rel,\r\n 'data-id': id\r\n },\r\n children\r\n )\r\n\r\n $li = createElement(\r\n 'li',\r\n {\r\n id: `chapter-${id}`,\r\n className: 'outline-chapters__item',\r\n 'data-id': id\r\n },\r\n $link\r\n )\r\n\r\n if (pid === -1) {\r\n $list.appendChild($li)\r\n } else {\r\n $chapter = byId(`chapter-${pid}`)\r\n $subject = byId(`subject-${pid}`)\r\n\r\n if (!$subject) {\r\n $subject = createElement(\r\n 'ul',\r\n {\r\n id: 'subject-' + pid,\r\n className: 'outline-chapters__subject'\r\n },\r\n $li\r\n )\r\n\r\n $chapter.appendChild($subject)\r\n } else {\r\n $subject.appendChild($li)\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (count > LIMIT) {\r\n // 同步绘制\r\n paint(clones.splice(0, LIMIT))\r\n // 剩余的采用 timeSlice 机制绘制\r\n while (clones.length > 0) {\r\n const once = clones.splice(0, LIMIT)\r\n timeSlice(() => {\r\n paint(once)\r\n })\r\n }\r\n } else {\r\n paint(clones)\r\n }\r\n}\r\n\r\nexport default _paintChapters\r\n","import isElement from '../types/isElement'\r\n\r\n/**\r\n * 检测某个 DOM 节点的位置是否在另个一个 DOM 节点范围内\r\n * ========================================================================\r\n * @method inBounding\r\n * @param {HTMLElement} child\r\n * @param {HTMLElement} parent\r\n * @return {Boolean}\r\n */\r\nconst inBounding = (child, parent) => {\r\n let parentRect\r\n let childRect\r\n\r\n if (!isElement(child) || !isElement(parent)) {\r\n return false\r\n }\r\n\r\n parentRect = parent.getBoundingClientRect()\r\n childRect = child.getBoundingClientRect()\r\n\r\n return (\r\n childRect.top >= parentRect.top &&\r\n childRect.right <= parentRect.right &&\r\n childRect.bottom <= parentRect.bottom &&\r\n childRect.left >= parentRect.left\r\n )\r\n}\r\n\r\nexport default inBounding\r\n","import isFunction from '../types/isFunction'\r\nimport isElement from '../types/isElement'\r\n\r\n/**\r\n * 通用的 IntersectionObserver 观察者处理器\r\n * ========================================================================\r\n * @method intersection\r\n * @param {Function} fn\r\n * @param {Object} [props]\r\n * @param {Object|HTMLElement} [props.root]\r\n * @param {String} [props.selector]\r\n * @param {Object} [props.context]\r\n * @param {String} [props.attr]\r\n * @param {String} [props.rootMargin]\r\n */\r\nconst intersection = (fn, props = {}) => {\r\n const root = props.root || null\r\n const selector = props.selector || '.outline-heading'\r\n const context = props.context || null\r\n const rootMargin = props.rootMargin || '0px 0px -90% 0px'\r\n const options = {\r\n rootMargin: rootMargin\r\n }\r\n // eslint-disable-next-line compat/compat\r\n const Observer = new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.intersectionRatio > 0) {\r\n if (isFunction(fn)) {\r\n fn.call(context || entry.target, entry.target)\r\n }\r\n }\r\n })\r\n }, options)\r\n const $root = isElement(root) ? root : document\r\n\r\n if (root) {\r\n options.root = root\r\n }\r\n\r\n $root.querySelectorAll(selector).forEach((section) => {\r\n Observer.observe(section)\r\n })\r\n\r\n return Observer\r\n}\r\n\r\nexport default intersection\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测测试数据是否为类似 Object 类型\r\n * ========================================================================\r\n * @method isObjectLike\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是类似 Object 类型,返回 true,否则返回 false\r\n */\r\nconst isObjectLike = (val) => {\r\n return isObject(val) && val !== null\r\n}\r\n\r\nexport default isObjectLike\r\n","import isObjectLike from './isObjectLike'\r\n\r\n/**\r\n * 检测测试数据是否为普通对象\r\n * ========================================================================\r\n * @method isPlainObject\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是普通对象,返回 true,否则返回 false\r\n */\r\nconst isPlainObject = (val) => {\r\n const getPrototypeOf = Object.getPrototypeOf\r\n let proto\r\n\r\n // Detect obvious negatives\r\n if (!isObjectLike(val)) {\r\n return false\r\n }\r\n\r\n proto = val.prototype\r\n\r\n // JavaScript 对象分为两种:普通对象和函数对象\r\n // 普通对象:原型是 __proto__,没有 prototype 原型(属性)\r\n // 函数对象:原型是 prototype ,prototype 只存在于函数对象上\r\n if (!proto) {\r\n return true\r\n }\r\n\r\n proto = val\r\n\r\n while (getPrototypeOf(proto) !== null) {\r\n proto = getPrototypeOf(proto)\r\n }\r\n\r\n return getPrototypeOf(val) === proto\r\n}\r\n\r\nexport default isPlainObject\r\n","/**\r\n * 转义字符串中的 HTML 标签\r\n *\r\n * @param {String} str - 需要转义的字符串\r\n * @returns {String}\r\n */\r\nconst encodeHTML = (str) => {\r\n const CHARTS = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": ''',\r\n '\"': '"'\r\n }\r\n\r\n return str.replace(/[&<>'\"]/g, (tag) => {\r\n return CHARTS[tag] || tag\r\n })\r\n}\r\n\r\nexport default encodeHTML\r\n","import isString from './utils/types/isString'\r\nimport isPlainObject from './utils/types/isPlainObject'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport extend from './utils/lang/extend'\r\nimport later from './utils/lang/later'\r\nimport stripScripts from './utils/lang/stripScripts'\r\nimport encodeHTML from './utils/lang/encodeHTML'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport guid from './utils/lang/guid'\r\n\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport setAttribute from './utils/dom/setAttribute'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\nimport paint from './utils/icons/paint'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\n\r\nconst TYPES = ['info', 'success', 'warning', 'error']\r\nconst instances = []\r\nlet instance\r\n\r\npaint()\r\n\r\nclass Message extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Message.DEFAULTS)\r\n\r\n this.$el = null\r\n this.id = ''\r\n this.closed = false\r\n this.visible = false\r\n this.offset = -50\r\n this.timer = null\r\n this.destroyed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options)\r\n this.id = this.attr('id')\r\n this.offset = this.attr('offset') || -50\r\n\r\n this.$emit('created', { ...this.attr() })\r\n\r\n this.render().addListeners()\r\n\r\n if (this.attr('visible')) {\r\n this.open()\r\n }\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isDestroyed() {\r\n return this.destroyed\r\n }\r\n\r\n _getClassName() {\r\n const type = this.attr('type')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const visible = this.attr('visible')\r\n const customClass = this.attr('customClass')\r\n const className = [\r\n 'outline-message',\r\n `outline-message_${type}`,\r\n `outline-message_${effect}`\r\n ]\r\n\r\n if (round) {\r\n className.push('outline-message_round')\r\n }\r\n\r\n if (!closable) {\r\n className.push('outline-message_full-width')\r\n }\r\n\r\n if (visible) {\r\n className.push('outline-message_visible')\r\n }\r\n\r\n if (customClass) {\r\n className.push(customClass)\r\n }\r\n\r\n return className\r\n }\r\n\r\n render() {\r\n const type = this.attr('type')\r\n const message = this.attr('message')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n const className = this._getClassName()\r\n const iconName = effect === 'light' ? `circle-${type}` : type\r\n const children = []\r\n let iconSize = 20\r\n let $type\r\n let $message\r\n let $text\r\n let $close\r\n let $el\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n\r\n if (effect !== 'plain') {\r\n $type = icon(iconName, {\r\n iconSet: 'outline',\r\n size: iconSize\r\n })\r\n addClass($type, 'outline-message__icon')\r\n children.push($type)\r\n }\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n $text = document.createTextNode(encodeHTML(stripScripts(message)))\r\n } else {\r\n $text = document.createDocumentFragment()\r\n $text.innerHTML = message\r\n }\r\n $message = createElement(\r\n 'p',\r\n {\r\n className: 'outline-message__content'\r\n },\r\n [$text]\r\n )\r\n children.push($message)\r\n\r\n if (closable) {\r\n $close = icon('close', {\r\n iconSet: 'outline',\r\n size: 18\r\n })\r\n addClass($close, 'outline-message__close')\r\n children.push($close)\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: className.join(' ')\r\n },\r\n children\r\n )\r\n $el.style.cssText = `top:-50px;`\r\n this.$el = $el\r\n document.body.appendChild(this.$el)\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n _refreshIcon() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let iconSize = 20\r\n let type\r\n let effect\r\n let round\r\n let iconName\r\n let $icon\r\n let $svg\r\n let $use\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $icon = $el.querySelector('.outline-icon')\r\n\r\n if (!$icon) {\r\n return this\r\n }\r\n\r\n type = this.attr('type')\r\n effect = this.attr('effect')\r\n round = this.attr('round')\r\n\r\n if (effect === 'plain') {\r\n addClass($icon, HIDDEN)\r\n } else {\r\n removeClass($icon, HIDDEN)\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n }\r\n\r\n $svg = $icon.querySelector('.outline-icon__svg')\r\n setAttributes($svg, {\r\n style: `width:${iconSize}px;height:${iconSize}px;`\r\n })\r\n\r\n $use = $svg.querySelector('use')\r\n iconName = effect === 'light' ? `circle-${type}` : type\r\n setAttribute($use, 'xlink:href', `#outline-icon-${iconName}`)\r\n\r\n return this\r\n }\r\n\r\n _refreshMessage() {\r\n const $el = this.$el\r\n let $message\r\n let dangerouslyUseHTMLString\r\n let message\r\n let text\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $message = $el.querySelector('.outline-message__content')\r\n dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n message = this.attr('message')\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n text = encodeHTML(stripScripts(message))\r\n } else {\r\n text = message\r\n }\r\n\r\n $message.innerHTML = text\r\n\r\n return this\r\n }\r\n\r\n _refreshClose() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let $close\r\n let closable\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $close = $el.querySelector('.outline-message__close')\r\n closable = this.attr('closable')\r\n\r\n if ($close) {\r\n if (closable) {\r\n addClass($close, HIDDEN)\r\n } else {\r\n removeClass($close, HIDDEN)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n _refreshEl() {\r\n const $el = this.$el\r\n let className\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n className = this._getClassName()\r\n setAttribute($el, 'className', className.join(' '))\r\n\r\n return this\r\n }\r\n\r\n refresh(options) {\r\n if (!isPlainObject(options)) {\r\n return this\r\n }\r\n\r\n this.attr(options)\r\n ._refreshIcon()\r\n ._refreshMessage()\r\n ._refreshClose()\r\n ._refreshEl()\r\n\r\n return this\r\n }\r\n\r\n clearTimer() {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n this.timer = null\r\n }\r\n\r\n return this\r\n }\r\n\r\n startTimer(duration) {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.timer = later(() => {\r\n this.$emit('opened')\r\n this.close()\r\n }, duration * 1000)\r\n\r\n return this\r\n }\r\n\r\n open(options) {\r\n const $el = this.$el\r\n let offset\r\n let duration\r\n let top\r\n let cssRules\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.isClosed()) {\r\n this.refresh(options)\r\n }\r\n\r\n offset = this.attr('offset')\r\n duration = this.attr('duration')\r\n top = offset && offset >= this.offset ? offset : this.offset\r\n cssRules = `top:${top}px;`\r\n\r\n this.clearTimer()\r\n\r\n this.$emit('beforeOpen')\r\n\r\n later(() => {\r\n this.visible = true\r\n\r\n addClass($el, 'outline-message_visible')\r\n $el.style.cssText = cssRules\r\n\r\n if (duration > 0) {\r\n this.startTimer(duration)\r\n }\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const $el = this.$el\r\n const cssRules = `top:-50px;`\r\n let destroyAfterClosed\r\n let beforeClose\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n destroyAfterClosed = this.attr('destroyAfterClosed')\r\n beforeClose = this.attr('beforeClose')\r\n\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(this)\r\n }\r\n\r\n $el.style.cssText = cssRules\r\n removeClass($el, 'outline-message_visible')\r\n\r\n this.visible = false\r\n this.closed = true\r\n\r\n later(() => {\r\n this.$emit('closed')\r\n\r\n if (destroyAfterClosed) {\r\n this.destroy()\r\n }\r\n }, 500)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.removeListeners()\r\n\r\n document.body.removeChild(this.$el)\r\n\r\n clearTimeout(this.timer)\r\n this._default()\r\n\r\n this.$emit('afterDestroy')\r\n\r\n return this\r\n }\r\n\r\n onMouseEnter() {\r\n this.clearTimer()\r\n return this\r\n }\r\n\r\n onMouseLeave() {\r\n const duration = this.attr('duration')\r\n const delay = this.attr('delay')\r\n\r\n if (duration <= 0) {\r\n return this\r\n }\r\n\r\n this.startTimer(delay)\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.clearTimer()\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseenter',\r\n this.onMouseEnter,\r\n this,\r\n true\r\n )\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseleave',\r\n this.onMouseLeave,\r\n this,\r\n true\r\n )\r\n on($el, '.outline-message__close', 'click', this.onClose, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $el = this.$el\r\n\r\n off($el, 'mouseenter', this.onMouseEnter)\r\n off($el, 'mouseleave', this.onMouseLeave)\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nMessage.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n id: '',\r\n type: 'info',\r\n effect: 'default',\r\n round: false,\r\n offset: 30,\r\n duration: 3,\r\n delay: 2,\r\n message: '',\r\n customClass: '',\r\n closable: true,\r\n visible: true,\r\n dangerouslyUseHTMLString: false,\r\n destroyAfterClosed: true,\r\n beforeClose: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nTYPES.forEach((type) => {\r\n Message[type] = (options) => {\r\n const config = {}\r\n const id = guid(`outline-message-`)\r\n const beforeClose = options.beforeClose || null\r\n let offset = options.offset || 30\r\n\r\n if (isString(options)) {\r\n config.message = options\r\n } else {\r\n if (isPlainObject(options)) {\r\n extend(config, options)\r\n }\r\n }\r\n config.id = id\r\n config.type = type\r\n config.offset = offset\r\n config.visible = false\r\n config.beforeClose = () => {\r\n Message.close(id, beforeClose)\r\n }\r\n\r\n instance = new Message(config)\r\n instances.forEach((item) => {\r\n offset += item.$el.offsetHeight + 16\r\n })\r\n instance.offset = offset\r\n instance.open()\r\n instances.push(instance)\r\n\r\n return instance\r\n }\r\n})\r\n\r\n// 关闭指定 id 消息的静态方法\r\nMessage.close = (id, beforeClose) => {\r\n const len = instances.length\r\n let index = -1\r\n let i\r\n let offsetHeight\r\n\r\n instances.forEach((instance, i) => {\r\n // 在 instances 中通过 id 找到要关闭的消息\r\n if (id === instance.id) {\r\n offsetHeight = instance.$el.offsetHeight\r\n index = i\r\n\r\n // 关闭消息\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(instance)\r\n }\r\n\r\n instances.splice(i, 1)\r\n }\r\n })\r\n\r\n if (len <= 1 || index === -1 || index > instances.length - 1) {\r\n return false\r\n }\r\n\r\n i = index\r\n\r\n // 界面中的消息逐个向上收起\r\n for (; i < len - 1; i += 1) {\r\n const dom = instances[i].$el\r\n\r\n dom.style['top'] = parseInt(dom.style['top'], 10) - offsetHeight - 16 + 'px'\r\n }\r\n}\r\n\r\n// 关闭所有消息的静态方法\r\nMessage.clear = () => {\r\n let i = instances.length - 1\r\n for (; i >= 0; i -= 1) {\r\n instances[i].close()\r\n }\r\n}\r\n\r\nexport default Message\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Command {\r\n constructor(name, action) {\r\n this.name = name\r\n\r\n if (isFunction(action)) {\r\n this.action = action\r\n }\r\n }\r\n\r\n execute() {\r\n this.action()\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Command\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Commands {\r\n constructor() {\r\n this.commands = []\r\n }\r\n\r\n get(name) {\r\n return this.commands.find((cmd) => cmd.name === name)\r\n }\r\n\r\n add(command) {\r\n this.commands.push(command)\r\n\r\n return this\r\n }\r\n\r\n del(name) {\r\n const commands = this.commands\r\n const command = commands.find((cmd) => cmd.name === name)\r\n const index = command ? commands.indexOf(command) : -1\r\n\r\n if (index > -1) {\r\n commands.splice(index, 1)\r\n }\r\n\r\n return this\r\n }\r\n\r\n clear() {\r\n this.commands = []\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n const command = this.commands.find((cmd) => cmd.name === name)\r\n\r\n if (isFunction(command?.execute)) {\r\n command.execute()\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Commands\r\n","import icon from './utils/icons/icon'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\n\r\nconst _createButton = (button, rounded = true) => {\r\n const $icon = icon(button.icon, {\r\n iconSet: button.iconSet || 'outline',\r\n color: button.color || '',\r\n size: button.size\r\n })\r\n const $anchor = createElement(\r\n 'a',\r\n {\r\n className: `outline-toolbar__anchor`,\r\n href: button.link\r\n },\r\n $icon\r\n )\r\n const $button = createElement(\r\n 'div',\r\n {\r\n className: `outline-toolbar__button ${button.name}`,\r\n 'data-cmd': button.name\r\n },\r\n [button.link ? $anchor : $icon]\r\n )\r\n\r\n addClass($icon, 'outline-toolbar__icon')\r\n\r\n if (rounded) {\r\n addClass($button, 'outline-toolbar_rounded')\r\n }\r\n\r\n if (button.disabled) {\r\n addClass($button, 'outline-toolbar_disabled')\r\n }\r\n\r\n return $button\r\n}\r\n\r\nexport default _createButton\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isObject from './utils/types/isObject'\r\nimport isArray from './utils/types/isArray'\r\nimport later from './utils/lang/later'\r\nimport guid from './utils/lang/guid'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport hasClass from './utils/dom/hasClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport Base from './base'\r\nimport Command from './command'\r\nimport Commands from './commands'\r\n\r\nimport _createButton from './_createButton'\r\n\r\nconst DISABLED = 'outline-toolbar_disabled'\r\nconst HIDDEN = 'outline-toolbar_hidden'\r\n\r\nclass Toolbar extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Toolbar.DEFAULTS)\r\n\r\n this.disabled = false\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.buttons = []\r\n this.commands = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.disabled = this.attr('disabled')\r\n this.closed = this.attr('closed')\r\n this.commands = new Commands()\r\n\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n isDisabled(name) {\r\n let button\r\n\r\n if (name) {\r\n button = this.get(name)\r\n\r\n return button.disabled\r\n }\r\n\r\n return this.disabled\r\n }\r\n\r\n isExist(name) {\r\n const button = this.get(name)\r\n return !!button\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n _getCommand(button) {\r\n const _self = this\r\n const { action, name } = button\r\n let command = null\r\n let handler = null\r\n let context\r\n let listener\r\n\r\n if (!action) {\r\n return command\r\n }\r\n\r\n handler = action.handler\r\n context = action.context || this\r\n\r\n if (isFunction(handler)) {\r\n listener = handler\r\n } else if (isString(handler)) {\r\n listener = function () {\r\n _self.$emit(handler, name)\r\n }\r\n }\r\n\r\n if (isFunction(listener)) {\r\n command = new Command(name, listener.bind(context))\r\n }\r\n\r\n return command\r\n }\r\n\r\n get(name) {\r\n return this.buttons.find((button) => button.name === name)\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const buttons = this.attr('buttons') || []\r\n const placement = this.attr('placement')\r\n\r\n paint()\r\n\r\n this.$el = createElement('div', {\r\n id: guid('outline-toolbar'),\r\n className: `outline-toolbar outline-toolbar_${placement}`\r\n })\r\n this._paint(buttons)\r\n document.body.appendChild(this.$el)\r\n\r\n if (this.closed) {\r\n this.hide()\r\n }\r\n\r\n if (this.disabled) {\r\n this.disable()\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$el.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(buttons) {\r\n const rounded = this.attr('rounded')\r\n const $fragment = document.createDocumentFragment()\r\n\r\n buttons.forEach((button) => {\r\n const $button = _createButton(button, rounded)\r\n const command = this._getCommand(button)\r\n const { name, disabled, context } = button\r\n\r\n $fragment.appendChild($button)\r\n\r\n if (!this.isExist(name)) {\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n })\r\n\r\n this.$el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(buttons) {\r\n this.attr({ buttons })\r\n this.erase()._paint(buttons)\r\n return this\r\n }\r\n\r\n add(button) {\r\n const $el = this.$el\r\n const $fragment = document.createDocumentFragment()\r\n const buttons = this.attr('buttons') || []\r\n const { name, disabled, context } = button\r\n const command = this._getCommand(button)\r\n const _add = (button) => {\r\n const $button = _createButton(button)\r\n\r\n $fragment.appendChild($button)\r\n\r\n buttons.push(button)\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this,\r\n command\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n\r\n if (isObject(button)) {\r\n _add(button)\r\n } else if (isArray(button)) {\r\n button.forEach((item) => {\r\n if (isObject(item)) {\r\n _add(item)\r\n }\r\n })\r\n }\r\n $el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n remove(name) {\r\n const $el = this.$el\r\n const buttons = this.buttons\r\n const button = this.get(name)\r\n let index = -1\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n index = buttons.indexOf(button)\r\n\r\n if (index > -1) {\r\n buttons.splice(index, 1)\r\n this.attrs('buttons').splice(index, 1)\r\n }\r\n\r\n this._disable(name)\r\n $el.removeChild(button.$el)\r\n\r\n return this\r\n }\r\n\r\n _disable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = true\r\n\r\n if (command) {\r\n this.commands.del(command)\r\n }\r\n\r\n addClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n _enable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || !button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = false\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n\r\n removeClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n disable(name) {\r\n const disabled = this.attr('afterDisabled')\r\n\r\n if (name) {\r\n this._disable(name)\r\n } else {\r\n addClass(this.$el, DISABLED)\r\n this.removeListeners()\r\n this.disabled = true\r\n\r\n if (isFunction(disabled)) {\r\n disabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n enable(name) {\r\n const enabled = this.attr('afterEnabled')\r\n\r\n if (name) {\r\n this._enable(name)\r\n } else {\r\n this.disabled = false\r\n removeClass(this.$el, DISABLED)\r\n this.addListeners()\r\n\r\n if (isFunction(enabled)) {\r\n enabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n show(name) {\r\n const opened = this.attr('afterOpened')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n removeClass(button.$el, HIDDEN)\r\n } else {\r\n removeClass($el, HIDDEN)\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n later(() => {\r\n opened.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide(name) {\r\n const closed = this.attr('afterClosed')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n addClass(button.$el, HIDDEN)\r\n } else {\r\n addClass($el, HIDDEN)\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n later(() => {\r\n closed.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n highlight(name) {\r\n const button = this.get(name)\r\n const ACTIVE = 'outline-toolbar_active'\r\n let $button\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n $button = button.$el\r\n\r\n if (hasClass($button, ACTIVE)) {\r\n removeClass($button, ACTIVE)\r\n } else {\r\n addClass($button, ACTIVE)\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.commands.clear()\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n if (this.isDisabled(name)) {\r\n return this\r\n }\r\n\r\n this.commands.execute(name)\r\n\r\n return this\r\n }\r\n\r\n onExecute(evt) {\r\n const $button = evt.delegateTarget\r\n let cmd = ''\r\n\r\n if ($button) {\r\n cmd = $button.getAttribute('data-cmd')\r\n\r\n if (cmd) {\r\n this.execute(cmd)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n on($el, `.outline-toolbar__button`, 'click', this.onExecute, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n off($el, '.outline-toolbar__button', this.onExecute)\r\n\r\n return this\r\n }\r\n}\r\n\r\nToolbar.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'ltr',\r\n closed: false,\r\n disabled: false,\r\n rounded: true,\r\n buttons: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterDisabled: null,\r\n afterEnabled: null,\r\n beforeDestroy: null,\r\n afterDestroy: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Toolbar\r\n","import addClass from './utils/dom/addClass'\r\n\r\nconst _updateSiblingElements = (siblingElement, isPrev) => {\r\n let tagName\r\n let $sibling = siblingElement\r\n\r\n while ($sibling) {\r\n tagName = $sibling.tagName.toLowerCase()\r\n\r\n if (tagName !== 'script' && tagName !== 'style') {\r\n addClass($sibling, 'outline-reader_sibling')\r\n }\r\n\r\n if (isPrev) {\r\n $sibling = $sibling.previousElementSibling\r\n } else {\r\n $sibling = $sibling.nextElementSibling\r\n }\r\n }\r\n}\r\n\r\nexport default _updateSiblingElements\r\n","import cloneDeep from './utils/lang/cloneDeep'\r\nimport later from './utils/lang/later'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport isFunction from './utils/types/isFunction'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport at from './utils/event/at'\r\nimport stop from './utils/event/stop'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\nimport Message from './message'\r\nimport Toolbar from './toolbar'\r\n\r\nimport _updateSiblingElements from './_updateSiblingElements'\r\n\r\nconst ENTER_READING_TIP = '进入阅读模式,按 ESC 键可退出阅读模式'\r\n\r\nclass Reader extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Reader.DEFAULTS)\r\n this.reading = false\r\n\r\n this.$target = null\r\n this.$paper = null\r\n this.$title = null\r\n this.$article = null\r\n this.$progress = null\r\n\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let target = null\r\n\r\n this.attr(options)\r\n\r\n target = this.attr('target')\r\n\r\n if (isString(target)) {\r\n this.$target = document.querySelector(target)\r\n } else if (isElement(target)) {\r\n this.$target = target\r\n }\r\n\r\n if (!this.$target) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n this._renderEdge()._paint(this.$target)\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$article.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint($content) {\r\n const $fragment = document.createDocumentFragment()\r\n const $children = [...$content.cloneNode(true).children]\r\n\r\n later(() => {\r\n $children.forEach(($child) => {\r\n $fragment.appendChild($child)\r\n })\r\n\r\n this.$article.appendChild($fragment)\r\n })\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const $paper = this.$paper\r\n const toolbar = this.toolbar\r\n\r\n if ($paper) {\r\n document.body.removeChild($paper)\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n this.erase()._paint(this.$target)\r\n return this\r\n }\r\n\r\n _renderEdge() {\r\n const $target = this.$target\r\n let title = this.attr('title')\r\n let $paper\r\n let $title\r\n let $article\r\n let $progress\r\n let $sibling\r\n\r\n $title = $target.querySelector('h1')\r\n\r\n if (isElement(title)) {\r\n $title = title\r\n }\r\n\r\n if (isElement($title)) {\r\n title = $title.innerText\r\n }\r\n\r\n $title = createElement(\r\n 'h1',\r\n {\r\n className: 'outline-reader__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n\r\n $article = createElement('article', {\r\n id: 'outline-reader__article',\r\n className: 'outline-reader__article'\r\n })\r\n this.$article = $article\r\n\r\n $progress = createElement('div', {\r\n className: 'outline-reader__progress'\r\n })\r\n this.$progress = $progress\r\n\r\n this.toolbar = new Toolbar({\r\n placement: 'rtl',\r\n buttons: [\r\n {\r\n name: 'exit',\r\n icon: 'close',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.exit\r\n }\r\n }\r\n ]\r\n })\r\n\r\n $paper = createElement(\r\n 'section',\r\n {\r\n id: 'outline-reader',\r\n className: 'outline-reader outline-reader_hidden'\r\n },\r\n [$progress, $title, $article, this.toolbar.$el]\r\n )\r\n this.$paper = $paper\r\n\r\n document.body.appendChild($paper)\r\n\r\n later(() => {\r\n // 设置邻居节点的打印样式\r\n $sibling = $paper.previousElementSibling\r\n _updateSiblingElements($sibling, true)\r\n\r\n $sibling = $paper.nextElementSibling\r\n _updateSiblingElements($sibling)\r\n })\r\n\r\n return this\r\n }\r\n\r\n enter() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n const enterReadingTip = this.attr('enterReadingTip') || ENTER_READING_TIP\r\n\r\n if (this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n $siblings.forEach(($sibling) => {\r\n addClass($sibling, HIDDEN)\r\n })\r\n addClass($paper, READING)\r\n removeClass($paper, HIDDEN)\r\n this.toolbar.show()\r\n this.reading = true\r\n\r\n Message.info({\r\n round: true,\r\n message: enterReadingTip\r\n })\r\n\r\n this.$emit('enterReading')\r\n\r\n return this\r\n }\r\n\r\n exit() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n\r\n if (!this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n addClass($paper, HIDDEN)\r\n removeClass($paper, READING)\r\n $siblings.forEach(($sibling) => {\r\n removeClass($sibling, HIDDEN)\r\n })\r\n this.toolbar.hide()\r\n this.reading = false\r\n\r\n this.$emit('exitReading')\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.reading) {\r\n this.exit()\r\n } else {\r\n this.enter()\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n if (!isFunction(print)) {\r\n return this\r\n }\r\n\r\n print()\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n return this\r\n }\r\n\r\n onPrint() {\r\n this.print()\r\n return this\r\n }\r\n\r\n onEnterReading() {\r\n this.toggle()\r\n return this\r\n }\r\n\r\n onExitReading(evt) {\r\n const keyCode = evt.keyCode\r\n\r\n if (keyCode === 27 && this.reading) {\r\n this.toggle()\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n at(document, 'keyup', this.onExitReading, this, true)\r\n\r\n this.$on('toolbar:action:print', this.onPrint)\r\n this.$on('toolbar:action:reading', this.onEnterReading)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n off(document, 'keyup', this.onExitReading)\r\n\r\n this.$off('toolbar:action:print')\r\n this.$off('toolbar:action:reading')\r\n\r\n return this\r\n }\r\n}\r\n\r\nReader.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n target: '',\r\n title: '',\r\n enterReadingTip: ENTER_READING_TIP\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Reader\r\n","import later from './utils/lang/later'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport toTree from './utils/lang/toTree'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\n\r\nimport Base from './base'\r\nimport Anchors from './anchors'\r\nimport Drawer from './drawer'\r\nimport Chapters from './chapters'\r\nimport Reader from './reader'\r\nimport Toolbar from './toolbar'\r\n\r\nimport getChapters from './getChapters'\r\n\r\nclass Outline extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n const options = Outline.DEFAULTS\r\n\r\n this.attrs = cloneDeep(options)\r\n this.$article = null\r\n this.$scrollElement = null\r\n this.buttons = []\r\n\r\n this.anchors = null\r\n this.drawer = null\r\n this.chapters = null\r\n this.reader = null\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let articleElement = ''\r\n let scrollElement = ''\r\n let $article = null\r\n\r\n this.attr(options)\r\n\r\n articleElement = this.attr('articleElement')\r\n scrollElement = this.attr('scrollElement')\r\n\r\n if (isString(articleElement)) {\r\n $article = document.querySelector(articleElement)\r\n } else if (isElement(articleElement)) {\r\n $article = articleElement\r\n }\r\n this.$article = $article\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n\r\n this.$emit('created', { ...this.attr() })\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n getChapters(isTreeStructured = false) {\r\n const $article = this.$article\r\n const selector = this.attr('selector')\r\n const showCode = this.attr('showCode') || true\r\n const chapterTextFilter = this.attr('chapterTextFilter')\r\n let $headings = []\r\n let chapters = []\r\n\r\n if (!$article) {\r\n return chapters\r\n }\r\n\r\n $headings = [...$article.querySelectorAll(selector)]\r\n chapters = getChapters($headings, showCode, chapterTextFilter)\r\n\r\n return isTreeStructured ? toTree(chapters, 'id', 'pid') : chapters\r\n }\r\n\r\n count() {\r\n return this.getChapters().length\r\n }\r\n\r\n render() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n const $scrollElement = this.$scrollElement\r\n\r\n this._renderReader()._renderAnchors()._renderChapters()._renderToolbar()\r\n\r\n if ($scrollElement && hasToolbar) {\r\n this._updateToolbar({\r\n top: $scrollElement.scrollTop,\r\n min: 0,\r\n max: $scrollElement.scrollHeight\r\n })\r\n }\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n const chapters = this.getChapters()\r\n\r\n this.anchors.refresh(chapters)\r\n this.chapters.refresh(chapters)\r\n this.reader.refresh()\r\n\r\n return this\r\n }\r\n\r\n _renderReader() {\r\n const option = this.attr('reader')\r\n\r\n if (!option.target) {\r\n return this\r\n }\r\n\r\n addClass(this.$article, 'outline-article')\r\n\r\n this.reader = new Reader(option)\r\n\r\n return this\r\n }\r\n\r\n _renderAnchors() {\r\n const articleElement = this.attr('articleElement')\r\n const selector = this.attr('selector')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const scrollElement = this.attr('scrollElement')\r\n const showCode = this.attr('showCode')\r\n const anchorURL = this.attr('anchorURL')\r\n const afterScroll = this.attr('afterScroll')\r\n const chapterTextFilter = this.attr('chapterTextFilter')\r\n\r\n this.anchors = new Anchors({\r\n articleElement,\r\n stickyHeight,\r\n scrollElement,\r\n selector,\r\n showCode,\r\n anchorURL,\r\n afterScroll,\r\n chapterTextFilter\r\n })\r\n\r\n return this\r\n }\r\n\r\n _renderChapters() {\r\n const title = this.attr('title')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const scrollElement = this.attr('scrollElement')\r\n const customClass = this.attr('customClass')\r\n const showCode = this.attr('showCode')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const closeOnClickModal = this.attr('closeOnClickModal')\r\n const showNavModalFirst = this.attr('showNavModalFirst')\r\n const position = this.attr('position')\r\n const placement = this.attr('placement')\r\n const afterSticky = this.attr('afterSticky')\r\n const afterToggle = this.attr('afterToggle')\r\n const afterScroll = this.attr('afterScroll')\r\n const count = this.count()\r\n let parentElement = this.attr('parentElement')\r\n let CHAPTERS_OPTIONS\r\n\r\n if (count < 1) {\r\n return this\r\n }\r\n\r\n CHAPTERS_OPTIONS = {\r\n scrollElement,\r\n showCode,\r\n animationCurrent,\r\n position,\r\n title,\r\n stickyHeight,\r\n chapters: this.getChapters(),\r\n afterSticky,\r\n afterToggle,\r\n afterScroll\r\n }\r\n\r\n if (position === 'relative') {\r\n this.drawer = new Drawer({\r\n placement,\r\n title,\r\n size: 'tiny',\r\n hasOffset: true,\r\n hasPadding: false,\r\n closeOnClickModal,\r\n customClass,\r\n afterClosed: () => {\r\n const toolbar = this.toolbar\r\n toolbar.toggle()\r\n }\r\n })\r\n parentElement = this.drawer.$main\r\n\r\n if (showNavModalFirst) {\r\n this.drawer.open()\r\n }\r\n } else {\r\n CHAPTERS_OPTIONS.customClass = customClass\r\n }\r\n\r\n CHAPTERS_OPTIONS.parentElement = parentElement\r\n this.chapters = new Chapters(CHAPTERS_OPTIONS)\r\n\r\n return this\r\n }\r\n\r\n _renderToolbar() {\r\n const position = this.attr('position')\r\n const hasToolbar = this.attr('hasToolbar')\r\n const showNavModalFirst = this.attr('showNavModalFirst')\r\n const placement = this.attr('placement')\r\n const homepage = this.attr('homepage')\r\n const git = this.attr('git')\r\n const tags = this.attr('tags')\r\n const issues = this.attr('issues')\r\n const tools = this.attr('tools')\r\n const option = this.attr('reader')\r\n const count = this.count()\r\n const UP = {\r\n name: 'up',\r\n icon: 'up',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.toTop\r\n }\r\n }\r\n const HOME = {\r\n name: 'homepage',\r\n icon: 'homepage',\r\n size: 20,\r\n link: homepage\r\n }\r\n const GIT = {\r\n name: 'github',\r\n icon: 'github',\r\n size: 20,\r\n link: git\r\n }\r\n const TAGS = {\r\n name: 'tags',\r\n icon: 'tags',\r\n size: 20,\r\n link: tags\r\n }\r\n const ISSUES = {\r\n name: 'issues',\r\n icon: 'issues',\r\n size: 20,\r\n link: issues\r\n }\r\n const MENU = {\r\n name: 'toggle',\r\n icon: 'menu',\r\n size: 18,\r\n action: {\r\n context: this,\r\n handler: this.toggle\r\n }\r\n }\r\n const READING = {\r\n name: 'reading',\r\n icon: 'file',\r\n size: 18,\r\n action: {\r\n context: this,\r\n handler: 'toolbar:action:reading'\r\n }\r\n }\r\n const PRINT = {\r\n name: 'print',\r\n icon: 'print',\r\n size: 20,\r\n action: {\r\n handler: 'toolbar:action:print'\r\n }\r\n }\r\n const DOWN = {\r\n name: 'down',\r\n icon: 'down',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.toBottom\r\n }\r\n }\r\n const buttons = []\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n buttons.push(UP)\r\n if (count > 0) {\r\n buttons.push(MENU)\r\n }\r\n if (homepage) {\r\n buttons.push(HOME)\r\n }\r\n if (git) {\r\n buttons.push(GIT)\r\n }\r\n if (tags) {\r\n buttons.push(TAGS)\r\n }\r\n if (issues) {\r\n buttons.push(ISSUES)\r\n }\r\n if (option.target) {\r\n buttons.push(READING)\r\n if (isFunction(print)) {\r\n buttons.push(PRINT)\r\n }\r\n }\r\n if (tools?.length > 0) {\r\n buttons.push(...tools)\r\n }\r\n buttons.push(DOWN)\r\n this.buttons = [...buttons]\r\n\r\n this.toolbar = new Toolbar({\r\n placement,\r\n buttons\r\n })\r\n\r\n if (position === 'relative' && showNavModalFirst) {\r\n this.toolbar.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n addButton(button) {\r\n const toolbar = this.toolbar\r\n const buttons = this.buttons\r\n buttons.splice(-1, 0, button)\r\n toolbar.attr({\r\n buttons\r\n })\r\n toolbar.refresh()\r\n return this\r\n }\r\n\r\n removeButton(name) {\r\n this.toolbar.remove(name)\r\n return this\r\n }\r\n\r\n toTop() {\r\n const afterScroll = this.attr('afterScroll')\r\n const toolbar = this.toolbar\r\n const chapters = this.chapters\r\n const count = this.count()\r\n const afterTop = () => {\r\n toolbar.hide('up')\r\n toolbar.show('down')\r\n\r\n if (count > 0) {\r\n chapters.highlight(0)\r\n chapters.playing = false\r\n }\r\n\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(toolbar, 'up')\r\n }\r\n }\r\n\r\n if (count > 0) {\r\n chapters.playing = true\r\n }\r\n this.scrollTo(0, afterTop)\r\n\r\n return this\r\n }\r\n\r\n _updateToolbar({ top, min, max }) {\r\n const toolbar = this.toolbar\r\n const current = Math.ceil(top)\r\n\r\n if (current <= min) {\r\n toolbar.hide('up')\r\n toolbar.show('down')\r\n } else if (current >= max) {\r\n toolbar.hide('down')\r\n toolbar.show('up')\r\n } else if (current > min && current < max) {\r\n toolbar.show('up')\r\n toolbar.show('down')\r\n }\r\n\r\n return this\r\n }\r\n\r\n toBottom() {\r\n const afterScroll = this.attr('afterScroll')\r\n const $scrollElement = this.$scrollElement\r\n const toolbar = this.toolbar\r\n const chapters = this.chapters\r\n const count = this.count()\r\n const top = Math.floor(\r\n $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n )\r\n const afterDown = () => {\r\n toolbar.hide('down')\r\n toolbar.show('up')\r\n\r\n if (count > 0) {\r\n chapters.highlight(count - 1)\r\n chapters.playing = false\r\n }\r\n\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(toolbar, 'bottom')\r\n }\r\n }\r\n\r\n if (count > 0) {\r\n chapters.playing = true\r\n }\r\n\r\n this.scrollTo(top, afterDown)\r\n\r\n return this\r\n }\r\n\r\n scrollTo(top, afterScroll) {\r\n scrollTo(this.$scrollElement, top, afterScroll)\r\n return this\r\n }\r\n\r\n enterReading() {\r\n const reader = this.reader\r\n\r\n if (!reader || reader.reading) {\r\n return this\r\n }\r\n\r\n this.toolbar.toggle()\r\n reader.enter()\r\n\r\n return this\r\n }\r\n\r\n exitReading() {\r\n const reader = this.reader\r\n\r\n if (!reader || !reader.reading) {\r\n return this\r\n }\r\n\r\n this.toolbar.toggle()\r\n reader.exit()\r\n\r\n return this\r\n }\r\n\r\n switchReading() {\r\n const reader = this.reader\r\n\r\n if (!reader) {\r\n return this\r\n }\r\n\r\n reader.toggle()\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const position = this.attr('position')\r\n const toolbar = this.toolbar\r\n const drawer = this.drawer\r\n const chapters = this.chapters\r\n const count = this.count()\r\n\r\n if (count < 1) {\r\n return this\r\n }\r\n\r\n if (position !== 'relative') {\r\n chapters.toggle()\r\n toolbar.highlight('toggle')\r\n } else {\r\n toolbar.toggle()\r\n\r\n later(() => {\r\n drawer.toggle()\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n this.reader.print()\r\n\r\n return this\r\n }\r\n\r\n _destroy() {\r\n const count = this.count()\r\n let anchors = this.anchors\r\n let chapters = this.chapters\r\n let drawer = this.drawer\r\n let reader = this.reader\r\n let toolbar = this.toolbar\r\n let isOutside = false\r\n\r\n this.removeListeners()\r\n\r\n if (reader) {\r\n reader.destroy()\r\n }\r\n\r\n if (count > 0 && chapters) {\r\n isOutside = chapters.isOutside()\r\n\r\n chapters.destroy()\r\n\r\n if (isOutside && drawer) {\r\n drawer.destroy()\r\n }\r\n }\r\n\r\n if (anchors) {\r\n anchors.destroy()\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n this._destroy()._default()\r\n\r\n this.$emit('destroyed')\r\n\r\n return this\r\n }\r\n\r\n onToolbarUpdate({ top, min, max }) {\r\n this._updateToolbar({ top, min, max })\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n this.$on('toolbar:update', this.onToolbarUpdate)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n this.$off('toolbar:update')\r\n\r\n return this\r\n }\r\n}\r\n\r\nOutline.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n articleElement: '#article',\r\n selector: 'h2,h3,h4,h5,h6',\r\n parentElement: '#aside',\r\n scrollElement: 'html,body',\r\n title: '目录',\r\n position: 'relative',\r\n placement: 'rtl',\r\n animationCurrent: true,\r\n showCode: true,\r\n hasToolbar: true,\r\n closeOnClickModal: true,\r\n showNavModalFirst: false,\r\n anchorURL: '',\r\n stickyHeight: 0,\r\n homepage: '',\r\n git: '',\r\n tags: '',\r\n issues: '',\r\n tools: [],\r\n reader: {\r\n target: '',\r\n title: '',\r\n enterReadingTip: '进入阅读模式,按 ESC 键可退出阅读模式'\r\n },\r\n customClass: '',\r\n afterSticky: null,\r\n afterToggle: null,\r\n afterScroll: null,\r\n chapterTextFilter: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nif (window?.jQuery) {\r\n const $ = window.jQuery\r\n\r\n // 将 Outline 扩展为一个 jquery 插件\r\n // eslint-disable-next-line no-undef\r\n $.extend($.fn, {\r\n outline: function (options) {\r\n // eslint-disable-next-line no-undef\r\n let $article = $(this)\r\n\r\n return new Outline(\r\n // eslint-disable-next-line no-undef\r\n $.extend({}, options, {\r\n articleElement: $article\r\n })\r\n )\r\n }\r\n })\r\n}\r\n\r\nexport default Outline\r\n"],"names":["toString","val","Object","prototype","apply","isFunction","later","fn","delay","arguments","length","undefined","setTimeout","isObject","o","isArray","Array","cloneDeep","obj","clone","from","assign","keys","forEach","key","toTree","list","nodeKey","parentKey","map","roots","item","i","children","node","push","isString","str","isElement","nodeName","tagName","nodeType","hasClass","el","className","pattern","RegExp","allClass","classList","contains","exec","addClass","_classList","add","easeInQuad","x","_getScrollElement","$rootElements","$scrollElement","scrollElement","document","querySelector","querySelectorAll","scrollTop","scrollTo","top","afterStop","step","distance","MAX_HEIGHT","scrollHeight","MAX_TOP","stop","play","requestAnimationFrame","hasOwn","prop","hasOwnProperty","call","extend","origin","source","_subscribers","_hasDirectSubscribersFor","topic","has","found","position","lastIndexOf","substring","_hasSubscribers","emit","data","async","execute","subscriber","message","indexOf","callback","context","deliver","guid","uuid","prefix","_removeSubscriber","off","token","subject","execution","j","splice","_removeSubscriberByToken","Base","constructor","options","this","attrs","initialize","attr","render","addListeners","value","refresh","destroy","removeListeners","reload","$emit","event","publish","$on","handler","subscribe","$off","unsubscribe","queue","isHandling","done","runIdle","idleDeadline","timeRemaining","shift","requestIdleCallback","window","cb","start","Date","now","didTimeout","Math","max","cancelIdleCallback","id","clearTimeout","timeSlice","afterComplete","offsetTop","offsetParent","matches","selector","sel","replace","msMatchesSelector","getParentOrHost","host","parentNode","CAPTURE_EVENTS","_off","type","capture","_delegateListener","listeners","_listeners","index","listener","_delete","removeEventListener","purgeElement","recurse","$element","$children","childNodes","getListeners","filter","$child","on","once","evt","target","getTarget","delegateTarget","closest","ctx","includeCTX","startsWith","overrideContext","addEventListener","stopPropagation","preventDefault","SYMBOLS","getSymbols","name","iconSet","patternName","patternSet","find","symbol","fullName","getSymbol","paint","$body","body","$icons","symbols","innerHTML","join","createElement","insertBefore","firstChild","trim","isDOM","isHTMLCollection","fragment","isTextNode","setAttribute","toLowerCase","style","cssText","innerText","setAttributes","$fragment","createDocumentFragment","$el","isValidChild","child","append","createTextNode","appendChild","every","ICON","size","color","width","height","defaultRules","cssRules","$icon","$svg","binds","svg","test","isSVG","xmlns","class","icon","removeClass","remove","_removeHeading","$heading","hasAnchor","isAtStart","CLS_HEADING","text","$anchor","removeAttribute","removeChild","getChapters","headings","showCode","chapterTextFilter","previous","level","chapters","heading","headingLevel","current","parseInt","pid","_getChapterParentIdByDiffer","differ","rel","groups","group","JSON","stringify","code","String","c","subjects","_getChaptersWithCode","Anchors","super","_default","DEFAULTS","$articleElement","$headings","created","articleElement","isTreeStructured","count","mounted","_paint","erase","_remove","LIMIT","anchorURL","update","chapterCode","_updateHeading","headingId","href","groupIndex","after","beforeDestroy","afterDestroy","onAnchorTrigger","afterScroll","stickyHeight","clientHeight","min","TAGS","isHTML","html","basic","full","slice","tag","stripScripts","setProperty","documentElement","zIndex","idx","Drawer","title","closed","$modal","$header","$title","$close","$main","$footer","$overlay","setTitle","isClosed","placement","hasClose","hasOverlay","hasOffset","hasPadding","autoHeight","customClass","content","$content","strHTML","template","open","opened","close","toggle","afterToggle","onClose","closeOnClickModal","afterClosed","afterOpened","at","getStyle","ruleName","getComputedStyle","Chapters","scrollTimer","resizeTimer","observerTimer","Observer","$list","$placeholder","$parentElement","$active","active","offsetWidth","playing","parentElement","$parent","isSticky","isFixed","isInside","isOutside","_paintEdge","animationCurrent","contents","calculateStickyHeight","highlight","sticky","onObserver","clones","parts","byId","chapter","$text","$link","$code","$li","$subject","$chapter","_paintChapters","_getPlaceholderOffset","mainPaddingTop","mainBorderTop","placeholderPaddingTop","placeholderMarginTop","placeholderBorderTop","offsetHeight","positionPlaceholder","ACTIVE","HIGHLIGHT","placeholderOffsetTop","getAttribute","inBounding","parent","parentRect","childRect","getBoundingClientRect","right","bottom","left","afterSticky","FIXED","isStickying","innerHeight","show","HIDDEN","hide","props","root","rootMargin","IntersectionObserver","entries","entry","intersectionRatio","$root","section","observe","intersection","onSelect","split","onScroll","onResize","unobserve","isPlainObject","getPrototypeOf","proto","isObjectLike","encodeHTML","CHARTS","instances","instance","Message","visible","offset","timer","destroyed","isDestroyed","_getClassName","effect","round","closable","dangerouslyUseHTMLString","$type","$message","iconSize","_refreshIcon","iconName","$use","_refreshMessage","_refreshClose","_refreshEl","clearTimer","startTimer","duration","destroyAfterClosed","beforeClose","onMouseEnter","onMouseLeave","config","len","dom","clear","Command","action","Commands","commands","get","cmd","command","del","_createButton","button","rounded","link","$button","disabled","DISABLED","Toolbar","buttons","isDisabled","isExist","_getCommand","_self","bind","disable","_add","_disable","_enable","enable","enabled","onExecute","afterDisabled","afterEnabled","_updateSiblingElements","siblingElement","isPrev","$sibling","previousElementSibling","nextElementSibling","ENTER_READING_TIP","Reader","reading","$target","$paper","$article","$progress","toolbar","_renderEdge","cloneNode","exit","enter","READER","READING","$siblings","enterReadingTip","info","print","onPrint","onEnterReading","onExitReading","keyCode","Outline","anchors","drawer","reader","hasToolbar","_renderReader","_renderAnchors","_renderChapters","_renderToolbar","_updateToolbar","option","showNavModalFirst","CHAPTERS_OPTIONS","homepage","git","tags","issues","tools","UP","toTop","HOME","GIT","ISSUES","MENU","PRINT","DOWN","toBottom","addButton","removeButton","afterTop","_ref","ceil","floor","afterDown","enterReading","exitReading","switchReading","_destroy","onToolbarUpdate","_ref2","_window","jQuery","$","outline"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"outline.min.js","sources":["../../utils/lang/toString.js","../../utils/types/isFunction.js","../../utils/lang/later.js","../../utils/types/isObject.js","../../utils/types/isArray.js","../../utils/lang/cloneDeep.js","../../utils/lang/toTree.js","../../utils/types/isString.js","../../utils/types/isElement.js","../../utils/dom/hasClass.js","../../utils/dom/addClass.js","../../utils/lang/easeInQuad.js","../../utils/dom/_getScrollElement.js","../../utils/dom/scrollTo.js","../../utils/lang/hasOwn.js","../../utils/lang/extend.js","../../utils/observer/_subscribers.js","../../utils/observer/_hasDirectSubscribersFor.js","../../utils/observer/has.js","../../utils/observer/_hasSubscribers.js","../../utils/observer/emit.js","../../utils/types/isTypedArray.js","../../utils/lang/guid.js","../../utils/observer/_removeSubscriber.js","../../utils/observer/off.js","../../utils/observer/_removeSubscriberByToken.js","../../base.js","../../utils/observer/on.js","../../utils/lang/timeSlice.js","../../utils/dom/offsetTop.js","../../utils/dom/matches.js","../../utils/dom/getParentOrHost.js","../../utils/event/enum.js","../../utils/event/_off.js","../../utils/event/_delete.js","../../utils/event/purgeElement.js","../../utils/event/getListeners.js","../../utils/event/off.js","../../utils/event/on.js","../../utils/event/getTarget.js","../../utils/dom/resolveTextNode.js","../../utils/dom/closest.js","../../utils/event/stop.js","../../utils/icons/symbols.js","../../utils/icons/defaults.js","../../utils/icons/getSymbols.js","../../utils/icons/getSymbol.js","../../utils/icons/paint.js","../../utils/icons/add.js","../../utils/lang/trim.js","../../utils/types/isDOM.js","../../utils/types/isHTMLCollection.js","../../utils/types/isFragment.js","../../utils/types/isTextNode.js","../../utils/dom/setAttribute.js","../../utils/dom/setAttributes.js","../../utils/dom/createElement.js","../../utils/icons/createElement.js","../../utils/types/isSVG.js","../../utils/icons/icon.js","../../utils/dom/removeClass.js","../../_removeHeading.js","../../utils/types/isEmpty.js","../../getChapters.js","../../utils/lang/stripTags.js","../../_getChapterParentIdByDiffer.js","../../_getChaptersWithCode.js","../../anchors.js","../../_updateHeading.js","../../utils/types/tags.js","../../utils/types/isHTML.js","../../utils/lang/stripScripts.js","../../utils/dom/setProperty.js","../../zIndex.js","../../drawer.js","../../utils/dom/html.js","../../utils/event/at.js","../../utils/dom/getStyle.js","../../chapters.js","../../_paintChapters.js","../../utils/dom/inBounding.js","../../utils/dom/intersection.js","../../utils/types/isObjectLike.js","../../utils/types/isPlainObject.js","../../utils/lang/encodeHTML.js","../../message.js","../../command.js","../../commands.js","../../_createButton.js","../../toolbar.js","../../_updateSiblingElements.js","../../reader.js","../../outline.js"],"sourcesContent":["/**\r\n * Object 对象原型上的 toString 方法\r\n * ========================================================================\r\n * @method toString\r\n * @param {*} val\r\n * @returns {string}\r\n */\r\nconst toString = (val) => {\r\n return Object.prototype.toString.apply(val)\r\n}\r\n\r\nexport default toString\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测测试数据是否为 Function 类型\r\n * ========================================================================\r\n * @method isFunction\r\n * @param {*} val - (必须)待检测的数据\r\n * @returns {boolean} 'val' 是 Function 类型返回 true,否则返回 false\r\n */\r\nconst isFunction = (val) => {\r\n return typeof val === 'function' || toString(val) === '[object Function]'\r\n}\r\n\r\nexport default isFunction\r\n","import isFunction from '../types/isFunction'\r\n\r\n/**\r\n * later - 延迟执行方法\r\n * ========================================================================\r\n * @method later\r\n * @param {Function} fn\r\n * @param {Number} [delay]\r\n * @returns {number|boolean}\r\n */\r\nconst later = (fn, delay = 300) => {\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n return setTimeout(() => {\r\n fn()\r\n }, delay)\r\n}\r\n\r\nexport default later\r\n","import toString from '../lang/toString'\r\nimport isFunction from './isFunction'\r\n\r\n/**\r\n * 检测数据是否为 Object 类型\r\n * ========================================================================\r\n * @method isObject\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isObject = (o) => {\r\n return (\r\n (toString(o) === '[object Object]' ||\r\n typeof o === 'object' ||\r\n isFunction(o)) &&\r\n o !== null\r\n )\r\n}\r\n\r\nexport default isObject\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测数据是否为 Array 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isArray = (o) => {\r\n if (Array.isArray) {\r\n return Array.isArray(o)\r\n } else {\r\n return toString(o) === '[object Array]'\r\n }\r\n}\r\n\r\nexport default isArray\r\n","import isObject from '../types/isObject'\r\nimport isArray from '../types/isArray'\r\n\r\n/**\r\n * 深拷贝对象函数\r\n * ========================================================================\r\n * @methods cloneDeep\r\n * @param {Object} obj - 深拷贝的对象\r\n * @returns {Array|Object|*}\r\n *\r\n * @example\r\n * const arr = cloneDeep([2,3,4,6])\r\n * => [2,3,4,6]\r\n */\r\nconst cloneDeep = (obj) => {\r\n let clone = {}\r\n\r\n if (obj === null) {\r\n return null\r\n }\r\n\r\n if (isArray(obj)) {\r\n clone = Array.from(obj)\r\n } else {\r\n clone = Object.assign({}, obj)\r\n Object.keys(clone).forEach((key) => {\r\n return (clone[key] = isObject(obj[key]) ? cloneDeep(obj[key]) : obj[key])\r\n })\r\n }\r\n\r\n return clone\r\n}\r\n\r\nexport default cloneDeep\r\n","const toTree = (list, nodeKey, parentKey) => {\r\n const map = {}\r\n const roots = []\r\n\r\n list.forEach((item, i) => {\r\n // initialize the map\r\n map[item[nodeKey]] = i\r\n // initialize the children\r\n item.children = []\r\n })\r\n\r\n list.forEach((item) => {\r\n const node = list[map[item[parentKey]]]\r\n\r\n if (item[parentKey] !== -1) {\r\n // if you have dangling branches check that map[node.parentId] exists\r\n node.children.push(item)\r\n } else {\r\n roots.push(item)\r\n }\r\n })\r\n\r\n return roots\r\n}\r\n\r\nexport default toTree\r\n","/**\r\n * 检测数据是否为 String 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\nconst isString = (str) => {\r\n return typeof str === 'string'\r\n}\r\n\r\nexport default isString\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测数据是否为 HTMLElement DOM 节点\r\n * ========================================================================\r\n * @method isElement\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isElement = (o) => {\r\n return !!(isObject(o) && o.nodeName && o.tagName && o.nodeType === 1)\r\n}\r\n\r\nexport default isElement\r\n","import isElement from '../types/isElement'\r\n/**\r\n * 检测 DOM 节点是否包含名为 className 的样式\r\n * ========================================================================\r\n * @method hasClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst hasClass = (el, className) => {\r\n const pattern = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\r\n let allClass\r\n let classList\r\n\r\n if (!isElement(el)) {\r\n return false\r\n }\r\n\r\n allClass = el.className\r\n\r\n if (!allClass) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList && classList.contains) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!pattern.exec(allClass)\r\n}\r\n\r\nexport default hasClass\r\n","import hasClass from './hasClass'\r\n\r\n/**\r\n * 给 DOM 节点添加名为 className 的样式\r\n * ========================================================================\r\n * @method addClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst addClass = (el, className) => {\r\n let classList\r\n let allClass\r\n\r\n if (hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.add) {\r\n classList.add(className)\r\n } else {\r\n allClass = el.className\r\n allClass += allClass.length > 0 ? ' ' + className : className\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default addClass\r\n","/**\r\n * 返回给定值的平方值\r\n * ========================================================================\r\n * @method easeInQuad\r\n * @param {Number} x\r\n * @returns {number}\r\n */\r\nconst easeInQuad = (x) => {\r\n return x * x\r\n}\r\n\r\nexport default easeInQuad\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\n\r\n/**\r\n * 通过给的 scrollElement 参数,获取滚动 DOM 元素\r\n * ========================================================================\r\n * @method _getScrollElement\r\n * @param {String|HTMLElement} scrollElement\r\n * @returns {Element}\r\n * @private\r\n */\r\nconst _getScrollElement = (scrollElement = null) => {\r\n let $rootElements\r\n let $scrollElement\r\n\r\n if (!scrollElement) {\r\n $rootElements = document.querySelectorAll('html,body')\r\n $scrollElement =\r\n $rootElements[0].scrollTop - $rootElements[1].scrollTop >= 0\r\n ? $rootElements[0]\r\n : $rootElements[1]\r\n } else {\r\n if (isString(scrollElement)) {\r\n $scrollElement = document.querySelector(scrollElement)\r\n } else if (isElement(scrollElement)) {\r\n $scrollElement = scrollElement\r\n }\r\n }\r\n\r\n return $scrollElement\r\n}\r\n\r\nexport default _getScrollElement\r\n","import easeInQuad from '../lang/easeInQuad'\r\nimport isFunction from '../types/isFunction'\r\nimport _getScrollElement from './_getScrollElement'\r\n\r\n/**\r\n * 指定 rootElement DOM 节点滚动到指定 top 位置\r\n * ========================================================================\r\n * @method scrollTo\r\n * @param {HTMLElement|Object} [scrollElement] - (必须)要滚动的 DOM 节点\r\n * @param {Number} top - (必须)滚动的 scrollTop 数值\r\n * @param {Function} [afterStop] - (可选)滚动完成的回调函数\r\n */\r\nconst scrollTo = (scrollElement, top, afterStop) => {\r\n const $scrollElement = _getScrollElement(scrollElement)\r\n let scrollTop = $scrollElement.scrollTop\r\n let step = 0\r\n const distance = top - scrollTop\r\n const MAX_HEIGHT = $scrollElement.scrollHeight\r\n const MAX_TOP = top - MAX_HEIGHT <= 0 ? top : MAX_HEIGHT\r\n const stop = (top) => {\r\n if (isFunction(afterStop)) {\r\n afterStop(top)\r\n }\r\n\r\n return false\r\n }\r\n const play = () => {\r\n step += 1\r\n\r\n // 向上滚动\r\n if (distance < 0) {\r\n scrollTop -= easeInQuad(step)\r\n $scrollElement.scrollTop = scrollTop\r\n\r\n if (scrollTop <= top) {\r\n $scrollElement.scrollTop = top\r\n return stop(top)\r\n }\r\n } else {\r\n scrollTop += easeInQuad(step)\r\n $scrollElement.scrollTop = scrollTop\r\n\r\n if (scrollTop >= MAX_TOP) {\r\n $scrollElement.scrollTop = MAX_TOP\r\n return stop(MAX_TOP)\r\n }\r\n }\r\n\r\n // eslint-disable-next-line compat/compat\r\n requestAnimationFrame(play)\r\n }\r\n\r\n // eslint-disable-next-line compat/compat\r\n requestAnimationFrame(play)\r\n}\r\n\r\nexport default scrollTo\r\n","/**\r\n * 检测对象自身属性中是否具有指定的属性。\r\n * ========================================================================\r\n * @method hasOwn\r\n * @param {Object} obj - (必须)检测的目标对象\r\n * @param {String} prop - (必须)属性名\r\n * @returns {Boolean}\r\n */\r\nconst hasOwn = (obj, prop) => {\r\n const hasOwnProperty = Object.prototype.hasOwnProperty\r\n return obj && hasOwnProperty.call(obj, prop)\r\n}\r\n\r\nexport default hasOwn\r\n","import hasOwn from './hasOwn'\r\n\r\n/**\r\n * 扩展对象\r\n * ========================================================================\r\n * @method extend\r\n * @param {Object} origin\r\n * @param {Object} source\r\n */\r\nconst extend = (origin, source) => {\r\n const keys = Object.keys(source)\r\n\r\n keys.forEach((prop) => {\r\n if (hasOwn(source, prop)) {\r\n origin[prop] = source[prop]\r\n }\r\n })\r\n}\r\n\r\nexport default extend\r\n","/**\r\n * 存储订阅者(主题和处理器的)私有对象\r\n * ========================================================================\r\n * @type {{}}\r\n * @private\r\n */\r\nconst _subscribers = {}\r\n\r\nexport default _subscribers\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 判断是否存在与给定 topic 完全匹配的订阅者信息\r\n * ========================================================================\r\n * @method _hasDirectSubscribersFor\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasDirectSubscribersFor = (topic) => {\r\n return hasOwn(_subscribers, topic) && _subscribers[topic].length > 0\r\n}\r\n\r\nexport default _hasDirectSubscribersFor\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\nimport _hasSubscribers from './_hasSubscribers'\r\n\r\n/**\r\n * 判断是否存在包含 topic 指定的订阅者信息\r\n * ========================================================================\r\n * @method has\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Boolean} [isDirect] - (可选)是否为直接的主题,默认值:true\r\n * @returns {Boolean}\r\n */\r\nconst has = (topic, isDirect = true) => {\r\n return isDirect ? _hasDirectSubscribersFor(topic) : _hasSubscribers(topic)\r\n}\r\n\r\nexport default has\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * 判断是否存在包含给定 topic 相关的订阅者信息\r\n * ========================================================================\r\n * @method _hasSubscribers\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasSubscribers = (topic) => {\r\n let found = _hasDirectSubscribersFor(topic)\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (!found && position !== -1) {\r\n topic = topic.substring(0, position)\r\n position = topic.lastIndexOf('.')\r\n found = _hasDirectSubscribersFor(topic)\r\n }\r\n\r\n return found\r\n}\r\n\r\nexport default _hasSubscribers\r\n","import isTypedArray from '../types/isTypedArray'\r\nimport _subscribers from './_subscribers'\r\nimport has from './has'\r\nimport _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * (异步)发布订阅主题信息\r\n * ========================================================================\r\n * 主题默认是异步发布的。确保在消费者处理主题时,主题的发起者不会被阻止。\r\n * ========================================================================\r\n * @method emit\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Object} [data] - (可选)数据对象\r\n * @param {Boolean} [async] - (可选) 是否异步发布\r\n */\r\nconst emit = (topic, data, async = true) => {\r\n const execute = (topic) => {\r\n if (!_hasDirectSubscribersFor(topic)) {\r\n return false\r\n }\r\n\r\n _subscribers[topic].forEach((subscriber) => {\r\n // 针对 mqtt 消息服务返回的 Uint8Array 类似的 typed arrays 格式的数据\r\n // 采用 toString() 方法转化为普通(JSON)字符串\r\n const message = isTypedArray(data) ? data.toString() : data\r\n\r\n subscriber.callback.call(subscriber.context || subscriber, message)\r\n })\r\n }\r\n const deliver = () => {\r\n let subscriber = topic\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (position !== -1) {\r\n subscriber = subscriber.substring(0, position)\r\n position = subscriber.lastIndexOf('.')\r\n\r\n execute(subscriber)\r\n }\r\n\r\n // 执行 topic 对应的处理器\r\n execute(topic)\r\n // 执行特殊 topic:'*'(监听全部消息的发布)\r\n execute('*')\r\n }\r\n\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (async) {\r\n setTimeout(deliver, 10)\r\n } else {\r\n deliver()\r\n }\r\n}\r\n\r\nexport default emit\r\n","import toString from '../lang/toString'\r\n/**\r\n * 判断检测数据是否为 Typed Arrays 类型的数据\r\n * ========================================================================\r\n * @param {*} val\r\n * @returns {boolean}\r\n */\r\nconst isTypedArray = (val) => {\r\n const TYPES = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]',\r\n '[object BigInt64Array]',\r\n '[object BigUint64Array]'\r\n ]\r\n\r\n return TYPES.indexOf(toString(val)) > -1\r\n}\r\n\r\nexport default isTypedArray\r\n","/**\r\n * 生成唯一 id 字符串的函数\r\n * ========================================================================\r\n * @method guid\r\n * @param {String} [prefix] - 生成 id 的前缀字符串\r\n * @return {String} 返回一个表示唯一 id 的字符串\r\n */\r\nconst guid = (() => {\r\n let uuid = 0\r\n\r\n return (prefix) => {\r\n uuid += 1\r\n\r\n return prefix ? prefix + '-' + uuid : 'guid-' + uuid\r\n }\r\n})()\r\n\r\nexport default guid\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 删除与给定 topic 相同的订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriber\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _removeSubscriber = (topic) => {\r\n if (!hasOwn(_subscribers, topic)) {\r\n return false\r\n }\r\n\r\n delete _subscribers[topic]\r\n}\r\n\r\nexport default _removeSubscriber\r\n","import has from './has'\r\nimport _removeSubscriber from './_removeSubscriber'\r\nimport _removeSubscriberByToken from './_removeSubscriberByToken'\r\n\r\n/**\r\n * 取消订阅主题\r\n * ========================================================================\r\n * @method off\r\n * @param {String} topic - (必须)订阅的主题\r\n * @param {Function|String} [token] - (可选)订阅主题的处理器函数或者唯一 Id 值\r\n */\r\nconst off = (topic, token) => {\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (token) {\r\n _removeSubscriberByToken(token)\r\n } else {\r\n _removeSubscriber(topic)\r\n }\r\n}\r\n\r\nexport default off\r\n","import _subscribers from './_subscribers'\r\nimport _removeSubscriber from './_removeSubscriber'\r\n\r\n/**\r\n * 通过订阅者 token 值删除订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriberByToken\r\n * @param {String} token - 订阅者 token 字符串\r\n * @returns {boolean}\r\n * @private\r\n */\r\nconst _removeSubscriberByToken = (token) => {\r\n const keys = Object.keys(_subscribers)\r\n let index = -1\r\n\r\n if (!token || keys.length < 1) {\r\n return false\r\n }\r\n\r\n keys.forEach((subject) => {\r\n const subscriber = _subscribers[subject]\r\n let topic\r\n\r\n subscriber.forEach((execution, j) => {\r\n if (execution.callback === token || execution.token === token) {\r\n topic = execution.topic\r\n subscriber.splice(index, j)\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (subscriber.length < 1) {\r\n _removeSubscriber(topic)\r\n }\r\n })\r\n}\r\n\r\nexport default _removeSubscriberByToken\r\n","import isString from './utils/types/isString'\r\nimport hasOwn from './utils/lang/hasOwn'\r\nimport isObject from './utils/types/isObject'\r\nimport extend from './utils/lang/extend'\r\nimport publish from './utils/observer/emit'\r\nimport subscribe from './utils/observer/on'\r\nimport unsubscribe from './utils/observer/off'\r\n\r\nclass Base {\r\n constructor(options) {\r\n this.attrs = {}\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options).render().addListeners()\r\n return this\r\n }\r\n\r\n attr(prop, value) {\r\n const attrs = this.attrs\r\n\r\n if (isString(prop)) {\r\n // 只能扩展 attrs 中已有的属性\r\n if (value && hasOwn(attrs, prop)) {\r\n // 更新单个配置信息\r\n attrs[prop] = value\r\n return this\r\n }\r\n\r\n // 只传递 prop 参数,则返回对应的属性值\r\n return attrs[prop]\r\n } else if (isObject(prop)) {\r\n // 批量更新配置信息\r\n extend(attrs, prop)\r\n\r\n return this\r\n } else if (arguments.length === 0) {\r\n // 不传递参数,直接返回整个\r\n return attrs\r\n }\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n return this\r\n }\r\n\r\n refresh() {\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.removeListeners()\r\n return this\r\n }\r\n\r\n reload(options) {\r\n let attrs = this.attr()\r\n\r\n if (options) {\r\n attrs = this.attr(options)\r\n }\r\n\r\n this.destroy().initialize(attrs)\r\n\r\n return this\r\n }\r\n\r\n $emit(event, data) {\r\n publish(event, data)\r\n return this\r\n }\r\n\r\n $on(event, callback) {\r\n subscribe(event, callback, this)\r\n return this\r\n }\r\n\r\n $off(event, callback) {\r\n unsubscribe(event, callback)\r\n return this\r\n }\r\n\r\n addListeners() {\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n return this\r\n }\r\n}\r\n\r\nexport default Base\r\n","import _subscribers from './_subscribers'\r\nimport isFunction from '../types/isFunction'\r\nimport guid from '../lang/guid'\r\n\r\n/**\r\n * 订阅主题,并给出处理器函数\r\n * ========================================================================\r\n * @method on\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Function} handler - (必须)主题的处理器函数\r\n * @param {Object} [context] - (可选)指定 this 执行上下文\r\n * @return {String} - 唯一的 token 字符串,例如:'guid-1'。\r\n */\r\nconst on = (topic, handler, context = null) => {\r\n const token = guid()\r\n let subject = typeof topic === 'symbol' ? topic.toString() : topic\r\n\r\n if (!isFunction(handler)) {\r\n return ''\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (!_subscribers[subject]) {\r\n _subscribers[subject] = []\r\n }\r\n\r\n _subscribers[subject].push({\r\n topic: subject,\r\n callback: handler,\r\n context,\r\n token\r\n })\r\n\r\n return token\r\n}\r\n\r\nexport default on\r\n","/**\r\n * timeSlice.js 时间切片功能函数\r\n * ====================================================\r\n * Created By: Yaohaixiao\r\n * Update: 2023.09.04\r\n */\r\nimport isFunction from '../types/isFunction'\r\nimport later from './later'\r\n\r\nconst queue = []\r\nlet isHandling\r\nlet done\r\n\r\n// Shim from https://developers.google.com/web/updates/2015/08/using-requestidlecallback\r\nif (typeof window.requestIdleCallback === 'undefined') {\r\n window.requestIdleCallback = function (cb) {\r\n const start = Date.now()\r\n return later(function () {\r\n cb({\r\n didTimeout: false,\r\n timeRemaining: function () {\r\n return Math.max(0, 50 - (Date.now() - start))\r\n }\r\n })\r\n }, 10)\r\n }\r\n\r\n window.cancelIdleCallback = function (id) {\r\n clearTimeout(id)\r\n }\r\n}\r\n\r\nfunction runIdle(idleDeadline) {\r\n while (idleDeadline.timeRemaining() > 0 && queue.length) {\r\n const fn = queue.shift()\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n fn()\r\n }\r\n\r\n if (queue.length) {\r\n isHandling = requestIdleCallback(runIdle)\r\n } else {\r\n isHandling = 0\r\n\r\n if (isFunction(done)) {\r\n done()\r\n done = null\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 时间切片功能函数:主要用于优化长时任务的性能,将长时任务分解成\r\n * 多个短时间任务\r\n * ====================================================\r\n * @param {Function} fn - 需要在空闲时执行的回调函数\r\n * @param {Function} afterComplete - queen 的\r\n * @return {(function(): (boolean|undefined))|*|boolean}\r\n */\r\nconst timeSlice = (fn, afterComplete = null) => {\r\n queue.push(fn)\r\n\r\n if (isFunction(afterComplete)) {\r\n done = afterComplete\r\n }\r\n\r\n if (!isHandling) {\r\n requestIdleCallback(runIdle)\r\n }\r\n}\r\n\r\nexport default timeSlice\r\n","/**\r\n * 获取 DOM 节点相对于窗口的 left (纵坐标)值\r\n * ========================================================================\r\n * @method offsetTop\r\n * @param {HTMLElement} el - DOM 节点\r\n * @returns {Number}\r\n */\r\nconst offsetTop = (el) => {\r\n let top = el.offsetTop\r\n\r\n if (el.offsetParent !== null) {\r\n top += offsetTop(el.offsetParent)\r\n }\r\n\r\n return top\r\n}\r\n\r\nexport default offsetTop\r\n","/**\r\n * 获取 options 节点下匹配 selector 选择器的 DOM 节点\r\n * ========================================================================\r\n * Element.matches() 方法可以用来判断 DOM 元素是否与给定的选择器匹配,事件代理判断是\r\n * 否触发绑定的代理事件回调函数,关键就是使用 Element.matches() 辨别当前事件触发的目\r\n * 标 DOM 元素是否为事件代理所期望触发的目标。\r\n * ========================================================================\r\n * @method matches\r\n * @see https://developer.mozilla.org/en-US/docs/web/api/element/matches\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)匹配 DOM 元素的选择器\r\n * @returns {Boolean}\r\n */\r\nconst matches = (el, selector = '') => {\r\n const sel = selector.replace(/^>/i, '')\r\n\r\n if (!selector || !sel || !el) {\r\n return false\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el.matches) {\r\n return el.matches(sel)\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(sel)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport default matches\r\n","/**\r\n * 获取 DOM 元素的父节点\r\n * ========================================================================\r\n * @method getParentOrHost\r\n * @param {*|HTMLElement} el - (必须)要获取父节点的 DOM 元素\r\n * @returns {*|HTMLElement}\r\n */\r\nconst getParentOrHost = (el) => {\r\n return el.host && el !== document && el.host.nodeType\r\n ? el.host\r\n : el.parentNode\r\n}\r\n\r\nexport default getParentOrHost\r\n","export const CAPTURE_EVENTS = [\r\n 'focusout',\r\n 'blur',\r\n 'focusin',\r\n 'focus',\r\n 'load',\r\n 'unload',\r\n 'mouseenter',\r\n 'mouseleave'\r\n]\r\n","import { CAPTURE_EVENTS } from './enum'\r\nimport _delete from './_delete'\r\n\r\n/**\r\n * (私有方法)取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method _off\r\n * @param {HTMLElement} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} fn - (必须)事件处理器回调函数\r\n * @private\r\n */\r\nconst _off = (el, type, fn) => {\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n /* istanbul ignore else */\r\n if (fn._delegateListener) {\r\n fn = fn._delegateListener\r\n delete fn._delegateListener\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n _delete(el, type, fn)\r\n\r\n el.removeEventListener(type, fn, capture)\r\n}\r\n\r\nexport default _off\r\n","/**\r\n * 删除 DOM 元素缓存的 _listeners 数据\r\n * ========================================================================\r\n * @method _delete\r\n * @param {HTMLElement} el - 要删除 listener 的 DOM 元素\r\n * @param {String} type - 事件类型(名称)\r\n * @param {Function} [fn] - 事件处理器回调函数\r\n */\r\nconst _delete = function (el, type, fn) {\r\n const listeners = el._listeners\r\n let index = -1\r\n\r\n if (listeners.length < 1) {\r\n return false\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n listeners.forEach((listener, i) => {\r\n const handler = listener.fn\r\n\r\n if (type === listener.type) {\r\n index = i\r\n\r\n if (handler === fn) {\r\n index = i\r\n }\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n}\r\n\r\nexport default _delete\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport getListeners from './getListeners'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 销毁(type 类型的)代理事件绑定\r\n * ========================================================================\r\n * 1. 设置了事件类型 type,则销毁指定类型的事件绑定,否则清除所有代理事件绑定\r\n * 2. recurse 设置为 true,递归销毁子节点全部事件绑定\r\n * ========================================================================\r\n * @method purgeElement\r\n * @param {HTMLElement|String} el - (必须)DOM 元素或者其选择器\r\n * @param {String|Boolean} type - (必须)事件类型\r\n * @param {Boolean} [recurse] - (可选)是否递归销毁子节点所有事件绑定\r\n */\r\nconst purgeElement = function (el, type, recurse = false) {\r\n const $element = isString(el) ? document.querySelector(el) : el\r\n const $children = $element.childNodes\r\n const listeners = getListeners($element, type)\r\n\r\n listeners.forEach((listener) => {\r\n _off($element, listener.type, listener.fn)\r\n })\r\n\r\n if (\r\n (recurse || type === true || arguments.length === 1) &&\r\n $element &&\r\n $children\r\n ) {\r\n $children.forEach(($child) => {\r\n if (isElement($child)) {\r\n purgeElement($child, type, recurse)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default purgeElement\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 获取 DOM 元素(type 事件类型)事件绑定信息\r\n * ========================================================================\r\n * 如果设置了事件类型 type, 则返回指定类型的事件绑定信息,否则返回所有事件绑定信息\r\n * ========================================================================\r\n * @methods getListeners\r\n * @param {HTMLElement} el - (必须)要获取事件绑定信息的 DOM 元素\r\n * @param {String} [type] - (可选)事件类型\r\n * @returns {Array} - 已绑定的事件信息\r\n */\r\nconst getListeners = (el, type) => {\r\n let listeners = el._listeners || []\r\n\r\n if (isString(type) && type) {\r\n listeners = listeners.filter((listener) => {\r\n return listener.type === type\r\n })\r\n }\r\n\r\n return listeners\r\n}\r\n\r\nexport default getListeners\r\n","import purgeElement from './purgeElement'\r\nimport isFunction from '../types/isFunction'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method off\r\n * @param {HTMLElement|Object} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} [fn] - (可选)事件处理器回调函数\r\n */\r\nconst off = (el, type, fn) => {\r\n // 如果不设置 fn 参数,默认清除 el 元素上绑定的所有事件处理器\r\n if (!isFunction(fn)) {\r\n purgeElement(el, type)\r\n return false\r\n }\r\n\r\n _off(el, type, fn)\r\n}\r\n\r\nexport default off\r\n","import closest from '../dom/closest'\r\nimport off from './off'\r\nimport getTarget from './getTarget'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定代理事件\r\n * ========================================================================\r\n * @method on\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String} selector - (必须)事件代理目标 DOM 元素的选择器\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (可选) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst on = (el, selector, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n const listener = function (evt) {\r\n const target = getTarget(evt)\r\n // 通过 Element.matches 方法获得点击的目标元素\r\n const delegateTarget = closest(target, selector, el)\r\n let overrideContext = context || el\r\n\r\n evt.delegateTarget = delegateTarget\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (delegateTarget) {\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n }\r\n\r\n if (!el) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n selector,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default on\r\n","import resolveTextNode from '../dom/resolveTextNode'\r\n\r\n/**\r\n * 返回触发事件的 target DOM 元素\r\n * ========================================================================\r\n * @method getTarget\r\n * @param {Event} evt - Event 对象\r\n * @return {HTMLElement} - Event 对象的 target DOM 元素\r\n */\r\nconst getTarget = function (evt) {\r\n const target = evt.target\r\n\r\n return resolveTextNode(target)\r\n}\r\n\r\nexport default getTarget\r\n","/**\r\n * 在某些情况下,某些浏览器(例如:Safari 浏览器)会返回实际的目标元素内部的文本节点。\r\n * resolveTextNode() 方法则会返回实际的目标节点。\r\n * ========================================================================\r\n * @method resolveTextNode\r\n * @param {HTMLElement|Text} el - 要解析的节点\r\n * @return {*|HTMLElement} - 实际的目标 DOM 节点\r\n */\r\nconst resolveTextNode = function (el) {\r\n if (el && el.nodeType === 3) {\r\n return el.parentNode\r\n }\r\n\r\n return el\r\n}\r\n\r\nexport default resolveTextNode\r\n","import matches from './matches'\r\nimport getParentOrHost from './getParentOrHost'\r\n\r\n/**\r\n * 获取 options 元素父元素最近的包含 selector 选择器的元素\r\n * ========================================================================\r\n * @method closest\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)DOM 元素的选择其\r\n * @param {HTMLElement} [ctx] - (必须)比对的 DOM 元素\r\n * @param {Boolean} [includeCTX] - (必须)是否包含 context DOM 元素\r\n * @returns {null|HTMLElement} - 返回最接近的 DOM 元素\r\n */\r\nconst closest = (el, selector, ctx, includeCTX) => {\r\n const context = ctx || document\r\n\r\n if (!el) {\r\n return null\r\n }\r\n\r\n do {\r\n /* istanbul ignore else */\r\n if (\r\n (selector != null &&\r\n (selector.startsWith('>')\r\n ? el.parentNode === context && matches(el, selector)\r\n : matches(el, selector))) ||\r\n (includeCTX && el === context)\r\n ) {\r\n return el\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el === context) {\r\n break\r\n }\r\n\r\n /* jshint boss:true */\r\n } while ((el = getParentOrHost(el)))\r\n}\r\n\r\nexport default closest\r\n","/**\r\n * 停止事件(阻止默认行为和阻止事件的捕获或冒泡)\r\n * ========================================================================\r\n * @method stop\r\n * @param {Event} evt - 事件对象\r\n *\r\n * @example\r\n *
\r\n * Service\r\n * Help\r\n *
\r\n *\r\n * const $nav = document.querySelector('#nav')\r\n * const $service = document.querySelector('.anchor')\r\n *\r\n * on($nav, 'click', function(evt) {\r\n * console.log('你点击了导航栏')\r\n * })\r\n *\r\n * on($anchor, 'click', function(evt) {\r\n * console.log('tagName', this.tagName)\r\n *\r\n * // 工作台输出:'a'\r\n * // 不会触发事件冒泡,输出:'你点击了导航栏'\r\n * // 也不会切换到 href 属性的页面,阻止了点击链接的默认行为\r\n * stopEvent(evt)\r\n * })\r\n */\r\nconst stop = function (evt) {\r\n evt.stopPropagation()\r\n evt.preventDefault()\r\n}\r\n\r\nexport default stop\r\n","import DEFAULTS from './defaults'\r\n\r\nconst SYMBOLS = [...DEFAULTS]\r\n\r\nexport default SYMBOLS\r\n","const DEFAULTS = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n]\r\n\r\nexport default DEFAULTS\r\n","import isString from '../types/isString'\r\nimport getSymbol from './getSymbol'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n *\r\n * @method getSymbols\r\n * @param {String} [name]\r\n * @param {String} [iconSet]\r\n * @returns {string[]|*}\r\n */\r\nconst getSymbols = (name, iconSet = 'icon') => {\r\n if (isString(name)) {\r\n return getSymbol(name, iconSet)\r\n }\r\n\r\n return [...SYMBOLS]\r\n}\r\n\r\nexport default getSymbols\r\n","import SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method getSymbol\r\n * @param {String} name\r\n * @param {String} [iconSet]\r\n * @returns {String}\r\n */\r\nconst getSymbol = (name, iconSet = 'icon') => {\r\n const patternName = /id=\"(.*?)\"/\r\n const patternSet = /^(\\w+)-/\r\n const symbols = SYMBOLS\r\n\r\n return symbols.find((symbol) => {\r\n const names = patternName.exec(symbol)\r\n const fullName = names[1]\r\n const sets = patternSet.exec(fullName)\r\n const setName = sets[1]\r\n const iconName =\r\n iconSet === 'icon' ? `${iconSet}-${name}` : `${iconSet}-icon-${name}`\r\n\r\n return setName === iconSet && fullName === iconName\r\n })\r\n}\r\n\r\nexport default getSymbol\r\n","import add from './add'\r\nimport getSymbols from './getSymbols'\r\n\r\n/**\r\n * 绘制 SVG 图标集\r\n * ========================================================================\r\n * @method paint\r\n * @param {String|Array} symbol\r\n */\r\nconst paint = (symbol = '') => {\r\n const $body = document.body\r\n let $icons = document.querySelector('#outline-icons')\r\n let symbols = []\r\n\r\n add(symbol)\r\n symbols = getSymbols()\r\n\r\n if ($icons) {\r\n $icons.innerHTML = symbols.join('')\r\n } else {\r\n $icons = document.createElement('div')\r\n $icons.innerHTML =\r\n ``\r\n $body.insertBefore($icons.firstChild, $body.firstChild)\r\n }\r\n}\r\n\r\nexport default paint\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method add\r\n * @param {Array|String} symbols\r\n * @return {Boolean}\r\n */\r\nconst add = (symbols) => {\r\n if (!symbols) {\r\n return false\r\n }\r\n\r\n if (isArray(symbols) && symbols.length > 0) {\r\n symbols.forEach((symbol) => {\r\n /* istanbul ignore else */\r\n if (SYMBOLS.indexOf(symbol) === -1 && isString(symbol)) {\r\n SYMBOLS.push(symbol)\r\n }\r\n })\r\n } else {\r\n /* istanbul ignore else */\r\n if (isString(symbols)) {\r\n SYMBOLS.push(symbols)\r\n }\r\n }\r\n}\r\n\r\nexport default add\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 清楚字符串起始位置所有的空格\r\n * ========================================================================\r\n * @method trim\r\n * @param {string} str\r\n * @returns {string|Boolean}\r\n */\r\nconst trim = (str) => {\r\n if (!isString(str)) {\r\n return false\r\n }\r\n return str.replace(/(^\\s+)|(\\s+$)/g, '')\r\n}\r\n\r\nexport default trim\r\n","import isObject from './isObject'\r\nimport isElement from './isElement'\r\nimport isHTMLCollection from './isHTMLCollection'\r\nimport isFragment from './isFragment'\r\nimport isTextNode from './isTextNode'\r\n\r\nconst isDOM = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (isElement(el) || isHTMLCollection(el) || isFragment(el) || isTextNode(el))\r\n )\r\n}\r\n\r\nexport default isDOM\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isHTMLCollection = (el) => {\r\n return !!(isObject(el) && toString(el) === '[object NodeList]')\r\n}\r\n\r\nexport default isHTMLCollection\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isFragment = (fragment) => {\r\n return !!(\r\n isObject(fragment) && toString(fragment) === '[object DocumentFragment]'\r\n )\r\n}\r\n\r\nexport default isFragment\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isTextNode = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (toString(el) === '[object Text]' || (el.tagName && el.nodeType === 3))\r\n )\r\n}\r\n\r\nexport default isTextNode\r\n","/**\r\n * 给 DOM 节点设置属性/值\r\n * ========================================================================\r\n * @method setAttribute\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} attr - 属性名称\r\n * @param {String|Number|Boolean} value - 属性值\r\n */\r\nconst setAttribute = (el, attr, value) => {\r\n let tagName = el.tagName.toLowerCase()\r\n\r\n switch (attr) {\r\n case 'style':\r\n el.style.cssText = value\r\n break\r\n case 'value':\r\n if (tagName === 'input' || tagName === 'textarea') {\r\n el.value = value\r\n } else {\r\n el.setAttribute(attr, value)\r\n }\r\n break\r\n case 'htmlFor':\r\n el.setAttribute('for', value)\r\n break\r\n case 'className':\r\n el.className = value\r\n break\r\n case 'innerHTML':\r\n el.innerHTML = value\r\n break\r\n case 'innerText':\r\n el.innerText = value\r\n break\r\n default:\r\n el.setAttribute(attr, value)\r\n break\r\n }\r\n}\r\n\r\nexport default setAttribute\r\n","import isObject from '../types/isObject'\r\nimport hasOwn from '../lang/hasOwn'\r\nimport setAttribute from './setAttribute'\r\n\r\nconst setAttributes = (el, attrs) => {\r\n if (!el || !isObject(attrs)) {\r\n return false\r\n }\r\n\r\n Object.keys(attrs).forEach((attr) => {\r\n const value = attrs[attr]\r\n if (hasOwn(attrs, attr)) {\r\n setAttribute(el, attr, value)\r\n }\r\n })\r\n}\r\n\r\nexport default setAttributes\r\n","import isObject from '../types/isObject'\r\nimport isString from '../types/isString'\r\nimport isArray from '../types/isArray'\r\nimport isDOM from '../types/isDOM'\r\nimport setAttributes from './setAttributes'\r\n\r\n/**\r\n * 创建 DOM 节点,并添加属性和子节点\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} tagName - 标签名称\r\n * @param {Object|Array|HTMLElement|DocumentFragment|String} attrs - 属性对象或者子节点\r\n * @param {Array|HTMLElement|DocumentFragment|String} [children] - 子节点数组\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (tagName, attrs, children) => {\r\n const $fragment = document.createDocumentFragment()\r\n const $el = document.createElement(tagName)\r\n const isValidChild = (child) => {\r\n return isDOM(child) || isString(child)\r\n }\r\n const append = (child) => {\r\n let $child\r\n\r\n if (!isValidChild(child)) {\r\n return false\r\n }\r\n\r\n if (isDOM(child)) {\r\n $child = child\r\n } else if (isString(child)) {\r\n $child = document.createTextNode(child)\r\n }\r\n\r\n $fragment.appendChild($child)\r\n }\r\n\r\n if (isObject(attrs)) {\r\n setAttributes($el, attrs)\r\n } else if (isArray(attrs) && attrs.every((attr) => isValidChild(attr))) {\r\n attrs.forEach((child) => {\r\n append(child)\r\n })\r\n } else if (isDOM(attrs)) {\r\n append(attrs)\r\n } else if (isString(attrs)) {\r\n append(document.createTextNode(attrs))\r\n }\r\n\r\n if (isArray(children)) {\r\n children.forEach((child) => {\r\n append(child)\r\n })\r\n } else {\r\n append(children)\r\n }\r\n\r\n $el.appendChild($fragment)\r\n\r\n return $el\r\n}\r\n\r\nexport default createElement\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport isSVG from '../types/isSVG'\r\nimport setAttributes from '../dom/setAttributes'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @param {Object} [options.attrs]\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (name, options = {}) => {\r\n const ICON = 'outline-icon'\r\n const size = options.size || 0\r\n const color = options.color || ''\r\n const iconSet = options.iconSet || ''\r\n const width = isArray(size) ? size[0] : size\r\n const height = isArray(size) ? size[1] : size\r\n const defaultRules = size ? `width:${width}px;height:${height}px;` : ''\r\n const cssRules = color ? defaultRules + `color:${color}` : defaultRules\r\n const attrs = options.attrs || {}\r\n const $icon = document.createElement('i')\r\n let binds = ''\r\n let svg = ''\r\n let $svg\r\n\r\n if (!isString(name)) {\r\n return null\r\n }\r\n\r\n if (isSVG(name)) {\r\n svg = name\r\n } else {\r\n binds =\r\n iconSet && iconSet !== 'icon'\r\n ? `xlink:href=\"#${iconSet}-icon-${name}\"`\r\n : `xlink:href=\"#icon-${name}\"`\r\n svg = ``\r\n }\r\n\r\n $icon.innerHTML = svg\r\n\r\n if (attrs.className) {\r\n attrs.className = `${ICON} ${attrs.className}`\r\n } else {\r\n attrs.className = ICON\r\n }\r\n\r\n setAttributes($icon, attrs)\r\n\r\n $svg = $icon.querySelector('svg')\r\n setAttributes($svg, {\r\n 'aria-hidden': true,\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n class: 'outline-icon__svg',\r\n width: 200,\r\n height: 200,\r\n style: cssRules\r\n })\r\n\r\n return $icon\r\n}\r\n\r\nexport default createElement\r\n","import isString from './isString'\r\n\r\nconst isSVG = (str) => {\r\n const declaration = '(?:<\\\\?xml[^>]*>\\\\s*)?'\r\n const doctype =\r\n '(?:<\\\\!doctype svg[^>]*\\\\s*(?:\\\\[?(?:\\\\s*]*>\\\\s*)*\\\\]?)*[^>]*>\\\\s*)?'\r\n const content = ']*>[^]*<\\\\/svg>\\\\s*$'\r\n const svg = `^\\\\s*${declaration}${doctype}${content}\\\\s*$`\r\n const pattern = new RegExp(svg, 'i')\r\n\r\n return isString(str) && pattern.test(str)\r\n}\r\n\r\nexport default isSVG\r\n","import createElement from './createElement'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method icon\r\n * @alias createElement\r\n * @see createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @returns {HTMLElement}\r\n */\r\nconst icon = (name, options = {}) => {\r\n return createElement(name, options)\r\n}\r\n\r\nexport default icon\r\n","import trim from '../lang/trim'\r\nimport hasClass from './hasClass'\r\n\r\n/**\r\n * 移除 DOM 节点的 className 样式\r\n * ========================================================================\r\n * @method removeClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst removeClass = (el, className) => {\r\n let allClass = el.className\r\n let classList\r\n\r\n if (!allClass || !hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.remove) {\r\n classList.remove(className)\r\n } else {\r\n allClass = trim(allClass.replace(className, ''))\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default removeClass\r\n","import removeClass from './utils/dom/removeClass'\r\nimport isEmpty from './utils/types/isEmpty'\r\nimport trim from './utils/lang/trim'\r\n\r\nconst _removeHeading = ($heading, hasAnchor = true, isAtStart = true) => {\r\n const CLS_HEADING = 'outline-heading'\r\n const text = $heading.innerHTML\r\n const pattern = /^\\d+(\\.?\\d+)*\\s?/gi\r\n let $anchor\r\n\r\n $heading.innerHTML = text.replace(pattern, '')\r\n $heading.removeAttribute('id')\r\n $heading.removeAttribute('data-id')\r\n\r\n removeClass($heading, CLS_HEADING)\r\n\r\n if (!hasAnchor) {\r\n return false\r\n }\r\n\r\n $anchor = $heading.querySelector(`.${CLS_HEADING}__anchor`)\r\n\r\n if (isAtStart) {\r\n removeClass($heading, `${CLS_HEADING}_start`)\r\n }\r\n\r\n if (isEmpty(trim($heading.className))) {\r\n $heading.removeAttribute('class')\r\n }\r\n\r\n // 存在锚点才移除\r\n if ($anchor) {\r\n $heading.removeChild($anchor)\r\n }\r\n}\r\n\r\nexport default _removeHeading\r\n","import isString from './isString'\r\n/**\r\n * 检测数据是否为空字符串\r\n * ========================================================================\r\n * @method isEmpty\r\n * @param {String} str\r\n * @returns {boolean}\r\n */\r\nconst isEmpty = (str) => {\r\n return isString(str) && str === ''\r\n}\r\n\r\nexport default isEmpty\r\n","import trim from './utils/lang/trim'\r\nimport stripTags from './utils/lang/stripTags'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport _getChapterParentIdByDiffer from './_getChapterParentIdByDiffer'\r\nimport _getChaptersWithCode from './_getChaptersWithCode'\r\n\r\n/**\r\n * 根据文章中的 h1~h6 标签,自动分析返回文章章节数据\r\n * ========================================================================\r\n * @method getChapters\r\n * @param {Array} headings\r\n * @param {Boolean} [showCode]\r\n * @param {Function} [chapterTextFilter]\r\n * @return {*|*[]}\r\n */\r\nconst getChapters = (headings, showCode = true, chapterTextFilter = null) => {\r\n let previous = 1\r\n let level = 0\r\n let text = ''\r\n const chapters = []\r\n\r\n headings.forEach((heading, i) => {\r\n const tagName = heading.tagName\r\n const headingLevel = tagName.replace(/h/i, '')\r\n let current = parseInt(headingLevel, 10)\r\n let pid = -1\r\n\r\n // 场景1:当前标题是前一个标题的子标题\r\n // 当前标题的(标题标签)序号 > 前一个标题的序号:两个相连的标题是父标题 -> 子标题关系;\r\n // h2 (前一个标题)\r\n // h3 (当前标题)\r\n if (current > previous) {\r\n level += 1\r\n\r\n // 第一层级的 pid 是 -1\r\n if (level === 1) {\r\n pid = -1\r\n } else {\r\n pid = i - 1\r\n }\r\n }\r\n // 场景2:当前标题和前一个标题层级相同\r\n // 当前标题的(标题标签)序号 = 前一个标题的序号\r\n // h2 (前一个标题)\r\n // h2 (当前标题)\r\n // 当前标题的(标题标签)序号 < 前一个标题的序号,并且当前标题序号 > 当前的级别\r\n // h2\r\n // h4 (前一个标题)\r\n // h3 (当前标题:这种情况我们还是任务 h3 是 h2 的下一级章节)\r\n else if (current === previous || (current < previous && current > level)) {\r\n // H1 的层级肯定是 1\r\n if (current === 1) {\r\n level = 1\r\n pid = -1\r\n } else {\r\n pid = chapters[i - 1].pid\r\n }\r\n }\r\n // 场景3:当前标题比前一个标题层级高\r\n else if (current <= level) {\r\n // H1 的层级肯定是 1\r\n if (current === 1) {\r\n level = 1\r\n } else {\r\n level = level - (previous - current)\r\n\r\n if (level <= 1) {\r\n level = 1\r\n }\r\n }\r\n\r\n // 第一级的标题\r\n if (level === 1) {\r\n pid = -1\r\n } else {\r\n // 通过当前标题和前一个标题之间的等级差,获得当前标题的父标题ID\r\n pid = _getChapterParentIdByDiffer(chapters, previous - current, i)\r\n }\r\n }\r\n\r\n previous = current\r\n\r\n text = stripTags(trim(heading.innerHTML))\r\n\r\n if (isFunction(chapterTextFilter)) {\r\n text = chapterTextFilter(text)\r\n }\r\n\r\n chapters.push({\r\n id: i,\r\n pid: pid,\r\n level: level,\r\n rel: `heading-${i}`,\r\n text,\r\n tagName\r\n })\r\n })\r\n\r\n return showCode ? _getChaptersWithCode(chapters) : chapters\r\n}\r\n\r\nexport default getChapters\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 过滤所有 HTML 标签\r\n * ========================================================================\r\n * @method stripTags\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\nconst stripTags = (str) => {\r\n if (!isString(str)) {\r\n return ''\r\n }\r\n return str.replace(/<\\/?[^>]+(>|$)/g, '')\r\n}\r\n\r\nexport default stripTags\r\n","const _getChapterParentIdByDiffer = (chapters, differ, index) => {\r\n let previous = chapters[index - 1]\r\n let pid\r\n let i\r\n\r\n for (i = 0; i < differ; i += 1) {\r\n pid = previous.pid\r\n previous = chapters[pid]\r\n }\r\n\r\n pid = previous.pid\r\n\r\n return pid\r\n}\r\n\r\nexport default _getChapterParentIdByDiffer\r\n","import isArray from './utils/types/isArray'\r\n\r\nconst _getChaptersWithCode = (chapters) => {\r\n const groups = {}\r\n const cb = (o) => {\r\n return [o.pid]\r\n }\r\n\r\n chapters.forEach((o) => {\r\n const group = JSON.stringify(cb(o))\r\n\r\n groups[group] = groups[group] || []\r\n groups[group].push(o)\r\n\r\n o.index = groups[group].length\r\n\r\n if (o.pid === -1) {\r\n o.code = String(o.index)\r\n }\r\n })\r\n\r\n Object.keys(groups).forEach((group) => {\r\n groups[group].forEach((c) => {\r\n const subjects = groups[`[${c.id}]`]\r\n\r\n if (!subjects || !isArray(subjects)) {\r\n return false\r\n }\r\n\r\n subjects.forEach((o) => {\r\n o.code = c.code + '.' + o.index\r\n })\r\n })\r\n })\r\n\r\n return chapters\r\n}\r\n\r\nexport default _getChaptersWithCode\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isElement from './utils/types/isElement'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport timeSlice from './utils/lang/timeSlice'\r\nimport toTree from './utils/lang/toTree'\r\nimport later from './utils/lang/later'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\nimport offsetTop from './utils/dom/offsetTop'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport stop from './utils/event/stop'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport _updateHeading from './_updateHeading'\r\nimport _removeHeading from './_removeHeading'\r\nimport getChapters from './getChapters'\r\n\r\nimport Base from './base'\r\n\r\nclass Anchors extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Anchors.DEFAULTS)\r\n\r\n this.$articleElement = null\r\n this.$scrollElement = null\r\n this.$headings = []\r\n this.chapters = []\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n const showCode = this.attr('showCode') || true\r\n let created\r\n let scrollElement\r\n let selector\r\n let $articleElement\r\n let articleElement\r\n\r\n this.attr(options)\r\n\r\n articleElement = this.attr('articleElement')\r\n scrollElement = this.attr('scrollElement')\r\n selector = this.attr('selector')\r\n created = this.attr('created')\r\n\r\n if (isString(articleElement)) {\r\n $articleElement = document.querySelector(articleElement)\r\n } else if (isElement(articleElement)) {\r\n $articleElement = articleElement\r\n }\r\n\r\n if (!$articleElement) {\r\n return this\r\n }\r\n\r\n this.$articleElement = $articleElement\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n this.$headings = [...$articleElement.querySelectorAll(selector)]\r\n\r\n if (this.$headings.length < 1) {\r\n return this\r\n }\r\n\r\n this.chapters = getChapters(\r\n this.$headings,\r\n showCode,\r\n this.attr('chapterTextFilter')\r\n )\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n getChapters(isTreeStructured = false) {\r\n const chapters = this.chapters\r\n return isTreeStructured ? toTree(chapters, 'id', 'pid') : chapters\r\n }\r\n\r\n count() {\r\n return this.chapters.length\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n\r\n paint()\r\n\r\n this._paint(this.chapters)\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this._remove()\r\n\r\n return this\r\n }\r\n\r\n _paint(chapters) {\r\n const LIMIT = 400\r\n const hasAnchor = this.attr('hasAnchor')\r\n const isAtStart = this.attr('isAtStart')\r\n const showCode = this.attr('showCode')\r\n const anchorURL = this.attr('anchorURL')\r\n const count = this.count()\r\n const $headings = [...this.$headings]\r\n const update = (headings, group) => {\r\n headings.forEach(($heading, i) => {\r\n const id = i + group * LIMIT\r\n const chapterCode = chapters[id].code\r\n _updateHeading($heading, id, {\r\n hasAnchor,\r\n isAtStart,\r\n showCode,\r\n chapterCode,\r\n anchorURL\r\n })\r\n })\r\n }\r\n let groupIndex = -1\r\n\r\n // 针对超长的文章,进行 timeSlice 处理\r\n if (count > LIMIT) {\r\n groupIndex += 1\r\n // 同步绘制 Limit 以内的标题链接(可以确保 50ms 完成绘制)\r\n update($headings.splice(0, LIMIT), 0)\r\n // 采用 timeSlice 处理机制绘制剩余的标题\r\n while ($headings.length > 0) {\r\n const once = $headings.splice(0, LIMIT)\r\n timeSlice(\r\n () => {\r\n update(once, (groupIndex += 1))\r\n },\r\n () => {\r\n this.$emit('anchors:all:paint')\r\n }\r\n )\r\n }\r\n } else {\r\n update($headings, 0)\r\n }\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const hasAnchor = this.attr('hasAnchor')\r\n const isAtStart = this.attr('isAtStart')\r\n const $headings = this.$headings\r\n\r\n $headings.forEach(($heading) => {\r\n _removeHeading($heading, hasAnchor, isAtStart)\r\n })\r\n\r\n return this\r\n }\r\n\r\n refresh(chapters) {\r\n const $articleElement = this.$articleElement\r\n const selector = this.attr('selector')\r\n\r\n this.$headings = [...$articleElement.querySelectorAll(selector)]\r\n this.chapters = chapters\r\n\r\n this.erase()._paint(chapters)\r\n\r\n return this\r\n }\r\n\r\n scrollTo(top, after) {\r\n const el = this.$scrollElement\r\n\r\n scrollTo(el, top, after)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onAnchorTrigger(evt) {\r\n const anchorURL = this.attr('anchorURL')\r\n const afterScroll = this.attr('afterScroll')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const $anchor = evt.delegateTarget\r\n const $heading = $anchor.parentNode\r\n const top = offsetTop($heading) - (stickyHeight + 10)\r\n const $scrollElement = this.$scrollElement\r\n const min = 0\r\n const max = $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n const after = () => {\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(this, 'anchor')\r\n }\r\n\r\n later(() => {\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n })\r\n }\r\n\r\n this.scrollTo(top, after)\r\n\r\n if (!anchorURL) {\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $articleElement = this.$articleElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n on(\r\n $articleElement,\r\n '.outline-heading__anchor',\r\n 'click',\r\n this.onAnchorTrigger,\r\n this,\r\n true\r\n )\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $articleElement = this.$articleElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n off($articleElement, 'click', this.onAnchorTrigger)\r\n\r\n return this\r\n }\r\n}\r\n\r\nAnchors.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n scrollElement: 'html,body',\r\n articleElement: '#article',\r\n selector: 'h1,h2,h3,h4,h5,h6',\r\n stickyHeight: 0,\r\n anchorURL: '',\r\n hasAnchor: true,\r\n isAtStart: true,\r\n showCode: false,\r\n created: null,\r\n mounted: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n chapterTextFilter: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Anchors\r\n","import trim from './utils/lang/trim'\r\nimport createElement from './utils/dom/createElement'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\n\r\nconst _updateHeading = ($heading, i, options) => {\r\n const CLS_HEADING = 'outline-heading'\r\n const hasAnchor = options.hasAnchor || true\r\n const isAtStart = options.isAtStart || true\r\n const showCode = options.showCode || false\r\n const chapterCode = options.chapterCode || ''\r\n const anchorURL = options.anchorURL || ''\r\n const headingId = `heading-${i}`\r\n const attrs = {\r\n id: headingId,\r\n className: isAtStart ? `${CLS_HEADING} ${CLS_HEADING}_start` : CLS_HEADING,\r\n 'data-id': i\r\n }\r\n const text = trim($heading.innerHTML)\r\n let $anchor\r\n let $icon\r\n\r\n if (showCode) {\r\n attrs.innerHTML = chapterCode + ' ' + text\r\n }\r\n setAttributes($heading, attrs)\r\n\r\n if (!hasAnchor) {\r\n return false\r\n }\r\n\r\n $icon = icon('hash', { iconSet: 'outline' })\r\n $anchor = createElement(\r\n 'a',\r\n {\r\n id: `anchor-${i}`,\r\n className: `${CLS_HEADING}__anchor anchor-${i}`,\r\n href: anchorURL || `#${headingId}`,\r\n target: anchorURL ? '_blank' : 'self',\r\n 'data-id': i\r\n },\r\n $icon\r\n )\r\n $heading.appendChild($anchor)\r\n}\r\n\r\nexport default _updateHeading\r\n","// HTML 合法的标签\r\nconst TAGS = [\r\n 'a',\r\n 'abbr',\r\n 'address',\r\n 'area',\r\n 'article',\r\n 'aside',\r\n 'audio',\r\n 'b',\r\n 'base',\r\n 'bdi',\r\n 'bdo',\r\n 'blockquote',\r\n 'body',\r\n 'br',\r\n 'button',\r\n 'canvas',\r\n 'caption',\r\n 'cite',\r\n 'code',\r\n 'col',\r\n 'colgroup',\r\n 'data',\r\n 'datalist',\r\n 'dd',\r\n 'del',\r\n 'details',\r\n 'dfn',\r\n 'dialog',\r\n 'div',\r\n 'dl',\r\n 'dt',\r\n 'em',\r\n 'embed',\r\n 'fieldset',\r\n 'figcaption',\r\n 'figure',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'head',\r\n 'header',\r\n 'hgroup',\r\n 'hr',\r\n 'html',\r\n 'i',\r\n 'iframe',\r\n 'img',\r\n 'input',\r\n 'ins',\r\n 'kbd',\r\n 'label',\r\n 'legend',\r\n 'li',\r\n 'link',\r\n 'main',\r\n 'map',\r\n 'mark',\r\n 'math',\r\n 'menu',\r\n 'menuitem',\r\n 'meta',\r\n 'meter',\r\n 'nav',\r\n 'noscript',\r\n 'object',\r\n 'ol',\r\n 'optgroup',\r\n 'option',\r\n 'output',\r\n 'p',\r\n 'param',\r\n 'picture',\r\n 'pre',\r\n 'progress',\r\n 'q',\r\n 'rb',\r\n 'rp',\r\n 'rt',\r\n 'rtc',\r\n 'ruby',\r\n 's',\r\n 'samp',\r\n 'script',\r\n 'search',\r\n 'section',\r\n 'select',\r\n 'slot',\r\n 'small',\r\n 'source',\r\n 'span',\r\n 'strong',\r\n 'style',\r\n 'sub',\r\n 'summary',\r\n 'sup',\r\n 'svg',\r\n 'table',\r\n 'tbody',\r\n 'td',\r\n 'template',\r\n 'textarea',\r\n 'tfoot',\r\n 'th',\r\n 'thead',\r\n 'time',\r\n 'title',\r\n 'tr',\r\n 'track',\r\n 'u',\r\n 'ul',\r\n 'var',\r\n 'video',\r\n 'wbr'\r\n]\r\n\r\nexport default TAGS\r\n","import isString from './isString'\r\nimport trim from '../lang/trim'\r\nimport TAGS from './tags'\r\n\r\n/**\r\n * 检测测试数据是否为合法的 HTML 代码\r\n * ========================================================================\r\n * @method isHTML\r\n * @category Lang\r\n * @see https://github.com/sindresorhus/html-tags\r\n * @see https://github.com/sindresorhus/is-html\r\n * @param {String} str - 要检测的数据\r\n * @returns {Boolean} 'val' 为合法的 HTML 代码,返回 true,否则返回 false\r\n */\r\nconst isHTML = (str) => {\r\n let html\r\n let basic\r\n let full\r\n\r\n if (!isString(str)) {\r\n return false\r\n }\r\n\r\n // 为了提高性能,我们将其限制在合理的长度内。\r\n html = trim(str).slice(0, 1000)\r\n basic = /\\s*|]*>|]*>|]+>/i\r\n full = new RegExp(TAGS.map((tag) => `<${tag}\\\\b[^>]*>`).join('|'), 'i')\r\n\r\n return basic.test(html) || full.test(html)\r\n}\r\n\r\nexport default isHTML\r\n","/**\r\n * 移除字符串中的 JavaScript 代码\r\n * ====================================================\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nconst stripScripts = (str) => {\r\n return str.replace(/]*>.*?<\\/script>/gi, '')\r\n}\r\n\r\nexport default stripScripts\r\n","const setProperty = (prop, value) => {\r\n const documentElement = document.documentElement\r\n documentElement.style.setProperty(prop, value)\r\n}\r\n\r\nexport default setProperty\r\n","import setProperty from './utils/dom/setProperty'\r\n\r\nlet index = 2000\r\n\r\nconst zIndex = (idx) => {\r\n if (idx) {\r\n index = idx\r\n } else {\r\n index += 1\r\n }\r\n\r\n setProperty('--outline-zIndex', `${index}`)\r\n\r\n return index\r\n}\r\n\r\nexport default zIndex\r\n","import Base from './base'\r\n\r\nimport later from './utils/lang/later'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isDOM from './utils/types/isDOM'\r\nimport isHTML from './utils/types/isHTML'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport html from './utils/dom/html'\r\nimport createElement from './utils/dom/createElement'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport paint from './utils/icons/paint'\r\nimport icon from './utils/icons/icon'\r\nimport zIndex from './zIndex'\r\n\r\nclass Drawer extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n this.zIndex = 0\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Drawer.DEFAULTS)\r\n this.title = ''\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.$modal = null\r\n this.$header = null\r\n this.$title = null\r\n this.$close = null\r\n this.$main = null\r\n this.$footer = null\r\n this.$overlay = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.title = this.attr('title')\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n return this\r\n }\r\n\r\n setTitle(title) {\r\n this.attr('title', title)\r\n this.title = title\r\n this.$title.innerHTML = title\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const size = this.attr('size')\r\n const placement = this.attr('placement')\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const hasOffset = this.attr('hasOffset')\r\n const hasPadding = this.attr('hasPadding')\r\n const autoHeight = this.attr('autoHeight')\r\n const customClass = this.attr('customClass')\r\n let $el\r\n let $modal\r\n let $header\r\n let $title\r\n let $close\r\n let $main\r\n let $footer\r\n let $overlay\r\n\r\n paint()\r\n this.zIndex = zIndex()\r\n\r\n $title = createElement(\r\n 'h2',\r\n {\r\n className: 'outline-drawer__title'\r\n },\r\n this.title\r\n )\r\n this.$title = $title\r\n\r\n if (hasClose) {\r\n $close = createElement(\r\n 'div',\r\n {\r\n className: 'outline-drawer__close'\r\n },\r\n icon('close', { iconSet: 'outline', size: 20 })\r\n )\r\n this.$close = $close\r\n }\r\n\r\n $header = createElement(\r\n 'header',\r\n {\r\n className: 'outline-drawer__header'\r\n },\r\n [$title, $close]\r\n )\r\n this.$header = $header\r\n\r\n $main = createElement('div', {\r\n className: 'outline-drawer__main'\r\n })\r\n this.$main = $main\r\n\r\n if (!hasPadding) {\r\n addClass($main, 'outline-drawer_full')\r\n }\r\n\r\n $footer = createElement('footer', {\r\n className: 'outline-drawer__footer'\r\n })\r\n this.$footer = $footer\r\n\r\n $modal = createElement(\r\n 'div',\r\n {\r\n className: `outline-drawer__modal outline-drawer_${placement} outline-drawer_${size} outline-drawer_closed`\r\n },\r\n [$header, $main, $footer]\r\n )\r\n this.$modal = $modal\r\n\r\n if (hasOffset) {\r\n addClass($modal, 'outline-drawer_offset')\r\n }\r\n\r\n if (autoHeight) {\r\n addClass($modal, 'outline-drawer_auto')\r\n }\r\n\r\n if (customClass) {\r\n addClass($modal, customClass)\r\n }\r\n\r\n if (hasOverlay) {\r\n $overlay = createElement('div', {\r\n className: 'outline-drawer__overlay'\r\n })\r\n this.$overlay = $overlay\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: `outline-drawer`\r\n },\r\n [$modal, $overlay]\r\n )\r\n this.$el = $el\r\n document.body.appendChild($el)\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$main.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(content) {\r\n let $content = null\r\n\r\n if (isFunction(content)) {\r\n $content = content()\r\n } else if (isDOM(content)) {\r\n $content = content\r\n } else if (isHTML(content)) {\r\n $content = html(content)\r\n }\r\n\r\n if ($content) {\r\n this.$main.appendChild($content)\r\n }\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(content) {\r\n this.erase()._paint(content)\r\n return this\r\n }\r\n\r\n open() {\r\n const opened = this.attr('afterOpened')\r\n const $modal = this.$modal\r\n\r\n addClass(this.$el, 'outline-drawer_opened')\r\n removeClass($modal, 'outline-drawer_closed')\r\n addClass($modal, 'outline-drawer_opened')\r\n\r\n later(() => {\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n opened.call(this)\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const closed = this.attr('afterClosed')\r\n const $modal = this.$modal\r\n\r\n removeClass($modal, 'outline-drawer_opened')\r\n addClass($modal, 'outline-drawer_closed')\r\n\r\n later(() => {\r\n removeClass(this.$el, 'outline-drawer_opened')\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n closed.call(this)\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const afterToggle = this.attr('afterToggle')\r\n const closed = this.isClosed()\r\n\r\n if (closed) {\r\n this.open()\r\n } else {\r\n this.close()\r\n }\r\n\r\n if (isFunction(afterToggle)) {\r\n later(() => {\r\n afterToggle.call(this, closed)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const afterDestroy = this.attr('afterDestroy')\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n let index = this.zIndex\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n index -= 1\r\n zIndex(index)\r\n this.zIndex = 0\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const closeOnClickModal = this.attr('closeOnClickModal')\r\n const $el = this.$el\r\n\r\n if (hasClose) {\r\n on($el, '.outline-drawer__close', 'click', this.onClose, this, true)\r\n }\r\n\r\n if (hasOverlay && closeOnClickModal) {\r\n on($el, '.outline-drawer__overlay', 'click', this.onClose, this, true)\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const $el = this.$el\r\n\r\n if (!hasClose && !hasOverlay) {\r\n return this\r\n }\r\n\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nDrawer.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'rtl',\r\n title: '标题',\r\n size: 'regular',\r\n hasClose: true,\r\n hasOverlay: true,\r\n hasOffset: false,\r\n hasPadding: true,\r\n autoHeight: true,\r\n closeOnClickModal: true,\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n afterToggle: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Drawer\r\n","import isHTML from '../types/isHTML'\r\nimport isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport stripScripts from '../lang/stripScripts'\r\nimport createElement from './createElement'\r\n\r\n/**\r\n * 获取或者设置 DOM 元素的 innerHTML 属性值,或者通过 HTML 字符串,创建 DOM 元素\r\n * ========================================================================\r\n * @method html\r\n * @param {HTMLElement|String} el\r\n * @param {String} [strHTML]\r\n * @return {DocumentFragment|null|*}\r\n */\r\nconst html = (el, strHTML) => {\r\n const $fragment = document.createDocumentFragment()\r\n\r\n if (!el || (!isHTML(el) && !isString(el) && !isElement(el))) {\r\n return null\r\n }\r\n\r\n if (isHTML(el)) {\r\n const template = createElement('div')\r\n let children = []\r\n\r\n template.innerHTML = stripScripts(el)\r\n children = [...template.childNodes]\r\n children.forEach((child) => {\r\n $fragment.appendChild(child)\r\n })\r\n\r\n return $fragment\r\n } else if (isString(strHTML)) {\r\n el.innerHTML = stripScripts(strHTML)\r\n } else {\r\n return el.innerHTML\r\n }\r\n}\r\n\r\nexport default html\r\n","import isFunction from '../types/isFunction'\r\nimport off from './off'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定事件\r\n * ========================================================================\r\n * @method at\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (必须) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst at = (el, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n const listener = function (evt) {\r\n let overrideContext = context || el\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default at\r\n","/**\r\n * 获取HTML元素的某个CSS样式值\r\n * ====================================================\r\n * @param el\r\n * @param ruleName\r\n * @returns {*}\r\n */\r\nconst getStyle = (el, ruleName) => {\r\n return getComputedStyle(el)[ruleName]\r\n}\r\n\r\nexport default getStyle\r\n","import Base from './base'\r\n\r\nimport isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isElement from './utils/types/isElement'\r\nimport later from './utils/lang/later'\r\nimport at from './utils/event/at'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport stop from './utils/event/stop'\r\nimport createElement from './utils/dom/createElement'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport addClass from './utils/dom/addClass'\r\nimport intersection from './utils/dom/intersection'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport offsetTop from './utils/dom/offsetTop'\r\nimport getStyle from './utils/dom/getStyle'\r\nimport setProperty from './utils/dom/setProperty'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\n\r\nimport _paintChapters from './_paintChapters'\r\nimport inBounding from './utils/dom/inBounding'\r\n\r\nclass Chapters extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n this.scrollTimer = null\r\n this.resizeTimer = null\r\n this.observerTimer = null\r\n this.Observer = null\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Chapters.DEFAULTS)\r\n\r\n this.$el = null\r\n this.$title = null\r\n this.$main = null\r\n this.$list = null\r\n this.$placeholder = null\r\n this.$parentElement = null\r\n this.$scrollElement = null\r\n this.$active = null\r\n\r\n this.chapters = []\r\n this.active = 0\r\n this.offsetWidth = 0\r\n this.offsetTop = 0\r\n this.playing = false\r\n this.closed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n let parentElement\r\n let scrollElement\r\n let $parent\r\n\r\n this.attr(options)\r\n\r\n created = this.attr('created')\r\n parentElement = this.attr('parentElement')\r\n scrollElement = this.attr('scrollElement')\r\n\r\n if (isString(parentElement)) {\r\n $parent = document.querySelector(parentElement)\r\n } else if (isElement(parentElement)) {\r\n $parent = parentElement\r\n }\r\n this.$parentElement = $parent\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n\r\n this.chapters = this.attr('chapters')\r\n this.closed = this.attr('closed')\r\n this.active = this.attr('active')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n if (this.chapters.length < 1) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n this.$active = document.querySelector(`#chapter-${this.active}`)\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isSticky() {\r\n const position = this.attr('position')\r\n return position === 'sticky'\r\n }\r\n\r\n isFixed() {\r\n const position = this.attr('position')\r\n return position === 'fixed'\r\n }\r\n\r\n isInside() {\r\n return this.isFixed() || this.isSticky()\r\n }\r\n\r\n isOutside() {\r\n return !this.isInside()\r\n }\r\n\r\n count() {\r\n return this.chapters.length\r\n }\r\n\r\n _paintEdge() {\r\n const $fragment = document.createDocumentFragment()\r\n const STICKY = 'outline-chapters_sticky'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const title = this.attr('title')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const customClass = this.attr('customClass')\r\n const $parentElement = this.$parentElement\r\n const children = []\r\n const contents = []\r\n let $title = null\r\n let $el\r\n let $main\r\n let $list\r\n let $placeholder\r\n\r\n if (!$parentElement) {\r\n return this\r\n }\r\n\r\n if (this.isInside() && title) {\r\n $title = createElement(\r\n 'h2',\r\n {\r\n className: 'outline-chapters__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n contents.push($title)\r\n }\r\n\r\n $list = createElement('ul', {\r\n // 为优化性能,添加了 _fixed 和 _hidden\r\n // fixed 为了让 $list 脱离流布局\r\n // hidden 让 $list 不可见\r\n className: `outline-chapters__list`\r\n })\r\n this.$list = $list\r\n children.push($list)\r\n\r\n if (animationCurrent) {\r\n $placeholder = createElement('div', {\r\n className: 'outline-chapters__placeholder'\r\n })\r\n this.$placeholder = $placeholder\r\n children.push($placeholder)\r\n }\r\n\r\n $main = createElement(\r\n 'div',\r\n {\r\n className: 'outline-chapters__main'\r\n },\r\n children\r\n )\r\n this.$main = $main\r\n contents.push($main)\r\n\r\n $el = createElement(\r\n 'nav',\r\n {\r\n id: 'outline-chapters',\r\n className: `outline-chapters ${HIDDEN}`\r\n },\r\n contents\r\n )\r\n this.$el = $el\r\n\r\n if (this.isSticky()) {\r\n this.calculateStickyHeight()\r\n addClass($el, STICKY)\r\n }\r\n\r\n if (customClass) {\r\n addClass($el, customClass)\r\n }\r\n $fragment.appendChild($el)\r\n $parentElement.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const $parentElement = this.$parentElement\r\n const chapters = this.chapters\r\n const count = this.count()\r\n let $el\r\n\r\n if (!$parentElement || chapters.length < 1) {\r\n return this\r\n }\r\n\r\n if (this.isInside()) {\r\n addClass($parentElement, 'outline-chapters-parent')\r\n }\r\n\r\n this._paintEdge()\r\n $el = this.$el\r\n\r\n this._paint(chapters)\r\n\r\n later(() => {\r\n this.highlight(this.active)\r\n }, 60)\r\n\r\n this.offsetTop = offsetTop($el)\r\n this.offsetWidth = $el.offsetWidth\r\n\r\n if (this.isFixed()) {\r\n this.sticky()\r\n setProperty('--outline-chapters-width', `${this.offsetWidth}px`)\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n if (count < 400) {\r\n this.onObserver()\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$list.innerHTML = ''\r\n\r\n return this\r\n }\r\n\r\n _paint(chapters) {\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const showCode = this.attr('showCode')\r\n const $el = this.$el\r\n const $list = this.$list\r\n\r\n _paintChapters($list, chapters, showCode)\r\n removeClass($el, HIDDEN)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n this.$parentElement.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(chapters) {\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const $el = this.$el\r\n\r\n removeClass($el, HIDDEN)\r\n this.erase()._paint(chapters)\r\n\r\n return this\r\n }\r\n\r\n _getPlaceholderOffset(index) {\r\n const $main = this.$main\r\n const $list = this.$list\r\n const $anchor = $list.querySelector('.outline-chapters__anchor')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const mainPaddingTop = parseInt(getStyle($main, 'padding-top'), 10)\r\n const mainBorderTop = parseInt(getStyle($main, 'border-top-width'), 10)\r\n const placeholderPaddingTop = parseInt(getStyle($list, 'padding-top'), 10)\r\n const placeholderMarginTop = parseInt(getStyle($list, 'margin-top'), 10)\r\n const placeholderBorderTop = parseInt(\r\n getStyle($list, 'border-top-width'),\r\n 10\r\n )\r\n let height = $anchor.offsetHeight\r\n let offsetTop = 0\r\n let top\r\n\r\n if (!animationCurrent) {\r\n return this\r\n }\r\n\r\n if (mainPaddingTop) {\r\n offsetTop += mainPaddingTop\r\n }\r\n\r\n if (placeholderPaddingTop) {\r\n offsetTop += placeholderPaddingTop\r\n }\r\n\r\n if (placeholderMarginTop) {\r\n offsetTop += placeholderMarginTop\r\n }\r\n\r\n if (mainBorderTop) {\r\n offsetTop += mainBorderTop\r\n }\r\n\r\n if (placeholderBorderTop) {\r\n offsetTop += placeholderBorderTop\r\n }\r\n\r\n top = height * index\r\n\r\n return offsetTop + top\r\n }\r\n\r\n positionPlaceholder(index) {\r\n const $list = this.$list\r\n const $placeholder = this.$placeholder\r\n const $anchor = $list.querySelector('.outline-chapters__anchor')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const height = $anchor.offsetHeight\r\n let offsetTop = 0\r\n\r\n if (!animationCurrent) {\r\n return this\r\n }\r\n\r\n offsetTop = this._getPlaceholderOffset(index)\r\n\r\n $placeholder.style.cssText = `transform: translateY(${offsetTop}px);height:${height}px;`\r\n\r\n return this\r\n }\r\n\r\n highlight(id) {\r\n const $el = this.$el\r\n const animationCurrent = this.attr('animationCurrent')\r\n const ACTIVE = 'outline-chapters_active'\r\n const HIGHLIGHT = 'outline-chapters_highlight'\r\n let $anchor = null\r\n let placeholderOffsetTop = 0\r\n\r\n if (!$el) {\r\n return this\r\n }\r\n\r\n $anchor = $el.querySelector(`#chapter__anchor-${id}`)\r\n\r\n if (!$anchor) {\r\n return this\r\n }\r\n\r\n this.active = parseInt($anchor.getAttribute('data-id'), 10)\r\n\r\n if (this.$active) {\r\n removeClass(this.$active, HIGHLIGHT)\r\n removeClass(this.$active, ACTIVE)\r\n }\r\n\r\n this.$active = $anchor\r\n addClass(this.$active, ACTIVE)\r\n\r\n if (animationCurrent) {\r\n this.positionPlaceholder(this.active)\r\n\r\n later(() => {\r\n if (!inBounding(this.$active, this.$parentElement)) {\r\n placeholderOffsetTop = this._getPlaceholderOffset(this.active)\r\n scrollTo(this.$main, placeholderOffsetTop)\r\n }\r\n })\r\n } else {\r\n addClass(this.$active, HIGHLIGHT)\r\n }\r\n\r\n return this\r\n }\r\n\r\n sticky() {\r\n const afterSticky = this.attr('afterSticky')\r\n const FIXED = 'outline-chapters_fixed'\r\n const $el = this.$el\r\n const top = this.offsetTop\r\n const scrollTop = this.$scrollElement.scrollTop\r\n let isStickying\r\n\r\n if (!this.isFixed()) {\r\n return this\r\n }\r\n\r\n isStickying = scrollTop >= top\r\n\r\n if (isStickying) {\r\n addClass($el, FIXED)\r\n } else {\r\n removeClass($el, FIXED)\r\n }\r\n\r\n if (isFunction(afterSticky)) {\r\n afterSticky.call(this, this.isClosed(), isStickying)\r\n }\r\n\r\n return this\r\n }\r\n\r\n calculateStickyHeight() {\r\n const documentElement = document.documentElement\r\n const height = Math.max(\r\n documentElement.clientHeight || 0,\r\n window.innerHeight || 0\r\n )\r\n setProperty('--outline-sticky-height', `${height}px`)\r\n return this\r\n }\r\n\r\n scrollTo(top, after) {\r\n const el = this.$scrollElement\r\n\r\n scrollTo(el, top, after)\r\n\r\n return this\r\n }\r\n\r\n show() {\r\n const FOLDED = 'outline-chapters_folded'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const opened = this.attr('afterOpened')\r\n const count = this.count()\r\n const $el = this.$el\r\n const $parent = this.$parentElement\r\n\r\n if (this.isInside()) {\r\n if (count > 800) {\r\n removeClass($parent, HIDDEN)\r\n } else {\r\n removeClass($parent, HIDDEN)\r\n later(() => {\r\n removeClass($parent, FOLDED)\r\n }, 30)\r\n }\r\n } else {\r\n removeClass($el, HIDDEN)\r\n }\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n opened.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide() {\r\n const FOLDED = 'outline-chapters_folded'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const closed = this.attr('afterClosed')\r\n const count = this.count()\r\n const $el = this.$el\r\n const $parent = this.$parentElement\r\n\r\n if (this.isInside()) {\r\n if (count > 800) {\r\n addClass($parent, HIDDEN)\r\n } else {\r\n addClass($parent, FOLDED)\r\n later(() => {\r\n addClass($parent, HIDDEN)\r\n })\r\n }\r\n } else {\r\n addClass($el, HIDDEN)\r\n }\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n closed.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const afterToggle = this.attr('afterToggle')\r\n const top = this.offsetTop\r\n const scrollTop = this.$scrollElement.scrollTop\r\n let isStickying\r\n\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n if (isFunction(afterToggle)) {\r\n later(() => {\r\n isStickying = scrollTop >= top\r\n afterToggle.call(this, this.isClosed(), isStickying)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n if (this.scrollTimer) {\r\n clearTimeout(this.scrollTimer)\r\n this.scrollTimer = null\r\n }\r\n\r\n if (this.resizeTimer) {\r\n clearTimeout(this.resizeTimer)\r\n this.resizeTimer = null\r\n }\r\n\r\n if (this.observerTimer) {\r\n clearTimeout(this.observerTimer)\r\n this.observerTimer = null\r\n }\r\n\r\n if (this.Observer) {\r\n this.Observer = null\r\n }\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onObserver() {\r\n const selector = this.attr('selector')\r\n\r\n this.Observer = intersection(\r\n ($heading) => {\r\n const id = $heading.getAttribute('data-id')\r\n\r\n if (this.playing) {\r\n return false\r\n }\r\n\r\n if (this.observerTimer) {\r\n clearTimeout(this.observerTimer)\r\n }\r\n\r\n this.observerTimer = later(() => {\r\n this.highlight(id)\r\n }, 100)\r\n },\r\n {\r\n selector,\r\n context: this\r\n }\r\n )\r\n\r\n return this\r\n }\r\n\r\n onSelect(evt) {\r\n const stickyHeight = this.attr('stickyHeight')\r\n const $anchor = evt.delegateTarget\r\n const id = $anchor.getAttribute('data-id')\r\n const headingId = $anchor.href.split('#')[1]\r\n const $heading = document.querySelector(`#${headingId}`)\r\n const top = offsetTop($heading) - (stickyHeight + 10)\r\n const min = 0\r\n const max = this.$scrollElement.scrollHeight\r\n const afterScroll = this.attr('afterScroll')\r\n const after = () => {\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(this, 'chapter')\r\n }\r\n\r\n later(() => {\r\n this.playing = false\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n })\r\n }\r\n\r\n this.playing = true\r\n if (this.isFixed()) {\r\n this.sticky()\r\n later(() => {\r\n this.scrollTo(top, after)\r\n this.highlight(id)\r\n }, 10)\r\n } else {\r\n this.scrollTo(top, after)\r\n this.highlight(id)\r\n }\r\n\r\n stop(evt)\r\n\r\n return this\r\n }\r\n\r\n onScroll() {\r\n const $scrollElement = this.$scrollElement\r\n\r\n if (this.scrollTimer) {\r\n clearTimeout(this.scrollTimer)\r\n }\r\n\r\n this.scrollTimer = later(() => {\r\n const top = $scrollElement.scrollTop\r\n const min = 0\r\n const max = $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n\r\n if (this.isFixed()) {\r\n this.sticky()\r\n }\r\n\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n onResize() {\r\n if (this.resizeTimer) {\r\n clearTimeout(this.resizeTimer)\r\n }\r\n\r\n this.resizeTimer = later(() => {\r\n this.calculateStickyHeight()\r\n })\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n const $scrollElement = this.$scrollElement\r\n const tagName = $scrollElement.tagName.toLowerCase()\r\n let $element = $scrollElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n if (tagName === 'html' || tagName === 'body') {\r\n $element = window\r\n }\r\n\r\n on($el, '.outline-chapters__anchor', 'click', this.onSelect, this, true)\r\n at($element, 'scroll', this.onScroll, this, true)\r\n if (this.isSticky()) {\r\n at(window, 'resize', this.onResize, this, true)\r\n }\r\n this.$on('anchors:all:paint', this.onObserver, this)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const selector = this.attr('selector')\r\n const $el = this.$el\r\n const $scrollElement = this.$scrollElement\r\n const tagName = $scrollElement.tagName.toLowerCase()\r\n let $element = $scrollElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n if (tagName === 'html' || tagName === 'body') {\r\n $element = window\r\n }\r\n\r\n off($el, 'click', this.onSelect)\r\n off($element, 'scroll', this.onScroll)\r\n if (this.isSticky()) {\r\n off(window, 'resize', this.onResize)\r\n }\r\n this.$off('anchors:all:paint')\r\n\r\n if (this.Observer) {\r\n document.querySelectorAll(selector).forEach((section) => {\r\n this.Observer.unobserve(section)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nChapters.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n parentElement: '',\r\n scrollElement: '',\r\n selector: '.outline-heading',\r\n active: 0,\r\n closed: false,\r\n showCode: true,\r\n animationCurrent: true,\r\n position: 'relative',\r\n stickyHeight: 0,\r\n chapters: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n afterSticky: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Chapters\r\n","import createElement from './utils/dom/createElement'\r\nimport timeSlice from './utils/lang/timeSlice'\r\n\r\nconst _paintChapters = ($list, chapters, showCode = false) => {\r\n const LIMIT = 400\r\n const count = chapters.length\r\n const clones = [...chapters]\r\n const paint = (parts) => {\r\n const byId = (id) => $list.querySelector(`#${id}`)\r\n parts.forEach((chapter) => {\r\n const pid = chapter.pid\r\n const id = chapter.id\r\n const rel = chapter.rel\r\n const children = []\r\n const $text = createElement(\r\n 'span',\r\n {\r\n className: 'outline-chapters__text'\r\n },\r\n chapter.text\r\n )\r\n let $link\r\n let $code\r\n let $li\r\n let $subject\r\n let $chapter\r\n\r\n if (showCode) {\r\n $code = createElement(\r\n 'span',\r\n {\r\n className: 'outline-chapters__code',\r\n 'data-id': id\r\n },\r\n chapter.code\r\n )\r\n\r\n children.push($code)\r\n }\r\n\r\n children.push($text)\r\n\r\n $link = createElement(\r\n 'a',\r\n {\r\n id: `chapter__anchor-${id}`,\r\n className: 'outline-chapters__anchor',\r\n href: '#' + rel,\r\n rel: rel,\r\n 'data-id': id\r\n },\r\n children\r\n )\r\n\r\n $li = createElement(\r\n 'li',\r\n {\r\n id: `chapter-${id}`,\r\n className: 'outline-chapters__item',\r\n 'data-id': id\r\n },\r\n $link\r\n )\r\n\r\n if (pid === -1) {\r\n $list.appendChild($li)\r\n } else {\r\n $chapter = byId(`chapter-${pid}`)\r\n $subject = byId(`subject-${pid}`)\r\n\r\n if (!$subject) {\r\n $subject = createElement(\r\n 'ul',\r\n {\r\n id: 'subject-' + pid,\r\n className: 'outline-chapters__subject'\r\n },\r\n $li\r\n )\r\n\r\n $chapter.appendChild($subject)\r\n } else {\r\n $subject.appendChild($li)\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (count > LIMIT) {\r\n // 同步绘制\r\n paint(clones.splice(0, LIMIT))\r\n // 剩余的采用 timeSlice 机制绘制\r\n while (clones.length > 0) {\r\n const once = clones.splice(0, LIMIT)\r\n timeSlice(() => {\r\n paint(once)\r\n })\r\n }\r\n } else {\r\n paint(clones)\r\n }\r\n}\r\n\r\nexport default _paintChapters\r\n","import isElement from '../types/isElement'\r\n\r\n/**\r\n * 检测某个 DOM 节点的位置是否在另个一个 DOM 节点范围内\r\n * ========================================================================\r\n * @method inBounding\r\n * @param {HTMLElement} child\r\n * @param {HTMLElement} parent\r\n * @return {Boolean}\r\n */\r\nconst inBounding = (child, parent) => {\r\n let parentRect\r\n let childRect\r\n\r\n if (!isElement(child) || !isElement(parent)) {\r\n return false\r\n }\r\n\r\n parentRect = parent.getBoundingClientRect()\r\n childRect = child.getBoundingClientRect()\r\n\r\n return (\r\n childRect.top >= parentRect.top &&\r\n childRect.right <= parentRect.right &&\r\n childRect.bottom <= parentRect.bottom &&\r\n childRect.left >= parentRect.left\r\n )\r\n}\r\n\r\nexport default inBounding\r\n","import isFunction from '../types/isFunction'\r\nimport isElement from '../types/isElement'\r\n\r\n/**\r\n * 通用的 IntersectionObserver 观察者处理器\r\n * ========================================================================\r\n * @method intersection\r\n * @param {Function} fn\r\n * @param {Object} [props]\r\n * @param {Object|HTMLElement} [props.root]\r\n * @param {String} [props.selector]\r\n * @param {Object} [props.context]\r\n * @param {String} [props.attr]\r\n * @param {String} [props.rootMargin]\r\n */\r\nconst intersection = (fn, props = {}) => {\r\n const root = props.root || null\r\n const selector = props.selector || '.outline-heading'\r\n const context = props.context || null\r\n const rootMargin = props.rootMargin || '0px 0px -90% 0px'\r\n const options = {\r\n rootMargin: rootMargin\r\n }\r\n // eslint-disable-next-line compat/compat\r\n const Observer = new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.intersectionRatio > 0) {\r\n if (isFunction(fn)) {\r\n fn.call(context || entry.target, entry.target)\r\n }\r\n }\r\n })\r\n }, options)\r\n const $root = isElement(root) ? root : document\r\n\r\n if (root) {\r\n options.root = root\r\n }\r\n\r\n $root.querySelectorAll(selector).forEach((section) => {\r\n Observer.observe(section)\r\n })\r\n\r\n return Observer\r\n}\r\n\r\nexport default intersection\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测测试数据是否为类似 Object 类型\r\n * ========================================================================\r\n * @method isObjectLike\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是类似 Object 类型,返回 true,否则返回 false\r\n */\r\nconst isObjectLike = (val) => {\r\n return isObject(val) && val !== null\r\n}\r\n\r\nexport default isObjectLike\r\n","import isObjectLike from './isObjectLike'\r\n\r\n/**\r\n * 检测测试数据是否为普通对象\r\n * ========================================================================\r\n * @method isPlainObject\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是普通对象,返回 true,否则返回 false\r\n */\r\nconst isPlainObject = (val) => {\r\n const getPrototypeOf = Object.getPrototypeOf\r\n let proto\r\n\r\n // Detect obvious negatives\r\n if (!isObjectLike(val)) {\r\n return false\r\n }\r\n\r\n proto = val.prototype\r\n\r\n // JavaScript 对象分为两种:普通对象和函数对象\r\n // 普通对象:原型是 __proto__,没有 prototype 原型(属性)\r\n // 函数对象:原型是 prototype ,prototype 只存在于函数对象上\r\n if (!proto) {\r\n return true\r\n }\r\n\r\n proto = val\r\n\r\n while (getPrototypeOf(proto) !== null) {\r\n proto = getPrototypeOf(proto)\r\n }\r\n\r\n return getPrototypeOf(val) === proto\r\n}\r\n\r\nexport default isPlainObject\r\n","/**\r\n * 转义字符串中的 HTML 标签\r\n *\r\n * @param {String} str - 需要转义的字符串\r\n * @returns {String}\r\n */\r\nconst encodeHTML = (str) => {\r\n const CHARTS = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": ''',\r\n '\"': '"'\r\n }\r\n\r\n return str.replace(/[&<>'\"]/g, (tag) => {\r\n return CHARTS[tag] || tag\r\n })\r\n}\r\n\r\nexport default encodeHTML\r\n","import isString from './utils/types/isString'\r\nimport isPlainObject from './utils/types/isPlainObject'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport extend from './utils/lang/extend'\r\nimport later from './utils/lang/later'\r\nimport stripScripts from './utils/lang/stripScripts'\r\nimport encodeHTML from './utils/lang/encodeHTML'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport guid from './utils/lang/guid'\r\n\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport setAttribute from './utils/dom/setAttribute'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\nimport paint from './utils/icons/paint'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\n\r\nconst TYPES = ['info', 'success', 'warning', 'error']\r\nconst instances = []\r\nlet instance\r\n\r\npaint()\r\n\r\nclass Message extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Message.DEFAULTS)\r\n\r\n this.$el = null\r\n this.id = ''\r\n this.closed = false\r\n this.visible = false\r\n this.offset = -50\r\n this.timer = null\r\n this.destroyed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options)\r\n this.id = this.attr('id')\r\n this.offset = this.attr('offset') || -50\r\n\r\n this.$emit('created', { ...this.attr() })\r\n\r\n this.render().addListeners()\r\n\r\n if (this.attr('visible')) {\r\n this.open()\r\n }\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isDestroyed() {\r\n return this.destroyed\r\n }\r\n\r\n _getClassName() {\r\n const type = this.attr('type')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const visible = this.attr('visible')\r\n const customClass = this.attr('customClass')\r\n const className = [\r\n 'outline-message',\r\n `outline-message_${type}`,\r\n `outline-message_${effect}`\r\n ]\r\n\r\n if (round) {\r\n className.push('outline-message_round')\r\n }\r\n\r\n if (!closable) {\r\n className.push('outline-message_full-width')\r\n }\r\n\r\n if (visible) {\r\n className.push('outline-message_visible')\r\n }\r\n\r\n if (customClass) {\r\n className.push(customClass)\r\n }\r\n\r\n return className\r\n }\r\n\r\n render() {\r\n const type = this.attr('type')\r\n const message = this.attr('message')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n const className = this._getClassName()\r\n const iconName = effect === 'light' ? `circle-${type}` : type\r\n const children = []\r\n let iconSize = 20\r\n let $type\r\n let $message\r\n let $text\r\n let $close\r\n let $el\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n\r\n if (effect !== 'plain') {\r\n $type = icon(iconName, {\r\n iconSet: 'outline',\r\n size: iconSize\r\n })\r\n addClass($type, 'outline-message__icon')\r\n children.push($type)\r\n }\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n $text = document.createTextNode(encodeHTML(stripScripts(message)))\r\n } else {\r\n $text = document.createDocumentFragment()\r\n $text.innerHTML = message\r\n }\r\n $message = createElement(\r\n 'p',\r\n {\r\n className: 'outline-message__content'\r\n },\r\n [$text]\r\n )\r\n children.push($message)\r\n\r\n if (closable) {\r\n $close = icon('close', {\r\n iconSet: 'outline',\r\n size: 18\r\n })\r\n addClass($close, 'outline-message__close')\r\n children.push($close)\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: className.join(' ')\r\n },\r\n children\r\n )\r\n $el.style.cssText = `top:-50px;`\r\n this.$el = $el\r\n document.body.appendChild(this.$el)\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n _refreshIcon() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let iconSize = 20\r\n let type\r\n let effect\r\n let round\r\n let iconName\r\n let $icon\r\n let $svg\r\n let $use\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $icon = $el.querySelector('.outline-icon')\r\n\r\n if (!$icon) {\r\n return this\r\n }\r\n\r\n type = this.attr('type')\r\n effect = this.attr('effect')\r\n round = this.attr('round')\r\n\r\n if (effect === 'plain') {\r\n addClass($icon, HIDDEN)\r\n } else {\r\n removeClass($icon, HIDDEN)\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n }\r\n\r\n $svg = $icon.querySelector('.outline-icon__svg')\r\n setAttributes($svg, {\r\n style: `width:${iconSize}px;height:${iconSize}px;`\r\n })\r\n\r\n $use = $svg.querySelector('use')\r\n iconName = effect === 'light' ? `circle-${type}` : type\r\n setAttribute($use, 'xlink:href', `#outline-icon-${iconName}`)\r\n\r\n return this\r\n }\r\n\r\n _refreshMessage() {\r\n const $el = this.$el\r\n let $message\r\n let dangerouslyUseHTMLString\r\n let message\r\n let text\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $message = $el.querySelector('.outline-message__content')\r\n dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n message = this.attr('message')\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n text = encodeHTML(stripScripts(message))\r\n } else {\r\n text = message\r\n }\r\n\r\n $message.innerHTML = text\r\n\r\n return this\r\n }\r\n\r\n _refreshClose() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let $close\r\n let closable\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $close = $el.querySelector('.outline-message__close')\r\n closable = this.attr('closable')\r\n\r\n if ($close) {\r\n if (closable) {\r\n addClass($close, HIDDEN)\r\n } else {\r\n removeClass($close, HIDDEN)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n _refreshEl() {\r\n const $el = this.$el\r\n let className\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n className = this._getClassName()\r\n setAttribute($el, 'className', className.join(' '))\r\n\r\n return this\r\n }\r\n\r\n refresh(options) {\r\n if (!isPlainObject(options)) {\r\n return this\r\n }\r\n\r\n this.attr(options)\r\n ._refreshIcon()\r\n ._refreshMessage()\r\n ._refreshClose()\r\n ._refreshEl()\r\n\r\n return this\r\n }\r\n\r\n clearTimer() {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n this.timer = null\r\n }\r\n\r\n return this\r\n }\r\n\r\n startTimer(duration) {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.timer = later(() => {\r\n this.$emit('opened')\r\n this.close()\r\n }, duration * 1000)\r\n\r\n return this\r\n }\r\n\r\n open(options) {\r\n const $el = this.$el\r\n let offset\r\n let duration\r\n let top\r\n let cssRules\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.isClosed()) {\r\n this.refresh(options)\r\n }\r\n\r\n offset = this.attr('offset')\r\n duration = this.attr('duration')\r\n top = offset && offset >= this.offset ? offset : this.offset\r\n cssRules = `top:${top}px;`\r\n\r\n this.clearTimer()\r\n\r\n this.$emit('beforeOpen')\r\n\r\n later(() => {\r\n this.visible = true\r\n\r\n addClass($el, 'outline-message_visible')\r\n $el.style.cssText = cssRules\r\n\r\n if (duration > 0) {\r\n this.startTimer(duration)\r\n }\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const $el = this.$el\r\n const cssRules = `top:-50px;`\r\n let destroyAfterClosed\r\n let beforeClose\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n destroyAfterClosed = this.attr('destroyAfterClosed')\r\n beforeClose = this.attr('beforeClose')\r\n\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(this)\r\n }\r\n\r\n $el.style.cssText = cssRules\r\n removeClass($el, 'outline-message_visible')\r\n\r\n this.visible = false\r\n this.closed = true\r\n\r\n later(() => {\r\n this.$emit('closed')\r\n\r\n if (destroyAfterClosed) {\r\n this.destroy()\r\n }\r\n }, 500)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.removeListeners()\r\n\r\n document.body.removeChild(this.$el)\r\n\r\n clearTimeout(this.timer)\r\n this._default()\r\n\r\n this.$emit('afterDestroy')\r\n\r\n return this\r\n }\r\n\r\n onMouseEnter() {\r\n this.clearTimer()\r\n return this\r\n }\r\n\r\n onMouseLeave() {\r\n const duration = this.attr('duration')\r\n const delay = this.attr('delay')\r\n\r\n if (duration <= 0) {\r\n return this\r\n }\r\n\r\n this.startTimer(delay)\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.clearTimer()\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseenter',\r\n this.onMouseEnter,\r\n this,\r\n true\r\n )\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseleave',\r\n this.onMouseLeave,\r\n this,\r\n true\r\n )\r\n on($el, '.outline-message__close', 'click', this.onClose, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $el = this.$el\r\n\r\n off($el, 'mouseenter', this.onMouseEnter)\r\n off($el, 'mouseleave', this.onMouseLeave)\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nMessage.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n id: '',\r\n type: 'info',\r\n effect: 'default',\r\n round: false,\r\n offset: 30,\r\n duration: 3,\r\n delay: 2,\r\n message: '',\r\n customClass: '',\r\n closable: true,\r\n visible: true,\r\n dangerouslyUseHTMLString: false,\r\n destroyAfterClosed: true,\r\n beforeClose: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nTYPES.forEach((type) => {\r\n Message[type] = (options) => {\r\n const config = {}\r\n const id = guid(`outline-message-`)\r\n const beforeClose = options.beforeClose || null\r\n let offset = options.offset || 30\r\n\r\n if (isString(options)) {\r\n config.message = options\r\n } else {\r\n if (isPlainObject(options)) {\r\n extend(config, options)\r\n }\r\n }\r\n config.id = id\r\n config.type = type\r\n config.offset = offset\r\n config.visible = false\r\n config.beforeClose = () => {\r\n Message.close(id, beforeClose)\r\n }\r\n\r\n instance = new Message(config)\r\n instances.forEach((item) => {\r\n offset += item.$el.offsetHeight + 16\r\n })\r\n instance.offset = offset\r\n instance.open()\r\n instances.push(instance)\r\n\r\n return instance\r\n }\r\n})\r\n\r\n// 关闭指定 id 消息的静态方法\r\nMessage.close = (id, beforeClose) => {\r\n const len = instances.length\r\n let index = -1\r\n let i\r\n let offsetHeight\r\n\r\n instances.forEach((instance, i) => {\r\n // 在 instances 中通过 id 找到要关闭的消息\r\n if (id === instance.id) {\r\n offsetHeight = instance.$el.offsetHeight\r\n index = i\r\n\r\n // 关闭消息\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(instance)\r\n }\r\n\r\n instances.splice(i, 1)\r\n }\r\n })\r\n\r\n if (len <= 1 || index === -1 || index > instances.length - 1) {\r\n return false\r\n }\r\n\r\n i = index\r\n\r\n // 界面中的消息逐个向上收起\r\n for (; i < len - 1; i += 1) {\r\n const dom = instances[i].$el\r\n\r\n dom.style['top'] = parseInt(dom.style['top'], 10) - offsetHeight - 16 + 'px'\r\n }\r\n}\r\n\r\n// 关闭所有消息的静态方法\r\nMessage.clear = () => {\r\n let i = instances.length - 1\r\n for (; i >= 0; i -= 1) {\r\n instances[i].close()\r\n }\r\n}\r\n\r\nexport default Message\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Command {\r\n constructor(name, action) {\r\n this.name = name\r\n\r\n if (isFunction(action)) {\r\n this.action = action\r\n }\r\n }\r\n\r\n execute() {\r\n this.action()\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Command\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Commands {\r\n constructor() {\r\n this.commands = []\r\n }\r\n\r\n get(name) {\r\n return this.commands.find((cmd) => cmd.name === name)\r\n }\r\n\r\n add(command) {\r\n this.commands.push(command)\r\n\r\n return this\r\n }\r\n\r\n del(name) {\r\n const commands = this.commands\r\n const command = commands.find((cmd) => cmd.name === name)\r\n const index = command ? commands.indexOf(command) : -1\r\n\r\n if (index > -1) {\r\n commands.splice(index, 1)\r\n }\r\n\r\n return this\r\n }\r\n\r\n clear() {\r\n this.commands = []\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n const command = this.commands.find((cmd) => cmd.name === name)\r\n\r\n if (isFunction(command?.execute)) {\r\n command.execute()\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Commands\r\n","import icon from './utils/icons/icon'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\n\r\nconst _createButton = (button, rounded = true) => {\r\n const $icon = icon(button.icon, {\r\n iconSet: button.iconSet || 'outline',\r\n color: button.color || '',\r\n size: button.size\r\n })\r\n const $anchor = createElement(\r\n 'a',\r\n {\r\n className: `outline-toolbar__anchor`,\r\n href: button.link\r\n },\r\n $icon\r\n )\r\n const $button = createElement(\r\n 'div',\r\n {\r\n className: `outline-toolbar__button ${button.name}`,\r\n 'data-cmd': button.name\r\n },\r\n [button.link ? $anchor : $icon]\r\n )\r\n\r\n addClass($icon, 'outline-toolbar__icon')\r\n\r\n if (rounded) {\r\n addClass($button, 'outline-toolbar_rounded')\r\n }\r\n\r\n if (button.disabled) {\r\n addClass($button, 'outline-toolbar_disabled')\r\n }\r\n\r\n return $button\r\n}\r\n\r\nexport default _createButton\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isObject from './utils/types/isObject'\r\nimport isArray from './utils/types/isArray'\r\nimport later from './utils/lang/later'\r\nimport guid from './utils/lang/guid'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport hasClass from './utils/dom/hasClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport Base from './base'\r\nimport Command from './command'\r\nimport Commands from './commands'\r\n\r\nimport _createButton from './_createButton'\r\n\r\nconst DISABLED = 'outline-toolbar_disabled'\r\nconst HIDDEN = 'outline-toolbar_hidden'\r\n\r\nclass Toolbar extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Toolbar.DEFAULTS)\r\n\r\n this.disabled = false\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.buttons = []\r\n this.commands = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.disabled = this.attr('disabled')\r\n this.closed = this.attr('closed')\r\n this.commands = new Commands()\r\n\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n isDisabled(name) {\r\n let button\r\n\r\n if (name) {\r\n button = this.get(name)\r\n\r\n return button.disabled\r\n }\r\n\r\n return this.disabled\r\n }\r\n\r\n isExist(name) {\r\n const button = this.get(name)\r\n return !!button\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n _getCommand(button) {\r\n const _self = this\r\n const { action, name } = button\r\n let command = null\r\n let handler = null\r\n let context\r\n let listener\r\n\r\n if (!action) {\r\n return command\r\n }\r\n\r\n handler = action.handler\r\n context = action.context || this\r\n\r\n if (isFunction(handler)) {\r\n listener = handler\r\n } else if (isString(handler)) {\r\n listener = function () {\r\n _self.$emit(handler, name)\r\n }\r\n }\r\n\r\n if (isFunction(listener)) {\r\n command = new Command(name, listener.bind(context))\r\n }\r\n\r\n return command\r\n }\r\n\r\n get(name) {\r\n return this.buttons.find((button) => button.name === name)\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const buttons = this.attr('buttons') || []\r\n const placement = this.attr('placement')\r\n\r\n paint()\r\n\r\n this.$el = createElement('div', {\r\n id: guid('outline-toolbar'),\r\n className: `outline-toolbar outline-toolbar_${placement}`\r\n })\r\n this._paint(buttons)\r\n document.body.appendChild(this.$el)\r\n\r\n if (this.closed) {\r\n this.hide()\r\n }\r\n\r\n if (this.disabled) {\r\n this.disable()\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$el.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(buttons) {\r\n const rounded = this.attr('rounded')\r\n const $fragment = document.createDocumentFragment()\r\n\r\n buttons.forEach((button) => {\r\n const $button = _createButton(button, rounded)\r\n const command = this._getCommand(button)\r\n const { name, disabled, context } = button\r\n\r\n $fragment.appendChild($button)\r\n\r\n if (!this.isExist(name)) {\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n })\r\n\r\n this.$el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(buttons) {\r\n this.attr({ buttons })\r\n this.erase()._paint(buttons)\r\n return this\r\n }\r\n\r\n add(button) {\r\n const $el = this.$el\r\n const $fragment = document.createDocumentFragment()\r\n const buttons = this.attr('buttons') || []\r\n const { name, disabled, context } = button\r\n const command = this._getCommand(button)\r\n const _add = (button) => {\r\n const $button = _createButton(button)\r\n\r\n $fragment.appendChild($button)\r\n\r\n buttons.push(button)\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this,\r\n command\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n\r\n if (isObject(button)) {\r\n _add(button)\r\n } else if (isArray(button)) {\r\n button.forEach((item) => {\r\n if (isObject(item)) {\r\n _add(item)\r\n }\r\n })\r\n }\r\n $el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n remove(name) {\r\n const $el = this.$el\r\n const buttons = this.buttons\r\n const button = this.get(name)\r\n let index = -1\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n index = buttons.indexOf(button)\r\n\r\n if (index > -1) {\r\n buttons.splice(index, 1)\r\n this.attrs('buttons').splice(index, 1)\r\n }\r\n\r\n this._disable(name)\r\n $el.removeChild(button.$el)\r\n\r\n return this\r\n }\r\n\r\n _disable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = true\r\n\r\n if (command) {\r\n this.commands.del(command)\r\n }\r\n\r\n addClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n _enable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || !button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = false\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n\r\n removeClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n disable(name) {\r\n const disabled = this.attr('afterDisabled')\r\n\r\n if (name) {\r\n this._disable(name)\r\n } else {\r\n addClass(this.$el, DISABLED)\r\n this.removeListeners()\r\n this.disabled = true\r\n\r\n if (isFunction(disabled)) {\r\n disabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n enable(name) {\r\n const enabled = this.attr('afterEnabled')\r\n\r\n if (name) {\r\n this._enable(name)\r\n } else {\r\n this.disabled = false\r\n removeClass(this.$el, DISABLED)\r\n this.addListeners()\r\n\r\n if (isFunction(enabled)) {\r\n enabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n show(name) {\r\n const opened = this.attr('afterOpened')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n removeClass(button.$el, HIDDEN)\r\n } else {\r\n removeClass($el, HIDDEN)\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n later(() => {\r\n opened.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide(name) {\r\n const closed = this.attr('afterClosed')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n addClass(button.$el, HIDDEN)\r\n } else {\r\n addClass($el, HIDDEN)\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n later(() => {\r\n closed.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n highlight(name) {\r\n const button = this.get(name)\r\n const ACTIVE = 'outline-toolbar_active'\r\n let $button\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n $button = button.$el\r\n\r\n if (hasClass($button, ACTIVE)) {\r\n removeClass($button, ACTIVE)\r\n } else {\r\n addClass($button, ACTIVE)\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.commands.clear()\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n if (this.isDisabled(name)) {\r\n return this\r\n }\r\n\r\n this.commands.execute(name)\r\n\r\n return this\r\n }\r\n\r\n onExecute(evt) {\r\n const $button = evt.delegateTarget\r\n let cmd = ''\r\n\r\n if ($button) {\r\n cmd = $button.getAttribute('data-cmd')\r\n\r\n if (cmd) {\r\n this.execute(cmd)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n on($el, `.outline-toolbar__button`, 'click', this.onExecute, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n off($el, '.outline-toolbar__button', this.onExecute)\r\n\r\n return this\r\n }\r\n}\r\n\r\nToolbar.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'ltr',\r\n closed: false,\r\n disabled: false,\r\n rounded: true,\r\n buttons: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterDisabled: null,\r\n afterEnabled: null,\r\n beforeDestroy: null,\r\n afterDestroy: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Toolbar\r\n","import addClass from './utils/dom/addClass'\r\n\r\nconst _updateSiblingElements = (siblingElement, isPrev) => {\r\n let tagName\r\n let $sibling = siblingElement\r\n\r\n while ($sibling) {\r\n tagName = $sibling.tagName.toLowerCase()\r\n\r\n if (tagName !== 'script' && tagName !== 'style') {\r\n addClass($sibling, 'outline-reader_sibling')\r\n }\r\n\r\n if (isPrev) {\r\n $sibling = $sibling.previousElementSibling\r\n } else {\r\n $sibling = $sibling.nextElementSibling\r\n }\r\n }\r\n}\r\n\r\nexport default _updateSiblingElements\r\n","import cloneDeep from './utils/lang/cloneDeep'\r\nimport later from './utils/lang/later'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport isFunction from './utils/types/isFunction'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport at from './utils/event/at'\r\nimport stop from './utils/event/stop'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\nimport Message from './message'\r\nimport Toolbar from './toolbar'\r\n\r\nimport _updateSiblingElements from './_updateSiblingElements'\r\n\r\nconst ENTER_READING_TIP = '进入阅读模式,按 ESC 键可退出阅读模式'\r\n\r\nclass Reader extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Reader.DEFAULTS)\r\n this.reading = false\r\n\r\n this.$target = null\r\n this.$paper = null\r\n this.$title = null\r\n this.$article = null\r\n this.$progress = null\r\n\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let target = null\r\n\r\n this.attr(options)\r\n\r\n target = this.attr('target')\r\n\r\n if (isString(target)) {\r\n this.$target = document.querySelector(target)\r\n } else if (isElement(target)) {\r\n this.$target = target\r\n }\r\n\r\n if (!this.$target) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n this._renderEdge()._paint(this.$target)\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$article.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint($content) {\r\n const $fragment = document.createDocumentFragment()\r\n const $children = [...$content.cloneNode(true).children]\r\n\r\n later(() => {\r\n $children.forEach(($child) => {\r\n $fragment.appendChild($child)\r\n })\r\n\r\n this.$article.appendChild($fragment)\r\n })\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const $paper = this.$paper\r\n const toolbar = this.toolbar\r\n\r\n if ($paper) {\r\n document.body.removeChild($paper)\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n this.erase()._paint(this.$target)\r\n return this\r\n }\r\n\r\n _renderEdge() {\r\n const $target = this.$target\r\n let title = this.attr('title')\r\n let $paper\r\n let $title\r\n let $article\r\n let $progress\r\n let $sibling\r\n\r\n $title = $target.querySelector('h1')\r\n\r\n if (isElement(title)) {\r\n $title = title\r\n }\r\n\r\n if (isElement($title)) {\r\n title = $title.innerText\r\n }\r\n\r\n $title = createElement(\r\n 'h1',\r\n {\r\n className: 'outline-reader__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n\r\n $article = createElement('article', {\r\n id: 'outline-reader__article',\r\n className: 'outline-reader__article'\r\n })\r\n this.$article = $article\r\n\r\n $progress = createElement('div', {\r\n className: 'outline-reader__progress'\r\n })\r\n this.$progress = $progress\r\n\r\n this.toolbar = new Toolbar({\r\n placement: 'rtl',\r\n buttons: [\r\n {\r\n name: 'print',\r\n icon: 'print',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.print\r\n }\r\n },\r\n {\r\n name: 'exit',\r\n icon: 'close',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.exit\r\n }\r\n }\r\n ]\r\n })\r\n\r\n $paper = createElement(\r\n 'section',\r\n {\r\n id: 'outline-reader',\r\n className: 'outline-reader outline-reader_hidden'\r\n },\r\n [$progress, $title, $article, this.toolbar.$el]\r\n )\r\n this.$paper = $paper\r\n\r\n document.body.appendChild($paper)\r\n\r\n later(() => {\r\n // 设置邻居节点的打印样式\r\n $sibling = $paper.previousElementSibling\r\n _updateSiblingElements($sibling, true)\r\n\r\n $sibling = $paper.nextElementSibling\r\n _updateSiblingElements($sibling)\r\n })\r\n\r\n return this\r\n }\r\n\r\n enter() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n const enterReadingTip = this.attr('enterReadingTip') || ENTER_READING_TIP\r\n\r\n if (this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n $siblings.forEach(($sibling) => {\r\n addClass($sibling, HIDDEN)\r\n })\r\n addClass($paper, READING)\r\n removeClass($paper, HIDDEN)\r\n this.toolbar.show()\r\n this.reading = true\r\n\r\n Message.info({\r\n round: true,\r\n message: enterReadingTip\r\n })\r\n\r\n this.$emit('enterReading')\r\n\r\n return this\r\n }\r\n\r\n exit() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n\r\n if (!this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n addClass($paper, HIDDEN)\r\n removeClass($paper, READING)\r\n $siblings.forEach(($sibling) => {\r\n removeClass($sibling, HIDDEN)\r\n })\r\n this.toolbar.hide()\r\n this.reading = false\r\n\r\n this.$emit('exitReading')\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.reading) {\r\n this.exit()\r\n } else {\r\n this.enter()\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n if (!isFunction(print)) {\r\n return this\r\n }\r\n\r\n print()\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n return this\r\n }\r\n\r\n onPrint() {\r\n this.print()\r\n return this\r\n }\r\n\r\n onEnterReading() {\r\n this.toggle()\r\n return this\r\n }\r\n\r\n onExitReading(evt) {\r\n const keyCode = evt.keyCode\r\n\r\n if (keyCode === 27 && this.reading) {\r\n this.toggle()\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n at(document, 'keyup', this.onExitReading, this, true)\r\n\r\n this.$on('toolbar:action:print', this.onPrint)\r\n this.$on('toolbar:action:reading', this.onEnterReading)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n off(document, 'keyup', this.onExitReading)\r\n\r\n this.$off('toolbar:action:print')\r\n this.$off('toolbar:action:reading')\r\n\r\n return this\r\n }\r\n}\r\n\r\nReader.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n target: '',\r\n title: '',\r\n enterReadingTip: ENTER_READING_TIP\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Reader\r\n","import later from './utils/lang/later'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport toTree from './utils/lang/toTree'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\n\r\nimport Base from './base'\r\nimport Anchors from './anchors'\r\nimport Drawer from './drawer'\r\nimport Chapters from './chapters'\r\nimport Reader from './reader'\r\nimport Toolbar from './toolbar'\r\n\r\nimport getChapters from './getChapters'\r\n\r\nclass Outline extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n const options = Outline.DEFAULTS\r\n\r\n this.attrs = cloneDeep(options)\r\n this.$article = null\r\n this.$scrollElement = null\r\n this.buttons = []\r\n\r\n this.anchors = null\r\n this.drawer = null\r\n this.chapters = null\r\n this.reader = null\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let articleElement = ''\r\n let scrollElement = ''\r\n let $article = null\r\n\r\n this.attr(options)\r\n\r\n articleElement = this.attr('articleElement')\r\n scrollElement = this.attr('scrollElement')\r\n\r\n if (isString(articleElement)) {\r\n $article = document.querySelector(articleElement)\r\n } else if (isElement(articleElement)) {\r\n $article = articleElement\r\n }\r\n this.$article = $article\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n\r\n this.$emit('created', { ...this.attr() })\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n getChapters(isTreeStructured = false) {\r\n const $article = this.$article\r\n const selector = this.attr('selector')\r\n const showCode = this.attr('showCode') || true\r\n const chapterTextFilter = this.attr('chapterTextFilter')\r\n let $headings = []\r\n let chapters = []\r\n\r\n if (!$article) {\r\n return chapters\r\n }\r\n\r\n $headings = [...$article.querySelectorAll(selector)]\r\n chapters = getChapters($headings, showCode, chapterTextFilter)\r\n\r\n return isTreeStructured ? toTree(chapters, 'id', 'pid') : chapters\r\n }\r\n\r\n count() {\r\n return this.getChapters().length\r\n }\r\n\r\n render() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n const $scrollElement = this.$scrollElement\r\n\r\n this._renderReader()._renderAnchors()._renderChapters()._renderToolbar()\r\n\r\n if ($scrollElement && hasToolbar) {\r\n this._updateToolbar({\r\n top: $scrollElement.scrollTop,\r\n min: 0,\r\n max: $scrollElement.scrollHeight\r\n })\r\n }\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n const chapters = this.getChapters()\r\n\r\n this.anchors.refresh(chapters)\r\n this.chapters.refresh(chapters)\r\n this.reader.refresh()\r\n\r\n return this\r\n }\r\n\r\n _renderReader() {\r\n const option = this.attr('reader')\r\n\r\n if (!option.target) {\r\n return this\r\n }\r\n\r\n addClass(this.$article, 'outline-article')\r\n\r\n this.reader = new Reader(option)\r\n\r\n return this\r\n }\r\n\r\n _renderAnchors() {\r\n const articleElement = this.attr('articleElement')\r\n const selector = this.attr('selector')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const scrollElement = this.attr('scrollElement')\r\n const showCode = this.attr('showCode')\r\n const anchorURL = this.attr('anchorURL')\r\n const afterScroll = this.attr('afterScroll')\r\n const chapterTextFilter = this.attr('chapterTextFilter')\r\n\r\n this.anchors = new Anchors({\r\n articleElement,\r\n stickyHeight,\r\n scrollElement,\r\n selector,\r\n showCode,\r\n anchorURL,\r\n afterScroll,\r\n chapterTextFilter\r\n })\r\n\r\n return this\r\n }\r\n\r\n _renderChapters() {\r\n const title = this.attr('title')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const scrollElement = this.attr('scrollElement')\r\n const customClass = this.attr('customClass')\r\n const showCode = this.attr('showCode')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const closeOnClickModal = this.attr('closeOnClickModal')\r\n const showNavModalFirst = this.attr('showNavModalFirst')\r\n const position = this.attr('position')\r\n const placement = this.attr('placement')\r\n const afterSticky = this.attr('afterSticky')\r\n const afterToggle = this.attr('afterToggle')\r\n const afterScroll = this.attr('afterScroll')\r\n const count = this.count()\r\n let parentElement = this.attr('parentElement')\r\n let CHAPTERS_OPTIONS\r\n\r\n if (count < 1) {\r\n return this\r\n }\r\n\r\n CHAPTERS_OPTIONS = {\r\n scrollElement,\r\n showCode,\r\n animationCurrent,\r\n position,\r\n title,\r\n stickyHeight,\r\n chapters: this.getChapters(),\r\n afterSticky,\r\n afterToggle,\r\n afterScroll\r\n }\r\n\r\n if (position === 'relative') {\r\n this.drawer = new Drawer({\r\n placement,\r\n title,\r\n size: 'tiny',\r\n hasOffset: true,\r\n hasPadding: false,\r\n closeOnClickModal,\r\n customClass,\r\n afterClosed: () => {\r\n const toolbar = this.toolbar\r\n toolbar.toggle()\r\n }\r\n })\r\n parentElement = this.drawer.$main\r\n\r\n if (showNavModalFirst) {\r\n this.drawer.open()\r\n }\r\n } else {\r\n CHAPTERS_OPTIONS.customClass = customClass\r\n }\r\n\r\n CHAPTERS_OPTIONS.parentElement = parentElement\r\n this.chapters = new Chapters(CHAPTERS_OPTIONS)\r\n\r\n return this\r\n }\r\n\r\n _renderToolbar() {\r\n const position = this.attr('position')\r\n const hasToolbar = this.attr('hasToolbar')\r\n const showNavModalFirst = this.attr('showNavModalFirst')\r\n const placement = this.attr('placement')\r\n const homepage = this.attr('homepage')\r\n const git = this.attr('git')\r\n const tags = this.attr('tags')\r\n const issues = this.attr('issues')\r\n const tools = this.attr('tools')\r\n const option = this.attr('reader')\r\n const count = this.count()\r\n const UP = {\r\n name: 'up',\r\n icon: 'up',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.toTop\r\n }\r\n }\r\n const HOME = {\r\n name: 'homepage',\r\n icon: 'homepage',\r\n size: 20,\r\n link: homepage\r\n }\r\n const GIT = {\r\n name: 'github',\r\n icon: 'github',\r\n size: 20,\r\n link: git\r\n }\r\n const TAGS = {\r\n name: 'tags',\r\n icon: 'tags',\r\n size: 20,\r\n link: tags\r\n }\r\n const ISSUES = {\r\n name: 'issues',\r\n icon: 'issues',\r\n size: 20,\r\n link: issues\r\n }\r\n const MENU = {\r\n name: 'toggle',\r\n icon: 'menu',\r\n size: 18,\r\n action: {\r\n context: this,\r\n handler: this.toggle\r\n }\r\n }\r\n const READING = {\r\n name: 'reading',\r\n icon: 'file',\r\n size: 18,\r\n action: {\r\n context: this,\r\n handler: 'toolbar:action:reading'\r\n }\r\n }\r\n const PRINT = {\r\n name: 'print',\r\n icon: 'print',\r\n size: 20,\r\n action: {\r\n handler: 'toolbar:action:print'\r\n }\r\n }\r\n const DOWN = {\r\n name: 'down',\r\n icon: 'down',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.toBottom\r\n }\r\n }\r\n const buttons = []\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n buttons.push(UP)\r\n if (count > 0) {\r\n buttons.push(MENU)\r\n }\r\n if (homepage) {\r\n buttons.push(HOME)\r\n }\r\n if (git) {\r\n buttons.push(GIT)\r\n }\r\n if (tags) {\r\n buttons.push(TAGS)\r\n }\r\n if (issues) {\r\n buttons.push(ISSUES)\r\n }\r\n if (option.target) {\r\n buttons.push(READING)\r\n if (isFunction(print)) {\r\n buttons.push(PRINT)\r\n }\r\n }\r\n if (tools?.length > 0) {\r\n buttons.push(...tools)\r\n }\r\n buttons.push(DOWN)\r\n this.buttons = [...buttons]\r\n\r\n this.toolbar = new Toolbar({\r\n placement,\r\n buttons\r\n })\r\n\r\n if (position === 'relative' && showNavModalFirst) {\r\n this.toolbar.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n addButton(button) {\r\n const toolbar = this.toolbar\r\n const buttons = this.buttons\r\n buttons.splice(-1, 0, button)\r\n toolbar.attr({\r\n buttons\r\n })\r\n toolbar.refresh()\r\n return this\r\n }\r\n\r\n removeButton(name) {\r\n this.toolbar.remove(name)\r\n return this\r\n }\r\n\r\n toTop() {\r\n const afterScroll = this.attr('afterScroll')\r\n const toolbar = this.toolbar\r\n const chapters = this.chapters\r\n const count = this.count()\r\n const afterTop = () => {\r\n toolbar.hide('up')\r\n toolbar.show('down')\r\n\r\n if (count > 0) {\r\n chapters.highlight(0)\r\n chapters.playing = false\r\n }\r\n\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(toolbar, 'up')\r\n }\r\n }\r\n\r\n if (count > 0) {\r\n chapters.playing = true\r\n }\r\n this.scrollTo(0, afterTop)\r\n\r\n return this\r\n }\r\n\r\n _updateToolbar({ top, min, max }) {\r\n const toolbar = this.toolbar\r\n const current = Math.ceil(top)\r\n\r\n if (current <= min) {\r\n toolbar.hide('up')\r\n toolbar.show('down')\r\n } else if (current >= max) {\r\n toolbar.hide('down')\r\n toolbar.show('up')\r\n } else if (current > min && current < max) {\r\n toolbar.show('up')\r\n toolbar.show('down')\r\n }\r\n\r\n return this\r\n }\r\n\r\n toBottom() {\r\n const afterScroll = this.attr('afterScroll')\r\n const $scrollElement = this.$scrollElement\r\n const toolbar = this.toolbar\r\n const chapters = this.chapters\r\n const count = this.count()\r\n const top = Math.floor(\r\n $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n )\r\n const afterDown = () => {\r\n toolbar.hide('down')\r\n toolbar.show('up')\r\n\r\n if (count > 0) {\r\n chapters.highlight(count - 1)\r\n chapters.playing = false\r\n }\r\n\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(toolbar, 'bottom')\r\n }\r\n }\r\n\r\n if (count > 0) {\r\n chapters.playing = true\r\n }\r\n\r\n this.scrollTo(top, afterDown)\r\n\r\n return this\r\n }\r\n\r\n scrollTo(top, afterScroll) {\r\n scrollTo(this.$scrollElement, top, afterScroll)\r\n return this\r\n }\r\n\r\n enterReading() {\r\n const reader = this.reader\r\n\r\n if (!reader || reader.reading) {\r\n return this\r\n }\r\n\r\n this.toolbar.toggle()\r\n reader.enter()\r\n\r\n return this\r\n }\r\n\r\n exitReading() {\r\n const reader = this.reader\r\n\r\n if (!reader || !reader.reading) {\r\n return this\r\n }\r\n\r\n this.toolbar.toggle()\r\n reader.exit()\r\n\r\n return this\r\n }\r\n\r\n switchReading() {\r\n const reader = this.reader\r\n\r\n if (!reader) {\r\n return this\r\n }\r\n\r\n reader.toggle()\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const position = this.attr('position')\r\n const toolbar = this.toolbar\r\n const drawer = this.drawer\r\n const chapters = this.chapters\r\n const count = this.count()\r\n\r\n if (count < 1) {\r\n return this\r\n }\r\n\r\n if (position !== 'relative') {\r\n chapters.toggle()\r\n toolbar.highlight('toggle')\r\n } else {\r\n toolbar.toggle()\r\n\r\n later(() => {\r\n drawer.toggle()\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n this.reader.print()\r\n\r\n return this\r\n }\r\n\r\n _destroy() {\r\n const count = this.count()\r\n let anchors = this.anchors\r\n let chapters = this.chapters\r\n let drawer = this.drawer\r\n let reader = this.reader\r\n let toolbar = this.toolbar\r\n let isOutside = false\r\n\r\n this.removeListeners()\r\n\r\n if (reader) {\r\n reader.destroy()\r\n }\r\n\r\n if (count > 0 && chapters) {\r\n isOutside = chapters.isOutside()\r\n\r\n chapters.destroy()\r\n\r\n if (isOutside && drawer) {\r\n drawer.destroy()\r\n }\r\n }\r\n\r\n if (anchors) {\r\n anchors.destroy()\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n this._destroy()._default()\r\n\r\n this.$emit('destroyed')\r\n\r\n return this\r\n }\r\n\r\n onToolbarUpdate({ top, min, max }) {\r\n this._updateToolbar({ top, min, max })\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n this.$on('toolbar:update', this.onToolbarUpdate)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n this.$off('toolbar:update')\r\n\r\n return this\r\n }\r\n}\r\n\r\nOutline.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n articleElement: '#article',\r\n selector: 'h2,h3,h4,h5,h6',\r\n parentElement: '#aside',\r\n scrollElement: 'html,body',\r\n title: '目录',\r\n position: 'relative',\r\n placement: 'rtl',\r\n animationCurrent: true,\r\n showCode: true,\r\n hasToolbar: true,\r\n closeOnClickModal: true,\r\n showNavModalFirst: false,\r\n anchorURL: '',\r\n stickyHeight: 0,\r\n homepage: '',\r\n git: '',\r\n tags: '',\r\n issues: '',\r\n tools: [],\r\n reader: {\r\n target: '',\r\n title: '',\r\n enterReadingTip: '进入阅读模式,按 ESC 键可退出阅读模式'\r\n },\r\n customClass: '',\r\n afterSticky: null,\r\n afterToggle: null,\r\n afterScroll: null,\r\n chapterTextFilter: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nif (window?.jQuery) {\r\n const $ = window.jQuery\r\n\r\n // 将 Outline 扩展为一个 jquery 插件\r\n // eslint-disable-next-line no-undef\r\n $.extend($.fn, {\r\n outline: function (options) {\r\n // eslint-disable-next-line no-undef\r\n let $article = $(this)\r\n\r\n return new Outline(\r\n // eslint-disable-next-line no-undef\r\n $.extend({}, options, {\r\n articleElement: $article\r\n })\r\n )\r\n }\r\n })\r\n}\r\n\r\nexport default Outline\r\n"],"names":["toString","val","Object","prototype","apply","isFunction","later","fn","delay","arguments","length","undefined","setTimeout","isObject","o","isArray","Array","cloneDeep","obj","clone","from","assign","keys","forEach","key","toTree","list","nodeKey","parentKey","map","roots","item","i","children","node","push","isString","str","isElement","nodeName","tagName","nodeType","hasClass","el","className","pattern","RegExp","allClass","classList","contains","exec","addClass","_classList","add","easeInQuad","x","_getScrollElement","$rootElements","$scrollElement","scrollElement","document","querySelector","querySelectorAll","scrollTop","scrollTo","top","afterStop","step","distance","MAX_HEIGHT","scrollHeight","MAX_TOP","stop","play","requestAnimationFrame","hasOwn","prop","hasOwnProperty","call","extend","origin","source","_subscribers","_hasDirectSubscribersFor","topic","has","found","position","lastIndexOf","substring","_hasSubscribers","emit","data","async","execute","subscriber","message","indexOf","callback","context","deliver","guid","uuid","prefix","_removeSubscriber","off","token","subject","execution","j","splice","_removeSubscriberByToken","Base","constructor","options","this","attrs","initialize","attr","render","addListeners","value","refresh","destroy","removeListeners","reload","$emit","event","publish","$on","handler","subscribe","$off","unsubscribe","queue","isHandling","done","runIdle","idleDeadline","timeRemaining","shift","requestIdleCallback","window","cb","start","Date","now","didTimeout","Math","max","cancelIdleCallback","id","clearTimeout","timeSlice","afterComplete","offsetTop","offsetParent","matches","selector","sel","replace","msMatchesSelector","getParentOrHost","host","parentNode","CAPTURE_EVENTS","_off","type","capture","_delegateListener","listeners","_listeners","index","listener","_delete","removeEventListener","purgeElement","recurse","$element","$children","childNodes","getListeners","filter","$child","on","once","evt","target","getTarget","delegateTarget","closest","ctx","includeCTX","startsWith","overrideContext","addEventListener","stopPropagation","preventDefault","SYMBOLS","getSymbols","name","iconSet","patternName","patternSet","find","symbol","fullName","getSymbol","paint","$body","body","$icons","symbols","innerHTML","join","createElement","insertBefore","firstChild","trim","isDOM","isHTMLCollection","fragment","isTextNode","setAttribute","toLowerCase","style","cssText","innerText","setAttributes","$fragment","createDocumentFragment","$el","isValidChild","child","append","createTextNode","appendChild","every","ICON","size","color","width","height","defaultRules","cssRules","$icon","$svg","binds","svg","test","isSVG","xmlns","class","icon","removeClass","remove","_removeHeading","$heading","hasAnchor","isAtStart","CLS_HEADING","text","$anchor","removeAttribute","removeChild","getChapters","headings","showCode","chapterTextFilter","previous","level","chapters","heading","headingLevel","current","parseInt","pid","_getChapterParentIdByDiffer","differ","rel","groups","group","JSON","stringify","code","String","c","subjects","_getChaptersWithCode","Anchors","super","_default","DEFAULTS","$articleElement","$headings","created","articleElement","isTreeStructured","count","mounted","_paint","erase","_remove","LIMIT","anchorURL","update","chapterCode","_updateHeading","headingId","href","groupIndex","after","beforeDestroy","afterDestroy","onAnchorTrigger","afterScroll","stickyHeight","clientHeight","min","TAGS","isHTML","html","basic","full","slice","tag","stripScripts","setProperty","documentElement","zIndex","idx","Drawer","title","closed","$modal","$header","$title","$close","$main","$footer","$overlay","setTitle","isClosed","placement","hasClose","hasOverlay","hasOffset","hasPadding","autoHeight","customClass","content","$content","strHTML","template","open","opened","close","toggle","afterToggle","onClose","closeOnClickModal","afterClosed","afterOpened","at","getStyle","ruleName","getComputedStyle","Chapters","scrollTimer","resizeTimer","observerTimer","Observer","$list","$placeholder","$parentElement","$active","active","offsetWidth","playing","parentElement","$parent","isSticky","isFixed","isInside","isOutside","_paintEdge","animationCurrent","contents","calculateStickyHeight","highlight","sticky","onObserver","clones","parts","byId","chapter","$text","$link","$code","$li","$subject","$chapter","_paintChapters","_getPlaceholderOffset","mainPaddingTop","mainBorderTop","placeholderPaddingTop","placeholderMarginTop","placeholderBorderTop","offsetHeight","positionPlaceholder","ACTIVE","HIGHLIGHT","placeholderOffsetTop","getAttribute","inBounding","parent","parentRect","childRect","getBoundingClientRect","right","bottom","left","afterSticky","FIXED","isStickying","innerHeight","show","HIDDEN","hide","props","root","rootMargin","IntersectionObserver","entries","entry","intersectionRatio","$root","section","observe","intersection","onSelect","split","onScroll","onResize","unobserve","isPlainObject","getPrototypeOf","proto","isObjectLike","encodeHTML","CHARTS","instances","instance","Message","visible","offset","timer","destroyed","isDestroyed","_getClassName","effect","round","closable","dangerouslyUseHTMLString","$type","$message","iconSize","_refreshIcon","iconName","$use","_refreshMessage","_refreshClose","_refreshEl","clearTimer","startTimer","duration","destroyAfterClosed","beforeClose","onMouseEnter","onMouseLeave","config","len","dom","clear","Command","action","Commands","commands","get","cmd","command","del","_createButton","button","rounded","link","$button","disabled","DISABLED","Toolbar","buttons","isDisabled","isExist","_getCommand","_self","bind","disable","_add","_disable","_enable","enable","enabled","onExecute","afterDisabled","afterEnabled","_updateSiblingElements","siblingElement","isPrev","$sibling","previousElementSibling","nextElementSibling","ENTER_READING_TIP","Reader","reading","$target","$paper","$article","$progress","toolbar","_renderEdge","cloneNode","print","exit","enter","READER","READING","$siblings","enterReadingTip","info","onPrint","onEnterReading","onExitReading","keyCode","Outline","anchors","drawer","reader","hasToolbar","_renderReader","_renderAnchors","_renderChapters","_renderToolbar","_updateToolbar","option","showNavModalFirst","CHAPTERS_OPTIONS","homepage","git","tags","issues","tools","UP","toTop","HOME","GIT","ISSUES","MENU","PRINT","DOWN","toBottom","addButton","removeButton","afterTop","_ref","ceil","floor","afterDown","enterReading","exitReading","switchReading","_destroy","onToolbarUpdate","_ref2","_window","jQuery","$","outline"],"mappings":"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"} \ No newline at end of file diff --git a/docs/js/reader.min.js b/docs/js/reader.min.js index e19f3d7..e0b0448 100644 --- a/docs/js/reader.min.js +++ b/docs/js/reader.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Reader=e()}(this,(function(){"use strict";const t=t=>Object.prototype.toString.apply(t),e=e=>"function"==typeof e||"[object Function]"===t(e),s=s=>("[object Object]"===t(s)||"object"==typeof s||e(s))&&null!==s,i=e=>Array.isArray?Array.isArray(e):"[object Array]"===t(e),n=t=>{let e={};return null===t?null:(i(t)?e=Array.from(t):(e=Object.assign({},t),Object.keys(e).forEach((i=>e[i]=s(t[i])?n(t[i]):t[i]))),e)},r=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return!!e(t)&&setTimeout((()=>{t()}),s)},o=t=>"string"==typeof t,l=t=>!!(s(t)&&t.nodeName&&t.tagName&&1===t.nodeType),a=e=>{return!(!s(e)||!(l(e)||(e=>!(!s(e)||"[object NodeList]"!==t(e)))(e)||(i=e,s(i)&&"[object DocumentFragment]"===t(i))||(e=>!(!s(e)||!("[object Text]"===t(e)||e.tagName&&3===e.nodeType)))(e)));var i},h=(t,e)=>{const s=Object.prototype.hasOwnProperty;return t&&s.call(t,e)},c=(t,e,s)=>{let i=t.tagName.toLowerCase();switch(e){case"style":t.style.cssText=s;break;case"value":"input"===i||"textarea"===i?t.value=s:t.setAttribute(e,s);break;case"htmlFor":t.setAttribute("for",s);break;case"className":t.className=s;break;case"innerHTML":t.innerHTML=s;break;case"innerText":t.innerText=s;break;default:t.setAttribute(e,s)}},d=(t,e)=>{if(!t||!s(e))return!1;Object.keys(e).forEach((s=>{const i=e[s];h(e,s)&&c(t,s,i)}))},u=(t,e,n)=>{const r=document.createDocumentFragment(),l=document.createElement(t),h=t=>a(t)||o(t),c=t=>{let e;if(!h(t))return!1;a(t)?e=t:o(t)&&(e=document.createTextNode(t)),r.appendChild(e)};return s(e)?d(l,e):i(e)&&e.every((t=>h(t)))?e.forEach((t=>{c(t)})):a(e)?c(e):o(e)&&c(document.createTextNode(e)),i(n)?n.forEach((t=>{c(t)})):c(n),l.appendChild(r),l},m=(t,e)=>{const s=new RegExp("(\\s|^)"+e+"(\\s|$)");let i,n;return!!l(t)&&(i=t.className,!!i&&(n=t.classList,n&&n.contains?t.classList.contains(e):!!s.exec(i)))},p=(t,e)=>{var s;let i,n;if(m(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.add?i.add(e):(n=t.className,n+=n.length>0?" "+e:e,t.className=n)},f=(t,e)=>{var s;let i,n=t.className;if(!n||!m(t,e))return!1;var r;i=t.classList,null!==(s=i)&&void 0!==s&&s.remove?i.remove(e):(r=n.replace(e,""),n=!!o(r)&&r.replace(/(^\s+)|(\s+$)/g,""),t.className=n)},b=["focusout","blur","focusin","focus","load","unload","mouseenter","mouseleave"],g=(t,e,s)=>{const i=b.indexOf(e)>-1;s._delegateListener&&delete(s=s._delegateListener)._delegateListener,function(t,e,s){const i=t._listeners;let n=-1;if(i.length<1)return!1;i.forEach(((t,i)=>{const r=t.fn;e===t.type&&(n=i,r===s&&(n=i))})),n>-1&&i.splice(n,1)}(t,e,s),t.removeEventListener(e,s,i)},y=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=o(t)?document.querySelector(t):t,n=i.childNodes,r=((t,e)=>{let s=t._listeners||[];return o(e)&&e&&(s=s.filter((t=>t.type===e))),s})(i,e);r.forEach((t=>{g(i,t.type,t.fn)})),(s||!0===e||1===arguments.length)&&i&&n&&n.forEach((t=>{l(t)&&y(t,e,s)}))},v=(t,s,i)=>{if(!e(i))return y(t,s),!1;g(t,s,i)},_=(t,e)=>{Object.keys(e).forEach((s=>{h(e,s)&&(t[s]=e[s])}))},$={},x=t=>h($,t)&&$[t].length>0,z=function(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?x(t):(t=>{let e=x(t),s=t.lastIndexOf(".");for(;!e&&-1!==s;)s=(t=t.substring(0,s)).lastIndexOf("."),e=x(t);return e})(t)},L=function(e,s){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const n=e=>{if(!x(e))return!1;$[e].forEach((e=>{const i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object BigInt64Array]","[object BigUint64Array]"].indexOf(t(s))>-1?s.toString():s;e.callback.call(e.context||e,i)}))},r=()=>{let t=e,s=e.lastIndexOf(".");for(;-1!==s;)t=t.substring(0,s),s=t.lastIndexOf("."),n(t);n(e),n("*")};if(!z(e))return!1;i?setTimeout(r,10):r()},M=(()=>{let t=0;return e=>(t+=1,e?e+"-"+t:"guid-"+t)})(),E=t=>{if(!h($,t))return!1;delete $[t]},C=(t,e)=>{if(!z(t))return!1;e?(t=>{const e=Object.keys($);if(!t||e.length<1)return!1;e.forEach((e=>{const s=$[e];let i;s.forEach(((e,n)=>{e.callback!==t&&e.token!==t||(i=e.topic,s.splice(-1,n))})),s.length<1&&E(i)}))})(e):E(t)};class T{constructor(t){this.attrs={},t&&this.initialize(t)}initialize(t){return this.attr(t).render().addListeners(),this}attr(t,e){const i=this.attrs;return o(t)?e&&h(i,t)?(i[t]=e,this):i[t]:s(t)?(_(i,t),this):0===arguments.length?i:this}render(){return this}refresh(){return this}destroy(){return this.removeListeners(),this}reload(t){let e=this.attr();return t&&(e=this.attr(t)),this.destroy().initialize(e),this}$emit(t,e){return L(t,e),this}$on(t,s){return function(t,s){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const n=M();let r="symbol"==typeof t?t.toString():t;e(s)&&($[r]||($[r]=[]),$[r].push({topic:r,callback:s,context:i,token:n}))}(t,s,this),this}$off(t,e){return C(t,e),this}addListeners(){return this}removeListeners(){return this}}const w=t=>{const e=Object.getPrototypeOf;let i;if(!(t=>s(t)&&null!==t)(t))return!1;if(i=t.prototype,!i)return!0;for(i=t;null!==e(i);)i=e(i);return e(t)===i},S=t=>t.replace(/]*>.*?<\/script>/gi,""),N=t=>{const e={"&":"&","<":"<",">":">","'":"'",'"':"""};return t.replace(/[&<>'"]/g,(t=>e[t]||t))},A=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s="outline-icon",n=e.size||0,r=e.color||"",l=e.iconSet||"",a=i(n)?n[0]:n,h=i(n)?n[1]:n,c=n?`width:${a}px;height:${h}px;`:"",u=r?c+`color:${r}`:c,m=e.attrs||{},p=document.createElement("i");let f,b="",g="";return o(t)?((t=>{const e=new RegExp("^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<\\!doctype svg[^>]*\\s*(?:\\[?(?:\\s*]*>\\s*)*\\]?)*[^>]*>\\s*)?]*>[^]*<\\/svg>\\s*$\\s*$","i");return o(t)&&e.test(t)})(t)?g=t:(b=l&&"icon"!==l?`xlink:href="#${l}-icon-${t}"`:`xlink:href="#icon-${t}"`,g=``),p.innerHTML=g,m.className?m.className=`${s} ${m.className}`:m.className=s,d(p,m),f=p.querySelector("svg"),d(f,{"aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",class:"outline-icon__svg",width:200,height:200,style:u}),p):null},D=function(t){return A(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},j=['','','','','','','','','','','','','','','','','','',''],k=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";return o(t)?function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";const s=/id="(.*?)"/,i=/^(\w+)-/;return j.find((n=>{const r=s.exec(n)[1];return i.exec(r)[1]===e&&r===("icon"===e?`${e}-${t}`:`${e}-icon-${t}`)}))}(t,e):[...j]},H=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=document.body;let s=document.querySelector("#outline-icons"),n=[];(t=>{if(!t)return!1;i(t)&&t.length>0?t.forEach((t=>{-1===j.indexOf(t)&&o(t)&&j.push(t)})):o(t)&&j.push(t)})(t),n=k(),s?s.innerHTML=n.join(""):(s=document.createElement("div"),s.innerHTML=``,e.insertBefore(s.firstChild,e.firstChild))},O=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=e.replace(/^>/i,"");return!!(e&&s&&t)&&(t.matches?t.matches(s):!!t.msMatchesSelector&&t.msMatchesSelector(s))},B=t=>t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode,q=function(t,e,s,i,n,r){let o=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const l=b.indexOf(s)>-1,a=function(l){const h=function(t){const e=t.target;return(s=e)&&3===s.nodeType?s.parentNode:s;var s}(l),c=((t,e,s,i)=>{const n=s||document;if(!t)return null;do{if(null!=e&&(e.startsWith(">")?t.parentNode===n&&O(t,e):O(t,e))||i&&t===n)return t;if(t===n)break}while(t=B(t))})(h,e,t);let d=r||t;l.delegateTarget=c,!0===r&&(d=n),c&&(!0===o&&v(t,s,a),i.call(d,l,n))};if(!t)return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,selector:e,type:s,fn:a,data:n,context:r,capture:l}),i._delegateListener=a,t.addEventListener(s,a,l)},F=[];let U;H();class R extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(R.DEFAULTS),this.$el=null,this.id="",this.closed=!1,this.visible=!1,this.offset=-50,this.timer=null,this.destroyed=!1,this}initialize(t){return this.attr(t),this.id=this.attr("id"),this.offset=this.attr("offset")||-50,this.$emit("created",{...this.attr()}),this.render().addListeners(),this.attr("visible")&&this.open(),this}isClosed(){return this.closed}isDestroyed(){return this.destroyed}_getClassName(){const t=this.attr("type"),e=this.attr("effect"),s=this.attr("round"),i=this.attr("closable"),n=this.attr("visible"),r=this.attr("customClass"),o=["outline-message",`outline-message_${t}`,`outline-message_${e}`];return s&&o.push("outline-message_round"),i||o.push("outline-message_full-width"),n&&o.push("outline-message_visible"),r&&o.push(r),o}render(){const t=this.attr("type"),e=this.attr("message"),s=this.attr("effect"),i=this.attr("round"),n=this.attr("closable"),r=this.attr("dangerouslyUseHTMLString"),o=this._getClassName(),l=[];let a,h,c,d,m,f=20;return i&&"default"===s&&(f=12),"plain"!==s&&(a=D("light"===s?`circle-${t}`:t,{iconSet:"outline",size:f}),p(a,"outline-message__icon"),l.push(a)),r?(c=document.createDocumentFragment(),c.innerHTML=e):c=document.createTextNode(N(S(e))),h=u("p",{className:"outline-message__content"},[c]),l.push(h),n&&(d=D("close",{iconSet:"outline",size:18}),p(d,"outline-message__close"),l.push(d)),m=u("div",{className:o.join(" ")},l),m.style.cssText="top:-50px;",this.$el=m,document.body.appendChild(this.$el),this.$emit("mounted"),this}_refreshIcon(){const t=".outline-message_hidden",e=this.$el;let s,i,n,r,o,l,a,h=20;return this.isDestroyed()?this:(o=e.querySelector(".outline-icon"),o?(s=this.attr("type"),i=this.attr("effect"),n=this.attr("round"),"plain"===i?p(o,t):(f(o,t),n&&"default"===i&&(h=12)),l=o.querySelector(".outline-icon__svg"),d(l,{style:`width:${h}px;height:${h}px;`}),a=l.querySelector("use"),r="light"===i?`circle-${s}`:s,c(a,"xlink:href",`#outline-icon-${r}`),this):this)}_refreshMessage(){const t=this.$el;let e,s,i,n;return this.isDestroyed()||(e=t.querySelector(".outline-message__content"),s=this.attr("dangerouslyUseHTMLString"),i=this.attr("message"),n=s?i:N(S(i)),e.innerHTML=n),this}_refreshClose(){const t=".outline-message_hidden",e=this.$el;let s,i;return this.isDestroyed()||(s=e.querySelector(".outline-message__close"),i=this.attr("closable"),s&&(i?p(s,t):f(s,t))),this}_refreshEl(){const t=this.$el;let e;return this.isDestroyed()||(e=this._getClassName(),c(t,"className",e.join(" "))),this}refresh(t){return w(t)?(this.attr(t)._refreshIcon()._refreshMessage()._refreshClose()._refreshEl(),this):this}clearTimer(){return this.isDestroyed()||this.timer&&(clearTimeout(this.timer),this.timer=null),this}startTimer(t){return this.isDestroyed()||(this.timer=r((()=>{this.$emit("opened"),this.close()}),1e3*t)),this}open(t){const e=this.$el;let s,i,n,o;return this.isDestroyed()||(this.isClosed()&&this.refresh(t),s=this.attr("offset"),i=this.attr("duration"),n=s&&s>=this.offset?s:this.offset,o=`top:${n}px;`,this.clearTimer(),this.$emit("beforeOpen"),r((()=>{this.visible=!0,p(e,"outline-message_visible"),e.style.cssText=o,i>0&&this.startTimer(i)}),100)),this}close(){const t=this.$el;let s,i;return this.isDestroyed()||(s=this.attr("destroyAfterClosed"),i=this.attr("beforeClose"),e(i)&&i.call(this),t.style.cssText="top:-50px;",f(t,"outline-message_visible"),this.visible=!1,this.closed=!0,r((()=>{this.$emit("closed"),s&&this.destroy()}),500)),this}destroy(){return this.$emit("beforeDestroy"),this.isDestroyed()||(this.removeListeners(),document.body.removeChild(this.$el),clearTimeout(this.timer),this._default(),this.$emit("afterDestroy")),this}onMouseEnter(){return this.clearTimer(),this}onMouseLeave(){const t=this.attr("duration"),e=this.attr("delay");return t<=0||this.startTimer(e),this}onClose(){return this.clearTimer(),this.close(),this}addListeners(){const t=this.$el;return q(t,".outline-message__content","mouseenter",this.onMouseEnter,this,!0),q(t,".outline-message__content","mouseleave",this.onMouseLeave,this,!0),q(t,".outline-message__close","click",this.onClose,this,!0),this}removeListeners(){const t=this.$el;return v(t,"mouseenter",this.onMouseEnter),v(t,"mouseleave",this.onMouseLeave),v(t,"click",this.onClose),this}}R.DEFAULTS=n({id:"",type:"info",effect:"default",round:!1,offset:30,duration:3,delay:2,message:"",customClass:"",closable:!0,visible:!0,dangerouslyUseHTMLString:!1,destroyAfterClosed:!0,beforeClose:null}),["info","success","warning","error"].forEach((t=>{R[t]=e=>{const s={},i=M("outline-message-"),n=e.beforeClose||null;let r=e.offset||30;return o(e)?s.message=e:w(e)&&_(s,e),s.id=i,s.type=t,s.offset=r,s.visible=!1,s.beforeClose=()=>{R.close(i,n)},U=new R(s),F.forEach((t=>{r+=t.$el.offsetHeight+16})),U.offset=r,U.open(),F.push(U),U}})),R.close=(t,s)=>{const i=F.length;let n,r,o=-1;if(F.forEach(((i,n)=>{t===i.id&&(r=i.$el.offsetHeight,o=n,e(s)&&s.call(i),F.splice(n,1))})),i<=1||-1===o||o>F.length-1)return!1;for(n=o;n{let t=F.length-1;for(;t>=0;t-=1)F[t].close()};class I{constructor(t,s){this.name=t,e(s)&&(this.action=s)}execute(){return this.action(),this}}class V{constructor(){this.commands=[]}get(t){return this.commands.find((e=>e.name===t))}add(t){return this.commands.push(t),this}del(t){const e=this.commands,s=e.find((e=>e.name===t)),i=s?e.indexOf(s):-1;return i>-1&&e.splice(i,1),this}clear(){return this.commands=[],this}execute(t){const s=this.commands.find((e=>e.name===t));return e(null==s?void 0:s.execute)&&s.execute(),this}}const P=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const s=D(t.icon,{iconSet:t.iconSet||"outline",color:t.color||"",size:t.size}),i=u("a",{className:"outline-toolbar__anchor",href:t.link},s),n=u("div",{className:`outline-toolbar__button ${t.name}`,"data-cmd":t.name},[t.link?i:s]);return p(s,"outline-toolbar__icon"),e&&p(n,"outline-toolbar_rounded"),t.disabled&&p(n,"outline-toolbar_disabled"),n},W="outline-toolbar_disabled",G="outline-toolbar_hidden";class J extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(J.DEFAULTS),this.disabled=!1,this.closed=!1,this.$el=null,this.buttons=[],this.commands=null,this}initialize(t){let s;return this.attr(t),this.disabled=this.attr("disabled"),this.closed=this.attr("closed"),this.commands=new V,s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}isDisabled(t){let e;return t?(e=this.get(t),e.disabled):this.disabled}isExist(t){return!!this.get(t)}isClosed(){return this.closed}_getCommand(t){const s=this,{action:i,name:n}=t;let r,l,a=null,h=null;return i?(h=i.handler,r=i.context||this,e(h)?l=h:o(h)&&(l=function(){s.$emit(h,n)}),e(l)&&(a=new I(n,l.bind(r))),a):a}get(t){return this.buttons.find((e=>e.name===t))}render(){const t=this.attr("mounted"),s=this.attr("buttons")||[],i=this.attr("placement");return H(),this.$el=u("div",{id:M("outline-toolbar"),className:`outline-toolbar outline-toolbar_${i}`}),this._paint(s),document.body.appendChild(this.$el),this.closed&&this.hide(),this.disabled&&this.disable(),e(t)&&t.call(this),this}erase(){return this.$el.innerHTML="",this}_paint(t){const e=this.attr("rounded"),s=document.createDocumentFragment();return t.forEach((t=>{const i=P(t,e),n=this._getCommand(t),{name:r,disabled:o,context:l}=t;s.appendChild(i),this.isExist(r)||(this.buttons.push({$el:i,name:r,disabled:o||!1,context:l||this}),n&&this.commands.add(n))})),this.$el.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.attr({buttons:t}),this.erase()._paint(t),this}add(t){const e=this.$el,n=document.createDocumentFragment(),r=this.attr("buttons")||[],{name:o,disabled:l,context:a}=t,h=this._getCommand(t),c=t=>{const e=P(t);n.appendChild(e),r.push(t),this.buttons.push({$el:e,name:o,disabled:l||!1,context:a||this,command:h}),h&&this.commands.add(h)};return s(t)?c(t):i(t)&&t.forEach((t=>{s(t)&&c(t)})),e.appendChild(n),this}remove(t){const e=this.$el,s=this.buttons,i=this.get(t);let n=-1;return i?(n=s.indexOf(i),n>-1&&(s.splice(n,1),this.attrs("buttons").splice(n,1)),this._disable(t),e.removeChild(i.$el),this):this}_disable(t){const e=this.get(t),s=this.commands.get(t);return!e||e.disabled||(e.disabled=!0,s&&this.commands.del(s),p(e.$el,W)),this}_enable(t){const e=this.get(t),s=this.commands.get(t);return e&&e.disabled?(e.disabled=!1,s&&this.commands.add(s),f(e.$el,W),this):this}disable(t){const s=this.attr("afterDisabled");return t?this._disable(t):(p(this.$el,W),this.removeListeners(),this.disabled=!0,e(s)&&s.call(this)),this}enable(t){const s=this.attr("afterEnabled");return t?this._enable(t):(this.disabled=!1,f(this.$el,W),this.addListeners(),e(s)&&s.call(this)),this}show(t){const s=this.attr("afterOpened"),i=this.get(t),n=this.$el;if(t){if(!i)return this;f(i.$el,G)}else f(n,G),this.closed=!1,e(s)&&r((()=>{s.call(this)}),310);return this}hide(t){const s=this.attr("afterClosed"),i=this.get(t),n=this.$el;if(t){if(!i)return this;p(i.$el,G)}else p(n,G),this.closed=!0,e(s)&&r((()=>{s.call(this)}),310);return this}toggle(){return this.isClosed()?this.show():this.hide(),this}highlight(t){const e=this.get(t),s="outline-toolbar_active";let i;return e?(i=e.$el,m(i,s)?f(i,s):p(i,s),this):this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.commands.clear(),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}execute(t){return this.isDisabled(t)||this.commands.execute(t),this}onExecute(t){const e=t.delegateTarget;let s="";return e&&(s=e.getAttribute("data-cmd"),s&&this.execute(s)),this}addListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||q(e,".outline-toolbar__button","click",this.onExecute,this,!0),this}removeListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||v(e,".outline-toolbar__button",this.onExecute),this}}J.DEFAULTS=n({placement:"ltr",closed:!1,disabled:!1,rounded:!0,buttons:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterDisabled:null,afterEnabled:null,beforeDestroy:null,afterDestroy:null});const K=(t,e)=>{let s,i=t;for(;i;)s=i.tagName.toLowerCase(),"script"!==s&&"style"!==s&&p(i,"outline-reader_sibling"),i=e?i.previousElementSibling:i.nextElementSibling},Q="进入阅读模式,按 ESC 键可退出阅读模式";class X extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(X.DEFAULTS),this.reading=!1,this.$target=null,this.$paper=null,this.$title=null,this.$article=null,this.$progress=null,this.toolbar=null,this}initialize(t){let e=null;return this.attr(t),e=this.attr("target"),o(e)?this.$target=document.querySelector(e):l(e)&&(this.$target=e),this.$target?(this.render().addListeners(),this):this}render(){return this._renderEdge()._paint(this.$target),this}erase(){return this.$article.innerHTML="",this}_paint(t){const e=document.createDocumentFragment(),s=[...t.cloneNode(!0).children];return r((()=>{s.forEach((t=>{e.appendChild(t)})),this.$article.appendChild(e)})),this}_remove(){const t=this.$paper,e=this.toolbar;return t&&document.body.removeChild(t),e&&e.destroy(),this}refresh(){return this.erase()._paint(this.$target),this}_renderEdge(){const t=this.$target;let e,s,i,n,o,a=this.attr("title");return s=t.querySelector("h1"),l(a)&&(s=a),l(s)&&(a=s.innerText),s=u("h1",{className:"outline-reader__title"},a),this.$title=s,i=u("article",{id:"outline-reader__article",className:"outline-reader__article"}),this.$article=i,n=u("div",{className:"outline-reader__progress"}),this.$progress=n,this.toolbar=new J({placement:"rtl",buttons:[{name:"exit",icon:"close",size:20,action:{context:this,handler:this.exit}}]}),e=u("section",{id:"outline-reader",className:"outline-reader outline-reader_hidden"},[n,s,i,this.toolbar.$el]),this.$paper=e,document.body.appendChild(e),r((()=>{o=e.previousElementSibling,K(o,!0),o=e.nextElementSibling,K(o)})),this}enter(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,n=document.querySelectorAll(".outline-reader_sibling"),r=this.attr("enterReadingTip")||Q;return this.reading||!i||(n.forEach((t=>{p(t,s)})),p(i,e),f(i,s),this.toolbar.show(),this.reading=!0,R.info({round:!0,message:r}),this.$emit("enterReading")),this}exit(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,n=document.querySelectorAll(".outline-reader_sibling");return this.reading&&i?(p(i,s),f(i,e),n.forEach((t=>{f(t,s)})),this.toolbar.hide(),this.reading=!1,this.$emit("exitReading"),this):this}toggle(){return this.reading?this.exit():this.enter(),this}print(){return e(print)?(print(),this):this}destroy(){return this.$paper?(this.removeListeners()._remove()._default(),this):this}onPrint(){return this.print(),this}onEnterReading(){return this.toggle(),this}onExitReading(t){return 27===t.keyCode&&this.reading&&(this.toggle(),function(t){t.stopPropagation(),t.preventDefault()}(t)),this}addListeners(){return this.$paper?(function(t,s,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const l=b.indexOf(s)>-1,a=function(e){let l=r||t;!0===r&&(l=n),!0===o&&v(t,s,a),i.call(l,e,n)};if(!e(i))return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,type:s,fn:a,data:n,context:r,capture:l}),i._delegateListener=a,t.addEventListener(s,a,l)}(document,"keyup",this.onExitReading,this,!0),this.$on("toolbar:action:print",this.onPrint),this.$on("toolbar:action:reading",this.onEnterReading),this):this}removeListeners(){return this.$paper?(v(document,"keyup",this.onExitReading),this.$off("toolbar:action:print"),this.$off("toolbar:action:reading"),this):this}}return X.DEFAULTS=n({target:"",title:"",enterReadingTip:Q}),X})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Reader=e()}(this,(function(){"use strict";const t=t=>Object.prototype.toString.apply(t),e=e=>"function"==typeof e||"[object Function]"===t(e),s=s=>("[object Object]"===t(s)||"object"==typeof s||e(s))&&null!==s,i=e=>Array.isArray?Array.isArray(e):"[object Array]"===t(e),n=t=>{let e={};return null===t?null:(i(t)?e=Array.from(t):(e=Object.assign({},t),Object.keys(e).forEach((i=>e[i]=s(t[i])?n(t[i]):t[i]))),e)},r=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return!!e(t)&&setTimeout((()=>{t()}),s)},o=t=>"string"==typeof t,l=t=>!!(s(t)&&t.nodeName&&t.tagName&&1===t.nodeType),a=e=>{return!(!s(e)||!(l(e)||(e=>!(!s(e)||"[object NodeList]"!==t(e)))(e)||(i=e,s(i)&&"[object DocumentFragment]"===t(i))||(e=>!(!s(e)||!("[object Text]"===t(e)||e.tagName&&3===e.nodeType)))(e)));var i},h=(t,e)=>{const s=Object.prototype.hasOwnProperty;return t&&s.call(t,e)},c=(t,e,s)=>{let i=t.tagName.toLowerCase();switch(e){case"style":t.style.cssText=s;break;case"value":"input"===i||"textarea"===i?t.value=s:t.setAttribute(e,s);break;case"htmlFor":t.setAttribute("for",s);break;case"className":t.className=s;break;case"innerHTML":t.innerHTML=s;break;case"innerText":t.innerText=s;break;default:t.setAttribute(e,s)}},d=(t,e)=>{if(!t||!s(e))return!1;Object.keys(e).forEach((s=>{const i=e[s];h(e,s)&&c(t,s,i)}))},u=(t,e,n)=>{const r=document.createDocumentFragment(),l=document.createElement(t),h=t=>a(t)||o(t),c=t=>{let e;if(!h(t))return!1;a(t)?e=t:o(t)&&(e=document.createTextNode(t)),r.appendChild(e)};return s(e)?d(l,e):i(e)&&e.every((t=>h(t)))?e.forEach((t=>{c(t)})):a(e)?c(e):o(e)&&c(document.createTextNode(e)),i(n)?n.forEach((t=>{c(t)})):c(n),l.appendChild(r),l},m=(t,e)=>{const s=new RegExp("(\\s|^)"+e+"(\\s|$)");let i,n;return!!l(t)&&(i=t.className,!!i&&(n=t.classList,n&&n.contains?t.classList.contains(e):!!s.exec(i)))},p=(t,e)=>{var s;let i,n;if(m(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.add?i.add(e):(n=t.className,n+=n.length>0?" "+e:e,t.className=n)},f=(t,e)=>{var s;let i,n=t.className;if(!n||!m(t,e))return!1;var r;i=t.classList,null!==(s=i)&&void 0!==s&&s.remove?i.remove(e):(r=n.replace(e,""),n=!!o(r)&&r.replace(/(^\s+)|(\s+$)/g,""),t.className=n)},b=["focusout","blur","focusin","focus","load","unload","mouseenter","mouseleave"],g=(t,e,s)=>{const i=b.indexOf(e)>-1;s._delegateListener&&delete(s=s._delegateListener)._delegateListener,function(t,e,s){const i=t._listeners;let n=-1;if(i.length<1)return!1;i.forEach(((t,i)=>{const r=t.fn;e===t.type&&(n=i,r===s&&(n=i))})),n>-1&&i.splice(n,1)}(t,e,s),t.removeEventListener(e,s,i)},y=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=o(t)?document.querySelector(t):t,n=i.childNodes,r=((t,e)=>{let s=t._listeners||[];return o(e)&&e&&(s=s.filter((t=>t.type===e))),s})(i,e);r.forEach((t=>{g(i,t.type,t.fn)})),(s||!0===e||1===arguments.length)&&i&&n&&n.forEach((t=>{l(t)&&y(t,e,s)}))},v=(t,s,i)=>{if(!e(i))return y(t,s),!1;g(t,s,i)},_=(t,e)=>{Object.keys(e).forEach((s=>{h(e,s)&&(t[s]=e[s])}))},$={},x=t=>h($,t)&&$[t].length>0,z=function(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?x(t):(t=>{let e=x(t),s=t.lastIndexOf(".");for(;!e&&-1!==s;)s=(t=t.substring(0,s)).lastIndexOf("."),e=x(t);return e})(t)},L=function(e,s){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const n=e=>{if(!x(e))return!1;$[e].forEach((e=>{const i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object BigInt64Array]","[object BigUint64Array]"].indexOf(t(s))>-1?s.toString():s;e.callback.call(e.context||e,i)}))},r=()=>{let t=e,s=e.lastIndexOf(".");for(;-1!==s;)t=t.substring(0,s),s=t.lastIndexOf("."),n(t);n(e),n("*")};if(!z(e))return!1;i?setTimeout(r,10):r()},M=(()=>{let t=0;return e=>(t+=1,e?e+"-"+t:"guid-"+t)})(),E=t=>{if(!h($,t))return!1;delete $[t]},C=(t,e)=>{if(!z(t))return!1;e?(t=>{const e=Object.keys($);if(!t||e.length<1)return!1;e.forEach((e=>{const s=$[e];let i;s.forEach(((e,n)=>{e.callback!==t&&e.token!==t||(i=e.topic,s.splice(-1,n))})),s.length<1&&E(i)}))})(e):E(t)};class T{constructor(t){this.attrs={},t&&this.initialize(t)}initialize(t){return this.attr(t).render().addListeners(),this}attr(t,e){const i=this.attrs;return o(t)?e&&h(i,t)?(i[t]=e,this):i[t]:s(t)?(_(i,t),this):0===arguments.length?i:this}render(){return this}refresh(){return this}destroy(){return this.removeListeners(),this}reload(t){let e=this.attr();return t&&(e=this.attr(t)),this.destroy().initialize(e),this}$emit(t,e){return L(t,e),this}$on(t,s){return function(t,s){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const n=M();let r="symbol"==typeof t?t.toString():t;e(s)&&($[r]||($[r]=[]),$[r].push({topic:r,callback:s,context:i,token:n}))}(t,s,this),this}$off(t,e){return C(t,e),this}addListeners(){return this}removeListeners(){return this}}const w=t=>{const e=Object.getPrototypeOf;let i;if(!(t=>s(t)&&null!==t)(t))return!1;if(i=t.prototype,!i)return!0;for(i=t;null!==e(i);)i=e(i);return e(t)===i},S=t=>t.replace(/]*>.*?<\/script>/gi,""),N=t=>{const e={"&":"&","<":"<",">":">","'":"'",'"':"""};return t.replace(/[&<>'"]/g,(t=>e[t]||t))},A=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s="outline-icon",n=e.size||0,r=e.color||"",l=e.iconSet||"",a=i(n)?n[0]:n,h=i(n)?n[1]:n,c=n?`width:${a}px;height:${h}px;`:"",u=r?c+`color:${r}`:c,m=e.attrs||{},p=document.createElement("i");let f,b="",g="";return o(t)?((t=>{const e=new RegExp("^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<\\!doctype svg[^>]*\\s*(?:\\[?(?:\\s*]*>\\s*)*\\]?)*[^>]*>\\s*)?]*>[^]*<\\/svg>\\s*$\\s*$","i");return o(t)&&e.test(t)})(t)?g=t:(b=l&&"icon"!==l?`xlink:href="#${l}-icon-${t}"`:`xlink:href="#icon-${t}"`,g=``),p.innerHTML=g,m.className?m.className=`${s} ${m.className}`:m.className=s,d(p,m),f=p.querySelector("svg"),d(f,{"aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",class:"outline-icon__svg",width:200,height:200,style:u}),p):null},D=function(t){return A(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},j=['','','','','','','','','','','','','','','','','','',''],k=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";return o(t)?function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";const s=/id="(.*?)"/,i=/^(\w+)-/;return j.find((n=>{const r=s.exec(n)[1];return i.exec(r)[1]===e&&r===("icon"===e?`${e}-${t}`:`${e}-icon-${t}`)}))}(t,e):[...j]},H=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=document.body;let s=document.querySelector("#outline-icons"),n=[];(t=>{if(!t)return!1;i(t)&&t.length>0?t.forEach((t=>{-1===j.indexOf(t)&&o(t)&&j.push(t)})):o(t)&&j.push(t)})(t),n=k(),s?s.innerHTML=n.join(""):(s=document.createElement("div"),s.innerHTML=``,e.insertBefore(s.firstChild,e.firstChild))},O=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=e.replace(/^>/i,"");return!!(e&&s&&t)&&(t.matches?t.matches(s):!!t.msMatchesSelector&&t.msMatchesSelector(s))},B=t=>t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode,q=function(t,e,s,i,n,r){let o=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const l=b.indexOf(s)>-1,a=function(l){const h=function(t){const e=t.target;return(s=e)&&3===s.nodeType?s.parentNode:s;var s}(l),c=((t,e,s,i)=>{const n=s||document;if(!t)return null;do{if(null!=e&&(e.startsWith(">")?t.parentNode===n&&O(t,e):O(t,e))||i&&t===n)return t;if(t===n)break}while(t=B(t))})(h,e,t);let d=r||t;l.delegateTarget=c,!0===r&&(d=n),c&&(!0===o&&v(t,s,a),i.call(d,l,n))};if(!t)return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,selector:e,type:s,fn:a,data:n,context:r,capture:l}),i._delegateListener=a,t.addEventListener(s,a,l)},F=[];let U;H();class R extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(R.DEFAULTS),this.$el=null,this.id="",this.closed=!1,this.visible=!1,this.offset=-50,this.timer=null,this.destroyed=!1,this}initialize(t){return this.attr(t),this.id=this.attr("id"),this.offset=this.attr("offset")||-50,this.$emit("created",{...this.attr()}),this.render().addListeners(),this.attr("visible")&&this.open(),this}isClosed(){return this.closed}isDestroyed(){return this.destroyed}_getClassName(){const t=this.attr("type"),e=this.attr("effect"),s=this.attr("round"),i=this.attr("closable"),n=this.attr("visible"),r=this.attr("customClass"),o=["outline-message",`outline-message_${t}`,`outline-message_${e}`];return s&&o.push("outline-message_round"),i||o.push("outline-message_full-width"),n&&o.push("outline-message_visible"),r&&o.push(r),o}render(){const t=this.attr("type"),e=this.attr("message"),s=this.attr("effect"),i=this.attr("round"),n=this.attr("closable"),r=this.attr("dangerouslyUseHTMLString"),o=this._getClassName(),l=[];let a,h,c,d,m,f=20;return i&&"default"===s&&(f=12),"plain"!==s&&(a=D("light"===s?`circle-${t}`:t,{iconSet:"outline",size:f}),p(a,"outline-message__icon"),l.push(a)),r?(c=document.createDocumentFragment(),c.innerHTML=e):c=document.createTextNode(N(S(e))),h=u("p",{className:"outline-message__content"},[c]),l.push(h),n&&(d=D("close",{iconSet:"outline",size:18}),p(d,"outline-message__close"),l.push(d)),m=u("div",{className:o.join(" ")},l),m.style.cssText="top:-50px;",this.$el=m,document.body.appendChild(this.$el),this.$emit("mounted"),this}_refreshIcon(){const t=".outline-message_hidden",e=this.$el;let s,i,n,r,o,l,a,h=20;return this.isDestroyed()?this:(o=e.querySelector(".outline-icon"),o?(s=this.attr("type"),i=this.attr("effect"),n=this.attr("round"),"plain"===i?p(o,t):(f(o,t),n&&"default"===i&&(h=12)),l=o.querySelector(".outline-icon__svg"),d(l,{style:`width:${h}px;height:${h}px;`}),a=l.querySelector("use"),r="light"===i?`circle-${s}`:s,c(a,"xlink:href",`#outline-icon-${r}`),this):this)}_refreshMessage(){const t=this.$el;let e,s,i,n;return this.isDestroyed()||(e=t.querySelector(".outline-message__content"),s=this.attr("dangerouslyUseHTMLString"),i=this.attr("message"),n=s?i:N(S(i)),e.innerHTML=n),this}_refreshClose(){const t=".outline-message_hidden",e=this.$el;let s,i;return this.isDestroyed()||(s=e.querySelector(".outline-message__close"),i=this.attr("closable"),s&&(i?p(s,t):f(s,t))),this}_refreshEl(){const t=this.$el;let e;return this.isDestroyed()||(e=this._getClassName(),c(t,"className",e.join(" "))),this}refresh(t){return w(t)?(this.attr(t)._refreshIcon()._refreshMessage()._refreshClose()._refreshEl(),this):this}clearTimer(){return this.isDestroyed()||this.timer&&(clearTimeout(this.timer),this.timer=null),this}startTimer(t){return this.isDestroyed()||(this.timer=r((()=>{this.$emit("opened"),this.close()}),1e3*t)),this}open(t){const e=this.$el;let s,i,n,o;return this.isDestroyed()||(this.isClosed()&&this.refresh(t),s=this.attr("offset"),i=this.attr("duration"),n=s&&s>=this.offset?s:this.offset,o=`top:${n}px;`,this.clearTimer(),this.$emit("beforeOpen"),r((()=>{this.visible=!0,p(e,"outline-message_visible"),e.style.cssText=o,i>0&&this.startTimer(i)}),100)),this}close(){const t=this.$el;let s,i;return this.isDestroyed()||(s=this.attr("destroyAfterClosed"),i=this.attr("beforeClose"),e(i)&&i.call(this),t.style.cssText="top:-50px;",f(t,"outline-message_visible"),this.visible=!1,this.closed=!0,r((()=>{this.$emit("closed"),s&&this.destroy()}),500)),this}destroy(){return this.$emit("beforeDestroy"),this.isDestroyed()||(this.removeListeners(),document.body.removeChild(this.$el),clearTimeout(this.timer),this._default(),this.$emit("afterDestroy")),this}onMouseEnter(){return this.clearTimer(),this}onMouseLeave(){const t=this.attr("duration"),e=this.attr("delay");return t<=0||this.startTimer(e),this}onClose(){return this.clearTimer(),this.close(),this}addListeners(){const t=this.$el;return q(t,".outline-message__content","mouseenter",this.onMouseEnter,this,!0),q(t,".outline-message__content","mouseleave",this.onMouseLeave,this,!0),q(t,".outline-message__close","click",this.onClose,this,!0),this}removeListeners(){const t=this.$el;return v(t,"mouseenter",this.onMouseEnter),v(t,"mouseleave",this.onMouseLeave),v(t,"click",this.onClose),this}}R.DEFAULTS=n({id:"",type:"info",effect:"default",round:!1,offset:30,duration:3,delay:2,message:"",customClass:"",closable:!0,visible:!0,dangerouslyUseHTMLString:!1,destroyAfterClosed:!0,beforeClose:null}),["info","success","warning","error"].forEach((t=>{R[t]=e=>{const s={},i=M("outline-message-"),n=e.beforeClose||null;let r=e.offset||30;return o(e)?s.message=e:w(e)&&_(s,e),s.id=i,s.type=t,s.offset=r,s.visible=!1,s.beforeClose=()=>{R.close(i,n)},U=new R(s),F.forEach((t=>{r+=t.$el.offsetHeight+16})),U.offset=r,U.open(),F.push(U),U}})),R.close=(t,s)=>{const i=F.length;let n,r,o=-1;if(F.forEach(((i,n)=>{t===i.id&&(r=i.$el.offsetHeight,o=n,e(s)&&s.call(i),F.splice(n,1))})),i<=1||-1===o||o>F.length-1)return!1;for(n=o;n{let t=F.length-1;for(;t>=0;t-=1)F[t].close()};class I{constructor(t,s){this.name=t,e(s)&&(this.action=s)}execute(){return this.action(),this}}class V{constructor(){this.commands=[]}get(t){return this.commands.find((e=>e.name===t))}add(t){return this.commands.push(t),this}del(t){const e=this.commands,s=e.find((e=>e.name===t)),i=s?e.indexOf(s):-1;return i>-1&&e.splice(i,1),this}clear(){return this.commands=[],this}execute(t){const s=this.commands.find((e=>e.name===t));return e(null==s?void 0:s.execute)&&s.execute(),this}}const P=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const s=D(t.icon,{iconSet:t.iconSet||"outline",color:t.color||"",size:t.size}),i=u("a",{className:"outline-toolbar__anchor",href:t.link},s),n=u("div",{className:`outline-toolbar__button ${t.name}`,"data-cmd":t.name},[t.link?i:s]);return p(s,"outline-toolbar__icon"),e&&p(n,"outline-toolbar_rounded"),t.disabled&&p(n,"outline-toolbar_disabled"),n},W="outline-toolbar_disabled",G="outline-toolbar_hidden";class J extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(J.DEFAULTS),this.disabled=!1,this.closed=!1,this.$el=null,this.buttons=[],this.commands=null,this}initialize(t){let s;return this.attr(t),this.disabled=this.attr("disabled"),this.closed=this.attr("closed"),this.commands=new V,s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}isDisabled(t){let e;return t?(e=this.get(t),e.disabled):this.disabled}isExist(t){return!!this.get(t)}isClosed(){return this.closed}_getCommand(t){const s=this,{action:i,name:n}=t;let r,l,a=null,h=null;return i?(h=i.handler,r=i.context||this,e(h)?l=h:o(h)&&(l=function(){s.$emit(h,n)}),e(l)&&(a=new I(n,l.bind(r))),a):a}get(t){return this.buttons.find((e=>e.name===t))}render(){const t=this.attr("mounted"),s=this.attr("buttons")||[],i=this.attr("placement");return H(),this.$el=u("div",{id:M("outline-toolbar"),className:`outline-toolbar outline-toolbar_${i}`}),this._paint(s),document.body.appendChild(this.$el),this.closed&&this.hide(),this.disabled&&this.disable(),e(t)&&t.call(this),this}erase(){return this.$el.innerHTML="",this}_paint(t){const e=this.attr("rounded"),s=document.createDocumentFragment();return t.forEach((t=>{const i=P(t,e),n=this._getCommand(t),{name:r,disabled:o,context:l}=t;s.appendChild(i),this.isExist(r)||(this.buttons.push({$el:i,name:r,disabled:o||!1,context:l||this}),n&&this.commands.add(n))})),this.$el.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.attr({buttons:t}),this.erase()._paint(t),this}add(t){const e=this.$el,n=document.createDocumentFragment(),r=this.attr("buttons")||[],{name:o,disabled:l,context:a}=t,h=this._getCommand(t),c=t=>{const e=P(t);n.appendChild(e),r.push(t),this.buttons.push({$el:e,name:o,disabled:l||!1,context:a||this,command:h}),h&&this.commands.add(h)};return s(t)?c(t):i(t)&&t.forEach((t=>{s(t)&&c(t)})),e.appendChild(n),this}remove(t){const e=this.$el,s=this.buttons,i=this.get(t);let n=-1;return i?(n=s.indexOf(i),n>-1&&(s.splice(n,1),this.attrs("buttons").splice(n,1)),this._disable(t),e.removeChild(i.$el),this):this}_disable(t){const e=this.get(t),s=this.commands.get(t);return!e||e.disabled||(e.disabled=!0,s&&this.commands.del(s),p(e.$el,W)),this}_enable(t){const e=this.get(t),s=this.commands.get(t);return e&&e.disabled?(e.disabled=!1,s&&this.commands.add(s),f(e.$el,W),this):this}disable(t){const s=this.attr("afterDisabled");return t?this._disable(t):(p(this.$el,W),this.removeListeners(),this.disabled=!0,e(s)&&s.call(this)),this}enable(t){const s=this.attr("afterEnabled");return t?this._enable(t):(this.disabled=!1,f(this.$el,W),this.addListeners(),e(s)&&s.call(this)),this}show(t){const s=this.attr("afterOpened"),i=this.get(t),n=this.$el;if(t){if(!i)return this;f(i.$el,G)}else f(n,G),this.closed=!1,e(s)&&r((()=>{s.call(this)}),310);return this}hide(t){const s=this.attr("afterClosed"),i=this.get(t),n=this.$el;if(t){if(!i)return this;p(i.$el,G)}else p(n,G),this.closed=!0,e(s)&&r((()=>{s.call(this)}),310);return this}toggle(){return this.isClosed()?this.show():this.hide(),this}highlight(t){const e=this.get(t),s="outline-toolbar_active";let i;return e?(i=e.$el,m(i,s)?f(i,s):p(i,s),this):this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.commands.clear(),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}execute(t){return this.isDisabled(t)||this.commands.execute(t),this}onExecute(t){const e=t.delegateTarget;let s="";return e&&(s=e.getAttribute("data-cmd"),s&&this.execute(s)),this}addListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||q(e,".outline-toolbar__button","click",this.onExecute,this,!0),this}removeListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||v(e,".outline-toolbar__button",this.onExecute),this}}J.DEFAULTS=n({placement:"ltr",closed:!1,disabled:!1,rounded:!0,buttons:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterDisabled:null,afterEnabled:null,beforeDestroy:null,afterDestroy:null});const K=(t,e)=>{let s,i=t;for(;i;)s=i.tagName.toLowerCase(),"script"!==s&&"style"!==s&&p(i,"outline-reader_sibling"),i=e?i.previousElementSibling:i.nextElementSibling},Q="进入阅读模式,按 ESC 键可退出阅读模式";class X extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(X.DEFAULTS),this.reading=!1,this.$target=null,this.$paper=null,this.$title=null,this.$article=null,this.$progress=null,this.toolbar=null,this}initialize(t){let e=null;return this.attr(t),e=this.attr("target"),o(e)?this.$target=document.querySelector(e):l(e)&&(this.$target=e),this.$target?(this.render().addListeners(),this):this}render(){return this._renderEdge()._paint(this.$target),this}erase(){return this.$article.innerHTML="",this}_paint(t){const e=document.createDocumentFragment(),s=[...t.cloneNode(!0).children];return r((()=>{s.forEach((t=>{e.appendChild(t)})),this.$article.appendChild(e)})),this}_remove(){const t=this.$paper,e=this.toolbar;return t&&document.body.removeChild(t),e&&e.destroy(),this}refresh(){return this.erase()._paint(this.$target),this}_renderEdge(){const t=this.$target;let e,s,i,n,o,a=this.attr("title");return s=t.querySelector("h1"),l(a)&&(s=a),l(s)&&(a=s.innerText),s=u("h1",{className:"outline-reader__title"},a),this.$title=s,i=u("article",{id:"outline-reader__article",className:"outline-reader__article"}),this.$article=i,n=u("div",{className:"outline-reader__progress"}),this.$progress=n,this.toolbar=new J({placement:"rtl",buttons:[{name:"print",icon:"print",size:20,action:{context:this,handler:this.print}},{name:"exit",icon:"close",size:20,action:{context:this,handler:this.exit}}]}),e=u("section",{id:"outline-reader",className:"outline-reader outline-reader_hidden"},[n,s,i,this.toolbar.$el]),this.$paper=e,document.body.appendChild(e),r((()=>{o=e.previousElementSibling,K(o,!0),o=e.nextElementSibling,K(o)})),this}enter(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,n=document.querySelectorAll(".outline-reader_sibling"),r=this.attr("enterReadingTip")||Q;return this.reading||!i||(n.forEach((t=>{p(t,s)})),p(i,e),f(i,s),this.toolbar.show(),this.reading=!0,R.info({round:!0,message:r}),this.$emit("enterReading")),this}exit(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,n=document.querySelectorAll(".outline-reader_sibling");return this.reading&&i?(p(i,s),f(i,e),n.forEach((t=>{f(t,s)})),this.toolbar.hide(),this.reading=!1,this.$emit("exitReading"),this):this}toggle(){return this.reading?this.exit():this.enter(),this}print(){return e(print)?(print(),this):this}destroy(){return this.$paper?(this.removeListeners()._remove()._default(),this):this}onPrint(){return this.print(),this}onEnterReading(){return this.toggle(),this}onExitReading(t){return 27===t.keyCode&&this.reading&&(this.toggle(),function(t){t.stopPropagation(),t.preventDefault()}(t)),this}addListeners(){return this.$paper?(function(t,s,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const l=b.indexOf(s)>-1,a=function(e){let l=r||t;!0===r&&(l=n),!0===o&&v(t,s,a),i.call(l,e,n)};if(!e(i))return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,type:s,fn:a,data:n,context:r,capture:l}),i._delegateListener=a,t.addEventListener(s,a,l)}(document,"keyup",this.onExitReading,this,!0),this.$on("toolbar:action:print",this.onPrint),this.$on("toolbar:action:reading",this.onEnterReading),this):this}removeListeners(){return this.$paper?(v(document,"keyup",this.onExitReading),this.$off("toolbar:action:print"),this.$off("toolbar:action:reading"),this):this}}return X.DEFAULTS=n({target:"",title:"",enterReadingTip:Q}),X})); //# sourceMappingURL=reader.min.js.map diff --git a/docs/js/reader.min.js.map b/docs/js/reader.min.js.map index ac09a02..2bac4ed 100644 --- a/docs/js/reader.min.js.map +++ b/docs/js/reader.min.js.map @@ -1 +1 @@ -{"version":3,"file":"reader.min.js","sources":["../../utils/lang/toString.js","../../utils/types/isFunction.js","../../utils/types/isObject.js","../../utils/types/isArray.js","../../utils/lang/cloneDeep.js","../../utils/lang/later.js","../../utils/types/isString.js","../../utils/types/isElement.js","../../utils/types/isDOM.js","../../utils/types/isHTMLCollection.js","../../utils/types/isFragment.js","../../utils/types/isTextNode.js","../../utils/lang/hasOwn.js","../../utils/dom/setAttribute.js","../../utils/dom/setAttributes.js","../../utils/dom/createElement.js","../../utils/dom/hasClass.js","../../utils/dom/addClass.js","../../utils/dom/removeClass.js","../../utils/lang/trim.js","../../utils/event/enum.js","../../utils/event/_off.js","../../utils/event/_delete.js","../../utils/event/purgeElement.js","../../utils/event/getListeners.js","../../utils/event/off.js","../../utils/lang/extend.js","../../utils/observer/_subscribers.js","../../utils/observer/_hasDirectSubscribersFor.js","../../utils/observer/has.js","../../utils/observer/_hasSubscribers.js","../../utils/observer/emit.js","../../utils/types/isTypedArray.js","../../utils/lang/guid.js","../../utils/observer/_removeSubscriber.js","../../utils/observer/off.js","../../utils/observer/_removeSubscriberByToken.js","../../base.js","../../utils/observer/on.js","../../utils/types/isObjectLike.js","../../utils/types/isPlainObject.js","../../utils/lang/stripScripts.js","../../utils/lang/encodeHTML.js","../../utils/icons/createElement.js","../../utils/types/isSVG.js","../../utils/icons/icon.js","../../utils/icons/symbols.js","../../utils/icons/defaults.js","../../utils/icons/getSymbols.js","../../utils/icons/getSymbol.js","../../utils/icons/paint.js","../../utils/icons/add.js","../../utils/dom/matches.js","../../utils/dom/getParentOrHost.js","../../utils/event/on.js","../../utils/event/getTarget.js","../../utils/dom/resolveTextNode.js","../../utils/dom/closest.js","../../message.js","../../command.js","../../commands.js","../../_createButton.js","../../toolbar.js","../../_updateSiblingElements.js","../../reader.js","../../utils/event/stop.js","../../utils/event/at.js"],"sourcesContent":["/**\r\n * Object 对象原型上的 toString 方法\r\n * ========================================================================\r\n * @method toString\r\n * @param {*} val\r\n * @returns {string}\r\n */\r\nconst toString = (val) => {\r\n return Object.prototype.toString.apply(val)\r\n}\r\n\r\nexport default toString\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测测试数据是否为 Function 类型\r\n * ========================================================================\r\n * @method isFunction\r\n * @param {*} val - (必须)待检测的数据\r\n * @returns {boolean} 'val' 是 Function 类型返回 true,否则返回 false\r\n */\r\nconst isFunction = (val) => {\r\n return typeof val === 'function' || toString(val) === '[object Function]'\r\n}\r\n\r\nexport default isFunction\r\n","import toString from '../lang/toString'\r\nimport isFunction from './isFunction'\r\n\r\n/**\r\n * 检测数据是否为 Object 类型\r\n * ========================================================================\r\n * @method isObject\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isObject = (o) => {\r\n return (\r\n (toString(o) === '[object Object]' ||\r\n typeof o === 'object' ||\r\n isFunction(o)) &&\r\n o !== null\r\n )\r\n}\r\n\r\nexport default isObject\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测数据是否为 Array 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isArray = (o) => {\r\n if (Array.isArray) {\r\n return Array.isArray(o)\r\n } else {\r\n return toString(o) === '[object Array]'\r\n }\r\n}\r\n\r\nexport default isArray\r\n","import isObject from '../types/isObject'\r\nimport isArray from '../types/isArray'\r\n\r\n/**\r\n * 深拷贝对象函数\r\n * ========================================================================\r\n * @methods cloneDeep\r\n * @param {Object} obj - 深拷贝的对象\r\n * @returns {Array|Object|*}\r\n *\r\n * @example\r\n * const arr = cloneDeep([2,3,4,6])\r\n * => [2,3,4,6]\r\n */\r\nconst cloneDeep = (obj) => {\r\n let clone = {}\r\n\r\n if (obj === null) {\r\n return null\r\n }\r\n\r\n if (isArray(obj)) {\r\n clone = Array.from(obj)\r\n } else {\r\n clone = Object.assign({}, obj)\r\n Object.keys(clone).forEach((key) => {\r\n return (clone[key] = isObject(obj[key]) ? cloneDeep(obj[key]) : obj[key])\r\n })\r\n }\r\n\r\n return clone\r\n}\r\n\r\nexport default cloneDeep\r\n","import isFunction from '../types/isFunction'\r\n\r\n/**\r\n * later - 延迟执行方法\r\n * ========================================================================\r\n * @method later\r\n * @param {Function} fn\r\n * @param {Number} [delay]\r\n * @returns {number|boolean}\r\n */\r\nconst later = (fn, delay = 300) => {\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n return setTimeout(() => {\r\n fn()\r\n }, delay)\r\n}\r\n\r\nexport default later\r\n","/**\r\n * 检测数据是否为 String 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\nconst isString = (str) => {\r\n return typeof str === 'string'\r\n}\r\n\r\nexport default isString\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测数据是否为 HTMLElement DOM 节点\r\n * ========================================================================\r\n * @method isElement\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isElement = (o) => {\r\n return !!(isObject(o) && o.nodeName && o.tagName && o.nodeType === 1)\r\n}\r\n\r\nexport default isElement\r\n","import isObject from './isObject'\r\nimport isElement from './isElement'\r\nimport isHTMLCollection from './isHTMLCollection'\r\nimport isFragment from './isFragment'\r\nimport isTextNode from './isTextNode'\r\n\r\nconst isDOM = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (isElement(el) || isHTMLCollection(el) || isFragment(el) || isTextNode(el))\r\n )\r\n}\r\n\r\nexport default isDOM\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isHTMLCollection = (el) => {\r\n return !!(isObject(el) && toString(el) === '[object NodeList]')\r\n}\r\n\r\nexport default isHTMLCollection\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isFragment = (fragment) => {\r\n return !!(\r\n isObject(fragment) && toString(fragment) === '[object DocumentFragment]'\r\n )\r\n}\r\n\r\nexport default isFragment\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isTextNode = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (toString(el) === '[object Text]' || (el.tagName && el.nodeType === 3))\r\n )\r\n}\r\n\r\nexport default isTextNode\r\n","/**\r\n * 检测对象自身属性中是否具有指定的属性。\r\n * ========================================================================\r\n * @method hasOwn\r\n * @param {Object} obj - (必须)检测的目标对象\r\n * @param {String} prop - (必须)属性名\r\n * @returns {Boolean}\r\n */\r\nconst hasOwn = (obj, prop) => {\r\n const hasOwnProperty = Object.prototype.hasOwnProperty\r\n return obj && hasOwnProperty.call(obj, prop)\r\n}\r\n\r\nexport default hasOwn\r\n","/**\r\n * 给 DOM 节点设置属性/值\r\n * ========================================================================\r\n * @method setAttribute\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} attr - 属性名称\r\n * @param {String|Number|Boolean} value - 属性值\r\n */\r\nconst setAttribute = (el, attr, value) => {\r\n let tagName = el.tagName.toLowerCase()\r\n\r\n switch (attr) {\r\n case 'style':\r\n el.style.cssText = value\r\n break\r\n case 'value':\r\n if (tagName === 'input' || tagName === 'textarea') {\r\n el.value = value\r\n } else {\r\n el.setAttribute(attr, value)\r\n }\r\n break\r\n case 'htmlFor':\r\n el.setAttribute('for', value)\r\n break\r\n case 'className':\r\n el.className = value\r\n break\r\n case 'innerHTML':\r\n el.innerHTML = value\r\n break\r\n case 'innerText':\r\n el.innerText = value\r\n break\r\n default:\r\n el.setAttribute(attr, value)\r\n break\r\n }\r\n}\r\n\r\nexport default setAttribute\r\n","import isObject from '../types/isObject'\r\nimport hasOwn from '../lang/hasOwn'\r\nimport setAttribute from './setAttribute'\r\n\r\nconst setAttributes = (el, attrs) => {\r\n if (!el || !isObject(attrs)) {\r\n return false\r\n }\r\n\r\n Object.keys(attrs).forEach((attr) => {\r\n const value = attrs[attr]\r\n if (hasOwn(attrs, attr)) {\r\n setAttribute(el, attr, value)\r\n }\r\n })\r\n}\r\n\r\nexport default setAttributes\r\n","import isObject from '../types/isObject'\r\nimport isString from '../types/isString'\r\nimport isArray from '../types/isArray'\r\nimport isDOM from '../types/isDOM'\r\nimport setAttributes from './setAttributes'\r\n\r\n/**\r\n * 创建 DOM 节点,并添加属性和子节点\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} tagName - 标签名称\r\n * @param {Object|Array|HTMLElement|DocumentFragment|String} attrs - 属性对象或者子节点\r\n * @param {Array|HTMLElement|DocumentFragment|String} [children] - 子节点数组\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (tagName, attrs, children) => {\r\n const $fragment = document.createDocumentFragment()\r\n const $el = document.createElement(tagName)\r\n const isValidChild = (child) => {\r\n return isDOM(child) || isString(child)\r\n }\r\n const append = (child) => {\r\n let $child\r\n\r\n if (!isValidChild(child)) {\r\n return false\r\n }\r\n\r\n if (isDOM(child)) {\r\n $child = child\r\n } else if (isString(child)) {\r\n $child = document.createTextNode(child)\r\n }\r\n\r\n $fragment.appendChild($child)\r\n }\r\n\r\n if (isObject(attrs)) {\r\n setAttributes($el, attrs)\r\n } else if (isArray(attrs) && attrs.every((attr) => isValidChild(attr))) {\r\n attrs.forEach((child) => {\r\n append(child)\r\n })\r\n } else if (isDOM(attrs)) {\r\n append(attrs)\r\n } else if (isString(attrs)) {\r\n append(document.createTextNode(attrs))\r\n }\r\n\r\n if (isArray(children)) {\r\n children.forEach((child) => {\r\n append(child)\r\n })\r\n } else {\r\n append(children)\r\n }\r\n\r\n $el.appendChild($fragment)\r\n\r\n return $el\r\n}\r\n\r\nexport default createElement\r\n","import isElement from '../types/isElement'\r\n/**\r\n * 检测 DOM 节点是否包含名为 className 的样式\r\n * ========================================================================\r\n * @method hasClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst hasClass = (el, className) => {\r\n const pattern = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\r\n let allClass\r\n let classList\r\n\r\n if (!isElement(el)) {\r\n return false\r\n }\r\n\r\n allClass = el.className\r\n\r\n if (!allClass) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList && classList.contains) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!pattern.exec(allClass)\r\n}\r\n\r\nexport default hasClass\r\n","import hasClass from './hasClass'\r\n\r\n/**\r\n * 给 DOM 节点添加名为 className 的样式\r\n * ========================================================================\r\n * @method addClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst addClass = (el, className) => {\r\n let classList\r\n let allClass\r\n\r\n if (hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.add) {\r\n classList.add(className)\r\n } else {\r\n allClass = el.className\r\n allClass += allClass.length > 0 ? ' ' + className : className\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default addClass\r\n","import trim from '../lang/trim'\r\nimport hasClass from './hasClass'\r\n\r\n/**\r\n * 移除 DOM 节点的 className 样式\r\n * ========================================================================\r\n * @method removeClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst removeClass = (el, className) => {\r\n let allClass = el.className\r\n let classList\r\n\r\n if (!allClass || !hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.remove) {\r\n classList.remove(className)\r\n } else {\r\n allClass = trim(allClass.replace(className, ''))\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default removeClass\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 清楚字符串起始位置所有的空格\r\n * ========================================================================\r\n * @method trim\r\n * @param {string} str\r\n * @returns {string|Boolean}\r\n */\r\nconst trim = (str) => {\r\n if (!isString(str)) {\r\n return false\r\n }\r\n return str.replace(/(^\\s+)|(\\s+$)/g, '')\r\n}\r\n\r\nexport default trim\r\n","export const CAPTURE_EVENTS = [\r\n 'focusout',\r\n 'blur',\r\n 'focusin',\r\n 'focus',\r\n 'load',\r\n 'unload',\r\n 'mouseenter',\r\n 'mouseleave'\r\n]\r\n","import { CAPTURE_EVENTS } from './enum'\r\nimport _delete from './_delete'\r\n\r\n/**\r\n * (私有方法)取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method _off\r\n * @param {HTMLElement} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} fn - (必须)事件处理器回调函数\r\n * @private\r\n */\r\nconst _off = (el, type, fn) => {\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n /* istanbul ignore else */\r\n if (fn._delegateListener) {\r\n fn = fn._delegateListener\r\n delete fn._delegateListener\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n _delete(el, type, fn)\r\n\r\n el.removeEventListener(type, fn, capture)\r\n}\r\n\r\nexport default _off\r\n","/**\r\n * 删除 DOM 元素缓存的 _listeners 数据\r\n * ========================================================================\r\n * @method _delete\r\n * @param {HTMLElement} el - 要删除 listener 的 DOM 元素\r\n * @param {String} type - 事件类型(名称)\r\n * @param {Function} [fn] - 事件处理器回调函数\r\n */\r\nconst _delete = function (el, type, fn) {\r\n const listeners = el._listeners\r\n let index = -1\r\n\r\n if (listeners.length < 1) {\r\n return false\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n listeners.forEach((listener, i) => {\r\n const handler = listener.fn\r\n\r\n if (type === listener.type) {\r\n index = i\r\n\r\n if (handler === fn) {\r\n index = i\r\n }\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n}\r\n\r\nexport default _delete\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport getListeners from './getListeners'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 销毁(type 类型的)代理事件绑定\r\n * ========================================================================\r\n * 1. 设置了事件类型 type,则销毁指定类型的事件绑定,否则清除所有代理事件绑定\r\n * 2. recurse 设置为 true,递归销毁子节点全部事件绑定\r\n * ========================================================================\r\n * @method purgeElement\r\n * @param {HTMLElement|String} el - (必须)DOM 元素或者其选择器\r\n * @param {String|Boolean} type - (必须)事件类型\r\n * @param {Boolean} [recurse] - (可选)是否递归销毁子节点所有事件绑定\r\n */\r\nconst purgeElement = function (el, type, recurse = false) {\r\n const $element = isString(el) ? document.querySelector(el) : el\r\n const $children = $element.childNodes\r\n const listeners = getListeners($element, type)\r\n\r\n listeners.forEach((listener) => {\r\n _off($element, listener.type, listener.fn)\r\n })\r\n\r\n if (\r\n (recurse || type === true || arguments.length === 1) &&\r\n $element &&\r\n $children\r\n ) {\r\n $children.forEach(($child) => {\r\n if (isElement($child)) {\r\n purgeElement($child, type, recurse)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default purgeElement\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 获取 DOM 元素(type 事件类型)事件绑定信息\r\n * ========================================================================\r\n * 如果设置了事件类型 type, 则返回指定类型的事件绑定信息,否则返回所有事件绑定信息\r\n * ========================================================================\r\n * @methods getListeners\r\n * @param {HTMLElement} el - (必须)要获取事件绑定信息的 DOM 元素\r\n * @param {String} [type] - (可选)事件类型\r\n * @returns {Array} - 已绑定的事件信息\r\n */\r\nconst getListeners = (el, type) => {\r\n let listeners = el._listeners || []\r\n\r\n if (isString(type) && type) {\r\n listeners = listeners.filter((listener) => {\r\n return listener.type === type\r\n })\r\n }\r\n\r\n return listeners\r\n}\r\n\r\nexport default getListeners\r\n","import purgeElement from './purgeElement'\r\nimport isFunction from '../types/isFunction'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method off\r\n * @param {HTMLElement|Object} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} [fn] - (可选)事件处理器回调函数\r\n */\r\nconst off = (el, type, fn) => {\r\n // 如果不设置 fn 参数,默认清除 el 元素上绑定的所有事件处理器\r\n if (!isFunction(fn)) {\r\n purgeElement(el, type)\r\n return false\r\n }\r\n\r\n _off(el, type, fn)\r\n}\r\n\r\nexport default off\r\n","import hasOwn from './hasOwn'\r\n\r\n/**\r\n * 扩展对象\r\n * ========================================================================\r\n * @method extend\r\n * @param {Object} origin\r\n * @param {Object} source\r\n */\r\nconst extend = (origin, source) => {\r\n const keys = Object.keys(source)\r\n\r\n keys.forEach((prop) => {\r\n if (hasOwn(source, prop)) {\r\n origin[prop] = source[prop]\r\n }\r\n })\r\n}\r\n\r\nexport default extend\r\n","/**\r\n * 存储订阅者(主题和处理器的)私有对象\r\n * ========================================================================\r\n * @type {{}}\r\n * @private\r\n */\r\nconst _subscribers = {}\r\n\r\nexport default _subscribers\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 判断是否存在与给定 topic 完全匹配的订阅者信息\r\n * ========================================================================\r\n * @method _hasDirectSubscribersFor\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasDirectSubscribersFor = (topic) => {\r\n return hasOwn(_subscribers, topic) && _subscribers[topic].length > 0\r\n}\r\n\r\nexport default _hasDirectSubscribersFor\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\nimport _hasSubscribers from './_hasSubscribers'\r\n\r\n/**\r\n * 判断是否存在包含 topic 指定的订阅者信息\r\n * ========================================================================\r\n * @method has\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Boolean} [isDirect] - (可选)是否为直接的主题,默认值:true\r\n * @returns {Boolean}\r\n */\r\nconst has = (topic, isDirect = true) => {\r\n return isDirect ? _hasDirectSubscribersFor(topic) : _hasSubscribers(topic)\r\n}\r\n\r\nexport default has\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * 判断是否存在包含给定 topic 相关的订阅者信息\r\n * ========================================================================\r\n * @method _hasSubscribers\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasSubscribers = (topic) => {\r\n let found = _hasDirectSubscribersFor(topic)\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (!found && position !== -1) {\r\n topic = topic.substring(0, position)\r\n position = topic.lastIndexOf('.')\r\n found = _hasDirectSubscribersFor(topic)\r\n }\r\n\r\n return found\r\n}\r\n\r\nexport default _hasSubscribers\r\n","import isTypedArray from '../types/isTypedArray'\r\nimport _subscribers from './_subscribers'\r\nimport has from './has'\r\nimport _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * (异步)发布订阅主题信息\r\n * ========================================================================\r\n * 主题默认是异步发布的。确保在消费者处理主题时,主题的发起者不会被阻止。\r\n * ========================================================================\r\n * @method emit\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Object} [data] - (可选)数据对象\r\n * @param {Boolean} [async] - (可选) 是否异步发布\r\n */\r\nconst emit = (topic, data, async = true) => {\r\n const execute = (topic) => {\r\n if (!_hasDirectSubscribersFor(topic)) {\r\n return false\r\n }\r\n\r\n _subscribers[topic].forEach((subscriber) => {\r\n // 针对 mqtt 消息服务返回的 Uint8Array 类似的 typed arrays 格式的数据\r\n // 采用 toString() 方法转化为普通(JSON)字符串\r\n const message = isTypedArray(data) ? data.toString() : data\r\n\r\n subscriber.callback.call(subscriber.context || subscriber, message)\r\n })\r\n }\r\n const deliver = () => {\r\n let subscriber = topic\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (position !== -1) {\r\n subscriber = subscriber.substring(0, position)\r\n position = subscriber.lastIndexOf('.')\r\n\r\n execute(subscriber)\r\n }\r\n\r\n // 执行 topic 对应的处理器\r\n execute(topic)\r\n // 执行特殊 topic:'*'(监听全部消息的发布)\r\n execute('*')\r\n }\r\n\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (async) {\r\n setTimeout(deliver, 10)\r\n } else {\r\n deliver()\r\n }\r\n}\r\n\r\nexport default emit\r\n","import toString from '../lang/toString'\r\n/**\r\n * 判断检测数据是否为 Typed Arrays 类型的数据\r\n * ========================================================================\r\n * @param {*} val\r\n * @returns {boolean}\r\n */\r\nconst isTypedArray = (val) => {\r\n const TYPES = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]',\r\n '[object BigInt64Array]',\r\n '[object BigUint64Array]'\r\n ]\r\n\r\n return TYPES.indexOf(toString(val)) > -1\r\n}\r\n\r\nexport default isTypedArray\r\n","/**\r\n * 生成唯一 id 字符串的函数\r\n * ========================================================================\r\n * @method guid\r\n * @param {String} [prefix] - 生成 id 的前缀字符串\r\n * @return {String} 返回一个表示唯一 id 的字符串\r\n */\r\nconst guid = (() => {\r\n let uuid = 0\r\n\r\n return (prefix) => {\r\n uuid += 1\r\n\r\n return prefix ? prefix + '-' + uuid : 'guid-' + uuid\r\n }\r\n})()\r\n\r\nexport default guid\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 删除与给定 topic 相同的订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriber\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _removeSubscriber = (topic) => {\r\n if (!hasOwn(_subscribers, topic)) {\r\n return false\r\n }\r\n\r\n delete _subscribers[topic]\r\n}\r\n\r\nexport default _removeSubscriber\r\n","import has from './has'\r\nimport _removeSubscriber from './_removeSubscriber'\r\nimport _removeSubscriberByToken from './_removeSubscriberByToken'\r\n\r\n/**\r\n * 取消订阅主题\r\n * ========================================================================\r\n * @method off\r\n * @param {String} topic - (必须)订阅的主题\r\n * @param {Function|String} [token] - (可选)订阅主题的处理器函数或者唯一 Id 值\r\n */\r\nconst off = (topic, token) => {\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (token) {\r\n _removeSubscriberByToken(token)\r\n } else {\r\n _removeSubscriber(topic)\r\n }\r\n}\r\n\r\nexport default off\r\n","import _subscribers from './_subscribers'\r\nimport _removeSubscriber from './_removeSubscriber'\r\n\r\n/**\r\n * 通过订阅者 token 值删除订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriberByToken\r\n * @param {String} token - 订阅者 token 字符串\r\n * @returns {boolean}\r\n * @private\r\n */\r\nconst _removeSubscriberByToken = (token) => {\r\n const keys = Object.keys(_subscribers)\r\n let index = -1\r\n\r\n if (!token || keys.length < 1) {\r\n return false\r\n }\r\n\r\n keys.forEach((subject) => {\r\n const subscriber = _subscribers[subject]\r\n let topic\r\n\r\n subscriber.forEach((execution, j) => {\r\n if (execution.callback === token || execution.token === token) {\r\n topic = execution.topic\r\n subscriber.splice(index, j)\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (subscriber.length < 1) {\r\n _removeSubscriber(topic)\r\n }\r\n })\r\n}\r\n\r\nexport default _removeSubscriberByToken\r\n","import isString from './utils/types/isString'\r\nimport hasOwn from './utils/lang/hasOwn'\r\nimport isObject from './utils/types/isObject'\r\nimport extend from './utils/lang/extend'\r\nimport publish from './utils/observer/emit'\r\nimport subscribe from './utils/observer/on'\r\nimport unsubscribe from './utils/observer/off'\r\n\r\nclass Base {\r\n constructor(options) {\r\n this.attrs = {}\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options).render().addListeners()\r\n return this\r\n }\r\n\r\n attr(prop, value) {\r\n const attrs = this.attrs\r\n\r\n if (isString(prop)) {\r\n // 只能扩展 attrs 中已有的属性\r\n if (value && hasOwn(attrs, prop)) {\r\n // 更新单个配置信息\r\n attrs[prop] = value\r\n return this\r\n }\r\n\r\n // 只传递 prop 参数,则返回对应的属性值\r\n return attrs[prop]\r\n } else if (isObject(prop)) {\r\n // 批量更新配置信息\r\n extend(attrs, prop)\r\n\r\n return this\r\n } else if (arguments.length === 0) {\r\n // 不传递参数,直接返回整个\r\n return attrs\r\n }\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n return this\r\n }\r\n\r\n refresh() {\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.removeListeners()\r\n return this\r\n }\r\n\r\n reload(options) {\r\n let attrs = this.attr()\r\n\r\n if (options) {\r\n attrs = this.attr(options)\r\n }\r\n\r\n this.destroy().initialize(attrs)\r\n\r\n return this\r\n }\r\n\r\n $emit(event, data) {\r\n publish(event, data)\r\n return this\r\n }\r\n\r\n $on(event, callback) {\r\n subscribe(event, callback, this)\r\n return this\r\n }\r\n\r\n $off(event, callback) {\r\n unsubscribe(event, callback)\r\n return this\r\n }\r\n\r\n addListeners() {\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n return this\r\n }\r\n}\r\n\r\nexport default Base\r\n","import _subscribers from './_subscribers'\r\nimport isFunction from '../types/isFunction'\r\nimport guid from '../lang/guid'\r\n\r\n/**\r\n * 订阅主题,并给出处理器函数\r\n * ========================================================================\r\n * @method on\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Function} handler - (必须)主题的处理器函数\r\n * @param {Object} [context] - (可选)指定 this 执行上下文\r\n * @return {String} - 唯一的 token 字符串,例如:'guid-1'。\r\n */\r\nconst on = (topic, handler, context = null) => {\r\n const token = guid()\r\n let subject = typeof topic === 'symbol' ? topic.toString() : topic\r\n\r\n if (!isFunction(handler)) {\r\n return ''\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (!_subscribers[subject]) {\r\n _subscribers[subject] = []\r\n }\r\n\r\n _subscribers[subject].push({\r\n topic: subject,\r\n callback: handler,\r\n context,\r\n token\r\n })\r\n\r\n return token\r\n}\r\n\r\nexport default on\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测测试数据是否为类似 Object 类型\r\n * ========================================================================\r\n * @method isObjectLike\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是类似 Object 类型,返回 true,否则返回 false\r\n */\r\nconst isObjectLike = (val) => {\r\n return isObject(val) && val !== null\r\n}\r\n\r\nexport default isObjectLike\r\n","import isObjectLike from './isObjectLike'\r\n\r\n/**\r\n * 检测测试数据是否为普通对象\r\n * ========================================================================\r\n * @method isPlainObject\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是普通对象,返回 true,否则返回 false\r\n */\r\nconst isPlainObject = (val) => {\r\n const getPrototypeOf = Object.getPrototypeOf\r\n let proto\r\n\r\n // Detect obvious negatives\r\n if (!isObjectLike(val)) {\r\n return false\r\n }\r\n\r\n proto = val.prototype\r\n\r\n // JavaScript 对象分为两种:普通对象和函数对象\r\n // 普通对象:原型是 __proto__,没有 prototype 原型(属性)\r\n // 函数对象:原型是 prototype ,prototype 只存在于函数对象上\r\n if (!proto) {\r\n return true\r\n }\r\n\r\n proto = val\r\n\r\n while (getPrototypeOf(proto) !== null) {\r\n proto = getPrototypeOf(proto)\r\n }\r\n\r\n return getPrototypeOf(val) === proto\r\n}\r\n\r\nexport default isPlainObject\r\n","/**\r\n * 移除字符串中的 JavaScript 代码\r\n * ====================================================\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nconst stripScripts = (str) => {\r\n return str.replace(/]*>.*?<\\/script>/gi, '')\r\n}\r\n\r\nexport default stripScripts\r\n","/**\r\n * 转义字符串中的 HTML 标签\r\n *\r\n * @param {String} str - 需要转义的字符串\r\n * @returns {String}\r\n */\r\nconst encodeHTML = (str) => {\r\n const CHARTS = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": ''',\r\n '\"': '"'\r\n }\r\n\r\n return str.replace(/[&<>'\"]/g, (tag) => {\r\n return CHARTS[tag] || tag\r\n })\r\n}\r\n\r\nexport default encodeHTML\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport isSVG from '../types/isSVG'\r\nimport setAttributes from '../dom/setAttributes'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @param {Object} [options.attrs]\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (name, options = {}) => {\r\n const ICON = 'outline-icon'\r\n const size = options.size || 0\r\n const color = options.color || ''\r\n const iconSet = options.iconSet || ''\r\n const width = isArray(size) ? size[0] : size\r\n const height = isArray(size) ? size[1] : size\r\n const defaultRules = size ? `width:${width}px;height:${height}px;` : ''\r\n const cssRules = color ? defaultRules + `color:${color}` : defaultRules\r\n const attrs = options.attrs || {}\r\n const $icon = document.createElement('i')\r\n let binds = ''\r\n let svg = ''\r\n let $svg\r\n\r\n if (!isString(name)) {\r\n return null\r\n }\r\n\r\n if (isSVG(name)) {\r\n svg = name\r\n } else {\r\n binds =\r\n iconSet && iconSet !== 'icon'\r\n ? `xlink:href=\"#${iconSet}-icon-${name}\"`\r\n : `xlink:href=\"#icon-${name}\"`\r\n svg = ``\r\n }\r\n\r\n $icon.innerHTML = svg\r\n\r\n if (attrs.className) {\r\n attrs.className = `${ICON} ${attrs.className}`\r\n } else {\r\n attrs.className = ICON\r\n }\r\n\r\n setAttributes($icon, attrs)\r\n\r\n $svg = $icon.querySelector('svg')\r\n setAttributes($svg, {\r\n 'aria-hidden': true,\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n class: 'outline-icon__svg',\r\n width: 200,\r\n height: 200,\r\n style: cssRules\r\n })\r\n\r\n return $icon\r\n}\r\n\r\nexport default createElement\r\n","import isString from './isString'\r\n\r\nconst isSVG = (str) => {\r\n const declaration = '(?:<\\\\?xml[^>]*>\\\\s*)?'\r\n const doctype =\r\n '(?:<\\\\!doctype svg[^>]*\\\\s*(?:\\\\[?(?:\\\\s*]*>\\\\s*)*\\\\]?)*[^>]*>\\\\s*)?'\r\n const content = ']*>[^]*<\\\\/svg>\\\\s*$'\r\n const svg = `^\\\\s*${declaration}${doctype}${content}\\\\s*$`\r\n const pattern = new RegExp(svg, 'i')\r\n\r\n return isString(str) && pattern.test(str)\r\n}\r\n\r\nexport default isSVG\r\n","import createElement from './createElement'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method icon\r\n * @alias createElement\r\n * @see createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @returns {HTMLElement}\r\n */\r\nconst icon = (name, options = {}) => {\r\n return createElement(name, options)\r\n}\r\n\r\nexport default icon\r\n","import DEFAULTS from './defaults'\r\n\r\nconst SYMBOLS = [...DEFAULTS]\r\n\r\nexport default SYMBOLS\r\n","const DEFAULTS = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n]\r\n\r\nexport default DEFAULTS\r\n","import isString from '../types/isString'\r\nimport getSymbol from './getSymbol'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n *\r\n * @method getSymbols\r\n * @param {String} [name]\r\n * @param {String} [iconSet]\r\n * @returns {string[]|*}\r\n */\r\nconst getSymbols = (name, iconSet = 'icon') => {\r\n if (isString(name)) {\r\n return getSymbol(name, iconSet)\r\n }\r\n\r\n return [...SYMBOLS]\r\n}\r\n\r\nexport default getSymbols\r\n","import SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method getSymbol\r\n * @param {String} name\r\n * @param {String} [iconSet]\r\n * @returns {String}\r\n */\r\nconst getSymbol = (name, iconSet = 'icon') => {\r\n const patternName = /id=\"(.*?)\"/\r\n const patternSet = /^(\\w+)-/\r\n const symbols = SYMBOLS\r\n\r\n return symbols.find((symbol) => {\r\n const names = patternName.exec(symbol)\r\n const fullName = names[1]\r\n const sets = patternSet.exec(fullName)\r\n const setName = sets[1]\r\n const iconName =\r\n iconSet === 'icon' ? `${iconSet}-${name}` : `${iconSet}-icon-${name}`\r\n\r\n return setName === iconSet && fullName === iconName\r\n })\r\n}\r\n\r\nexport default getSymbol\r\n","import add from './add'\r\nimport getSymbols from './getSymbols'\r\n\r\n/**\r\n * 绘制 SVG 图标集\r\n * ========================================================================\r\n * @method paint\r\n * @param {String|Array} symbol\r\n */\r\nconst paint = (symbol = '') => {\r\n const $body = document.body\r\n let $icons = document.querySelector('#outline-icons')\r\n let symbols = []\r\n\r\n add(symbol)\r\n symbols = getSymbols()\r\n\r\n if ($icons) {\r\n $icons.innerHTML = symbols.join('')\r\n } else {\r\n $icons = document.createElement('div')\r\n $icons.innerHTML =\r\n ``\r\n $body.insertBefore($icons.firstChild, $body.firstChild)\r\n }\r\n}\r\n\r\nexport default paint\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method add\r\n * @param {Array|String} symbols\r\n * @return {Boolean}\r\n */\r\nconst add = (symbols) => {\r\n if (!symbols) {\r\n return false\r\n }\r\n\r\n if (isArray(symbols) && symbols.length > 0) {\r\n symbols.forEach((symbol) => {\r\n /* istanbul ignore else */\r\n if (SYMBOLS.indexOf(symbol) === -1 && isString(symbol)) {\r\n SYMBOLS.push(symbol)\r\n }\r\n })\r\n } else {\r\n /* istanbul ignore else */\r\n if (isString(symbols)) {\r\n SYMBOLS.push(symbols)\r\n }\r\n }\r\n}\r\n\r\nexport default add\r\n","/**\r\n * 获取 options 节点下匹配 selector 选择器的 DOM 节点\r\n * ========================================================================\r\n * Element.matches() 方法可以用来判断 DOM 元素是否与给定的选择器匹配,事件代理判断是\r\n * 否触发绑定的代理事件回调函数,关键就是使用 Element.matches() 辨别当前事件触发的目\r\n * 标 DOM 元素是否为事件代理所期望触发的目标。\r\n * ========================================================================\r\n * @method matches\r\n * @see https://developer.mozilla.org/en-US/docs/web/api/element/matches\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)匹配 DOM 元素的选择器\r\n * @returns {Boolean}\r\n */\r\nconst matches = (el, selector = '') => {\r\n const sel = selector.replace(/^>/i, '')\r\n\r\n if (!selector || !sel || !el) {\r\n return false\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el.matches) {\r\n return el.matches(sel)\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(sel)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport default matches\r\n","/**\r\n * 获取 DOM 元素的父节点\r\n * ========================================================================\r\n * @method getParentOrHost\r\n * @param {*|HTMLElement} el - (必须)要获取父节点的 DOM 元素\r\n * @returns {*|HTMLElement}\r\n */\r\nconst getParentOrHost = (el) => {\r\n return el.host && el !== document && el.host.nodeType\r\n ? el.host\r\n : el.parentNode\r\n}\r\n\r\nexport default getParentOrHost\r\n","import closest from '../dom/closest'\r\nimport off from './off'\r\nimport getTarget from './getTarget'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定代理事件\r\n * ========================================================================\r\n * @method on\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String} selector - (必须)事件代理目标 DOM 元素的选择器\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (可选) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst on = (el, selector, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n const listener = function (evt) {\r\n const target = getTarget(evt)\r\n // 通过 Element.matches 方法获得点击的目标元素\r\n const delegateTarget = closest(target, selector, el)\r\n let overrideContext = context || el\r\n\r\n evt.delegateTarget = delegateTarget\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (delegateTarget) {\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n }\r\n\r\n if (!el) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n selector,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default on\r\n","import resolveTextNode from '../dom/resolveTextNode'\r\n\r\n/**\r\n * 返回触发事件的 target DOM 元素\r\n * ========================================================================\r\n * @method getTarget\r\n * @param {Event} evt - Event 对象\r\n * @return {HTMLElement} - Event 对象的 target DOM 元素\r\n */\r\nconst getTarget = function (evt) {\r\n const target = evt.target\r\n\r\n return resolveTextNode(target)\r\n}\r\n\r\nexport default getTarget\r\n","/**\r\n * 在某些情况下,某些浏览器(例如:Safari 浏览器)会返回实际的目标元素内部的文本节点。\r\n * resolveTextNode() 方法则会返回实际的目标节点。\r\n * ========================================================================\r\n * @method resolveTextNode\r\n * @param {HTMLElement|Text} el - 要解析的节点\r\n * @return {*|HTMLElement} - 实际的目标 DOM 节点\r\n */\r\nconst resolveTextNode = function (el) {\r\n if (el && el.nodeType === 3) {\r\n return el.parentNode\r\n }\r\n\r\n return el\r\n}\r\n\r\nexport default resolveTextNode\r\n","import matches from './matches'\r\nimport getParentOrHost from './getParentOrHost'\r\n\r\n/**\r\n * 获取 options 元素父元素最近的包含 selector 选择器的元素\r\n * ========================================================================\r\n * @method closest\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)DOM 元素的选择其\r\n * @param {HTMLElement} [ctx] - (必须)比对的 DOM 元素\r\n * @param {Boolean} [includeCTX] - (必须)是否包含 context DOM 元素\r\n * @returns {null|HTMLElement} - 返回最接近的 DOM 元素\r\n */\r\nconst closest = (el, selector, ctx, includeCTX) => {\r\n const context = ctx || document\r\n\r\n if (!el) {\r\n return null\r\n }\r\n\r\n do {\r\n /* istanbul ignore else */\r\n if (\r\n (selector != null &&\r\n (selector.startsWith('>')\r\n ? el.parentNode === context && matches(el, selector)\r\n : matches(el, selector))) ||\r\n (includeCTX && el === context)\r\n ) {\r\n return el\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el === context) {\r\n break\r\n }\r\n\r\n /* jshint boss:true */\r\n } while ((el = getParentOrHost(el)))\r\n}\r\n\r\nexport default closest\r\n","import isString from './utils/types/isString'\r\nimport isPlainObject from './utils/types/isPlainObject'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport extend from './utils/lang/extend'\r\nimport later from './utils/lang/later'\r\nimport stripScripts from './utils/lang/stripScripts'\r\nimport encodeHTML from './utils/lang/encodeHTML'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport guid from './utils/lang/guid'\r\n\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport setAttribute from './utils/dom/setAttribute'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\nimport paint from './utils/icons/paint'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\n\r\nconst TYPES = ['info', 'success', 'warning', 'error']\r\nconst instances = []\r\nlet instance\r\n\r\npaint()\r\n\r\nclass Message extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Message.DEFAULTS)\r\n\r\n this.$el = null\r\n this.id = ''\r\n this.closed = false\r\n this.visible = false\r\n this.offset = -50\r\n this.timer = null\r\n this.destroyed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options)\r\n this.id = this.attr('id')\r\n this.offset = this.attr('offset') || -50\r\n\r\n this.$emit('created', { ...this.attr() })\r\n\r\n this.render().addListeners()\r\n\r\n if (this.attr('visible')) {\r\n this.open()\r\n }\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isDestroyed() {\r\n return this.destroyed\r\n }\r\n\r\n _getClassName() {\r\n const type = this.attr('type')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const visible = this.attr('visible')\r\n const customClass = this.attr('customClass')\r\n const className = [\r\n 'outline-message',\r\n `outline-message_${type}`,\r\n `outline-message_${effect}`\r\n ]\r\n\r\n if (round) {\r\n className.push('outline-message_round')\r\n }\r\n\r\n if (!closable) {\r\n className.push('outline-message_full-width')\r\n }\r\n\r\n if (visible) {\r\n className.push('outline-message_visible')\r\n }\r\n\r\n if (customClass) {\r\n className.push(customClass)\r\n }\r\n\r\n return className\r\n }\r\n\r\n render() {\r\n const type = this.attr('type')\r\n const message = this.attr('message')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n const className = this._getClassName()\r\n const iconName = effect === 'light' ? `circle-${type}` : type\r\n const children = []\r\n let iconSize = 20\r\n let $type\r\n let $message\r\n let $text\r\n let $close\r\n let $el\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n\r\n if (effect !== 'plain') {\r\n $type = icon(iconName, {\r\n iconSet: 'outline',\r\n size: iconSize\r\n })\r\n addClass($type, 'outline-message__icon')\r\n children.push($type)\r\n }\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n $text = document.createTextNode(encodeHTML(stripScripts(message)))\r\n } else {\r\n $text = document.createDocumentFragment()\r\n $text.innerHTML = message\r\n }\r\n $message = createElement(\r\n 'p',\r\n {\r\n className: 'outline-message__content'\r\n },\r\n [$text]\r\n )\r\n children.push($message)\r\n\r\n if (closable) {\r\n $close = icon('close', {\r\n iconSet: 'outline',\r\n size: 18\r\n })\r\n addClass($close, 'outline-message__close')\r\n children.push($close)\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: className.join(' ')\r\n },\r\n children\r\n )\r\n $el.style.cssText = `top:-50px;`\r\n this.$el = $el\r\n document.body.appendChild(this.$el)\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n _refreshIcon() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let iconSize = 20\r\n let type\r\n let effect\r\n let round\r\n let iconName\r\n let $icon\r\n let $svg\r\n let $use\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $icon = $el.querySelector('.outline-icon')\r\n\r\n if (!$icon) {\r\n return this\r\n }\r\n\r\n type = this.attr('type')\r\n effect = this.attr('effect')\r\n round = this.attr('round')\r\n\r\n if (effect === 'plain') {\r\n addClass($icon, HIDDEN)\r\n } else {\r\n removeClass($icon, HIDDEN)\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n }\r\n\r\n $svg = $icon.querySelector('.outline-icon__svg')\r\n setAttributes($svg, {\r\n style: `width:${iconSize}px;height:${iconSize}px;`\r\n })\r\n\r\n $use = $svg.querySelector('use')\r\n iconName = effect === 'light' ? `circle-${type}` : type\r\n setAttribute($use, 'xlink:href', `#outline-icon-${iconName}`)\r\n\r\n return this\r\n }\r\n\r\n _refreshMessage() {\r\n const $el = this.$el\r\n let $message\r\n let dangerouslyUseHTMLString\r\n let message\r\n let text\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $message = $el.querySelector('.outline-message__content')\r\n dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n message = this.attr('message')\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n text = encodeHTML(stripScripts(message))\r\n } else {\r\n text = message\r\n }\r\n\r\n $message.innerHTML = text\r\n\r\n return this\r\n }\r\n\r\n _refreshClose() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let $close\r\n let closable\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $close = $el.querySelector('.outline-message__close')\r\n closable = this.attr('closable')\r\n\r\n if ($close) {\r\n if (closable) {\r\n addClass($close, HIDDEN)\r\n } else {\r\n removeClass($close, HIDDEN)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n _refreshEl() {\r\n const $el = this.$el\r\n let className\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n className = this._getClassName()\r\n setAttribute($el, 'className', className.join(' '))\r\n\r\n return this\r\n }\r\n\r\n refresh(options) {\r\n if (!isPlainObject(options)) {\r\n return this\r\n }\r\n\r\n this.attr(options)\r\n ._refreshIcon()\r\n ._refreshMessage()\r\n ._refreshClose()\r\n ._refreshEl()\r\n\r\n return this\r\n }\r\n\r\n clearTimer() {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n this.timer = null\r\n }\r\n\r\n return this\r\n }\r\n\r\n startTimer(duration) {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.timer = later(() => {\r\n this.$emit('opened')\r\n this.close()\r\n }, duration * 1000)\r\n\r\n return this\r\n }\r\n\r\n open(options) {\r\n const $el = this.$el\r\n let offset\r\n let duration\r\n let top\r\n let cssRules\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.isClosed()) {\r\n this.refresh(options)\r\n }\r\n\r\n offset = this.attr('offset')\r\n duration = this.attr('duration')\r\n top = offset && offset >= this.offset ? offset : this.offset\r\n cssRules = `top:${top}px;`\r\n\r\n this.clearTimer()\r\n\r\n this.$emit('beforeOpen')\r\n\r\n later(() => {\r\n this.visible = true\r\n\r\n addClass($el, 'outline-message_visible')\r\n $el.style.cssText = cssRules\r\n\r\n if (duration > 0) {\r\n this.startTimer(duration)\r\n }\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const $el = this.$el\r\n const cssRules = `top:-50px;`\r\n let destroyAfterClosed\r\n let beforeClose\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n destroyAfterClosed = this.attr('destroyAfterClosed')\r\n beforeClose = this.attr('beforeClose')\r\n\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(this)\r\n }\r\n\r\n $el.style.cssText = cssRules\r\n removeClass($el, 'outline-message_visible')\r\n\r\n this.visible = false\r\n this.closed = true\r\n\r\n later(() => {\r\n this.$emit('closed')\r\n\r\n if (destroyAfterClosed) {\r\n this.destroy()\r\n }\r\n }, 500)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.removeListeners()\r\n\r\n document.body.removeChild(this.$el)\r\n\r\n clearTimeout(this.timer)\r\n this._default()\r\n\r\n this.$emit('afterDestroy')\r\n\r\n return this\r\n }\r\n\r\n onMouseEnter() {\r\n this.clearTimer()\r\n return this\r\n }\r\n\r\n onMouseLeave() {\r\n const duration = this.attr('duration')\r\n const delay = this.attr('delay')\r\n\r\n if (duration <= 0) {\r\n return this\r\n }\r\n\r\n this.startTimer(delay)\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.clearTimer()\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseenter',\r\n this.onMouseEnter,\r\n this,\r\n true\r\n )\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseleave',\r\n this.onMouseLeave,\r\n this,\r\n true\r\n )\r\n on($el, '.outline-message__close', 'click', this.onClose, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $el = this.$el\r\n\r\n off($el, 'mouseenter', this.onMouseEnter)\r\n off($el, 'mouseleave', this.onMouseLeave)\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nMessage.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n id: '',\r\n type: 'info',\r\n effect: 'default',\r\n round: false,\r\n offset: 30,\r\n duration: 3,\r\n delay: 2,\r\n message: '',\r\n customClass: '',\r\n closable: true,\r\n visible: true,\r\n dangerouslyUseHTMLString: false,\r\n destroyAfterClosed: true,\r\n beforeClose: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nTYPES.forEach((type) => {\r\n Message[type] = (options) => {\r\n const config = {}\r\n const id = guid(`outline-message-`)\r\n const beforeClose = options.beforeClose || null\r\n let offset = options.offset || 30\r\n\r\n if (isString(options)) {\r\n config.message = options\r\n } else {\r\n if (isPlainObject(options)) {\r\n extend(config, options)\r\n }\r\n }\r\n config.id = id\r\n config.type = type\r\n config.offset = offset\r\n config.visible = false\r\n config.beforeClose = () => {\r\n Message.close(id, beforeClose)\r\n }\r\n\r\n instance = new Message(config)\r\n instances.forEach((item) => {\r\n offset += item.$el.offsetHeight + 16\r\n })\r\n instance.offset = offset\r\n instance.open()\r\n instances.push(instance)\r\n\r\n return instance\r\n }\r\n})\r\n\r\n// 关闭指定 id 消息的静态方法\r\nMessage.close = (id, beforeClose) => {\r\n const len = instances.length\r\n let index = -1\r\n let i\r\n let offsetHeight\r\n\r\n instances.forEach((instance, i) => {\r\n // 在 instances 中通过 id 找到要关闭的消息\r\n if (id === instance.id) {\r\n offsetHeight = instance.$el.offsetHeight\r\n index = i\r\n\r\n // 关闭消息\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(instance)\r\n }\r\n\r\n instances.splice(i, 1)\r\n }\r\n })\r\n\r\n if (len <= 1 || index === -1 || index > instances.length - 1) {\r\n return false\r\n }\r\n\r\n i = index\r\n\r\n // 界面中的消息逐个向上收起\r\n for (; i < len - 1; i += 1) {\r\n const dom = instances[i].$el\r\n\r\n dom.style['top'] = parseInt(dom.style['top'], 10) - offsetHeight - 16 + 'px'\r\n }\r\n}\r\n\r\n// 关闭所有消息的静态方法\r\nMessage.clear = () => {\r\n let i = instances.length - 1\r\n for (; i >= 0; i -= 1) {\r\n instances[i].close()\r\n }\r\n}\r\n\r\nexport default Message\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Command {\r\n constructor(name, action) {\r\n this.name = name\r\n\r\n if (isFunction(action)) {\r\n this.action = action\r\n }\r\n }\r\n\r\n execute() {\r\n this.action()\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Command\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Commands {\r\n constructor() {\r\n this.commands = []\r\n }\r\n\r\n get(name) {\r\n return this.commands.find((cmd) => cmd.name === name)\r\n }\r\n\r\n add(command) {\r\n this.commands.push(command)\r\n\r\n return this\r\n }\r\n\r\n del(name) {\r\n const commands = this.commands\r\n const command = commands.find((cmd) => cmd.name === name)\r\n const index = command ? commands.indexOf(command) : -1\r\n\r\n if (index > -1) {\r\n commands.splice(index, 1)\r\n }\r\n\r\n return this\r\n }\r\n\r\n clear() {\r\n this.commands = []\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n const command = this.commands.find((cmd) => cmd.name === name)\r\n\r\n if (isFunction(command?.execute)) {\r\n command.execute()\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Commands\r\n","import icon from './utils/icons/icon'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\n\r\nconst _createButton = (button, rounded = true) => {\r\n const $icon = icon(button.icon, {\r\n iconSet: button.iconSet || 'outline',\r\n color: button.color || '',\r\n size: button.size\r\n })\r\n const $anchor = createElement(\r\n 'a',\r\n {\r\n className: `outline-toolbar__anchor`,\r\n href: button.link\r\n },\r\n $icon\r\n )\r\n const $button = createElement(\r\n 'div',\r\n {\r\n className: `outline-toolbar__button ${button.name}`,\r\n 'data-cmd': button.name\r\n },\r\n [button.link ? $anchor : $icon]\r\n )\r\n\r\n addClass($icon, 'outline-toolbar__icon')\r\n\r\n if (rounded) {\r\n addClass($button, 'outline-toolbar_rounded')\r\n }\r\n\r\n if (button.disabled) {\r\n addClass($button, 'outline-toolbar_disabled')\r\n }\r\n\r\n return $button\r\n}\r\n\r\nexport default _createButton\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isObject from './utils/types/isObject'\r\nimport isArray from './utils/types/isArray'\r\nimport later from './utils/lang/later'\r\nimport guid from './utils/lang/guid'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport hasClass from './utils/dom/hasClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport Base from './base'\r\nimport Command from './command'\r\nimport Commands from './commands'\r\n\r\nimport _createButton from './_createButton'\r\n\r\nconst DISABLED = 'outline-toolbar_disabled'\r\nconst HIDDEN = 'outline-toolbar_hidden'\r\n\r\nclass Toolbar extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Toolbar.DEFAULTS)\r\n\r\n this.disabled = false\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.buttons = []\r\n this.commands = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.disabled = this.attr('disabled')\r\n this.closed = this.attr('closed')\r\n this.commands = new Commands()\r\n\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n isDisabled(name) {\r\n let button\r\n\r\n if (name) {\r\n button = this.get(name)\r\n\r\n return button.disabled\r\n }\r\n\r\n return this.disabled\r\n }\r\n\r\n isExist(name) {\r\n const button = this.get(name)\r\n return !!button\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n _getCommand(button) {\r\n const _self = this\r\n const { action, name } = button\r\n let command = null\r\n let handler = null\r\n let context\r\n let listener\r\n\r\n if (!action) {\r\n return command\r\n }\r\n\r\n handler = action.handler\r\n context = action.context || this\r\n\r\n if (isFunction(handler)) {\r\n listener = handler\r\n } else if (isString(handler)) {\r\n listener = function () {\r\n _self.$emit(handler, name)\r\n }\r\n }\r\n\r\n if (isFunction(listener)) {\r\n command = new Command(name, listener.bind(context))\r\n }\r\n\r\n return command\r\n }\r\n\r\n get(name) {\r\n return this.buttons.find((button) => button.name === name)\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const buttons = this.attr('buttons') || []\r\n const placement = this.attr('placement')\r\n\r\n paint()\r\n\r\n this.$el = createElement('div', {\r\n id: guid('outline-toolbar'),\r\n className: `outline-toolbar outline-toolbar_${placement}`\r\n })\r\n this._paint(buttons)\r\n document.body.appendChild(this.$el)\r\n\r\n if (this.closed) {\r\n this.hide()\r\n }\r\n\r\n if (this.disabled) {\r\n this.disable()\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$el.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(buttons) {\r\n const rounded = this.attr('rounded')\r\n const $fragment = document.createDocumentFragment()\r\n\r\n buttons.forEach((button) => {\r\n const $button = _createButton(button, rounded)\r\n const command = this._getCommand(button)\r\n const { name, disabled, context } = button\r\n\r\n $fragment.appendChild($button)\r\n\r\n if (!this.isExist(name)) {\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n })\r\n\r\n this.$el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(buttons) {\r\n this.attr({ buttons })\r\n this.erase()._paint(buttons)\r\n return this\r\n }\r\n\r\n add(button) {\r\n const $el = this.$el\r\n const $fragment = document.createDocumentFragment()\r\n const buttons = this.attr('buttons') || []\r\n const { name, disabled, context } = button\r\n const command = this._getCommand(button)\r\n const _add = (button) => {\r\n const $button = _createButton(button)\r\n\r\n $fragment.appendChild($button)\r\n\r\n buttons.push(button)\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this,\r\n command\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n\r\n if (isObject(button)) {\r\n _add(button)\r\n } else if (isArray(button)) {\r\n button.forEach((item) => {\r\n if (isObject(item)) {\r\n _add(item)\r\n }\r\n })\r\n }\r\n $el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n remove(name) {\r\n const $el = this.$el\r\n const buttons = this.buttons\r\n const button = this.get(name)\r\n let index = -1\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n index = buttons.indexOf(button)\r\n\r\n if (index > -1) {\r\n buttons.splice(index, 1)\r\n this.attrs('buttons').splice(index, 1)\r\n }\r\n\r\n this._disable(name)\r\n $el.removeChild(button.$el)\r\n\r\n return this\r\n }\r\n\r\n _disable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = true\r\n\r\n if (command) {\r\n this.commands.del(command)\r\n }\r\n\r\n addClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n _enable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || !button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = false\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n\r\n removeClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n disable(name) {\r\n const disabled = this.attr('afterDisabled')\r\n\r\n if (name) {\r\n this._disable(name)\r\n } else {\r\n addClass(this.$el, DISABLED)\r\n this.removeListeners()\r\n this.disabled = true\r\n\r\n if (isFunction(disabled)) {\r\n disabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n enable(name) {\r\n const enabled = this.attr('afterEnabled')\r\n\r\n if (name) {\r\n this._enable(name)\r\n } else {\r\n this.disabled = false\r\n removeClass(this.$el, DISABLED)\r\n this.addListeners()\r\n\r\n if (isFunction(enabled)) {\r\n enabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n show(name) {\r\n const opened = this.attr('afterOpened')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n removeClass(button.$el, HIDDEN)\r\n } else {\r\n removeClass($el, HIDDEN)\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n later(() => {\r\n opened.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide(name) {\r\n const closed = this.attr('afterClosed')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n addClass(button.$el, HIDDEN)\r\n } else {\r\n addClass($el, HIDDEN)\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n later(() => {\r\n closed.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n highlight(name) {\r\n const button = this.get(name)\r\n const ACTIVE = 'outline-toolbar_active'\r\n let $button\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n $button = button.$el\r\n\r\n if (hasClass($button, ACTIVE)) {\r\n removeClass($button, ACTIVE)\r\n } else {\r\n addClass($button, ACTIVE)\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.commands.clear()\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n if (this.isDisabled(name)) {\r\n return this\r\n }\r\n\r\n this.commands.execute(name)\r\n\r\n return this\r\n }\r\n\r\n onExecute(evt) {\r\n const $button = evt.delegateTarget\r\n let cmd = ''\r\n\r\n if ($button) {\r\n cmd = $button.getAttribute('data-cmd')\r\n\r\n if (cmd) {\r\n this.execute(cmd)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n on($el, `.outline-toolbar__button`, 'click', this.onExecute, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n off($el, '.outline-toolbar__button', this.onExecute)\r\n\r\n return this\r\n }\r\n}\r\n\r\nToolbar.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'ltr',\r\n closed: false,\r\n disabled: false,\r\n rounded: true,\r\n buttons: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterDisabled: null,\r\n afterEnabled: null,\r\n beforeDestroy: null,\r\n afterDestroy: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Toolbar\r\n","import addClass from './utils/dom/addClass'\r\n\r\nconst _updateSiblingElements = (siblingElement, isPrev) => {\r\n let tagName\r\n let $sibling = siblingElement\r\n\r\n while ($sibling) {\r\n tagName = $sibling.tagName.toLowerCase()\r\n\r\n if (tagName !== 'script' && tagName !== 'style') {\r\n addClass($sibling, 'outline-reader_sibling')\r\n }\r\n\r\n if (isPrev) {\r\n $sibling = $sibling.previousElementSibling\r\n } else {\r\n $sibling = $sibling.nextElementSibling\r\n }\r\n }\r\n}\r\n\r\nexport default _updateSiblingElements\r\n","import cloneDeep from './utils/lang/cloneDeep'\r\nimport later from './utils/lang/later'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport isFunction from './utils/types/isFunction'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport at from './utils/event/at'\r\nimport stop from './utils/event/stop'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\nimport Message from './message'\r\nimport Toolbar from './toolbar'\r\n\r\nimport _updateSiblingElements from './_updateSiblingElements'\r\n\r\nconst ENTER_READING_TIP = '进入阅读模式,按 ESC 键可退出阅读模式'\r\n\r\nclass Reader extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Reader.DEFAULTS)\r\n this.reading = false\r\n\r\n this.$target = null\r\n this.$paper = null\r\n this.$title = null\r\n this.$article = null\r\n this.$progress = null\r\n\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let target = null\r\n\r\n this.attr(options)\r\n\r\n target = this.attr('target')\r\n\r\n if (isString(target)) {\r\n this.$target = document.querySelector(target)\r\n } else if (isElement(target)) {\r\n this.$target = target\r\n }\r\n\r\n if (!this.$target) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n this._renderEdge()._paint(this.$target)\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$article.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint($content) {\r\n const $fragment = document.createDocumentFragment()\r\n const $children = [...$content.cloneNode(true).children]\r\n\r\n later(() => {\r\n $children.forEach(($child) => {\r\n $fragment.appendChild($child)\r\n })\r\n\r\n this.$article.appendChild($fragment)\r\n })\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const $paper = this.$paper\r\n const toolbar = this.toolbar\r\n\r\n if ($paper) {\r\n document.body.removeChild($paper)\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n this.erase()._paint(this.$target)\r\n return this\r\n }\r\n\r\n _renderEdge() {\r\n const $target = this.$target\r\n let title = this.attr('title')\r\n let $paper\r\n let $title\r\n let $article\r\n let $progress\r\n let $sibling\r\n\r\n $title = $target.querySelector('h1')\r\n\r\n if (isElement(title)) {\r\n $title = title\r\n }\r\n\r\n if (isElement($title)) {\r\n title = $title.innerText\r\n }\r\n\r\n $title = createElement(\r\n 'h1',\r\n {\r\n className: 'outline-reader__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n\r\n $article = createElement('article', {\r\n id: 'outline-reader__article',\r\n className: 'outline-reader__article'\r\n })\r\n this.$article = $article\r\n\r\n $progress = createElement('div', {\r\n className: 'outline-reader__progress'\r\n })\r\n this.$progress = $progress\r\n\r\n this.toolbar = new Toolbar({\r\n placement: 'rtl',\r\n buttons: [\r\n {\r\n name: 'exit',\r\n icon: 'close',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.exit\r\n }\r\n }\r\n ]\r\n })\r\n\r\n $paper = createElement(\r\n 'section',\r\n {\r\n id: 'outline-reader',\r\n className: 'outline-reader outline-reader_hidden'\r\n },\r\n [$progress, $title, $article, this.toolbar.$el]\r\n )\r\n this.$paper = $paper\r\n\r\n document.body.appendChild($paper)\r\n\r\n later(() => {\r\n // 设置邻居节点的打印样式\r\n $sibling = $paper.previousElementSibling\r\n _updateSiblingElements($sibling, true)\r\n\r\n $sibling = $paper.nextElementSibling\r\n _updateSiblingElements($sibling)\r\n })\r\n\r\n return this\r\n }\r\n\r\n enter() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n const enterReadingTip = this.attr('enterReadingTip') || ENTER_READING_TIP\r\n\r\n if (this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n $siblings.forEach(($sibling) => {\r\n addClass($sibling, HIDDEN)\r\n })\r\n addClass($paper, READING)\r\n removeClass($paper, HIDDEN)\r\n this.toolbar.show()\r\n this.reading = true\r\n\r\n Message.info({\r\n round: true,\r\n message: enterReadingTip\r\n })\r\n\r\n this.$emit('enterReading')\r\n\r\n return this\r\n }\r\n\r\n exit() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n\r\n if (!this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n addClass($paper, HIDDEN)\r\n removeClass($paper, READING)\r\n $siblings.forEach(($sibling) => {\r\n removeClass($sibling, HIDDEN)\r\n })\r\n this.toolbar.hide()\r\n this.reading = false\r\n\r\n this.$emit('exitReading')\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.reading) {\r\n this.exit()\r\n } else {\r\n this.enter()\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n if (!isFunction(print)) {\r\n return this\r\n }\r\n\r\n print()\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n return this\r\n }\r\n\r\n onPrint() {\r\n this.print()\r\n return this\r\n }\r\n\r\n onEnterReading() {\r\n this.toggle()\r\n return this\r\n }\r\n\r\n onExitReading(evt) {\r\n const keyCode = evt.keyCode\r\n\r\n if (keyCode === 27 && this.reading) {\r\n this.toggle()\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n at(document, 'keyup', this.onExitReading, this, true)\r\n\r\n this.$on('toolbar:action:print', this.onPrint)\r\n this.$on('toolbar:action:reading', this.onEnterReading)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n off(document, 'keyup', this.onExitReading)\r\n\r\n this.$off('toolbar:action:print')\r\n this.$off('toolbar:action:reading')\r\n\r\n return this\r\n }\r\n}\r\n\r\nReader.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n target: '',\r\n title: '',\r\n enterReadingTip: ENTER_READING_TIP\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Reader\r\n","/**\r\n * 停止事件(阻止默认行为和阻止事件的捕获或冒泡)\r\n * ========================================================================\r\n * @method stop\r\n * @param {Event} evt - 事件对象\r\n *\r\n * @example\r\n *
\r\n * Service\r\n * Help\r\n *
\r\n *\r\n * const $nav = document.querySelector('#nav')\r\n * const $service = document.querySelector('.anchor')\r\n *\r\n * on($nav, 'click', function(evt) {\r\n * console.log('你点击了导航栏')\r\n * })\r\n *\r\n * on($anchor, 'click', function(evt) {\r\n * console.log('tagName', this.tagName)\r\n *\r\n * // 工作台输出:'a'\r\n * // 不会触发事件冒泡,输出:'你点击了导航栏'\r\n * // 也不会切换到 href 属性的页面,阻止了点击链接的默认行为\r\n * stopEvent(evt)\r\n * })\r\n */\r\nconst stop = function (evt) {\r\n evt.stopPropagation()\r\n evt.preventDefault()\r\n}\r\n\r\nexport default stop\r\n","import isFunction from '../types/isFunction'\r\nimport off from './off'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定事件\r\n * ========================================================================\r\n * @method at\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (必须) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst at = (el, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n const listener = function (evt) {\r\n let overrideContext = context || el\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default at\r\n"],"names":["toString","val","Object","prototype","apply","isFunction","isObject","o","isArray","Array","cloneDeep","obj","clone","from","assign","keys","forEach","key","later","fn","delay","arguments","length","undefined","setTimeout","isString","str","isElement","nodeName","tagName","nodeType","isDOM","el","isHTMLCollection","fragment","isTextNode","hasOwn","prop","hasOwnProperty","call","setAttribute","attr","value","toLowerCase","style","cssText","className","innerHTML","innerText","setAttributes","attrs","createElement","children","$fragment","document","createDocumentFragment","$el","isValidChild","child","append","$child","createTextNode","appendChild","every","hasClass","pattern","RegExp","allClass","classList","contains","exec","addClass","_classList","add","removeClass","remove","replace","CAPTURE_EVENTS","_off","type","capture","indexOf","_delegateListener","listeners","_listeners","index","listener","i","handler","splice","_delete","removeEventListener","purgeElement","recurse","$element","querySelector","$children","childNodes","getListeners","filter","off","extend","origin","source","_subscribers","_hasDirectSubscribersFor","topic","has","found","position","lastIndexOf","substring","_hasSubscribers","emit","data","async","execute","subscriber","message","callback","context","deliver","guid","uuid","prefix","_removeSubscriber","token","subject","execution","j","_removeSubscriberByToken","Base","constructor","options","this","initialize","render","addListeners","refresh","destroy","removeListeners","reload","$emit","event","publish","$on","push","subscribe","$off","unsubscribe","isPlainObject","getPrototypeOf","proto","isObjectLike","stripScripts","encodeHTML","CHARTS","tag","name","ICON","size","color","iconSet","width","height","defaultRules","cssRules","$icon","$svg","binds","svg","test","isSVG","xmlns","class","icon","SYMBOLS","getSymbols","patternName","patternSet","find","symbol","fullName","getSymbol","paint","$body","body","$icons","symbols","join","insertBefore","firstChild","matches","selector","sel","msMatchesSelector","getParentOrHost","host","parentNode","on","once","evt","target","getTarget","delegateTarget","closest","ctx","includeCTX","startsWith","overrideContext","addEventListener","instances","instance","Message","super","_default","DEFAULTS","id","closed","visible","offset","timer","destroyed","open","isClosed","isDestroyed","_getClassName","effect","round","closable","customClass","dangerouslyUseHTMLString","$type","$message","$text","$close","iconSize","_refreshIcon","HIDDEN","iconName","$use","_refreshMessage","text","_refreshClose","_refreshEl","clearTimer","clearTimeout","startTimer","duration","close","top","destroyAfterClosed","beforeClose","removeChild","onMouseEnter","onMouseLeave","onClose","config","item","offsetHeight","len","dom","parseInt","clear","Command","action","Commands","commands","get","cmd","command","del","_createButton","button","rounded","$anchor","href","link","$button","disabled","DISABLED","Toolbar","buttons","created","isDisabled","isExist","_getCommand","_self","bind","mounted","placement","_paint","hide","disable","erase","_remove","_add","_disable","_enable","enable","enabled","show","opened","toggle","highlight","ACTIVE","beforeDestroy","afterDestroy","onExecute","getAttribute","afterClosed","afterOpened","afterDisabled","afterEnabled","_updateSiblingElements","siblingElement","isPrev","$sibling","previousElementSibling","nextElementSibling","ENTER_READING_TIP","Reader","reading","$target","$paper","$title","$article","$progress","toolbar","_renderEdge","$content","cloneNode","title","exit","enter","READER","READING","$siblings","querySelectorAll","enterReadingTip","info","print","onPrint","onEnterReading","onExitReading","keyCode","stopPropagation","preventDefault","stop","at"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"reader.min.js","sources":["../../utils/lang/toString.js","../../utils/types/isFunction.js","../../utils/types/isObject.js","../../utils/types/isArray.js","../../utils/lang/cloneDeep.js","../../utils/lang/later.js","../../utils/types/isString.js","../../utils/types/isElement.js","../../utils/types/isDOM.js","../../utils/types/isHTMLCollection.js","../../utils/types/isFragment.js","../../utils/types/isTextNode.js","../../utils/lang/hasOwn.js","../../utils/dom/setAttribute.js","../../utils/dom/setAttributes.js","../../utils/dom/createElement.js","../../utils/dom/hasClass.js","../../utils/dom/addClass.js","../../utils/dom/removeClass.js","../../utils/lang/trim.js","../../utils/event/enum.js","../../utils/event/_off.js","../../utils/event/_delete.js","../../utils/event/purgeElement.js","../../utils/event/getListeners.js","../../utils/event/off.js","../../utils/lang/extend.js","../../utils/observer/_subscribers.js","../../utils/observer/_hasDirectSubscribersFor.js","../../utils/observer/has.js","../../utils/observer/_hasSubscribers.js","../../utils/observer/emit.js","../../utils/types/isTypedArray.js","../../utils/lang/guid.js","../../utils/observer/_removeSubscriber.js","../../utils/observer/off.js","../../utils/observer/_removeSubscriberByToken.js","../../base.js","../../utils/observer/on.js","../../utils/types/isObjectLike.js","../../utils/types/isPlainObject.js","../../utils/lang/stripScripts.js","../../utils/lang/encodeHTML.js","../../utils/icons/createElement.js","../../utils/types/isSVG.js","../../utils/icons/icon.js","../../utils/icons/symbols.js","../../utils/icons/defaults.js","../../utils/icons/getSymbols.js","../../utils/icons/getSymbol.js","../../utils/icons/paint.js","../../utils/icons/add.js","../../utils/dom/matches.js","../../utils/dom/getParentOrHost.js","../../utils/event/on.js","../../utils/event/getTarget.js","../../utils/dom/resolveTextNode.js","../../utils/dom/closest.js","../../message.js","../../command.js","../../commands.js","../../_createButton.js","../../toolbar.js","../../_updateSiblingElements.js","../../reader.js","../../utils/event/stop.js","../../utils/event/at.js"],"sourcesContent":["/**\r\n * Object 对象原型上的 toString 方法\r\n * ========================================================================\r\n * @method toString\r\n * @param {*} val\r\n * @returns {string}\r\n */\r\nconst toString = (val) => {\r\n return Object.prototype.toString.apply(val)\r\n}\r\n\r\nexport default toString\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测测试数据是否为 Function 类型\r\n * ========================================================================\r\n * @method isFunction\r\n * @param {*} val - (必须)待检测的数据\r\n * @returns {boolean} 'val' 是 Function 类型返回 true,否则返回 false\r\n */\r\nconst isFunction = (val) => {\r\n return typeof val === 'function' || toString(val) === '[object Function]'\r\n}\r\n\r\nexport default isFunction\r\n","import toString from '../lang/toString'\r\nimport isFunction from './isFunction'\r\n\r\n/**\r\n * 检测数据是否为 Object 类型\r\n * ========================================================================\r\n * @method isObject\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isObject = (o) => {\r\n return (\r\n (toString(o) === '[object Object]' ||\r\n typeof o === 'object' ||\r\n isFunction(o)) &&\r\n o !== null\r\n )\r\n}\r\n\r\nexport default isObject\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测数据是否为 Array 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isArray = (o) => {\r\n if (Array.isArray) {\r\n return Array.isArray(o)\r\n } else {\r\n return toString(o) === '[object Array]'\r\n }\r\n}\r\n\r\nexport default isArray\r\n","import isObject from '../types/isObject'\r\nimport isArray from '../types/isArray'\r\n\r\n/**\r\n * 深拷贝对象函数\r\n * ========================================================================\r\n * @methods cloneDeep\r\n * @param {Object} obj - 深拷贝的对象\r\n * @returns {Array|Object|*}\r\n *\r\n * @example\r\n * const arr = cloneDeep([2,3,4,6])\r\n * => [2,3,4,6]\r\n */\r\nconst cloneDeep = (obj) => {\r\n let clone = {}\r\n\r\n if (obj === null) {\r\n return null\r\n }\r\n\r\n if (isArray(obj)) {\r\n clone = Array.from(obj)\r\n } else {\r\n clone = Object.assign({}, obj)\r\n Object.keys(clone).forEach((key) => {\r\n return (clone[key] = isObject(obj[key]) ? cloneDeep(obj[key]) : obj[key])\r\n })\r\n }\r\n\r\n return clone\r\n}\r\n\r\nexport default cloneDeep\r\n","import isFunction from '../types/isFunction'\r\n\r\n/**\r\n * later - 延迟执行方法\r\n * ========================================================================\r\n * @method later\r\n * @param {Function} fn\r\n * @param {Number} [delay]\r\n * @returns {number|boolean}\r\n */\r\nconst later = (fn, delay = 300) => {\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n return setTimeout(() => {\r\n fn()\r\n }, delay)\r\n}\r\n\r\nexport default later\r\n","/**\r\n * 检测数据是否为 String 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\nconst isString = (str) => {\r\n return typeof str === 'string'\r\n}\r\n\r\nexport default isString\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测数据是否为 HTMLElement DOM 节点\r\n * ========================================================================\r\n * @method isElement\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isElement = (o) => {\r\n return !!(isObject(o) && o.nodeName && o.tagName && o.nodeType === 1)\r\n}\r\n\r\nexport default isElement\r\n","import isObject from './isObject'\r\nimport isElement from './isElement'\r\nimport isHTMLCollection from './isHTMLCollection'\r\nimport isFragment from './isFragment'\r\nimport isTextNode from './isTextNode'\r\n\r\nconst isDOM = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (isElement(el) || isHTMLCollection(el) || isFragment(el) || isTextNode(el))\r\n )\r\n}\r\n\r\nexport default isDOM\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isHTMLCollection = (el) => {\r\n return !!(isObject(el) && toString(el) === '[object NodeList]')\r\n}\r\n\r\nexport default isHTMLCollection\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isFragment = (fragment) => {\r\n return !!(\r\n isObject(fragment) && toString(fragment) === '[object DocumentFragment]'\r\n )\r\n}\r\n\r\nexport default isFragment\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isTextNode = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (toString(el) === '[object Text]' || (el.tagName && el.nodeType === 3))\r\n )\r\n}\r\n\r\nexport default isTextNode\r\n","/**\r\n * 检测对象自身属性中是否具有指定的属性。\r\n * ========================================================================\r\n * @method hasOwn\r\n * @param {Object} obj - (必须)检测的目标对象\r\n * @param {String} prop - (必须)属性名\r\n * @returns {Boolean}\r\n */\r\nconst hasOwn = (obj, prop) => {\r\n const hasOwnProperty = Object.prototype.hasOwnProperty\r\n return obj && hasOwnProperty.call(obj, prop)\r\n}\r\n\r\nexport default hasOwn\r\n","/**\r\n * 给 DOM 节点设置属性/值\r\n * ========================================================================\r\n * @method setAttribute\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} attr - 属性名称\r\n * @param {String|Number|Boolean} value - 属性值\r\n */\r\nconst setAttribute = (el, attr, value) => {\r\n let tagName = el.tagName.toLowerCase()\r\n\r\n switch (attr) {\r\n case 'style':\r\n el.style.cssText = value\r\n break\r\n case 'value':\r\n if (tagName === 'input' || tagName === 'textarea') {\r\n el.value = value\r\n } else {\r\n el.setAttribute(attr, value)\r\n }\r\n break\r\n case 'htmlFor':\r\n el.setAttribute('for', value)\r\n break\r\n case 'className':\r\n el.className = value\r\n break\r\n case 'innerHTML':\r\n el.innerHTML = value\r\n break\r\n case 'innerText':\r\n el.innerText = value\r\n break\r\n default:\r\n el.setAttribute(attr, value)\r\n break\r\n }\r\n}\r\n\r\nexport default setAttribute\r\n","import isObject from '../types/isObject'\r\nimport hasOwn from '../lang/hasOwn'\r\nimport setAttribute from './setAttribute'\r\n\r\nconst setAttributes = (el, attrs) => {\r\n if (!el || !isObject(attrs)) {\r\n return false\r\n }\r\n\r\n Object.keys(attrs).forEach((attr) => {\r\n const value = attrs[attr]\r\n if (hasOwn(attrs, attr)) {\r\n setAttribute(el, attr, value)\r\n }\r\n })\r\n}\r\n\r\nexport default setAttributes\r\n","import isObject from '../types/isObject'\r\nimport isString from '../types/isString'\r\nimport isArray from '../types/isArray'\r\nimport isDOM from '../types/isDOM'\r\nimport setAttributes from './setAttributes'\r\n\r\n/**\r\n * 创建 DOM 节点,并添加属性和子节点\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} tagName - 标签名称\r\n * @param {Object|Array|HTMLElement|DocumentFragment|String} attrs - 属性对象或者子节点\r\n * @param {Array|HTMLElement|DocumentFragment|String} [children] - 子节点数组\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (tagName, attrs, children) => {\r\n const $fragment = document.createDocumentFragment()\r\n const $el = document.createElement(tagName)\r\n const isValidChild = (child) => {\r\n return isDOM(child) || isString(child)\r\n }\r\n const append = (child) => {\r\n let $child\r\n\r\n if (!isValidChild(child)) {\r\n return false\r\n }\r\n\r\n if (isDOM(child)) {\r\n $child = child\r\n } else if (isString(child)) {\r\n $child = document.createTextNode(child)\r\n }\r\n\r\n $fragment.appendChild($child)\r\n }\r\n\r\n if (isObject(attrs)) {\r\n setAttributes($el, attrs)\r\n } else if (isArray(attrs) && attrs.every((attr) => isValidChild(attr))) {\r\n attrs.forEach((child) => {\r\n append(child)\r\n })\r\n } else if (isDOM(attrs)) {\r\n append(attrs)\r\n } else if (isString(attrs)) {\r\n append(document.createTextNode(attrs))\r\n }\r\n\r\n if (isArray(children)) {\r\n children.forEach((child) => {\r\n append(child)\r\n })\r\n } else {\r\n append(children)\r\n }\r\n\r\n $el.appendChild($fragment)\r\n\r\n return $el\r\n}\r\n\r\nexport default createElement\r\n","import isElement from '../types/isElement'\r\n/**\r\n * 检测 DOM 节点是否包含名为 className 的样式\r\n * ========================================================================\r\n * @method hasClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst hasClass = (el, className) => {\r\n const pattern = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\r\n let allClass\r\n let classList\r\n\r\n if (!isElement(el)) {\r\n return false\r\n }\r\n\r\n allClass = el.className\r\n\r\n if (!allClass) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList && classList.contains) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!pattern.exec(allClass)\r\n}\r\n\r\nexport default hasClass\r\n","import hasClass from './hasClass'\r\n\r\n/**\r\n * 给 DOM 节点添加名为 className 的样式\r\n * ========================================================================\r\n * @method addClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst addClass = (el, className) => {\r\n let classList\r\n let allClass\r\n\r\n if (hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.add) {\r\n classList.add(className)\r\n } else {\r\n allClass = el.className\r\n allClass += allClass.length > 0 ? ' ' + className : className\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default addClass\r\n","import trim from '../lang/trim'\r\nimport hasClass from './hasClass'\r\n\r\n/**\r\n * 移除 DOM 节点的 className 样式\r\n * ========================================================================\r\n * @method removeClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst removeClass = (el, className) => {\r\n let allClass = el.className\r\n let classList\r\n\r\n if (!allClass || !hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.remove) {\r\n classList.remove(className)\r\n } else {\r\n allClass = trim(allClass.replace(className, ''))\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default removeClass\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 清楚字符串起始位置所有的空格\r\n * ========================================================================\r\n * @method trim\r\n * @param {string} str\r\n * @returns {string|Boolean}\r\n */\r\nconst trim = (str) => {\r\n if (!isString(str)) {\r\n return false\r\n }\r\n return str.replace(/(^\\s+)|(\\s+$)/g, '')\r\n}\r\n\r\nexport default trim\r\n","export const CAPTURE_EVENTS = [\r\n 'focusout',\r\n 'blur',\r\n 'focusin',\r\n 'focus',\r\n 'load',\r\n 'unload',\r\n 'mouseenter',\r\n 'mouseleave'\r\n]\r\n","import { CAPTURE_EVENTS } from './enum'\r\nimport _delete from './_delete'\r\n\r\n/**\r\n * (私有方法)取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method _off\r\n * @param {HTMLElement} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} fn - (必须)事件处理器回调函数\r\n * @private\r\n */\r\nconst _off = (el, type, fn) => {\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n /* istanbul ignore else */\r\n if (fn._delegateListener) {\r\n fn = fn._delegateListener\r\n delete fn._delegateListener\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n _delete(el, type, fn)\r\n\r\n el.removeEventListener(type, fn, capture)\r\n}\r\n\r\nexport default _off\r\n","/**\r\n * 删除 DOM 元素缓存的 _listeners 数据\r\n * ========================================================================\r\n * @method _delete\r\n * @param {HTMLElement} el - 要删除 listener 的 DOM 元素\r\n * @param {String} type - 事件类型(名称)\r\n * @param {Function} [fn] - 事件处理器回调函数\r\n */\r\nconst _delete = function (el, type, fn) {\r\n const listeners = el._listeners\r\n let index = -1\r\n\r\n if (listeners.length < 1) {\r\n return false\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n listeners.forEach((listener, i) => {\r\n const handler = listener.fn\r\n\r\n if (type === listener.type) {\r\n index = i\r\n\r\n if (handler === fn) {\r\n index = i\r\n }\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n}\r\n\r\nexport default _delete\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport getListeners from './getListeners'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 销毁(type 类型的)代理事件绑定\r\n * ========================================================================\r\n * 1. 设置了事件类型 type,则销毁指定类型的事件绑定,否则清除所有代理事件绑定\r\n * 2. recurse 设置为 true,递归销毁子节点全部事件绑定\r\n * ========================================================================\r\n * @method purgeElement\r\n * @param {HTMLElement|String} el - (必须)DOM 元素或者其选择器\r\n * @param {String|Boolean} type - (必须)事件类型\r\n * @param {Boolean} [recurse] - (可选)是否递归销毁子节点所有事件绑定\r\n */\r\nconst purgeElement = function (el, type, recurse = false) {\r\n const $element = isString(el) ? document.querySelector(el) : el\r\n const $children = $element.childNodes\r\n const listeners = getListeners($element, type)\r\n\r\n listeners.forEach((listener) => {\r\n _off($element, listener.type, listener.fn)\r\n })\r\n\r\n if (\r\n (recurse || type === true || arguments.length === 1) &&\r\n $element &&\r\n $children\r\n ) {\r\n $children.forEach(($child) => {\r\n if (isElement($child)) {\r\n purgeElement($child, type, recurse)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default purgeElement\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 获取 DOM 元素(type 事件类型)事件绑定信息\r\n * ========================================================================\r\n * 如果设置了事件类型 type, 则返回指定类型的事件绑定信息,否则返回所有事件绑定信息\r\n * ========================================================================\r\n * @methods getListeners\r\n * @param {HTMLElement} el - (必须)要获取事件绑定信息的 DOM 元素\r\n * @param {String} [type] - (可选)事件类型\r\n * @returns {Array} - 已绑定的事件信息\r\n */\r\nconst getListeners = (el, type) => {\r\n let listeners = el._listeners || []\r\n\r\n if (isString(type) && type) {\r\n listeners = listeners.filter((listener) => {\r\n return listener.type === type\r\n })\r\n }\r\n\r\n return listeners\r\n}\r\n\r\nexport default getListeners\r\n","import purgeElement from './purgeElement'\r\nimport isFunction from '../types/isFunction'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method off\r\n * @param {HTMLElement|Object} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} [fn] - (可选)事件处理器回调函数\r\n */\r\nconst off = (el, type, fn) => {\r\n // 如果不设置 fn 参数,默认清除 el 元素上绑定的所有事件处理器\r\n if (!isFunction(fn)) {\r\n purgeElement(el, type)\r\n return false\r\n }\r\n\r\n _off(el, type, fn)\r\n}\r\n\r\nexport default off\r\n","import hasOwn from './hasOwn'\r\n\r\n/**\r\n * 扩展对象\r\n * ========================================================================\r\n * @method extend\r\n * @param {Object} origin\r\n * @param {Object} source\r\n */\r\nconst extend = (origin, source) => {\r\n const keys = Object.keys(source)\r\n\r\n keys.forEach((prop) => {\r\n if (hasOwn(source, prop)) {\r\n origin[prop] = source[prop]\r\n }\r\n })\r\n}\r\n\r\nexport default extend\r\n","/**\r\n * 存储订阅者(主题和处理器的)私有对象\r\n * ========================================================================\r\n * @type {{}}\r\n * @private\r\n */\r\nconst _subscribers = {}\r\n\r\nexport default _subscribers\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 判断是否存在与给定 topic 完全匹配的订阅者信息\r\n * ========================================================================\r\n * @method _hasDirectSubscribersFor\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasDirectSubscribersFor = (topic) => {\r\n return hasOwn(_subscribers, topic) && _subscribers[topic].length > 0\r\n}\r\n\r\nexport default _hasDirectSubscribersFor\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\nimport _hasSubscribers from './_hasSubscribers'\r\n\r\n/**\r\n * 判断是否存在包含 topic 指定的订阅者信息\r\n * ========================================================================\r\n * @method has\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Boolean} [isDirect] - (可选)是否为直接的主题,默认值:true\r\n * @returns {Boolean}\r\n */\r\nconst has = (topic, isDirect = true) => {\r\n return isDirect ? _hasDirectSubscribersFor(topic) : _hasSubscribers(topic)\r\n}\r\n\r\nexport default has\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * 判断是否存在包含给定 topic 相关的订阅者信息\r\n * ========================================================================\r\n * @method _hasSubscribers\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasSubscribers = (topic) => {\r\n let found = _hasDirectSubscribersFor(topic)\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (!found && position !== -1) {\r\n topic = topic.substring(0, position)\r\n position = topic.lastIndexOf('.')\r\n found = _hasDirectSubscribersFor(topic)\r\n }\r\n\r\n return found\r\n}\r\n\r\nexport default _hasSubscribers\r\n","import isTypedArray from '../types/isTypedArray'\r\nimport _subscribers from './_subscribers'\r\nimport has from './has'\r\nimport _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * (异步)发布订阅主题信息\r\n * ========================================================================\r\n * 主题默认是异步发布的。确保在消费者处理主题时,主题的发起者不会被阻止。\r\n * ========================================================================\r\n * @method emit\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Object} [data] - (可选)数据对象\r\n * @param {Boolean} [async] - (可选) 是否异步发布\r\n */\r\nconst emit = (topic, data, async = true) => {\r\n const execute = (topic) => {\r\n if (!_hasDirectSubscribersFor(topic)) {\r\n return false\r\n }\r\n\r\n _subscribers[topic].forEach((subscriber) => {\r\n // 针对 mqtt 消息服务返回的 Uint8Array 类似的 typed arrays 格式的数据\r\n // 采用 toString() 方法转化为普通(JSON)字符串\r\n const message = isTypedArray(data) ? data.toString() : data\r\n\r\n subscriber.callback.call(subscriber.context || subscriber, message)\r\n })\r\n }\r\n const deliver = () => {\r\n let subscriber = topic\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (position !== -1) {\r\n subscriber = subscriber.substring(0, position)\r\n position = subscriber.lastIndexOf('.')\r\n\r\n execute(subscriber)\r\n }\r\n\r\n // 执行 topic 对应的处理器\r\n execute(topic)\r\n // 执行特殊 topic:'*'(监听全部消息的发布)\r\n execute('*')\r\n }\r\n\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (async) {\r\n setTimeout(deliver, 10)\r\n } else {\r\n deliver()\r\n }\r\n}\r\n\r\nexport default emit\r\n","import toString from '../lang/toString'\r\n/**\r\n * 判断检测数据是否为 Typed Arrays 类型的数据\r\n * ========================================================================\r\n * @param {*} val\r\n * @returns {boolean}\r\n */\r\nconst isTypedArray = (val) => {\r\n const TYPES = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]',\r\n '[object BigInt64Array]',\r\n '[object BigUint64Array]'\r\n ]\r\n\r\n return TYPES.indexOf(toString(val)) > -1\r\n}\r\n\r\nexport default isTypedArray\r\n","/**\r\n * 生成唯一 id 字符串的函数\r\n * ========================================================================\r\n * @method guid\r\n * @param {String} [prefix] - 生成 id 的前缀字符串\r\n * @return {String} 返回一个表示唯一 id 的字符串\r\n */\r\nconst guid = (() => {\r\n let uuid = 0\r\n\r\n return (prefix) => {\r\n uuid += 1\r\n\r\n return prefix ? prefix + '-' + uuid : 'guid-' + uuid\r\n }\r\n})()\r\n\r\nexport default guid\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 删除与给定 topic 相同的订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriber\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _removeSubscriber = (topic) => {\r\n if (!hasOwn(_subscribers, topic)) {\r\n return false\r\n }\r\n\r\n delete _subscribers[topic]\r\n}\r\n\r\nexport default _removeSubscriber\r\n","import has from './has'\r\nimport _removeSubscriber from './_removeSubscriber'\r\nimport _removeSubscriberByToken from './_removeSubscriberByToken'\r\n\r\n/**\r\n * 取消订阅主题\r\n * ========================================================================\r\n * @method off\r\n * @param {String} topic - (必须)订阅的主题\r\n * @param {Function|String} [token] - (可选)订阅主题的处理器函数或者唯一 Id 值\r\n */\r\nconst off = (topic, token) => {\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (token) {\r\n _removeSubscriberByToken(token)\r\n } else {\r\n _removeSubscriber(topic)\r\n }\r\n}\r\n\r\nexport default off\r\n","import _subscribers from './_subscribers'\r\nimport _removeSubscriber from './_removeSubscriber'\r\n\r\n/**\r\n * 通过订阅者 token 值删除订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriberByToken\r\n * @param {String} token - 订阅者 token 字符串\r\n * @returns {boolean}\r\n * @private\r\n */\r\nconst _removeSubscriberByToken = (token) => {\r\n const keys = Object.keys(_subscribers)\r\n let index = -1\r\n\r\n if (!token || keys.length < 1) {\r\n return false\r\n }\r\n\r\n keys.forEach((subject) => {\r\n const subscriber = _subscribers[subject]\r\n let topic\r\n\r\n subscriber.forEach((execution, j) => {\r\n if (execution.callback === token || execution.token === token) {\r\n topic = execution.topic\r\n subscriber.splice(index, j)\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (subscriber.length < 1) {\r\n _removeSubscriber(topic)\r\n }\r\n })\r\n}\r\n\r\nexport default _removeSubscriberByToken\r\n","import isString from './utils/types/isString'\r\nimport hasOwn from './utils/lang/hasOwn'\r\nimport isObject from './utils/types/isObject'\r\nimport extend from './utils/lang/extend'\r\nimport publish from './utils/observer/emit'\r\nimport subscribe from './utils/observer/on'\r\nimport unsubscribe from './utils/observer/off'\r\n\r\nclass Base {\r\n constructor(options) {\r\n this.attrs = {}\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options).render().addListeners()\r\n return this\r\n }\r\n\r\n attr(prop, value) {\r\n const attrs = this.attrs\r\n\r\n if (isString(prop)) {\r\n // 只能扩展 attrs 中已有的属性\r\n if (value && hasOwn(attrs, prop)) {\r\n // 更新单个配置信息\r\n attrs[prop] = value\r\n return this\r\n }\r\n\r\n // 只传递 prop 参数,则返回对应的属性值\r\n return attrs[prop]\r\n } else if (isObject(prop)) {\r\n // 批量更新配置信息\r\n extend(attrs, prop)\r\n\r\n return this\r\n } else if (arguments.length === 0) {\r\n // 不传递参数,直接返回整个\r\n return attrs\r\n }\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n return this\r\n }\r\n\r\n refresh() {\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.removeListeners()\r\n return this\r\n }\r\n\r\n reload(options) {\r\n let attrs = this.attr()\r\n\r\n if (options) {\r\n attrs = this.attr(options)\r\n }\r\n\r\n this.destroy().initialize(attrs)\r\n\r\n return this\r\n }\r\n\r\n $emit(event, data) {\r\n publish(event, data)\r\n return this\r\n }\r\n\r\n $on(event, callback) {\r\n subscribe(event, callback, this)\r\n return this\r\n }\r\n\r\n $off(event, callback) {\r\n unsubscribe(event, callback)\r\n return this\r\n }\r\n\r\n addListeners() {\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n return this\r\n }\r\n}\r\n\r\nexport default Base\r\n","import _subscribers from './_subscribers'\r\nimport isFunction from '../types/isFunction'\r\nimport guid from '../lang/guid'\r\n\r\n/**\r\n * 订阅主题,并给出处理器函数\r\n * ========================================================================\r\n * @method on\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Function} handler - (必须)主题的处理器函数\r\n * @param {Object} [context] - (可选)指定 this 执行上下文\r\n * @return {String} - 唯一的 token 字符串,例如:'guid-1'。\r\n */\r\nconst on = (topic, handler, context = null) => {\r\n const token = guid()\r\n let subject = typeof topic === 'symbol' ? topic.toString() : topic\r\n\r\n if (!isFunction(handler)) {\r\n return ''\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (!_subscribers[subject]) {\r\n _subscribers[subject] = []\r\n }\r\n\r\n _subscribers[subject].push({\r\n topic: subject,\r\n callback: handler,\r\n context,\r\n token\r\n })\r\n\r\n return token\r\n}\r\n\r\nexport default on\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测测试数据是否为类似 Object 类型\r\n * ========================================================================\r\n * @method isObjectLike\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是类似 Object 类型,返回 true,否则返回 false\r\n */\r\nconst isObjectLike = (val) => {\r\n return isObject(val) && val !== null\r\n}\r\n\r\nexport default isObjectLike\r\n","import isObjectLike from './isObjectLike'\r\n\r\n/**\r\n * 检测测试数据是否为普通对象\r\n * ========================================================================\r\n * @method isPlainObject\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是普通对象,返回 true,否则返回 false\r\n */\r\nconst isPlainObject = (val) => {\r\n const getPrototypeOf = Object.getPrototypeOf\r\n let proto\r\n\r\n // Detect obvious negatives\r\n if (!isObjectLike(val)) {\r\n return false\r\n }\r\n\r\n proto = val.prototype\r\n\r\n // JavaScript 对象分为两种:普通对象和函数对象\r\n // 普通对象:原型是 __proto__,没有 prototype 原型(属性)\r\n // 函数对象:原型是 prototype ,prototype 只存在于函数对象上\r\n if (!proto) {\r\n return true\r\n }\r\n\r\n proto = val\r\n\r\n while (getPrototypeOf(proto) !== null) {\r\n proto = getPrototypeOf(proto)\r\n }\r\n\r\n return getPrototypeOf(val) === proto\r\n}\r\n\r\nexport default isPlainObject\r\n","/**\r\n * 移除字符串中的 JavaScript 代码\r\n * ====================================================\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nconst stripScripts = (str) => {\r\n return str.replace(/]*>.*?<\\/script>/gi, '')\r\n}\r\n\r\nexport default stripScripts\r\n","/**\r\n * 转义字符串中的 HTML 标签\r\n *\r\n * @param {String} str - 需要转义的字符串\r\n * @returns {String}\r\n */\r\nconst encodeHTML = (str) => {\r\n const CHARTS = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": ''',\r\n '\"': '"'\r\n }\r\n\r\n return str.replace(/[&<>'\"]/g, (tag) => {\r\n return CHARTS[tag] || tag\r\n })\r\n}\r\n\r\nexport default encodeHTML\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport isSVG from '../types/isSVG'\r\nimport setAttributes from '../dom/setAttributes'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @param {Object} [options.attrs]\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (name, options = {}) => {\r\n const ICON = 'outline-icon'\r\n const size = options.size || 0\r\n const color = options.color || ''\r\n const iconSet = options.iconSet || ''\r\n const width = isArray(size) ? size[0] : size\r\n const height = isArray(size) ? size[1] : size\r\n const defaultRules = size ? `width:${width}px;height:${height}px;` : ''\r\n const cssRules = color ? defaultRules + `color:${color}` : defaultRules\r\n const attrs = options.attrs || {}\r\n const $icon = document.createElement('i')\r\n let binds = ''\r\n let svg = ''\r\n let $svg\r\n\r\n if (!isString(name)) {\r\n return null\r\n }\r\n\r\n if (isSVG(name)) {\r\n svg = name\r\n } else {\r\n binds =\r\n iconSet && iconSet !== 'icon'\r\n ? `xlink:href=\"#${iconSet}-icon-${name}\"`\r\n : `xlink:href=\"#icon-${name}\"`\r\n svg = ``\r\n }\r\n\r\n $icon.innerHTML = svg\r\n\r\n if (attrs.className) {\r\n attrs.className = `${ICON} ${attrs.className}`\r\n } else {\r\n attrs.className = ICON\r\n }\r\n\r\n setAttributes($icon, attrs)\r\n\r\n $svg = $icon.querySelector('svg')\r\n setAttributes($svg, {\r\n 'aria-hidden': true,\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n class: 'outline-icon__svg',\r\n width: 200,\r\n height: 200,\r\n style: cssRules\r\n })\r\n\r\n return $icon\r\n}\r\n\r\nexport default createElement\r\n","import isString from './isString'\r\n\r\nconst isSVG = (str) => {\r\n const declaration = '(?:<\\\\?xml[^>]*>\\\\s*)?'\r\n const doctype =\r\n '(?:<\\\\!doctype svg[^>]*\\\\s*(?:\\\\[?(?:\\\\s*]*>\\\\s*)*\\\\]?)*[^>]*>\\\\s*)?'\r\n const content = ']*>[^]*<\\\\/svg>\\\\s*$'\r\n const svg = `^\\\\s*${declaration}${doctype}${content}\\\\s*$`\r\n const pattern = new RegExp(svg, 'i')\r\n\r\n return isString(str) && pattern.test(str)\r\n}\r\n\r\nexport default isSVG\r\n","import createElement from './createElement'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method icon\r\n * @alias createElement\r\n * @see createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @returns {HTMLElement}\r\n */\r\nconst icon = (name, options = {}) => {\r\n return createElement(name, options)\r\n}\r\n\r\nexport default icon\r\n","import DEFAULTS from './defaults'\r\n\r\nconst SYMBOLS = [...DEFAULTS]\r\n\r\nexport default SYMBOLS\r\n","const DEFAULTS = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n]\r\n\r\nexport default DEFAULTS\r\n","import isString from '../types/isString'\r\nimport getSymbol from './getSymbol'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n *\r\n * @method getSymbols\r\n * @param {String} [name]\r\n * @param {String} [iconSet]\r\n * @returns {string[]|*}\r\n */\r\nconst getSymbols = (name, iconSet = 'icon') => {\r\n if (isString(name)) {\r\n return getSymbol(name, iconSet)\r\n }\r\n\r\n return [...SYMBOLS]\r\n}\r\n\r\nexport default getSymbols\r\n","import SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method getSymbol\r\n * @param {String} name\r\n * @param {String} [iconSet]\r\n * @returns {String}\r\n */\r\nconst getSymbol = (name, iconSet = 'icon') => {\r\n const patternName = /id=\"(.*?)\"/\r\n const patternSet = /^(\\w+)-/\r\n const symbols = SYMBOLS\r\n\r\n return symbols.find((symbol) => {\r\n const names = patternName.exec(symbol)\r\n const fullName = names[1]\r\n const sets = patternSet.exec(fullName)\r\n const setName = sets[1]\r\n const iconName =\r\n iconSet === 'icon' ? `${iconSet}-${name}` : `${iconSet}-icon-${name}`\r\n\r\n return setName === iconSet && fullName === iconName\r\n })\r\n}\r\n\r\nexport default getSymbol\r\n","import add from './add'\r\nimport getSymbols from './getSymbols'\r\n\r\n/**\r\n * 绘制 SVG 图标集\r\n * ========================================================================\r\n * @method paint\r\n * @param {String|Array} symbol\r\n */\r\nconst paint = (symbol = '') => {\r\n const $body = document.body\r\n let $icons = document.querySelector('#outline-icons')\r\n let symbols = []\r\n\r\n add(symbol)\r\n symbols = getSymbols()\r\n\r\n if ($icons) {\r\n $icons.innerHTML = symbols.join('')\r\n } else {\r\n $icons = document.createElement('div')\r\n $icons.innerHTML =\r\n ``\r\n $body.insertBefore($icons.firstChild, $body.firstChild)\r\n }\r\n}\r\n\r\nexport default paint\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method add\r\n * @param {Array|String} symbols\r\n * @return {Boolean}\r\n */\r\nconst add = (symbols) => {\r\n if (!symbols) {\r\n return false\r\n }\r\n\r\n if (isArray(symbols) && symbols.length > 0) {\r\n symbols.forEach((symbol) => {\r\n /* istanbul ignore else */\r\n if (SYMBOLS.indexOf(symbol) === -1 && isString(symbol)) {\r\n SYMBOLS.push(symbol)\r\n }\r\n })\r\n } else {\r\n /* istanbul ignore else */\r\n if (isString(symbols)) {\r\n SYMBOLS.push(symbols)\r\n }\r\n }\r\n}\r\n\r\nexport default add\r\n","/**\r\n * 获取 options 节点下匹配 selector 选择器的 DOM 节点\r\n * ========================================================================\r\n * Element.matches() 方法可以用来判断 DOM 元素是否与给定的选择器匹配,事件代理判断是\r\n * 否触发绑定的代理事件回调函数,关键就是使用 Element.matches() 辨别当前事件触发的目\r\n * 标 DOM 元素是否为事件代理所期望触发的目标。\r\n * ========================================================================\r\n * @method matches\r\n * @see https://developer.mozilla.org/en-US/docs/web/api/element/matches\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)匹配 DOM 元素的选择器\r\n * @returns {Boolean}\r\n */\r\nconst matches = (el, selector = '') => {\r\n const sel = selector.replace(/^>/i, '')\r\n\r\n if (!selector || !sel || !el) {\r\n return false\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el.matches) {\r\n return el.matches(sel)\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(sel)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport default matches\r\n","/**\r\n * 获取 DOM 元素的父节点\r\n * ========================================================================\r\n * @method getParentOrHost\r\n * @param {*|HTMLElement} el - (必须)要获取父节点的 DOM 元素\r\n * @returns {*|HTMLElement}\r\n */\r\nconst getParentOrHost = (el) => {\r\n return el.host && el !== document && el.host.nodeType\r\n ? el.host\r\n : el.parentNode\r\n}\r\n\r\nexport default getParentOrHost\r\n","import closest from '../dom/closest'\r\nimport off from './off'\r\nimport getTarget from './getTarget'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定代理事件\r\n * ========================================================================\r\n * @method on\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String} selector - (必须)事件代理目标 DOM 元素的选择器\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (可选) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst on = (el, selector, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n const listener = function (evt) {\r\n const target = getTarget(evt)\r\n // 通过 Element.matches 方法获得点击的目标元素\r\n const delegateTarget = closest(target, selector, el)\r\n let overrideContext = context || el\r\n\r\n evt.delegateTarget = delegateTarget\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (delegateTarget) {\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n }\r\n\r\n if (!el) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n selector,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default on\r\n","import resolveTextNode from '../dom/resolveTextNode'\r\n\r\n/**\r\n * 返回触发事件的 target DOM 元素\r\n * ========================================================================\r\n * @method getTarget\r\n * @param {Event} evt - Event 对象\r\n * @return {HTMLElement} - Event 对象的 target DOM 元素\r\n */\r\nconst getTarget = function (evt) {\r\n const target = evt.target\r\n\r\n return resolveTextNode(target)\r\n}\r\n\r\nexport default getTarget\r\n","/**\r\n * 在某些情况下,某些浏览器(例如:Safari 浏览器)会返回实际的目标元素内部的文本节点。\r\n * resolveTextNode() 方法则会返回实际的目标节点。\r\n * ========================================================================\r\n * @method resolveTextNode\r\n * @param {HTMLElement|Text} el - 要解析的节点\r\n * @return {*|HTMLElement} - 实际的目标 DOM 节点\r\n */\r\nconst resolveTextNode = function (el) {\r\n if (el && el.nodeType === 3) {\r\n return el.parentNode\r\n }\r\n\r\n return el\r\n}\r\n\r\nexport default resolveTextNode\r\n","import matches from './matches'\r\nimport getParentOrHost from './getParentOrHost'\r\n\r\n/**\r\n * 获取 options 元素父元素最近的包含 selector 选择器的元素\r\n * ========================================================================\r\n * @method closest\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)DOM 元素的选择其\r\n * @param {HTMLElement} [ctx] - (必须)比对的 DOM 元素\r\n * @param {Boolean} [includeCTX] - (必须)是否包含 context DOM 元素\r\n * @returns {null|HTMLElement} - 返回最接近的 DOM 元素\r\n */\r\nconst closest = (el, selector, ctx, includeCTX) => {\r\n const context = ctx || document\r\n\r\n if (!el) {\r\n return null\r\n }\r\n\r\n do {\r\n /* istanbul ignore else */\r\n if (\r\n (selector != null &&\r\n (selector.startsWith('>')\r\n ? el.parentNode === context && matches(el, selector)\r\n : matches(el, selector))) ||\r\n (includeCTX && el === context)\r\n ) {\r\n return el\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el === context) {\r\n break\r\n }\r\n\r\n /* jshint boss:true */\r\n } while ((el = getParentOrHost(el)))\r\n}\r\n\r\nexport default closest\r\n","import isString from './utils/types/isString'\r\nimport isPlainObject from './utils/types/isPlainObject'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport extend from './utils/lang/extend'\r\nimport later from './utils/lang/later'\r\nimport stripScripts from './utils/lang/stripScripts'\r\nimport encodeHTML from './utils/lang/encodeHTML'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport guid from './utils/lang/guid'\r\n\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport setAttribute from './utils/dom/setAttribute'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\nimport paint from './utils/icons/paint'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\n\r\nconst TYPES = ['info', 'success', 'warning', 'error']\r\nconst instances = []\r\nlet instance\r\n\r\npaint()\r\n\r\nclass Message extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Message.DEFAULTS)\r\n\r\n this.$el = null\r\n this.id = ''\r\n this.closed = false\r\n this.visible = false\r\n this.offset = -50\r\n this.timer = null\r\n this.destroyed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options)\r\n this.id = this.attr('id')\r\n this.offset = this.attr('offset') || -50\r\n\r\n this.$emit('created', { ...this.attr() })\r\n\r\n this.render().addListeners()\r\n\r\n if (this.attr('visible')) {\r\n this.open()\r\n }\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isDestroyed() {\r\n return this.destroyed\r\n }\r\n\r\n _getClassName() {\r\n const type = this.attr('type')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const visible = this.attr('visible')\r\n const customClass = this.attr('customClass')\r\n const className = [\r\n 'outline-message',\r\n `outline-message_${type}`,\r\n `outline-message_${effect}`\r\n ]\r\n\r\n if (round) {\r\n className.push('outline-message_round')\r\n }\r\n\r\n if (!closable) {\r\n className.push('outline-message_full-width')\r\n }\r\n\r\n if (visible) {\r\n className.push('outline-message_visible')\r\n }\r\n\r\n if (customClass) {\r\n className.push(customClass)\r\n }\r\n\r\n return className\r\n }\r\n\r\n render() {\r\n const type = this.attr('type')\r\n const message = this.attr('message')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n const className = this._getClassName()\r\n const iconName = effect === 'light' ? `circle-${type}` : type\r\n const children = []\r\n let iconSize = 20\r\n let $type\r\n let $message\r\n let $text\r\n let $close\r\n let $el\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n\r\n if (effect !== 'plain') {\r\n $type = icon(iconName, {\r\n iconSet: 'outline',\r\n size: iconSize\r\n })\r\n addClass($type, 'outline-message__icon')\r\n children.push($type)\r\n }\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n $text = document.createTextNode(encodeHTML(stripScripts(message)))\r\n } else {\r\n $text = document.createDocumentFragment()\r\n $text.innerHTML = message\r\n }\r\n $message = createElement(\r\n 'p',\r\n {\r\n className: 'outline-message__content'\r\n },\r\n [$text]\r\n )\r\n children.push($message)\r\n\r\n if (closable) {\r\n $close = icon('close', {\r\n iconSet: 'outline',\r\n size: 18\r\n })\r\n addClass($close, 'outline-message__close')\r\n children.push($close)\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: className.join(' ')\r\n },\r\n children\r\n )\r\n $el.style.cssText = `top:-50px;`\r\n this.$el = $el\r\n document.body.appendChild(this.$el)\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n _refreshIcon() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let iconSize = 20\r\n let type\r\n let effect\r\n let round\r\n let iconName\r\n let $icon\r\n let $svg\r\n let $use\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $icon = $el.querySelector('.outline-icon')\r\n\r\n if (!$icon) {\r\n return this\r\n }\r\n\r\n type = this.attr('type')\r\n effect = this.attr('effect')\r\n round = this.attr('round')\r\n\r\n if (effect === 'plain') {\r\n addClass($icon, HIDDEN)\r\n } else {\r\n removeClass($icon, HIDDEN)\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n }\r\n\r\n $svg = $icon.querySelector('.outline-icon__svg')\r\n setAttributes($svg, {\r\n style: `width:${iconSize}px;height:${iconSize}px;`\r\n })\r\n\r\n $use = $svg.querySelector('use')\r\n iconName = effect === 'light' ? `circle-${type}` : type\r\n setAttribute($use, 'xlink:href', `#outline-icon-${iconName}`)\r\n\r\n return this\r\n }\r\n\r\n _refreshMessage() {\r\n const $el = this.$el\r\n let $message\r\n let dangerouslyUseHTMLString\r\n let message\r\n let text\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $message = $el.querySelector('.outline-message__content')\r\n dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n message = this.attr('message')\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n text = encodeHTML(stripScripts(message))\r\n } else {\r\n text = message\r\n }\r\n\r\n $message.innerHTML = text\r\n\r\n return this\r\n }\r\n\r\n _refreshClose() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let $close\r\n let closable\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $close = $el.querySelector('.outline-message__close')\r\n closable = this.attr('closable')\r\n\r\n if ($close) {\r\n if (closable) {\r\n addClass($close, HIDDEN)\r\n } else {\r\n removeClass($close, HIDDEN)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n _refreshEl() {\r\n const $el = this.$el\r\n let className\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n className = this._getClassName()\r\n setAttribute($el, 'className', className.join(' '))\r\n\r\n return this\r\n }\r\n\r\n refresh(options) {\r\n if (!isPlainObject(options)) {\r\n return this\r\n }\r\n\r\n this.attr(options)\r\n ._refreshIcon()\r\n ._refreshMessage()\r\n ._refreshClose()\r\n ._refreshEl()\r\n\r\n return this\r\n }\r\n\r\n clearTimer() {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n this.timer = null\r\n }\r\n\r\n return this\r\n }\r\n\r\n startTimer(duration) {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.timer = later(() => {\r\n this.$emit('opened')\r\n this.close()\r\n }, duration * 1000)\r\n\r\n return this\r\n }\r\n\r\n open(options) {\r\n const $el = this.$el\r\n let offset\r\n let duration\r\n let top\r\n let cssRules\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.isClosed()) {\r\n this.refresh(options)\r\n }\r\n\r\n offset = this.attr('offset')\r\n duration = this.attr('duration')\r\n top = offset && offset >= this.offset ? offset : this.offset\r\n cssRules = `top:${top}px;`\r\n\r\n this.clearTimer()\r\n\r\n this.$emit('beforeOpen')\r\n\r\n later(() => {\r\n this.visible = true\r\n\r\n addClass($el, 'outline-message_visible')\r\n $el.style.cssText = cssRules\r\n\r\n if (duration > 0) {\r\n this.startTimer(duration)\r\n }\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const $el = this.$el\r\n const cssRules = `top:-50px;`\r\n let destroyAfterClosed\r\n let beforeClose\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n destroyAfterClosed = this.attr('destroyAfterClosed')\r\n beforeClose = this.attr('beforeClose')\r\n\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(this)\r\n }\r\n\r\n $el.style.cssText = cssRules\r\n removeClass($el, 'outline-message_visible')\r\n\r\n this.visible = false\r\n this.closed = true\r\n\r\n later(() => {\r\n this.$emit('closed')\r\n\r\n if (destroyAfterClosed) {\r\n this.destroy()\r\n }\r\n }, 500)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.removeListeners()\r\n\r\n document.body.removeChild(this.$el)\r\n\r\n clearTimeout(this.timer)\r\n this._default()\r\n\r\n this.$emit('afterDestroy')\r\n\r\n return this\r\n }\r\n\r\n onMouseEnter() {\r\n this.clearTimer()\r\n return this\r\n }\r\n\r\n onMouseLeave() {\r\n const duration = this.attr('duration')\r\n const delay = this.attr('delay')\r\n\r\n if (duration <= 0) {\r\n return this\r\n }\r\n\r\n this.startTimer(delay)\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.clearTimer()\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseenter',\r\n this.onMouseEnter,\r\n this,\r\n true\r\n )\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseleave',\r\n this.onMouseLeave,\r\n this,\r\n true\r\n )\r\n on($el, '.outline-message__close', 'click', this.onClose, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $el = this.$el\r\n\r\n off($el, 'mouseenter', this.onMouseEnter)\r\n off($el, 'mouseleave', this.onMouseLeave)\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nMessage.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n id: '',\r\n type: 'info',\r\n effect: 'default',\r\n round: false,\r\n offset: 30,\r\n duration: 3,\r\n delay: 2,\r\n message: '',\r\n customClass: '',\r\n closable: true,\r\n visible: true,\r\n dangerouslyUseHTMLString: false,\r\n destroyAfterClosed: true,\r\n beforeClose: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nTYPES.forEach((type) => {\r\n Message[type] = (options) => {\r\n const config = {}\r\n const id = guid(`outline-message-`)\r\n const beforeClose = options.beforeClose || null\r\n let offset = options.offset || 30\r\n\r\n if (isString(options)) {\r\n config.message = options\r\n } else {\r\n if (isPlainObject(options)) {\r\n extend(config, options)\r\n }\r\n }\r\n config.id = id\r\n config.type = type\r\n config.offset = offset\r\n config.visible = false\r\n config.beforeClose = () => {\r\n Message.close(id, beforeClose)\r\n }\r\n\r\n instance = new Message(config)\r\n instances.forEach((item) => {\r\n offset += item.$el.offsetHeight + 16\r\n })\r\n instance.offset = offset\r\n instance.open()\r\n instances.push(instance)\r\n\r\n return instance\r\n }\r\n})\r\n\r\n// 关闭指定 id 消息的静态方法\r\nMessage.close = (id, beforeClose) => {\r\n const len = instances.length\r\n let index = -1\r\n let i\r\n let offsetHeight\r\n\r\n instances.forEach((instance, i) => {\r\n // 在 instances 中通过 id 找到要关闭的消息\r\n if (id === instance.id) {\r\n offsetHeight = instance.$el.offsetHeight\r\n index = i\r\n\r\n // 关闭消息\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(instance)\r\n }\r\n\r\n instances.splice(i, 1)\r\n }\r\n })\r\n\r\n if (len <= 1 || index === -1 || index > instances.length - 1) {\r\n return false\r\n }\r\n\r\n i = index\r\n\r\n // 界面中的消息逐个向上收起\r\n for (; i < len - 1; i += 1) {\r\n const dom = instances[i].$el\r\n\r\n dom.style['top'] = parseInt(dom.style['top'], 10) - offsetHeight - 16 + 'px'\r\n }\r\n}\r\n\r\n// 关闭所有消息的静态方法\r\nMessage.clear = () => {\r\n let i = instances.length - 1\r\n for (; i >= 0; i -= 1) {\r\n instances[i].close()\r\n }\r\n}\r\n\r\nexport default Message\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Command {\r\n constructor(name, action) {\r\n this.name = name\r\n\r\n if (isFunction(action)) {\r\n this.action = action\r\n }\r\n }\r\n\r\n execute() {\r\n this.action()\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Command\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Commands {\r\n constructor() {\r\n this.commands = []\r\n }\r\n\r\n get(name) {\r\n return this.commands.find((cmd) => cmd.name === name)\r\n }\r\n\r\n add(command) {\r\n this.commands.push(command)\r\n\r\n return this\r\n }\r\n\r\n del(name) {\r\n const commands = this.commands\r\n const command = commands.find((cmd) => cmd.name === name)\r\n const index = command ? commands.indexOf(command) : -1\r\n\r\n if (index > -1) {\r\n commands.splice(index, 1)\r\n }\r\n\r\n return this\r\n }\r\n\r\n clear() {\r\n this.commands = []\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n const command = this.commands.find((cmd) => cmd.name === name)\r\n\r\n if (isFunction(command?.execute)) {\r\n command.execute()\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Commands\r\n","import icon from './utils/icons/icon'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\n\r\nconst _createButton = (button, rounded = true) => {\r\n const $icon = icon(button.icon, {\r\n iconSet: button.iconSet || 'outline',\r\n color: button.color || '',\r\n size: button.size\r\n })\r\n const $anchor = createElement(\r\n 'a',\r\n {\r\n className: `outline-toolbar__anchor`,\r\n href: button.link\r\n },\r\n $icon\r\n )\r\n const $button = createElement(\r\n 'div',\r\n {\r\n className: `outline-toolbar__button ${button.name}`,\r\n 'data-cmd': button.name\r\n },\r\n [button.link ? $anchor : $icon]\r\n )\r\n\r\n addClass($icon, 'outline-toolbar__icon')\r\n\r\n if (rounded) {\r\n addClass($button, 'outline-toolbar_rounded')\r\n }\r\n\r\n if (button.disabled) {\r\n addClass($button, 'outline-toolbar_disabled')\r\n }\r\n\r\n return $button\r\n}\r\n\r\nexport default _createButton\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isObject from './utils/types/isObject'\r\nimport isArray from './utils/types/isArray'\r\nimport later from './utils/lang/later'\r\nimport guid from './utils/lang/guid'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport hasClass from './utils/dom/hasClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport Base from './base'\r\nimport Command from './command'\r\nimport Commands from './commands'\r\n\r\nimport _createButton from './_createButton'\r\n\r\nconst DISABLED = 'outline-toolbar_disabled'\r\nconst HIDDEN = 'outline-toolbar_hidden'\r\n\r\nclass Toolbar extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Toolbar.DEFAULTS)\r\n\r\n this.disabled = false\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.buttons = []\r\n this.commands = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.disabled = this.attr('disabled')\r\n this.closed = this.attr('closed')\r\n this.commands = new Commands()\r\n\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n isDisabled(name) {\r\n let button\r\n\r\n if (name) {\r\n button = this.get(name)\r\n\r\n return button.disabled\r\n }\r\n\r\n return this.disabled\r\n }\r\n\r\n isExist(name) {\r\n const button = this.get(name)\r\n return !!button\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n _getCommand(button) {\r\n const _self = this\r\n const { action, name } = button\r\n let command = null\r\n let handler = null\r\n let context\r\n let listener\r\n\r\n if (!action) {\r\n return command\r\n }\r\n\r\n handler = action.handler\r\n context = action.context || this\r\n\r\n if (isFunction(handler)) {\r\n listener = handler\r\n } else if (isString(handler)) {\r\n listener = function () {\r\n _self.$emit(handler, name)\r\n }\r\n }\r\n\r\n if (isFunction(listener)) {\r\n command = new Command(name, listener.bind(context))\r\n }\r\n\r\n return command\r\n }\r\n\r\n get(name) {\r\n return this.buttons.find((button) => button.name === name)\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const buttons = this.attr('buttons') || []\r\n const placement = this.attr('placement')\r\n\r\n paint()\r\n\r\n this.$el = createElement('div', {\r\n id: guid('outline-toolbar'),\r\n className: `outline-toolbar outline-toolbar_${placement}`\r\n })\r\n this._paint(buttons)\r\n document.body.appendChild(this.$el)\r\n\r\n if (this.closed) {\r\n this.hide()\r\n }\r\n\r\n if (this.disabled) {\r\n this.disable()\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$el.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(buttons) {\r\n const rounded = this.attr('rounded')\r\n const $fragment = document.createDocumentFragment()\r\n\r\n buttons.forEach((button) => {\r\n const $button = _createButton(button, rounded)\r\n const command = this._getCommand(button)\r\n const { name, disabled, context } = button\r\n\r\n $fragment.appendChild($button)\r\n\r\n if (!this.isExist(name)) {\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n })\r\n\r\n this.$el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(buttons) {\r\n this.attr({ buttons })\r\n this.erase()._paint(buttons)\r\n return this\r\n }\r\n\r\n add(button) {\r\n const $el = this.$el\r\n const $fragment = document.createDocumentFragment()\r\n const buttons = this.attr('buttons') || []\r\n const { name, disabled, context } = button\r\n const command = this._getCommand(button)\r\n const _add = (button) => {\r\n const $button = _createButton(button)\r\n\r\n $fragment.appendChild($button)\r\n\r\n buttons.push(button)\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this,\r\n command\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n\r\n if (isObject(button)) {\r\n _add(button)\r\n } else if (isArray(button)) {\r\n button.forEach((item) => {\r\n if (isObject(item)) {\r\n _add(item)\r\n }\r\n })\r\n }\r\n $el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n remove(name) {\r\n const $el = this.$el\r\n const buttons = this.buttons\r\n const button = this.get(name)\r\n let index = -1\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n index = buttons.indexOf(button)\r\n\r\n if (index > -1) {\r\n buttons.splice(index, 1)\r\n this.attrs('buttons').splice(index, 1)\r\n }\r\n\r\n this._disable(name)\r\n $el.removeChild(button.$el)\r\n\r\n return this\r\n }\r\n\r\n _disable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = true\r\n\r\n if (command) {\r\n this.commands.del(command)\r\n }\r\n\r\n addClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n _enable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || !button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = false\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n\r\n removeClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n disable(name) {\r\n const disabled = this.attr('afterDisabled')\r\n\r\n if (name) {\r\n this._disable(name)\r\n } else {\r\n addClass(this.$el, DISABLED)\r\n this.removeListeners()\r\n this.disabled = true\r\n\r\n if (isFunction(disabled)) {\r\n disabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n enable(name) {\r\n const enabled = this.attr('afterEnabled')\r\n\r\n if (name) {\r\n this._enable(name)\r\n } else {\r\n this.disabled = false\r\n removeClass(this.$el, DISABLED)\r\n this.addListeners()\r\n\r\n if (isFunction(enabled)) {\r\n enabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n show(name) {\r\n const opened = this.attr('afterOpened')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n removeClass(button.$el, HIDDEN)\r\n } else {\r\n removeClass($el, HIDDEN)\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n later(() => {\r\n opened.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide(name) {\r\n const closed = this.attr('afterClosed')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n addClass(button.$el, HIDDEN)\r\n } else {\r\n addClass($el, HIDDEN)\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n later(() => {\r\n closed.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n highlight(name) {\r\n const button = this.get(name)\r\n const ACTIVE = 'outline-toolbar_active'\r\n let $button\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n $button = button.$el\r\n\r\n if (hasClass($button, ACTIVE)) {\r\n removeClass($button, ACTIVE)\r\n } else {\r\n addClass($button, ACTIVE)\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.commands.clear()\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n if (this.isDisabled(name)) {\r\n return this\r\n }\r\n\r\n this.commands.execute(name)\r\n\r\n return this\r\n }\r\n\r\n onExecute(evt) {\r\n const $button = evt.delegateTarget\r\n let cmd = ''\r\n\r\n if ($button) {\r\n cmd = $button.getAttribute('data-cmd')\r\n\r\n if (cmd) {\r\n this.execute(cmd)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n on($el, `.outline-toolbar__button`, 'click', this.onExecute, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n off($el, '.outline-toolbar__button', this.onExecute)\r\n\r\n return this\r\n }\r\n}\r\n\r\nToolbar.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'ltr',\r\n closed: false,\r\n disabled: false,\r\n rounded: true,\r\n buttons: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterDisabled: null,\r\n afterEnabled: null,\r\n beforeDestroy: null,\r\n afterDestroy: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Toolbar\r\n","import addClass from './utils/dom/addClass'\r\n\r\nconst _updateSiblingElements = (siblingElement, isPrev) => {\r\n let tagName\r\n let $sibling = siblingElement\r\n\r\n while ($sibling) {\r\n tagName = $sibling.tagName.toLowerCase()\r\n\r\n if (tagName !== 'script' && tagName !== 'style') {\r\n addClass($sibling, 'outline-reader_sibling')\r\n }\r\n\r\n if (isPrev) {\r\n $sibling = $sibling.previousElementSibling\r\n } else {\r\n $sibling = $sibling.nextElementSibling\r\n }\r\n }\r\n}\r\n\r\nexport default _updateSiblingElements\r\n","import cloneDeep from './utils/lang/cloneDeep'\r\nimport later from './utils/lang/later'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport isFunction from './utils/types/isFunction'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport at from './utils/event/at'\r\nimport stop from './utils/event/stop'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\nimport Message from './message'\r\nimport Toolbar from './toolbar'\r\n\r\nimport _updateSiblingElements from './_updateSiblingElements'\r\n\r\nconst ENTER_READING_TIP = '进入阅读模式,按 ESC 键可退出阅读模式'\r\n\r\nclass Reader extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Reader.DEFAULTS)\r\n this.reading = false\r\n\r\n this.$target = null\r\n this.$paper = null\r\n this.$title = null\r\n this.$article = null\r\n this.$progress = null\r\n\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let target = null\r\n\r\n this.attr(options)\r\n\r\n target = this.attr('target')\r\n\r\n if (isString(target)) {\r\n this.$target = document.querySelector(target)\r\n } else if (isElement(target)) {\r\n this.$target = target\r\n }\r\n\r\n if (!this.$target) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n this._renderEdge()._paint(this.$target)\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$article.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint($content) {\r\n const $fragment = document.createDocumentFragment()\r\n const $children = [...$content.cloneNode(true).children]\r\n\r\n later(() => {\r\n $children.forEach(($child) => {\r\n $fragment.appendChild($child)\r\n })\r\n\r\n this.$article.appendChild($fragment)\r\n })\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const $paper = this.$paper\r\n const toolbar = this.toolbar\r\n\r\n if ($paper) {\r\n document.body.removeChild($paper)\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n this.erase()._paint(this.$target)\r\n return this\r\n }\r\n\r\n _renderEdge() {\r\n const $target = this.$target\r\n let title = this.attr('title')\r\n let $paper\r\n let $title\r\n let $article\r\n let $progress\r\n let $sibling\r\n\r\n $title = $target.querySelector('h1')\r\n\r\n if (isElement(title)) {\r\n $title = title\r\n }\r\n\r\n if (isElement($title)) {\r\n title = $title.innerText\r\n }\r\n\r\n $title = createElement(\r\n 'h1',\r\n {\r\n className: 'outline-reader__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n\r\n $article = createElement('article', {\r\n id: 'outline-reader__article',\r\n className: 'outline-reader__article'\r\n })\r\n this.$article = $article\r\n\r\n $progress = createElement('div', {\r\n className: 'outline-reader__progress'\r\n })\r\n this.$progress = $progress\r\n\r\n this.toolbar = new Toolbar({\r\n placement: 'rtl',\r\n buttons: [\r\n {\r\n name: 'print',\r\n icon: 'print',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.print\r\n }\r\n },\r\n {\r\n name: 'exit',\r\n icon: 'close',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.exit\r\n }\r\n }\r\n ]\r\n })\r\n\r\n $paper = createElement(\r\n 'section',\r\n {\r\n id: 'outline-reader',\r\n className: 'outline-reader outline-reader_hidden'\r\n },\r\n [$progress, $title, $article, this.toolbar.$el]\r\n )\r\n this.$paper = $paper\r\n\r\n document.body.appendChild($paper)\r\n\r\n later(() => {\r\n // 设置邻居节点的打印样式\r\n $sibling = $paper.previousElementSibling\r\n _updateSiblingElements($sibling, true)\r\n\r\n $sibling = $paper.nextElementSibling\r\n _updateSiblingElements($sibling)\r\n })\r\n\r\n return this\r\n }\r\n\r\n enter() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n const enterReadingTip = this.attr('enterReadingTip') || ENTER_READING_TIP\r\n\r\n if (this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n $siblings.forEach(($sibling) => {\r\n addClass($sibling, HIDDEN)\r\n })\r\n addClass($paper, READING)\r\n removeClass($paper, HIDDEN)\r\n this.toolbar.show()\r\n this.reading = true\r\n\r\n Message.info({\r\n round: true,\r\n message: enterReadingTip\r\n })\r\n\r\n this.$emit('enterReading')\r\n\r\n return this\r\n }\r\n\r\n exit() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n\r\n if (!this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n addClass($paper, HIDDEN)\r\n removeClass($paper, READING)\r\n $siblings.forEach(($sibling) => {\r\n removeClass($sibling, HIDDEN)\r\n })\r\n this.toolbar.hide()\r\n this.reading = false\r\n\r\n this.$emit('exitReading')\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.reading) {\r\n this.exit()\r\n } else {\r\n this.enter()\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n if (!isFunction(print)) {\r\n return this\r\n }\r\n\r\n print()\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n return this\r\n }\r\n\r\n onPrint() {\r\n this.print()\r\n return this\r\n }\r\n\r\n onEnterReading() {\r\n this.toggle()\r\n return this\r\n }\r\n\r\n onExitReading(evt) {\r\n const keyCode = evt.keyCode\r\n\r\n if (keyCode === 27 && this.reading) {\r\n this.toggle()\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n at(document, 'keyup', this.onExitReading, this, true)\r\n\r\n this.$on('toolbar:action:print', this.onPrint)\r\n this.$on('toolbar:action:reading', this.onEnterReading)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n off(document, 'keyup', this.onExitReading)\r\n\r\n this.$off('toolbar:action:print')\r\n this.$off('toolbar:action:reading')\r\n\r\n return this\r\n }\r\n}\r\n\r\nReader.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n target: '',\r\n title: '',\r\n enterReadingTip: ENTER_READING_TIP\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Reader\r\n","/**\r\n * 停止事件(阻止默认行为和阻止事件的捕获或冒泡)\r\n * ========================================================================\r\n * @method stop\r\n * @param {Event} evt - 事件对象\r\n *\r\n * @example\r\n *
\r\n * Service\r\n * Help\r\n *
\r\n *\r\n * const $nav = document.querySelector('#nav')\r\n * const $service = document.querySelector('.anchor')\r\n *\r\n * on($nav, 'click', function(evt) {\r\n * console.log('你点击了导航栏')\r\n * })\r\n *\r\n * on($anchor, 'click', function(evt) {\r\n * console.log('tagName', this.tagName)\r\n *\r\n * // 工作台输出:'a'\r\n * // 不会触发事件冒泡,输出:'你点击了导航栏'\r\n * // 也不会切换到 href 属性的页面,阻止了点击链接的默认行为\r\n * stopEvent(evt)\r\n * })\r\n */\r\nconst stop = function (evt) {\r\n evt.stopPropagation()\r\n evt.preventDefault()\r\n}\r\n\r\nexport default stop\r\n","import isFunction from '../types/isFunction'\r\nimport off from './off'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定事件\r\n * ========================================================================\r\n * @method at\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (必须) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst at = (el, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n const listener = function (evt) {\r\n let overrideContext = context || el\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default at\r\n"],"names":["toString","val","Object","prototype","apply","isFunction","isObject","o","isArray","Array","cloneDeep","obj","clone","from","assign","keys","forEach","key","later","fn","delay","arguments","length","undefined","setTimeout","isString","str","isElement","nodeName","tagName","nodeType","isDOM","el","isHTMLCollection","fragment","isTextNode","hasOwn","prop","hasOwnProperty","call","setAttribute","attr","value","toLowerCase","style","cssText","className","innerHTML","innerText","setAttributes","attrs","createElement","children","$fragment","document","createDocumentFragment","$el","isValidChild","child","append","$child","createTextNode","appendChild","every","hasClass","pattern","RegExp","allClass","classList","contains","exec","addClass","_classList","add","removeClass","remove","replace","CAPTURE_EVENTS","_off","type","capture","indexOf","_delegateListener","listeners","_listeners","index","listener","i","handler","splice","_delete","removeEventListener","purgeElement","recurse","$element","querySelector","$children","childNodes","getListeners","filter","off","extend","origin","source","_subscribers","_hasDirectSubscribersFor","topic","has","found","position","lastIndexOf","substring","_hasSubscribers","emit","data","async","execute","subscriber","message","callback","context","deliver","guid","uuid","prefix","_removeSubscriber","token","subject","execution","j","_removeSubscriberByToken","Base","constructor","options","this","initialize","render","addListeners","refresh","destroy","removeListeners","reload","$emit","event","publish","$on","push","subscribe","$off","unsubscribe","isPlainObject","getPrototypeOf","proto","isObjectLike","stripScripts","encodeHTML","CHARTS","tag","name","ICON","size","color","iconSet","width","height","defaultRules","cssRules","$icon","$svg","binds","svg","test","isSVG","xmlns","class","icon","SYMBOLS","getSymbols","patternName","patternSet","find","symbol","fullName","getSymbol","paint","$body","body","$icons","symbols","join","insertBefore","firstChild","matches","selector","sel","msMatchesSelector","getParentOrHost","host","parentNode","on","once","evt","target","getTarget","delegateTarget","closest","ctx","includeCTX","startsWith","overrideContext","addEventListener","instances","instance","Message","super","_default","DEFAULTS","id","closed","visible","offset","timer","destroyed","open","isClosed","isDestroyed","_getClassName","effect","round","closable","customClass","dangerouslyUseHTMLString","$type","$message","$text","$close","iconSize","_refreshIcon","HIDDEN","iconName","$use","_refreshMessage","text","_refreshClose","_refreshEl","clearTimer","clearTimeout","startTimer","duration","close","top","destroyAfterClosed","beforeClose","removeChild","onMouseEnter","onMouseLeave","onClose","config","item","offsetHeight","len","dom","parseInt","clear","Command","action","Commands","commands","get","cmd","command","del","_createButton","button","rounded","$anchor","href","link","$button","disabled","DISABLED","Toolbar","buttons","created","isDisabled","isExist","_getCommand","_self","bind","mounted","placement","_paint","hide","disable","erase","_remove","_add","_disable","_enable","enable","enabled","show","opened","toggle","highlight","ACTIVE","beforeDestroy","afterDestroy","onExecute","getAttribute","afterClosed","afterOpened","afterDisabled","afterEnabled","_updateSiblingElements","siblingElement","isPrev","$sibling","previousElementSibling","nextElementSibling","ENTER_READING_TIP","Reader","reading","$target","$paper","$title","$article","$progress","toolbar","_renderEdge","$content","cloneNode","title","print","exit","enter","READER","READING","$siblings","querySelectorAll","enterReadingTip","info","onPrint","onEnterReading","onExitReading","keyCode","stopPropagation","preventDefault","stop","at"],"mappings":"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"} \ No newline at end of file diff --git a/outline.css b/outline.css index 5c4343c..7e90237 100644 --- a/outline.css +++ b/outline.css @@ -638,6 +638,10 @@ body { height: initial !important; } + .outline-message, + .outline-toolbar { + display: none !important; + } .outline-reader { display: block !important; overflow: hidden; @@ -1038,4 +1042,4 @@ background-color: rgba(0, 0, 0, 0.15); } -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhcmlhYmxlcy5sZXNzIiwiLi4vPGlucHV0IGNzcyA2PiIsImljb25zLmxlc3MiLCJhbmNob3JzLmxlc3MiLCJkcmF3ZXIubGVzcyIsIm1peGlucy5sZXNzIiwiY2hhcHRlcnMubGVzcyIsInJlYWRlci5sZXNzIiwidG9vbGJhci5sZXNzIiwibWVzc2FnZS5sZXNzIiwic2Nyb2xsYmFyLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDQyx1QkFBQTtFQUNELDhCQUFBO0VBQWlDLCtCQUFBO0NDRWhDO0FBQ0QsbURBQW1EO0FBQ25EOzs7OztHQUtHO0FBQ0gsMEJBQTBCO0FBQzFCOzs7OztHQUtHO0FBQ0gsNEJBQTRCO0FBQzVCLGtEQUFrRDtBQ3BCQztFQUVuRCxtQkFBQTtFQUFzQixXQUFBO0VBQ1Qsc0JBQUE7RUFDVSx1QkFBQTtFQUNBLFdBQUE7RUFDYixZQUFBO0VBQ0EsaUJBQUE7Q0RzQlQ7QUNyQmM7RUFFVixtQkFBQTtFQUNZLFdBQUE7RUFDVCxTQUFBO0VBQ0gsVUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDTSx5Q0FBQTtVQUFBLGlDQUFBO0VBQ2EsaUJBQUE7Q0RzQnZCO0FDckJTO0VBQ1IsY0FBQTtDRHVCRDtBRXpDRDtFQUNFLG1CQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0NGMkNEO0FFekNDO0VBQ0UsY0FBQTtDRjJDSDtBRXpDRzs7O0VBR0UsWUFBQTtFQUNBLHNCQUFBO0NGMkNMO0FFeENHO0VBQ0UsZUFBQTtDRjBDTDtBRXRDQztFQUVJLHNCQUFBO0NGdUNMO0FFbENHO0VBQ0Usa0JBQUE7Q0ZvQ0w7QUV0Q0M7RUFNSSxtQkFBQTtFQUNBLFdBQUE7RUFDQSxTQUFBO0VBQ0Esb0NBQUE7VUFBQSw0QkFBQTtFQUNBLFdBQUE7Q0ZtQ0w7QUdyRUQ7RUFDRSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLCtCQUFB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QUNFLGlCQUFBO0VBQ0EsZ0JBQUE7Q1JzdUJQO0FReHVCSztFSjFKdUIsb0JBQUE7RUlnS25CLFVBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtDUnN1QlQ7QVFudUJPO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUnF1QlQ7QVFqdUJLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUm11QlA7QVFqdUJPO0VBQ0UsaUJBQUE7RUFDQSxnQkFBQTtDUm11QlQ7QVE3dEJDO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUit0Qkg7QVE1dEJLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUjh0QlA7QVEzdEJLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUjZ0QlA7QVF4dEJDO0VBQ0UsV0FBQTtDUjB0Qkg7QVF2dEJDO0VBQ0UsY0FBQTtDUnl0Qkg7QUFDRCwyQkFBMkI7QVMvN0IzQjtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsMkJBQUE7Q1RpOEJEO0FTLzdCQztFQUNFLDJCQUFBO0NUaThCSDtBUzc3Qkc7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NUKzdCTDtBUzU3Qkc7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NUODdCTDtBUzM3Qkc7RUFDRSxzQ0FBQTtDVDY3Qkw7QVN6N0JDO0VBQ0Usc0NBQUE7Q1QyN0JIIiwiZmlsZSI6Im91dGxpbmUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOnJvb3Qge1xyXG4gIC0tb3V0bGluZS16SW5kZXg6IDIwMDA7XHJcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XHJcbiAgLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoOiAxMDAlO1xyXG59XHJcbiIsIjpyb290IHtcbiAgLS1vdXRsaW5lLXpJbmRleDogMjAwMDtcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcbn1cbi8qID09PT09PT09PT0gY29sb3JzLnRoZW1lIC0g5Z+656GA6aKc6Imy5Y+Y6YeP6ZuG5ZCIID09PT09PT09PT0gKi9cbi8qKlxuICogZWxsaXBzaXMubGVzcyAtIOaWh+acrOecgeeVpSBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyoqXG4gKiBzaGFkb3cubGVzcyAtIOmYtOW9seagt+W8j+iuvue9riBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4yMFxuICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09PT09PSBpY29uLnRoZW1lIC0gc3ZnIOWbvuagh+eahOagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9fc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWljb25faGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmc6aG92ZXIgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydDpob3ZlciB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydCAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGxlZnQ6IC0xZW07XG59XG4ub3V0bGluZS1kcmF3ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IC0xO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19tb2RhbCB7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDIxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDUycHg7XG4gIGxpbmUtaGVpZ2h0OiA1MnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAxMnB4O1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICM5OTk7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2UgLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZTpob3ZlciB7XG4gIGNvbG9yOiAjNjY2O1xufVxuLm91dGxpbmUtZHJhd2VyX19tYWluIHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fb3ZlcmxheSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC4xO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55LFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55IHtcbiAgd2lkdGg6IDI4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgd2lkdGg6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICB3aWR0aDogNTQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIsXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIge1xuICB3aWR0aDogNjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgd2lkdGg6IDcyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICB3aWR0aDogOTYwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtMjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTY5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3NtYWxsLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNzMwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX2xhcmdlLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICBoZWlnaHQ6IDI0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgaGVpZ2h0OiAzMjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3NtYWxsIHtcbiAgaGVpZ2h0OiAzNjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIGhlaWdodDogNDAwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgaGVpZ2h0OiA0NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2UsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX2xhcmdlIHtcbiAgaGVpZ2h0OiA0ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgdG9wOiBpbml0aWFsO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgcmlnaHQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIHRvcDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgYm90dG9tOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9ydGwsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfdHRiLFxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB3aWR0aDogY2FsYygxMDAlIC0gNGVtKTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9mdWxsIHtcbiAgcGFkZGluZzogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiB2YXIoLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1jaGFwdGVycy1wYXJlbnQge1xuICB0cmFuc2l0aW9uOiAwLjNzIGVhc2UtaW4tb3V0O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbGlzdCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19zdWJqZWN0LFxuLm91dGxpbmUtY2hhcHRlcnNfX2l0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2xpc3Qge1xuICBwYWRkaW5nOiAwLjVlbSAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3N1YmplY3Qge1xuICBwYWRkaW5nLWxlZnQ6IDFlbTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19pdGVtIHtcbiAgbWFyZ2luOiAwO1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3BsYWNlaG9sZGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y4Zjk7XG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzA1ODk0MjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAgMS41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzU1NTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19jb2RlIHtcbiAgcGFkZGluZy1yaWdodDogMC41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5LFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xuICB0b3A6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIG1heC1oZWlnaHQ6IHZhcigtLW91dGxpbmUtc3RpY2t5LWhlaWdodCk7XG59XG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19mb2xkZWQge1xuICB3aWR0aDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi8qKlxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nLndyYXBwZXIucG9zdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogM2VtIDRlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgc2Nyb2xsLXRpbWVsaW5lLW5hbWU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDM7XG4gIGhlaWdodDogNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbiAgc2NhbGU6IDAgMTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcbiAgYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAzO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDIycHg7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDM2cHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGZlNjtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggI2RkZDtcbiAgY29sb3I6ICM5OTk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX19jbG9zZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlciBoMSxcbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMS4zZW07XG4gIGZvbnQtc2l6ZTogMy41ZW07XG59XG5Aa2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAgIHJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICB9XG59XG5AbWVkaWEgcHJpbnQge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fY2xvc2UsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fcHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlIHtcbiAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHByZSxcbiAgLm91dGxpbmUtcmVhZGVyIGNvZGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgdGFibGUsXG4gIC5vdXRsaW5lLXJlYWRlciBpbWcsXG4gIC5vdXRsaW5lLXJlYWRlciBzdmcge1xuICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLyogPT09PT09PT09PSBidXR0b25zLnRoZW1lIC0g5oyJ6ZKu5a+86Iiq5qC35byPID09PT09PT09PT0gKi9cbi5vdXRsaW5lLXRvb2xiYXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk5O1xuICBtYXJnaW46IDA7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMTBweDtcbiAgd2lkdGg6IDM2cHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGZlNjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM5OTk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBmaWxsOiBjdXJyZW50Y29sb3I7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZS5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBib3JkZXItY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZS5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtdG9vbGJhcl9yb3VuZGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgY29sb3I6ICM5OTk7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbms6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG4ub3V0bGluZS10b29sYmFyX3R0Yixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IHtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiAub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2J0dCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiB7XG4gIHRvcDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICB0b3A6IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBib3R0b206IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dC5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgYm90dG9tOiAtNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiA1NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwge1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bC5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgcmlnaHQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIge1xuICB0b3A6IDUwJTtcbiAgbGVmdDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfbHRyLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBsZWZ0OiAtODZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9ydGwgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX2J0dCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfbHRyIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qKlxuICogZm9udC5sZXNzIC0g5a2X5L2T55u45YWz5qC35byPXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xNlxuICovXG4vKiA9PT09PT0g5a2X5L2TID09PT09PSAqL1xuLyogPT09PT09IOWtl+mHjSA9PT09PT0gKi9cbi8qID09PT09PSDlrZflj7cgPT09PT09ICovXG4ub3V0bGluZS1tZXNzYWdlIHtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk7XG4gIG9wYWNpdHk6IDAuMTtcbiAgdG9wOiAtNTBweDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCA1MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb2xvcjogIzY2NjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2NvbnRlbnQge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWFyZ2luOiAwO1xuICBtYXgtd2lkdGg6IDcwMHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGNvbG9yOiAjNjY2O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UsXG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgbGVmdDogMDtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2Uge1xuICByaWdodDogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzY2Njtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjVkNWQ7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTBweDtcbiAgcGFkZGluZzogMCA1MHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2luZm8ge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICM1MDdhZmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2Y4ZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY5OTAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmYmU2O1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzA1ODk0MjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZjZlYjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZmY1ZDVkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMWYwO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgd2lkdGg6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24gLm91dGxpbmUtaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0IHtcbiAgbWluLXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfaW5mbyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmOTkwMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2VfZXJyb3IgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHRvcDogMTBweDtcbiAgbGVmdDogMTBweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0Lm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAyMHB4IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAxOTVweDtcbiAgcGFkZGluZzogMCA0MHB4IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMTVweDtcbiAgcGFkZGluZzogMCAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgNTBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDIzMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCAxNXB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMjEwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3Zpc2libGUge1xuICBvcGFjaXR5OiAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogPT09PT0gU2Nyb2xsYmFyID09PT09ICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDdweDtcbiAgaGVpZ2h0OiA3cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuIiwiLyogPT09PT09PT09PSBpY29uLnRoZW1lIC0gc3ZnIOWbvuagh+eahOagt+W8jyA9PT09PT09PT09ICovXHJcbi5vdXRsaW5lLWljb24ge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIHdpZHRoOiAxZW07XHJcbiAgaGVpZ2h0OiAxZW07XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fc3ZnIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHdpZHRoOiAxZW07XHJcbiAgICBoZWlnaHQ6IDFlbTtcclxuICAgIGZpbGw6IGN1cnJlbnRjb2xvcjtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJ2NvbG9ycyc7XHJcblxyXG4ub3V0bGluZS1oZWFkaW5nIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmX19hbmNob3Ige1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHByaW1hcnlfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfc3RhcnQge1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvciB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgei1pbmRleDogMjtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgbGVmdDogLTFlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCAndmFyaWFibGVzJztcclxuQGltcG9ydCAnY29sb3JzJztcclxuQGltcG9ydCAnc2hhZG93JztcclxuXHJcbi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IC0xO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIG1hcmdpbjogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fbW9kYWwge1xyXG4gICAgLnNoYWRvd19saWdodF9yZWd1bGFyKCk7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjE7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX19tYWluLFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgfVxyXG5cclxuICAmX19oZWFkZXIsXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUsXHJcbiAgJl9fbWFpbixcclxuICAmX19mb290ZXIge1xyXG4gICAgcGFkZGluZzogMCAxNnB4O1xyXG4gIH1cclxuXHJcbiAgJl9faGVhZGVyLFxyXG4gICZfX3RpdGxlIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIGhlaWdodDogNTJweDtcclxuICAgIGxpbmUtaGVpZ2h0OiA1MnB4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBtYXJnaW46IDAgMTZweDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gIH1cclxuXHJcbiAgJl9fY2xvc2Uge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgcmlnaHQ6IDEycHg7XHJcbiAgICB3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgLm91dGxpbmUtaWNvbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgei1pbmRleDogMjtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19tYWluIHtcclxuICAgIGZsZXg6IDE7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcblxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX292ZXJsYXkge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgb3BhY2l0eTogMC4xO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfcnRsLFxyXG4gICZfbHRyIHtcclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgIHdpZHRoOiAyODBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9taW5pIHtcclxuICAgICAgICB3aWR0aDogNDgwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgIHdpZHRoOiA1NDBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICB3aWR0aDogNjgwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWVkaXVtIHtcclxuICAgICAgICB3aWR0aDogNzIwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgIHdpZHRoOiA5NjBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9ydGwge1xyXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC0yOTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC00OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtNTUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtNjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgcmlnaHQ6IC03MzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtOTcwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2x0ciB7XHJcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTI5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9taW5pIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtNTUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC02OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWVkaXVtIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtNzMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtOTcwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3R0YixcclxuICAmX2J0dCB7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgaGVpZ2h0OiAyNDBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9taW5pIHtcclxuICAgICAgICBoZWlnaHQ6IDMyMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICBoZWlnaHQ6IDM2MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgIGhlaWdodDogNDAwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWVkaXVtIHtcclxuICAgICAgICBoZWlnaHQ6IDQ0MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICBoZWlnaHQ6IDQ4MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3R0YiB7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTI1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9taW5pIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC0zMzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc21hbGwge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTM3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC00MTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWVkaXVtIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC00NTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbGFyZ2Uge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHRvcDogLTQ5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9idHQge1xyXG4gICAgdG9wOiBpbml0aWFsO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC0yNTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtMzMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC0zNzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtNDEwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtNDUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBib3R0b206IC00OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfb3BlbmVkIHtcclxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuXHJcbiAgICAgICZfcnRsIHtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sdHIge1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfdHRiIHtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfYnR0IHtcclxuICAgICAgICBib3R0b206IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfb2Zmc2V0IHtcclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3J0bCxcclxuICAgICAgJl9sdHIge1xyXG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfdHRiLFxyXG4gICAgICAmX2J0dCB7XHJcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDRlbSk7XHJcbiAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9vcGVuZWQge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAgICAgJl9ydGwge1xyXG4gICAgICAgICAgICByaWdodDogMmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICZfbHRyIHtcclxuICAgICAgICAgICAgbGVmdDogMmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICZfdHRiIHtcclxuICAgICAgICAgICAgdG9wOiAyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJl9idHQge1xyXG4gICAgICAgICAgICBib3R0b206IDJlbTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfYXV0byB7XHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl9ydGwsXHJcbiAgICAgICZfbHRyIHtcclxuICAgICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9mdWxsIHtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgfVxyXG59XHJcbiIsIi8qKlxyXG4gKiBtaXhpbnMubGVzcyAtIOW3peWFt+WHveaVsFxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cclxuICogVXBkYXRlOiAyMDIyLjMuMTFcclxuICovXHJcbkBpbXBvcnQgJy4vY29sb3JzJztcclxuXHJcbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXHJcbi5lbGxpcHNpcyAoQGxpbmVzKSB3aGVuIChAbGluZXM9MSkge1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLmVsbGlwc2lzIChAbGluZXMpIHdoZW4gKEBsaW5lcz49Mikge1xyXG4gIC13ZWJraXQtbGluZS1jbGFtcDogQGxpbmVzO1xyXG4gIGRpc3BsYXk6IGJveDtcclxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi8qID09PT09PSDlnIbop5LmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXHJcbi5yYWRpdXMoQG51bTogMnB4KSB7XHJcbiAgYm9yZGVyLXJhZGl1czogQG51bTtcclxufVxyXG5cclxuLnJhZGl1c19ub25lKCkge1xyXG4gIC5yYWRpdXMoMCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfbWluaSgpIHtcclxuICAucmFkaXVzKDJweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfc21hbGwoKSB7XHJcbiAgLnJhZGl1cygzcHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX3JlZ3VsYXIoKSB7XHJcbiAgLnJhZGl1cyg0cHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX21lZGl1bSgpIHtcclxuICAucmFkaXVzKDVweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfbGFyZ2UoKSB7XHJcbiAgLnJhZGl1cygxMHB4KTtcclxufVxyXG5cclxuLnJhZGl1c19odWdlKCkge1xyXG4gIC5yYWRpdXMoMTZweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfcm91bmQoKSB7XHJcbiAgLnJhZGl1cygzMHB4KTtcclxufVxyXG5cclxuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cclxuLnNoYWRvdyhAb2Zmc2V0OiAwIDAgNnB4IDFweCwgQGNvbG9yOiBAcHJpbWFyeV9ib3JkZXJfY29sb3IpIHtcclxuICBib3gtc2hhZG93OiBAb2Zmc2V0IEBjb2xvcjtcclxufVxyXG5cclxuLnNoYWRvd19yZWd1bGFyKEBjb2xvcjogQHByaW1hcnlfYm9yZGVyX2NvbG9yKSB7XHJcbiAgLnNoYWRvdygwIDAgNnB4IDFweCwgQGNvbG9yKTtcclxufVxyXG5cclxuLnNoYWRvd19sYXJnZShAY29sb3I6IEBwcmltYXJ5X2JvcmRlcl9jb2xvcikge1xyXG4gIC5zaGFkb3coMCAwIDEycHggMXB4LCBAY29sb3IpO1xyXG59XHJcblxyXG4uc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKSB7XHJcbiAgLnNoYWRvd19yZWd1bGFyKCk7XHJcbn1cclxuXHJcbi5zaGFkb3dfbGlnaHRfbGFyZ2UoKSB7XHJcbiAgLnNoYWRvd19sYXJnZSgpO1xyXG59XHJcblxyXG4uc2hhZG93X2RhcmtfcmVndWxhcigpIHtcclxuICAuc2hhZG93X3JlZ3VsYXIoQHNlY29uZGFyeV9ib3JkZXJfY29sb3IpO1xyXG59XHJcbiIsIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XHJcbkBpbXBvcnQgJ2NvbG9ycyc7XHJcbkBpbXBvcnQgJ2VsbGlwc2lzJztcclxuXHJcbi5vdXRsaW5lLWNoYXB0ZXJzIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBtYXJnaW46IDA7XHJcbiAgd2lkdGg6IHZhcigtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGgpO1xyXG4gIG92ZXJmbG93OiBhdXRvO1xyXG5cclxuICAmLXBhcmVudCB7XHJcbiAgICB0cmFuc2l0aW9uOiAwLjNzIGVhc2UtaW4tb3V0O1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwIDE2cHg7XHJcbiAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgIHBhZGRpbmc6IDAgMTZweDtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX21haW4ge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19saXN0LFxyXG4gICZfX3N1YmplY3QsXHJcbiAgJl9faXRlbSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19saXN0IHtcclxuICAgIHBhZGRpbmc6IDAuNWVtIDA7XHJcbiAgfVxyXG5cclxuICAmX19zdWJqZWN0IHtcclxuICAgIHBhZGRpbmctbGVmdDogMWVtO1xyXG4gIH1cclxuXHJcbiAgJl9faXRlbSB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBsaW5lLWhlaWdodDogMzBweDtcclxuICAgIGZvbnQtc2l6ZTogMTNweDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19wbGFjZWhvbGRlciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQGhvdmVyX2JnX2NvbG9yO1xyXG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCBAc3VjY2Vzc19jb2xvcjtcclxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2FuY2hvciB7XHJcbiAgICAuZWxsaXBzaXMoMSk7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6IDAgMS41ZW07XHJcblxyXG4gICAgJjpsaW5rLFxyXG4gICAgJjp2aXNpdGVkLFxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgY29sb3I6IEBzZWNvbmRhcnlfdGV4dF9jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fY29kZSB7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVlbTtcclxuICB9XHJcblxyXG4gICZfaGlnaGxpZ2h0IHtcclxuICAgICYub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yIHtcclxuICAgICAgJjpsaW5rLFxyXG4gICAgICAmOnZpc2l0ZWQsXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9zdGlja3ksXHJcbiAgJl9maXhlZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAub3V0bGluZS1jaGFwdGVycyB7XHJcbiAgICAgICZfX3RpdGxlLFxyXG4gICAgICAmX19tYWluIHtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX190aXRsZSB7XHJcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfX21haW4ge1xyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfc3RpY2t5IHtcclxuICAgIHBvc2l0aW9uOiBzdGlja3k7XHJcbiAgICBtYXgtaGVpZ2h0OiB2YXIoLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgJl9maXhlZCB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgJl9oaWRkZW4ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gICZfZm9sZGVkIHtcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCAnY29sb3JzJztcclxuQGltcG9ydCAnbWl4aW5zJztcclxuXHJcbi5vdXRsaW5lLXJlYWRlciB7XHJcbiAgJl9fY2xvc2Uge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlIHtcclxuICAgIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWkgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9oaWRkZW4ge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICYub3V0bGluZS1yZWFkZXJfc2libGluZyB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcbiAgICAgICYud3JhcHBlciB7XHJcbiAgICAgICAgJi5wb3N0IHtcclxuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLS1yZWFkaW5nIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBwYWRkaW5nOiAzZW0gNGVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgc2Nyb2xsLXRpbWVsaW5lLW5hbWU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcclxuICAgIG92ZXJmbG93OiBzY3JvbGw7XHJcblxyXG4gICAgLm91dGxpbmUtcmVhZGVyIHtcclxuICAgICAgJl9fcHJvZ3Jlc3Mge1xyXG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICB6LWluZGV4OiAzO1xyXG4gICAgICAgIGhlaWdodDogNHB4O1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgICAgIHNjYWxlOiAwIDE7XHJcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcclxuICAgICAgICBhbmltYXRpb246IG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIGxpbmVhcjtcclxuICAgICAgICBhbmltYXRpb24tdGltZWxpbmU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fY2xvc2Uge1xyXG4gICAgICAgIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgICB6LWluZGV4OiAzO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIHJpZ2h0OiAyMnB4O1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICB3aWR0aDogMzZweDtcclxuICAgICAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDhweCBAc2Vjb25kYXJ5X2JvcmRlcl9jb2xvcjtcclxuICAgICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgICAgICAgY29sb3I6IEB3aGl0ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGgxLFxyXG4gICAgICAmX190aXRsZSB7XHJcbiAgICAgICAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjNlbTtcclxuICAgICAgICBmb250LXNpemU6IDMuNWVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcclxuICB0byB7XHJcbiAgICBzY2FsZTogMSAxO1xyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XHJcbiAgLm91dGxpbmUtcmVhZGVyIHtcclxuICAgICYtLXJlYWRpbmcge1xyXG4gICAgICBwYWRkaW5nOiAwIDEuMjVlbTtcclxuICAgIH1cclxuXHJcbiAgICAmX19jbG9zZSB7XHJcbiAgICAgIHJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuODtcclxuICAgIH1cclxuXHJcbiAgICAmX190aXRsZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIHByaW50IHtcclxuICBodG1sLFxyXG4gIGJvZHkge1xyXG4gICAgaGVpZ2h0OiBpbml0aWFsICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICAub3V0bGluZS1yZWFkZXIge1xyXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgaDEsXHJcbiAgICAmX190aXRsZSB7XHJcbiAgICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICAgICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJi5vdXRsaW5lLXJlYWRlciB7XHJcbiAgICAgICYtLXJlYWRpbmcge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xyXG4gICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGgxLFxyXG4gICAgICAmX190aXRsZSB7XHJcbiAgICAgICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfX2Nsb3NlLFxyXG4gICAgICAmX19wcm9ncmVzcyB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJlIHtcclxuICAgICAgcGFkZGluZzogMWVtICFpbXBvcnRhbnQ7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBib3JkZXJfY29sb3IgIWltcG9ydGFudDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlLFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIHRhYmxlLFxyXG4gICAgaW1nLFxyXG4gICAgc3ZnIHtcclxuICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcclxuICAgIH1cclxuXHJcbiAgICAmX3NpYmxpbmcge1xyXG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT0gYnV0dG9ucy50aGVtZSAtIOaMiemSruWvvOiIquagt+W8jyA9PT09PT09PT09ICovXHJcbkBpbXBvcnQgJ2NvbG9ycyc7XHJcbkBpbXBvcnQgJ3NoYWRvdyc7XHJcblxyXG4ub3V0bGluZS10b29sYmFyIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgei1pbmRleDogOTk5OTk7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fYnV0dG9uIHtcclxuICAgIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIG1hcmdpbjogMTBweDtcclxuICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgaGVpZ2h0OiAzNnB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgJi5oaWRlIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2FuY2hvciB7XHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pY29uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICBmaWxsOiBjdXJyZW50Y29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9hY3RpdmUge1xyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXIge1xyXG4gICAgICAmX19idXR0b24ge1xyXG4gICAgICAgIGNvbG9yOiBAd2hpdGU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvciB7XHJcbiAgICAgICY6bGluayxcclxuICAgICAgJjp2aXNpdGVkLFxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3JvdW5kZWQge1xyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2Rpc2FibGVkIHtcclxuICAgICYub3V0bGluZS10b29sYmFyLFxyXG4gICAgLm91dGxpbmUtdG9vbGJhciB7XHJcbiAgICAgICZfX2FuY2hvcjpsaW5rLFxyXG4gICAgICAmX19hbmNob3I6dmlzaXRlZCxcclxuICAgICAgJl9fYW5jaG9yOmhvdmVyLFxyXG4gICAgICAmX19idXR0b24ge1xyXG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICBib3JkZXItY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19idXR0b24ge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBkaXNhYmxlZF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIsXHJcbiAgJl9idHQge1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG5cclxuICAgIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiIHtcclxuICAgIHRvcDogMTJweDtcclxuXHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICB0b3A6IC01NnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9idHQge1xyXG4gICAgYm90dG9tOiAxMnB4O1xyXG5cclxuICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgIGJvdHRvbTogLTU2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3J0bCxcclxuICAmX2x0ciB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICB3aWR0aDogNTZweDtcclxuICB9XHJcblxyXG4gICZfcnRsIHtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgcmlnaHQ6IDEycHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgcmlnaHQ6IC04NnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9sdHIge1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiAxMnB4O1xyXG5cclxuICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgIGxlZnQ6IC04NnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIsXHJcbiAgJl9ydGwsXHJcbiAgJl9idHQsXHJcbiAgJl9sdHIge1xyXG4gICAgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcclxuICAgICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJy4vY29sb3JzJztcclxuQGltcG9ydCAnLi9mb250JztcclxuQGltcG9ydCAnLi9taXhpbnMnO1xyXG5AaW1wb3J0ICcuL2ljb25zJztcclxuXHJcbi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gIC5yYWRpdXNfc21hbGwoKTtcclxuICAuc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKTtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgei1pbmRleDogOTk5OTtcclxuICBvcGFjaXR5OiAwLjE7XHJcbiAgdG9wOiAtNTBweDtcclxuICBsZWZ0OiA1MCU7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwIDUwcHg7XHJcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgZm9udC1zaXplOiBAZm9udF9zaXplX3NtYWxsO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2NvbnRlbnQge1xyXG4gICAgLmVsbGlwc2lzKDEpO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbWF4LXdpZHRoOiA3MDBweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2Nsb3NlLFxyXG4gICZfX2ljb24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogMDtcclxuICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9faWNvbiB7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgY29sb3I6IEB3aGl0ZTtcclxuXHJcbiAgICAub3V0bGluZS1pY29uIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2Nsb3NlIHtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuXHJcbiAgICAub3V0bGluZS1pY29uIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9pbmZvIHtcclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcHJpbWFyeV9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfd2FybmluZyB7XHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdhcm5pbmdfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N1Y2Nlc3Mge1xyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9lcnJvciB7XHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGRhbmdlcl9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcGxhaW4ge1xyXG4gICAgbWluLXdpZHRoOiAxOTBweDtcclxuICAgIHBhZGRpbmc6IDAgNTBweCAwIDE1cHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gICAgICAmX2luZm8ge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQHByaW1hcnlfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGluZm9fdGlwX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3dhcm5pbmcge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQHdhcm5pbmdfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdhcm5pbmdfdGlwX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3N1Y2Nlc3Mge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfdGlwX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2Vycm9yIHtcclxuICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEBkYW5nZXJfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGRhbmdlcl90aXBfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcblxyXG4gICAgICAub3V0bGluZS1pY29uIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2xpZ2h0IHtcclxuICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDQwcHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gICAgICAmX2luZm8ge1xyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgY29sb3I6IEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl93YXJuaW5nIHtcclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiBAd2FybmluZ19jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc3VjY2VzcyB7XHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2Vycm9yIHtcclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiBAZGFuZ2VyX2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3JvdW5kIHtcclxuICAgIC5yYWRpdXMoMjBweCk7XHJcblxyXG4gICAgJi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gICAgICAmX2RlZmF1bHQge1xyXG4gICAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xyXG5cclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIC5yYWRpdXMoMTBweCk7XHJcbiAgICAgICAgICB0b3A6IDEwcHg7XHJcbiAgICAgICAgICBsZWZ0OiAxMHB4O1xyXG4gICAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xyXG4gICAgICAgICAgbWluLXdpZHRoOiAyMDBweDtcclxuICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAwIDQwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3BsYWluIHtcclxuICAgICAgICBtaW4td2lkdGg6IDE5NXB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgNDBweCAwIDIwcHg7XHJcblxyXG4gICAgICAgICYub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xyXG4gICAgICAgICAgbWluLXdpZHRoOiAyMTVweDtcclxuICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZnVsbC13aWR0aCB7XHJcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xyXG4gICAgcGFkZGluZzogMCAxMHB4IDAgNTBweDtcclxuXHJcbiAgICAmLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgICAgICZfcGxhaW4ge1xyXG4gICAgICAgIG1pbi13aWR0aDogMjMwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMCAxMHB4IDAgMTVweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9saWdodCB7XHJcbiAgICAgICAgbWluLXdpZHRoOiAyMTBweDtcclxuICAgICAgICBwYWRkaW5nOiAwIDEwcHggMCA0MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3Zpc2libGUge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcblxyXG4gICZfaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xyXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICB3aWR0aDogN3B4O1xyXG4gIGhlaWdodDogN3B4O1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG5cclxuICAmLXRyYWNrLXBpZWNlIHtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIH1cclxuXHJcbiAgJi10aHVtYiB7XHJcbiAgICAmOnZlcnRpY2FsIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcclxuICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3Jpem9udGFsIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcclxuICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbiAgfVxyXG59XHJcbiJdfQ== */ +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhcmlhYmxlcy5sZXNzIiwiLi4vPGlucHV0IGNzcyA2PiIsImljb25zLmxlc3MiLCJhbmNob3JzLmxlc3MiLCJkcmF3ZXIubGVzcyIsIm1peGlucy5sZXNzIiwiY2hhcHRlcnMubGVzcyIsInJlYWRlci5sZXNzIiwidG9vbGJhci5sZXNzIiwibWVzc2FnZS5sZXNzIiwic2Nyb2xsYmFyLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDQyx1QkFBQTtFQUNELDhCQUFBO0VBQWlDLCtCQUFBO0NDRWhDO0FBQ0QsbURBQW1EO0FBQ25EOzs7OztHQUtHO0FBQ0gsMEJBQTBCO0FBQzFCOzs7OztHQUtHO0FBQ0gsNEJBQTRCO0FBQzVCLGtEQUFrRDtBQ3BCQztFQUVuRCxtQkFBQTtFQUFzQixXQUFBO0VBQ1Qsc0JBQUE7RUFDVSx1QkFBQTtFQUNBLFdBQUE7RUFDYixZQUFBO0VBQ0EsaUJBQUE7Q0RzQlQ7QUNyQmM7RUFFVixtQkFBQTtFQUNZLFdBQUE7RUFDVCxTQUFBO0VBQ0gsVUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDTSx5Q0FBQTtVQUFBLGlDQUFBO0VBQ2EsaUJBQUE7Q0RzQnZCO0FDckJTO0VBQ1IsY0FBQTtDRHVCRDtBRXpDRDtFQUNFLG1CQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0NGMkNEO0FFekNDO0VBQ0UsY0FBQTtDRjJDSDtBRXpDRzs7O0VBR0UsWUFBQTtFQUNBLHNCQUFBO0NGMkNMO0FFeENHO0VBQ0UsZUFBQTtDRjBDTDtBRXRDQztFQUVJLHNCQUFBO0NGdUNMO0FFbENHO0VBQ0Usa0JBQUE7Q0ZvQ0w7QUV0Q0M7RUFNSSxtQkFBQTtFQUNBLFdBQUE7RUFDQSxTQUFBO0VBQ0Esb0NBQUE7VUFBQSw0QkFBQTtFQUNBLFdBQUE7Q0ZtQ0w7QUdyRUQ7RUFDRSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLCtCQUFB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QixvQkFBQTtDSms0QjVCO0FReHVCSztFQUNFLGlCQUFBO0VBQ0EsZ0JBQUE7Q1IwdUJQO0FRNXVCSztFSjFKdUIsb0JBQUE7RUlnS25CLFVBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtDUjB1QlQ7QVF2dUJPO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUnl1QlQ7QVFydUJLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUnV1QlA7QVFydUJPO0VBQ0UsaUJBQUE7RUFDQSxnQkFBQTtDUnV1QlQ7QVFqdUJDO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUm11Qkg7QVFodUJLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUmt1QlA7QVEvdEJLO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtDUml1QlA7QVE1dEJDO0VBQ0UsV0FBQTtDUjh0Qkg7QVEzdEJDO0VBQ0UsY0FBQTtDUjZ0Qkg7QUFDRCwyQkFBMkI7QVNuOEIzQjtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsMkJBQUE7Q1RxOEJEO0FTbjhCQztFQUNFLDJCQUFBO0NUcThCSDtBU2o4Qkc7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NUbThCTDtBU2g4Qkc7RUFDRSxzQ0FBQTtFQUNBLDJCQUFBO0NUazhCTDtBUy83Qkc7RUFDRSxzQ0FBQTtDVGk4Qkw7QVM3N0JDO0VBQ0Usc0NBQUE7Q1QrN0JIIiwiZmlsZSI6Im91dGxpbmUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOnJvb3Qge1xyXG4gIC0tb3V0bGluZS16SW5kZXg6IDIwMDA7XHJcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XHJcbiAgLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoOiAxMDAlO1xyXG59XHJcbiIsIjpyb290IHtcbiAgLS1vdXRsaW5lLXpJbmRleDogMjAwMDtcbiAgLS1vdXRsaW5lLXN0aWNreS1oZWlnaHQ6IDEwMCU7XG4gIC0tb3V0bGluZS1jaGFwdGVycy13aWR0aDogMTAwJTtcbn1cbi8qID09PT09PT09PT0gY29sb3JzLnRoZW1lIC0g5Z+656GA6aKc6Imy5Y+Y6YeP6ZuG5ZCIID09PT09PT09PT0gKi9cbi8qKlxuICogZWxsaXBzaXMubGVzcyAtIOaWh+acrOecgeeVpSBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xMVxuICovXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xuLyoqXG4gKiBzaGFkb3cubGVzcyAtIOmYtOW9seagt+W8j+iuvue9riBtaXhpbngg5Ye95pWwXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4yMFxuICovXG4vKiA9PT09PT0g6Zi05b2x5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09PT09PSBpY29uLnRoZW1lIC0gc3ZnIOWbvuagh+eahOagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtaWNvbl9fc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWljb25faGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmc6aG92ZXIgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydDpob3ZlciB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydCAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGxlZnQ6IC0xZW07XG59XG4ub3V0bGluZS1kcmF3ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IC0xO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19tb2RhbCB7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDIxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlLFxuLm91dGxpbmUtZHJhd2VyX19tYWluLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2hlYWRlcixcbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBoZWlnaHQ6IDUycHg7XG4gIGxpbmUtaGVpZ2h0OiA1MnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAxMnB4O1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICM5OTk7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fY2xvc2UgLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZTpob3ZlciB7XG4gIGNvbG9yOiAjNjY2O1xufVxuLm91dGxpbmUtZHJhd2VyX19tYWluIHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fb3ZlcmxheSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC4xO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55LFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55IHtcbiAgd2lkdGg6IDI4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgd2lkdGg6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICB3aWR0aDogNTQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIsXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIge1xuICB3aWR0aDogNjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgd2lkdGg6IDcyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICB3aWR0aDogOTYwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtMjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTY5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3NtYWxsLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNzMwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX2xhcmdlLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICBoZWlnaHQ6IDI0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgaGVpZ2h0OiAzMjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3NtYWxsIHtcbiAgaGVpZ2h0OiAzNjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIGhlaWdodDogNDAwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgaGVpZ2h0OiA0NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2UsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX2xhcmdlIHtcbiAgaGVpZ2h0OiA0ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgdG9wOiBpbml0aWFsO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgcmlnaHQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIHRvcDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgYm90dG9tOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9ydGwsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfdHRiLFxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB3aWR0aDogY2FsYygxMDAlIC0gNGVtKTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9mdWxsIHtcbiAgcGFkZGluZzogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiB2YXIoLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1jaGFwdGVycy1wYXJlbnQge1xuICB0cmFuc2l0aW9uOiAwLjNzIGVhc2UtaW4tb3V0O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlIHtcbiAgbWFyZ2luOiAwIDE2cHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19tYWluIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbGlzdCxcbi5vdXRsaW5lLWNoYXB0ZXJzX19zdWJqZWN0LFxuLm91dGxpbmUtY2hhcHRlcnNfX2l0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2xpc3Qge1xuICBwYWRkaW5nOiAwLjVlbSAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3N1YmplY3Qge1xuICBwYWRkaW5nLWxlZnQ6IDFlbTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19pdGVtIHtcbiAgbWFyZ2luOiAwO1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX3BsYWNlaG9sZGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y4Zjk7XG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzA1ODk0MjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3Ige1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAgMS41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzU1NTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19jb2RlIHtcbiAgcGFkZGluZy1yaWdodDogMC41ZW07XG59XG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS1jaGFwdGVyc19oaWdobGlnaHQub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5LFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xuICB0b3A6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX3RpdGxlLFxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX19tYWluLFxuLm91dGxpbmUtY2hhcHRlcnNfZml4ZWQgLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIG1heC1oZWlnaHQ6IHZhcigtLW91dGxpbmUtc3RpY2t5LWhlaWdodCk7XG59XG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19mb2xkZWQge1xuICB3aWR0aDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi8qKlxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nLndyYXBwZXIucG9zdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogM2VtIDRlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgc2Nyb2xsLXRpbWVsaW5lLW5hbWU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDM7XG4gIGhlaWdodDogNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUwN2FmZTtcbiAgc2NhbGU6IDAgMTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcbiAgYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XG4gIGFuaW1hdGlvbi10aW1lbGluZTogLS1Qcm9ncmVzc1RpbWVsaW5lO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAzO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDIycHg7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDM2cHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGZlNjtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggI2RkZDtcbiAgY29sb3I6ICM5OTk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX19jbG9zZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlciBoMSxcbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjY3ZW0gMCAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMS4zZW07XG4gIGZvbnQtc2l6ZTogMy41ZW07XG59XG5Aa2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAgIHJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICB9XG59XG5AbWVkaWEgcHJpbnQge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1tZXNzYWdlLFxuICAub3V0bGluZS10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIGgxLFxuICAub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgICBtYXJnaW46IDEzLjRwdCAwIDI4cHQgIWltcG9ydGFudDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyIGgxLFxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgICBtYXJnaW46IDEzLjRwdCAwIDI4cHQgIWltcG9ydGFudDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXJfX2Nsb3NlLFxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHByZSB7XG4gICAgcGFkZGluZzogMWVtICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBwcmUsXG4gIC5vdXRsaW5lLXJlYWRlciBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHRhYmxlLFxuICAub3V0bGluZS1yZWFkZXIgaW1nLFxuICAub3V0bGluZS1yZWFkZXIgc3ZnIHtcbiAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi8qID09PT09PT09PT0gYnV0dG9ucy50aGVtZSAtIOaMiemSruWvvOiIquagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS10b29sYmFyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk5OTtcbiAgbWFyZ2luOiAwO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDEwcHg7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjOTk5O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGJvcmRlci1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5oaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzk5OTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgZmlsbDogY3VycmVudGNvbG9yO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcm91bmRlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIGNvbG9yOiAjOTk5O1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbms6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZDpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXI6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIsXG4ub3V0bGluZS10b29sYmFyX2J0dCB7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9idHQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIge1xuICB0b3A6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX3R0Yi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgdG9wOiAtNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYnR0IHtcbiAgYm90dG9tOiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9idHQub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGJvdHRvbTogLTU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bCxcbi5vdXRsaW5lLXRvb2xiYXJfbHRyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB3aWR0aDogNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsIHtcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIHJpZ2h0OiAtODZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfbHRyIHtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX2x0ci5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgbGVmdDogLTg2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfcnRsIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9idHQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX2x0ciAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKipcbiAqIGZvbnQubGVzcyAtIOWtl+S9k+ebuOWFs+agt+W8j1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTZcbiAqL1xuLyogPT09PT09IOWtl+S9kyA9PT09PT0gKi9cbi8qID09PT09PSDlrZfph40gPT09PT09ICovXG4vKiA9PT09PT0g5a2X5Y+3ID09PT09PSAqL1xuLm91dGxpbmUtbWVzc2FnZSB7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk5O1xuICBvcGFjaXR5OiAwLjE7XG4gIHRvcDogLTUwcHg7XG4gIGxlZnQ6IDUwJTtcbiAgaGVpZ2h0OiA0MHB4O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAgNTBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICM2NjY7XG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2UtaW4tb3V0O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19jb250ZW50IHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG1hcmdpbjogMDtcbiAgbWF4LXdpZHRoOiA3MDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogIzY2NjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlLFxuLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGxlZnQ6IDA7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9faWNvbiAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlIHtcbiAgcmlnaHQ6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICM5OTk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG4ub3V0bGluZS1tZXNzYWdlX2luZm8gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjk5MDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMTkwcHg7XG4gIHBhZGRpbmc6IDAgNTBweCAwIDE1cHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9pbmZvIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjNTA3YWZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmOGZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2ZmOTkwMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmJlNjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3Mge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICMwNTg5NDI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWY2ZWI7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9lcnJvciB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2ZmNWQ1ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIHdpZHRoOiAwO1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX2luZm8gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICNmZjk5MDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX2Vycm9yIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmNWQ1ZDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kIHtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQge1xuICBtaW4td2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nOiAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0IC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDEwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdC5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDAgMjBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMTk1cHg7XG4gIHBhZGRpbmc6IDAgNDBweCAwIDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjE1cHg7XG4gIHBhZGRpbmc6IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDUwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAyMzBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQge1xuICBtaW4td2lkdGg6IDIxMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV92aXNpYmxlIHtcbiAgb3BhY2l0eTogMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA3cHg7XG4gIGhlaWdodDogN3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cbiIsIi8qID09PT09PT09PT0gaWNvbi50aGVtZSAtIHN2ZyDlm77moIfnmoTmoLflvI8gPT09PT09PT09PSAqL1xyXG4ub3V0bGluZS1pY29uIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB3aWR0aDogMWVtO1xyXG4gIGhlaWdodDogMWVtO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX3N2ZyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAyO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB3aWR0aDogMWVtO1xyXG4gICAgaGVpZ2h0OiAxZW07XHJcbiAgICBmaWxsOiBjdXJyZW50Y29sb3I7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX2hpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLm91dGxpbmUtaGVhZGluZyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fYW5jaG9yIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcblxyXG4gICAgJjpsaW5rLFxyXG4gICAgJjp2aXNpdGVkLFxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N0YXJ0IHtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgIGxlZnQ6IC0xZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XHJcbkBpbXBvcnQgJ2NvbG9ycyc7XHJcbkBpbXBvcnQgJ3NoYWRvdyc7XHJcblxyXG4ub3V0bGluZS1kcmF3ZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAtMTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICBtYXJnaW46IDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX21vZGFsIHtcclxuICAgIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDIxO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlO1xyXG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40cztcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19oZWFkZXIsXHJcbiAgJl9fbWFpbixcclxuICAmX19mb290ZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIH1cclxuXHJcbiAgJl9faGVhZGVyLFxyXG4gICZfX2Zvb3RlciB7XHJcbiAgICBmbGV4LXNocmluazogMDtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlLFxyXG4gICZfX21haW4sXHJcbiAgJl9fZm9vdGVyIHtcclxuICAgIHBhZGRpbmc6IDAgMTZweDtcclxuICB9XHJcblxyXG4gICZfX2hlYWRlcixcclxuICAmX190aXRsZSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDUycHg7XHJcbiAgICBsaW5lLWhlaWdodDogNTJweDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgbWFyZ2luOiAwIDE2cHg7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuICB9XHJcblxyXG4gICZfX2Nsb3NlIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIHJpZ2h0OiAxMnB4O1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgIC5vdXRsaW5lLWljb24ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fbWFpbiB7XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXIge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19vdmVybGF5IHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIG9wYWNpdHk6IDAuMTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX3J0bCxcclxuICAmX2x0ciB7XHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICB3aWR0aDogMjgwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgd2lkdGg6IDQ4MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICB3aWR0aDogNTQwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgd2lkdGg6IDY4MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgd2lkdGg6IDcyMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICB3aWR0aDogOTYwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcnRsIHtcclxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtMjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTU1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTY5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIHJpZ2h0OiAtNzMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICByaWdodDogLTk3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9sdHIge1xyXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGxlZnQ6IC0yOTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTQ5MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTU1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICBsZWZ0OiAtNjkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTczMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgbGVmdDogLTk3MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIsXHJcbiAgJl9idHQge1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICAmX3Rpbnkge1xyXG4gICAgICAgIGhlaWdodDogMjQwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgaGVpZ2h0OiAzMjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgaGVpZ2h0OiAzNjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9yZWd1bGFyIHtcclxuICAgICAgICBoZWlnaHQ6IDQwMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgaGVpZ2h0OiA0NDBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgaGVpZ2h0OiA0ODBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwcmltYXJ5X2JvcmRlcl9jb2xvcjtcclxuXHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl90aW55IHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC0yNTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbWluaSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtMzMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3NtYWxsIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC0zNzBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfcmVndWxhciB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtNDEwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21lZGl1bSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgdG9wOiAtNDUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2xhcmdlIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XHJcbiAgICAgICAgICB0b3A6IC00OTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfYnR0IHtcclxuICAgIHRvcDogaW5pdGlhbDtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBAcHJpbWFyeV9ib3JkZXJfY29sb3I7XHJcblxyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfdGlueSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtMjUwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX21pbmkge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTMzMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9zbWFsbCB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtMzcwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3JlZ3VsYXIge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTQxMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9tZWRpdW0ge1xyXG4gICAgICAgICYub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcclxuICAgICAgICAgIGJvdHRvbTogLTQ1MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl9sYXJnZSB7XHJcbiAgICAgICAgJi5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xyXG4gICAgICAgICAgYm90dG9tOiAtNDkwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX29wZW5lZCB7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xyXG5cclxuICAgICYub3V0bGluZS1kcmF3ZXIge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcblxyXG4gICAgICAmX3J0bCB7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfbHRyIHtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3R0YiB7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2J0dCB7XHJcbiAgICAgICAgYm90dG9tOiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX29mZnNldCB7XHJcbiAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgJl9ydGwsXHJcbiAgICAgICZfbHRyIHtcclxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDRlbSk7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3R0YixcclxuICAgICAgJl9idHQge1xyXG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0ZW0pO1xyXG4gICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfb3BlbmVkIHtcclxuICAgICAgICAmLm91dGxpbmUtZHJhd2VyIHtcclxuICAgICAgICAgICZfcnRsIHtcclxuICAgICAgICAgICAgcmlnaHQ6IDJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmX2x0ciB7XHJcbiAgICAgICAgICAgIGxlZnQ6IDJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmX3R0YiB7XHJcbiAgICAgICAgICAgIHRvcDogMmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICZfYnR0IHtcclxuICAgICAgICAgICAgYm90dG9tOiAyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2F1dG8ge1xyXG4gICAgJi5vdXRsaW5lLWRyYXdlciB7XHJcbiAgICAgICZfcnRsLFxyXG4gICAgICAmX2x0ciB7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZnVsbCB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gIH1cclxufVxyXG4iLCIvKipcclxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXHJcbiAqIFVwZGF0ZTogMjAyMi4zLjExXHJcbiAqL1xyXG5AaW1wb3J0ICcuL2NvbG9ycyc7XHJcblxyXG4vKiA9PT09PT0g5paH5pys55yB55Wl5Ye95pWwID09PT09PSAqL1xyXG4uZWxsaXBzaXMgKEBsaW5lcykgd2hlbiAoQGxpbmVzPTEpIHtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi5lbGxpcHNpcyAoQGxpbmVzKSB3aGVuIChAbGluZXM+PTIpIHtcclxuICAtd2Via2l0LWxpbmUtY2xhbXA6IEBsaW5lcztcclxuICBkaXNwbGF5OiBib3g7XHJcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xyXG4ucmFkaXVzKEBudW06IDJweCkge1xyXG4gIGJvcmRlci1yYWRpdXM6IEBudW07XHJcbn1cclxuXHJcbi5yYWRpdXNfbm9uZSgpIHtcclxuICAucmFkaXVzKDApO1xyXG59XHJcblxyXG4ucmFkaXVzX21pbmkoKSB7XHJcbiAgLnJhZGl1cygycHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX3NtYWxsKCkge1xyXG4gIC5yYWRpdXMoM3B4KTtcclxufVxyXG5cclxuLnJhZGl1c19yZWd1bGFyKCkge1xyXG4gIC5yYWRpdXMoNHB4KTtcclxufVxyXG5cclxuLnJhZGl1c19tZWRpdW0oKSB7XHJcbiAgLnJhZGl1cyg1cHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX2xhcmdlKCkge1xyXG4gIC5yYWRpdXMoMTBweCk7XHJcbn1cclxuXHJcbi5yYWRpdXNfaHVnZSgpIHtcclxuICAucmFkaXVzKDE2cHgpO1xyXG59XHJcblxyXG4ucmFkaXVzX3JvdW5kKCkge1xyXG4gIC5yYWRpdXMoMzBweCk7XHJcbn1cclxuXHJcbi8qID09PT09PSDpmLTlvbHmoLflvI/orr7nva7lh73mlbAgPT09PT09ICovXHJcbi5zaGFkb3coQG9mZnNldDogMCAwIDZweCAxcHgsIEBjb2xvcjogQHByaW1hcnlfYm9yZGVyX2NvbG9yKSB7XHJcbiAgYm94LXNoYWRvdzogQG9mZnNldCBAY29sb3I7XHJcbn1cclxuXHJcbi5zaGFkb3dfcmVndWxhcihAY29sb3I6IEBwcmltYXJ5X2JvcmRlcl9jb2xvcikge1xyXG4gIC5zaGFkb3coMCAwIDZweCAxcHgsIEBjb2xvcik7XHJcbn1cclxuXHJcbi5zaGFkb3dfbGFyZ2UoQGNvbG9yOiBAcHJpbWFyeV9ib3JkZXJfY29sb3IpIHtcclxuICAuc2hhZG93KDAgMCAxMnB4IDFweCwgQGNvbG9yKTtcclxufVxyXG5cclxuLnNoYWRvd19saWdodF9yZWd1bGFyKCkge1xyXG4gIC5zaGFkb3dfcmVndWxhcigpO1xyXG59XHJcblxyXG4uc2hhZG93X2xpZ2h0X2xhcmdlKCkge1xyXG4gIC5zaGFkb3dfbGFyZ2UoKTtcclxufVxyXG5cclxuLnNoYWRvd19kYXJrX3JlZ3VsYXIoKSB7XHJcbiAgLnNoYWRvd19yZWd1bGFyKEBzZWNvbmRhcnlfYm9yZGVyX2NvbG9yKTtcclxufVxyXG4iLCJAaW1wb3J0ICd2YXJpYWJsZXMnO1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5AaW1wb3J0ICdlbGxpcHNpcyc7XHJcblxyXG4ub3V0bGluZS1jaGFwdGVycyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHdpZHRoOiB2YXIoLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoKTtcclxuICBvdmVyZmxvdzogYXV0bztcclxuXHJcbiAgJi1wYXJlbnQge1xyXG4gICAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlIHtcclxuICAgIG1hcmdpbjogMCAxNnB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19tYWluIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fbGlzdCxcclxuICAmX19zdWJqZWN0LFxyXG4gICZfX2l0ZW0ge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fbGlzdCB7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAwO1xyXG4gIH1cclxuXHJcbiAgJl9fc3ViamVjdCB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcclxuICB9XHJcblxyXG4gICZfX2l0ZW0ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fcGxhY2Vob2xkZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMzBweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBob3Zlcl9iZ19jb2xvcjtcclxuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAmX19hbmNob3Ige1xyXG4gICAgLmVsbGlwc2lzKDEpO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAwIDEuNWVtO1xyXG5cclxuICAgICY6bGluayxcclxuICAgICY6dmlzaXRlZCxcclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgIGNvbG9yOiBAc2Vjb25kYXJ5X3RleHRfY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2NvZGUge1xyXG4gICAgcGFkZGluZy1yaWdodDogMC41ZW07XHJcbiAgfVxyXG5cclxuICAmX2hpZ2hsaWdodCB7XHJcbiAgICAmLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvciB7XHJcbiAgICAgICY6bGluayxcclxuICAgICAgJjp2aXNpdGVkLFxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfc3RpY2t5LFxyXG4gICZfZml4ZWQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHotaW5kZXg6IHZhcigtLW91dGxpbmUtekluZGV4KTtcclxuICAgIHRvcDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgLm91dGxpbmUtY2hhcHRlcnMge1xyXG4gICAgICAmX190aXRsZSxcclxuICAgICAgJl9fbWFpbiB7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9fdGl0bGUge1xyXG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19tYWluIHtcclxuICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N0aWNreSB7XHJcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gICAgbWF4LWhlaWdodDogdmFyKC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0KTtcclxuICB9XHJcblxyXG4gICZfZml4ZWQge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgbWF4LWhlaWdodDogMTAwJTtcclxuICB9XHJcblxyXG4gICZfaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAmX2ZvbGRlZCB7XHJcbiAgICB3aWR0aDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJ2NvbG9ycyc7XHJcbkBpbXBvcnQgJ21peGlucyc7XHJcblxyXG4ub3V0bGluZS1yZWFkZXIge1xyXG4gICZfX2Nsb3NlIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICAgIGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcbiAgICAmLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xyXG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgICAmLndyYXBwZXIge1xyXG4gICAgICAgICYucG9zdCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi0tcmVhZGluZyB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgcGFkZGluZzogM2VtIDRlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIHNjcm9sbC10aW1lbGluZS1uYW1lOiAtLVByb2dyZXNzVGltZWxpbmU7XHJcbiAgICBvdmVyZmxvdzogc2Nyb2xsO1xyXG5cclxuICAgIC5vdXRsaW5lLXJlYWRlciB7XHJcbiAgICAgICZfX3Byb2dyZXNzIHtcclxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgei1pbmRleDogMztcclxuICAgICAgICBoZWlnaHQ6IDRweDtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcHJpbWFyeV9jb2xvcjtcclxuICAgICAgICBzY2FsZTogMCAxO1xyXG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XHJcbiAgICAgICAgYW5pbWF0aW9uOiBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyBsaW5lYXI7XHJcbiAgICAgICAgYW5pbWF0aW9uLXRpbWVsaW5lOiAtLVByb2dyZXNzVGltZWxpbmU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfX2Nsb3NlIHtcclxuICAgICAgICAuc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKTtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgei1pbmRleDogMztcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICByaWdodDogMjJweDtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgd2lkdGg6IDM2cHg7XHJcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCA4cHggQHNlY29uZGFyeV9ib3JkZXJfY29sb3I7XHJcbiAgICAgICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuICAgICAgICAgIGNvbG9yOiBAd2hpdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBoMSxcclxuICAgICAgJl9fdGl0bGUge1xyXG4gICAgICAgIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS4zZW07XHJcbiAgICAgICAgZm9udC1zaXplOiAzLjVlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyB7XHJcbiAgdG8ge1xyXG4gICAgc2NhbGU6IDEgMTtcclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xyXG4gIC5vdXRsaW5lLXJlYWRlciB7XHJcbiAgICAmLS1yZWFkaW5nIHtcclxuICAgICAgcGFkZGluZzogMCAxLjI1ZW07XHJcbiAgICB9XHJcblxyXG4gICAgJl9fY2xvc2Uge1xyXG4gICAgICByaWdodDogMTJweCAhaW1wb3J0YW50O1xyXG4gICAgICBvcGFjaXR5OiAwLjg7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdGl0bGUge1xyXG4gICAgICBmb250LXNpemU6IDJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSBwcmludCB7XHJcbiAgaHRtbCxcclxuICBib2R5IHtcclxuICAgIGhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLm91dGxpbmUge1xyXG4gICAgJi1tZXNzYWdlLFxyXG4gICAgJi10b29sYmFyIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgICYtcmVhZGVyIHtcclxuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAgIGgxLFxyXG4gICAgICAmX190aXRsZSB7XHJcbiAgICAgICAgbWFyZ2luOiAxMy40cHQgMCAyOHB0ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMHB0ICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYub3V0bGluZS1yZWFkZXIge1xyXG4gICAgICAgICYtLXJlYWRpbmcge1xyXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcclxuICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGgxLFxyXG4gICAgICAgICZfX3RpdGxlIHtcclxuICAgICAgICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICZfX2Nsb3NlLFxyXG4gICAgICAgICZfX3Byb2dyZXNzIHtcclxuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHByZSB7XHJcbiAgICAgICAgcGFkZGluZzogMWVtICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgQGJvcmRlcl9jb2xvciAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBwcmUsXHJcbiAgICAgIGNvZGUge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZSAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0YWJsZSxcclxuICAgICAgaW1nLFxyXG4gICAgICBzdmcge1xyXG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc2libGluZyB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT0gYnV0dG9ucy50aGVtZSAtIOaMiemSruWvvOiIquagt+W8jyA9PT09PT09PT09ICovXHJcbkBpbXBvcnQgJ2NvbG9ycyc7XHJcbkBpbXBvcnQgJ3NoYWRvdyc7XHJcblxyXG4ub3V0bGluZS10b29sYmFyIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgei1pbmRleDogOTk5OTk7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgJl9fYnV0dG9uIHtcclxuICAgIC5zaGFkb3dfbGlnaHRfcmVndWxhcigpO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIG1hcmdpbjogMTBweDtcclxuICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgaGVpZ2h0OiAzNnB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgQHByaW1hcnlfYm9yZGVyX2NvbG9yO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgJi5oaWRlIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2FuY2hvciB7XHJcbiAgICAmOmxpbmssXHJcbiAgICAmOnZpc2l0ZWQsXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pY29uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICBmaWxsOiBjdXJyZW50Y29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9hY3RpdmUge1xyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXIge1xyXG4gICAgICAmX19idXR0b24ge1xyXG4gICAgICAgIGNvbG9yOiBAd2hpdGU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBAc3VjY2Vzc19jb2xvcjtcclxuXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvciB7XHJcbiAgICAgICY6bGluayxcclxuICAgICAgJjp2aXNpdGVkLFxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogQHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3JvdW5kZWQge1xyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2Rpc2FibGVkIHtcclxuICAgICYub3V0bGluZS10b29sYmFyLFxyXG4gICAgLm91dGxpbmUtdG9vbGJhciB7XHJcbiAgICAgICZfX2FuY2hvcjpsaW5rLFxyXG4gICAgICAmX19hbmNob3I6dmlzaXRlZCxcclxuICAgICAgJl9fYW5jaG9yOmhvdmVyLFxyXG4gICAgICAmX19idXR0b24ge1xyXG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuICAgICAgICBib3JkZXItY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBjb2xvcjogQGZvdXJ0aF90ZXh0X2NvbG9yO1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiBAZm91cnRoX3RleHRfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX19idXR0b24ge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBkaXNhYmxlZF9iZ19jb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIsXHJcbiAgJl9idHQge1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG5cclxuICAgIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfdHRiIHtcclxuICAgIHRvcDogMTJweDtcclxuXHJcbiAgICAmLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xyXG4gICAgICB0b3A6IC01NnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9idHQge1xyXG4gICAgYm90dG9tOiAxMnB4O1xyXG5cclxuICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgIGJvdHRvbTogLTU2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3J0bCxcclxuICAmX2x0ciB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICB3aWR0aDogNTZweDtcclxuICB9XHJcblxyXG4gICZfcnRsIHtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgcmlnaHQ6IDEycHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgcmlnaHQ6IC04NnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9sdHIge1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiAxMnB4O1xyXG5cclxuICAgICYub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XHJcbiAgICAgIGxlZnQ6IC04NnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl90dGIsXHJcbiAgJl9ydGwsXHJcbiAgJl9idHQsXHJcbiAgJl9sdHIge1xyXG4gICAgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcclxuICAgICAgJi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJy4vY29sb3JzJztcclxuQGltcG9ydCAnLi9mb250JztcclxuQGltcG9ydCAnLi9taXhpbnMnO1xyXG5AaW1wb3J0ICcuL2ljb25zJztcclxuXHJcbi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gIC5yYWRpdXNfc21hbGwoKTtcclxuICAuc2hhZG93X2xpZ2h0X3JlZ3VsYXIoKTtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgei1pbmRleDogOTk5OTtcclxuICBvcGFjaXR5OiAwLjE7XHJcbiAgdG9wOiAtNTBweDtcclxuICBsZWZ0OiA1MCU7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwIDUwcHg7XHJcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgZm9udC1zaXplOiBAZm9udF9zaXplX3NtYWxsO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTtcclxuICBjb2xvcjogQHRoaXJkX3RleHRfY29sb3I7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICZfX2NvbnRlbnQge1xyXG4gICAgLmVsbGlwc2lzKDEpO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbWF4LXdpZHRoOiA3MDBweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gICZfX2Nsb3NlLFxyXG4gICZfX2ljb24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHRvcDogMDtcclxuICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9faWNvbiB7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgY29sb3I6IEB3aGl0ZTtcclxuXHJcbiAgICAub3V0bGluZS1pY29uIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2Nsb3NlIHtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgY29sb3I6IEBmb3VydGhfdGV4dF9jb2xvcjtcclxuXHJcbiAgICAub3V0bGluZS1pY29uIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY29sb3I6IEB0aGlyZF90ZXh0X2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9pbmZvIHtcclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcHJpbWFyeV9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfd2FybmluZyB7XHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdhcm5pbmdfY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3N1Y2Nlc3Mge1xyXG4gICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBzdWNjZXNzX2NvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9lcnJvciB7XHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGRhbmdlcl9jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfcGxhaW4ge1xyXG4gICAgbWluLXdpZHRoOiAxOTBweDtcclxuICAgIHBhZGRpbmc6IDAgNTBweCAwIDE1cHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gICAgICAmX2luZm8ge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQHByaW1hcnlfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGluZm9fdGlwX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3dhcm5pbmcge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQHdhcm5pbmdfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdhcm5pbmdfdGlwX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3N1Y2Nlc3Mge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHN1Y2Nlc3NfdGlwX2JnX2NvbG9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2Vycm9yIHtcclxuICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEBkYW5nZXJfY29sb3I7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGRhbmdlcl90aXBfYmdfY29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcblxyXG4gICAgICAub3V0bGluZS1pY29uIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX2xpZ2h0IHtcclxuICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICBwYWRkaW5nOiAwIDQwcHg7XHJcblxyXG4gICAgJi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gICAgICAmX2luZm8ge1xyXG4gICAgICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICAgICAgY29sb3I6IEBwcmltYXJ5X2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJl93YXJuaW5nIHtcclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiBAd2FybmluZ19jb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfc3VjY2VzcyB7XHJcbiAgICAgICAgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XHJcbiAgICAgICAgICBjb2xvcjogQHN1Y2Nlc3NfY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX2Vycm9yIHtcclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiBAZGFuZ2VyX2NvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3JvdW5kIHtcclxuICAgIC5yYWRpdXMoMjBweCk7XHJcblxyXG4gICAgJi5vdXRsaW5lLW1lc3NhZ2Uge1xyXG4gICAgICAmX2RlZmF1bHQge1xyXG4gICAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xyXG5cclxuICAgICAgICAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcclxuICAgICAgICAgIC5yYWRpdXMoMTBweCk7XHJcbiAgICAgICAgICB0b3A6IDEwcHg7XHJcbiAgICAgICAgICBsZWZ0OiAxMHB4O1xyXG4gICAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xyXG4gICAgICAgICAgbWluLXdpZHRoOiAyMDBweDtcclxuICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAwIDQwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmX3BsYWluIHtcclxuICAgICAgICBtaW4td2lkdGg6IDE5NXB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgNDBweCAwIDIwcHg7XHJcblxyXG4gICAgICAgICYub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xyXG4gICAgICAgICAgbWluLXdpZHRoOiAyMTVweDtcclxuICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfZnVsbC13aWR0aCB7XHJcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xyXG4gICAgcGFkZGluZzogMCAxMHB4IDAgNTBweDtcclxuXHJcbiAgICAmLm91dGxpbmUtbWVzc2FnZSB7XHJcbiAgICAgICZfcGxhaW4ge1xyXG4gICAgICAgIG1pbi13aWR0aDogMjMwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMCAxMHB4IDAgMTVweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJl9saWdodCB7XHJcbiAgICAgICAgbWluLXdpZHRoOiAyMTBweDtcclxuICAgICAgICBwYWRkaW5nOiAwIDEwcHggMCA0MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX3Zpc2libGUge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcblxyXG4gICZfaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xyXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICB3aWR0aDogN3B4O1xyXG4gIGhlaWdodDogN3B4O1xyXG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG5cclxuICAmLXRyYWNrLXBpZWNlIHtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIH1cclxuXHJcbiAgJi10aHVtYiB7XHJcbiAgICAmOnZlcnRpY2FsIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcclxuICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3Jpem9udGFsIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcclxuICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbiAgfVxyXG59XHJcbiJdfQ== */ diff --git a/outline.min.css b/outline.min.css index 4874eb9..4b91934 100644 --- a/outline.min.css +++ b/outline.min.css @@ -1,2 +1,2 @@ -.outline-icon,.outline-icon__svg{width:1em;height:1em;overflow:hidden}.outline-icon__svg,.outline-toolbar__icon{fill:currentcolor;-webkit-transform:translate(-50%,-50%)}:root{--outline-zIndex:2000;--outline-sticky-height:100%;--outline-chapters-width:100%}.outline-icon{position:relative;z-index:1;display:inline-block;vertical-align:middle}.outline-heading__anchor,.outline-icon_hidden{display:none}.outline-icon__svg{position:absolute;z-index:2;top:50%;left:50%;transform:translate(-50%,-50%)}.outline-heading{position:relative;z-index:1;overflow:hidden}.outline-heading__anchor:hover,.outline-heading__anchor:link,.outline-heading__anchor:visited{color:#999;text-decoration:none}.outline-heading__anchor:hover{color:#507afe}.outline-heading:hover .outline-heading__anchor{display:inline-block}.outline-heading_start:hover{overflow:visible}.outline-heading_start .outline-heading__anchor{position:absolute;z-index:2;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:-1em}.outline-drawer{position:relative;z-index:-1;top:0;left:0;margin:0;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:hidden;overflow:hidden}.outline-drawer__modal{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;z-index:21;height:100%;background-color:#fff;-webkit-transition-duration:.4s;transition-duration:.4s;overflow:hidden}.outline-drawer__footer,.outline-drawer__header,.outline-drawer__main{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.outline-drawer__footer,.outline-drawer__header{-ms-flex-negative:0;flex-shrink:0}.outline-drawer__footer,.outline-drawer__main,.outline-drawer__title{padding:0 16px}.outline-drawer__header,.outline-drawer__title{position:relative;z-index:1;margin:0 auto;height:52px;line-height:52px;overflow:hidden}.outline-drawer__title{font-size:16px;font-weight:400;margin:0 16px;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #dcdfe6}.outline-drawer__close{position:absolute;z-index:2;top:50%;right:12px;width:20px;height:20px;line-height:20px;color:#999;font-size:20px;text-align:center;cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%);overflow:hidden}.outline-drawer__close .outline-icon{position:absolute;z-index:2;top:0;left:0}.outline-drawer__close:hover{color:#666}.outline-drawer__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-drawer__footer{margin:0 auto;text-align:right;overflow:hidden}.outline-drawer__overlay{content:'';position:relative;z-index:1;top:0;left:0;width:100%;height:100%;background-color:#fff;opacity:.1;overflow:hidden}.outline-drawer_ltr.outline-drawer_tiny,.outline-drawer_rtl.outline-drawer_tiny{width:280px}.outline-drawer_ltr.outline-drawer_mini,.outline-drawer_rtl.outline-drawer_mini{width:480px}.outline-drawer_ltr.outline-drawer_small,.outline-drawer_rtl.outline-drawer_small{width:540px}.outline-drawer_ltr.outline-drawer_regular,.outline-drawer_rtl.outline-drawer_regular{width:680px}.outline-drawer_ltr.outline-drawer_medium,.outline-drawer_rtl.outline-drawer_medium{width:720px}.outline-drawer_ltr.outline-drawer_large,.outline-drawer_rtl.outline-drawer_large{width:960px}.outline-drawer_rtl{border-left:1px solid #dcdfe6}.outline-drawer_rtl.outline-drawer_tiny.outline-drawer_closed{right:-290px}.outline-drawer_rtl.outline-drawer_mini.outline-drawer_closed{right:-490px}.outline-drawer_rtl.outline-drawer_small.outline-drawer_closed{right:-550px}.outline-drawer_rtl.outline-drawer_regular.outline-drawer_closed{right:-690px}.outline-drawer_rtl.outline-drawer_medium.outline-drawer_closed{right:-730px}.outline-drawer_rtl.outline-drawer_large.outline-drawer_closed{right:-970px}.outline-drawer_ltr{border-right:1px solid #dcdfe6}.outline-drawer_ltr.outline-drawer_tiny.outline-drawer_closed{left:-290px}.outline-drawer_ltr.outline-drawer_mini.outline-drawer_closed{left:-490px}.outline-drawer_ltr.outline-drawer_small.outline-drawer_closed{left:-550px}.outline-drawer_ltr.outline-drawer_regular.outline-drawer_closed{left:-690px}.outline-drawer_ltr.outline-drawer_medium.outline-drawer_closed{left:-730px}.outline-drawer_ltr.outline-drawer_large.outline-drawer_closed{left:-970px}.outline-drawer_btt,.outline-drawer_ttb{left:0;width:100%}.outline-drawer_btt.outline-drawer_tiny,.outline-drawer_ttb.outline-drawer_tiny{height:240px}.outline-drawer_btt.outline-drawer_mini,.outline-drawer_ttb.outline-drawer_mini{height:320px}.outline-drawer_btt.outline-drawer_small,.outline-drawer_ttb.outline-drawer_small{height:360px}.outline-drawer_btt.outline-drawer_regular,.outline-drawer_ttb.outline-drawer_regular{height:400px}.outline-drawer_btt.outline-drawer_medium,.outline-drawer_ttb.outline-drawer_medium{height:440px}.outline-drawer_btt.outline-drawer_large,.outline-drawer_ttb.outline-drawer_large{height:480px}.outline-drawer_ttb{border-bottom:1px solid #dcdfe6}.outline-drawer_ttb.outline-drawer_tiny.outline-drawer_closed{top:-250px}.outline-drawer_ttb.outline-drawer_mini.outline-drawer_closed{top:-330px}.outline-drawer_ttb.outline-drawer_small.outline-drawer_closed{top:-370px}.outline-drawer_ttb.outline-drawer_regular.outline-drawer_closed{top:-410px}.outline-drawer_ttb.outline-drawer_medium.outline-drawer_closed{top:-450px}.outline-drawer_ttb.outline-drawer_large.outline-drawer_closed{top:-490px}.outline-drawer_btt{top:initial;border-top:1px solid #dcdfe6}.outline-drawer_btt.outline-drawer_tiny.outline-drawer_closed{bottom:-250px}.outline-drawer_btt.outline-drawer_mini.outline-drawer_closed{bottom:-330px}.outline-drawer_btt.outline-drawer_small.outline-drawer_closed{bottom:-370px}.outline-drawer_btt.outline-drawer_regular.outline-drawer_closed{bottom:-410px}.outline-drawer_btt.outline-drawer_medium.outline-drawer_closed{bottom:-450px}.outline-drawer_btt.outline-drawer_large.outline-drawer_closed{bottom:-490px}.outline-drawer_opened{visibility:visible;z-index:var(--outline-zIndex)}.outline-drawer_opened.outline-drawer{position:fixed}.outline-drawer_opened.outline-drawer_rtl{right:0}.outline-drawer_opened.outline-drawer_ltr{left:0}.outline-drawer_opened.outline-drawer_ttb{top:0}.outline-drawer_opened.outline-drawer_btt{bottom:0}.outline-drawer_offset.outline-drawer_ltr,.outline-drawer_offset.outline-drawer_rtl{height:calc(100% - 4em);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.outline-drawer_offset.outline-drawer_btt,.outline-drawer_offset.outline-drawer_ttb{width:calc(100% - 4em);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-drawer_offset.outline-drawer_opened.outline-drawer_rtl{right:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ltr{left:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ttb{top:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_btt{bottom:2em}.outline-drawer_auto.outline-drawer_ltr,.outline-drawer_auto.outline-drawer_rtl{height:auto;max-height:calc(100% - 4em)}.outline-drawer_full{padding:0}.outline-chapters{position:relative;z-index:1;margin:0;width:var(--outline-chapters-width);overflow:auto}.outline-chapters-parent{-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.outline-chapters__title{margin:0 16px;height:40px;line-height:40px;padding:0 16px;border-bottom:1px solid #dcdfe6;font-size:16px;font-weight:400;overflow:hidden}.outline-chapters__main{position:relative;z-index:1;margin:0;overflow:hidden}.outline-chapters__item,.outline-chapters__list,.outline-chapters__subject{position:relative;z-index:2;margin:0;padding:0;list-style-type:none;overflow:hidden}.outline-chapters__list{padding:.5em 0}.outline-chapters__subject{padding-left:1em}.outline-chapters__item{margin:0;line-height:30px;font-size:13px;overflow:hidden}.outline-chapters__placeholder{position:absolute;z-index:1;top:0;left:0;width:100%;height:30px;background-color:#f7f8f9;border-left:2px solid #058942;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.outline-chapters__anchor{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;padding:0 1.5em}.outline-chapters__anchor:hover,.outline-chapters__anchor:link,.outline-chapters__anchor:visited{text-decoration:none;color:#555}.outline-chapters__anchor:hover{color:#058942}.outline-chapters__code{padding-right:.5em}.outline-chapters_highlight.outline-chapters__anchor:hover,.outline-chapters_highlight.outline-chapters__anchor:link,.outline-chapters_highlight.outline-chapters__anchor:visited{color:#058942;font-weight:700}.outline-chapters_fixed,.outline-chapters_sticky{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;z-index:var(--outline-zIndex);top:0;overflow:hidden}.outline-chapters_hidden,.outline-reader__close{display:none}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__main,.outline-chapters_sticky .outline-chapters__title{-webkit-box-sizing:border-box;box-sizing:border-box}.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__title{-ms-flex-negative:0;flex-shrink:0}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_sticky .outline-chapters__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-chapters_sticky{position:sticky;max-height:var(--outline-sticky-height)}.outline-chapters_fixed{position:fixed;max-height:100%}.outline-chapters_folded{width:0;overflow:hidden}.outline-reader__title{margin:.67em 0!important;text-align:center!important;font-family:'Microsoft YaHei UI',Arial,sans-serif;font-weight:400;overflow:hidden}.outline-reader_hidden,.outline-reader_hidden.outline-reader_sibling{display:none!important}.outline-reader_hidden.outline-reader_sibling.wrapper.post{display:none}.outline-reader--reading{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:3em 4em;background-color:#fff;scroll-timeline-name:--ProgressTimeline;overflow:scroll}.outline-reader--reading .outline-reader__progress{position:fixed;top:0;left:0;z-index:3;height:4px;width:100%;background-color:#507afe;scale:0 1;-webkit-transform-origin:left;transform-origin:left;-webkit-animation:outline-reader-progress linear;animation:outline-reader-progress linear;animation-timeline:--ProgressTimeline}.outline-reader--reading .outline-reader__close{display:block;position:fixed;z-index:3;top:50%;right:22px;margin:0;width:36px;height:36px;border-radius:18px;border:1px solid #dcdfe6;line-height:30px;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;-webkit-box-shadow:0 0 8px #ddd;box-shadow:0 0 8px #ddd;color:#999;background-color:#fff;overflow:hidden}.outline-reader--reading .outline-reader__close:hover{background-color:#058942;color:#fff}.outline-reader--reading .outline-reader h1,.outline-reader--reading .outline-reader__title{margin:.67em 0!important;line-height:1.3em;font-size:3.5em}@-webkit-keyframes outline-reader-progress{to{scale:1 1}}@keyframes outline-reader-progress{to{scale:1 1}}@media (max-width:480px){.outline-reader--reading{padding:0 1.25em}.outline-reader__close{right:12px!important;opacity:.8}.outline-reader__title{font-size:2em}}@media print{.outline-reader h1,.outline-reader.outline-reader h1,.outline-reader.outline-reader__title,.outline-reader__title{margin:13.4pt 0 28pt!important;text-align:center!important;font-size:20pt!important}body,html{height:initial!important}.outline-reader{display:block!important;overflow:hidden}.outline-reader.outline-reader__close,.outline-reader.outline-reader__progress,.outline-reader_sibling{display:none!important}.outline-reader.outline-reader--reading{position:relative!important;height:auto!important;padding:0!important;overflow:hidden!important}.outline-reader pre{padding:1em!important;border:1px solid #ddd!important;border-radius:4px!important}.outline-reader code,.outline-reader pre{background-color:#fff!important}.outline-reader img,.outline-reader svg,.outline-reader table{-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}}.outline-toolbar{position:fixed;z-index:99999;margin:0;-webkit-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.outline-toolbar__button{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:relative;z-index:1;margin:10px;width:36px;height:36px;border:1px solid #dcdfe6;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;cursor:pointer;text-align:center;color:#999;overflow:hidden}.outline-toolbar__button:hover{color:#058942;border-color:#058942}.outline-toolbar__button.hide{display:none}.outline-toolbar__anchor:hover,.outline-toolbar__anchor:link,.outline-toolbar__anchor:visited{color:#999;text-decoration:none}.outline-toolbar__anchor:hover{color:#058942}.outline-toolbar__icon{position:absolute;z-index:2;top:50%;left:50%;width:20px;height:20px;transform:translate(-50%,-50%);overflow:hidden}.outline-toolbar_active.outline-toolbar__button{color:#fff;background-color:#058942;border-color:#058942}.outline-toolbar_active .outline-toolbar__anchor:hover,.outline-toolbar_active .outline-toolbar__anchor:link,.outline-toolbar_active .outline-toolbar__anchor:visited,.outline-toolbar_active.outline-toolbar__button:hover{color:#fff}.outline-toolbar_rounded.outline-toolbar__button{border-radius:18px}.outline-toolbar_disabled .outline-toolbar__anchor:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link,.outline-toolbar_disabled .outline-toolbar__anchor:visited,.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__anchor:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link,.outline-toolbar_disabled.outline-toolbar__anchor:visited,.outline-toolbar_disabled.outline-toolbar__button{cursor:not-allowed;color:#999;border-color:#999}.outline-toolbar_disabled .outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link:hover,.outline-toolbar_disabled .outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled .outline-toolbar__button:hover,.outline-toolbar_disabled.outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link:hover,.outline-toolbar_disabled.outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled.outline-toolbar__button:hover{color:#999;border-color:#999}.outline-message,.outline-message__content{margin:0;font-size:13px;color:#666;height:40px;line-height:40px;overflow:hidden}.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__button{background-color:#f5f5f5}.outline-toolbar_btt,.outline-toolbar_ttb{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-toolbar_btt .outline-toolbar__button,.outline-toolbar_ttb .outline-toolbar__button{display:inline-block}.outline-toolbar_ttb{top:12px}.outline-toolbar_ttb.outline-toolbar_hidden{top:-56px}.outline-toolbar_btt{bottom:12px}.outline-toolbar_btt.outline-toolbar_hidden{bottom:-56px}.outline-toolbar_ltr,.outline-toolbar_rtl{-webkit-transform:translateY(-50%);transform:translateY(-50%);width:56px}.outline-toolbar_rtl{top:50%;right:12px}.outline-toolbar_rtl.outline-toolbar_hidden{right:-86px}.outline-toolbar_ltr{top:50%;left:12px}.outline-toolbar_ltr.outline-toolbar_hidden{left:-86px}.outline-toolbar_btt .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ltr .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_rtl .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ttb .outline-toolbar__button.outline-toolbar_hidden{display:none}.outline-message{border-radius:3px;-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:fixed;z-index:9999;opacity:.1;top:-50px;left:50%;padding:0 50px;background-color:#fff;-webkit-transition:all .5s ease-in-out;transition:all .5s ease-in-out;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-message__content{white-space:nowrap;text-overflow:ellipsis;max-width:700px}.outline-message__close,.outline-message__icon{position:absolute;z-index:2;top:0;width:40px;height:40px;line-height:40px;text-align:center;overflow:hidden}.outline-message__icon{left:0;color:#fff}.outline-message__icon .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close{right:0;cursor:pointer;color:#999}.outline-message__close .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close:hover{color:#666}.outline-message_info .outline-message__icon{background-color:#507afe}.outline-message_warning .outline-message__icon{background-color:#ff9901}.outline-message_success .outline-message__icon{background-color:#058942}.outline-message_error .outline-message__icon{background-color:#ff5d5d}.outline-message_plain{min-width:190px;padding:0 50px 0 15px}.outline-message_light,.outline-message_round.outline-message_default{min-width:180px;padding:0 40px}.outline-message_plain.outline-message_info{border-left:5px solid #507afe;background-color:#ecf8ff}.outline-message_plain.outline-message_warning{border-left:5px solid #ff9901;background-color:#fffbe6}.outline-message_plain.outline-message_success{border-left:5px solid #058942;background-color:#e1f6eb}.outline-message_plain.outline-message_error{border-left:5px solid #ff5d5d;background-color:#fff1f0}.outline-message_plain .outline-message__icon{width:0;display:none}.outline-message_plain .outline-message__icon .outline-icon{display:none}.outline-message_light.outline-message_info .outline-message__icon{color:#507afe}.outline-message_light.outline-message_warning .outline-message__icon{color:#ff9901}.outline-message_light.outline-message_success .outline-message__icon{color:#058942}.outline-message_light.outline-message_error .outline-message__icon{color:#ff5d5d}.outline-message_light .outline-message__icon{background-color:#fff}.outline-message_round{border-radius:20px}.outline-message_round.outline-message_default .outline-message__icon{border-radius:10px;top:10px;left:10px;width:20px;height:20px;line-height:20px}.outline-message_round.outline-message_default.outline-message_full-width{min-width:200px;padding:0 20px 0 40px}.outline-message_round.outline-message_plain{min-width:195px;padding:0 40px 0 20px}.outline-message_round.outline-message_plain.outline-message_full-width{min-width:215px;padding:0 20px}.outline-message_full-width{min-width:200px;padding:0 10px 0 50px}.outline-message_full-width.outline-message_plain{min-width:230px;padding:0 10px 0 15px}.outline-message_full-width.outline-message_light{min-width:210px;padding:0 10px 0 40px}.outline-message_visible{opacity:1}.outline-message_hidden{display:none}::-webkit-scrollbar{width:7px;height:7px;-webkit-border-radius:5px}::-webkit-scrollbar-track-piece{-webkit-border-radius:5px}::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:horizontal{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.35)}::-webkit-scrollbar:hover{background-color:rgba(0,0,0,.15)} -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJvdXRsaW5lLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyI6cm9vdCB7XG4gIC0tb3V0bGluZS16SW5kZXg6IDIwMDA7XG4gIC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0OiAxMDAlO1xuICAtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGg6IDEwMCU7XG59XG4vKiA9PT09PT09PT09IGNvbG9ycy50aGVtZSAtIOWfuuehgOminOiJsuWPmOmHj+mbhuWQiCA9PT09PT09PT09ICovXG4vKipcbiAqIGVsbGlwc2lzLmxlc3MgLSDmlofmnKznnIHnlaUgbWl4aW54IOWHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTFcbiAqL1xuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cbi8qKlxuICogc2hhZG93Lmxlc3MgLSDpmLTlvbHmoLflvI/orr7nva4gbWl4aW54IOWHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMjBcbiAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi8qID09PT09PT09PT0gaWNvbi50aGVtZSAtIHN2ZyDlm77moIfnmoTmoLflvI8gPT09PT09PT09PSAqL1xuLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWljb25fX3N2ZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIGZpbGw6IGN1cnJlbnRjb2xvcjtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWljb25faGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmc6aG92ZXIgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydDpob3ZlciB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydCAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGxlZnQ6IC0xZW07XG59XG4ub3V0bGluZS1kcmF3ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IC0xO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fbW9kYWwge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDIxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40cztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX21haW4sXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIHdpZHRoOiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9faGVhZGVyLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICAtbXMtZmxleC1uZWdhdGl2ZTogMDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSxcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgcGFkZGluZzogMCAxNnB4O1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiA1MnB4O1xuICBsaW5lLWhlaWdodDogNTJweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbjogMCAxNnB4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDEycHg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzk5OTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZSAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG4ub3V0bGluZS1kcmF3ZXJfX21haW4ge1xuICAtd2Via2l0LWJveC1mbGV4OiAxO1xuICAgICAgLW1zLWZsZXg6IDE7XG4gICAgICAgICAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fb3ZlcmxheSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC4xO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55LFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55IHtcbiAgd2lkdGg6IDI4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgd2lkdGg6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICB3aWR0aDogNTQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIsXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIge1xuICB3aWR0aDogNjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgd2lkdGg6IDcyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICB3aWR0aDogOTYwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtMjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTY5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3NtYWxsLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNzMwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX2xhcmdlLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICBoZWlnaHQ6IDI0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgaGVpZ2h0OiAzMjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3NtYWxsIHtcbiAgaGVpZ2h0OiAzNjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIGhlaWdodDogNDAwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgaGVpZ2h0OiA0NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2UsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX2xhcmdlIHtcbiAgaGVpZ2h0OiA0ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgdG9wOiBpbml0aWFsO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgcmlnaHQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIHRvcDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgYm90dG9tOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9ydGwsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbiAgdG9wOiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfdHRiLFxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB3aWR0aDogY2FsYygxMDAlIC0gNGVtKTtcbiAgbGVmdDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9mdWxsIHtcbiAgcGFkZGluZzogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiB2YXIoLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1jaGFwdGVycy1wYXJlbnQge1xuICAtd2Via2l0LXRyYW5zaXRpb246IDAuM3MgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zaXRpb246IDAuM3MgZWFzZS1pbi1vdXQ7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fdGl0bGUge1xuICBtYXJnaW46IDAgMTZweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0LFxuLm91dGxpbmUtY2hhcHRlcnNfX3N1YmplY3QsXG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbGlzdCB7XG4gIHBhZGRpbmc6IDAuNWVtIDA7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCB7XG4gIHBhZGRpbmctbGVmdDogMWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fcGxhY2Vob2xkZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDU4OTQyO1xuICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwIDEuNWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICM1NTU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fY29kZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtbXMtZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG4gIHRvcDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX21haW4sXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX21haW4sXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIG1heC1oZWlnaHQ6IHZhcigtLW91dGxpbmUtc3RpY2t5LWhlaWdodCk7XG59XG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19mb2xkZWQge1xuICB3aWR0aDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi8qKlxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nLndyYXBwZXIucG9zdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDNlbSA0ZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHNjcm9sbC10aW1lbGluZS1uYW1lOiAtLVByb2dyZXNzVGltZWxpbmU7XG4gIG92ZXJmbG93OiBzY3JvbGw7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX19wcm9ncmVzcyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAzO1xuICBoZWlnaHQ6IDRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MDdhZmU7XG4gIHNjYWxlOiAwIDE7XG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcbiAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICAtd2Via2l0LWFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xuICAgICAgICAgIGFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xuICBhbmltYXRpb24tdGltZWxpbmU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX2Nsb3NlIHtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDM7XG4gIHRvcDogNTAlO1xuICByaWdodDogMjJweDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgOHB4ICNkZGQ7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDhweCAjZGRkO1xuICBjb2xvcjogIzk5OTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX2Nsb3NlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyIGgxLFxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjNlbTtcbiAgZm9udC1zaXplOiAzLjVlbTtcbn1cbkAtd2Via2l0LWtleWZyYW1lcyBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyB7XG4gIHRvIHtcbiAgICBzY2FsZTogMSAxO1xuICB9XG59XG5Aa2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAgIHJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICB9XG59XG5AbWVkaWEgcHJpbnQge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXIgaDEsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIG1hcmdpbjogMTMuNHB0IDAgMjhwdCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMjBwdCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fY2xvc2UsXG4gIC5vdXRsaW5lLXJlYWRlci5vdXRsaW5lLXJlYWRlcl9fcHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgcHJlIHtcbiAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHByZSxcbiAgLm91dGxpbmUtcmVhZGVyIGNvZGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIgdGFibGUsXG4gIC5vdXRsaW5lLXJlYWRlciBpbWcsXG4gIC5vdXRsaW5lLXJlYWRlciBzdmcge1xuICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgLW1vei1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyX3NpYmxpbmcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLyogPT09PT09PT09PSBidXR0b25zLnRoZW1lIC0g5oyJ6ZKu5a+86Iiq5qC35byPID09PT09PT09PT0gKi9cbi5vdXRsaW5lLXRvb2xiYXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk5O1xuICBtYXJnaW46IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAxMHB4O1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM5OTk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzA1ODk0MjtcbiAgYm9yZGVyLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGZpbGw6IGN1cnJlbnRjb2xvcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG4gIGJvcmRlci1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS10b29sYmFyX3JvdW5kZWQub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZDpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXI6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZCAub3V0bGluZS10b29sYmFyX19idXR0b246aG92ZXIge1xuICBjb2xvcjogIzk5OTtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLFxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIHtcbiAgdG9wOiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIHRvcDogLTU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dCB7XG4gIGJvdHRvbTogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfYnR0Lm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBib3R0b206IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwsXG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDU2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bCB7XG4gIHRvcDogNTAlO1xuICByaWdodDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICByaWdodDogLTg2cHg7XG59XG4ub3V0bGluZS10b29sYmFyX2x0ciB7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAxMnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIub3V0bGluZS10b29sYmFyX2hpZGRlbiB7XG4gIGxlZnQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl90dGIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX3J0bCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyoqXG4gKiBmb250Lmxlc3MgLSDlrZfkvZPnm7jlhbPmoLflvI9cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjE2XG4gKi9cbi8qID09PT09PSDlrZfkvZMgPT09PT09ICovXG4vKiA9PT09PT0g5a2X6YeNID09PT09PSAqL1xuLyogPT09PT09IOWtl+WPtyA9PT09PT0gKi9cbi5vdXRsaW5lLW1lc3NhZ2Uge1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk7XG4gIG9wYWNpdHk6IDAuMTtcbiAgdG9wOiAtNTBweDtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCA1MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb2xvcjogIzY2NjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2NvbnRlbnQge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWFyZ2luOiAwO1xuICBtYXgtd2lkdGg6IDcwMHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGNvbG9yOiAjNjY2O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UsXG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgbGVmdDogMDtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZSB7XG4gIHJpZ2h0OiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjOTk5O1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2UgLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG4ub3V0bGluZS1tZXNzYWdlX2luZm8gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MDdhZmU7XG59XG4ub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjk5MDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3MgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Vycm9yIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1ZDVkO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMTkwcHg7XG4gIHBhZGRpbmc6IDAgNTBweCAwIDE1cHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9pbmZvIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjNTA3YWZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmOGZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2ZmOTkwMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmJlNjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX3N1Y2Nlc3Mge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICMwNTg5NDI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWY2ZWI7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9lcnJvciB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2ZmNWQ1ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIHdpZHRoOiAwO1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbiAub3V0bGluZS1tZXNzYWdlX19pY29uIC5vdXRsaW5lLWljb24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodCB7XG4gIG1pbi13aWR0aDogMTgwcHg7XG4gIHBhZGRpbmc6IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX2luZm8gLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2Vfd2FybmluZyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICNmZjk5MDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX2Vycm9yIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogI2ZmNWQ1ZDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kIHtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQge1xuICBtaW4td2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nOiAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0IC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDEwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdC5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDAgMjBweCAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMTk1cHg7XG4gIHBhZGRpbmc6IDAgNDBweCAwIDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjE1cHg7XG4gIHBhZGRpbmc6IDAgMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDUwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgub3V0bGluZS1tZXNzYWdlX3BsYWluIHtcbiAgbWluLXdpZHRoOiAyMzBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgMTVweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfZnVsbC13aWR0aC5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQge1xuICBtaW4td2lkdGg6IDIxMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV92aXNpYmxlIHtcbiAgb3BhY2l0eTogMTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qID09PT09IFNjcm9sbGJhciA9PT09PSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA3cHg7XG4gIGhlaWdodDogN3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2Uge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJblpoY21saFlteGxjeTVzWlhOeklpd2lMaTR2UEdsdWNIVjBJR056Y3lBMlBpSXNJbWxqYjI1ekxteGxjM01pTENKaGJtTm9iM0p6TG14bGMzTWlMQ0prY21GM1pYSXViR1Z6Y3lJc0ltMXBlR2x1Y3k1c1pYTnpJaXdpWTJoaGNIUmxjbk11YkdWemN5SXNJbkpsWVdSbGNpNXNaWE56SWl3aWRHOXZiR0poY2k1c1pYTnpJaXdpYldWemMyRm5aUzVzWlhOeklpd2ljMk55YjJ4c1ltRnlMbXhsYzNNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdSVUZEUXl4MVFrRkJRVHRGUVVORUxEaENRVUZCTzBWQlFXbERMQ3RDUVVGQk8wTkRSV2hETzBGQlEwUXNiVVJCUVcxRU8wRkJRMjVFT3pzN096dEhRVXRITzBGQlEwZ3NNRUpCUVRCQ08wRkJRekZDT3pzN096dEhRVXRITzBGQlEwZ3NORUpCUVRSQ08wRkJRelZDTEd0RVFVRnJSRHRCUTNCQ1F6dEZRVVZ1UkN4dFFrRkJRVHRGUVVGelFpeFhRVUZCTzBWQlExUXNjMEpCUVVFN1JVRkRWU3gxUWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEWWl4WlFVRkJPMFZCUTBFc2FVSkJRVUU3UTBSelFsUTdRVU55UW1NN1JVRkZWaXh0UWtGQlFUdEZRVU5aTEZkQlFVRTdSVUZEVkN4VFFVRkJPMFZCUTBnc1ZVRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRUU3g1UTBGQlFUdFZRVUZCTEdsRFFVRkJPMFZCUTJFc2FVSkJRVUU3UTBSelFuWkNPMEZEY2tKVE8wVkJRMUlzWTBGQlFUdERSSFZDUkR0QlJYcERSRHRGUVVORkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMR2xDUVVGQk8wTkdNa05FTzBGRmVrTkRPMFZCUTBVc1kwRkJRVHREUmpKRFNEdEJSWHBEUnpzN08wVkJSMFVzV1VGQlFUdEZRVU5CTEhOQ1FVRkJPME5HTWtOTU8wRkZlRU5ITzBWQlEwVXNaVUZCUVR0RFJqQkRURHRCUlhSRFF6dEZRVVZKTEhOQ1FVRkJPME5HZFVOTU8wRkZiRU5ITzBWQlEwVXNhMEpCUVVFN1EwWnZRMHc3UVVWMFEwTTdSVUZOU1N4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFRRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdEZRVU5CTEZkQlFVRTdRMFp0UTB3N1FVZHlSVVE3UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzVVVGQlFUdEZRVU5CTEZWQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxDdENRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5JZFVWRU8wRkhja1ZETzBWRE5rTkZMSGREUVVGQk8xVkJRVUVzWjBOQlFVRTdSVVF6UTBFc2NVSkJRVUU3UlVGQlFTeHhRa0ZCUVR0RlFVRkJMR05CUVVFN1JVRkRRU3cyUWtGQlFUdEZRVUZCTERoQ1FVRkJPMDFCUVVFc01rSkJRVUU3VlVGQlFTeDFRa0ZCUVR0RlFVTkJMSE5DUVVGQk8wMUJRVUVzYTBKQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNkVUpCUVVFN1JVRkRRU3hyUTBGQlFUdFZRVUZCTERCQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTBoMVJVZzdRVWR3UlVNN096dEZRVWRGTEZsQlFVRTdSVUZEUVN3clFrRkJRVHRWUVVGQkxIVkNRVUZCTzBOSWMwVklPMEZIYmtWRE96dEZRVVZGTEhGQ1FVRkJPMDFCUVVFc1pVRkJRVHREU0hGRlNEdEJSMnhGUXpzN08wVkJSMFVzWjBKQlFVRTdRMGh2UlVnN1FVZHFSVU03TzBWQlJVVXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzWlVGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHbENRVUZCTzBOSWJVVklPMEZIYUVWRE8wVkJRMFVzWjBKQlFVRTdSVUZEUVN4cFFrRkJRVHRGUVVOQkxHVkJRVUU3UlVGRFFTd3JRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wVkJRMEVzYVVOQlFVRTdRMGhyUlVnN1FVY3ZSRU03UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hUUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc2EwSkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc2IwTkJRVUU3VlVGQlFTdzBRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTklhVVZJTzBGSE9VVkRPMFZCWjBKSkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMRTlCUVVFN1JVRkRRU3hSUVVGQk8wTklhVVZNTzBGSE9VUkhPMFZCUTBVc1dVRkJRVHREU0dkRlREdEJSelZFUXp0RlFVTkZMRzlDUVVGQk8wMUJRVUVzV1VGQlFUdFZRVUZCTEZGQlFVRTdSVUZEUVN4bFFVRkJPME5JT0VSSU8wRkhNMFJETzBWQlEwVXNaVUZCUVR0RlFVTkJMR3RDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMGcyUkVnN1FVY3hSRU03UlVGRFJTeFpRVUZCTzBWQlEwRXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVDBGQlFUdEZRVU5CTEZGQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc1lVRkJRVHRGUVVOQkxIVkNRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMR2xDUVVGQk8wTklORVJJTzBGSGRFUkxPenRGUVVORkxHRkJRVUU3UTBoNVJGQTdRVWQwUkVzN08wVkJRMFVzWVVGQlFUdERTSGxFVUR0QlIzUkVTenM3UlVGRFJTeGhRVUZCTzBOSWVVUlFPMEZIZEVSTE96dEZRVU5GTEdGQlFVRTdRMGg1UkZBN1FVZDBSRXM3TzBWQlEwVXNZVUZCUVR0RFNIbEVVRHRCUjNSRVN6czdSVUZEUlN4aFFVRkJPME5JZVVSUU8wRkhjRVJETzBWQlEwVXNLMEpCUVVFN1EwaHpSRWc3UVVkc1JFODdSVUZEUlN4alFVRkJPME5JYjBSVU8wRkhMME5QTzBWQlEwVXNZMEZCUVR0RFNHbEVWRHRCUnpWRFR6dEZRVU5GTEdOQlFVRTdRMGc0UTFRN1FVZDZRMDg3UlVGRFJTeGpRVUZCTzBOSU1rTlVPMEZIZEVOUE8wVkJRMFVzWTBGQlFUdERTSGREVkR0QlIyNURUenRGUVVORkxHTkJRVUU3UTBoeFExUTdRVWN2UWtNN1JVRkRSU3huUTBGQlFUdERTR2xEU0R0QlJ6ZENUenRGUVVORkxHRkJRVUU3UTBnclFsUTdRVWN4UWs4N1JVRkRSU3hoUVVGQk8wTklORUpVTzBGSGRrSlBPMFZCUTBVc1lVRkJRVHREU0hsQ1ZEdEJSM0JDVHp0RlFVTkZMR0ZCUVVFN1EwaHpRbFE3UVVkcVFrODdSVUZEUlN4aFFVRkJPME5JYlVKVU8wRkhaRTg3UlVGRFJTeGhRVUZCTzBOSVowSlVPMEZIVmtNN08wVkJSVVVzVVVGQlFUdEZRVU5CTEZsQlFVRTdRMGhaU0R0QlIxUkxPenRGUVVORkxHTkJRVUU3UTBoWlVEdEJSMVJMT3p0RlFVTkZMR05CUVVFN1EwaFpVRHRCUjFSTE96dEZRVU5GTEdOQlFVRTdRMGhaVUR0QlIxUkxPenRGUVVORkxHTkJRVUU3UTBoWlVEdEJSMVJMT3p0RlFVTkZMR05CUVVFN1EwaFpVRHRCUjFSTE96dEZRVU5GTEdOQlFVRTdRMGhaVUR0QlIxQkRPMFZCUTBVc2FVTkJRVUU3UTBoVFNEdEJSMHhQTzBWQlEwVXNXVUZCUVR0RFNFOVVPMEZIUms4N1JVRkRSU3haUVVGQk8wTklTVlE3UVVkRFR6dEZRVU5GTEZsQlFVRTdRMGhEVkR0QlIwbFBPMFZCUTBVc1dVRkJRVHREU0VaVU8wRkhUMDg3UlVGRFJTeFpRVUZCTzBOSVRGUTdRVWRWVHp0RlFVTkZMRmxCUVVFN1EwaFNWRHRCUjJORE8wVkJRMFVzWVVGQlFUdEZRVU5CTERoQ1FVRkJPME5JV2tnN1FVZG5Razg3UlVGRFJTeGxRVUZCTzBOSVpGUTdRVWR0UWs4N1JVRkRSU3hsUVVGQk8wTklha0pVTzBGSGMwSlBPMFZCUTBVc1pVRkJRVHREU0hCQ1ZEdEJSM2xDVHp0RlFVTkZMR1ZCUVVFN1EwaDJRbFE3UVVjMFFrODdSVUZEUlN4bFFVRkJPME5JTVVKVU8wRkhLMEpQTzBWQlEwVXNaVUZCUVR0RFNEZENWRHRCUjIxRFF6dEZRVU5GTEc5Q1FVRkJPMFZCUTBFc0swSkJRVUU3UTBocVEwZzdRVWR0UTBjN1JVRkRSU3huUWtGQlFUdERTR3BEVER0QlIyMURTenRGUVVORkxGTkJRVUU3UTBocVExQTdRVWR2UTBzN1JVRkRSU3hSUVVGQk8wTkliRU5RTzBGSGNVTkxPMFZCUTBVc1QwRkJRVHREU0c1RFVEdEJSM05EU3p0RlFVTkZMRlZCUVVFN1EwaHdRMUE3UVVjeVEwczdPMFZCUlVVc2VVSkJRVUU3UlVGRFFTeFRRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdERTSHBEVUR0QlJ6UkRTenM3UlVGRlJTeDNRa0ZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3h2UTBGQlFUdFZRVUZCTERSQ1FVRkJPME5JTVVOUU8wRkhLME5UTzBWQlEwVXNWMEZCUVR0RFNEZERXRHRCUjJkRVV6dEZRVU5GTEZWQlFVRTdRMGc1UTFnN1FVZHBSRk03UlVGRFJTeFRRVUZCTzBOSUwwTllPMEZIYTBSVE8wVkJRMFVzV1VGQlFUdERTR2hFV0R0QlIzbEVTenM3UlVGRlJTeGhRVUZCTzBWQlEwRXNOa0pCUVVFN1EwaDJSRkE3UVVjMFJFTTdSVUZEUlN4WFFVRkJPME5JTVVSSU8wRkxkRmRFTzBWQlEwVXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEhGRFFVRkJPMFZCUTBFc1pVRkJRVHREVEhkWFJEdEJTM1JYUXp0RlFVTkZMSEZEUVVGQk8wVkJRVUVzTmtKQlFVRTdRMHgzVjBnN1FVdHlWME03UlVGRFJTeGxRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMR3RDUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4cFEwRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNhVUpCUVVFN1JVRkRRU3hwUWtGQlFUdERUSFZYU0R0QlMzQlhRenRGUVVORkxHMUNRVUZCTzBWQlEwRXNWMEZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3hwUWtGQlFUdERUSE5YU0R0QlMyNVhRenM3TzBWQlIwVXNiVUpCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4elFrRkJRVHRGUVVOQkxHbENRVUZCTzBOTWNWZElPMEZMYkZkRE8wVkJRMFVzYVVKQlFVRTdRMHh2VjBnN1FVdHFWME03UlVGRFJTeHJRa0ZCUVR0RFRHMVhTRHRCUzJoWFF6dEZRVU5GTEZWQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNhVUpCUVVFN1EweHJWMGc3UVVzdlZrTTdSVUZEUlN4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFBRVUZCTzBWQlEwRXNVVUZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzTUVKQlFVRTdSVUZEUVN3clFrRkJRVHRGUVVOQkxHdERRVUZCTzFWQlFVRXNNRUpCUVVFN1JVRkRRU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc2FVSkJRVUU3UTB4cFYwZzdRVXM1VmtNN1JVUm9SVFJDTEc5Q1FVRkJPMFZCUTJZc2QwSkJRVUU3UlVGRFJ5eHBRa0ZCUVR0RlEyZEZaQ3hsUVVGQk8wVkJRMEVzYVVKQlFVRTdRMHhyVjBnN1FVdG9WMGM3T3p0RlFVZEZMSE5DUVVGQk8wVkJRMEVzV1VGQlFUdERUR3RYVER0QlN5OVdSenRGUVVORkxHVkJRVUU3UTB4cFYwdzdRVXMzVmtNN1JVRkRSU3h4UWtGQlFUdERUQ3RXU0R0QlN6RldTenM3TzBWQlIwVXNaVUZCUVR0RlFVTkJMR3RDUVVGQk8wTk1ORlpRTzBGTGRsWkRPenRGUVVWRkxIRkNRVUZCTzBWQlFVRXNjVUpCUVVFN1JVRkJRU3hqUVVGQk8wVkJRMEVzYzBKQlFVRTdUVUZCUVN4clFrRkJRVHRGUVVOQkxEWkNRVUZCTzBWQlFVRXNPRUpCUVVFN1RVRkJRU3d5UWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc0swSkJRVUU3UlVGRFFTeFBRVUZCTzBWQlEwRXNhVUpCUVVFN1EweDVWa2c3UVV0MFZrczdPenM3UlVGRlJTd3JRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wTk1NRlpRTzBGTGRsWkxPenRGUVVORkxIRkNRVUZCTzAxQlFVRXNaVUZCUVR0RFREQldVRHRCUzNaV1N6czdSVUZEUlN4dlFrRkJRVHROUVVGQkxGbEJRVUU3VlVGQlFTeFJRVUZCTzBWQlEwRXNaVUZCUVR0RFREQldVRHRCUzNKV1F6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2VVTkJRVUU3UTB4MVZrZzdRVXR3VmtNN1JVRkRSU3huUWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5NYzFaSU8wRkxibFpETzBWQlEwVXNZMEZCUVR0RFRIRldTRHRCUzJ4V1F6dEZRVU5GTEZOQlFVRTdSVUZEUVN4cFFrRkJRVHREVEc5V1NEdEJRVU5FT3pzN096dEhRVXRITzBGQlEwZ3NNRUpCUVRCQ08wRkJRekZDTERSQ1FVRTBRanRCUVVNMVFpdzBRa0ZCTkVJN1FVMDFaVEZDTzBWQlEwVXNZMEZCUVR0RFRqaGxTRHRCVFRObFF6dEZRVU5GTERSQ1FVRkJPMFZCUTBFc09FSkJRVUU3UlVGRFFTeHhSRUZCUVR0RlFVTkJMRzlDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMDQyWlVnN1FVMHhaVU03UlVGRFJTeDVRa0ZCUVR0RFRqUmxTRHRCVFRGbFJ6dEZRVU5GTEhsQ1FVRkJPME5PTkdWTU8wRk5lbVZQTzBWQlEwVXNZMEZCUVR0RFRqSmxWRHRCVFhKbFF6dEZRVU5GTEdWQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFBRVUZCTzBWQlEwRXNVVUZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEN0Q1FVRkJPMVZCUVVFc2RVSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RlFVTkJMSFZDUVVGQk8wVkJRMEVzZVVOQlFVRTdSVUZEUVN4cFFrRkJRVHREVG5WbFNEdEJUWEJsU3p0RlFVTkZMR2RDUVVGQk8wVkJRMEVzVDBGQlFUdEZRVU5CTEZGQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTd3dRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc2EwUkJRVUU3VlVGQlFTd3dRMEZCUVR0RlFVTkJMSFZEUVVGQk8wTk9jMlZRTzBGTmJtVkxPMFZHUTBZc2QwTkJRVUU3VlVGQlFTeG5RMEZCUVR0RlJVTkpMR1ZCUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4VFFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxGVkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMRzlDUVVGQk8wVkJRMEVzTUVKQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdEZRVU5CTEdkQ1FVRkJPMFZCUTBFc2FVTkJRVUU3VlVGQlFTeDVRa0ZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3gxUWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5PY1dWUU8wRk5ibVZQTzBWQlEwVXNNRUpCUVVFN1JVRkRRU3haUVVGQk8wTk9jV1ZVTzBGTk1XaENRenM3UlVFeVJFMHNORUpCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5PYldWUU8wRk5OMlJFTzBWQlEwVTdTVUZEUlN4WFFVRkJPMGRPSzJSRU8wTkJRMFk3UVUxc1pVUTdSVUZEUlR0SlFVTkZMRmRCUVVFN1IwNHJaRVE3UTBGRFJqdEJUVFZrUkR0RlFVVkpPMGxCUTBVc2EwSkJRVUU3UjA0MlpFZzdSVTB4WkVNN1NVRkRSU3gxUWtGQlFUdEpRVU5CTEdGQlFVRTdSMDQwWkVnN1JVMTZaRU03U1VGRFJTeGxRVUZCTzBkT01tUklPME5CUTBZN1FVMTJaRVE3UlVGRFJUczdTVUZGUlN3eVFrRkJRVHRIVG5sa1JEdEZUWFJrUkR0SlFVTkZMREJDUVVGQk8wbEJRMEVzYVVKQlFVRTdSMDUzWkVRN1JVMHhaRVE3TzBsQlRVa3NhVU5CUVVFN1NVRkRRU3c0UWtGQlFUdEpRVU5CTERKQ1FVRkJPMGRPZDJSSU8wVk5jR1JITzBsQlEwVXNPRUpCUVVFN1NVRkRRU3gzUWtGQlFUdEpRVU5CTEhOQ1FVRkJPMGxCUTBFc05FSkJRVUU3UjA1elpFdzdSVTB6WkVNN08wbEJWVWtzYVVOQlFVRTdTVUZEUVN3NFFrRkJRVHRKUVVOQkxESkNRVUZCTzBkT2NXUk1PMFZOYkdSSE96dEpRVVZGTEhsQ1FVRkJPMGRPYjJSTU8wVk5hR1pFTzBsQmFVTkpMSGRDUVVGQk8wbEJRMEVzYTBOQlFVRTdTVUZEUVN3NFFrRkJRVHRIVG10a1NEdEZUWEptUkRzN1NVRjNRMGtzYTBOQlFVRTdSMDVwWkVnN1JVMTZaa1E3T3p0SlFUaERTU3h0UTBGQlFUdFBRVUZCTEdkRFFVRkJPMWxCUVVFc2IwSkJRVUU3UjA1blpFZzdSVTAzWTBNN1NVRkRSU3g1UWtGQlFUdEhUaXRqU0R0RFFVTkdPMEZCUTBRc2EwUkJRV3RFTzBGUE4yNUNiRVE3UlVGRFJTeG5Ra0ZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzYTBOQlFVRTdWVUZCUVN3d1FrRkJRVHRGUVVOQkxHbENRVUZCTzBOUUsyNUNSRHRCVHpkdVFrTTdSVWhyUkVVc2QwTkJRVUU3VlVGQlFTeG5RMEZCUVR0RlIyaEVRU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTd3dRa0ZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMEVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHRGUVVOQkxIVkNRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4cFFrRkJRVHREVUN0dVFrZzdRVTgzYmtKSE8wVkJRMFVzWlVGQlFUdEZRVU5CTEhOQ1FVRkJPME5RSzI1Q1REdEJUelZ1UWtjN1JVRkRSU3hqUVVGQk8wTlFPRzVDVER0QlQzcHVRa2M3T3p0RlFVZEZMRmxCUVVFN1JVRkRRU3h6UWtGQlFUdERVREp1UWt3N1FVOTRia0pITzBWQlEwVXNaVUZCUVR0RFVEQnVRa3c3UVU5MGJrSkRPMFZCUTBVc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNVMEZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEhsRFFVRkJPMVZCUVVFc2FVTkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTlFkMjVDU0R0QlQyNXVRa3M3UlVGRFJTeFpRVUZCTzBWQlEwRXNNRUpCUVVFN1JVRkRRU3h6UWtGQlFUdERVSEZ1UWxBN1FVOXVia0pQTzBWQlEwVXNXVUZCUVR0RFVIRnVRbFE3UVU4dmJVSkxPenM3UlVGSFJTeFpRVUZCTzBOUWFXNUNVRHRCVHpOdFFrYzdSVUZEUlN4dlFrRkJRVHREVURadFFrdzdRVTkwYlVKTE96czdPenM3T3p0RlFVbEZMRzlDUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEcxQ1FVRkJPME5RTkcxQ1VEdEJUekZ0UWs4N096czdPenM3TzBWQlEwVXNXVUZCUVR0RlFVTkJMRzFDUVVGQk8wTlFiVzVDVkR0QlR5OXRRa3M3TzBWQlEwVXNNRUpCUVVFN1ExQnJia0pRTzBGUE4yMUNRenM3UlVGRlJTeFZRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdERVQ3R0UWtnN1FVOXNia0pET3p0RlFVMUpMSE5DUVVGQk8wTlFaMjVDVER0QlR6VnRRa003UlVGRFJTeFZRVUZCTzBOUU9HMUNTRHRCVHpWdFFrYzdSVUZEUlN4WFFVRkJPME5RT0cxQ1REdEJUekZ0UWtNN1JVRkRSU3hoUVVGQk8wTlFORzFDU0R0QlR6RnRRa2M3UlVGRFJTeGpRVUZCTzBOUU5HMUNURHRCVDNodFFrTTdPMFZCUlVVc2IwTkJRVUU3VlVGQlFTdzBRa0ZCUVR0RlFVTkJMRmxCUVVFN1ExQXdiVUpJTzBGUGRtMUNRenRGUVVORkxGTkJRVUU3UlVGRFFTeFpRVUZCTzBOUWVXMUNTRHRCVDNadFFrYzdSVUZEUlN4aFFVRkJPME5RZVcxQ1REdEJUM0p0UWtNN1JVRkRSU3hUUVVGQk8wVkJRMEVzVjBGQlFUdERVSFZ0UWtnN1FVOXliVUpITzBWQlEwVXNXVUZCUVR0RFVIVnRRa3c3UVU4NWJFSkxPenM3TzBWQlEwVXNZMEZCUVR0RFVHMXRRbEE3UVVGRFJEczdPenM3UjBGTFJ6dEJRVU5JTEhOQ1FVRnpRanRCUVVOMFFpeHpRa0ZCYzBJN1FVRkRkRUlzYzBKQlFYTkNPMEZSYUhoQ2RFSTdSVXByUWpaQ0xHMUNRVUZCTzBWQmMwTjZRaXgzUTBGQlFUdFZRVUZCTEdkRFFVRkJPMFZKY2tSR0xHZENRVUZCTzBWQlEwRXNZMEZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc2VVTkJRVUU3UlVGQlFTeHBRMEZCUVR0RlFVTkJMRzlEUVVGQk8xVkJRVUVzTkVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVW10NFFrUTdRVkZvZUVKRE8wVktaalJDTEc5Q1FVRkJPMFZCUTJZc2QwSkJRVUU3UlVsblFsZ3NWVUZCUVR0RlFVTkJMR2xDUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEd0Q1FVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNhVUpCUVVFN1ExSnRlRUpJTzBGUmFIaENRenM3UlVGRlJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNhVUpCUVVFN1ExSnJlRUpJTzBGUkwzZENRenRGUVVORkxGRkJRVUU3UlVGRFFTeFpRVUZCTzBOU2FYaENTRHRCVVc1NFFrTTdSVUZMU1N4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFRRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMSGxEUVVGQk8xVkJRVUVzYVVOQlFVRTdRMUpwZUVKTU8wRlJOM2RDUXp0RlFVTkZMRk5CUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEZsQlFVRTdRMUlyZDBKSU8wRlJiSGhDUXp0RlFVMUpMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZOQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc2VVTkJRVUU3VlVGQlFTeHBRMEZCUVR0RFVpdDNRa3c3UVZFMWQwSkhPMFZCUTBVc1dVRkJRVHREVWpoM1FrdzdRVkV4ZDBKRE8wVkJSVWtzTUVKQlFVRTdRMUl5ZDBKTU8wRlJkbmRDUXp0RlFVVkpMREJDUVVGQk8wTlNkM2RDVER0QlVYQjNRa003UlVGRlNTd3dRa0ZCUVR0RFVuRjNRa3c3UVZGcWQwSkRPMFZCUlVrc01FSkJRVUU3UTFKcmQwSk1PMEZST1haQ1F6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTFKbmQwSklPMEZSTjNaQ1N6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTFJcmRrSlFPMEZSTlhaQ1N6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTFJNGRrSlFPMEZSTTNaQ1N6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTFJMmRrSlFPMEZSTVhaQ1N6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTFJMGRrSlFPMEZSYkhoQ1F6dEZRVEpDU1N4VFFVRkJPMFZCUTBFc1kwRkJRVHREVWpCMlFrdzdRVkYwZUVKRE8wVkJLMEpOTEdOQlFVRTdRMUl3ZGtKUU8wRlJjblpDUXp0RlFVTkZMR2xDUVVGQk8wVkJRMEVzWjBKQlFVRTdRMUoxZGtKSU8wRlJjSFpDU3p0RlFVVkpMR1ZCUVVFN1ExSnhka0pVTzBGUmFuWkNTenRGUVVWSkxHVkJRVUU3UTFKcmRrSlVPMEZST1hWQ1N6dEZRVVZKTEdWQlFVRTdRMUlyZFVKVU8wRlJNM1ZDU3p0RlFVVkpMR1ZCUVVFN1ExSTBkVUpVTzBGUmNuZENRenRGUVN0Q1NTeDFRa0ZCUVR0RFVubDFRa3c3UVZGeWRVSkRPMFZLZEVveVFpeHZRa0ZCUVR0RFNqZ3pRalZDTzBGUmNIVkNTenRGUVVORkxHbENRVUZCTzBWQlEwRXNaMEpCUVVFN1ExSnpkVUpRTzBGUmVIVkNTenRGU2pGS2RVSXNiMEpCUVVFN1JVbG5TMjVDTEZWQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeHJRa0ZCUVR0RFVuTjFRbFE3UVZGdWRVSlBPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVuRjFRbFE3UVZGcWRVSkxPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVtMTFRbEE3UVZGcWRVSlBPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RFVtMTFRbFE3UVZFM2RFSkRPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVpdDBRa2c3UVZFMWRFSkxPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVqaDBRbEE3UVZFemRFSkxPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVqWjBRbEE3UVZGNGRFSkRPMFZCUTBVc1YwRkJRVHREVWpCMFFrZzdRVkYyZEVKRE8wVkJRMFVzWTBGQlFUdERVbmwwUWtnN1FVRkRSQ3d5UWtGQk1rSTdRVk12TjBJelFqdEZRVU5GTEZkQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc01rSkJRVUU3UTFScE9FSkVPMEZUTHpkQ1F6dEZRVU5GTERKQ1FVRkJPME5VYVRoQ1NEdEJVemMzUWtjN1JVRkRSU3h6UTBGQlFUdEZRVU5CTERKQ1FVRkJPME5VS3pkQ1REdEJVelUzUWtjN1JVRkRSU3h6UTBGQlFUdEZRVU5CTERKQ1FVRkJPME5VT0RkQ1REdEJVek0zUWtjN1JVRkRSU3h6UTBGQlFUdERWRFkzUWt3N1FWTjZOMEpETzBWQlEwVXNjME5CUVVFN1ExUXlOMEpJSWl3aVptbHNaU0k2SW05MWRHeHBibVV1WTNOeklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lPbkp2YjNRZ2UxeHlYRzRnSUMwdGIzVjBiR2x1WlMxNlNXNWtaWGc2SURJd01EQTdYSEpjYmlBZ0xTMXZkWFJzYVc1bExYTjBhV05yZVMxb1pXbG5hSFE2SURFd01DVTdYSEpjYmlBZ0xTMXZkWFJzYVc1bExXTm9ZWEIwWlhKekxYZHBaSFJvT2lBeE1EQWxPMXh5WEc1OVhISmNiaUlzSWpweWIyOTBJSHRjYmlBZ0xTMXZkWFJzYVc1bExYcEpibVJsZURvZ01qQXdNRHRjYmlBZ0xTMXZkWFJzYVc1bExYTjBhV05yZVMxb1pXbG5hSFE2SURFd01DVTdYRzRnSUMwdGIzVjBiR2x1WlMxamFHRndkR1Z5Y3kxM2FXUjBhRG9nTVRBd0pUdGNibjFjYmk4cUlEMDlQVDA5UFQwOVBUMGdZMjlzYjNKekxuUm9aVzFsSUMwZzVaKzY1NkdBNmFLYzZJbXk1WStZNlllUDZadUc1WkNJSUQwOVBUMDlQVDA5UFQwZ0tpOWNiaThxS2x4dUlDb2daV3hzYVhCemFYTXViR1Z6Y3lBdElPYVdoK2Fjck9lY2dlZVZwU0J0YVhocGJuZ2c1WWU5NXBXd1hHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR4TVZ4dUlDb3ZYRzR2S2lBOVBUMDlQVDBnNXBhSDVweXM1NXlCNTVXbDVZZTk1cFd3SUQwOVBUMDlQU0FxTDF4dUx5b3FYRzRnS2lCemFHRmtiM2N1YkdWemN5QXRJT21ZdE9XOXNlYWd0K1c4aitpdXZ1ZTlyaUJ0YVhocGJuZ2c1WWU5NXBXd1hHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR5TUZ4dUlDb3ZYRzR2S2lBOVBUMDlQVDBnNlppMDViMng1cUMzNWJ5UDZLNis1NzJ1NVllOTVwV3dJRDA5UFQwOVBTQXFMMXh1THlvZ1BUMDlQVDA5UFQwOVBTQnBZMjl1TG5Sb1pXMWxJQzBnYzNabklPV2J2dWFnaCtlYWhPYWd0K1c4anlBOVBUMDlQVDA5UFQwOUlDb3ZYRzR1YjNWMGJHbHVaUzFwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4dUlDQjZMV2x1WkdWNE9pQXhPMXh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYRzRnSUhabGNuUnBZMkZzTFdGc2FXZHVPaUJ0YVdSa2JHVTdYRzRnSUhkcFpIUm9PaUF4WlcwN1hHNGdJR2hsYVdkb2REb2dNV1Z0TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0YVdOdmJsOWZjM1puSUh0Y2JpQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPMXh1SUNCNkxXbHVaR1Y0T2lBeU8xeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2JHVm1kRG9nTlRBbE8xeHVJQ0IzYVdSMGFEb2dNV1Z0TzF4dUlDQm9aV2xuYUhRNklERmxiVHRjYmlBZ1ptbHNiRG9nWTNWeWNtVnVkR052Ykc5eU8xeHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlNndE5UQWxMQ0F0TlRBbEtUdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExXbGpiMjVmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1jZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklERTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMW9aV0ZrYVc1blgxOWhibU5vYjNJZ2UxeHVJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHVmVnh1TG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMW9aV0ZrYVc1blgxOWhibU5vYjNJNmRtbHphWFJsWkN4Y2JpNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2pwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak9UazVPMXh1SUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0k2YUc5MlpYSWdlMXh1SUNCamIyeHZjam9nSXpVd04yRm1aVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1jNmFHOTJaWElnTG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlJSHRjYmlBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh1ZlZ4dUxtOTFkR3hwYm1VdGFHVmhaR2x1WjE5emRHRnlkRHBvYjNabGNpQjdYRzRnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4dWZWeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVoxOXpkR0Z5ZENBdWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0lnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpWa29MVFV3SlNrN1hHNGdJR3hsWm5RNklDMHhaVzA3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklDMHhPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNiaUFnZG1semFXSnBiR2wwZVRvZ2FHbGtaR1Z1TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTl0YjJSaGJDQjdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0EyY0hnZ01YQjRJQ05rWTJSbVpUWTdYRzRnSUdScGMzQnNZWGs2SUdac1pYZzdYRzRnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYRzRnSUdac1pYZ3RkM0poY0RvZ2JtOTNjbUZ3TzF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJeE8xeHVJQ0JvWldsbmFIUTZJREV3TUNVN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN1hHNGdJSFJ5WVc1emFYUnBiMjR0WkhWeVlYUnBiMjQ2SURBdU5ITTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyaGxZV1JsY2l4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmJXRnBiaXhjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWm05dmRHVnlJSHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWDJobFlXUmxjaXhjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWm05dmRHVnlJSHRjYmlBZ1pteGxlQzF6YUhKcGJtczZJREE3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgzUnBkR3hsTEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5dFlXbHVMRnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTltYjI5MFpYSWdlMXh1SUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyaGxZV1JsY2l4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmRHbDBiR1VnZTF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHVJQ0JvWldsbmFIUTZJRFV5Y0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBMU1uQjRPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOTBhWFJzWlNCN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVRad2VEdGNiaUFnWm05dWRDMTNaV2xuYUhRNklEUXdNRHRjYmlBZ2JXRnlaMmx1T2lBd0lERTJjSGc3WEc0Z0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc0Z0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNBalpHTmtabVUyTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOWpiRzl6WlNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lISnBaMmgwT2lBeE1uQjRPMXh1SUNCM2FXUjBhRG9nTWpCd2VEdGNiaUFnYUdWcFoyaDBPaUF5TUhCNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01qQndlRHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUdadmJuUXRjMmw2WlRvZ01qQndlRHRjYmlBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWTJ4dmMyVWdMbTkxZEd4cGJtVXRhV052YmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQXdPMXh1SUNCc1pXWjBPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOWpiRzl6WlRwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak5qWTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5dFlXbHVJSHRjYmlBZ1pteGxlRG9nTVR0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYMlp2YjNSbGNpQjdYRzRnSUcxaGNtZHBiam9nTUNCaGRYUnZPMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQnlhV2RvZER0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmYjNabGNteGhlU0I3WEc0Z0lHTnZiblJsYm5RNklDY25PMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNGdJSG90YVc1a1pYZzZJREU3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnZDJsa2RHZzZJREV3TUNVN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmp0Y2JpQWdiM0JoWTJsMGVUb2dNQzR4TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDkwYVc1NUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBhVzU1SUh0Y2JpQWdkMmxrZEdnNklESTRNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRhVzVwTEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4MGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5dGFXNXBJSHRjYmlBZ2QybGtkR2c2SURRNE1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQ3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlzZEhJdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd2dlMXh1SUNCM2FXUjBhRG9nTlRRd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWElzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWElnZTF4dUlDQjNhV1IwYURvZ05qZ3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMWxaR2wxYlN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXVmthWFZ0SUh0Y2JpQWdkMmxrZEdnNklEY3lNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlVnZTF4dUlDQjNhV1IwYURvZ09UWXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNJSHRjYmlBZ1ltOXlaR1Z5TFd4bFpuUTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5MGFXNTVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJSEpwWjJoME9pQXRNamt3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzTG05MWRHeHBibVV0WkhKaGQyVnlYMjFwYm1rdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2NtbG5hSFE2SUMwME9UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5eWRHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZmMyMWhiR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnY21sbmFIUTZJQzAxTlRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3dWIzVjBiR2x1WlMxa2NtRjNaWEpmY21WbmRXeGhjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0J5YVdkb2REb2dMVFk1TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl0WldScGRXMHViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdjbWxuYUhRNklDMDNNekJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2NtbG5hSFE2SUMwNU56QndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISWdlMXh1SUNCaWIzSmtaWEl0Y21sbmFIUTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4MGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGFXNTVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMHlPVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZiV2x1YVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0TkRrd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNOdFlXeHNMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMDFOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQnNaV1owT2lBdE5qa3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMWxaR2wxYlM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0TnpNd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMDVOekJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0lzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMElIdGNiaUFnYkdWbWREb2dNRHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNScGJua3NYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYM1JwYm5rZ2UxeHVJQ0JvWldsbmFIUTZJREkwTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl0YVc1cExGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgySjBkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRhVzVwSUh0Y2JpQWdhR1ZwWjJoME9pQXpNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZjMjFoYkd3c1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlluUjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgzTnRZV3hzSUh0Y2JpQWdhR1ZwWjJoME9pQXpOakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpeGNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpQjdYRzRnSUdobGFXZG9kRG9nTkRBd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxbFpHbDFiU3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYldWa2FYVnRJSHRjYmlBZ2FHVnBaMmgwT2lBME5EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlVzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMExtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxJSHRjYmlBZ2FHVnBaMmgwT2lBME9EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSWdlMXh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTJSalpHWmxOanRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmRHbHVlUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0IwYjNBNklDMHlOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZiV2x1YVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCMGIzQTZJQzB6TXpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDkwZEdJdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdkRzl3T2lBdE16Y3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmRIUmlMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSmxaM1ZzWVhJdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2RHOXdPaUF0TkRFd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxbFpHbDFiUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0IwYjNBNklDMDBOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2RHOXdPaUF0TkRrd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMElIdGNiaUFnZEc5d09pQnBibWwwYVdGc08xeHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ0kyUmpaR1psTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZkR2x1ZVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCaWIzUjBiMjA2SUMweU5UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXbHVhUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0JpYjNSMGIyMDZJQzB6TXpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdZbTkwZEc5dE9pQXRNemN3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYM0psWjNWc1lYSXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdZbTkwZEc5dE9pQXROREV3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYMjFsWkdsMWJTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQmliM1IwYjIwNklDMDBOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ1ltOTBkRzl0T2lBdE5Ea3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmIzQmxibVZrSUh0Y2JpQWdkbWx6YVdKcGJHbDBlVG9nZG1semFXSnNaVHRjYmlBZ2VpMXBibVJsZURvZ2RtRnlLQzB0YjNWMGJHbHVaUzE2U1c1a1pYZ3BPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDI5d1pXNWxaQzV2ZFhSc2FXNWxMV1J5WVhkbGNpQjdYRzRnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzSUh0Y2JpQWdjbWxuYUhRNklEQTdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjNCbGJtVmtMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHeGxablE2SURBN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNSMFlpQjdYRzRnSUhSdmNEb2dNRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwSUh0Y2JpQWdZbTkwZEc5dE9pQXdPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDI5bVpuTmxkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3dzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHaGxhV2RvZERvZ1kyRnNZeWd4TURBbElDMGdOR1Z0S1R0Y2JpQWdkRzl3T2lBMU1DVTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXZabVp6WlhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRZ2UxeHVJQ0IzYVdSMGFEb2dZMkZzWXlneE1EQWxJQzBnTkdWdEtUdGNiaUFnYkdWbWREb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3Z2UxeHVJQ0J5YVdkb2REb2dNbVZ0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Y0dWdVpXUXViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlJSHRjYmlBZ2JHVm1kRG9nTW1WdE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMjltWm5ObGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZkSFJpSUh0Y2JpQWdkRzl3T2lBeVpXMDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRZ2UxeHVJQ0JpYjNSMGIyMDZJREpsYlR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWhkWFJ2TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aGRYUnZMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHaGxhV2RvZERvZ1lYVjBienRjYmlBZ2JXRjRMV2hsYVdkb2REb2dZMkZzWXlneE1EQWxJQzBnTkdWdEtUdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDltZFd4c0lIdGNiaUFnY0dGa1pHbHVaem9nTUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpJSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhkcFpIUm9PaUIyWVhJb0xTMXZkWFJzYVc1bExXTm9ZWEIwWlhKekxYZHBaSFJvS1R0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljeTF3WVhKbGJuUWdlMXh1SUNCMGNtRnVjMmwwYVc5dU9pQXdMak56SUdWaGMyVXRhVzR0YjNWME8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDNScGRHeGxJSHRjYmlBZ2JXRnlaMmx1T2lBd0lERTJjSGc3WEc0Z0lHaGxhV2RvZERvZ05EQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTVRad2VEdGNiaUFnWW05eVpHVnlMV0p2ZEhSdmJUb2dNWEI0SUhOdmJHbGtJQ05rWTJSbVpUWTdYRzRnSUdadmJuUXRjMmw2WlRvZ01UWndlRHRjYmlBZ1ptOXVkQzEzWldsbmFIUTZJRFF3TUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5dFlXbHVJSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZiR2x6ZEN4Y2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXpkV0pxWldOMExGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMmwwWlcwZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklESTdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdjR0ZrWkdsdVp6b2dNRHRjYmlBZ2JHbHpkQzF6ZEhsc1pTMTBlWEJsT2lCdWIyNWxPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMnhwYzNRZ2UxeHVJQ0J3WVdSa2FXNW5PaUF3TGpWbGJTQXdPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzTjFZbXBsWTNRZ2UxeHVJQ0J3WVdSa2FXNW5MV3hsWm5RNklERmxiVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXBkR1Z0SUh0Y2JpQWdiV0Z5WjJsdU9pQXdPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNekJ3ZUR0Y2JpQWdabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzQnNZV05sYUc5c1pHVnlJSHRjYmlBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQjBiM0E2SURBN1hHNGdJR3hsWm5RNklEQTdYRzRnSUhkcFpIUm9PaUF4TURBbE8xeHVJQ0JvWldsbmFIUTZJRE13Y0hnN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tTjJZNFpqazdYRzRnSUdKdmNtUmxjaTFzWldaME9pQXljSGdnYzI5c2FXUWdJekExT0RrME1qdGNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNHljenRjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSWdlMXh1SUNCM2FHbDBaUzF6Y0dGalpUb2dibTkzY21Gd08xeHVJQ0IwWlhoMExXOTJaWEptYkc5M09pQmxiR3hwY0hOcGN6dGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYmlBZ1pHbHpjR3hoZVRvZ1lteHZZMnM3WEc0Z0lIQmhaR1JwYm1jNklEQWdNUzQxWlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9uWnBjMmwwWldRc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4dUlDQmpiMnh2Y2pvZ0l6VTFOVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOWhibU5vYjNJNmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTlqYjJSbElIdGNiaUFnY0dGa1pHbHVaeTF5YVdkb2REb2dNQzQxWlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlvYVdkb2JHbG5hSFF1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW9hV2RvYkdsbmFIUXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9uWnBjMmwwWldRc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW9hV2RvYkdsbmFIUXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTXdOVGc1TkRJN1hHNGdJR1p2Ym5RdGQyVnBaMmgwT2lCaWIyeGtPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZmMzUnBZMnQ1TEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnZTF4dUlDQmthWE53YkdGNU9pQm1iR1Y0TzF4dUlDQm1iR1Y0TFhkeVlYQTZJRzV2ZDNKaGNEdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJR052YkhWdGJqdGNiaUFnZWkxcGJtUmxlRG9nZG1GeUtDMHRiM1YwYkdsdVpTMTZTVzVrWlhncE8xeHVJQ0IwYjNBNklEQTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOXpkR2xqYTNrZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzUnBkR3hsTEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDNScGRHeGxMRnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mYzNScFkydDVJQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTl0WVdsdUxGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZabWw0WldRZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyMWhhVzRnZTF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZjM1JwWTJ0NUlDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOTBhWFJzWlN4Y2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgyWnBlR1ZrSUM1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5MGFYUnNaU0I3WEc0Z0lHWnNaWGd0YzJoeWFXNXJPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZjM1JwWTJ0NUlDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXRZV2x1TEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDIxaGFXNGdlMXh1SUNCbWJHVjRPaUF4TzF4dUlDQnZkbVZ5Wm14dmR6b2dZWFYwYnp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYM04wYVdOcmVTQjdYRzRnSUhCdmMybDBhVzl1T2lCemRHbGphM2s3WEc0Z0lHMWhlQzFvWldsbmFIUTZJSFpoY2lndExXOTFkR3hwYm1VdGMzUnBZMnQ1TFdobGFXZG9kQ2s3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNiaUFnYldGNExXaGxhV2RvZERvZ01UQXdKVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgyaHBaR1JsYmlCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTltYjJ4a1pXUWdlMXh1SUNCM2FXUjBhRG9nTUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk4cUtseHVJQ29nYldsNGFXNXpMbXhsYzNNZ0xTRGx0NlhsaGJmbGg3M21sYkJjYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpQXFJRU55WldGMFpXUWdRbms2SUZsaGIyaGhhWGhwWVc5Y2JpQXFJRlZ3WkdGMFpUb2dNakF5TWk0ekxqRXhYRzRnS2k5Y2JpOHFJRDA5UFQwOVBTRG1sb2Ztbkt6bm5JSG5sYVhsaDczbWxiQWdQVDA5UFQwOUlDb3ZYRzR2S2lBOVBUMDlQVDBnNVp5RzZLZVM1cUMzNWJ5UDZLNis1NzJ1NVllOTVwV3dJRDA5UFQwOVBTQXFMMXh1THlvZ1BUMDlQVDA5SU9tWXRPVzlzZWFndCtXOGoraXV2dWU5cnVXSHZlYVZzQ0E5UFQwOVBUMGdLaTljYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDlmWTJ4dmMyVWdlMXh1SUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh1ZlZ4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5MGFYUnNaU0I3WEc0Z0lHMWhjbWRwYmpvZ01DNDJOMlZ0SURBZ0lXbHRjRzl5ZEdGdWREdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5SUNGcGJYQnZjblJoYm5RN1hHNGdJR1p2Ym5RdFptRnRhV3g1T2lBblRXbGpjbTl6YjJaMElGbGhTR1ZwSUZWSkp5d2dRWEpwWVd3c0lITmhibk10YzJWeWFXWTdYRzRnSUdadmJuUXRkMlZwWjJoME9pQnViM0p0WVd3N1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxeVpXRmtaWEpmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4dWZWeHVMbTkxZEd4cGJtVXRjbVZoWkdWeVgyaHBaR1JsYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDl6YVdKc2FXNW5JSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4dWZWeHVMbTkxZEd4cGJtVXRjbVZoWkdWeVgyaHBaR1JsYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDl6YVdKc2FXNW5MbmR5WVhCd1pYSXVjRzl6ZENCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzF5WldGa1pYSXRMWEpsWVdScGJtY2dlMXh1SUNCa2FYTndiR0Y1T2lCaWJHOWphenRjYmlBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJSGRwWkhSb09pQXhNREFsTzF4dUlDQm9aV2xuYUhRNklERXdNQ1U3WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNiaUFnY0dGa1pHbHVaem9nTTJWdElEUmxiVHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1aanRjYmlBZ2MyTnliMnhzTFhScGJXVnNhVzVsTFc1aGJXVTZJQzB0VUhKdlozSmxjM05VYVcxbGJHbHVaVHRjYmlBZ2IzWmxjbVpzYjNjNklITmpjbTlzYkR0Y2JuMWNiaTV2ZFhSc2FXNWxMWEpsWVdSbGNpMHRjbVZoWkdsdVp5QXViM1YwYkdsdVpTMXlaV0ZrWlhKZlgzQnliMmR5WlhOeklIdGNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJSG90YVc1a1pYZzZJRE03WEc0Z0lHaGxhV2RvZERvZ05IQjRPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpVd04yRm1aVHRjYmlBZ2MyTmhiR1U2SURBZ01UdGNiaUFnZEhKaGJuTm1iM0p0TFc5eWFXZHBiam9nYkdWbWREdGNiaUFnWVc1cGJXRjBhVzl1T2lCdmRYUnNhVzVsTFhKbFlXUmxjaTF3Y205bmNtVnpjeUJzYVc1bFlYSTdYRzRnSUdGdWFXMWhkR2x2YmkxMGFXMWxiR2x1WlRvZ0xTMVFjbTluY21WemMxUnBiV1ZzYVc1bE8xeHVmVnh1TG05MWRHeHBibVV0Y21WaFpHVnlMUzF5WldGa2FXNW5JQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZZMnh2YzJVZ2UxeHVJQ0JpYjNndGMyaGhaRzkzT2lBd0lEQWdObkI0SURGd2VDQWpaR05rWm1VMk8xeHVJQ0JrYVhOd2JHRjVPaUJpYkc5amF6dGNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh1SUNCNkxXbHVaR1Y0T2lBek8xeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2NtbG5hSFE2SURJeWNIZzdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdkMmxrZEdnNklETTJjSGc3WEc0Z0lHaGxhV2RvZERvZ016WndlRHRjYmlBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTVRod2VEdGNiaUFnWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSTJSalpHWmxOanRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRE13Y0hnN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0E0Y0hnZ0kyUmtaRHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMXlaV0ZrWlhJdExYSmxZV1JwYm1jZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5amJHOXpaVHBvYjNabGNpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNNd05UZzVOREk3WEc0Z0lHTnZiRzl5T2lBalptWm1PMXh1ZlZ4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5TFMxeVpXRmthVzVuSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUJvTVN4Y2JpNXZkWFJzYVc1bExYSmxZV1JsY2kwdGNtVmhaR2x1WnlBdWIzVjBiR2x1WlMxeVpXRmtaWEpmWDNScGRHeGxJSHRjYmlBZ2JXRnlaMmx1T2lBd0xqWTNaVzBnTUNBaGFXMXdiM0owWVc1ME8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01TNHpaVzA3WEc0Z0lHWnZiblF0YzJsNlpUb2dNeTQxWlcwN1hHNTlYRzVBYTJWNVpuSmhiV1Z6SUc5MWRHeHBibVV0Y21WaFpHVnlMWEJ5YjJkeVpYTnpJSHRjYmlBZ2RHOGdlMXh1SUNBZ0lITmpZV3hsT2lBeElERTdYRzRnSUgxY2JuMWNia0J0WldScFlTQW9iV0Y0TFhkcFpIUm9PaUEwT0RCd2VDa2dlMXh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl0TFhKbFlXUnBibWNnZTF4dUlDQWdJSEJoWkdScGJtYzZJREFnTVM0eU5XVnRPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZZMnh2YzJVZ2UxeHVJQ0FnSUhKcFoyaDBPaUF4TW5CNElDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ2IzQmhZMmwwZVRvZ01DNDRPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZkR2wwYkdVZ2UxeHVJQ0FnSUdadmJuUXRjMmw2WlRvZ01tVnRPMXh1SUNCOVhHNTlYRzVBYldWa2FXRWdjSEpwYm5RZ2UxeHVJQ0JvZEcxc0xGeHVJQ0JpYjJSNUlIdGNiaUFnSUNCb1pXbG5hSFE2SUdsdWFYUnBZV3dnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnZTF4dUlDQWdJR1JwYzNCc1lYazZJR0pzYjJOcklDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnYURFc1hHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZkR2wwYkdVZ2UxeHVJQ0FnSUcxaGNtZHBiam9nTVRNdU5IQjBJREFnTWpod2RDQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNpQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lHWnZiblF0YzJsNlpUb2dNakJ3ZENBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjaTB0Y21WaFpHbHVaeUI3WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lDQWdhR1ZwWjJoME9pQmhkWFJ2SUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnY0dGa1pHbHVaem9nTUNBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzRnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl1YjNWMGJHbHVaUzF5WldGa1pYSWdhREVzWEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjbDlmZEdsMGJHVWdlMXh1SUNBZ0lHMWhjbWRwYmpvZ01UTXVOSEIwSURBZ01qaHdkQ0FoYVcxd2IzSjBZVzUwTzF4dUlDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjaUFoYVcxd2IzSjBZVzUwTzF4dUlDQWdJR1p2Ym5RdGMybDZaVG9nTWpCd2RDQWhhVzF3YjNKMFlXNTBPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpNXZkWFJzYVc1bExYSmxZV1JsY2w5ZlkyeHZjMlVzWEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2k1dmRYUnNhVzVsTFhKbFlXUmxjbDlmY0hKdlozSmxjM01nZTF4dUlDQWdJR1JwYzNCc1lYazZJRzV2Ym1VZ0lXbHRjRzl5ZEdGdWREdGNiaUFnZlZ4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ2NISmxJSHRjYmlBZ0lDQndZV1JrYVc1bk9pQXhaVzBnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdJQ0JpYjNKa1pYSTZJREZ3ZUNCemIyeHBaQ0FqWkdSa0lDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTkhCNElDRnBiWEJ2Y25SaGJuUTdYRzRnSUgxY2JpQWdMbTkxZEd4cGJtVXRjbVZoWkdWeUlIQnlaU3hjYmlBZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUdOdlpHVWdlMXh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVlnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWElnZEdGaWJHVXNYRzRnSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUJwYldjc1hHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpQnpkbWNnZTF4dUlDQWdJR0p5WldGckxXbHVjMmxrWlRvZ1lYWnZhV1E3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlYM05wWW14cGJtY2dlMXh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1ZlZ4dUx5b2dQVDA5UFQwOVBUMDlQU0JpZFhSMGIyNXpMblJvWlcxbElDMGc1b3lKNlpLdTVhKzg2SWlxNXFDMzVieVBJRDA5UFQwOVBUMDlQVDBnS2k5Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhJZ2UxeHVJQ0J3YjNOcGRHbHZiam9nWm1sNFpXUTdYRzRnSUhvdGFXNWtaWGc2SURrNU9UazVPMXh1SUNCdFlYSm5hVzQ2SURBN1hHNGdJSFJ5WVc1emFYUnBiMjR0WkhWeVlYUnBiMjQ2SURBdU0zTTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0Z2UxeHVJQ0JpYjNndGMyaGhaRzkzT2lBd0lEQWdObkI0SURGd2VDQWpaR05rWm1VMk8xeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklERTdYRzRnSUcxaGNtZHBiam9nTVRCd2VEdGNiaUFnZDJsa2RHZzZJRE0yY0hnN1hHNGdJR2hsYVdkb2REb2dNelp3ZUR0Y2JpQWdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJMlJqWkdabE5qdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNM0I0TzF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTzF4dUlDQmpkWEp6YjNJNklIQnZhVzUwWlhJN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0NmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JpQWdZbTl5WkdWeUxXTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxtaHBaR1VnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZVzVqYUc5eU9teHBibXNzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2ZG1semFYUmxaQ3hjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqT1RrNU8xeHVJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJekExT0RrME1qdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJsamIyNGdlMXh1SUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hHNGdJSG90YVc1a1pYZzZJREk3WEc0Z0lIUnZjRG9nTlRBbE8xeHVJQ0JzWldaME9pQTFNQ1U3WEc0Z0lIZHBaSFJvT2lBeU1IQjRPMXh1SUNCb1pXbG5hSFE2SURJd2NIZzdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbEtDMDFNQ1VzSUMwMU1DVXBPMXh1SUNCbWFXeHNPaUJqZFhKeVpXNTBZMjlzYjNJN1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJGamRHbDJaUzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYRzRnSUdOdmJHOXlPaUFqWm1abU8xeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqTURVNE9UUXlPMXh1SUNCaWIzSmtaWEl0WTI5c2IzSTZJQ013TlRnNU5ESTdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJGamRHbDJaUzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJqcG9iM1psY2lCN1hHNGdJR052Ykc5eU9pQWpabVptTzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWhZM1JwZG1VZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T214cGJtc3NYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkZqZEdsMlpTQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmRtbHphWFJsWkN4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZllXTjBhWFpsSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpQjdYRzRnSUdOdmJHOXlPaUFqWm1abU8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDl5YjNWdVpHVmtMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNVGh3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmJHbHVheXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T25acGMybDBaV1FzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanAyYVhOcGRHVmtMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcG9iM1psY2l4Y2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlpHbHpZV0pzWldRZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNiaUFnWTNWeWMyOXlPaUJ1YjNRdFlXeHNiM2RsWkR0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXprNU9UdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZiR2x1YXpwb2IzWmxjaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbXhwYm1zNmFHOTJaWElzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPblpwYzJsMFpXUTZhRzkyWlhJc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgyRnVZMmh2Y2pwMmFYTnBkR1ZrT21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcG9iM1psY2pwb2IzWmxjaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1FnTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPbWh2ZG1WeU9taHZkbVZ5TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJKMWRIUnZianBvYjNabGNpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXprNU9UdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNHNYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMlJwYzJGaWJHVmtJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObU5XWTFaalU3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzUjBZaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWW5SMElIdGNiaUFnYkdWbWREb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNSMFlpQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0c1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgySjBkQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNGdlMXh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNSMFlpQjdYRzRnSUhSdmNEb2dNVEp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZkSFJpTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh1SUNCMGIzQTZJQzAxTm5CNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlpZEhRZ2UxeHVJQ0JpYjNSMGIyMDZJREV5Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkowZEM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjYmlBZ1ltOTBkRzl0T2lBdE5UWndlRHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmNuUnNMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlzZEhJZ2UxeHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb0xUVXdKU2s3WEc0Z0lIZHBaSFJvT2lBMU5uQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5eWRHd2dlMXh1SUNCMGIzQTZJRFV3SlR0Y2JpQWdjbWxuYUhRNklERXljSGc3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzSjBiQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZhR2xrWkdWdUlIdGNiaUFnY21sbmFIUTZJQzA0Tm5CNE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlzZEhJZ2UxeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2JHVm1kRG9nTVRKd2VEdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYkhSeUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRnZTF4dUlDQnNaV1owT2lBdE9EWndlRHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmRIUmlJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkoxZEhSdmJpNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5eWRHd2dMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5b2FXUmtaVzRzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJKMGRDQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJocFpHUmxiaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYkhSeUlDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2Ymk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpOHFLbHh1SUNvZ1ptOXVkQzVzWlhOeklDMGc1YTJYNUwyVDU1dTQ1WVd6NXFDMzVieVBYRzRnS2lBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0Z0tpQkRjbVZoZEdWa0lFSjVPaUJaWVc5b1lXbDRhV0Z2WEc0Z0tpQlZjR1JoZEdVNklESXdNakl1TXk0eE5seHVJQ292WEc0dktpQTlQVDA5UFQwZzVhMlg1TDJUSUQwOVBUMDlQU0FxTDF4dUx5b2dQVDA5UFQwOUlPV3RsK21IalNBOVBUMDlQVDBnS2k5Y2JpOHFJRDA5UFQwOVBTRGxyWmZsajdjZ1BUMDlQVDA5SUNvdlhHNHViM1YwYkdsdVpTMXRaWE56WVdkbElIdGNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dNM0I0TzF4dUlDQmliM2d0YzJoaFpHOTNPaUF3SURBZ05uQjRJREZ3ZUNBalpHTmtabVUyTzF4dUlDQndiM05wZEdsdmJqb2dabWw0WldRN1hHNGdJSG90YVc1a1pYZzZJRGs1T1RrN1hHNGdJRzl3WVdOcGRIazZJREF1TVR0Y2JpQWdkRzl3T2lBdE5UQndlRHRjYmlBZ2JHVm1kRG9nTlRBbE8xeHVJQ0JvWldsbmFIUTZJRFF3Y0hnN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQTFNSEI0TzF4dUlDQnNhVzVsTFdobGFXZG9kRG9nTkRCd2VEdGNiaUFnWm05dWRDMXphWHBsT2lBeE0zQjRPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalptWm1PMXh1SUNCamIyeHZjam9nSXpZMk5qdGNiaUFnZEhKaGJuTnBkR2x2YmpvZ1lXeHNJREF1TlhNZ1pXRnpaUzFwYmkxdmRYUTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdDZ3ROVEFsS1R0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJOdmJuUmxiblFnZTF4dUlDQjNhR2wwWlMxemNHRmpaVG9nYm05M2NtRndPMXh1SUNCMFpYaDBMVzkyWlhKbWJHOTNPaUJsYkd4cGNITnBjenRjYmlBZ2JXRnlaMmx1T2lBd08xeHVJQ0J0WVhndGQybGtkR2c2SURjd01IQjRPMXh1SUNCb1pXbG5hSFE2SURRd2NIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQm1iMjUwTFhOcGVtVTZJREV6Y0hnN1hHNGdJR052Ykc5eU9pQWpOalkyTzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVXNYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJREE3WEc0Z0lIZHBaSFJvT2lBME1IQjRPMXh1SUNCb1pXbG5hSFE2SURRd2NIZzdYRzRnSUd4cGJtVXRhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnWTI5c2IzSTZJQ05tWm1ZN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlDNXZkWFJzYVc1bExXbGpiMjRnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVWdlMXh1SUNCeWFXZG9kRG9nTUR0Y2JpQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMk5zYjNObElDNXZkWFJzYVc1bExXbGpiMjRnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCc1pXWjBPaUExTUNVN1hHNGdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlmWTJ4dmMyVTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJelkyTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZhVzVtYnlBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0l6VXdOMkZtWlR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZkMkZ5Ym1sdVp5QXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptT1Rrd01UdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmYzNWalkyVnpjeUF1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpBMU9EazBNanRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZlpYSnliM0lnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVpqVmtOV1E3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzQnNZV2x1SUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF4T1RCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBMU1IQjRJREFnTVRWd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNHViM1YwYkdsdVpTMXRaWE56WVdkbFgybHVabThnZTF4dUlDQmliM0prWlhJdGJHVm1kRG9nTlhCNElITnZiR2xrSUNNMU1EZGhabVU3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTmxZMlk0Wm1ZN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM0JzWVdsdUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5M1lYSnVhVzVuSUh0Y2JpQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNBalptWTVPVEF4TzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptWW1VMk8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpNXZkWFJzYVc1bExXMWxjM05oWjJWZmMzVmpZMlZ6Y3lCN1hHNGdJR0p2Y21SbGNpMXNaV1owT2lBMWNIZ2djMjlzYVdRZ0l6QTFPRGswTWp0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlV4WmpabFlqdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyVnljbTl5SUh0Y2JpQWdZbTl5WkdWeUxXeGxablE2SURWd2VDQnpiMnhwWkNBalptWTFaRFZrTzF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpabVptTVdZd08xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdkMmxrZEdnNklEQTdYRzRnSUdScGMzQnNZWGs2SUc1dmJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z0xtOTFkR3hwYm1VdGFXTnZiaUI3WEc0Z0lHUnBjM0JzWVhrNklHNXZibVU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyeHBaMmgwSUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF4T0RCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBME1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5c2FXZG9kQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZhVzVtYnlBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjYmlBZ1kyOXNiM0k2SUNNMU1EZGhabVU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgyeHBaMmgwTG05MWRHeHBibVV0YldWemMyRm5aVjkzWVhKdWFXNW5JQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JqYjJ4dmNqb2dJMlptT1Rrd01UdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmYkdsbmFIUXViM1YwYkdsdVpTMXRaWE56WVdkbFgzTjFZMk5sYzNNZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHTnZiRzl5T2lBak1EVTRPVFF5TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXNhV2RvZEM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWlhKeWIzSWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hHNGdJR052Ykc5eU9pQWpabVkxWkRWa08xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjlzYVdkb2RDQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RZ2UxeHVJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQXlNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXliM1Z1WkM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWkdWbVlYVnNkQ0I3WEc0Z0lHMXBiaTEzYVdSMGFEb2dNVGd3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTkRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY205MWJtUXViM1YwYkdsdVpTMXRaWE56WVdkbFgyUmxabUYxYkhRZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHSnZjbVJsY2kxeVlXUnBkWE02SURFd2NIZzdYRzRnSUhSdmNEb2dNVEJ3ZUR0Y2JpQWdiR1ZtZERvZ01UQndlRHRjYmlBZ2QybGtkR2c2SURJd2NIZzdYRzRnSUdobGFXZG9kRG9nTWpCd2VEdGNiaUFnYkdsdVpTMW9aV2xuYUhRNklESXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzSnZkVzVrTG05MWRHeHBibVV0YldWemMyRm5aVjlrWldaaGRXeDBMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9JSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXlNREJ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F5TUhCNElEQWdOREJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVJSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXhPVFZ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0EwTUhCNElEQWdNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjbTkxYm1RdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNCc1lXbHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9JSHRjYmlBZ2JXbHVMWGRwWkhSb09pQXlNVFZ3ZUR0Y2JpQWdjR0ZrWkdsdVp6b2dNQ0F5TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjltZFd4c0xYZHBaSFJvSUh0Y2JpQWdiV2x1TFhkcFpIUm9PaUF5TURCd2VEdGNiaUFnY0dGa1pHbHVaem9nTUNBeE1IQjRJREFnTlRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWm5Wc2JDMTNhV1IwYUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmY0d4aGFXNGdlMXh1SUNCdGFXNHRkMmxrZEdnNklESXpNSEI0TzF4dUlDQndZV1JrYVc1bk9pQXdJREV3Y0hnZ01DQXhOWEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOW1kV3hzTFhkcFpIUm9MbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXNhV2RvZENCN1hHNGdJRzFwYmkxM2FXUjBhRG9nTWpFd2NIZzdYRzRnSUhCaFpHUnBibWM2SURBZ01UQndlQ0F3SURRd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNacGMybGliR1VnZTF4dUlDQnZjR0ZqYVhSNU9pQXhPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5b2FXUmtaVzRnZTF4dUlDQmthWE53YkdGNU9pQnViMjVsTzF4dWZWeHVMeW9nUFQwOVBUMGdVMk55YjJ4c1ltRnlJRDA5UFQwOUlDb3ZYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5SUh0Y2JpQWdkMmxrZEdnNklEZHdlRHRjYmlBZ2FHVnBaMmgwT2lBM2NIZzdYRzRnSUMxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0TzF4dWZWeHVPam90ZDJWaWEybDBMWE5qY205c2JHSmhjaTEwY21GamF5MXdhV1ZqWlNCN1hHNGdJQzEzWldKcmFYUXRZbTl5WkdWeUxYSmhaR2wxY3pvZ05YQjRPMXh1ZlZ4dU9qb3RkMlZpYTJsMExYTmpjbTlzYkdKaGNpMTBhSFZ0WWpwMlpYSjBhV05oYkNCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlOU2s3WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHVmVnh1T2pvdGQyVmlhMmwwTFhOamNtOXNiR0poY2kxMGFIVnRZanBvYjNKcGVtOXVkR0ZzSUh0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqSTFLVHRjYmlBZ0xYZGxZbXRwZEMxaWIzSmtaWEl0Y21Ga2FYVnpPaUExY0hnN1hHNTlYRzQ2T2kxM1pXSnJhWFF0YzJOeWIyeHNZbUZ5TFhSb2RXMWlPbWh2ZG1WeUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMak0xS1R0Y2JuMWNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWEk2YUc5MlpYSWdlMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCeVoySmhLREFzSURBc0lEQXNJREF1TVRVcE8xeHVmVnh1SWl3aUx5b2dQVDA5UFQwOVBUMDlQU0JwWTI5dUxuUm9aVzFsSUMwZ2MzWm5JT1didnVhZ2grZWFoT2FndCtXOGp5QTlQVDA5UFQwOVBUMDlJQ292WEhKY2JpNXZkWFJzYVc1bExXbGpiMjRnZTF4eVhHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjY2x4dUlDQjJaWEowYVdOaGJDMWhiR2xuYmpvZ2JXbGtaR3hsTzF4eVhHNGdJSGRwWkhSb09pQXhaVzA3WEhKY2JpQWdhR1ZwWjJoME9pQXhaVzA3WEhKY2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdKbDlmYzNabklIdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNjbHh1SUNBZ0lIb3RhVzVrWlhnNklESTdYSEpjYmlBZ0lDQjBiM0E2SURVd0pUdGNjbHh1SUNBZ0lHeGxablE2SURVd0pUdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeFpXMDdYSEpjYmlBZ0lDQm9aV2xuYUhRNklERmxiVHRjY2x4dUlDQWdJR1pwYkd3NklHTjFjbkpsYm5SamIyeHZjanRjY2x4dUlDQWdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsS0MwMU1DVXNJQzAxTUNVcE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmFHbGtaR1Z1SUh0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVTdYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJa0JwYlhCdmNuUWdKMk52Ykc5eWN5YzdYSEpjYmx4eVhHNHViM1YwYkdsdVpTMW9aV0ZrYVc1bklIdGNjbHh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hISmNiaUFnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1Y2NseHVJQ0FtWDE5aGJtTm9iM0lnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nYm05dVpUdGNjbHh1WEhKY2JpQWdJQ0FtT214cGJtc3NYSEpjYmlBZ0lDQW1PblpwYzJsMFpXUXNYSEpjYmlBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdZMjlzYjNJNklFQm1iM1Z5ZEdoZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlkyOXNiM0k3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtT21odmRtVnlJSHRjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMV2hsWVdScGJtZGZYMkZ1WTJodmNpQjdYSEpjYmlBZ0lDQWdJR1JwYzNCc1lYazZJR2x1YkdsdVpTMWliRzlqYXp0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmMzUmhjblFnZTF4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2lCN1hISmNiaUFnSUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNjbHh1SUNBZ0lDQWdlaTFwYm1SbGVEb2dNanRjY2x4dUlDQWdJQ0FnZEc5d09pQTFNQ1U3WEhKY2JpQWdJQ0FnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2NseHVJQ0FnSUNBZ2JHVm1kRG9nTFRGbGJUdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibjFjY2x4dUlpd2lRR2x0Y0c5eWRDQW5kbUZ5YVdGaWJHVnpKenRjY2x4dVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVRR2x0Y0c5eWRDQW5jMmhoWkc5M0p6dGNjbHh1WEhKY2JpNXZkWFJzYVc1bExXUnlZWGRsY2lCN1hISmNiaUFnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4eVhHNGdJSG90YVc1a1pYZzZJQzB4TzF4eVhHNGdJSFJ2Y0RvZ01EdGNjbHh1SUNCc1pXWjBPaUF3TzF4eVhHNGdJRzFoY21kcGJqb2dNRHRjY2x4dUlDQjNhV1IwYURvZ01UQXdKVHRjY2x4dUlDQm9aV2xuYUhRNklERXdNQ1U3WEhKY2JpQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2NseHVJQ0IyYVhOcFltbHNhWFI1T2lCb2FXUmtaVzQ3WEhKY2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdKbDlmYlc5a1lXd2dlMXh5WEc0Z0lDQWdMbk5vWVdSdmQxOXNhV2RvZEY5eVpXZDFiR0Z5S0NrN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCbWJHVjRPMXh5WEc0Z0lDQWdabXhsZUMxa2FYSmxZM1JwYjI0NklHTnZiSFZ0Ymp0Y2NseHVJQ0FnSUdac1pYZ3RkM0poY0RvZ2JtOTNjbUZ3TzF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTWpFN1hISmNiaUFnSUNCb1pXbG5hSFE2SURFd01DVTdYSEpjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFkMmhwZEdVN1hISmNiaUFnSUNCMGNtRnVjMmwwYVc5dUxXUjFjbUYwYVc5dU9pQXdMalJ6TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJobFlXUmxjaXhjY2x4dUlDQW1YMTl0WVdsdUxGeHlYRzRnSUNaZlgyWnZiM1JsY2lCN1hISmNiaUFnSUNCM2FXUjBhRG9nTVRBd0pUdGNjbHh1SUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5b1pXRmtaWElzWEhKY2JpQWdKbDlmWm05dmRHVnlJSHRjY2x4dUlDQWdJR1pzWlhndGMyaHlhVzVyT2lBd08xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZkR2wwYkdVc1hISmNiaUFnSmw5ZmJXRnBiaXhjY2x4dUlDQW1YMTltYjI5MFpYSWdlMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNQ0F4Tm5CNE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZhR1ZoWkdWeUxGeHlYRzRnSUNaZlgzUnBkR3hsSUh0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SURFN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBZ1lYVjBienRjY2x4dUlDQWdJR2hsYVdkb2REb2dOVEp3ZUR0Y2NseHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQTFNbkI0TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDNScGRHeGxJSHRjY2x4dUlDQWdJR1p2Ym5RdGMybDZaVG9nTVRad2VEdGNjbHh1SUNBZ0lHWnZiblF0ZDJWcFoyaDBPaUEwTURBN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBZ01UWndlRHRjY2x4dUlDQWdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hISmNiaUFnSUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnUUhCeWFXMWhjbmxmWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZZMnh2YzJVZ2UxeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lIUnZjRG9nTlRBbE8xeHlYRzRnSUNBZ2NtbG5hSFE2SURFeWNIZzdYSEpjYmlBZ0lDQjNhV1IwYURvZ01qQndlRHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNakJ3ZUR0Y2NseHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQXlNSEI0TzF4eVhHNGdJQ0FnWTI5c2IzSTZJRUJtYjNWeWRHaGZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQWdJR1p2Ym5RdGMybDZaVG9nTWpCd2VEdGNjbHh1SUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNjbHh1SUNBZ0lHTjFjbk52Y2pvZ2NHOXBiblJsY2p0Y2NseHVJQ0FnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNBZ0xtOTFkR3hwYm1VdGFXTnZiaUI3WEhKY2JpQWdJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2NseHVJQ0FnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lDQWdkRzl3T2lBd08xeHlYRzRnSUNBZ0lDQnNaV1owT2lBd08xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JqYjJ4dmNqb2dRSFJvYVhKa1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTl0WVdsdUlIdGNjbHh1SUNBZ0lHWnNaWGc2SURFN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJadmIzUmxjaUI3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREFnWVhWMGJ6dGNjbHh1SUNBZ0lIUmxlSFF0WVd4cFoyNDZJSEpwWjJoME8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyOTJaWEpzWVhrZ2UxeHlYRzRnSUNBZ1kyOXVkR1Z1ZERvZ0p5YzdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQXhPMXh5WEc0Z0lDQWdkRzl3T2lBd08xeHlYRzRnSUNBZ2JHVm1kRG9nTUR0Y2NseHVJQ0FnSUhkcFpIUm9PaUF4TURBbE8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSGRvYVhSbE8xeHlYRzRnSUNBZ2IzQmhZMmwwZVRvZ01DNHhPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZjblJzTEZ4eVhHNGdJQ1pmYkhSeUlIdGNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YM1JwYm5rZ2UxeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQXlPREJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5dGFXNXBJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nTkRnd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZjMjFoYkd3Z2UxeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQTFOREJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5eVpXZDFiR0Z5SUh0Y2NseHVJQ0FnSUNBZ0lDQjNhV1IwYURvZ05qZ3djSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYldWa2FYVnRJSHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nTnpJd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiR0Z5WjJVZ2UxeHlYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQTVOakJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOXlkR3dnZTF4eVhHNGdJQ0FnWW05eVpHVnlMV3hsWm5RNklERndlQ0J6YjJ4cFpDQkFjSEpwYldGeWVWOWliM0prWlhKZlkyOXNiM0k3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2lCN1hISmNiaUFnSUNBZ0lDWmZkR2x1ZVNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnY21sbmFIUTZJQzB5T1RCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYldsdWFTQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2NtbG5hSFE2SUMwME9UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmMyMWhiR3dnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSEpwWjJoME9pQXROVFV3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lISnBaMmgwT2lBdE5qa3djSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMWxaR2wxYlNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnY21sbmFIUTZJQzAzTXpCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYkdGeVoyVWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lISnBaMmgwT2lBdE9UY3djSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMngwY2lCN1hISmNiaUFnSUNCaWIzSmtaWEl0Y21sbmFIUTZJREZ3ZUNCemIyeHBaQ0JBY0hKcGJXRnllVjlpYjNKa1pYSmZZMjlzYjNJN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNpQjdYSEpjYmlBZ0lDQWdJQ1pmZEdsdWVTQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2JHVm1kRG9nTFRJNU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5dGFXNXBJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnNaV1owT2lBdE5Ea3djSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzTnRZV3hzSUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0JzWldaME9pQXROVFV3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHeGxablE2SUMwMk9UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJXVmthWFZ0SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0JzWldaME9pQXROek13Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMnhoY21kbElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCc1pXWjBPaUF0T1Rjd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzUjBZaXhjY2x4dUlDQW1YMkowZENCN1hISmNiaUFnSUNCc1pXWjBPaUF3TzF4eVhHNGdJQ0FnZDJsa2RHZzZJREV3TUNVN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNpQjdYSEpjYmlBZ0lDQWdJQ1pmZEdsdWVTQjdYSEpjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUF5TkRCd2VEdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXRhVzVwSUh0Y2NseHVJQ0FnSUNBZ0lDQm9aV2xuYUhRNklETXlNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNOdFlXeHNJSHRjY2x4dUlDQWdJQ0FnSUNCb1pXbG5hSFE2SURNMk1IQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0psWjNWc1lYSWdlMXh5WEc0Z0lDQWdJQ0FnSUdobGFXZG9kRG9nTkRBd2NIZzdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV1ZrYVhWdElIdGNjbHh1SUNBZ0lDQWdJQ0JvWldsbmFIUTZJRFEwTUhCNE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyeGhjbWRsSUh0Y2NseHVJQ0FnSUNBZ0lDQm9aV2xuYUhRNklEUTRNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzUjBZaUI3WEhKY2JpQWdJQ0JpYjNKa1pYSXRZbTkwZEc5dE9pQXhjSGdnYzI5c2FXUWdRSEJ5YVcxaGNubGZZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YM1JwYm5rZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUhSdmNEb2dMVEkxTUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl0YVc1cElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCMGIzQTZJQzB6TXpCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYzIxaGJHd2dlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lIUnZjRG9nTFRNM01IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5eVpXZDFiR0Z5SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0IwYjNBNklDMDBNVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV1ZrYVhWdElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCMGIzQTZJQzAwTlRCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYkdGeVoyVWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lIUnZjRG9nTFRRNU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWlkSFFnZTF4eVhHNGdJQ0FnZEc5d09pQnBibWwwYVdGc08xeHlYRzRnSUNBZ1ltOXlaR1Z5TFhSdmNEb2dNWEI0SUhOdmJHbGtJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2p0Y2NseHVYSEpjYmlBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeUlIdGNjbHh1SUNBZ0lDQWdKbDkwYVc1NUlIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCaWIzUjBiMjA2SUMweU5UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJXbHVhU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbTkwZEc5dE9pQXRNek13Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM050WVd4c0lIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCaWIzUjBiMjA2SUMwek56QndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmNtVm5kV3hoY2lCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWW05MGRHOXRPaUF0TkRFd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxbFpHbDFiU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdZbTkwZEc5dE9pQXRORFV3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMnhoY21kbElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCaWIzUjBiMjA2SUMwME9UQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZiM0JsYm1Wa0lIdGNjbHh1SUNBZ0lIWnBjMmxpYVd4cGRIazZJSFpwYzJsaWJHVTdYSEpjYmlBZ0lDQjZMV2x1WkdWNE9pQjJZWElvTFMxdmRYUnNhVzVsTFhwSmJtUmxlQ2s3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2lCN1hISmNiaUFnSUNBZ0lIQnZjMmwwYVc5dU9pQm1hWGhsWkR0Y2NseHVYSEpjYmlBZ0lDQWdJQ1pmY25Sc0lIdGNjbHh1SUNBZ0lDQWdJQ0J5YVdkb2REb2dNRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlzZEhJZ2UxeHlYRzRnSUNBZ0lDQWdJR3hsWm5RNklEQTdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZkSFJpSUh0Y2NseHVJQ0FnSUNBZ0lDQjBiM0E2SURBN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZlluUjBJSHRjY2x4dUlDQWdJQ0FnSUNCaWIzUjBiMjA2SURBN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZiMlptYzJWMElIdGNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YM0owYkN4Y2NseHVJQ0FnSUNBZ0psOXNkSElnZTF4eVhHNGdJQ0FnSUNBZ0lHaGxhV2RvZERvZ1kyRnNZeWd4TURBbElDMGdOR1Z0S1R0Y2NseHVJQ0FnSUNBZ0lDQjBiM0E2SURVd0pUdGNjbHh1SUNBZ0lDQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb0xUVXdKU2s3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmZEhSaUxGeHlYRzRnSUNBZ0lDQW1YMkowZENCN1hISmNiaUFnSUNBZ0lDQWdkMmxrZEdnNklHTmhiR01vTVRBd0pTQXRJRFJsYlNrN1hISmNiaUFnSUNBZ0lDQWdiR1ZtZERvZ05UQWxPMXh5WEc0Z0lDQWdJQ0FnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdDZ3ROVEFsS1R0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5dmNHVnVaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSmw5eWRHd2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlhV2RvZERvZ01tVnRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSUNBZ0lDWmZiSFJ5SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYkdWbWREb2dNbVZ0TzF4eVhHNGdJQ0FnSUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0lDQWdJQ1pmZEhSaUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RHOXdPaUF5WlcwN1hISmNiaUFnSUNBZ0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQWdJQ0FnSmw5aWRIUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmliM1IwYjIwNklESmxiVHRjY2x4dUlDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZllYVjBieUI3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlJSHRjY2x4dUlDQWdJQ0FnSmw5eWRHd3NYSEpjYmlBZ0lDQWdJQ1pmYkhSeUlIdGNjbHh1SUNBZ0lDQWdJQ0JvWldsbmFIUTZJR0YxZEc4N1hISmNiaUFnSUNBZ0lDQWdiV0Y0TFdobGFXZG9kRG9nWTJGc1l5Z3hNREFsSUMwZ05HVnRLVHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5bWRXeHNJSHRjY2x4dUlDQWdJSEJoWkdScGJtYzZJREE3WEhKY2JpQWdmVnh5WEc1OVhISmNiaUlzSWk4cUtseHlYRzRnS2lCdGFYaHBibk11YkdWemN5QXRJT1czcGVXRnQrV0h2ZWFWc0Z4eVhHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYSEpjYmlBcUlFTnlaV0YwWldRZ1FuazZJRmxoYjJoaGFYaHBZVzljY2x4dUlDb2dWWEJrWVhSbE9pQXlNREl5TGpNdU1URmNjbHh1SUNvdlhISmNia0JwYlhCdmNuUWdKeTR2WTI5c2IzSnpKenRjY2x4dVhISmNiaThxSUQwOVBUMDlQU0RtbG9mbW5Lem5uSUhubGFYbGg3M21sYkFnUFQwOVBUMDlJQ292WEhKY2JpNWxiR3hwY0hOcGN5QW9RR3hwYm1WektTQjNhR1Z1SUNoQWJHbHVaWE05TVNrZ2UxeHlYRzRnSUhkb2FYUmxMWE53WVdObE9pQnViM2R5WVhBN1hISmNiaUFnZEdWNGRDMXZkbVZ5Wm14dmR6b2daV3hzYVhCemFYTTdYSEpjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVmVnh5WEc1Y2NseHVMbVZzYkdsd2MybHpJQ2hBYkdsdVpYTXBJSGRvWlc0Z0tFQnNhVzVsY3o0OU1pa2dlMXh5WEc0Z0lDMTNaV0pyYVhRdGJHbHVaUzFqYkdGdGNEb2dRR3hwYm1Wek8xeHlYRzRnSUdScGMzQnNZWGs2SUdKdmVEdGNjbHh1SUNBdGQyVmlhMmwwTFdKdmVDMXZjbWxsYm5RNklIWmxjblJwWTJGc08xeHlYRzRnSUhSbGVIUXRiM1psY21ac2IzYzZJR1ZzYkdsd2MybHpPMXh5WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibjFjY2x4dVhISmNiaThxSUQwOVBUMDlQU0Rsbklib3A1TG1vTGZsdkkvb3JyN252YTdsaDczbWxiQWdQVDA5UFQwOUlDb3ZYSEpjYmk1eVlXUnBkWE1vUUc1MWJUb2dNbkI0S1NCN1hISmNiaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dRRzUxYlR0Y2NseHVmVnh5WEc1Y2NseHVMbkpoWkdsMWMxOXViMjVsS0NrZ2UxeHlYRzRnSUM1eVlXUnBkWE1vTUNrN1hISmNibjFjY2x4dVhISmNiaTV5WVdScGRYTmZiV2x1YVNncElIdGNjbHh1SUNBdWNtRmthWFZ6S0RKd2VDazdYSEpjYm4xY2NseHVYSEpjYmk1eVlXUnBkWE5mYzIxaGJHd29LU0I3WEhKY2JpQWdMbkpoWkdsMWN5Z3pjSGdwTzF4eVhHNTlYSEpjYmx4eVhHNHVjbUZrYVhWelgzSmxaM1ZzWVhJb0tTQjdYSEpjYmlBZ0xuSmhaR2wxY3lnMGNIZ3BPMXh5WEc1OVhISmNibHh5WEc0dWNtRmthWFZ6WDIxbFpHbDFiU2dwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLRFZ3ZUNrN1hISmNibjFjY2x4dVhISmNiaTV5WVdScGRYTmZiR0Z5WjJVb0tTQjdYSEpjYmlBZ0xuSmhaR2wxY3lneE1IQjRLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5b2RXZGxLQ2tnZTF4eVhHNGdJQzV5WVdScGRYTW9NVFp3ZUNrN1hISmNibjFjY2x4dVhISmNiaTV5WVdScGRYTmZjbTkxYm1Rb0tTQjdYSEpjYmlBZ0xuSmhaR2wxY3lnek1IQjRLVHRjY2x4dWZWeHlYRzVjY2x4dUx5b2dQVDA5UFQwOUlPbVl0T1c5c2VhZ3QrVzhqK2l1dnVlOXJ1V0h2ZWFWc0NBOVBUMDlQVDBnS2k5Y2NseHVMbk5vWVdSdmR5aEFiMlptYzJWME9pQXdJREFnTm5CNElERndlQ3dnUUdOdmJHOXlPaUJBY0hKcGJXRnllVjlpYjNKa1pYSmZZMjlzYjNJcElIdGNjbHh1SUNCaWIzZ3RjMmhoWkc5M09pQkFiMlptYzJWMElFQmpiMnh2Y2p0Y2NseHVmVnh5WEc1Y2NseHVMbk5vWVdSdmQxOXlaV2QxYkdGeUtFQmpiMnh2Y2pvZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlLU0I3WEhKY2JpQWdMbk5vWVdSdmR5Z3dJREFnTm5CNElERndlQ3dnUUdOdmJHOXlLVHRjY2x4dWZWeHlYRzVjY2x4dUxuTm9ZV1J2ZDE5c1lYSm5aU2hBWTI5c2IzSTZJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2lrZ2UxeHlYRzRnSUM1emFHRmtiM2NvTUNBd0lERXljSGdnTVhCNExDQkFZMjlzYjNJcE8xeHlYRzU5WEhKY2JseHlYRzR1YzJoaFpHOTNYMnhwWjJoMFgzSmxaM1ZzWVhJb0tTQjdYSEpjYmlBZ0xuTm9ZV1J2ZDE5eVpXZDFiR0Z5S0NrN1hISmNibjFjY2x4dVhISmNiaTV6YUdGa2IzZGZiR2xuYUhSZmJHRnlaMlVvS1NCN1hISmNiaUFnTG5Ob1lXUnZkMTlzWVhKblpTZ3BPMXh5WEc1OVhISmNibHh5WEc0dWMyaGhaRzkzWDJSaGNtdGZjbVZuZFd4aGNpZ3BJSHRjY2x4dUlDQXVjMmhoWkc5M1gzSmxaM1ZzWVhJb1FITmxZMjl1WkdGeWVWOWliM0prWlhKZlkyOXNiM0lwTzF4eVhHNTlYSEpjYmlJc0lrQnBiWEJ2Y25RZ0ozWmhjbWxoWW14bGN5YzdYSEpjYmtCcGJYQnZjblFnSjJOdmJHOXljeWM3WEhKY2JrQnBiWEJ2Y25RZ0oyVnNiR2x3YzJsekp6dGNjbHh1WEhKY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKeklIdGNjbHh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hISmNiaUFnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdkMmxrZEdnNklIWmhjaWd0TFc5MWRHeHBibVV0WTJoaGNIUmxjbk10ZDJsa2RHZ3BPMXh5WEc0Z0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4eVhHNWNjbHh1SUNBbUxYQmhjbVZ1ZENCN1hISmNiaUFnSUNCMGNtRnVjMmwwYVc5dU9pQXdMak56SUdWaGMyVXRhVzR0YjNWME8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd0lERTJjSGc3WEhKY2JpQWdJQ0JvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dOREJ3ZUR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBZ01UWndlRHRjY2x4dUlDQWdJR0p2Y21SbGNpMWliM1IwYjIwNklERndlQ0J6YjJ4cFpDQkFjSEpwYldGeWVWOWliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdJQ0JtYjI1MExYTnBlbVU2SURFMmNIZzdYSEpjYmlBZ0lDQm1iMjUwTFhkbGFXZG9kRG9nTkRBd08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyMWhhVzRnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5c2FYTjBMRnh5WEc0Z0lDWmZYM04xWW1wbFkzUXNYSEpjYmlBZ0psOWZhWFJsYlNCN1hISmNiaUFnSUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hISmNiaUFnSUNCNkxXbHVaR1Y0T2lBeU8xeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ2NHRmtaR2x1WnpvZ01EdGNjbHh1SUNBZ0lHeHBjM1F0YzNSNWJHVXRkSGx3WlRvZ2JtOXVaVHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlzYVhOMElIdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklEQXVOV1Z0SURBN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOXpkV0pxWldOMElIdGNjbHh1SUNBZ0lIQmhaR1JwYm1jdGJHVm1kRG9nTVdWdE8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZhWFJsYlNCN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dNekJ3ZUR0Y2NseHVJQ0FnSUdadmJuUXRjMmw2WlRvZ01UTndlRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTl3YkdGalpXaHZiR1JsY2lCN1hISmNiaUFnSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hISmNiaUFnSUNCNkxXbHVaR1Y0T2lBeE8xeHlYRzRnSUNBZ2RHOXdPaUF3TzF4eVhHNGdJQ0FnYkdWbWREb2dNRHRjY2x4dUlDQWdJSGRwWkhSb09pQXhNREFsTzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF6TUhCNE8xeHlYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FHaHZkbVZ5WDJKblgyTnZiRzl5TzF4eVhHNGdJQ0FnWW05eVpHVnlMV3hsWm5RNklESndlQ0J6YjJ4cFpDQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUhSeVlXNXphWFJwYjI0dFpIVnlZWFJwYjI0NklEQXVNbk03WEhKY2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyRnVZMmh2Y2lCN1hISmNiaUFnSUNBdVpXeHNhWEJ6YVhNb01TazdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQmliRzlqYXp0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBZ01TNDFaVzA3WEhKY2JseHlYRzRnSUNBZ0pqcHNhVzVyTEZ4eVhHNGdJQ0FnSmpwMmFYTnBkR1ZrTEZ4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpUdGNjbHh1SUNBZ0lDQWdZMjlzYjNJNklFQnpaV052Ym1SaGNubGZkR1Y0ZEY5amIyeHZjanRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmWTI5a1pTQjdYSEpjYmlBZ0lDQndZV1JrYVc1bkxYSnBaMmgwT2lBd0xqVmxiVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmYUdsbmFHeHBaMmgwSUh0Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxamFHRndkR1Z5YzE5ZllXNWphRzl5SUh0Y2NseHVJQ0FnSUNBZ0pqcHNhVzVyTEZ4eVhHNGdJQ0FnSUNBbU9uWnBjMmwwWldRc1hISmNiaUFnSUNBZ0lDWTZhRzkyWlhJZ2UxeHlYRzRnSUNBZ0lDQWdJR052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQm1iMjUwTFhkbGFXZG9kRG9nWW05c1pEdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDl6ZEdsamEza3NYSEpjYmlBZ0psOW1hWGhsWkNCN1hISmNiaUFnSUNCa2FYTndiR0Y1T2lCbWJHVjRPMXh5WEc0Z0lDQWdabXhsZUMxM2NtRndPaUJ1YjNkeVlYQTdYSEpjYmlBZ0lDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ1kyOXNkVzF1TzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nZG1GeUtDMHRiM1YwYkdsdVpTMTZTVzVrWlhncE8xeHlYRzRnSUNBZ2RHOXdPaUF3TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dVhISmNiaUFnSUNBdWIzVjBiR2x1WlMxamFHRndkR1Z5Y3lCN1hISmNiaUFnSUNBZ0lDWmZYM1JwZEd4bExGeHlYRzRnSUNBZ0lDQW1YMTl0WVdsdUlIdGNjbHh1SUNBZ0lDQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgxOTBhWFJzWlNCN1hISmNiaUFnSUNBZ0lDQWdabXhsZUMxemFISnBibXM2SURBN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZlgyMWhhVzRnZTF4eVhHNGdJQ0FnSUNBZ0lHWnNaWGc2SURFN1hISmNiaUFnSUNBZ0lDQWdiM1psY21ac2IzYzZJR0YxZEc4N1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZjM1JwWTJ0NUlIdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQnpkR2xqYTNrN1hISmNiaUFnSUNCdFlYZ3RhR1ZwWjJoME9pQjJZWElvTFMxdmRYUnNhVzVsTFhOMGFXTnJlUzFvWldsbmFIUXBPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDltYVhobFpDQjdYSEpjYmlBZ0lDQndiM05wZEdsdmJqb2dabWw0WldRN1hISmNiaUFnSUNCdFlYZ3RhR1ZwWjJoME9pQXhNREFsTzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5b2FXUmtaVzRnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nYm05dVpUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZabTlzWkdWa0lIdGNjbHh1SUNBZ0lIZHBaSFJvT2lBd08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JuMWNjbHh1SWl3aVFHbHRjRzl5ZENBblkyOXNiM0p6Snp0Y2NseHVRR2x0Y0c5eWRDQW5iV2w0YVc1ekp6dGNjbHh1WEhKY2JpNXZkWFJzYVc1bExYSmxZV1JsY2lCN1hISmNiaUFnSmw5ZlkyeHZjMlVnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nYm05dVpUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYM1JwZEd4bElIdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01DNDJOMlZ0SURBZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNpQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdabTl1ZEMxbVlXMXBiSGs2SUNkTmFXTnliM052Wm5RZ1dXRklaV2tnVlVrbkxDQkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFpqdGNjbHh1SUNBZ0lHWnZiblF0ZDJWcFoyaDBPaUJ1YjNKdFlXdzdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOW9hV1JrWlc0Z2UxeHlYRzRnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMXlaV0ZrWlhKZmMybGliR2x1WnlCN1hISmNiaUFnSUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2NseHVYSEpjYmlBZ0lDQWdJQ1l1ZDNKaGNIQmxjaUI3WEhKY2JpQWdJQ0FnSUNBZ0ppNXdiM04wSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtTFMxeVpXRmthVzVuSUh0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJPMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01qdGNjbHh1SUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUd4bFpuUTZJREE3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTVRBd0pUdGNjbHh1SUNBZ0lHMWhjbWRwYmpvZ01EdGNjbHh1SUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF6WlcwZ05HVnRPMXh5WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSGRvYVhSbE8xeHlYRzRnSUNBZ2MyTnliMnhzTFhScGJXVnNhVzVsTFc1aGJXVTZJQzB0VUhKdlozSmxjM05VYVcxbGJHbHVaVHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJ6WTNKdmJHdzdYSEpjYmx4eVhHNGdJQ0FnTG05MWRHeHBibVV0Y21WaFpHVnlJSHRjY2x4dUlDQWdJQ0FnSmw5ZmNISnZaM0psYzNNZ2UxeHlYRzRnSUNBZ0lDQWdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNjbHh1SUNBZ0lDQWdJQ0IwYjNBNklEQTdYSEpjYmlBZ0lDQWdJQ0FnYkdWbWREb2dNRHRjY2x4dUlDQWdJQ0FnSUNCNkxXbHVaR1Y0T2lBek8xeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dOSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIZHBaSFJvT2lBeE1EQWxPMXh5WEc0Z0lDQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCd2NtbHRZWEo1WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUhOallXeGxPaUF3SURFN1hISmNiaUFnSUNBZ0lDQWdkSEpoYm5ObWIzSnRMVzl5YVdkcGJqb2diR1ZtZER0Y2NseHVJQ0FnSUNBZ0lDQmhibWx0WVhScGIyNDZJRzkxZEd4cGJtVXRjbVZoWkdWeUxYQnliMmR5WlhOeklHeHBibVZoY2p0Y2NseHVJQ0FnSUNBZ0lDQmhibWx0WVhScGIyNHRkR2x0Wld4cGJtVTZJQzB0VUhKdlozSmxjM05VYVcxbGJHbHVaVHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDlmWTJ4dmMyVWdlMXh5WEc0Z0lDQWdJQ0FnSUM1emFHRmtiM2RmYkdsbmFIUmZjbVZuZFd4aGNpZ3BPMXh5WEc0Z0lDQWdJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJPMXh5WEc0Z0lDQWdJQ0FnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjY2x4dUlDQWdJQ0FnSUNCNkxXbHVaR1Y0T2lBek8xeHlYRzRnSUNBZ0lDQWdJSFJ2Y0RvZ05UQWxPMXh5WEc0Z0lDQWdJQ0FnSUhKcFoyaDBPaUF5TW5CNE8xeHlYRzRnSUNBZ0lDQWdJRzFoY21kcGJqb2dNRHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nTXpad2VEdGNjbHh1SUNBZ0lDQWdJQ0JvWldsbmFIUTZJRE0yY0hnN1hISmNiaUFnSUNBZ0lDQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ01UaHdlRHRjY2x4dUlDQWdJQ0FnSUNCaWIzSmtaWEk2SURGd2VDQnpiMnhwWkNCQWNISnBiV0Z5ZVY5aWIzSmtaWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnYkdsdVpTMW9aV2xuYUhRNklETXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeHlYRzRnSUNBZ0lDQWdJSFJ5WVc1elptOXliVG9nZEhKaGJuTnNZWFJsV1NndE5UQWxLVHRjY2x4dUlDQWdJQ0FnSUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEhKY2JpQWdJQ0FnSUNBZ1ltOTRMWE5vWVdSdmR6b2dNQ0F3SURod2VDQkFjMlZqYjI1a1lYSjVYMkp2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FHWnZkWEowYUY5MFpYaDBYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNBZ0lDQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1Y2NseHVJQ0FnSUNBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCemRXTmpaWE56WDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCM2FHbDBaVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUdneExGeHlYRzRnSUNBZ0lDQW1YMTkwYVhSc1pTQjdYSEpjYmlBZ0lDQWdJQ0FnYldGeVoybHVPaUF3TGpZM1pXMGdNQ0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF4TGpObGJUdGNjbHh1SUNBZ0lDQWdJQ0JtYjI1MExYTnBlbVU2SURNdU5XVnRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1OVhISmNibHh5WEc1QWEyVjVabkpoYldWeklHOTFkR3hwYm1VdGNtVmhaR1Z5TFhCeWIyZHlaWE56SUh0Y2NseHVJQ0IwYnlCN1hISmNiaUFnSUNCelkyRnNaVG9nTVNBeE8xeHlYRzRnSUgxY2NseHVmVnh5WEc1Y2NseHVRRzFsWkdsaElDaHRZWGd0ZDJsa2RHZzZJRFE0TUhCNEtTQjdYSEpjYmlBZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUh0Y2NseHVJQ0FnSUNZdExYSmxZV1JwYm1jZ2UxeHlYRzRnSUNBZ0lDQndZV1JrYVc1bk9pQXdJREV1TWpWbGJUdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FtWDE5amJHOXpaU0I3WEhKY2JpQWdJQ0FnSUhKcFoyaDBPaUF4TW5CNElDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJRzl3WVdOcGRIazZJREF1T0R0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQW1YMTkwYVhSc1pTQjdYSEpjYmlBZ0lDQWdJR1p2Ym5RdGMybDZaVG9nTW1WdE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVmVnh5WEc1Y2NseHVRRzFsWkdsaElIQnlhVzUwSUh0Y2NseHVJQ0JvZEcxc0xGeHlYRzRnSUdKdlpIa2dlMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQnBibWwwYVdGc0lDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ2UxeHlYRzRnSUNBZ1pHbHpjR3hoZVRvZ1lteHZZMnNnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JseHlYRzRnSUNBZ2FERXNYSEpjYmlBZ0lDQW1YMTkwYVhSc1pTQjdYSEpjYmlBZ0lDQWdJRzFoY21kcGJqb2dNVE11TkhCMElEQWdNamh3ZENBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnWm05dWRDMXphWHBsT2lBeU1IQjBJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYSmxZV1JsY2lCN1hISmNiaUFnSUNBZ0lDWXRMWEpsWVdScGJtY2dlMXh5WEc0Z0lDQWdJQ0FnSUhCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dZWFYwYnlBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJREFnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdUlDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lHZ3hMRnh5WEc0Z0lDQWdJQ0FtWDE5MGFYUnNaU0I3WEhKY2JpQWdJQ0FnSUNBZ2JXRnlaMmx1T2lBeE15NDBjSFFnTUNBeU9IQjBJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeUlDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJQ0FnWm05dWRDMXphWHBsT2lBeU1IQjBJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmWDJOc2IzTmxMRnh5WEc0Z0lDQWdJQ0FtWDE5d2NtOW5jbVZ6Y3lCN1hISmNiaUFnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnY0hKbElIdGNjbHh1SUNBZ0lDQWdjR0ZrWkdsdVp6b2dNV1Z0SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lFQmliM0prWlhKZlkyOXNiM0lnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTkhCNElDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnY0hKbExGeHlYRzRnSUNBZ1kyOWtaU0I3WEhKY2JpQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaU0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lIUmhZbXhsTEZ4eVhHNGdJQ0FnYVcxbkxGeHlYRzRnSUNBZ2MzWm5JSHRjY2x4dUlDQWdJQ0FnWW5KbFlXc3RhVzV6YVdSbE9pQmhkbTlwWkR0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQW1YM05wWW14cGJtY2dlMXh5WEc0Z0lDQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bElDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJaThxSUQwOVBUMDlQVDA5UFQwZ1luVjBkRzl1Y3k1MGFHVnRaU0F0SU9hTWllbVNydVd2dk9pSXF1YWd0K1c4anlBOVBUMDlQVDA5UFQwOUlDb3ZYSEpjYmtCcGJYQnZjblFnSjJOdmJHOXljeWM3WEhKY2JrQnBiWEJ2Y25RZ0ozTm9ZV1J2ZHljN1hISmNibHh5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5SUh0Y2NseHVJQ0J3YjNOcGRHbHZiam9nWm1sNFpXUTdYSEpjYmlBZ2VpMXBibVJsZURvZ09UazVPVGs3WEhKY2JpQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lIUnlZVzV6YVhScGIyNHRaSFZ5WVhScGIyNDZJREF1TTNNN1hISmNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dVhISmNiaUFnSmw5ZlluVjBkRzl1SUh0Y2NseHVJQ0FnSUM1emFHRmtiM2RmYkdsbmFIUmZjbVZuZFd4aGNpZ3BPMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh5WEc0Z0lDQWdlaTFwYm1SbGVEb2dNVHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNVEJ3ZUR0Y2NseHVJQ0FnSUhkcFpIUm9PaUF6Tm5CNE8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBek5uQjRPMXh5WEc0Z0lDQWdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdRSEJ5YVcxaGNubGZZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnWW05eVpHVnlMWEpoWkdsMWN6b2dNM0I0TzF4eVhHNGdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0FnSUdOMWNuTnZjam9nY0c5cGJuUmxjanRjY2x4dUlDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjY2x4dUlDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lHSnZjbVJsY2kxamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmk1b2FXUmxJSHRjY2x4dUlDQWdJQ0FnWkdsemNHeGhlVG9nYm05dVpUdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMkZ1WTJodmNpQjdYSEpjYmlBZ0lDQW1PbXhwYm1zc1hISmNiaUFnSUNBbU9uWnBjMmwwWldRc1hISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCbWIzVnlkR2hmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCdWIyNWxPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlwWTI5dUlIdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNjbHh1SUNBZ0lIb3RhVzVrWlhnNklESTdYSEpjYmlBZ0lDQjBiM0E2SURVd0pUdGNjbHh1SUNBZ0lHeGxablE2SURVd0pUdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeU1IQjRPMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQXlNSEI0TzF4eVhHNGdJQ0FnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdVb0xUVXdKU3dnTFRVd0pTazdYSEpjYmlBZ0lDQm1hV3hzT2lCamRYSnlaVzUwWTI5c2IzSTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWhZM1JwZG1VZ2UxeHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhJZ2UxeHlYRzRnSUNBZ0lDQW1YMTlpZFhSMGIyNGdlMXh5WEc0Z0lDQWdJQ0FnSUdOdmJHOXlPaUJBZDJocGRHVTdYSEpjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnWW05eVpHVnlMV052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVYSEpjYmlBZ0lDQWdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjaUI3WEhKY2JpQWdJQ0FnSUNZNmJHbHVheXhjY2x4dUlDQWdJQ0FnSmpwMmFYTnBkR1ZrTEZ4eVhHNGdJQ0FnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzSnZkVzVrWldRZ2UxeHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURFNGNIZzdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMlJwYzJGaWJHVmtJSHRjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzEwYjI5c1ltRnlMRnh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNpQjdYSEpjYmlBZ0lDQWdJQ1pmWDJGdVkyaHZjanBzYVc1ckxGeHlYRzRnSUNBZ0lDQW1YMTloYm1Ob2IzSTZkbWx6YVhSbFpDeGNjbHh1SUNBZ0lDQWdKbDlmWVc1amFHOXlPbWh2ZG1WeUxGeHlYRzRnSUNBZ0lDQW1YMTlpZFhSMGIyNGdlMXh5WEc0Z0lDQWdJQ0FnSUdOMWNuTnZjam9nYm05MExXRnNiRzkzWldRN1hISmNiaUFnSUNBZ0lDQWdZMjlzYjNJNklFQm1iM1Z5ZEdoZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0JpYjNKa1pYSXRZMjlzYjNJNklFQm1iM1Z5ZEdoZmRHVjRkRjlqYjJ4dmNqdGNjbHh1WEhKY2JpQWdJQ0FnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRR1p2ZFhKMGFGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUNBZ1ltOXlaR1Z5TFdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgxOWlkWFIwYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJrYVhOaFlteGxaRjlpWjE5amIyeHZjanRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5MGRHSXNYSEpjYmlBZ0psOWlkSFFnZTF4eVhHNGdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdWWUtDMDFNQ1VwTzF4eVhHNWNjbHh1SUNBZ0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBZ0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZEhSaUlIdGNjbHh1SUNBZ0lIUnZjRG9nTVRKd2VEdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh5WEc0Z0lDQWdJQ0IwYjNBNklDMDFObkI0TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5aWRIUWdlMXh5WEc0Z0lDQWdZbTkwZEc5dE9pQXhNbkI0TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYmlCN1hISmNiaUFnSUNBZ0lHSnZkSFJ2YlRvZ0xUVTJjSGc3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKMGJDeGNjbHh1SUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb0xUVXdKU2s3WEhKY2JpQWdJQ0IzYVdSMGFEb2dOVFp3ZUR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmNuUnNJSHRjY2x4dUlDQWdJSFJ2Y0RvZ05UQWxPMXh5WEc0Z0lDQWdjbWxuYUhRNklERXljSGc3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1SUh0Y2NseHVJQ0FnSUNBZ2NtbG5hSFE2SUMwNE5uQjRPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlzZEhJZ2UxeHlYRzRnSUNBZ2RHOXdPaUExTUNVN1hISmNiaUFnSUNCc1pXWjBPaUF4TW5CNE8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQWdJR3hsWm5RNklDMDRObkI0TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5MGRHSXNYSEpjYmlBZ0psOXlkR3dzWEhKY2JpQWdKbDlpZEhRc1hISmNiaUFnSmw5c2RISWdlMXh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNjbHh1SUNBZ0lDQWdKaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZhR2xrWkdWdUlIdGNjbHh1SUNBZ0lDQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJa0JwYlhCdmNuUWdKeTR2WTI5c2IzSnpKenRjY2x4dVFHbHRjRzl5ZENBbkxpOW1iMjUwSnp0Y2NseHVRR2x0Y0c5eWRDQW5MaTl0YVhocGJuTW5PMXh5WEc1QWFXMXdiM0owSUNjdUwybGpiMjV6Snp0Y2NseHVYSEpjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlVnZTF4eVhHNGdJQzV5WVdScGRYTmZjMjFoYkd3b0tUdGNjbHh1SUNBdWMyaGhaRzkzWDJ4cFoyaDBYM0psWjNWc1lYSW9LVHRjY2x4dUlDQndiM05wZEdsdmJqb2dabWw0WldRN1hISmNiaUFnZWkxcGJtUmxlRG9nT1RrNU9UdGNjbHh1SUNCdmNHRmphWFI1T2lBd0xqRTdYSEpjYmlBZ2RHOXdPaUF0TlRCd2VEdGNjbHh1SUNCc1pXWjBPaUExTUNVN1hISmNiaUFnYUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUcxaGNtZHBiam9nTUR0Y2NseHVJQ0J3WVdSa2FXNW5PaUF3SURVd2NIZzdYSEpjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnWm05dWRDMXphWHBsT2lCQVptOXVkRjl6YVhwbFgzTnRZV3hzTzF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdkSEpoYm5OcGRHbHZiam9nWVd4c0lEQXVOWE1nWldGelpTMXBiaTF2ZFhRN1hISmNiaUFnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdWWUtDMDFNQ1VwTzF4eVhHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ1pmWDJOdmJuUmxiblFnZTF4eVhHNGdJQ0FnTG1Wc2JHbHdjMmx6S0RFcE8xeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ2JXRjRMWGRwWkhSb09pQTNNREJ3ZUR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTkRCd2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhNM0I0TzF4eVhHNGdJQ0FnWTI5c2IzSTZJRUIwYUdseVpGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMk5zYjNObExGeHlYRzRnSUNaZlgybGpiMjRnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTWp0Y2NseHVJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJSGRwWkhSb09pQTBNSEI0TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmFXTnZiaUI3WEhKY2JpQWdJQ0JzWldaME9pQXdPMXh5WEc0Z0lDQWdZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ0lDQjZMV2x1WkdWNE9pQXlPMXh5WEc0Z0lDQWdJQ0IwYjNBNklEVXdKVHRjY2x4dUlDQWdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnSUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpTZ3ROVEFsTENBdE5UQWxLVHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJOc2IzTmxJSHRjY2x4dUlDQWdJSEpwWjJoME9pQXdPMXh5WEc0Z0lDQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHlYRzRnSUNBZ1kyOXNiM0k2SUVCbWIzVnlkR2hmZEdWNGRGOWpiMnh2Y2p0Y2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ0lDQjZMV2x1WkdWNE9pQXlPMXh5WEc0Z0lDQWdJQ0IwYjNBNklEVXdKVHRjY2x4dUlDQWdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnSUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpTZ3ROVEFsTENBdE5UQWxLVHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCMGFHbHlaRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5cGJtWnZJSHRjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFjSEpwYldGeWVWOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmQyRnlibWx1WnlCN1hISmNiaUFnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhkaGNtNXBibWRmWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM04xWTJObGMzTWdlMXh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQnpkV05qWlhOelgyTnZiRzl5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5bGNuSnZjaUI3WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNjbHh1SUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRR1JoYm1kbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmNHeGhhVzRnZTF4eVhHNGdJQ0FnYldsdUxYZHBaSFJvT2lBeE9UQndlRHRjY2x4dUlDQWdJSEJoWkdScGJtYzZJREFnTlRCd2VDQXdJREUxY0hnN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVWdlMXh5WEc0Z0lDQWdJQ0FtWDJsdVptOGdlMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjaTFzWldaME9pQTFjSGdnYzI5c2FXUWdRSEJ5YVcxaGNubGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRR2x1Wm05ZmRHbHdYMkpuWDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM2RoY201cGJtY2dlMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjaTFzWldaME9pQTFjSGdnYzI5c2FXUWdRSGRoY201cGJtZGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSGRoY201cGJtZGZkR2x3WDJKblgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNOMVkyTmxjM01nZTF4eVhHNGdJQ0FnSUNBZ0lHSnZjbVJsY2kxc1pXWjBPaUExY0hnZ2MyOXNhV1FnUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhOMVkyTmxjM05mZEdsd1gySm5YMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyVnljbTl5SUh0Y2NseHVJQ0FnSUNBZ0lDQmliM0prWlhJdGJHVm1kRG9nTlhCNElITnZiR2xrSUVCa1lXNW5aWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUdSaGJtZGxjbDkwYVhCZlltZGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNjbHh1SUNBZ0lDQWdkMmxrZEdnNklEQTdYSEpjYmlBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNibHh5WEc0Z0lDQWdJQ0F1YjNWMGJHbHVaUzFwWTI5dUlIdGNjbHh1SUNBZ0lDQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMnhwWjJoMElIdGNjbHh1SUNBZ0lHMXBiaTEzYVdSMGFEb2dNVGd3Y0hnN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lEUXdjSGc3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExXMWxjM05oWjJVZ2UxeHlYRzRnSUNBZ0lDQW1YMmx1Wm04Z2UxeHlYRzRnSUNBZ0lDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWTI5c2IzSTZJRUJ3Y21sdFlYSjVYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDkzWVhKdWFXNW5JSHRjY2x4dUlDQWdJQ0FnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHTnZiRzl5T2lCQWQyRnlibWx1WjE5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmMzVmpZMlZ6Y3lCN1hISmNiaUFnSUNBZ0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMlZ5Y205eUlIdGNjbHh1SUNBZ0lDQWdJQ0F1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdOdmJHOXlPaUJBWkdGdVoyVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4eVhHNGdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKdmRXNWtJSHRjY2x4dUlDQWdJQzV5WVdScGRYTW9NakJ3ZUNrN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVWdlMXh5WEc0Z0lDQWdJQ0FtWDJSbFptRjFiSFFnZTF4eVhHNGdJQ0FnSUNBZ0lHMXBiaTEzYVdSMGFEb2dNVGd3Y0hnN1hISmNiaUFnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0EwTUhCNE8xeHlYRzVjY2x4dUlDQWdJQ0FnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDNXlZV1JwZFhNb01UQndlQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQjBiM0E2SURFd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnSUNCc1pXWjBPaUF4TUhCNE8xeHlYRzRnSUNBZ0lDQWdJQ0FnZDJsa2RHZzZJREl3Y0hnN1hISmNiaUFnSUNBZ0lDQWdJQ0JvWldsbmFIUTZJREl3Y0hnN1hISmNiaUFnSUNBZ0lDQWdJQ0JzYVc1bExXaGxhV2RvZERvZ01qQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJaMWJHd3RkMmxrZEdnZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYldsdUxYZHBaSFJvT2lBeU1EQndlRHRjY2x4dUlDQWdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklEQWdNakJ3ZUNBd0lEUXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzQnNZV2x1SUh0Y2NseHVJQ0FnSUNBZ0lDQnRhVzR0ZDJsa2RHZzZJREU1TlhCNE8xeHlYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJREFnTkRCd2VDQXdJREl3Y0hnN1hISmNibHh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJaMWJHd3RkMmxrZEdnZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYldsdUxYZHBaSFJvT2lBeU1UVndlRHRjY2x4dUlDQWdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklEQWdNakJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWm5Wc2JDMTNhV1IwYUNCN1hISmNiaUFnSUNCdGFXNHRkMmxrZEdnNklESXdNSEI0TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUNBeE1IQjRJREFnTlRCd2VEdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0YldWemMyRm5aU0I3WEhKY2JpQWdJQ0FnSUNaZmNHeGhhVzRnZTF4eVhHNGdJQ0FnSUNBZ0lHMXBiaTEzYVdSMGFEb2dNak13Y0hnN1hISmNiaUFnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0F4TUhCNElEQWdNVFZ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c2FXZG9kQ0I3WEhKY2JpQWdJQ0FnSUNBZ2JXbHVMWGRwWkhSb09pQXlNVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQXdJREV3Y0hnZ01DQTBNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzWnBjMmxpYkdVZ2UxeHlYRzRnSUNBZ2IzQmhZMmwwZVRvZ01UdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZhR2xrWkdWdUlIdGNjbHh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVU3WEhKY2JpQWdmVnh5WEc1OVhISmNiaUlzSWk4cUlEMDlQVDA5SUZOamNtOXNiR0poY2lBOVBUMDlQU0FxTDF4eVhHNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlJSHRjY2x4dUlDQjNhV1IwYURvZ04zQjRPMXh5WEc0Z0lHaGxhV2RvZERvZ04zQjRPMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzVjY2x4dUlDQW1MWFJ5WVdOckxYQnBaV05sSUh0Y2NseHVJQ0FnSUMxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmkxMGFIVnRZaUI3WEhKY2JpQWdJQ0FtT25abGNuUnBZMkZzSUh0Y2NseHVJQ0FnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2NtZGlZU2d3TENBd0xDQXdMQ0F3TGpJMUtUdGNjbHh1SUNBZ0lDQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmpwb2IzSnBlbTl1ZEdGc0lIdGNjbHh1SUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqSTFLVHRjY2x4dUlDQWdJQ0FnTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQTFjSGc3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0ek5TazdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eE5TazdYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSmRmUT09ICovXG4iXSwiZmlsZSI6Im91dGxpbmUubWluLmNzcyJ9 */ +.outline-icon,.outline-icon__svg{width:1em;height:1em;overflow:hidden}.outline-icon__svg,.outline-toolbar__icon{fill:currentcolor;-webkit-transform:translate(-50%,-50%)}:root{--outline-zIndex:2000;--outline-sticky-height:100%;--outline-chapters-width:100%}.outline-icon{position:relative;z-index:1;display:inline-block;vertical-align:middle}.outline-heading__anchor,.outline-icon_hidden{display:none}.outline-icon__svg{position:absolute;z-index:2;top:50%;left:50%;transform:translate(-50%,-50%)}.outline-heading{position:relative;z-index:1;overflow:hidden}.outline-heading__anchor:hover,.outline-heading__anchor:link,.outline-heading__anchor:visited{color:#999;text-decoration:none}.outline-heading__anchor:hover{color:#507afe}.outline-heading:hover .outline-heading__anchor{display:inline-block}.outline-heading_start:hover{overflow:visible}.outline-heading_start .outline-heading__anchor{position:absolute;z-index:2;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:-1em}.outline-drawer{position:relative;z-index:-1;top:0;left:0;margin:0;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:hidden;overflow:hidden}.outline-drawer__modal{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;z-index:21;height:100%;background-color:#fff;-webkit-transition-duration:.4s;transition-duration:.4s;overflow:hidden}.outline-drawer__footer,.outline-drawer__header,.outline-drawer__main{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.outline-drawer__footer,.outline-drawer__header{-ms-flex-negative:0;flex-shrink:0}.outline-drawer__footer,.outline-drawer__main,.outline-drawer__title{padding:0 16px}.outline-drawer__header,.outline-drawer__title{position:relative;z-index:1;margin:0 auto;height:52px;line-height:52px;overflow:hidden}.outline-drawer__title{font-size:16px;font-weight:400;margin:0 16px;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #dcdfe6}.outline-drawer__close{position:absolute;z-index:2;top:50%;right:12px;width:20px;height:20px;line-height:20px;color:#999;font-size:20px;text-align:center;cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%);overflow:hidden}.outline-drawer__close .outline-icon{position:absolute;z-index:2;top:0;left:0}.outline-drawer__close:hover{color:#666}.outline-drawer__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-drawer__footer{margin:0 auto;text-align:right;overflow:hidden}.outline-drawer__overlay{content:'';position:relative;z-index:1;top:0;left:0;width:100%;height:100%;background-color:#fff;opacity:.1;overflow:hidden}.outline-drawer_ltr.outline-drawer_tiny,.outline-drawer_rtl.outline-drawer_tiny{width:280px}.outline-drawer_ltr.outline-drawer_mini,.outline-drawer_rtl.outline-drawer_mini{width:480px}.outline-drawer_ltr.outline-drawer_small,.outline-drawer_rtl.outline-drawer_small{width:540px}.outline-drawer_ltr.outline-drawer_regular,.outline-drawer_rtl.outline-drawer_regular{width:680px}.outline-drawer_ltr.outline-drawer_medium,.outline-drawer_rtl.outline-drawer_medium{width:720px}.outline-drawer_ltr.outline-drawer_large,.outline-drawer_rtl.outline-drawer_large{width:960px}.outline-drawer_rtl{border-left:1px solid #dcdfe6}.outline-drawer_rtl.outline-drawer_tiny.outline-drawer_closed{right:-290px}.outline-drawer_rtl.outline-drawer_mini.outline-drawer_closed{right:-490px}.outline-drawer_rtl.outline-drawer_small.outline-drawer_closed{right:-550px}.outline-drawer_rtl.outline-drawer_regular.outline-drawer_closed{right:-690px}.outline-drawer_rtl.outline-drawer_medium.outline-drawer_closed{right:-730px}.outline-drawer_rtl.outline-drawer_large.outline-drawer_closed{right:-970px}.outline-drawer_ltr{border-right:1px solid #dcdfe6}.outline-drawer_ltr.outline-drawer_tiny.outline-drawer_closed{left:-290px}.outline-drawer_ltr.outline-drawer_mini.outline-drawer_closed{left:-490px}.outline-drawer_ltr.outline-drawer_small.outline-drawer_closed{left:-550px}.outline-drawer_ltr.outline-drawer_regular.outline-drawer_closed{left:-690px}.outline-drawer_ltr.outline-drawer_medium.outline-drawer_closed{left:-730px}.outline-drawer_ltr.outline-drawer_large.outline-drawer_closed{left:-970px}.outline-drawer_btt,.outline-drawer_ttb{left:0;width:100%}.outline-drawer_btt.outline-drawer_tiny,.outline-drawer_ttb.outline-drawer_tiny{height:240px}.outline-drawer_btt.outline-drawer_mini,.outline-drawer_ttb.outline-drawer_mini{height:320px}.outline-drawer_btt.outline-drawer_small,.outline-drawer_ttb.outline-drawer_small{height:360px}.outline-drawer_btt.outline-drawer_regular,.outline-drawer_ttb.outline-drawer_regular{height:400px}.outline-drawer_btt.outline-drawer_medium,.outline-drawer_ttb.outline-drawer_medium{height:440px}.outline-drawer_btt.outline-drawer_large,.outline-drawer_ttb.outline-drawer_large{height:480px}.outline-drawer_ttb{border-bottom:1px solid #dcdfe6}.outline-drawer_ttb.outline-drawer_tiny.outline-drawer_closed{top:-250px}.outline-drawer_ttb.outline-drawer_mini.outline-drawer_closed{top:-330px}.outline-drawer_ttb.outline-drawer_small.outline-drawer_closed{top:-370px}.outline-drawer_ttb.outline-drawer_regular.outline-drawer_closed{top:-410px}.outline-drawer_ttb.outline-drawer_medium.outline-drawer_closed{top:-450px}.outline-drawer_ttb.outline-drawer_large.outline-drawer_closed{top:-490px}.outline-drawer_btt{top:initial;border-top:1px solid #dcdfe6}.outline-drawer_btt.outline-drawer_tiny.outline-drawer_closed{bottom:-250px}.outline-drawer_btt.outline-drawer_mini.outline-drawer_closed{bottom:-330px}.outline-drawer_btt.outline-drawer_small.outline-drawer_closed{bottom:-370px}.outline-drawer_btt.outline-drawer_regular.outline-drawer_closed{bottom:-410px}.outline-drawer_btt.outline-drawer_medium.outline-drawer_closed{bottom:-450px}.outline-drawer_btt.outline-drawer_large.outline-drawer_closed{bottom:-490px}.outline-drawer_opened{visibility:visible;z-index:var(--outline-zIndex)}.outline-drawer_opened.outline-drawer{position:fixed}.outline-drawer_opened.outline-drawer_rtl{right:0}.outline-drawer_opened.outline-drawer_ltr{left:0}.outline-drawer_opened.outline-drawer_ttb{top:0}.outline-drawer_opened.outline-drawer_btt{bottom:0}.outline-drawer_offset.outline-drawer_ltr,.outline-drawer_offset.outline-drawer_rtl{height:calc(100% - 4em);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.outline-drawer_offset.outline-drawer_btt,.outline-drawer_offset.outline-drawer_ttb{width:calc(100% - 4em);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-drawer_offset.outline-drawer_opened.outline-drawer_rtl{right:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ltr{left:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_ttb{top:2em}.outline-drawer_offset.outline-drawer_opened.outline-drawer_btt{bottom:2em}.outline-drawer_auto.outline-drawer_ltr,.outline-drawer_auto.outline-drawer_rtl{height:auto;max-height:calc(100% - 4em)}.outline-drawer_full{padding:0}.outline-chapters{position:relative;z-index:1;margin:0;width:var(--outline-chapters-width);overflow:auto}.outline-chapters-parent{-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.outline-chapters__title{margin:0 16px;height:40px;line-height:40px;padding:0 16px;border-bottom:1px solid #dcdfe6;font-size:16px;font-weight:400;overflow:hidden}.outline-chapters__main{position:relative;z-index:1;margin:0;overflow:hidden}.outline-chapters__item,.outline-chapters__list,.outline-chapters__subject{position:relative;z-index:2;margin:0;padding:0;list-style-type:none;overflow:hidden}.outline-chapters__list{padding:.5em 0}.outline-chapters__subject{padding-left:1em}.outline-chapters__item{margin:0;line-height:30px;font-size:13px;overflow:hidden}.outline-chapters__placeholder{position:absolute;z-index:1;top:0;left:0;width:100%;height:30px;background-color:#f7f8f9;border-left:2px solid #058942;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.outline-chapters__anchor{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;padding:0 1.5em}.outline-chapters__anchor:hover,.outline-chapters__anchor:link,.outline-chapters__anchor:visited{text-decoration:none;color:#555}.outline-chapters__anchor:hover{color:#058942}.outline-chapters__code{padding-right:.5em}.outline-chapters_highlight.outline-chapters__anchor:hover,.outline-chapters_highlight.outline-chapters__anchor:link,.outline-chapters_highlight.outline-chapters__anchor:visited{color:#058942;font-weight:700}.outline-chapters_fixed,.outline-chapters_sticky{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;z-index:var(--outline-zIndex);top:0;overflow:hidden}.outline-chapters_hidden,.outline-reader__close{display:none}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__main,.outline-chapters_sticky .outline-chapters__title{-webkit-box-sizing:border-box;box-sizing:border-box}.outline-chapters_fixed .outline-chapters__title,.outline-chapters_sticky .outline-chapters__title{-ms-flex-negative:0;flex-shrink:0}.outline-chapters_fixed .outline-chapters__main,.outline-chapters_sticky .outline-chapters__main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.outline-chapters_sticky{position:sticky;max-height:var(--outline-sticky-height)}.outline-chapters_fixed{position:fixed;max-height:100%}.outline-chapters_folded{width:0;overflow:hidden}.outline-reader__title{margin:.67em 0!important;text-align:center!important;font-family:'Microsoft YaHei UI',Arial,sans-serif;font-weight:400;overflow:hidden}.outline-reader_hidden,.outline-reader_hidden.outline-reader_sibling{display:none!important}.outline-reader_hidden.outline-reader_sibling.wrapper.post{display:none}.outline-reader--reading{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:3em 4em;background-color:#fff;scroll-timeline-name:--ProgressTimeline;overflow:scroll}.outline-reader--reading .outline-reader__progress{position:fixed;top:0;left:0;z-index:3;height:4px;width:100%;background-color:#507afe;scale:0 1;-webkit-transform-origin:left;transform-origin:left;-webkit-animation:outline-reader-progress linear;animation:outline-reader-progress linear;animation-timeline:--ProgressTimeline}.outline-reader--reading .outline-reader__close{display:block;position:fixed;z-index:3;top:50%;right:22px;margin:0;width:36px;height:36px;border-radius:18px;border:1px solid #dcdfe6;line-height:30px;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;-webkit-box-shadow:0 0 8px #ddd;box-shadow:0 0 8px #ddd;color:#999;background-color:#fff;overflow:hidden}.outline-reader--reading .outline-reader__close:hover{background-color:#058942;color:#fff}.outline-reader--reading .outline-reader h1,.outline-reader--reading .outline-reader__title{margin:.67em 0!important;line-height:1.3em;font-size:3.5em}@-webkit-keyframes outline-reader-progress{to{scale:1 1}}@keyframes outline-reader-progress{to{scale:1 1}}@media (max-width:480px){.outline-reader--reading{padding:0 1.25em}.outline-reader__close{right:12px!important;opacity:.8}.outline-reader__title{font-size:2em}}@media print{.outline-reader h1,.outline-reader.outline-reader h1,.outline-reader.outline-reader__title,.outline-reader__title{margin:13.4pt 0 28pt!important;text-align:center!important;font-size:20pt!important}body,html{height:initial!important}.outline-message,.outline-toolbar{display:none!important}.outline-reader{display:block!important;overflow:hidden}.outline-reader.outline-reader__close,.outline-reader.outline-reader__progress,.outline-reader_sibling{display:none!important}.outline-reader.outline-reader--reading{position:relative!important;height:auto!important;padding:0!important;overflow:hidden!important}.outline-reader pre{padding:1em!important;border:1px solid #ddd!important;border-radius:4px!important}.outline-reader code,.outline-reader pre{background-color:#fff!important}.outline-reader img,.outline-reader svg,.outline-reader table{-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}}.outline-toolbar{position:fixed;z-index:99999;margin:0;-webkit-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.outline-toolbar__button{-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:relative;z-index:1;margin:10px;width:36px;height:36px;border:1px solid #dcdfe6;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;cursor:pointer;text-align:center;color:#999;overflow:hidden}.outline-toolbar__button:hover{color:#058942;border-color:#058942}.outline-toolbar__button.hide{display:none}.outline-toolbar__anchor:hover,.outline-toolbar__anchor:link,.outline-toolbar__anchor:visited{color:#999;text-decoration:none}.outline-toolbar__anchor:hover{color:#058942}.outline-toolbar__icon{position:absolute;z-index:2;top:50%;left:50%;width:20px;height:20px;transform:translate(-50%,-50%);overflow:hidden}.outline-toolbar_active.outline-toolbar__button{color:#fff;background-color:#058942;border-color:#058942}.outline-toolbar_active .outline-toolbar__anchor:hover,.outline-toolbar_active .outline-toolbar__anchor:link,.outline-toolbar_active .outline-toolbar__anchor:visited,.outline-toolbar_active.outline-toolbar__button:hover{color:#fff}.outline-toolbar_rounded.outline-toolbar__button{border-radius:18px}.outline-toolbar_disabled .outline-toolbar__anchor:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link,.outline-toolbar_disabled .outline-toolbar__anchor:visited,.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__anchor:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link,.outline-toolbar_disabled.outline-toolbar__anchor:visited,.outline-toolbar_disabled.outline-toolbar__button{cursor:not-allowed;color:#999;border-color:#999}.outline-toolbar_disabled .outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled .outline-toolbar__anchor:link:hover,.outline-toolbar_disabled .outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled .outline-toolbar__button:hover,.outline-toolbar_disabled.outline-toolbar__anchor:hover:hover,.outline-toolbar_disabled.outline-toolbar__anchor:link:hover,.outline-toolbar_disabled.outline-toolbar__anchor:visited:hover,.outline-toolbar_disabled.outline-toolbar__button:hover{color:#999;border-color:#999}.outline-message,.outline-message__content{margin:0;font-size:13px;color:#666;height:40px;line-height:40px;overflow:hidden}.outline-toolbar_disabled .outline-toolbar__button,.outline-toolbar_disabled.outline-toolbar__button{background-color:#f5f5f5}.outline-toolbar_btt,.outline-toolbar_ttb{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-toolbar_btt .outline-toolbar__button,.outline-toolbar_ttb .outline-toolbar__button{display:inline-block}.outline-toolbar_ttb{top:12px}.outline-toolbar_ttb.outline-toolbar_hidden{top:-56px}.outline-toolbar_btt{bottom:12px}.outline-toolbar_btt.outline-toolbar_hidden{bottom:-56px}.outline-toolbar_ltr,.outline-toolbar_rtl{-webkit-transform:translateY(-50%);transform:translateY(-50%);width:56px}.outline-toolbar_rtl{top:50%;right:12px}.outline-toolbar_rtl.outline-toolbar_hidden{right:-86px}.outline-toolbar_ltr{top:50%;left:12px}.outline-toolbar_ltr.outline-toolbar_hidden{left:-86px}.outline-toolbar_btt .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ltr .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_rtl .outline-toolbar__button.outline-toolbar_hidden,.outline-toolbar_ttb .outline-toolbar__button.outline-toolbar_hidden{display:none}.outline-message{border-radius:3px;-webkit-box-shadow:0 0 6px 1px #dcdfe6;box-shadow:0 0 6px 1px #dcdfe6;position:fixed;z-index:9999;opacity:.1;top:-50px;left:50%;padding:0 50px;background-color:#fff;-webkit-transition:all .5s ease-in-out;transition:all .5s ease-in-out;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.outline-message__content{white-space:nowrap;text-overflow:ellipsis;max-width:700px}.outline-message__close,.outline-message__icon{position:absolute;z-index:2;top:0;width:40px;height:40px;line-height:40px;text-align:center;overflow:hidden}.outline-message__icon{left:0;color:#fff}.outline-message__icon .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close{right:0;cursor:pointer;color:#999}.outline-message__close .outline-icon{position:absolute;z-index:2;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.outline-message__close:hover{color:#666}.outline-message_info .outline-message__icon{background-color:#507afe}.outline-message_warning .outline-message__icon{background-color:#ff9901}.outline-message_success .outline-message__icon{background-color:#058942}.outline-message_error .outline-message__icon{background-color:#ff5d5d}.outline-message_plain{min-width:190px;padding:0 50px 0 15px}.outline-message_light,.outline-message_round.outline-message_default{min-width:180px;padding:0 40px}.outline-message_plain.outline-message_info{border-left:5px solid #507afe;background-color:#ecf8ff}.outline-message_plain.outline-message_warning{border-left:5px solid #ff9901;background-color:#fffbe6}.outline-message_plain.outline-message_success{border-left:5px solid #058942;background-color:#e1f6eb}.outline-message_plain.outline-message_error{border-left:5px solid #ff5d5d;background-color:#fff1f0}.outline-message_plain .outline-message__icon{width:0;display:none}.outline-message_plain .outline-message__icon .outline-icon{display:none}.outline-message_light.outline-message_info .outline-message__icon{color:#507afe}.outline-message_light.outline-message_warning .outline-message__icon{color:#ff9901}.outline-message_light.outline-message_success .outline-message__icon{color:#058942}.outline-message_light.outline-message_error .outline-message__icon{color:#ff5d5d}.outline-message_light .outline-message__icon{background-color:#fff}.outline-message_round{border-radius:20px}.outline-message_round.outline-message_default .outline-message__icon{border-radius:10px;top:10px;left:10px;width:20px;height:20px;line-height:20px}.outline-message_round.outline-message_default.outline-message_full-width{min-width:200px;padding:0 20px 0 40px}.outline-message_round.outline-message_plain{min-width:195px;padding:0 40px 0 20px}.outline-message_round.outline-message_plain.outline-message_full-width{min-width:215px;padding:0 20px}.outline-message_full-width{min-width:200px;padding:0 10px 0 50px}.outline-message_full-width.outline-message_plain{min-width:230px;padding:0 10px 0 15px}.outline-message_full-width.outline-message_light{min-width:210px;padding:0 10px 0 40px}.outline-message_visible{opacity:1}.outline-message_hidden{display:none}::-webkit-scrollbar{width:7px;height:7px;-webkit-border-radius:5px}::-webkit-scrollbar-track-piece{-webkit-border-radius:5px}::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:horizontal{background-color:rgba(0,0,0,.25);-webkit-border-radius:5px}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.35)}::-webkit-scrollbar:hover{background-color:rgba(0,0,0,.15)} +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJvdXRsaW5lLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyI6cm9vdCB7XG4gIC0tb3V0bGluZS16SW5kZXg6IDIwMDA7XG4gIC0tb3V0bGluZS1zdGlja3ktaGVpZ2h0OiAxMDAlO1xuICAtLW91dGxpbmUtY2hhcHRlcnMtd2lkdGg6IDEwMCU7XG59XG4vKiA9PT09PT09PT09IGNvbG9ycy50aGVtZSAtIOWfuuehgOminOiJsuWPmOmHj+mbhuWQiCA9PT09PT09PT09ICovXG4vKipcbiAqIGVsbGlwc2lzLmxlc3MgLSDmlofmnKznnIHnlaUgbWl4aW54IOWHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMTFcbiAqL1xuLyogPT09PT09IOaWh+acrOecgeeVpeWHveaVsCA9PT09PT0gKi9cbi8qKlxuICogc2hhZG93Lmxlc3MgLSDpmLTlvbHmoLflvI/orr7nva4gbWl4aW54IOWHveaVsFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ3JlYXRlZCBCeTogWWFvaGFpeGlhb1xuICogVXBkYXRlOiAyMDIyLjMuMjBcbiAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi8qID09PT09PT09PT0gaWNvbi50aGVtZSAtIHN2ZyDlm77moIfnmoTmoLflvI8gPT09PT09PT09PSAqL1xuLm91dGxpbmUtaWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWljb25fX3N2ZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIGZpbGw6IGN1cnJlbnRjb2xvcjtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWljb25faGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yOmxpbmssXG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLWhlYWRpbmdfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ub3V0bGluZS1oZWFkaW5nX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLWhlYWRpbmc6aG92ZXIgLm91dGxpbmUtaGVhZGluZ19fYW5jaG9yIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydDpob3ZlciB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLm91dGxpbmUtaGVhZGluZ19zdGFydCAub3V0bGluZS1oZWFkaW5nX19hbmNob3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGxlZnQ6IC0xZW07XG59XG4ub3V0bGluZS1kcmF3ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IC0xO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fbW9kYWwge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDIxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40cztcbiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX21haW4sXG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIHdpZHRoOiAxMDAlO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9faGVhZGVyLFxuLm91dGxpbmUtZHJhd2VyX19mb290ZXIge1xuICAtbXMtZmxleC1uZWdhdGl2ZTogMDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX190aXRsZSxcbi5vdXRsaW5lLWRyYXdlcl9fbWFpbixcbi5vdXRsaW5lLWRyYXdlcl9fZm9vdGVyIHtcbiAgcGFkZGluZzogMCAxNnB4O1xufVxuLm91dGxpbmUtZHJhd2VyX19oZWFkZXIsXG4ub3V0bGluZS1kcmF3ZXJfX3RpdGxlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiA1MnB4O1xuICBsaW5lLWhlaWdodDogNTJweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fdGl0bGUge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbjogMCAxNnB4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RmZTY7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDEycHg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzk5OTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX19jbG9zZSAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Nsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM2NjY7XG59XG4ub3V0bGluZS1kcmF3ZXJfX21haW4ge1xuICAtd2Via2l0LWJveC1mbGV4OiAxO1xuICAgICAgLW1zLWZsZXg6IDE7XG4gICAgICAgICAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1kcmF3ZXJfX2Zvb3RlciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9fb3ZlcmxheSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC4xO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55LFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55IHtcbiAgd2lkdGg6IDI4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgd2lkdGg6IDQ4MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9zbWFsbCxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfc21hbGwge1xuICB3aWR0aDogNTQwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIsXG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIge1xuICB3aWR0aDogNjgwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgd2lkdGg6IDcyMHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9sYXJnZSxcbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uge1xuICB3aWR0aDogOTYwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIHJpZ2h0OiAtMjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfcnRsLm91dGxpbmUtZHJhd2VyX21pbmkub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC00OTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICByaWdodDogLTY5MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3J0bC5vdXRsaW5lLWRyYXdlcl9tZWRpdW0ub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC03MzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9ydGwub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgcmlnaHQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGNkZmU2O1xufVxuLm91dGxpbmUtZHJhd2VyX2x0ci5vdXRsaW5lLWRyYXdlcl90aW55Lm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC0yOTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX3NtYWxsLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC01NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9sdHIub3V0bGluZS1kcmF3ZXJfcmVndWxhci5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNjkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBsZWZ0OiAtNzMwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfbHRyLm91dGxpbmUtZHJhd2VyX2xhcmdlLm91dGxpbmUtZHJhd2VyX2Nsb3NlZCB7XG4gIGxlZnQ6IC05NzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIsXG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3RpbnksXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3Rpbnkge1xuICBoZWlnaHQ6IDI0MHB4O1xufVxuLm91dGxpbmUtZHJhd2VyX3R0Yi5vdXRsaW5lLWRyYXdlcl9taW5pLFxuLm91dGxpbmUtZHJhd2VyX2J0dC5vdXRsaW5lLWRyYXdlcl9taW5pIHtcbiAgaGVpZ2h0OiAzMjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3NtYWxsIHtcbiAgaGVpZ2h0OiAzNjBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfcmVndWxhcixcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfcmVndWxhciB7XG4gIGhlaWdodDogNDAwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bSxcbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWVkaXVtIHtcbiAgaGVpZ2h0OiA0NDBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2UsXG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX2xhcmdlIHtcbiAgaGVpZ2h0OiA0ODBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfdHRiLm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICB0b3A6IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl90dGIub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgdG9wOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgdG9wOiBpbml0aWFsO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGZlNjtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfdGlueS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0yNTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbWluaS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC0zMzBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfc21hbGwub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtMzcwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX3JlZ3VsYXIub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDEwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfYnR0Lm91dGxpbmUtZHJhd2VyX21lZGl1bS5vdXRsaW5lLWRyYXdlcl9jbG9zZWQge1xuICBib3R0b206IC00NTBweDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9idHQub3V0bGluZS1kcmF3ZXJfbGFyZ2Uub3V0bGluZS1kcmF3ZXJfY2xvc2VkIHtcbiAgYm90dG9tOiAtNDkwcHg7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgei1pbmRleDogdmFyKC0tb3V0bGluZS16SW5kZXgpO1xufVxuLm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfcnRsIHtcbiAgcmlnaHQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGxlZnQ6IDA7XG59XG4ub3V0bGluZS1kcmF3ZXJfb3BlbmVkLm91dGxpbmUtZHJhd2VyX3R0YiB7XG4gIHRvcDogMDtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfYnR0IHtcbiAgYm90dG9tOiAwO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9ydGwsXG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbiAgdG9wOiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9vZmZzZXQub3V0bGluZS1kcmF3ZXJfdHRiLFxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICB3aWR0aDogY2FsYygxMDAlIC0gNGVtKTtcbiAgbGVmdDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9ydGwge1xuICByaWdodDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfbHRyIHtcbiAgbGVmdDogMmVtO1xufVxuLm91dGxpbmUtZHJhd2VyX29mZnNldC5vdXRsaW5lLWRyYXdlcl9vcGVuZWQub3V0bGluZS1kcmF3ZXJfdHRiIHtcbiAgdG9wOiAyZW07XG59XG4ub3V0bGluZS1kcmF3ZXJfb2Zmc2V0Lm91dGxpbmUtZHJhd2VyX29wZW5lZC5vdXRsaW5lLWRyYXdlcl9idHQge1xuICBib3R0b206IDJlbTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX3J0bCxcbi5vdXRsaW5lLWRyYXdlcl9hdXRvLm91dGxpbmUtZHJhd2VyX2x0ciB7XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNGVtKTtcbn1cbi5vdXRsaW5lLWRyYXdlcl9mdWxsIHtcbiAgcGFkZGluZzogMDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiB2YXIoLS1vdXRsaW5lLWNoYXB0ZXJzLXdpZHRoKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ub3V0bGluZS1jaGFwdGVycy1wYXJlbnQge1xuICAtd2Via2l0LXRyYW5zaXRpb246IDAuM3MgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zaXRpb246IDAuM3MgZWFzZS1pbi1vdXQ7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fdGl0bGUge1xuICBtYXJnaW46IDAgMTZweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RjZGZlNjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX21haW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX19saXN0LFxuLm91dGxpbmUtY2hhcHRlcnNfX3N1YmplY3QsXG4ub3V0bGluZS1jaGFwdGVyc19faXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fbGlzdCB7XG4gIHBhZGRpbmc6IDAuNWVtIDA7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fc3ViamVjdCB7XG4gIHBhZGRpbmctbGVmdDogMWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2l0ZW0ge1xuICBtYXJnaW46IDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fcGxhY2Vob2xkZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOTtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDU4OTQyO1xuICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwIDEuNWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICM1NTU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1jaGFwdGVyc19fY29kZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNWVtO1xufVxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtY2hhcHRlcnNfaGlnaGxpZ2h0Lm91dGxpbmUtY2hhcHRlcnNfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjMDU4OTQyO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtbXMtZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB6LWluZGV4OiB2YXIoLS1vdXRsaW5lLXpJbmRleCk7XG4gIHRvcDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fdGl0bGUsXG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX21haW4sXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLm91dGxpbmUtY2hhcHRlcnNfc3RpY2t5IC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSxcbi5vdXRsaW5lLWNoYXB0ZXJzX2ZpeGVkIC5vdXRsaW5lLWNoYXB0ZXJzX190aXRsZSB7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG59XG4ub3V0bGluZS1jaGFwdGVyc19zdGlja3kgLm91dGxpbmUtY2hhcHRlcnNfX21haW4sXG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCAub3V0bGluZS1jaGFwdGVyc19fbWFpbiB7XG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XG4gICAgICAtbXMtZmxleDogMTtcbiAgICAgICAgICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX3N0aWNreSB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIG1heC1oZWlnaHQ6IHZhcigtLW91dGxpbmUtc3RpY2t5LWhlaWdodCk7XG59XG4ub3V0bGluZS1jaGFwdGVyc19maXhlZCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5vdXRsaW5lLWNoYXB0ZXJzX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1jaGFwdGVyc19mb2xkZWQge1xuICB3aWR0aDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi8qKlxuICogbWl4aW5zLmxlc3MgLSDlt6Xlhbflh73mlbBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENyZWF0ZWQgQnk6IFlhb2hhaXhpYW9cbiAqIFVwZGF0ZTogMjAyMi4zLjExXG4gKi9cbi8qID09PT09PSDmlofmnKznnIHnlaXlh73mlbAgPT09PT09ICovXG4vKiA9PT09PT0g5ZyG6KeS5qC35byP6K6+572u5Ye95pWwID09PT09PSAqL1xuLyogPT09PT09IOmYtOW9seagt+W8j+iuvue9ruWHveaVsCA9PT09PT0gKi9cbi5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm91dGxpbmUtcmVhZGVyX190aXRsZSB7XG4gIG1hcmdpbjogMC42N2VtIDAgIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1yZWFkZXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLm91dGxpbmUtcmVhZGVyX2hpZGRlbi5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nLndyYXBwZXIucG9zdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDNlbSA0ZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHNjcm9sbC10aW1lbGluZS1uYW1lOiAtLVByb2dyZXNzVGltZWxpbmU7XG4gIG92ZXJmbG93OiBzY3JvbGw7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyX19wcm9ncmVzcyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAzO1xuICBoZWlnaHQ6IDRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MDdhZmU7XG4gIHNjYWxlOiAwIDE7XG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcbiAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICAtd2Via2l0LWFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xuICAgICAgICAgIGFuaW1hdGlvbjogb3V0bGluZS1yZWFkZXItcHJvZ3Jlc3MgbGluZWFyO1xuICBhbmltYXRpb24tdGltZWxpbmU6IC0tUHJvZ3Jlc3NUaW1lbGluZTtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX2Nsb3NlIHtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDM7XG4gIHRvcDogNTAlO1xuICByaWdodDogMjJweDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgOHB4ICNkZGQ7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDhweCAjZGRkO1xuICBjb2xvcjogIzk5OTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXJlYWRlci0tcmVhZGluZyAub3V0bGluZS1yZWFkZXJfX2Nsb3NlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA1ODk0MjtcbiAgY29sb3I6ICNmZmY7XG59XG4ub3V0bGluZS1yZWFkZXItLXJlYWRpbmcgLm91dGxpbmUtcmVhZGVyIGgxLFxuLm91dGxpbmUtcmVhZGVyLS1yZWFkaW5nIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICBtYXJnaW46IDAuNjdlbSAwICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjNlbTtcbiAgZm9udC1zaXplOiAzLjVlbTtcbn1cbkAtd2Via2l0LWtleWZyYW1lcyBvdXRsaW5lLXJlYWRlci1wcm9ncmVzcyB7XG4gIHRvIHtcbiAgICBzY2FsZTogMSAxO1xuICB9XG59XG5Aa2V5ZnJhbWVzIG91dGxpbmUtcmVhZGVyLXByb2dyZXNzIHtcbiAgdG8ge1xuICAgIHNjYWxlOiAxIDE7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICAgIHBhZGRpbmc6IDAgMS4yNWVtO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fY2xvc2Uge1xuICAgIHJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICB9XG59XG5AbWVkaWEgcHJpbnQge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1tZXNzYWdlLFxuICAub3V0bGluZS10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIGgxLFxuICAub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgICBtYXJnaW46IDEzLjRwdCAwIDI4cHQgIWltcG9ydGFudDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXItLXJlYWRpbmcge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyLm91dGxpbmUtcmVhZGVyIGgxLFxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXJfX3RpdGxlIHtcbiAgICBtYXJnaW46IDEzLjRwdCAwIDI4cHQgIWltcG9ydGFudDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDIwcHQgIWltcG9ydGFudDtcbiAgfVxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXJfX2Nsb3NlLFxuICAub3V0bGluZS1yZWFkZXIub3V0bGluZS1yZWFkZXJfX3Byb2dyZXNzIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHByZSB7XG4gICAgcGFkZGluZzogMWVtICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlciBwcmUsXG4gIC5vdXRsaW5lLXJlYWRlciBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm91dGxpbmUtcmVhZGVyIHRhYmxlLFxuICAub3V0bGluZS1yZWFkZXIgaW1nLFxuICAub3V0bGluZS1yZWFkZXIgc3ZnIHtcbiAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgIC1tb3otY29sdW1uLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG4gIC5vdXRsaW5lLXJlYWRlcl9zaWJsaW5nIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi8qID09PT09PT09PT0gYnV0dG9ucy50aGVtZSAtIOaMiemSruWvvOiIquagt+W8jyA9PT09PT09PT09ICovXG4ub3V0bGluZS10b29sYmFyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk5OTtcbiAgbWFyZ2luOiAwO1xuICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNnB4IDFweCAjZGNkZmU2O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1hcmdpbjogMTBweDtcbiAgd2lkdGg6IDM2cHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGZlNjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjOTk5O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG4gIGJvcmRlci1jb2xvcjogIzA1ODk0Mjtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5oaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpsaW5rLFxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX19hbmNob3I6aG92ZXIge1xuICBjb2xvcjogIzk5OTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyIHtcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBmaWxsOiBjdXJyZW50Y29sb3I7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZS5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xuICBib3JkZXItY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZS5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtdG9vbGJhcl9hY3RpdmUgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2FjdGl2ZSAub3V0bGluZS10b29sYmFyX19hbmNob3I6dmlzaXRlZCxcbi5vdXRsaW5lLXRvb2xiYXJfYWN0aXZlIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtdG9vbGJhcl9yb3VuZGVkLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluayxcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbmssXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgY29sb3I6ICM5OTk7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19hbmNob3I6bGluazpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmxpbms6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOnZpc2l0ZWQ6aG92ZXIsXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjp2aXNpdGVkOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2FuY2hvcjpob3Zlcjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYW5jaG9yOmhvdmVyOmhvdmVyLFxuLm91dGxpbmUtdG9vbGJhcl9kaXNhYmxlZC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbjpob3Zlcixcbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICM5OTk7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfZGlzYWJsZWQub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2Rpc2FibGVkIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG4ub3V0bGluZS10b29sYmFyX3R0Yixcbi5vdXRsaW5lLXRvb2xiYXJfYnR0IHtcbiAgbGVmdDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiAub3V0bGluZS10b29sYmFyX19idXR0b24sXG4ub3V0bGluZS10b29sYmFyX2J0dCAub3V0bGluZS10b29sYmFyX19idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ub3V0bGluZS10b29sYmFyX3R0YiB7XG4gIHRvcDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICB0b3A6IC01NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9idHQge1xuICBib3R0b206IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX2J0dC5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgYm90dG9tOiAtNTZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfcnRsLFxuLm91dGxpbmUtdG9vbGJhcl9sdHIge1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiA1NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9ydGwge1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDEycHg7XG59XG4ub3V0bGluZS10b29sYmFyX3J0bC5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgcmlnaHQ6IC04NnB4O1xufVxuLm91dGxpbmUtdG9vbGJhcl9sdHIge1xuICB0b3A6IDUwJTtcbiAgbGVmdDogMTJweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfbHRyLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4ge1xuICBsZWZ0OiAtODZweDtcbn1cbi5vdXRsaW5lLXRvb2xiYXJfdHRiIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuLFxuLm91dGxpbmUtdG9vbGJhcl9ydGwgLm91dGxpbmUtdG9vbGJhcl9fYnV0dG9uLm91dGxpbmUtdG9vbGJhcl9oaWRkZW4sXG4ub3V0bGluZS10b29sYmFyX2J0dCAub3V0bGluZS10b29sYmFyX19idXR0b24ub3V0bGluZS10b29sYmFyX2hpZGRlbixcbi5vdXRsaW5lLXRvb2xiYXJfbHRyIC5vdXRsaW5lLXRvb2xiYXJfX2J1dHRvbi5vdXRsaW5lLXRvb2xiYXJfaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qKlxuICogZm9udC5sZXNzIC0g5a2X5L2T55u45YWz5qC35byPXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDcmVhdGVkIEJ5OiBZYW9oYWl4aWFvXG4gKiBVcGRhdGU6IDIwMjIuMy4xNlxuICovXG4vKiA9PT09PT0g5a2X5L2TID09PT09PSAqL1xuLyogPT09PT09IOWtl+mHjSA9PT09PT0gKi9cbi8qID09PT09PSDlrZflj7cgPT09PT09ICovXG4ub3V0bGluZS1tZXNzYWdlIHtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggMXB4ICNkY2RmZTY7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAxcHggI2RjZGZlNjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk5O1xuICBvcGFjaXR5OiAwLjE7XG4gIHRvcDogLTUwcHg7XG4gIGxlZnQ6IDUwJTtcbiAgaGVpZ2h0OiA0MHB4O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAgNTBweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICM2NjY7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2UtaW4tb3V0O1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ub3V0bGluZS1tZXNzYWdlX19jb250ZW50IHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG1hcmdpbjogMDtcbiAgbWF4LXdpZHRoOiA3MDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogIzY2NjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlLFxuLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGxlZnQ6IDA7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9faWNvbiAub3V0bGluZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLm91dGxpbmUtbWVzc2FnZV9fY2xvc2Uge1xuICByaWdodDogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzk5OTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfX2Nsb3NlIC5vdXRsaW5lLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3V0bGluZS1tZXNzYWdlX19jbG9zZTpob3ZlciB7XG4gIGNvbG9yOiAjNjY2O1xufVxuLm91dGxpbmUtbWVzc2FnZV9pbmZvIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTA3YWZlO1xufVxuLm91dGxpbmUtbWVzc2FnZV93YXJuaW5nIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5OTAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU4OTQyO1xufVxuLm91dGxpbmUtbWVzc2FnZV9lcnJvciAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNWQ1ZDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDE5MHB4O1xuICBwYWRkaW5nOiAwIDUwcHggMCAxNXB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfaW5mbyB7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzUwN2FmZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjhmZjtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcge1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZjk5MDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZiZTY7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluLm91dGxpbmUtbWVzc2FnZV9zdWNjZXNzIHtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMDU4OTQyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFmNmViO1xufVxuLm91dGxpbmUtbWVzc2FnZV9wbGFpbi5vdXRsaW5lLW1lc3NhZ2VfZXJyb3Ige1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZjVkNWQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxZjA7XG59XG4ub3V0bGluZS1tZXNzYWdlX3BsYWluIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICB3aWR0aDogMDtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4gLm91dGxpbmUtbWVzc2FnZV9faWNvbiAub3V0bGluZS1pY29uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQge1xuICBtaW4td2lkdGg6IDE4MHB4O1xuICBwYWRkaW5nOiAwIDQwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9pbmZvIC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBjb2xvcjogIzUwN2FmZTtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfbGlnaHQub3V0bGluZS1tZXNzYWdlX3dhcm5pbmcgLm91dGxpbmUtbWVzc2FnZV9faWNvbiB7XG4gIGNvbG9yOiAjZmY5OTAxO1xufVxuLm91dGxpbmUtbWVzc2FnZV9saWdodC5vdXRsaW5lLW1lc3NhZ2Vfc3VjY2VzcyAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICMwNTg5NDI7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0Lm91dGxpbmUtbWVzc2FnZV9lcnJvciAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgY29sb3I6ICNmZjVkNWQ7XG59XG4ub3V0bGluZS1tZXNzYWdlX2xpZ2h0IC5vdXRsaW5lLW1lc3NhZ2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZCB7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX3JvdW5kLm91dGxpbmUtbWVzc2FnZV9kZWZhdWx0IHtcbiAgbWluLXdpZHRoOiAxODBweDtcbiAgcGFkZGluZzogMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfZGVmYXVsdCAub3V0bGluZS1tZXNzYWdlX19pY29uIHtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgdG9wOiAxMHB4O1xuICBsZWZ0OiAxMHB4O1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2Vfcm91bmQub3V0bGluZS1tZXNzYWdlX2RlZmF1bHQub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAwIDIwcHggMCA0MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ge1xuICBtaW4td2lkdGg6IDE5NXB4O1xuICBwYWRkaW5nOiAwIDQwcHggMCAyMHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9yb3VuZC5vdXRsaW5lLW1lc3NhZ2VfcGxhaW4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIxNXB4O1xuICBwYWRkaW5nOiAwIDIwcHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgge1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAwIDEwcHggMCA1MHB4O1xufVxuLm91dGxpbmUtbWVzc2FnZV9mdWxsLXdpZHRoLm91dGxpbmUtbWVzc2FnZV9wbGFpbiB7XG4gIG1pbi13aWR0aDogMjMwcHg7XG4gIHBhZGRpbmc6IDAgMTBweCAwIDE1cHg7XG59XG4ub3V0bGluZS1tZXNzYWdlX2Z1bGwtd2lkdGgub3V0bGluZS1tZXNzYWdlX2xpZ2h0IHtcbiAgbWluLXdpZHRoOiAyMTBweDtcbiAgcGFkZGluZzogMCAxMHB4IDAgNDBweDtcbn1cbi5vdXRsaW5lLW1lc3NhZ2VfdmlzaWJsZSB7XG4gIG9wYWNpdHk6IDE7XG59XG4ub3V0bGluZS1tZXNzYWdlX2hpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiA9PT09PSBTY3JvbGxiYXIgPT09PT0gKi9cbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogN3B4O1xuICBoZWlnaHQ6IDdweDtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIHtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xufVxuOjotd2Via2l0LXNjcm9sbGJhcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG5cbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zjg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5aaGNtbGhZbXhsY3k1c1pYTnpJaXdpTGk0dlBHbHVjSFYwSUdOemN5QTJQaUlzSW1samIyNXpMbXhsYzNNaUxDSmhibU5vYjNKekxteGxjM01pTENKa2NtRjNaWEl1YkdWemN5SXNJbTFwZUdsdWN5NXNaWE56SWl3aVkyaGhjSFJsY25NdWJHVnpjeUlzSW5KbFlXUmxjaTVzWlhOeklpd2lkRzl2YkdKaGNpNXNaWE56SWl3aWJXVnpjMkZuWlM1c1pYTnpJaXdpYzJOeWIyeHNZbUZ5TG14bGMzTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UlVGRFF5eDFRa0ZCUVR0RlFVTkVMRGhDUVVGQk8wVkJRV2xETEN0Q1FVRkJPME5EUldoRE8wRkJRMFFzYlVSQlFXMUVPMEZCUTI1RU96czdPenRIUVV0SE8wRkJRMGdzTUVKQlFUQkNPMEZCUXpGQ096czdPenRIUVV0SE8wRkJRMGdzTkVKQlFUUkNPMEZCUXpWQ0xHdEVRVUZyUkR0QlEzQkNRenRGUVVWdVJDeHRRa0ZCUVR0RlFVRnpRaXhYUVVGQk8wVkJRMVFzYzBKQlFVRTdSVUZEVlN4MVFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFlpeFpRVUZCTzBWQlEwRXNhVUpCUVVFN1EwUnpRbFE3UVVOeVFtTTdSVUZGVml4dFFrRkJRVHRGUVVOWkxGZEJRVUU3UlVGRFZDeFRRVUZCTzBWQlEwZ3NWVUZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEVFN4NVEwRkJRVHRWUVVGQkxHbERRVUZCTzBWQlEyRXNhVUpCUVVFN1EwUnpRblpDTzBGRGNrSlRPMFZCUTFJc1kwRkJRVHREUkhWQ1JEdEJSWHBEUkR0RlFVTkZMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEdsQ1FVRkJPME5HTWtORU8wRkZla05ETzBWQlEwVXNZMEZCUVR0RFJqSkRTRHRCUlhwRFJ6czdPMFZCUjBVc1dVRkJRVHRGUVVOQkxITkNRVUZCTzBOR01rTk1PMEZGZUVOSE8wVkJRMFVzWlVGQlFUdERSakJEVER0QlJYUkRRenRGUVVWSkxITkNRVUZCTzBOR2RVTk1PMEZGYkVOSE8wVkJRMFVzYTBKQlFVRTdRMFp2UTB3N1FVVjBRME03UlVGTlNTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hUUVVGQk8wVkJRMEVzYjBOQlFVRTdWVUZCUVN3MFFrRkJRVHRGUVVOQkxGZEJRVUU3UTBadFEwdzdRVWR5UlVRN1JVRkRSU3h0UWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4UFFVRkJPMFZCUTBFc1VVRkJRVHRGUVVOQkxGVkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMQ3RDUVVGQk8xVkJRVUVzZFVKQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxHbENRVUZCTzBOSWRVVkVPMEZIY2tWRE8wVkROa05GTEhkRFFVRkJPMVZCUVVFc1owTkJRVUU3UlVRelEwRXNjVUpCUVVFN1JVRkJRU3h4UWtGQlFUdEZRVUZCTEdOQlFVRTdSVUZEUVN3MlFrRkJRVHRGUVVGQkxEaENRVUZCTzAxQlFVRXNNa0pCUVVFN1ZVRkJRU3gxUWtGQlFUdEZRVU5CTEhOQ1FVRkJPMDFCUVVFc2EwSkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3hoUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4clEwRkJRVHRWUVVGQkxEQkNRVUZCTzBWQlEwRXNhVUpCUVVFN1EwaDFSVWc3UVVkd1JVTTdPenRGUVVkRkxGbEJRVUU3UlVGRFFTd3JRa0ZCUVR0VlFVRkJMSFZDUVVGQk8wTkljMFZJTzBGSGJrVkRPenRGUVVWRkxIRkNRVUZCTzAxQlFVRXNaVUZCUVR0RFNIRkZTRHRCUjJ4RlF6czdPMFZCUjBVc1owSkJRVUU3UTBodlJVZzdRVWRxUlVNN08wVkJSVVVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1pVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTkliVVZJTzBGSGFFVkRPMFZCUTBVc1owSkJRVUU3UlVGRFFTeHBRa0ZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPMFZCUTBFc2FVTkJRVUU3UTBoclJVZzdRVWN2UkVNN1JVRkRSU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4VFFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxGbEJRVUU3UlVGRFFTeGhRVUZCTzBWQlEwRXNhMEpCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWjBKQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdEZRVU5CTEdsQ1FVRkJPME5JYVVWSU8wRkhPVVZETzBWQlowSkpMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEU5QlFVRTdSVUZEUVN4UlFVRkJPME5JYVVWTU8wRkhPVVJITzBWQlEwVXNXVUZCUVR0RFNHZEZURHRCUnpWRVF6dEZRVU5GTEc5Q1FVRkJPMDFCUVVFc1dVRkJRVHRWUVVGQkxGRkJRVUU3UlVGRFFTeGxRVUZCTzBOSU9FUklPMEZITTBSRE8wVkJRMFVzWlVGQlFUdEZRVU5CTEd0Q1FVRkJPMFZCUTBFc2FVSkJRVUU3UTBnMlJFZzdRVWN4UkVNN1JVRkRSU3haUVVGQk8wVkJRMEVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1QwRkJRVHRGUVVOQkxGRkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNZVUZCUVR0RlFVTkJMSFZDUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEdsQ1FVRkJPME5JTkVSSU8wRkhkRVJMT3p0RlFVTkZMR0ZCUVVFN1EwaDVSRkE3UVVkMFJFczdPMFZCUTBVc1lVRkJRVHREU0hsRVVEdEJSM1JFU3pzN1JVRkRSU3hoUVVGQk8wTkllVVJRTzBGSGRFUkxPenRGUVVORkxHRkJRVUU3UTBoNVJGQTdRVWQwUkVzN08wVkJRMFVzWVVGQlFUdERTSGxFVUR0QlIzUkVTenM3UlVGRFJTeGhRVUZCTzBOSWVVUlFPMEZIY0VSRE8wVkJRMFVzSzBKQlFVRTdRMGh6UkVnN1FVZHNSRTg3UlVGRFJTeGpRVUZCTzBOSWIwUlVPMEZITDBOUE8wVkJRMFVzWTBGQlFUdERTR2xFVkR0QlJ6VkRUenRGUVVORkxHTkJRVUU3UTBnNFExUTdRVWQ2UTA4N1JVRkRSU3hqUVVGQk8wTklNa05VTzBGSGRFTlBPMFZCUTBVc1kwRkJRVHREU0hkRFZEdEJSMjVEVHp0RlFVTkZMR05CUVVFN1EwaHhRMVE3UVVjdlFrTTdSVUZEUlN4blEwRkJRVHREU0dsRFNEdEJSemRDVHp0RlFVTkZMR0ZCUVVFN1EwZ3JRbFE3UVVjeFFrODdSVUZEUlN4aFFVRkJPME5JTkVKVU8wRkhka0pQTzBWQlEwVXNZVUZCUVR0RFNIbENWRHRCUjNCQ1R6dEZRVU5GTEdGQlFVRTdRMGh6UWxRN1FVZHFRazg3UlVGRFJTeGhRVUZCTzBOSWJVSlVPMEZIWkU4N1JVRkRSU3hoUVVGQk8wTklaMEpVTzBGSFZrTTdPMFZCUlVVc1VVRkJRVHRGUVVOQkxGbEJRVUU3UTBoWlNEdEJSMVJMT3p0RlFVTkZMR05CUVVFN1EwaFpVRHRCUjFSTE96dEZRVU5GTEdOQlFVRTdRMGhaVUR0QlIxUkxPenRGUVVORkxHTkJRVUU3UTBoWlVEdEJSMVJMT3p0RlFVTkZMR05CUVVFN1EwaFpVRHRCUjFSTE96dEZRVU5GTEdOQlFVRTdRMGhaVUR0QlIxUkxPenRGUVVORkxHTkJRVUU3UTBoWlVEdEJSMUJETzBWQlEwVXNhVU5CUVVFN1EwaFRTRHRCUjB4UE8wVkJRMFVzV1VGQlFUdERTRTlVTzBGSFJrODdSVUZEUlN4WlFVRkJPME5JU1ZRN1FVZERUenRGUVVORkxGbEJRVUU3UTBoRFZEdEJSMGxQTzBWQlEwVXNXVUZCUVR0RFNFWlVPMEZIVDA4N1JVRkRSU3haUVVGQk8wTklURlE3UVVkVlR6dEZRVU5GTEZsQlFVRTdRMGhTVkR0QlIyTkRPMFZCUTBVc1lVRkJRVHRGUVVOQkxEaENRVUZCTzBOSVdrZzdRVWRuUWs4N1JVRkRSU3hsUVVGQk8wTklaRlE3UVVkdFFrODdSVUZEUlN4bFFVRkJPME5JYWtKVU8wRkhjMEpQTzBWQlEwVXNaVUZCUVR0RFNIQkNWRHRCUjNsQ1R6dEZRVU5GTEdWQlFVRTdRMGgyUWxRN1FVYzBRazg3UlVGRFJTeGxRVUZCTzBOSU1VSlVPMEZISzBKUE8wVkJRMFVzWlVGQlFUdERTRGRDVkR0QlIyMURRenRGUVVORkxHOUNRVUZCTzBWQlEwRXNLMEpCUVVFN1EwaHFRMGc3UVVkdFEwYzdSVUZEUlN4blFrRkJRVHREU0dwRFREdEJSMjFEU3p0RlFVTkZMRk5CUVVFN1EwaHFRMUE3UVVkdlEwczdSVUZEUlN4UlFVRkJPME5JYkVOUU8wRkhjVU5MTzBWQlEwVXNUMEZCUVR0RFNHNURVRHRCUjNORFN6dEZRVU5GTEZWQlFVRTdRMGh3UTFBN1FVY3lRMHM3TzBWQlJVVXNlVUpCUVVFN1JVRkRRU3hUUVVGQk8wVkJRMEVzYjBOQlFVRTdWVUZCUVN3MFFrRkJRVHREU0hwRFVEdEJSelJEU3pzN1JVRkZSU3gzUWtGQlFUdEZRVU5CTEZWQlFVRTdSVUZEUVN4dlEwRkJRVHRWUVVGQkxEUkNRVUZCTzBOSU1VTlFPMEZISzBOVE8wVkJRMFVzVjBGQlFUdERTRGREV0R0QlIyZEVVenRGUVVORkxGVkJRVUU3UTBnNVExZzdRVWRwUkZNN1JVRkRSU3hUUVVGQk8wTklMME5ZTzBGSGEwUlRPMFZCUTBVc1dVRkJRVHREU0doRVdEdEJSM2xFU3pzN1JVRkZSU3hoUVVGQk8wVkJRMEVzTmtKQlFVRTdRMGgyUkZBN1FVYzBSRU03UlVGRFJTeFhRVUZCTzBOSU1VUklPMEZMZEZkRU8wVkJRMFVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1ZVRkJRVHRGUVVOQkxIRkRRVUZCTzBWQlEwRXNaVUZCUVR0RFRIZFhSRHRCUzNSWFF6dEZRVU5GTEhGRFFVRkJPMFZCUVVFc05rSkJRVUU3UTB4M1YwZzdRVXR5VjBNN1JVRkRSU3hsUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEd0Q1FVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeHBRMEZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYVVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVEhWWFNEdEJTM0JYUXp0RlFVTkZMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZWQlFVRTdSVUZEUVN4cFFrRkJRVHREVEhOWFNEdEJTMjVYUXpzN08wVkJSMFVzYlVKQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1ZVRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeHpRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTk1jVmRJTzBGTGJGZERPMFZCUTBVc2FVSkJRVUU3UTB4dlYwZzdRVXRxVjBNN1JVRkRSU3hyUWtGQlFUdERURzFYU0R0QlMyaFhRenRGUVVORkxGVkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzYVVKQlFVRTdRMHhyVjBnN1FVc3ZWa003UlVGRFJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzVVVGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc01FSkJRVUU3UlVGRFFTd3JRa0ZCUVR0RlFVTkJMR3REUVVGQk8xVkJRVUVzTUVKQlFVRTdSVUZEUVN3clFrRkJRVHRWUVVGQkxIVkNRVUZCTzBWQlEwRXNhVUpCUVVFN1EweHBWMGc3UVVzNVZrTTdSVVJvUlRSQ0xHOUNRVUZCTzBWQlEyWXNkMEpCUVVFN1JVRkRSeXhwUWtGQlFUdEZRMmRGWkN4bFFVRkJPMFZCUTBFc2FVSkJRVUU3UTB4clYwZzdRVXRvVjBjN096dEZRVWRGTEhOQ1FVRkJPMFZCUTBFc1dVRkJRVHREVEd0WFREdEJTeTlXUnp0RlFVTkZMR1ZCUVVFN1EweHBWMHc3UVVzM1ZrTTdSVUZEUlN4eFFrRkJRVHREVEN0V1NEdEJTekZXU3pzN08wVkJSMFVzWlVGQlFUdEZRVU5CTEd0Q1FVRkJPME5NTkZaUU8wRkxkbFpET3p0RlFVVkZMSEZDUVVGQk8wVkJRVUVzY1VKQlFVRTdSVUZCUVN4alFVRkJPMFZCUTBFc2MwSkJRVUU3VFVGQlFTeHJRa0ZCUVR0RlFVTkJMRFpDUVVGQk8wVkJRVUVzT0VKQlFVRTdUVUZCUVN3eVFrRkJRVHRWUVVGQkxIVkNRVUZCTzBWQlEwRXNLMEpCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzYVVKQlFVRTdRMHg1VmtnN1FVdDBWa3M3T3pzN1JVRkZSU3dyUWtGQlFUdFZRVUZCTEhWQ1FVRkJPME5NTUZaUU8wRkxkbFpMT3p0RlFVTkZMSEZDUVVGQk8wMUJRVUVzWlVGQlFUdERUREJXVUR0QlMzWldTenM3UlVGRFJTeHZRa0ZCUVR0TlFVRkJMRmxCUVVFN1ZVRkJRU3hSUVVGQk8wVkJRMEVzWlVGQlFUdERUREJXVUR0QlMzSldRenRGUVVORkxHbENRVUZCTzBWQlEwRXNlVU5CUVVFN1EweDFWa2c3UVV0d1ZrTTdSVUZEUlN4blFrRkJRVHRGUVVOQkxHbENRVUZCTzBOTWMxWklPMEZMYmxaRE8wVkJRMFVzWTBGQlFUdERUSEZXU0R0QlMyeFdRenRGUVVORkxGTkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFRHOVdTRHRCUVVORU96czdPenRIUVV0SE8wRkJRMGdzTUVKQlFUQkNPMEZCUXpGQ0xEUkNRVUUwUWp0QlFVTTFRaXcwUWtGQk5FSTdRVTAxWlRGQ08wVkJRMFVzWTBGQlFUdERUamhsU0R0QlRUTmxRenRGUVVORkxEUkNRVUZCTzBWQlEwRXNPRUpCUVVFN1JVRkRRU3h4UkVGQlFUdEZRVU5CTEc5Q1FVRkJPMFZCUTBFc2FVSkJRVUU3UTA0MlpVZzdRVTB4WlVNN1JVRkRSU3g1UWtGQlFUdERUalJsU0R0QlRURmxSenRGUVVORkxIbENRVUZCTzBOT05HVk1PMEZOZW1WUE8wVkJRMFVzWTBGQlFUdERUakpsVkR0QlRYSmxRenRGUVVORkxHVkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzVVVGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc1ZVRkJRVHRGUVVOQkxDdENRVUZCTzFWQlFVRXNkVUpCUVVFN1JVRkRRU3hwUWtGQlFUdEZRVU5CTEhWQ1FVRkJPMFZCUTBFc2VVTkJRVUU3UlVGRFFTeHBRa0ZCUVR0RFRuVmxTRHRCVFhCbFN6dEZRVU5GTEdkQ1FVRkJPMFZCUTBFc1QwRkJRVHRGUVVOQkxGRkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMRmxCUVVFN1JVRkRRU3d3UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN3clFrRkJRVHRWUVVGQkxIVkNRVUZCTzBWQlEwRXNhMFJCUVVFN1ZVRkJRU3d3UTBGQlFUdEZRVU5CTEhWRFFVRkJPME5PYzJWUU8wRk5ibVZMTzBWR1EwWXNkME5CUVVFN1ZVRkJRU3huUTBGQlFUdEZSVU5KTEdWQlFVRTdSVUZEUVN4blFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFRRVUZCTzBWQlEwRXNXVUZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEc5Q1FVRkJPMFZCUTBFc01FSkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMEVzYjBOQlFVRTdWVUZCUVN3MFFrRkJRVHRGUVVOQkxHZENRVUZCTzBWQlEwRXNhVU5CUVVFN1ZVRkJRU3g1UWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4MVFrRkJRVHRGUVVOQkxHbENRVUZCTzBOT2NXVlFPMEZOYm1WUE8wVkJRMFVzTUVKQlFVRTdSVUZEUVN4WlFVRkJPME5PY1dWVU8wRk5NV2hDUXpzN1JVRXlSRTBzTkVKQlFVRTdSVUZEUVN4dFFrRkJRVHRGUVVOQkxHbENRVUZCTzBOT2JXVlFPMEZOTjJSRU8wVkJRMFU3U1VGRFJTeFhRVUZCTzBkT0syUkVPME5CUTBZN1FVMXNaVVE3UlVGRFJUdEpRVU5GTEZkQlFVRTdSMDRyWkVRN1EwRkRSanRCVFRWa1JEdEZRVVZKTzBsQlEwVXNhMEpCUVVFN1IwNDJaRWc3UlUweFpFTTdTVUZEUlN4MVFrRkJRVHRKUVVOQkxHRkJRVUU3UjA0MFpFZzdSVTE2WkVNN1NVRkRSU3hsUVVGQk8wZE9NbVJJTzBOQlEwWTdRVTEyWkVRN1JVRkRSVHM3U1VGRlJTd3lRa0ZCUVR0SFRubGtSRHRGVFhKa1F6czdTVUZGUlN4NVFrRkJRVHRIVG5Wa1NEdEZUWEJrUXp0SlFVTkZMREJDUVVGQk8wbEJRMEVzYVVKQlFVRTdSMDV6WkVnN1JVMTRaRU03TzBsQlRVa3NhVU5CUVVFN1NVRkRRU3c0UWtGQlFUdEpRVU5CTERKQ1FVRkJPMGRPYzJSTU8wVk5iR1JMTzBsQlEwVXNPRUpCUVVFN1NVRkRRU3gzUWtGQlFUdEpRVU5CTEhOQ1FVRkJPMGxCUTBFc05FSkJRVUU3UjA1dlpGQTdSVTE2WkVjN08wbEJWVWtzYVVOQlFVRTdTVUZEUVN3NFFrRkJRVHRKUVVOQkxESkNRVUZCTzBkT2JXUlFPMFZOYUdSTE96dEpRVVZGTEhsQ1FVRkJPMGRPYTJSUU8wVk5PV1ZETzBsQmFVTkpMSGRDUVVGQk8wbEJRMEVzYTBOQlFVRTdTVUZEUVN3NFFrRkJRVHRIVG1ka1REdEZUVzVtUXpzN1NVRjNRMGtzYTBOQlFVRTdSMDRyWTB3N1JVMTJaa003T3p0SlFUaERTU3h0UTBGQlFUdFBRVUZCTEdkRFFVRkJPMWxCUVVFc2IwSkJRVUU3UjA0NFkwdzdSVTB6WTBjN1NVRkRSU3g1UWtGQlFUdEhUalpqVER0RFFVTkdPMEZCUTBRc2EwUkJRV3RFTzBGUGFtOUNiRVE3UlVGRFJTeG5Ra0ZCUVR0RlFVTkJMR1ZCUVVFN1JVRkRRU3hWUVVGQk8wVkJRMEVzYTBOQlFVRTdWVUZCUVN3d1FrRkJRVHRGUVVOQkxHbENRVUZCTzBOUWJXOUNSRHRCVDJwdlFrTTdSVWhyUkVVc2QwTkJRVUU3VlVGQlFTeG5RMEZCUVR0RlIyaEVRU3h0UWtGQlFUdEZRVU5CTEZkQlFVRTdSVUZEUVN4aFFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTd3dRa0ZCUVR0RlFVTkJMRzFDUVVGQk8wVkJRMEVzSzBKQlFVRTdWVUZCUVN4MVFrRkJRVHRGUVVOQkxIVkNRVUZCTzBWQlEwRXNaMEpCUVVFN1JVRkRRU3h0UWtGQlFUdEZRVU5CTEZsQlFVRTdSVUZEUVN4cFFrRkJRVHREVUcxdlFrZzdRVTlxYjBKSE8wVkJRMFVzWlVGQlFUdEZRVU5CTEhOQ1FVRkJPME5RYlc5Q1REdEJUMmh2UWtjN1JVRkRSU3hqUVVGQk8wTlFhMjlDVER0QlR6ZHVRa2M3T3p0RlFVZEZMRmxCUVVFN1JVRkRRU3h6UWtGQlFUdERVQ3R1UWt3N1FVODFia0pITzBWQlEwVXNaVUZCUVR0RFVEaHVRa3c3UVU4eGJrSkRPMFZCUTBVc2JVSkJRVUU3UlVGRFFTeFhRVUZCTzBWQlEwRXNVMEZCUVR0RlFVTkJMRlZCUVVFN1JVRkRRU3haUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEhsRFFVRkJPMVZCUVVFc2FVTkJRVUU3UlVGRFFTeHRRa0ZCUVR0RlFVTkJMR2xDUVVGQk8wTlFORzVDU0R0QlQzWnVRa3M3UlVGRFJTeFpRVUZCTzBWQlEwRXNNRUpCUVVFN1JVRkRRU3h6UWtGQlFUdERVSGx1UWxBN1FVOTJia0pQTzBWQlEwVXNXVUZCUVR0RFVIbHVRbFE3UVU5dWJrSkxPenM3UlVGSFJTeFpRVUZCTzBOUWNXNUNVRHRCVHk5dFFrYzdSVUZEUlN4dlFrRkJRVHREVUdsdVFrdzdRVTh4YlVKTE96czdPenM3T3p0RlFVbEZMRzlDUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEcxQ1FVRkJPME5RWjI1Q1VEdEJUemx0UWs4N096czdPenM3TzBWQlEwVXNXVUZCUVR0RlFVTkJMRzFDUVVGQk8wTlFkVzVDVkR0QlQyNXVRa3M3TzBWQlEwVXNNRUpCUVVFN1ExQnpia0pRTzBGUGFtNUNRenM3UlVGRlJTeFZRVUZCTzBWQlEwRXNiME5CUVVFN1ZVRkJRU3cwUWtGQlFUdERVRzF1UWtnN1FVOTBia0pET3p0RlFVMUpMSE5DUVVGQk8wTlFiMjVDVER0QlQyaHVRa003UlVGRFJTeFZRVUZCTzBOUWEyNUNTRHRCVDJodVFrYzdSVUZEUlN4WFFVRkJPME5RYTI1Q1REdEJUemx0UWtNN1JVRkRSU3hoUVVGQk8wTlFaMjVDU0R0QlR6bHRRa2M3UlVGRFJTeGpRVUZCTzBOUVoyNUNURHRCVHpWdFFrTTdPMFZCUlVVc2IwTkJRVUU3VlVGQlFTdzBRa0ZCUVR0RlFVTkJMRmxCUVVFN1ExQTRiVUpJTzBGUE0yMUNRenRGUVVORkxGTkJRVUU3UlVGRFFTeFpRVUZCTzBOUU5tMUNTRHRCVHpOdFFrYzdSVUZEUlN4aFFVRkJPME5RTm0xQ1REdEJUM3B0UWtNN1JVRkRSU3hUUVVGQk8wVkJRMEVzVjBGQlFUdERVREp0UWtnN1FVOTZiVUpITzBWQlEwVXNXVUZCUVR0RFVESnRRa3c3UVU5c2JVSkxPenM3TzBWQlEwVXNZMEZCUVR0RFVIVnRRbEE3UVVGRFJEczdPenM3UjBGTFJ6dEJRVU5JTEhOQ1FVRnpRanRCUVVOMFFpeHpRa0ZCYzBJN1FVRkRkRUlzYzBKQlFYTkNPMEZSY0hoQ2RFSTdSVXByUWpaQ0xHMUNRVUZCTzBWQmMwTjZRaXgzUTBGQlFUdFZRVUZCTEdkRFFVRkJPMFZKY2tSR0xHZENRVUZCTzBWQlEwRXNZMEZCUVR0RlFVTkJMR0ZCUVVFN1JVRkRRU3hYUVVGQk8wVkJRMEVzVlVGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeHJRa0ZCUVR0RlFVTkJMR2RDUVVGQk8wVkJRMEVzZFVKQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc2VVTkJRVUU3UlVGQlFTeHBRMEZCUVR0RlFVTkJMRzlEUVVGQk8xVkJRVUVzTkVKQlFVRTdSVUZEUVN4cFFrRkJRVHREVW5ONFFrUTdRVkZ3ZUVKRE8wVktaalJDTEc5Q1FVRkJPMFZCUTJZc2QwSkJRVUU3UlVsblFsZ3NWVUZCUVR0RlFVTkJMR2xDUVVGQk8wVkJRMEVzWVVGQlFUdEZRVU5CTEd0Q1FVRkJPMFZCUTBFc1owSkJRVUU3UlVGRFFTeFpRVUZCTzBWQlEwRXNhVUpCUVVFN1ExSjFlRUpJTzBGUmNIaENRenM3UlVGRlJTeHRRa0ZCUVR0RlFVTkJMRmRCUVVFN1JVRkRRU3hQUVVGQk8wVkJRMEVzV1VGQlFUdEZRVU5CTEdGQlFVRTdSVUZEUVN4clFrRkJRVHRGUVVOQkxHMUNRVUZCTzBWQlEwRXNhVUpCUVVFN1ExSnplRUpJTzBGUmJuaENRenRGUVVORkxGRkJRVUU3UlVGRFFTeFpRVUZCTzBOU2NYaENTRHRCVVhaNFFrTTdSVUZMU1N4dFFrRkJRVHRGUVVOQkxGZEJRVUU3UlVGRFFTeFRRVUZCTzBWQlEwRXNWVUZCUVR0RlFVTkJMSGxEUVVGQk8xVkJRVUVzYVVOQlFVRTdRMUp4ZUVKTU8wRlJhbmhDUXp0RlFVTkZMRk5CUVVFN1JVRkRRU3huUWtGQlFUdEZRVU5CTEZsQlFVRTdRMUp0ZUVKSU8wRlJkSGhDUXp0RlFVMUpMRzFDUVVGQk8wVkJRMEVzVjBGQlFUdEZRVU5CTEZOQlFVRTdSVUZEUVN4VlFVRkJPMFZCUTBFc2VVTkJRVUU3VlVGQlFTeHBRMEZCUVR0RFVtMTRRa3c3UVZGb2VFSkhPMFZCUTBVc1dVRkJRVHREVW10NFFrdzdRVkU1ZDBKRE8wVkJSVWtzTUVKQlFVRTdRMUlyZDBKTU8wRlJNM2RDUXp0RlFVVkpMREJDUVVGQk8wTlNOSGRDVER0QlVYaDNRa003UlVGRlNTd3dRa0ZCUVR0RFVubDNRa3c3UVZGeWQwSkRPMFZCUlVrc01FSkJRVUU3UTFKemQwSk1PMEZSYkhkQ1F6dEZRVU5GTEdsQ1FVRkJPMFZCUTBFc2RVSkJRVUU3UTFKdmQwSklPMEZSYW5kQ1N6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTFKdGQwSlFPMEZSYUhkQ1N6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTFKcmQwSlFPMEZSTDNaQ1N6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTFKcGQwSlFPMEZST1haQ1N6dEZRVU5GTEN0Q1FVRkJPMFZCUTBFc01FSkJRVUU3UTFKbmQwSlFPMEZSZEhoQ1F6dEZRVEpDU1N4VFFVRkJPMFZCUTBFc1kwRkJRVHREVWpoMlFrdzdRVkV4ZUVKRE8wVkJLMEpOTEdOQlFVRTdRMUk0ZGtKUU8wRlJlblpDUXp0RlFVTkZMR2xDUVVGQk8wVkJRMEVzWjBKQlFVRTdRMUl5ZGtKSU8wRlJlSFpDU3p0RlFVVkpMR1ZCUVVFN1ExSjVka0pVTzBGUmNuWkNTenRGUVVWSkxHVkJRVUU3UTFKemRrSlVPMEZSYkhaQ1N6dEZRVVZKTEdWQlFVRTdRMUp0ZGtKVU8wRlJMM1ZDU3p0RlFVVkpMR1ZCUVVFN1ExSm5ka0pVTzBGUmVuZENRenRGUVN0Q1NTeDFRa0ZCUVR0RFVqWjFRa3c3UVZGNmRVSkRPMFZLZEVveVFpeHZRa0ZCUVR0RFNtczBRalZDTzBGUmVIVkNTenRGUVVORkxHbENRVUZCTzBWQlEwRXNaMEpCUVVFN1ExSXdkVUpRTzBGUk5YVkNTenRGU2pGS2RVSXNiMEpCUVVFN1JVbG5TMjVDTEZWQlFVRTdSVUZEUVN4WFFVRkJPMFZCUTBFc1dVRkJRVHRGUVVOQkxHRkJRVUU3UlVGRFFTeHJRa0ZCUVR0RFVqQjFRbFE3UVZGMmRVSlBPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVubDFRbFE3UVZGeWRVSkxPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVuVjFRbEE3UVZGeWRVSlBPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeG5Ra0ZCUVR0RFVuVjFRbFE3UVZGcWRVSkRPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVtMTFRa2c3UVZGb2RVSkxPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVtdDFRbEE3UVZFdmRFSkxPMFZCUTBVc2FVSkJRVUU3UlVGRFFTeDFRa0ZCUVR0RFVtbDFRbEE3UVZFMWRFSkRPMFZCUTBVc1YwRkJRVHREVWpoMFFrZzdRVkV6ZEVKRE8wVkJRMFVzWTBGQlFUdERValowUWtnN1FVRkRSQ3d5UWtGQk1rSTdRVk51T0VJelFqdEZRVU5GTEZkQlFVRTdSVUZEUVN4WlFVRkJPMFZCUTBFc01rSkJRVUU3UTFSeE9FSkVPMEZUYmpoQ1F6dEZRVU5GTERKQ1FVRkJPME5VY1RoQ1NEdEJVMm80UWtjN1JVRkRSU3h6UTBGQlFUdEZRVU5CTERKQ1FVRkJPME5VYlRoQ1REdEJVMmc0UWtjN1JVRkRSU3h6UTBGQlFUdEZRVU5CTERKQ1FVRkJPME5VYXpoQ1REdEJVeTgzUWtjN1JVRkRSU3h6UTBGQlFUdERWR2s0UWt3N1FWTTNOMEpETzBWQlEwVXNjME5CUVVFN1ExUXJOMEpJSWl3aVptbHNaU0k2SW05MWRHeHBibVV1WTNOeklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lPbkp2YjNRZ2UxeHlYRzRnSUMwdGIzVjBiR2x1WlMxNlNXNWtaWGc2SURJd01EQTdYSEpjYmlBZ0xTMXZkWFJzYVc1bExYTjBhV05yZVMxb1pXbG5hSFE2SURFd01DVTdYSEpjYmlBZ0xTMXZkWFJzYVc1bExXTm9ZWEIwWlhKekxYZHBaSFJvT2lBeE1EQWxPMXh5WEc1OVhISmNiaUlzSWpweWIyOTBJSHRjYmlBZ0xTMXZkWFJzYVc1bExYcEpibVJsZURvZ01qQXdNRHRjYmlBZ0xTMXZkWFJzYVc1bExYTjBhV05yZVMxb1pXbG5hSFE2SURFd01DVTdYRzRnSUMwdGIzVjBiR2x1WlMxamFHRndkR1Z5Y3kxM2FXUjBhRG9nTVRBd0pUdGNibjFjYmk4cUlEMDlQVDA5UFQwOVBUMGdZMjlzYjNKekxuUm9aVzFsSUMwZzVaKzY1NkdBNmFLYzZJbXk1WStZNlllUDZadUc1WkNJSUQwOVBUMDlQVDA5UFQwZ0tpOWNiaThxS2x4dUlDb2daV3hzYVhCemFYTXViR1Z6Y3lBdElPYVdoK2Fjck9lY2dlZVZwU0J0YVhocGJuZ2c1WWU5NXBXd1hHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR4TVZ4dUlDb3ZYRzR2S2lBOVBUMDlQVDBnNXBhSDVweXM1NXlCNTVXbDVZZTk1cFd3SUQwOVBUMDlQU0FxTDF4dUx5b3FYRzRnS2lCemFHRmtiM2N1YkdWemN5QXRJT21ZdE9XOXNlYWd0K1c4aitpdXZ1ZTlyaUJ0YVhocGJuZ2c1WWU5NXBXd1hHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYRzRnS2lCVmNHUmhkR1U2SURJd01qSXVNeTR5TUZ4dUlDb3ZYRzR2S2lBOVBUMDlQVDBnNlppMDViMng1cUMzNWJ5UDZLNis1NzJ1NVllOTVwV3dJRDA5UFQwOVBTQXFMMXh1THlvZ1BUMDlQVDA5UFQwOVBTQnBZMjl1TG5Sb1pXMWxJQzBnYzNabklPV2J2dWFnaCtlYWhPYWd0K1c4anlBOVBUMDlQVDA5UFQwOUlDb3ZYRzR1YjNWMGJHbHVaUzFwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4dUlDQjZMV2x1WkdWNE9pQXhPMXh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYRzRnSUhabGNuUnBZMkZzTFdGc2FXZHVPaUJ0YVdSa2JHVTdYRzRnSUhkcFpIUm9PaUF4WlcwN1hHNGdJR2hsYVdkb2REb2dNV1Z0TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0YVdOdmJsOWZjM1puSUh0Y2JpQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPMXh1SUNCNkxXbHVaR1Y0T2lBeU8xeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2JHVm1kRG9nTlRBbE8xeHVJQ0IzYVdSMGFEb2dNV1Z0TzF4dUlDQm9aV2xuYUhRNklERmxiVHRjYmlBZ1ptbHNiRG9nWTNWeWNtVnVkR052Ykc5eU8xeHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlNndE5UQWxMQ0F0TlRBbEtUdGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYm4xY2JpNXZkWFJzYVc1bExXbGpiMjVmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1jZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklERTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMW9aV0ZrYVc1blgxOWhibU5vYjNJZ2UxeHVJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHVmVnh1TG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMW9aV0ZrYVc1blgxOWhibU5vYjNJNmRtbHphWFJsWkN4Y2JpNXZkWFJzYVc1bExXaGxZV1JwYm1kZlgyRnVZMmh2Y2pwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak9UazVPMXh1SUNCMFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdYRzU5WEc0dWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0k2YUc5MlpYSWdlMXh1SUNCamIyeHZjam9nSXpVd04yRm1aVHRjYm4xY2JpNXZkWFJzYVc1bExXaGxZV1JwYm1jNmFHOTJaWElnTG05MWRHeHBibVV0YUdWaFpHbHVaMTlmWVc1amFHOXlJSHRjYmlBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh1ZlZ4dUxtOTFkR3hwYm1VdGFHVmhaR2x1WjE5emRHRnlkRHBvYjNabGNpQjdYRzRnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4dWZWeHVMbTkxZEd4cGJtVXRhR1ZoWkdsdVoxOXpkR0Z5ZENBdWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0lnZTF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJN1hHNGdJSFJ2Y0RvZ05UQWxPMXh1SUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpWa29MVFV3SlNrN1hHNGdJR3hsWm5RNklDMHhaVzA3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklDMHhPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdobGFXZG9kRG9nTVRBd0pUdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNiaUFnZG1semFXSnBiR2wwZVRvZ2FHbGtaR1Z1TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTl0YjJSaGJDQjdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0EyY0hnZ01YQjRJQ05rWTJSbVpUWTdYRzRnSUdScGMzQnNZWGs2SUdac1pYZzdYRzRnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYRzRnSUdac1pYZ3RkM0poY0RvZ2JtOTNjbUZ3TzF4dUlDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUhvdGFXNWtaWGc2SURJeE8xeHVJQ0JvWldsbmFIUTZJREV3TUNVN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN1hHNGdJSFJ5WVc1emFYUnBiMjR0WkhWeVlYUnBiMjQ2SURBdU5ITTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyaGxZV1JsY2l4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmJXRnBiaXhjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWm05dmRHVnlJSHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzRnSUdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWDJobFlXUmxjaXhjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWm05dmRHVnlJSHRjYmlBZ1pteGxlQzF6YUhKcGJtczZJREE3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgzUnBkR3hsTEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5dFlXbHVMRnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMTltYjI5MFpYSWdlMXh1SUNCd1lXUmthVzVuT2lBd0lERTJjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlgyaGxZV1JsY2l4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5ZmRHbDBiR1VnZTF4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzRnSUhvdGFXNWtaWGc2SURFN1hHNGdJRzFoY21kcGJqb2dNQ0JoZFhSdk8xeHVJQ0JvWldsbmFIUTZJRFV5Y0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBMU1uQjRPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOTBhWFJzWlNCN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVRad2VEdGNiaUFnWm05dWRDMTNaV2xuYUhRNklEUXdNRHRjYmlBZ2JXRnlaMmx1T2lBd0lERTJjSGc3WEc0Z0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc0Z0lHSnZjbVJsY2kxaWIzUjBiMjA2SURGd2VDQnpiMnhwWkNBalpHTmtabVUyTzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOWpiRzl6WlNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lISnBaMmgwT2lBeE1uQjRPMXh1SUNCM2FXUjBhRG9nTWpCd2VEdGNiaUFnYUdWcFoyaDBPaUF5TUhCNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01qQndlRHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUdadmJuUXRjMmw2WlRvZ01qQndlRHRjYmlBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmWTJ4dmMyVWdMbTkxZEd4cGJtVXRhV052YmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQXdPMXh1SUNCc1pXWjBPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgxOWpiRzl6WlRwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak5qWTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDE5dFlXbHVJSHRjYmlBZ1pteGxlRG9nTVR0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZYMlp2YjNSbGNpQjdYRzRnSUcxaGNtZHBiam9nTUNCaGRYUnZPMXh1SUNCMFpYaDBMV0ZzYVdkdU9pQnlhV2RvZER0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlmYjNabGNteGhlU0I3WEc0Z0lHTnZiblJsYm5RNklDY25PMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNGdJSG90YVc1a1pYZzZJREU3WEc0Z0lIUnZjRG9nTUR0Y2JpQWdiR1ZtZERvZ01EdGNiaUFnZDJsa2RHZzZJREV3TUNVN1hHNGdJR2hsYVdkb2REb2dNVEF3SlR0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmp0Y2JpQWdiM0JoWTJsMGVUb2dNQzR4TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDkwYVc1NUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBhVzU1SUh0Y2JpQWdkMmxrZEdnNklESTRNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRhVzVwTEZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4MGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5dGFXNXBJSHRjYmlBZ2QybGtkR2c2SURRNE1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5emJXRnNiQ3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlzZEhJdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd2dlMXh1SUNCM2FXUjBhRG9nTlRRd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmY25Sc0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWElzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKbFozVnNZWElnZTF4dUlDQjNhV1IwYURvZ05qZ3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMWxaR2wxYlN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXVmthWFZ0SUh0Y2JpQWdkMmxrZEdnNklEY3lNSEI0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSjBiQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNZWEpuWlN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlVnZTF4dUlDQjNhV1IwYURvZ09UWXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmNuUnNJSHRjYmlBZ1ltOXlaR1Z5TFd4bFpuUTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNKMGJDNXZkWFJzYVc1bExXUnlZWGRsY2w5MGFXNTVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJSEpwWjJoME9pQXRNamt3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzTG05MWRHeHBibVV0WkhKaGQyVnlYMjFwYm1rdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2NtbG5hSFE2SUMwME9UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5eWRHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZmMyMWhiR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNiaUFnY21sbmFIUTZJQzAxTlRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3dWIzVjBiR2x1WlMxa2NtRjNaWEpmY21WbmRXeGhjaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0J5YVdkb2REb2dMVFk1TUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl0WldScGRXMHViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdjbWxuYUhRNklDMDNNekJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3d1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2NtbG5hSFE2SUMwNU56QndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5c2RISWdlMXh1SUNCaWIzSmtaWEl0Y21sbmFIUTZJREZ3ZUNCemIyeHBaQ0FqWkdOa1ptVTJPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4MGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGFXNTVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMHlPVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZiV2x1YVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0TkRrd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNOdFlXeHNMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMDFOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXNkSEl1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQnNaV1owT2lBdE5qa3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlMbTkxZEd4cGJtVXRaSEpoZDJWeVgyMWxaR2wxYlM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCc1pXWjBPaUF0TnpNd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYkhSeUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxMbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hHNGdJR3hsWm5RNklDMDVOekJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0lzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMElIdGNiaUFnYkdWbWREb2dNRHRjYmlBZ2QybGtkR2c2SURFd01DVTdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDNScGJua3NYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYM1JwYm5rZ2UxeHVJQ0JvWldsbmFIUTZJREkwTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYM1IwWWk1dmRYUnNhVzVsTFdSeVlYZGxjbDl0YVc1cExGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgySjBkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXRhVzVwSUh0Y2JpQWdhR1ZwWjJoME9pQXpNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZjMjFoYkd3c1hHNHViM1YwYkdsdVpTMWtjbUYzWlhKZlluUjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgzTnRZV3hzSUh0Y2JpQWdhR1ZwWjJoME9pQXpOakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpeGNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZjbVZuZFd4aGNpQjdYRzRnSUdobGFXZG9kRG9nTkRBd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxbFpHbDFiU3hjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYldWa2FYVnRJSHRjYmlBZ2FHVnBaMmgwT2lBME5EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmJHRnlaMlVzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMExtOTFkR3hwYm1VdFpISmhkMlZ5WDJ4aGNtZGxJSHRjYmlBZ2FHVnBaMmgwT2lBME9EQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSWdlMXh1SUNCaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTJSalpHWmxOanRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5MGRHSXViM1YwYkdsdVpTMWtjbUYzWlhKZmRHbHVlUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0IwYjNBNklDMHlOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZiV2x1YVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCMGIzQTZJQzB6TXpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDkwZEdJdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdkRzl3T2lBdE16Y3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmRIUmlMbTkxZEd4cGJtVXRaSEpoZDJWeVgzSmxaM1ZzWVhJdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2RHOXdPaUF0TkRFd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxtOTFkR3hwYm1VdFpISmhkMlZ5WDIxbFpHbDFiUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0IwYjNBNklDMDBOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOTBkR0l1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ2RHOXdPaUF0TkRrd2NIZzdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmWW5SMElIdGNiaUFnZEc5d09pQnBibWwwYVdGc08xeHVJQ0JpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ0kyUmpaR1psTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZkR2x1ZVM1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh1SUNCaWIzUjBiMjA2SUMweU5UQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aWRIUXViM1YwYkdsdVpTMWtjbUYzWlhKZmJXbHVhUzV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHVJQ0JpYjNSMGIyMDZJQzB6TXpCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmYzIxaGJHd3ViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdZbTkwZEc5dE9pQXRNemN3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYM0psWjNWc1lYSXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2JpQWdZbTkwZEc5dE9pQXROREV3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwTG05MWRHeHBibVV0WkhKaGQyVnlYMjFsWkdsMWJTNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4dUlDQmliM1IwYjIwNklDMDBOVEJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWlkSFF1YjNWMGJHbHVaUzFrY21GM1pYSmZiR0Z5WjJVdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjYmlBZ1ltOTBkRzl0T2lBdE5Ea3djSGc3WEc1OVhHNHViM1YwYkdsdVpTMWtjbUYzWlhKZmIzQmxibVZrSUh0Y2JpQWdkbWx6YVdKcGJHbDBlVG9nZG1semFXSnNaVHRjYmlBZ2VpMXBibVJsZURvZ2RtRnlLQzB0YjNWMGJHbHVaUzE2U1c1a1pYZ3BPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDI5d1pXNWxaQzV2ZFhSc2FXNWxMV1J5WVhkbGNpQjdYRzRnSUhCdmMybDBhVzl1T2lCbWFYaGxaRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZjblJzSUh0Y2JpQWdjbWxuYUhRNklEQTdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjNCbGJtVmtMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHeGxablE2SURBN1hHNTlYRzR1YjNWMGJHbHVaUzFrY21GM1pYSmZiM0JsYm1Wa0xtOTFkR3hwYm1VdFpISmhkMlZ5WDNSMFlpQjdYRzRnSUhSdmNEb2dNRHRjYm4xY2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZZblIwSUh0Y2JpQWdZbTkwZEc5dE9pQXdPMXh1ZlZ4dUxtOTFkR3hwYm1VdFpISmhkMlZ5WDI5bVpuTmxkQzV2ZFhSc2FXNWxMV1J5WVhkbGNsOXlkR3dzWEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHaGxhV2RvZERvZ1kyRnNZeWd4TURBbElDMGdOR1Z0S1R0Y2JpQWdkRzl3T2lBMU1DVTdYRzRnSUhSeVlXNXpabTl5YlRvZ2RISmhibk5zWVhSbFdTZ3ROVEFsS1R0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOXZabVp6WlhRdWIzVjBiR2x1WlMxa2NtRjNaWEpmZEhSaUxGeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRZ2UxeHVJQ0IzYVdSMGFEb2dZMkZzWXlneE1EQWxJQzBnTkdWdEtUdGNiaUFnYkdWbWREb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmdvTFRVd0pTazdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDl5ZEd3Z2UxeHVJQ0J5YVdkb2REb2dNbVZ0TzF4dWZWeHVMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOW1abk5sZEM1dmRYUnNhVzVsTFdSeVlYZGxjbDl2Y0dWdVpXUXViM1YwYkdsdVpTMWtjbUYzWlhKZmJIUnlJSHRjYmlBZ2JHVm1kRG9nTW1WdE8xeHVmVnh1TG05MWRHeHBibVV0WkhKaGQyVnlYMjltWm5ObGRDNXZkWFJzYVc1bExXUnlZWGRsY2w5dmNHVnVaV1F1YjNWMGJHbHVaUzFrY21GM1pYSmZkSFJpSUh0Y2JpQWdkRzl3T2lBeVpXMDdYRzU5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWEpmYjJabWMyVjBMbTkxZEd4cGJtVXRaSEpoZDJWeVgyOXdaVzVsWkM1dmRYUnNhVzVsTFdSeVlYZGxjbDlpZEhRZ2UxeHVJQ0JpYjNSMGIyMDZJREpsYlR0Y2JuMWNiaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWhkWFJ2TG05MWRHeHBibVV0WkhKaGQyVnlYM0owYkN4Y2JpNXZkWFJzYVc1bExXUnlZWGRsY2w5aGRYUnZMbTkxZEd4cGJtVXRaSEpoZDJWeVgyeDBjaUI3WEc0Z0lHaGxhV2RvZERvZ1lYVjBienRjYmlBZ2JXRjRMV2hsYVdkb2REb2dZMkZzWXlneE1EQWxJQzBnTkdWdEtUdGNibjFjYmk1dmRYUnNhVzVsTFdSeVlYZGxjbDltZFd4c0lIdGNiaUFnY0dGa1pHbHVaem9nTUR0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpJSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhkcFpIUm9PaUIyWVhJb0xTMXZkWFJzYVc1bExXTm9ZWEIwWlhKekxYZHBaSFJvS1R0Y2JpQWdiM1psY21ac2IzYzZJR0YxZEc4N1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljeTF3WVhKbGJuUWdlMXh1SUNCMGNtRnVjMmwwYVc5dU9pQXdMak56SUdWaGMyVXRhVzR0YjNWME8xeHVmVnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDNScGRHeGxJSHRjYmlBZ2JXRnlaMmx1T2lBd0lERTJjSGc3WEc0Z0lHaGxhV2RvZERvZ05EQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTVRad2VEdGNiaUFnWW05eVpHVnlMV0p2ZEhSdmJUb2dNWEI0SUhOdmJHbGtJQ05rWTJSbVpUWTdYRzRnSUdadmJuUXRjMmw2WlRvZ01UWndlRHRjYmlBZ1ptOXVkQzEzWldsbmFIUTZJRFF3TUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5dFlXbHVJSHRjYmlBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZiR2x6ZEN4Y2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXpkV0pxWldOMExGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMmwwWlcwZ2UxeHVJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEc0Z0lIb3RhVzVrWlhnNklESTdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdjR0ZrWkdsdVp6b2dNRHRjYmlBZ2JHbHpkQzF6ZEhsc1pTMTBlWEJsT2lCdWIyNWxPMXh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZYMnhwYzNRZ2UxeHVJQ0J3WVdSa2FXNW5PaUF3TGpWbGJTQXdPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzTjFZbXBsWTNRZ2UxeHVJQ0J3WVdSa2FXNW5MV3hsWm5RNklERmxiVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXBkR1Z0SUh0Y2JpQWdiV0Z5WjJsdU9pQXdPMXh1SUNCc2FXNWxMV2hsYVdkb2REb2dNekJ3ZUR0Y2JpQWdabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzQnNZV05sYUc5c1pHVnlJSHRjYmlBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHVJQ0I2TFdsdVpHVjRPaUF4TzF4dUlDQjBiM0E2SURBN1hHNGdJR3hsWm5RNklEQTdYRzRnSUhkcFpIUm9PaUF4TURBbE8xeHVJQ0JvWldsbmFIUTZJRE13Y0hnN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tTjJZNFpqazdYRzRnSUdKdmNtUmxjaTFzWldaME9pQXljSGdnYzI5c2FXUWdJekExT0RrME1qdGNiaUFnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNHljenRjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTloYm1Ob2IzSWdlMXh1SUNCM2FHbDBaUzF6Y0dGalpUb2dibTkzY21Gd08xeHVJQ0IwWlhoMExXOTJaWEptYkc5M09pQmxiR3hwY0hOcGN6dGNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjYmlBZ1pHbHpjR3hoZVRvZ1lteHZZMnM3WEc0Z0lIQmhaR1JwYm1jNklEQWdNUzQxWlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9uWnBjMmwwWldRc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4dUlDQmpiMnh2Y2pvZ0l6VTFOVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOWhibU5vYjNJNmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0l6QTFPRGswTWp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTlqYjJSbElIdGNiaUFnY0dGa1pHbHVaeTF5YVdkb2REb2dNQzQxWlcwN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlvYVdkb2JHbG5hSFF1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTlmWVc1amFHOXlPbXhwYm1zc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW9hV2RvYkdsbmFIUXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9uWnBjMmwwWldRc1hHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW9hV2RvYkdsbmFIUXViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTXdOVGc1TkRJN1hHNGdJR1p2Ym5RdGQyVnBaMmgwT2lCaWIyeGtPMXh1ZlZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZmMzUnBZMnQ1TEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnZTF4dUlDQmthWE53YkdGNU9pQm1iR1Y0TzF4dUlDQm1iR1Y0TFhkeVlYQTZJRzV2ZDNKaGNEdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJR052YkhWdGJqdGNiaUFnZWkxcGJtUmxlRG9nZG1GeUtDMHRiM1YwYkdsdVpTMTZTVzVrWlhncE8xeHVJQ0IwYjNBNklEQTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOXpkR2xqYTNrZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgzUnBkR3hsTEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDNScGRHeGxMRnh1TG05MWRHeHBibVV0WTJoaGNIUmxjbk5mYzNScFkydDVJQzV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYMTl0WVdsdUxGeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZabWw0WldRZ0xtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlgyMWhhVzRnZTF4dUlDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZjM1JwWTJ0NUlDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOTBhWFJzWlN4Y2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgyWnBlR1ZrSUM1dmRYUnNhVzVsTFdOb1lYQjBaWEp6WDE5MGFYUnNaU0I3WEc0Z0lHWnNaWGd0YzJoeWFXNXJPaUF3TzF4dWZWeHVMbTkxZEd4cGJtVXRZMmhoY0hSbGNuTmZjM1JwWTJ0NUlDNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgxOXRZV2x1TEZ4dUxtOTFkR3hwYm1VdFkyaGhjSFJsY25OZlptbDRaV1FnTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDIxaGFXNGdlMXh1SUNCbWJHVjRPaUF4TzF4dUlDQnZkbVZ5Wm14dmR6b2dZWFYwYnp0Y2JuMWNiaTV2ZFhSc2FXNWxMV05vWVhCMFpYSnpYM04wYVdOcmVTQjdYRzRnSUhCdmMybDBhVzl1T2lCemRHbGphM2s3WEc0Z0lHMWhlQzFvWldsbmFIUTZJSFpoY2lndExXOTFkR3hwYm1VdGMzUnBZMnQ1TFdobGFXZG9kQ2s3WEc1OVhHNHViM1YwYkdsdVpTMWphR0Z3ZEdWeWMxOW1hWGhsWkNCN1hHNGdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEdGNiaUFnYldGNExXaGxhV2RvZERvZ01UQXdKVHRjYm4xY2JpNXZkWFJzYVc1bExXTm9ZWEIwWlhKelgyaHBaR1JsYmlCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzFqYUdGd2RHVnljMTltYjJ4a1pXUWdlMXh1SUNCM2FXUjBhRG9nTUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmk4cUtseHVJQ29nYldsNGFXNXpMbXhsYzNNZ0xTRGx0NlhsaGJmbGg3M21sYkJjYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpQXFJRU55WldGMFpXUWdRbms2SUZsaGIyaGhhWGhwWVc5Y2JpQXFJRlZ3WkdGMFpUb2dNakF5TWk0ekxqRXhYRzRnS2k5Y2JpOHFJRDA5UFQwOVBTRG1sb2Ztbkt6bm5JSG5sYVhsaDczbWxiQWdQVDA5UFQwOUlDb3ZYRzR2S2lBOVBUMDlQVDBnNVp5RzZLZVM1cUMzNWJ5UDZLNis1NzJ1NVllOTVwV3dJRDA5UFQwOVBTQXFMMXh1THlvZ1BUMDlQVDA5SU9tWXRPVzlzZWFndCtXOGoraXV2dWU5cnVXSHZlYVZzQ0E5UFQwOVBUMGdLaTljYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDlmWTJ4dmMyVWdlMXh1SUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh1ZlZ4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5MGFYUnNaU0I3WEc0Z0lHMWhjbWRwYmpvZ01DNDJOMlZ0SURBZ0lXbHRjRzl5ZEdGdWREdGNiaUFnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5SUNGcGJYQnZjblJoYm5RN1hHNGdJR1p2Ym5RdFptRnRhV3g1T2lBblRXbGpjbTl6YjJaMElGbGhTR1ZwSUZWSkp5d2dRWEpwWVd3c0lITmhibk10YzJWeWFXWTdYRzRnSUdadmJuUXRkMlZwWjJoME9pQnViM0p0WVd3N1hHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYRzU5WEc0dWIzVjBiR2x1WlMxeVpXRmtaWEpmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4dWZWeHVMbTkxZEd4cGJtVXRjbVZoWkdWeVgyaHBaR1JsYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDl6YVdKc2FXNW5JSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaU0FoYVcxd2IzSjBZVzUwTzF4dWZWeHVMbTkxZEd4cGJtVXRjbVZoWkdWeVgyaHBaR1JsYmk1dmRYUnNhVzVsTFhKbFlXUmxjbDl6YVdKc2FXNW5MbmR5WVhCd1pYSXVjRzl6ZENCN1hHNGdJR1JwYzNCc1lYazZJRzV2Ym1VN1hHNTlYRzR1YjNWMGJHbHVaUzF5WldGa1pYSXRMWEpsWVdScGJtY2dlMXh1SUNCa2FYTndiR0Y1T2lCaWJHOWphenRjYmlBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJSGRwWkhSb09pQXhNREFsTzF4dUlDQm9aV2xuYUhRNklERXdNQ1U3WEc0Z0lHMWhjbWRwYmpvZ01EdGNiaUFnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNiaUFnY0dGa1pHbHVaem9nTTJWdElEUmxiVHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1aanRjYmlBZ2MyTnliMnhzTFhScGJXVnNhVzVsTFc1aGJXVTZJQzB0VUhKdlozSmxjM05VYVcxbGJHbHVaVHRjYmlBZ2IzWmxjbVpzYjNjNklITmpjbTlzYkR0Y2JuMWNiaTV2ZFhSc2FXNWxMWEpsWVdSbGNpMHRjbVZoWkdsdVp5QXViM1YwYkdsdVpTMXlaV0ZrWlhKZlgzQnliMmR5WlhOeklIdGNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh1SUNCMGIzQTZJREE3WEc0Z0lHeGxablE2SURBN1hHNGdJSG90YVc1a1pYZzZJRE03WEc0Z0lHaGxhV2RvZERvZ05IQjRPMXh1SUNCM2FXUjBhRG9nTVRBd0pUdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpVd04yRm1aVHRjYmlBZ2MyTmhiR1U2SURBZ01UdGNiaUFnZEhKaGJuTm1iM0p0TFc5eWFXZHBiam9nYkdWbWREdGNiaUFnWVc1cGJXRjBhVzl1T2lCdmRYUnNhVzVsTFhKbFlXUmxjaTF3Y205bmNtVnpjeUJzYVc1bFlYSTdYRzRnSUdGdWFXMWhkR2x2YmkxMGFXMWxiR2x1WlRvZ0xTMVFjbTluY21WemMxUnBiV1ZzYVc1bE8xeHVmVnh1TG05MWRHeHBibVV0Y21WaFpHVnlMUzF5WldGa2FXNW5JQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZZMnh2YzJVZ2UxeHVJQ0JpYjNndGMyaGhaRzkzT2lBd0lEQWdObkI0SURGd2VDQWpaR05rWm1VMk8xeHVJQ0JrYVhOd2JHRjVPaUJpYkc5amF6dGNiaUFnY0c5emFYUnBiMjQ2SUdacGVHVmtPMXh1SUNCNkxXbHVaR1Y0T2lBek8xeHVJQ0IwYjNBNklEVXdKVHRjYmlBZ2NtbG5hSFE2SURJeWNIZzdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdkMmxrZEdnNklETTJjSGc3WEc0Z0lHaGxhV2RvZERvZ016WndlRHRjYmlBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTVRod2VEdGNiaUFnWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSTJSalpHWmxOanRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRE13Y0hnN1hHNGdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE8xeHVJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdYRzRnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0E0Y0hnZ0kyUmtaRHRjYmlBZ1kyOXNiM0k2SUNNNU9UazdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc1OVhHNHViM1YwYkdsdVpTMXlaV0ZrWlhJdExYSmxZV1JwYm1jZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5WDE5amJHOXpaVHBvYjNabGNpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNNd05UZzVOREk3WEc0Z0lHTnZiRzl5T2lBalptWm1PMXh1ZlZ4dUxtOTFkR3hwYm1VdGNtVmhaR1Z5TFMxeVpXRmthVzVuSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUJvTVN4Y2JpNXZkWFJzYVc1bExYSmxZV1JsY2kwdGNtVmhaR2x1WnlBdWIzVjBiR2x1WlMxeVpXRmtaWEpmWDNScGRHeGxJSHRjYmlBZ2JXRnlaMmx1T2lBd0xqWTNaVzBnTUNBaGFXMXdiM0owWVc1ME8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ01TNHpaVzA3WEc0Z0lHWnZiblF0YzJsNlpUb2dNeTQxWlcwN1hHNTlYRzVBYTJWNVpuSmhiV1Z6SUc5MWRHeHBibVV0Y21WaFpHVnlMWEJ5YjJkeVpYTnpJSHRjYmlBZ2RHOGdlMXh1SUNBZ0lITmpZV3hsT2lBeElERTdYRzRnSUgxY2JuMWNia0J0WldScFlTQW9iV0Y0TFhkcFpIUm9PaUEwT0RCd2VDa2dlMXh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl0TFhKbFlXUnBibWNnZTF4dUlDQWdJSEJoWkdScGJtYzZJREFnTVM0eU5XVnRPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZZMnh2YzJVZ2UxeHVJQ0FnSUhKcFoyaDBPaUF4TW5CNElDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ2IzQmhZMmwwZVRvZ01DNDRPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOWZkR2wwYkdVZ2UxeHVJQ0FnSUdadmJuUXRjMmw2WlRvZ01tVnRPMXh1SUNCOVhHNTlYRzVBYldWa2FXRWdjSEpwYm5RZ2UxeHVJQ0JvZEcxc0xGeHVJQ0JpYjJSNUlIdGNiaUFnSUNCb1pXbG5hSFE2SUdsdWFYUnBZV3dnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsTEZ4dUlDQXViM1YwYkdsdVpTMTBiMjlzWW1GeUlIdGNiaUFnSUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlJSHRjYmlBZ0lDQmthWE53YkdGNU9pQmliRzlqYXlBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlJR2d4TEZ4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhKZlgzUnBkR3hsSUh0Y2JpQWdJQ0J0WVhKbmFXNDZJREV6TGpSd2RDQXdJREk0Y0hRZ0lXbHRjRzl5ZEdGdWREdGNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJZ0lXbHRjRzl5ZEdGdWREdGNiaUFnSUNCbWIyNTBMWE5wZW1VNklESXdjSFFnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdmVnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl1YjNWMGJHbHVaUzF5WldGa1pYSXRMWEpsWVdScGJtY2dlMXh1SUNBZ0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpTQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lHaGxhV2RvZERvZ1lYVjBieUFoYVcxd2IzSjBZVzUwTzF4dUlDQWdJSEJoWkdScGJtYzZJREFnSVdsdGNHOXlkR0Z1ZER0Y2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlMbTkxZEd4cGJtVXRjbVZoWkdWeUlHZ3hMRnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl1YjNWMGJHbHVaUzF5WldGa1pYSmZYM1JwZEd4bElIdGNiaUFnSUNCdFlYSm5hVzQ2SURFekxqUndkQ0F3SURJNGNIUWdJV2x0Y0c5eWRHRnVkRHRjYmlBZ0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSWdJV2x0Y0c5eWRHRnVkRHRjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREl3Y0hRZ0lXbHRjRzl5ZEdGdWREdGNiaUFnZlZ4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhJdWIzVjBiR2x1WlMxeVpXRmtaWEpmWDJOc2IzTmxMRnh1SUNBdWIzVjBiR2x1WlMxeVpXRmtaWEl1YjNWMGJHbHVaUzF5WldGa1pYSmZYM0J5YjJkeVpYTnpJSHRjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hHNGdJSDFjYmlBZ0xtOTFkR3hwYm1VdGNtVmhaR1Z5SUhCeVpTQjdYRzRnSUNBZ2NHRmtaR2x1WnpvZ01XVnRJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lDQWdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJMlJrWkNBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUdKdmNtUmxjaTF5WVdScGRYTTZJRFJ3ZUNBaGFXMXdiM0owWVc1ME8xeHVJQ0I5WEc0Z0lDNXZkWFJzYVc1bExYSmxZV1JsY2lCd2NtVXNYRzRnSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUJqYjJSbElIdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalptWm1JQ0ZwYlhCdmNuUmhiblE3WEc0Z0lIMWNiaUFnTG05MWRHeHBibVV0Y21WaFpHVnlJSFJoWW14bExGeHVJQ0F1YjNWMGJHbHVaUzF5WldGa1pYSWdhVzFuTEZ4dUlDQXViM1YwYkdsdVpTMXlaV0ZrWlhJZ2MzWm5JSHRjYmlBZ0lDQmljbVZoYXkxcGJuTnBaR1U2SUdGMmIybGtPMXh1SUNCOVhHNGdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNsOXphV0pzYVc1bklIdGNiaUFnSUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEc0Z0lIMWNibjFjYmk4cUlEMDlQVDA5UFQwOVBUMGdZblYwZEc5dWN5NTBhR1Z0WlNBdElPYU1pZW1TcnVXdnZPaUlxdWFndCtXOGp5QTlQVDA5UFQwOVBUMDlJQ292WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5SUh0Y2JpQWdjRzl6YVhScGIyNDZJR1pwZUdWa08xeHVJQ0I2TFdsdVpHVjRPaUE1T1RrNU9UdGNiaUFnYldGeVoybHVPaUF3TzF4dUlDQjBjbUZ1YzJsMGFXOXVMV1IxY21GMGFXOXVPaUF3TGpOek8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZlluVjBkRzl1SUh0Y2JpQWdZbTk0TFhOb1lXUnZkem9nTUNBd0lEWndlQ0F4Y0hnZ0kyUmpaR1psTmp0Y2JpQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh1SUNCNkxXbHVaR1Y0T2lBeE8xeHVJQ0J0WVhKbmFXNDZJREV3Y0hnN1hHNGdJSGRwWkhSb09pQXpObkI0TzF4dUlDQm9aV2xuYUhRNklETTJjSGc3WEc0Z0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTmtZMlJtWlRZN1hHNGdJR0p2Y21SbGNpMXlZV1JwZFhNNklETndlRHRjYmlBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1aanRjYmlBZ1kzVnljMjl5T2lCd2IybHVkR1Z5TzF4dUlDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRzRnSUdOdmJHOXlPaUFqT1RrNU8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZlluVjBkRzl1T21odmRtVnlJSHRjYmlBZ1kyOXNiM0k2SUNNd05UZzVOREk3WEc0Z0lHSnZjbVJsY2kxamIyeHZjam9nSXpBMU9EazBNanRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2Ymk1b2FXUmxJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgyRnVZMmh2Y2pwc2FXNXJMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlmWVc1amFHOXlPblpwYzJsMFpXUXNYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJems1T1R0Y2JpQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsTzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZVzVqYUc5eU9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTXdOVGc1TkRJN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlwWTI5dUlIdGNiaUFnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4dUlDQjZMV2x1WkdWNE9pQXlPMXh1SUNCMGIzQTZJRFV3SlR0Y2JpQWdiR1ZtZERvZ05UQWxPMXh1SUNCM2FXUjBhRG9nTWpCd2VEdGNiaUFnYUdWcFoyaDBPaUF5TUhCNE8xeHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlNndE5UQWxMQ0F0TlRBbEtUdGNiaUFnWm1sc2JEb2dZM1Z5Y21WdWRHTnZiRzl5TzF4dUlDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDloWTNScGRtVXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0Z2UxeHVJQ0JqYjJ4dmNqb2dJMlptWmp0Y2JpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJekExT0RrME1qdGNiaUFnWW05eVpHVnlMV052Ykc5eU9pQWpNRFU0T1RReU8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDloWTNScGRtVXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0NmFHOTJaWElnZTF4dUlDQmpiMnh2Y2pvZ0kyWm1aanRjYm4xY2JpNXZkWFJzYVc1bExYUnZiMnhpWVhKZllXTjBhWFpsSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBzYVc1ckxGeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWhZM1JwZG1VZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T25acGMybDBaV1FzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJGamRHbDJaU0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZhRzkyWlhJZ2UxeHVJQ0JqYjJ4dmNqb2dJMlptWmp0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZjbTkxYm1SbFpDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2YmlCN1hHNGdJR0p2Y21SbGNpMXlZV1JwZFhNNklERTRjSGc3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZllXNWphRzl5T214cGJtc3NYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMlJwYzJGaWJHVmtJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcHNhVzVyTEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanAyYVhOcGRHVmtMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQ0F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTloYm1Ob2IzSTZkbWx6YVhSbFpDeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmFHOTJaWElzWEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJScGMyRmliR1ZrSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjanBvYjNabGNpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0c1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2YmlCN1hHNGdJR04xY25OdmNqb2dibTkwTFdGc2JHOTNaV1E3WEc0Z0lHTnZiRzl5T2lBak9UazVPMXh1SUNCaWIzSmtaWEl0WTI5c2IzSTZJQ001T1RrN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMlJwYzJGaWJHVmtMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZVzVqYUc5eU9teHBibXM2YUc5MlpYSXNYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMlJwYzJGaWJHVmtJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcHNhVzVyT21odmRtVnlMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlrYVhOaFlteGxaQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcDJhWE5wZEdWa09taHZkbVZ5TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5a2FYTmhZbXhsWkNBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aGJtTm9iM0k2ZG1semFYUmxaRHBvYjNabGNpeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZaR2x6WVdKc1pXUXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWhibU5vYjNJNmFHOTJaWEk2YUc5MlpYSXNYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMlJwYzJGaWJHVmtJQzV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZYMkZ1WTJodmNqcG9iM1psY2pwb2IzWmxjaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWkdsellXSnNaV1F1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMTlpZFhSMGIyNDZhRzkyWlhJc1hHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgyUnBjMkZpYkdWa0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2Ympwb2IzWmxjaUI3WEc0Z0lHTnZiRzl5T2lBak9UazVPMXh1SUNCaWIzSmtaWEl0WTI5c2IzSTZJQ001T1RrN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMlJwYzJGaWJHVmtMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUxGeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWthWE5oWW14bFpDQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWmpWbU5XWTFPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5MGRHSXNYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMkowZENCN1hHNGdJR3hsWm5RNklEVXdKVHRjYmlBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVllLQzAxTUNVcE8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDkwZEdJZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZlluVjBkRzl1TEZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5aWRIUWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNiaUFnWkdsemNHeGhlVG9nYVc1c2FXNWxMV0pzYjJOck8xeHVmVnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDkwZEdJZ2UxeHVJQ0IwYjNBNklERXljSGc3WEc1OVhHNHViM1YwYkdsdVpTMTBiMjlzWW1GeVgzUjBZaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZhR2xrWkdWdUlIdGNiaUFnZEc5d09pQXROVFp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZZblIwSUh0Y2JpQWdZbTkwZEc5dE9pQXhNbkI0TzF4dWZWeHVMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWlkSFF1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMmhwWkdSbGJpQjdYRzRnSUdKdmRIUnZiVG9nTFRVMmNIZzdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNKMGJDeGNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZiSFJ5SUh0Y2JpQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh1SUNCM2FXUjBhRG9nTlRad2VEdGNibjFjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmY25Sc0lIdGNiaUFnZEc5d09pQTFNQ1U3WEc0Z0lISnBaMmgwT2lBeE1uQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGRHOXZiR0poY2w5eWRHd3ViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYmlCN1hHNGdJSEpwWjJoME9pQXRPRFp3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZiSFJ5SUh0Y2JpQWdkRzl3T2lBMU1DVTdYRzRnSUd4bFpuUTZJREV5Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMngwY2k1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVJSHRjYmlBZ2JHVm1kRG9nTFRnMmNIZzdYRzU5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDNSMFlpQXViM1YwYkdsdVpTMTBiMjlzWW1GeVgxOWlkWFIwYjI0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDJocFpHUmxiaXhjYmk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmY25Sc0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2Ymk1dmRYUnNhVzVsTFhSdmIyeGlZWEpmYUdsa1pHVnVMRnh1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlpZEhRZ0xtOTFkR3hwYm1VdGRHOXZiR0poY2w5ZlluVjBkRzl1TG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNHNYRzR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMngwY2lBdWIzVjBiR2x1WlMxMGIyOXNZbUZ5WDE5aWRYUjBiMjR1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMmhwWkdSbGJpQjdYRzRnSUdScGMzQnNZWGs2SUc1dmJtVTdYRzU5WEc0dktpcGNiaUFxSUdadmJuUXViR1Z6Y3lBdElPV3RsK1M5aytlYnVPV0ZzK2FndCtXOGoxeHVJQ29nUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1SUNvZ1EzSmxZWFJsWkNCQ2VUb2dXV0Z2YUdGcGVHbGhiMXh1SUNvZ1ZYQmtZWFJsT2lBeU1ESXlMak11TVRaY2JpQXFMMXh1THlvZ1BUMDlQVDA5SU9XdGwrUzlreUE5UFQwOVBUMGdLaTljYmk4cUlEMDlQVDA5UFNEbHJaZnBoNDBnUFQwOVBUMDlJQ292WEc0dktpQTlQVDA5UFQwZzVhMlg1WSszSUQwOVBUMDlQU0FxTDF4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlNCN1hHNGdJR0p2Y21SbGNpMXlZV1JwZFhNNklETndlRHRjYmlBZ1ltOTRMWE5vWVdSdmR6b2dNQ0F3SURad2VDQXhjSGdnSTJSalpHWmxOanRjYmlBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4dUlDQjZMV2x1WkdWNE9pQTVPVGs1TzF4dUlDQnZjR0ZqYVhSNU9pQXdMakU3WEc0Z0lIUnZjRG9nTFRVd2NIZzdYRzRnSUd4bFpuUTZJRFV3SlR0Y2JpQWdhR1ZwWjJoME9pQTBNSEI0TzF4dUlDQnRZWEpuYVc0NklEQTdYRzRnSUhCaFpHUnBibWM2SURBZ05UQndlRHRjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hHNGdJR1p2Ym5RdGMybDZaVG9nTVROd2VEdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTJabVpqdGNiaUFnWTI5c2IzSTZJQ00yTmpZN1hHNGdJSFJ5WVc1emFYUnBiMjQ2SUdGc2JDQXdMalZ6SUdWaGMyVXRhVzR0YjNWME8xeHVJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZnb0xUVXdKU2s3WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlqYjI1MFpXNTBJSHRjYmlBZ2QyaHBkR1V0YzNCaFkyVTZJRzV2ZDNKaGNEdGNiaUFnZEdWNGRDMXZkbVZ5Wm14dmR6b2daV3hzYVhCemFYTTdYRzRnSUcxaGNtZHBiam9nTUR0Y2JpQWdiV0Y0TFhkcFpIUm9PaUEzTURCd2VEdGNiaUFnYUdWcFoyaDBPaUEwTUhCNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ05EQndlRHRjYmlBZ1ptOXVkQzF6YVhwbE9pQXhNM0I0TzF4dUlDQmpiMnh2Y2pvZ0l6WTJOanRjYmlBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMk5zYjNObExGeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hHNGdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjYmlBZ2VpMXBibVJsZURvZ01qdGNiaUFnZEc5d09pQXdPMXh1SUNCM2FXUjBhRG9nTkRCd2VEdGNiaUFnYUdWcFoyaDBPaUEwTUhCNE8xeHVJQ0JzYVc1bExXaGxhV2RvZERvZ05EQndlRHRjYmlBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeHVJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHeGxablE2SURBN1hHNGdJR052Ykc5eU9pQWpabVptTzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlBdWIzVjBiR2x1WlMxcFkyOXVJSHRjYmlBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHVJQ0I2TFdsdVpHVjRPaUF5TzF4dUlDQjBiM0E2SURVd0pUdGNiaUFnYkdWbWREb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaU2d0TlRBbExDQXROVEFsS1R0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMk5zYjNObElIdGNiaUFnY21sbmFIUTZJREE3WEc0Z0lHTjFjbk52Y2pvZ2NHOXBiblJsY2p0Y2JpQWdZMjlzYjNJNklDTTVPVGs3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgxOWpiRzl6WlNBdWIzVjBiR2x1WlMxcFkyOXVJSHRjYmlBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHVJQ0I2TFdsdVpHVjRPaUF5TzF4dUlDQjBiM0E2SURVd0pUdGNiaUFnYkdWbWREb2dOVEFsTzF4dUlDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaU2d0TlRBbExDQXROVEFsS1R0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMk5zYjNObE9taHZkbVZ5SUh0Y2JpQWdZMjlzYjNJNklDTTJOalk3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgybHVabThnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYRzRnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNNMU1EZGhabVU3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzZGhjbTVwYm1jZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1aams1TURFN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM04xWTJObGMzTWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ013TlRnNU5ESTdYRzU5WEc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJWeWNtOXlJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHVJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqWm1ZMVpEVmtPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5d2JHRnBiaUI3WEc0Z0lHMXBiaTEzYVdSMGFEb2dNVGt3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTlRCd2VDQXdJREUxY0hnN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM0JzWVdsdUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5cGJtWnZJSHRjYmlBZ1ltOXlaR1Z5TFd4bFpuUTZJRFZ3ZUNCemIyeHBaQ0FqTlRBM1lXWmxPMXh1SUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalpXTm1PR1ptTzF4dWZWeHVMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOXdiR0ZwYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmZDJGeWJtbHVaeUI3WEc0Z0lHSnZjbVJsY2kxc1pXWjBPaUExY0hnZ2MyOXNhV1FnSTJabU9Ua3dNVHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1abUpsTmp0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjR3hoYVc0dWIzVjBiR2x1WlMxdFpYTnpZV2RsWDNOMVkyTmxjM01nZTF4dUlDQmliM0prWlhJdGJHVm1kRG9nTlhCNElITnZiR2xrSUNNd05UZzVOREk3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTmxNV1kyWldJN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM0JzWVdsdUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5bGNuSnZjaUI3WEc0Z0lHSnZjbVJsY2kxc1pXWjBPaUExY0hnZ2MyOXNhV1FnSTJabU5XUTFaRHRjYmlBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWm1aakZtTUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZjR3hoYVc0Z0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lIZHBaSFJvT2lBd08xeHVJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpQXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUM1dmRYUnNhVzVsTFdsamIyNGdlMXh1SUNCa2FYTndiR0Y1T2lCdWIyNWxPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5c2FXZG9kQ0I3WEc0Z0lHMXBiaTEzYVdSMGFEb2dNVGd3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTkRCd2VEdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmYkdsbmFIUXViM1YwYkdsdVpTMXRaWE56WVdkbFgybHVabThnTG05MWRHeHBibVV0YldWemMyRm5aVjlmYVdOdmJpQjdYRzRnSUdOdmJHOXlPaUFqTlRBM1lXWmxPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5c2FXZG9kQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZkMkZ5Ym1sdVp5QXViM1YwYkdsdVpTMXRaWE56WVdkbFgxOXBZMjl1SUh0Y2JpQWdZMjlzYjNJNklDTm1aams1TURFN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMnhwWjJoMExtOTFkR3hwYm1VdGJXVnpjMkZuWlY5emRXTmpaWE56SUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh1SUNCamIyeHZjam9nSXpBMU9EazBNanRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZmJHbG5hSFF1YjNWMGJHbHVaUzF0WlhOellXZGxYMlZ5Y205eUlDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4dUlDQmpiMnh2Y2pvZ0kyWm1OV1ExWkR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZiR2xuYUhRZ0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5ZmFXTnZiaUI3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzSnZkVzVrSUh0Y2JpQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ01qQndlRHRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZmNtOTFibVF1YjNWMGJHbHVaUzF0WlhOellXZGxYMlJsWm1GMWJIUWdlMXh1SUNCdGFXNHRkMmxrZEdnNklERTRNSEI0TzF4dUlDQndZV1JrYVc1bk9pQXdJRFF3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYM0p2ZFc1a0xtOTFkR3hwYm1VdGJXVnpjMkZuWlY5a1pXWmhkV3gwSUM1dmRYUnNhVzVsTFcxbGMzTmhaMlZmWDJsamIyNGdlMXh1SUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF4TUhCNE8xeHVJQ0IwYjNBNklERXdjSGc3WEc0Z0lHeGxablE2SURFd2NIZzdYRzRnSUhkcFpIUm9PaUF5TUhCNE8xeHVJQ0JvWldsbmFIUTZJREl3Y0hnN1hHNGdJR3hwYm1VdGFHVnBaMmgwT2lBeU1IQjRPMXh1ZlZ4dUxtOTFkR3hwYm1VdGJXVnpjMkZuWlY5eWIzVnVaQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZaR1ZtWVhWc2RDNXZkWFJzYVc1bExXMWxjM05oWjJWZlpuVnNiQzEzYVdSMGFDQjdYRzRnSUcxcGJpMTNhV1IwYURvZ01qQXdjSGc3WEc0Z0lIQmhaR1JwYm1jNklEQWdNakJ3ZUNBd0lEUXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzSnZkVzVrTG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpQjdYRzRnSUcxcGJpMTNhV1IwYURvZ01UazFjSGc3WEc0Z0lIQmhaR1JwYm1jNklEQWdOREJ3ZUNBd0lESXdjSGc3WEc1OVhHNHViM1YwYkdsdVpTMXRaWE56WVdkbFgzSnZkVzVrTG05MWRHeHBibVV0YldWemMyRm5aVjl3YkdGcGJpNXZkWFJzYVc1bExXMWxjM05oWjJWZlpuVnNiQzEzYVdSMGFDQjdYRzRnSUcxcGJpMTNhV1IwYURvZ01qRTFjSGc3WEc0Z0lIQmhaR1JwYm1jNklEQWdNakJ3ZUR0Y2JuMWNiaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZablZzYkMxM2FXUjBhQ0I3WEc0Z0lHMXBiaTEzYVdSMGFEb2dNakF3Y0hnN1hHNGdJSEJoWkdScGJtYzZJREFnTVRCd2VDQXdJRFV3Y0hnN1hHNTlYRzR1YjNWMGJHbHVaUzF0WlhOellXZGxYMloxYkd3dGQybGtkR2d1YjNWMGJHbHVaUzF0WlhOellXZGxYM0JzWVdsdUlIdGNiaUFnYldsdUxYZHBaSFJvT2lBeU16QndlRHRjYmlBZ2NHRmtaR2x1WnpvZ01DQXhNSEI0SURBZ01UVndlRHRjYm4xY2JpNXZkWFJzYVc1bExXMWxjM05oWjJWZlpuVnNiQzEzYVdSMGFDNXZkWFJzYVc1bExXMWxjM05oWjJWZmJHbG5hSFFnZTF4dUlDQnRhVzR0ZDJsa2RHZzZJREl4TUhCNE8xeHVJQ0J3WVdSa2FXNW5PaUF3SURFd2NIZ2dNQ0EwTUhCNE8xeHVmVnh1TG05MWRHeHBibVV0YldWemMyRm5aVjkyYVhOcFlteGxJSHRjYmlBZ2IzQmhZMmwwZVRvZ01UdGNibjFjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlZmYUdsa1pHVnVJSHRjYmlBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JpOHFJRDA5UFQwOUlGTmpjbTlzYkdKaGNpQTlQVDA5UFNBcUwxeHVPam90ZDJWaWEybDBMWE5qY205c2JHSmhjaUI3WEc0Z0lIZHBaSFJvT2lBM2NIZzdYRzRnSUdobGFXZG9kRG9nTjNCNE8xeHVJQ0F0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEVndlRHRjYm4xY2JqbzZMWGRsWW10cGRDMXpZM0p2Ykd4aVlYSXRkSEpoWTJzdGNHbGxZMlVnZTF4dUlDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEdGNibjFjYmpvNkxYZGxZbXRwZEMxelkzSnZiR3hpWVhJdGRHaDFiV0k2ZG1WeWRHbGpZV3dnZTF4dUlDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQnlaMkpoS0RBc0lEQXNJREFzSURBdU1qVXBPMXh1SUNBdGQyVmlhMmwwTFdKdmNtUmxjaTF5WVdScGRYTTZJRFZ3ZUR0Y2JuMWNiam82TFhkbFltdHBkQzF6WTNKdmJHeGlZWEl0ZEdoMWJXSTZhRzl5YVhwdmJuUmhiQ0I3WEc0Z0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eU5TazdYRzRnSUMxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0TzF4dWZWeHVPam90ZDJWaWEybDBMWE5qY205c2JHSmhjaTEwYUhWdFlqcG9iM1psY2lCN1hHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHpOU2s3WEc1OVhHNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlPbWh2ZG1WeUlIdGNiaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nY21kaVlTZ3dMQ0F3TENBd0xDQXdMakUxS1R0Y2JuMWNiaUlzSWk4cUlEMDlQVDA5UFQwOVBUMGdhV052Ymk1MGFHVnRaU0F0SUhOMlp5RGxtNzdtb0lmbm1vVG1vTGZsdkk4Z1BUMDlQVDA5UFQwOVBTQXFMMXh5WEc0dWIzVjBiR2x1WlMxcFkyOXVJSHRjY2x4dUlDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYSEpjYmlBZ2VpMXBibVJsZURvZ01UdGNjbHh1SUNCa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdYSEpjYmlBZ2RtVnlkR2xqWVd3dFlXeHBaMjQ2SUcxcFpHUnNaVHRjY2x4dUlDQjNhV1IwYURvZ01XVnRPMXh5WEc0Z0lHaGxhV2RvZERvZ01XVnRPMXh5WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibHh5WEc0Z0lDWmZYM04yWnlCN1hISmNiaUFnSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hISmNiaUFnSUNCNkxXbHVaR1Y0T2lBeU8xeHlYRzRnSUNBZ2RHOXdPaUExTUNVN1hISmNiaUFnSUNCc1pXWjBPaUExTUNVN1hISmNiaUFnSUNCM2FXUjBhRG9nTVdWdE8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBeFpXMDdYSEpjYmlBZ0lDQm1hV3hzT2lCamRYSnlaVzUwWTI5c2IzSTdYSEpjYmlBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaU2d0TlRBbExDQXROVEFsS1R0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJocFpHUmxiaUI3WEhKY2JpQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzRnSUgxY2NseHVmVnh5WEc0aUxDSkFhVzF3YjNKMElDZGpiMnh2Y25Nbk8xeHlYRzVjY2x4dUxtOTFkR3hwYm1VdGFHVmhaR2x1WnlCN1hISmNiaUFnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4eVhHNGdJSG90YVc1a1pYZzZJREU3WEhKY2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdKbDlmWVc1amFHOXlJSHRjY2x4dUlDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNibHh5WEc0Z0lDQWdKanBzYVc1ckxGeHlYRzRnSUNBZ0pqcDJhWE5wZEdWa0xGeHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQVptOTFjblJvWDNSbGVIUmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lIUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2JtOXVaVHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCd2NtbHRZWEo1WDJOdmJHOXlPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKanBvYjNabGNpQjdYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMW9aV0ZrYVc1blgxOWhibU5vYjNJZ2UxeHlYRzRnSUNBZ0lDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNOMFlYSjBJSHRjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0J2ZG1WeVpteHZkem9nZG1semFXSnNaVHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBdWIzVjBiR2x1WlMxb1pXRmthVzVuWDE5aGJtTm9iM0lnZTF4eVhHNGdJQ0FnSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN1hISmNiaUFnSUNBZ0lIb3RhVzVrWlhnNklESTdYSEpjYmlBZ0lDQWdJSFJ2Y0RvZ05UQWxPMXh5WEc0Z0lDQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb0xUVXdKU2s3WEhKY2JpQWdJQ0FnSUd4bFpuUTZJQzB4WlcwN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNTlYSEpjYmlJc0lrQnBiWEJ2Y25RZ0ozWmhjbWxoWW14bGN5YzdYSEpjYmtCcGJYQnZjblFnSjJOdmJHOXljeWM3WEhKY2JrQnBiWEJ2Y25RZ0ozTm9ZV1J2ZHljN1hISmNibHh5WEc0dWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQjZMV2x1WkdWNE9pQXRNVHRjY2x4dUlDQjBiM0E2SURBN1hISmNiaUFnYkdWbWREb2dNRHRjY2x4dUlDQnRZWEpuYVc0NklEQTdYSEpjYmlBZ2QybGtkR2c2SURFd01DVTdYSEpjYmlBZ2FHVnBaMmgwT2lBeE1EQWxPMXh5WEc0Z0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEhKY2JpQWdkbWx6YVdKcGJHbDBlVG9nYUdsa1pHVnVPMXh5WEc0Z0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNibHh5WEc0Z0lDWmZYMjF2WkdGc0lIdGNjbHh1SUNBZ0lDNXphR0ZrYjNkZmJHbG5hSFJmY21WbmRXeGhjaWdwTzF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nWm14bGVEdGNjbHh1SUNBZ0lHWnNaWGd0WkdseVpXTjBhVzl1T2lCamIyeDFiVzQ3WEhKY2JpQWdJQ0JtYkdWNExYZHlZWEE2SUc1dmQzSmhjRHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREl4TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUF4TURBbE8xeHlYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnZEhKaGJuTnBkR2x2Ymkxa2RYSmhkR2x2YmpvZ01DNDBjenRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlvWldGa1pYSXNYSEpjYmlBZ0psOWZiV0ZwYml4Y2NseHVJQ0FtWDE5bWIyOTBaWElnZTF4eVhHNGdJQ0FnZDJsa2RHZzZJREV3TUNVN1hISmNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYUdWaFpHVnlMRnh5WEc0Z0lDWmZYMlp2YjNSbGNpQjdYSEpjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgzUnBkR3hsTEZ4eVhHNGdJQ1pmWDIxaGFXNHNYSEpjYmlBZ0psOWZabTl2ZEdWeUlIdGNjbHh1SUNBZ0lIQmhaR1JwYm1jNklEQWdNVFp3ZUR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyaGxZV1JsY2l4Y2NseHVJQ0FtWDE5MGFYUnNaU0I3WEhKY2JpQWdJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3WEhKY2JpQWdJQ0I2TFdsdVpHVjRPaUF4TzF4eVhHNGdJQ0FnYldGeVoybHVPaUF3SUdGMWRHODdYSEpjYmlBZ0lDQm9aV2xuYUhRNklEVXljSGc3WEhKY2JpQWdJQ0JzYVc1bExXaGxhV2RvZERvZ05USndlRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTkwYVhSc1pTQjdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREUyY0hnN1hISmNiaUFnSUNCbWIyNTBMWGRsYVdkb2REb2dOREF3TzF4eVhHNGdJQ0FnYldGeVoybHVPaUF3SURFMmNIZzdYSEpjYmlBZ0lDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4eVhHNGdJQ0FnWW05eVpHVnlMV0p2ZEhSdmJUb2dNWEI0SUhOdmJHbGtJRUJ3Y21sdFlYSjVYMkp2Y21SbGNsOWpiMnh2Y2p0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgyTnNiM05sSUh0Y2NseHVJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SURJN1hISmNiaUFnSUNCMGIzQTZJRFV3SlR0Y2NseHVJQ0FnSUhKcFoyaDBPaUF4TW5CNE8xeHlYRzRnSUNBZ2QybGtkR2c2SURJd2NIZzdYSEpjYmlBZ0lDQm9aV2xuYUhRNklESXdjSGc3WEhKY2JpQWdJQ0JzYVc1bExXaGxhV2RvZERvZ01qQndlRHRjY2x4dUlDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJREl3Y0hnN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEhKY2JpQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb0xUVXdKU2s3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc1Y2NseHVJQ0FnSUM1dmRYUnNhVzVsTFdsamIyNGdlMXh5WEc0Z0lDQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3WEhKY2JpQWdJQ0FnSUhvdGFXNWtaWGc2SURJN1hISmNiaUFnSUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUNBZ2JHVm1kRG9nTUR0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lDQWdZMjlzYjNJNklFQjBhR2x5WkY5MFpYaDBYMk52Ykc5eU8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZiV0ZwYmlCN1hISmNiaUFnSUNCbWJHVjRPaUF4TzF4eVhHNGdJQ0FnYjNabGNtWnNiM2M2SUdGMWRHODdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTltYjI5MFpYSWdlMXh5WEc0Z0lDQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQnlhV2RvZER0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5dmRtVnliR0Y1SUh0Y2NseHVJQ0FnSUdOdmJuUmxiblE2SUNjbk8xeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ01UdGNjbHh1SUNBZ0lIUnZjRG9nTUR0Y2NseHVJQ0FnSUd4bFpuUTZJREE3WEhKY2JpQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTVRBd0pUdGNjbHh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0FnSUc5d1lXTnBkSGs2SURBdU1UdGNjbHh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzSjBiQ3hjY2x4dUlDQW1YMngwY2lCN1hISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5SUh0Y2NseHVJQ0FnSUNBZ0psOTBhVzU1SUh0Y2NseHVJQ0FnSUNBZ0lDQjNhV1IwYURvZ01qZ3djSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYldsdWFTQjdYSEpjYmlBZ0lDQWdJQ0FnZDJsa2RHZzZJRFE0TUhCNE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzTnRZV3hzSUh0Y2NseHVJQ0FnSUNBZ0lDQjNhV1IwYURvZ05UUXdjSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmY21WbmRXeGhjaUI3WEhKY2JpQWdJQ0FnSUNBZ2QybGtkR2c2SURZNE1IQjRPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFsWkdsMWJTQjdYSEpjYmlBZ0lDQWdJQ0FnZDJsa2RHZzZJRGN5TUhCNE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyeGhjbWRsSUh0Y2NseHVJQ0FnSUNBZ0lDQjNhV1IwYURvZ09UWXdjSGc3WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmNuUnNJSHRjY2x4dUlDQWdJR0p2Y21SbGNpMXNaV1owT2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJQ0FnSUNBbVgzUnBibmtnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSEpwWjJoME9pQXRNamt3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMjFwYm1rZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUhKcFoyaDBPaUF0TkRrd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNOdFlXeHNJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5WDJOc2IzTmxaQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQnlhV2RvZERvZ0xUVTFNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXlaV2QxYkdGeUlIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCeWFXZG9kRG9nTFRZNU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5dFpXUnBkVzBnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJSEpwWjJoME9pQXROek13Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMnhoY21kbElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCeWFXZG9kRG9nTFRrM01IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOXNkSElnZTF4eVhHNGdJQ0FnWW05eVpHVnlMWEpwWjJoME9pQXhjSGdnYzI5c2FXUWdRSEJ5YVcxaGNubGZZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YM1JwYm5rZ2UxeHlYRzRnSUNBZ0lDQWdJQ1l1YjNWMGJHbHVaUzFrY21GM1pYSmZZMnh2YzJWa0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUd4bFpuUTZJQzB5T1RCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYldsdWFTQjdYSEpjYmlBZ0lDQWdJQ0FnSmk1dmRYUnNhVzVsTFdSeVlYZGxjbDlqYkc5elpXUWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ2JHVm1kRG9nTFRRNU1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5emJXRnNiQ0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdiR1ZtZERvZ0xUVTFNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXlaV2QxYkdGeUlIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCc1pXWjBPaUF0Tmprd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxbFpHbDFiU0I3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdiR1ZtZERvZ0xUY3pNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXNZWEpuWlNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYkdWbWREb2dMVGszTUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5MGRHSXNYSEpjYmlBZ0psOWlkSFFnZTF4eVhHNGdJQ0FnYkdWbWREb2dNRHRjY2x4dUlDQWdJSGRwWkhSb09pQXhNREFsTzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhJZ2UxeHlYRzRnSUNBZ0lDQW1YM1JwYm5rZ2UxeHlYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dNalF3Y0hnN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmJXbHVhU0I3WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lBek1qQndlRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl6YldGc2JDQjdYSEpjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUF6TmpCd2VEdGNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXlaV2QxYkdGeUlIdGNjbHh1SUNBZ0lDQWdJQ0JvWldsbmFIUTZJRFF3TUhCNE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMWxaR2wxYlNCN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQTBOREJ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c1lYSm5aU0I3WEhKY2JpQWdJQ0FnSUNBZ2FHVnBaMmgwT2lBME9EQndlRHRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5MGRHSWdlMXh5WEc0Z0lDQWdZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lFQndjbWx0WVhKNVgySnZjbVJsY2w5amIyeHZjanRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5SUh0Y2NseHVJQ0FnSUNBZ0psOTBhVzU1SUh0Y2NseHVJQ0FnSUNBZ0lDQW1MbTkxZEd4cGJtVXRaSEpoZDJWeVgyTnNiM05sWkNCN1hISmNiaUFnSUNBZ0lDQWdJQ0IwYjNBNklDMHlOVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiV2x1YVNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnZEc5d09pQXRNek13Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM050WVd4c0lIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCMGIzQTZJQzB6TnpCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmY21WbmRXeGhjaUI3WEhKY2JpQWdJQ0FnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2w5amJHOXpaV1FnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdkRzl3T2lBdE5ERXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyMWxaR2wxYlNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnZEc5d09pQXRORFV3Y0hnN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMnhoY21kbElIdGNjbHh1SUNBZ0lDQWdJQ0FtTG05MWRHeHBibVV0WkhKaGQyVnlYMk5zYjNObFpDQjdYSEpjYmlBZ0lDQWdJQ0FnSUNCMGIzQTZJQzAwT1RCd2VEdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlluUjBJSHRjY2x4dUlDQWdJSFJ2Y0RvZ2FXNXBkR2xoYkR0Y2NseHVJQ0FnSUdKdmNtUmxjaTEwYjNBNklERndlQ0J6YjJ4cFpDQkFjSEpwYldGeWVWOWliM0prWlhKZlkyOXNiM0k3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExXUnlZWGRsY2lCN1hISmNiaUFnSUNBZ0lDWmZkR2x1ZVNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWW05MGRHOXRPaUF0TWpVd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDIxcGJta2dlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHSnZkSFJ2YlRvZ0xUTXpNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXpiV0ZzYkNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWW05MGRHOXRPaUF0TXpjd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNKbFozVnNZWElnZTF4eVhHNGdJQ0FnSUNBZ0lDWXViM1YwYkdsdVpTMWtjbUYzWlhKZlkyeHZjMlZrSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dMVFF4TUhCNE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDl0WldScGRXMGdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWEpmWTJ4dmMyVmtJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHSnZkSFJ2YlRvZ0xUUTFNSEI0TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0psOXNZWEpuWlNCN1hISmNiaUFnSUNBZ0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNsOWpiRzl6WldRZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWW05MGRHOXRPaUF0TkRrd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyOXdaVzVsWkNCN1hISmNiaUFnSUNCMmFYTnBZbWxzYVhSNU9pQjJhWE5wWW14bE8xeHlYRzRnSUNBZ2VpMXBibVJsZURvZ2RtRnlLQzB0YjNWMGJHbHVaUzE2U1c1a1pYZ3BPMXh5WEc1Y2NseHVJQ0FnSUNZdWIzVjBiR2x1WlMxa2NtRjNaWElnZTF4eVhHNGdJQ0FnSUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3WEhKY2JseHlYRzRnSUNBZ0lDQW1YM0owYkNCN1hISmNiaUFnSUNBZ0lDQWdjbWxuYUhRNklEQTdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZiSFJ5SUh0Y2NseHVJQ0FnSUNBZ0lDQnNaV1owT2lBd08xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzUjBZaUI3WEhKY2JpQWdJQ0FnSUNBZ2RHOXdPaUF3TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDJKMGRDQjdYSEpjYmlBZ0lDQWdJQ0FnWW05MGRHOXRPaUF3TzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyOW1abk5sZENCN1hISmNiaUFnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5SUh0Y2NseHVJQ0FnSUNBZ0psOXlkR3dzWEhKY2JpQWdJQ0FnSUNaZmJIUnlJSHRjY2x4dUlDQWdJQ0FnSUNCb1pXbG5hSFE2SUdOaGJHTW9NVEF3SlNBdElEUmxiU2s3WEhKY2JpQWdJQ0FnSUNBZ2RHOXdPaUExTUNVN1hISmNiaUFnSUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUIwY21GdWMyeGhkR1ZaS0MwMU1DVXBPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM1IwWWl4Y2NseHVJQ0FnSUNBZ0psOWlkSFFnZTF4eVhHNGdJQ0FnSUNBZ0lIZHBaSFJvT2lCallXeGpLREV3TUNVZ0xTQTBaVzBwTzF4eVhHNGdJQ0FnSUNBZ0lHeGxablE2SURVd0pUdGNjbHh1SUNBZ0lDQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZnb0xUVXdKU2s3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1pmYjNCbGJtVmtJSHRjY2x4dUlDQWdJQ0FnSUNBbUxtOTFkR3hwYm1VdFpISmhkMlZ5SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ1pmY25Sc0lIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtbG5hSFE2SURKbGJUdGNjbHh1SUNBZ0lDQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ0FnSUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR3hsWm5RNklESmxiVHRjY2x4dUlDQWdJQ0FnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNBZ0lDQW1YM1IwWWlCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhSdmNEb2dNbVZ0TzF4eVhHNGdJQ0FnSUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0lDQWdJQ1pmWW5SMElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ1ltOTBkRzl0T2lBeVpXMDdYSEpjYmlBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDJGMWRHOGdlMXh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMV1J5WVhkbGNpQjdYSEpjYmlBZ0lDQWdJQ1pmY25Sc0xGeHlYRzRnSUNBZ0lDQW1YMngwY2lCN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQmhkWFJ2TzF4eVhHNGdJQ0FnSUNBZ0lHMWhlQzFvWldsbmFIUTZJR05oYkdNb01UQXdKU0F0SURSbGJTazdYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWm5Wc2JDQjdYSEpjYmlBZ0lDQndZV1JrYVc1bk9pQXdPMXh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNGlMQ0l2S2lwY2NseHVJQ29nYldsNGFXNXpMbXhsYzNNZ0xTRGx0NlhsaGJmbGg3M21sYkJjY2x4dUlDb2dQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHlYRzRnS2lCRGNtVmhkR1ZrSUVKNU9pQlpZVzlvWVdsNGFXRnZYSEpjYmlBcUlGVndaR0YwWlRvZ01qQXlNaTR6TGpFeFhISmNiaUFxTDF4eVhHNUFhVzF3YjNKMElDY3VMMk52Ykc5eWN5YzdYSEpjYmx4eVhHNHZLaUE5UFQwOVBUMGc1cGFINXB5czU1eUI1NVdsNVllOTVwV3dJRDA5UFQwOVBTQXFMMXh5WEc0dVpXeHNhWEJ6YVhNZ0tFQnNhVzVsY3lrZ2QyaGxiaUFvUUd4cGJtVnpQVEVwSUh0Y2NseHVJQ0IzYUdsMFpTMXpjR0ZqWlRvZ2JtOTNjbUZ3TzF4eVhHNGdJSFJsZUhRdGIzWmxjbVpzYjNjNklHVnNiR2x3YzJsek8xeHlYRzRnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JuMWNjbHh1WEhKY2JpNWxiR3hwY0hOcGN5QW9RR3hwYm1WektTQjNhR1Z1SUNoQWJHbHVaWE0rUFRJcElIdGNjbHh1SUNBdGQyVmlhMmwwTFd4cGJtVXRZMnhoYlhBNklFQnNhVzVsY3p0Y2NseHVJQ0JrYVhOd2JHRjVPaUJpYjNnN1hISmNiaUFnTFhkbFltdHBkQzFpYjNndGIzSnBaVzUwT2lCMlpYSjBhV05oYkR0Y2NseHVJQ0IwWlhoMExXOTJaWEptYkc5M09pQmxiR3hwY0hOcGN6dGNjbHh1SUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNTlYSEpjYmx4eVhHNHZLaUE5UFQwOVBUMGc1WnlHNktlUzVxQzM1YnlQNks2KzU3MnU1WWU5NXBXd0lEMDlQVDA5UFNBcUwxeHlYRzR1Y21Ga2FYVnpLRUJ1ZFcwNklESndlQ2tnZTF4eVhHNGdJR0p2Y21SbGNpMXlZV1JwZFhNNklFQnVkVzA3WEhKY2JuMWNjbHh1WEhKY2JpNXlZV1JwZFhOZmJtOXVaU2dwSUh0Y2NseHVJQ0F1Y21Ga2FYVnpLREFwTzF4eVhHNTlYSEpjYmx4eVhHNHVjbUZrYVhWelgyMXBibWtvS1NCN1hISmNiaUFnTG5KaFpHbDFjeWd5Y0hncE8xeHlYRzU5WEhKY2JseHlYRzR1Y21Ga2FYVnpYM050WVd4c0tDa2dlMXh5WEc0Z0lDNXlZV1JwZFhNb00zQjRLVHRjY2x4dWZWeHlYRzVjY2x4dUxuSmhaR2wxYzE5eVpXZDFiR0Z5S0NrZ2UxeHlYRzRnSUM1eVlXUnBkWE1vTkhCNEtUdGNjbHh1ZlZ4eVhHNWNjbHh1TG5KaFpHbDFjMTl0WldScGRXMG9LU0I3WEhKY2JpQWdMbkpoWkdsMWN5ZzFjSGdwTzF4eVhHNTlYSEpjYmx4eVhHNHVjbUZrYVhWelgyeGhjbWRsS0NrZ2UxeHlYRzRnSUM1eVlXUnBkWE1vTVRCd2VDazdYSEpjYm4xY2NseHVYSEpjYmk1eVlXUnBkWE5mYUhWblpTZ3BJSHRjY2x4dUlDQXVjbUZrYVhWektERTJjSGdwTzF4eVhHNTlYSEpjYmx4eVhHNHVjbUZrYVhWelgzSnZkVzVrS0NrZ2UxeHlYRzRnSUM1eVlXUnBkWE1vTXpCd2VDazdYSEpjYm4xY2NseHVYSEpjYmk4cUlEMDlQVDA5UFNEcG1MVGx2Ykhtb0xmbHZJL29ycjdudmE3bGg3M21sYkFnUFQwOVBUMDlJQ292WEhKY2JpNXphR0ZrYjNjb1FHOW1abk5sZERvZ01DQXdJRFp3ZUNBeGNIZ3NJRUJqYjJ4dmNqb2dRSEJ5YVcxaGNubGZZbTl5WkdWeVgyTnZiRzl5S1NCN1hISmNiaUFnWW05NExYTm9ZV1J2ZHpvZ1FHOW1abk5sZENCQVkyOXNiM0k3WEhKY2JuMWNjbHh1WEhKY2JpNXphR0ZrYjNkZmNtVm5kV3hoY2loQVkyOXNiM0k2SUVCd2NtbHRZWEo1WDJKdmNtUmxjbDlqYjJ4dmNpa2dlMXh5WEc0Z0lDNXphR0ZrYjNjb01DQXdJRFp3ZUNBeGNIZ3NJRUJqYjJ4dmNpazdYSEpjYm4xY2NseHVYSEpjYmk1emFHRmtiM2RmYkdGeVoyVW9RR052Ykc5eU9pQkFjSEpwYldGeWVWOWliM0prWlhKZlkyOXNiM0lwSUh0Y2NseHVJQ0F1YzJoaFpHOTNLREFnTUNBeE1uQjRJREZ3ZUN3Z1FHTnZiRzl5S1R0Y2NseHVmVnh5WEc1Y2NseHVMbk5vWVdSdmQxOXNhV2RvZEY5eVpXZDFiR0Z5S0NrZ2UxeHlYRzRnSUM1emFHRmtiM2RmY21WbmRXeGhjaWdwTzF4eVhHNTlYSEpjYmx4eVhHNHVjMmhoWkc5M1gyeHBaMmgwWDJ4aGNtZGxLQ2tnZTF4eVhHNGdJQzV6YUdGa2IzZGZiR0Z5WjJVb0tUdGNjbHh1ZlZ4eVhHNWNjbHh1TG5Ob1lXUnZkMTlrWVhKclgzSmxaM1ZzWVhJb0tTQjdYSEpjYmlBZ0xuTm9ZV1J2ZDE5eVpXZDFiR0Z5S0VCelpXTnZibVJoY25sZlltOXlaR1Z5WDJOdmJHOXlLVHRjY2x4dWZWeHlYRzRpTENKQWFXMXdiM0owSUNkMllYSnBZV0pzWlhNbk8xeHlYRzVBYVcxd2IzSjBJQ2RqYjJ4dmNuTW5PMXh5WEc1QWFXMXdiM0owSUNkbGJHeHBjSE5wY3ljN1hISmNibHh5WEc0dWIzVjBiR2x1WlMxamFHRndkR1Z5Y3lCN1hISmNiaUFnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4eVhHNGdJSG90YVc1a1pYZzZJREU3WEhKY2JpQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lIZHBaSFJvT2lCMllYSW9MUzF2ZFhSc2FXNWxMV05vWVhCMFpYSnpMWGRwWkhSb0tUdGNjbHh1SUNCdmRtVnlabXh2ZHpvZ1lYVjBienRjY2x4dVhISmNiaUFnSmkxd1lYSmxiblFnZTF4eVhHNGdJQ0FnZEhKaGJuTnBkR2x2YmpvZ01DNHpjeUJsWVhObExXbHVMVzkxZER0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgzUnBkR3hsSUh0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTUNBeE5uQjRPMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQTBNSEI0TzF4eVhHNGdJQ0FnYkdsdVpTMW9aV2xuYUhRNklEUXdjSGc3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3SURFMmNIZzdYSEpjYmlBZ0lDQmliM0prWlhJdFltOTBkRzl0T2lBeGNIZ2djMjlzYVdRZ1FIQnlhVzFoY25sZlltOXlaR1Z5WDJOdmJHOXlPMXh5WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUF4Tm5CNE8xeHlYRzRnSUNBZ1ptOXVkQzEzWldsbmFIUTZJRFF3TUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5dFlXbHVJSHRjY2x4dUlDQWdJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHRjY2x4dUlDQWdJSG90YVc1a1pYZzZJREU3WEhKY2JpQWdJQ0J0WVhKbmFXNDZJREE3WEhKY2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlmYkdsemRDeGNjbHh1SUNBbVgxOXpkV0pxWldOMExGeHlYRzRnSUNaZlgybDBaVzBnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTWp0Y2NseHVJQ0FnSUcxaGNtZHBiam9nTUR0Y2NseHVJQ0FnSUhCaFpHUnBibWM2SURBN1hISmNiaUFnSUNCc2FYTjBMWE4wZVd4bExYUjVjR1U2SUc1dmJtVTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZiR2x6ZENCN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0xqVmxiU0F3TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmMzVmlhbVZqZENCN1hISmNiaUFnSUNCd1lXUmthVzVuTFd4bFpuUTZJREZsYlR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZlgybDBaVzBnZTF4eVhHNGdJQ0FnYldGeVoybHVPaUF3TzF4eVhHNGdJQ0FnYkdsdVpTMW9aV2xuYUhRNklETXdjSGc3WEhKY2JpQWdJQ0JtYjI1MExYTnBlbVU2SURFemNIZzdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWZjR3hoWTJWb2IyeGtaWElnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTVR0Y2NseHVJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJR3hsWm5RNklEQTdYSEpjYmlBZ0lDQjNhV1IwYURvZ01UQXdKVHRjY2x4dUlDQWdJR2hsYVdkb2REb2dNekJ3ZUR0Y2NseHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCb2IzWmxjbDlpWjE5amIyeHZjanRjY2x4dUlDQWdJR0p2Y21SbGNpMXNaV1owT2lBeWNIZ2djMjlzYVdRZ1FITjFZMk5sYzNOZlkyOXNiM0k3WEhKY2JpQWdJQ0IwY21GdWMybDBhVzl1TFdSMWNtRjBhVzl1T2lBd0xqSnpPMXh5WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDE5aGJtTm9iM0lnZTF4eVhHNGdJQ0FnTG1Wc2JHbHdjMmx6S0RFcE8xeHlYRzRnSUNBZ1pHbHpjR3hoZVRvZ1lteHZZMnM3WEhKY2JpQWdJQ0J3WVdSa2FXNW5PaUF3SURFdU5XVnRPMXh5WEc1Y2NseHVJQ0FnSUNZNmJHbHVheXhjY2x4dUlDQWdJQ1k2ZG1semFYUmxaQ3hjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN1hISmNiaUFnSUNBZ0lHTnZiRzl5T2lCQWMyVmpiMjVrWVhKNVgzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUdOdmJHOXlPaUJBYzNWalkyVnpjMTlqYjJ4dmNqdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMk52WkdVZ2UxeHlYRzRnSUNBZ2NHRmtaR2x1WnkxeWFXZG9kRG9nTUM0MVpXMDdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMmhwWjJoc2FXZG9kQ0I3WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0WTJoaGNIUmxjbk5mWDJGdVkyaHZjaUI3WEhKY2JpQWdJQ0FnSUNZNmJHbHVheXhjY2x4dUlDQWdJQ0FnSmpwMmFYTnBkR1ZrTEZ4eVhHNGdJQ0FnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FITjFZMk5sYzNOZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZjM1JwWTJ0NUxGeHlYRzRnSUNaZlptbDRaV1FnZTF4eVhHNGdJQ0FnWkdsemNHeGhlVG9nWm14bGVEdGNjbHh1SUNBZ0lHWnNaWGd0ZDNKaGNEb2dibTkzY21Gd08xeHlYRzRnSUNBZ1pteGxlQzFrYVhKbFkzUnBiMjQ2SUdOdmJIVnRianRjY2x4dUlDQWdJSG90YVc1a1pYZzZJSFpoY2lndExXOTFkR3hwYm1VdGVrbHVaR1Y0S1R0Y2NseHVJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ0FnTG05MWRHeHBibVV0WTJoaGNIUmxjbk1nZTF4eVhHNGdJQ0FnSUNBbVgxOTBhWFJzWlN4Y2NseHVJQ0FnSUNBZ0psOWZiV0ZwYmlCN1hISmNiaUFnSUNBZ0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5ZmRHbDBiR1VnZTF4eVhHNGdJQ0FnSUNBZ0lHWnNaWGd0YzJoeWFXNXJPaUF3TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDE5dFlXbHVJSHRjY2x4dUlDQWdJQ0FnSUNCbWJHVjRPaUF4TzF4eVhHNGdJQ0FnSUNBZ0lHOTJaWEptYkc5M09pQmhkWFJ2TzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzTjBhV05yZVNCN1hISmNiaUFnSUNCd2IzTnBkR2x2YmpvZ2MzUnBZMnQ1TzF4eVhHNGdJQ0FnYldGNExXaGxhV2RvZERvZ2RtRnlLQzB0YjNWMGJHbHVaUzF6ZEdsamEza3RhR1ZwWjJoMEtUdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZabWw0WldRZ2UxeHlYRzRnSUNBZ2NHOXphWFJwYjI0NklHWnBlR1ZrTzF4eVhHNGdJQ0FnYldGNExXaGxhV2RvZERvZ01UQXdKVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmYUdsa1pHVnVJSHRjY2x4dUlDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgyWnZiR1JsWkNCN1hISmNiaUFnSUNCM2FXUjBhRG9nTUR0Y2NseHVJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3WEhKY2JpQWdmVnh5WEc1OVhISmNiaUlzSWtCcGJYQnZjblFnSjJOdmJHOXljeWM3WEhKY2JrQnBiWEJ2Y25RZ0oyMXBlR2x1Y3ljN1hISmNibHh5WEc0dWIzVjBiR2x1WlMxeVpXRmtaWElnZTF4eVhHNGdJQ1pmWDJOc2IzTmxJSHRjY2x4dUlDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgxOTBhWFJzWlNCN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBdU5qZGxiU0F3SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lHWnZiblF0Wm1GdGFXeDVPaUFuVFdsamNtOXpiMlowSUZsaFNHVnBJRlZKSnl3Z1FYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZN1hISmNiaUFnSUNCbWIyNTBMWGRsYVdkb2REb2dibTl5YldGc08xeHlYRzRnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmp0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmFHbGtaR1Z1SUh0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVWdJV2x0Y0c5eWRHRnVkRHRjY2x4dVhISmNiaUFnSUNBbUxtOTFkR3hwYm1VdGNtVmhaR1Z5WDNOcFlteHBibWNnZTF4eVhHNGdJQ0FnSUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEhKY2JseHlYRzRnSUNBZ0lDQW1MbmR5WVhCd1pYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdWNHOXpkQ0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQmthWE53YkdGNU9pQnViMjVsTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKaTB0Y21WaFpHbHVaeUI3WEhKY2JpQWdJQ0JrYVhOd2JHRjVPaUJpYkc5amF6dGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQm1hWGhsWkR0Y2NseHVJQ0FnSUhvdGFXNWtaWGc2SURJN1hISmNiaUFnSUNCMGIzQTZJREE3WEhKY2JpQWdJQ0JzWldaME9pQXdPMXh5WEc0Z0lDQWdkMmxrZEdnNklERXdNQ1U3WEhKY2JpQWdJQ0JvWldsbmFIUTZJREV3TUNVN1hISmNiaUFnSUNCdFlYSm5hVzQ2SURBN1hISmNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh5WEc0Z0lDQWdjR0ZrWkdsdVp6b2dNMlZ0SURSbGJUdGNjbHh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0FnSUhOamNtOXNiQzEwYVcxbGJHbHVaUzF1WVcxbE9pQXRMVkJ5YjJkeVpYTnpWR2x0Wld4cGJtVTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2djMk55YjJ4c08xeHlYRzVjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMWEpsWVdSbGNpQjdYSEpjYmlBZ0lDQWdJQ1pmWDNCeWIyZHlaWE56SUh0Y2NseHVJQ0FnSUNBZ0lDQndiM05wZEdsdmJqb2dabWw0WldRN1hISmNiaUFnSUNBZ0lDQWdkRzl3T2lBd08xeHlYRzRnSUNBZ0lDQWdJR3hsWm5RNklEQTdYSEpjYmlBZ0lDQWdJQ0FnZWkxcGJtUmxlRG9nTXp0Y2NseHVJQ0FnSUNBZ0lDQm9aV2xuYUhRNklEUndlRHRjY2x4dUlDQWdJQ0FnSUNCM2FXUjBhRG9nTVRBd0pUdGNjbHh1SUNBZ0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBY0hKcGJXRnllVjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0J6WTJGc1pUb2dNQ0F4TzF4eVhHNGdJQ0FnSUNBZ0lIUnlZVzV6Wm05eWJTMXZjbWxuYVc0NklHeGxablE3WEhKY2JpQWdJQ0FnSUNBZ1lXNXBiV0YwYVc5dU9pQnZkWFJzYVc1bExYSmxZV1JsY2kxd2NtOW5jbVZ6Y3lCc2FXNWxZWEk3WEhKY2JpQWdJQ0FnSUNBZ1lXNXBiV0YwYVc5dUxYUnBiV1ZzYVc1bE9pQXRMVkJ5YjJkeVpYTnpWR2x0Wld4cGJtVTdYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDWmZYMk5zYjNObElIdGNjbHh1SUNBZ0lDQWdJQ0F1YzJoaFpHOTNYMnhwWjJoMFgzSmxaM1ZzWVhJb0tUdGNjbHh1SUNBZ0lDQWdJQ0JrYVhOd2JHRjVPaUJpYkc5amF6dGNjbHh1SUNBZ0lDQWdJQ0J3YjNOcGRHbHZiam9nWm1sNFpXUTdYSEpjYmlBZ0lDQWdJQ0FnZWkxcGJtUmxlRG9nTXp0Y2NseHVJQ0FnSUNBZ0lDQjBiM0E2SURVd0pUdGNjbHh1SUNBZ0lDQWdJQ0J5YVdkb2REb2dNakp3ZUR0Y2NseHVJQ0FnSUNBZ0lDQnRZWEpuYVc0NklEQTdYSEpjYmlBZ0lDQWdJQ0FnZDJsa2RHZzZJRE0yY0hnN1hISmNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQXpObkI0TzF4eVhHNGdJQ0FnSUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURFNGNIZzdYSEpjYmlBZ0lDQWdJQ0FnWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnUUhCeWFXMWhjbmxmWW05eVpHVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJR3hwYm1VdGFHVnBaMmgwT2lBek1IQjRPMXh5WEc0Z0lDQWdJQ0FnSUhSbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y2NseHVJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTFRVd0pTazdYSEpjYmlBZ0lDQWdJQ0FnWTNWeWMyOXlPaUJ3YjJsdWRHVnlPMXh5WEc0Z0lDQWdJQ0FnSUdKdmVDMXphR0ZrYjNjNklEQWdNQ0E0Y0hnZ1FITmxZMjl1WkdGeWVWOWliM0prWlhKZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SUVCbWIzVnlkR2hmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFkMmhwZEdVN1hISmNiaUFnSUNBZ0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1WEhKY2JpQWdJQ0FnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUJBYzNWalkyVnpjMTlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0FnSUdOdmJHOXlPaUJBZDJocGRHVTdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0JvTVN4Y2NseHVJQ0FnSUNBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ0lDQWdJRzFoY21kcGJqb2dNQzQyTjJWdElEQWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnSUNCc2FXNWxMV2hsYVdkb2REb2dNUzR6WlcwN1hISmNiaUFnSUNBZ0lDQWdabTl1ZEMxemFYcGxPaUF6TGpWbGJUdGNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1ZlZ4eVhHNWNjbHh1UUd0bGVXWnlZVzFsY3lCdmRYUnNhVzVsTFhKbFlXUmxjaTF3Y205bmNtVnpjeUI3WEhKY2JpQWdkRzhnZTF4eVhHNGdJQ0FnYzJOaGJHVTZJREVnTVR0Y2NseHVJQ0I5WEhKY2JuMWNjbHh1WEhKY2JrQnRaV1JwWVNBb2JXRjRMWGRwWkhSb09pQTBPREJ3ZUNrZ2UxeHlYRzRnSUM1dmRYUnNhVzVsTFhKbFlXUmxjaUI3WEhKY2JpQWdJQ0FtTFMxeVpXRmthVzVuSUh0Y2NseHVJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01DQXhMakkxWlcwN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdKbDlmWTJ4dmMyVWdlMXh5WEc0Z0lDQWdJQ0J5YVdkb2REb2dNVEp3ZUNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQnZjR0ZqYVhSNU9pQXdMamc3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0psOWZkR2wwYkdVZ2UxeHlYRzRnSUNBZ0lDQm1iMjUwTFhOcGVtVTZJREpsYlR0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JuMWNjbHh1WEhKY2JrQnRaV1JwWVNCd2NtbHVkQ0I3WEhKY2JpQWdhSFJ0YkN4Y2NseHVJQ0JpYjJSNUlIdGNjbHh1SUNBZ0lHaGxhV2RvZERvZ2FXNXBkR2xoYkNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0xtOTFkR3hwYm1VZ2UxeHlYRzRnSUNBZ0ppMXRaWE56WVdkbExGeHlYRzRnSUNBZ0ppMTBiMjlzWW1GeUlIdGNjbHh1SUNBZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ1l0Y21WaFpHVnlJSHRjY2x4dUlDQWdJQ0FnWkdsemNHeGhlVG9nWW14dlkyc2dJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dVhISmNiaUFnSUNBZ0lHZ3hMRnh5WEc0Z0lDQWdJQ0FtWDE5MGFYUnNaU0I3WEhKY2JpQWdJQ0FnSUNBZ2JXRnlaMmx1T2lBeE15NDBjSFFnTUNBeU9IQjBJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeUlDRnBiWEJ2Y25SaGJuUTdYSEpjYmlBZ0lDQWdJQ0FnWm05dWRDMXphWHBsT2lBeU1IQjBJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ1l1YjNWMGJHbHVaUzF5WldGa1pYSWdlMXh5WEc0Z0lDQWdJQ0FnSUNZdExYSmxZV1JwYm1jZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsSUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lDQWdJQ0JvWldsbmFIUTZJR0YxZEc4Z0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdJQ0FnSUhCaFpHUnBibWM2SURBZ0lXbHRjRzl5ZEdGdWREdGNjbHh1SUNBZ0lDQWdJQ0FnSUc5MlpYSm1iRzkzT2lCb2FXUmtaVzRnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBZ0lHZ3hMRnh5WEc0Z0lDQWdJQ0FnSUNaZlgzUnBkR3hsSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJRzFoY21kcGJqb2dNVE11TkhCMElEQWdNamh3ZENBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQWdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNBZ0lDQWdJQ0JtYjI1MExYTnBlbVU2SURJd2NIUWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FnSUNaZlgyTnNiM05sTEZ4eVhHNGdJQ0FnSUNBZ0lDWmZYM0J5YjJkeVpYTnpJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lIQnlaU0I3WEhKY2JpQWdJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01XVnRJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0FnSUNBZ1ltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ1FHSnZjbVJsY2w5amIyeHZjaUFoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURSd2VDQWhhVzF3YjNKMFlXNTBPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQndjbVVzWEhKY2JpQWdJQ0FnSUdOdlpHVWdlMXh5WEc0Z0lDQWdJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUVCM2FHbDBaU0FoYVcxd2IzSjBZVzUwTzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0IwWVdKc1pTeGNjbHh1SUNBZ0lDQWdhVzFuTEZ4eVhHNGdJQ0FnSUNCemRtY2dlMXh5WEc0Z0lDQWdJQ0FnSUdKeVpXRnJMV2x1YzJsa1pUb2dZWFp2YVdRN1hISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmMybGliR2x1WnlCN1hISmNiaUFnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJaThxSUQwOVBUMDlQVDA5UFQwZ1luVjBkRzl1Y3k1MGFHVnRaU0F0SU9hTWllbVNydVd2dk9pSXF1YWd0K1c4anlBOVBUMDlQVDA5UFQwOUlDb3ZYSEpjYmtCcGJYQnZjblFnSjJOdmJHOXljeWM3WEhKY2JrQnBiWEJ2Y25RZ0ozTm9ZV1J2ZHljN1hISmNibHh5WEc0dWIzVjBiR2x1WlMxMGIyOXNZbUZ5SUh0Y2NseHVJQ0J3YjNOcGRHbHZiam9nWm1sNFpXUTdYSEpjYmlBZ2VpMXBibVJsZURvZ09UazVPVGs3WEhKY2JpQWdiV0Z5WjJsdU9pQXdPMXh5WEc0Z0lIUnlZVzV6YVhScGIyNHRaSFZ5WVhScGIyNDZJREF1TTNNN1hISmNiaUFnYjNabGNtWnNiM2M2SUdocFpHUmxianRjY2x4dVhISmNiaUFnSmw5ZlluVjBkRzl1SUh0Y2NseHVJQ0FnSUM1emFHRmtiM2RmYkdsbmFIUmZjbVZuZFd4aGNpZ3BPMXh5WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh5WEc0Z0lDQWdlaTFwYm1SbGVEb2dNVHRjY2x4dUlDQWdJRzFoY21kcGJqb2dNVEJ3ZUR0Y2NseHVJQ0FnSUhkcFpIUm9PaUF6Tm5CNE8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBek5uQjRPMXh5WEc0Z0lDQWdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdRSEJ5YVcxaGNubGZZbTl5WkdWeVgyTnZiRzl5TzF4eVhHNGdJQ0FnWW05eVpHVnlMWEpoWkdsMWN6b2dNM0I0TzF4eVhHNGdJQ0FnWW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEdGNjbHh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVJQ0FnSUdOMWNuTnZjam9nY0c5cGJuUmxjanRjY2x4dUlDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjY2x4dUlDQWdJR052Ykc5eU9pQkFabTkxY25Sb1gzUmxlSFJmWTI5c2IzSTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzVjY2x4dUlDQWdJQ1k2YUc5MlpYSWdlMXh5WEc0Z0lDQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lHSnZjbVJsY2kxamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmk1b2FXUmxJSHRjY2x4dUlDQWdJQ0FnWkdsemNHeGhlVG9nYm05dVpUdGNjbHh1SUNBZ0lIMWNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMkZ1WTJodmNpQjdYSEpjYmlBZ0lDQW1PbXhwYm1zc1hISmNiaUFnSUNBbU9uWnBjMmwwWldRc1hISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCbWIzVnlkR2hmZEdWNGRGOWpiMnh2Y2p0Y2NseHVJQ0FnSUNBZ2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCdWIyNWxPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNZNmFHOTJaWElnZTF4eVhHNGdJQ0FnSUNCamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMTlwWTI5dUlIdGNjbHh1SUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNjbHh1SUNBZ0lIb3RhVzVrWlhnNklESTdYSEpjYmlBZ0lDQjBiM0E2SURVd0pUdGNjbHh1SUNBZ0lHeGxablE2SURVd0pUdGNjbHh1SUNBZ0lIZHBaSFJvT2lBeU1IQjRPMXh5WEc0Z0lDQWdhR1ZwWjJoME9pQXlNSEI0TzF4eVhHNGdJQ0FnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdVb0xUVXdKU3dnTFRVd0pTazdYSEpjYmlBZ0lDQm1hV3hzT2lCamRYSnlaVzUwWTI5c2IzSTdYSEpjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHlYRzRnSUgxY2NseHVYSEpjYmlBZ0psOWhZM1JwZG1VZ2UxeHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhJZ2UxeHlYRzRnSUNBZ0lDQW1YMTlpZFhSMGIyNGdlMXh5WEc0Z0lDQWdJQ0FnSUdOdmJHOXlPaUJBZDJocGRHVTdYSEpjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnWW05eVpHVnlMV052Ykc5eU9pQkFjM1ZqWTJWemMxOWpiMnh2Y2p0Y2NseHVYSEpjYmlBZ0lDQWdJQ0FnSmpwb2IzWmxjaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUM1dmRYUnNhVzVsTFhSdmIyeGlZWEpmWDJGdVkyaHZjaUI3WEhKY2JpQWdJQ0FnSUNZNmJHbHVheXhjY2x4dUlDQWdJQ0FnSmpwMmFYTnBkR1ZrTEZ4eVhHNGdJQ0FnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ1FIZG9hWFJsTzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzSnZkVzVrWldRZ2UxeHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURFNGNIZzdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMlJwYzJGaWJHVmtJSHRjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzEwYjI5c1ltRnlMRnh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNpQjdYSEpjYmlBZ0lDQWdJQ1pmWDJGdVkyaHZjanBzYVc1ckxGeHlYRzRnSUNBZ0lDQW1YMTloYm1Ob2IzSTZkbWx6YVhSbFpDeGNjbHh1SUNBZ0lDQWdKbDlmWVc1amFHOXlPbWh2ZG1WeUxGeHlYRzRnSUNBZ0lDQW1YMTlpZFhSMGIyNGdlMXh5WEc0Z0lDQWdJQ0FnSUdOMWNuTnZjam9nYm05MExXRnNiRzkzWldRN1hISmNiaUFnSUNBZ0lDQWdZMjlzYjNJNklFQm1iM1Z5ZEdoZmRHVjRkRjlqYjJ4dmNqdGNjbHh1SUNBZ0lDQWdJQ0JpYjNKa1pYSXRZMjlzYjNJNklFQm1iM1Z5ZEdoZmRHVjRkRjlqYjJ4dmNqdGNjbHh1WEhKY2JpQWdJQ0FnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRR1p2ZFhKMGFGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0FnSUNBZ1ltOXlaR1Z5TFdOdmJHOXlPaUJBWm05MWNuUm9YM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgxOWlkWFIwYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUJrYVhOaFlteGxaRjlpWjE5amIyeHZjanRjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5MGRHSXNYSEpjYmlBZ0psOWlkSFFnZTF4eVhHNGdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdWWUtDMDFNQ1VwTzF4eVhHNWNjbHh1SUNBZ0lDNXZkWFJzYVc1bExYUnZiMnhpWVhKZlgySjFkSFJ2YmlCN1hISmNiaUFnSUNBZ0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmZEhSaUlIdGNjbHh1SUNBZ0lIUnZjRG9nTVRKd2VEdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0ZEc5dmJHSmhjbDlvYVdSa1pXNGdlMXh5WEc0Z0lDQWdJQ0IwYjNBNklDMDFObkI0TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5aWRIUWdlMXh5WEc0Z0lDQWdZbTkwZEc5dE9pQXhNbkI0TzF4eVhHNWNjbHh1SUNBZ0lDWXViM1YwYkdsdVpTMTBiMjlzWW1GeVgyaHBaR1JsYmlCN1hISmNiaUFnSUNBZ0lHSnZkSFJ2YlRvZ0xUVTJjSGc3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKMGJDeGNjbHh1SUNBbVgyeDBjaUI3WEhKY2JpQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb0xUVXdKU2s3WEhKY2JpQWdJQ0IzYVdSMGFEb2dOVFp3ZUR0Y2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmNuUnNJSHRjY2x4dUlDQWdJSFJ2Y0RvZ05UQWxPMXh5WEc0Z0lDQWdjbWxuYUhRNklERXljSGc3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExYUnZiMnhpWVhKZmFHbGtaR1Z1SUh0Y2NseHVJQ0FnSUNBZ2NtbG5hSFE2SUMwNE5uQjRPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdKbDlzZEhJZ2UxeHlYRzRnSUNBZ2RHOXdPaUExTUNVN1hISmNiaUFnSUNCc1pXWjBPaUF4TW5CNE8xeHlYRzVjY2x4dUlDQWdJQ1l1YjNWMGJHbHVaUzEwYjI5c1ltRnlYMmhwWkdSbGJpQjdYSEpjYmlBZ0lDQWdJR3hsWm5RNklDMDRObkI0TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5MGRHSXNYSEpjYmlBZ0psOXlkR3dzWEhKY2JpQWdKbDlpZEhRc1hISmNiaUFnSmw5c2RISWdlMXh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRkRzl2YkdKaGNsOWZZblYwZEc5dUlIdGNjbHh1SUNBZ0lDQWdKaTV2ZFhSc2FXNWxMWFJ2YjJ4aVlYSmZhR2xrWkdWdUlIdGNjbHh1SUNBZ0lDQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSXNJa0JwYlhCdmNuUWdKeTR2WTI5c2IzSnpKenRjY2x4dVFHbHRjRzl5ZENBbkxpOW1iMjUwSnp0Y2NseHVRR2x0Y0c5eWRDQW5MaTl0YVhocGJuTW5PMXh5WEc1QWFXMXdiM0owSUNjdUwybGpiMjV6Snp0Y2NseHVYSEpjYmk1dmRYUnNhVzVsTFcxbGMzTmhaMlVnZTF4eVhHNGdJQzV5WVdScGRYTmZjMjFoYkd3b0tUdGNjbHh1SUNBdWMyaGhaRzkzWDJ4cFoyaDBYM0psWjNWc1lYSW9LVHRjY2x4dUlDQndiM05wZEdsdmJqb2dabWw0WldRN1hISmNiaUFnZWkxcGJtUmxlRG9nT1RrNU9UdGNjbHh1SUNCdmNHRmphWFI1T2lBd0xqRTdYSEpjYmlBZ2RHOXdPaUF0TlRCd2VEdGNjbHh1SUNCc1pXWjBPaUExTUNVN1hISmNiaUFnYUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUcxaGNtZHBiam9nTUR0Y2NseHVJQ0J3WVdSa2FXNW5PaUF3SURVd2NIZzdYSEpjYmlBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnWm05dWRDMXphWHBsT2lCQVptOXVkRjl6YVhwbFgzTnRZV3hzTzF4eVhHNGdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJRUIzYUdsMFpUdGNjbHh1SUNCamIyeHZjam9nUUhSb2FYSmtYM1JsZUhSZlkyOXNiM0k3WEhKY2JpQWdkSEpoYm5OcGRHbHZiam9nWVd4c0lEQXVOWE1nWldGelpTMXBiaTF2ZFhRN1hISmNiaUFnZEhKaGJuTm1iM0p0T2lCMGNtRnVjMnhoZEdWWUtDMDFNQ1VwTzF4eVhHNGdJRzkyWlhKbWJHOTNPaUJvYVdSa1pXNDdYSEpjYmx4eVhHNGdJQ1pmWDJOdmJuUmxiblFnZTF4eVhHNGdJQ0FnTG1Wc2JHbHdjMmx6S0RFcE8xeHlYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHlYRzRnSUNBZ2JXRjRMWGRwWkhSb09pQTNNREJ3ZUR0Y2NseHVJQ0FnSUdobGFXZG9kRG9nTkRCd2VEdGNjbHh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUNBZ1ptOXVkQzF6YVhwbE9pQXhNM0I0TzF4eVhHNGdJQ0FnWTI5c2IzSTZJRUIwYUdseVpGOTBaWGgwWDJOdmJHOXlPMXh5WEc0Z0lDQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZYMk5zYjNObExGeHlYRzRnSUNaZlgybGpiMjRnZTF4eVhHNGdJQ0FnY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsTzF4eVhHNGdJQ0FnZWkxcGJtUmxlRG9nTWp0Y2NseHVJQ0FnSUhSdmNEb2dNRHRjY2x4dUlDQWdJSGRwWkhSb09pQTBNSEI0TzF4eVhHNGdJQ0FnYUdWcFoyaDBPaUEwTUhCNE8xeHlYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJRFF3Y0hnN1hISmNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hISmNiaUFnSUNCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5ZmFXTnZiaUI3WEhKY2JpQWdJQ0JzWldaME9pQXdPMXh5WEc0Z0lDQWdZMjlzYjNJNklFQjNhR2wwWlR0Y2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ0lDQjZMV2x1WkdWNE9pQXlPMXh5WEc0Z0lDQWdJQ0IwYjNBNklEVXdKVHRjY2x4dUlDQWdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnSUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpTZ3ROVEFsTENBdE5UQWxLVHRjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWDJOc2IzTmxJSHRjY2x4dUlDQWdJSEpwWjJoME9pQXdPMXh5WEc0Z0lDQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU8xeHlYRzRnSUNBZ1kyOXNiM0k2SUVCbWIzVnlkR2hmZEdWNGRGOWpiMnh2Y2p0Y2NseHVYSEpjYmlBZ0lDQXViM1YwYkdsdVpTMXBZMjl1SUh0Y2NseHVJQ0FnSUNBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE8xeHlYRzRnSUNBZ0lDQjZMV2x1WkdWNE9pQXlPMXh5WEc0Z0lDQWdJQ0IwYjNBNklEVXdKVHRjY2x4dUlDQWdJQ0FnYkdWbWREb2dOVEFsTzF4eVhHNGdJQ0FnSUNCMGNtRnVjMlp2Y20wNklIUnlZVzV6YkdGMFpTZ3ROVEFsTENBdE5UQWxLVHRjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNBbU9taHZkbVZ5SUh0Y2NseHVJQ0FnSUNBZ1kyOXNiM0k2SUVCMGFHbHlaRjkwWlhoMFgyTnZiRzl5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5cGJtWnZJSHRjY2x4dUlDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQkFjSEpwYldGeWVWOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmQyRnlibWx1WnlCN1hISmNiaUFnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhkaGNtNXBibWRmWTI5c2IzSTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YM04xWTJObGMzTWdlMXh5WEc0Z0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklFQnpkV05qWlhOelgyTnZiRzl5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmw5bGNuSnZjaUI3WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNjbHh1SUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRR1JoYm1kbGNsOWpiMnh2Y2p0Y2NseHVJQ0FnSUgxY2NseHVJQ0I5WEhKY2JseHlYRzRnSUNaZmNHeGhhVzRnZTF4eVhHNGdJQ0FnYldsdUxYZHBaSFJvT2lBeE9UQndlRHRjY2x4dUlDQWdJSEJoWkdScGJtYzZJREFnTlRCd2VDQXdJREUxY0hnN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVWdlMXh5WEc0Z0lDQWdJQ0FtWDJsdVptOGdlMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjaTFzWldaME9pQTFjSGdnYzI5c2FXUWdRSEJ5YVcxaGNubGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRR2x1Wm05ZmRHbHdYMkpuWDJOdmJHOXlPMXh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YM2RoY201cGJtY2dlMXh5WEc0Z0lDQWdJQ0FnSUdKdmNtUmxjaTFzWldaME9pQTFjSGdnYzI5c2FXUWdRSGRoY201cGJtZGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dRSGRoY201cGJtZGZkR2x3WDJKblgyTnZiRzl5TzF4eVhHNGdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FtWDNOMVkyTmxjM01nZTF4eVhHNGdJQ0FnSUNBZ0lHSnZjbVJsY2kxc1pXWjBPaUExY0hnZ2MyOXNhV1FnUUhOMVkyTmxjM05mWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUhOMVkyTmxjM05mZEdsd1gySm5YMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgyVnljbTl5SUh0Y2NseHVJQ0FnSUNBZ0lDQmliM0prWlhJdGJHVm1kRG9nTlhCNElITnZiR2xrSUVCa1lXNW5aWEpmWTI5c2IzSTdYSEpjYmlBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nUUdSaGJtZGxjbDkwYVhCZlltZGZZMjlzYjNJN1hISmNiaUFnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0F1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNjbHh1SUNBZ0lDQWdkMmxrZEdnNklEQTdYSEpjYmlBZ0lDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN1hISmNibHh5WEc0Z0lDQWdJQ0F1YjNWMGJHbHVaUzFwWTI5dUlIdGNjbHh1SUNBZ0lDQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE8xeHlYRzRnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1YMnhwWjJoMElIdGNjbHh1SUNBZ0lHMXBiaTEzYVdSMGFEb2dNVGd3Y0hnN1hISmNiaUFnSUNCd1lXUmthVzVuT2lBd0lEUXdjSGc3WEhKY2JseHlYRzRnSUNBZ0ppNXZkWFJzYVc1bExXMWxjM05oWjJVZ2UxeHlYRzRnSUNBZ0lDQW1YMmx1Wm04Z2UxeHlYRzRnSUNBZ0lDQWdJQzV2ZFhSc2FXNWxMVzFsYzNOaFoyVmZYMmxqYjI0Z2UxeHlYRzRnSUNBZ0lDQWdJQ0FnWTI5c2IzSTZJRUJ3Y21sdFlYSjVYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDQWdKbDkzWVhKdWFXNW5JSHRjY2x4dUlDQWdJQ0FnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lHTnZiRzl5T2lCQWQyRnlibWx1WjE5amIyeHZjanRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0FnSUNaZmMzVmpZMlZ6Y3lCN1hISmNiaUFnSUNBZ0lDQWdMbTkxZEd4cGJtVXRiV1Z6YzJGblpWOWZhV052YmlCN1hISmNiaUFnSUNBZ0lDQWdJQ0JqYjJ4dmNqb2dRSE4xWTJObGMzTmZZMjlzYjNJN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0lDQW1YMlZ5Y205eUlIdGNjbHh1SUNBZ0lDQWdJQ0F1YjNWMGJHbHVaUzF0WlhOellXZGxYMTlwWTI5dUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUdOdmJHOXlPaUJBWkdGdVoyVnlYMk52Ykc5eU8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDNXZkWFJzYVc1bExXMWxjM05oWjJWZlgybGpiMjRnZTF4eVhHNGdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCQWQyaHBkR1U3WEhKY2JpQWdJQ0I5WEhKY2JpQWdmVnh5WEc1Y2NseHVJQ0FtWDNKdmRXNWtJSHRjY2x4dUlDQWdJQzV5WVdScGRYTW9NakJ3ZUNrN1hISmNibHh5WEc0Z0lDQWdKaTV2ZFhSc2FXNWxMVzFsYzNOaFoyVWdlMXh5WEc0Z0lDQWdJQ0FtWDJSbFptRjFiSFFnZTF4eVhHNGdJQ0FnSUNBZ0lHMXBiaTEzYVdSMGFEb2dNVGd3Y0hnN1hISmNiaUFnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0EwTUhCNE8xeHlYRzVjY2x4dUlDQWdJQ0FnSUNBdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDE5cFkyOXVJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDNXlZV1JwZFhNb01UQndlQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQjBiM0E2SURFd2NIZzdYSEpjYmlBZ0lDQWdJQ0FnSUNCc1pXWjBPaUF4TUhCNE8xeHlYRzRnSUNBZ0lDQWdJQ0FnZDJsa2RHZzZJREl3Y0hnN1hISmNiaUFnSUNBZ0lDQWdJQ0JvWldsbmFIUTZJREl3Y0hnN1hISmNiaUFnSUNBZ0lDQWdJQ0JzYVc1bExXaGxhV2RvZERvZ01qQndlRHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJaMWJHd3RkMmxrZEdnZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYldsdUxYZHBaSFJvT2lBeU1EQndlRHRjY2x4dUlDQWdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklEQWdNakJ3ZUNBd0lEUXdjSGc3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBbVgzQnNZV2x1SUh0Y2NseHVJQ0FnSUNBZ0lDQnRhVzR0ZDJsa2RHZzZJREU1TlhCNE8xeHlYRzRnSUNBZ0lDQWdJSEJoWkdScGJtYzZJREFnTkRCd2VDQXdJREl3Y0hnN1hISmNibHh5WEc0Z0lDQWdJQ0FnSUNZdWIzVjBiR2x1WlMxdFpYTnpZV2RsWDJaMWJHd3RkMmxrZEdnZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnYldsdUxYZHBaSFJvT2lBeU1UVndlRHRjY2x4dUlDQWdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklEQWdNakJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQjlYSEpjYmx4eVhHNGdJQ1pmWm5Wc2JDMTNhV1IwYUNCN1hISmNiaUFnSUNCdGFXNHRkMmxrZEdnNklESXdNSEI0TzF4eVhHNGdJQ0FnY0dGa1pHbHVaem9nTUNBeE1IQjRJREFnTlRCd2VEdGNjbHh1WEhKY2JpQWdJQ0FtTG05MWRHeHBibVV0YldWemMyRm5aU0I3WEhKY2JpQWdJQ0FnSUNaZmNHeGhhVzRnZTF4eVhHNGdJQ0FnSUNBZ0lHMXBiaTEzYVdSMGFEb2dNak13Y0hnN1hISmNiaUFnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dNQ0F4TUhCNElEQWdNVFZ3ZUR0Y2NseHVJQ0FnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJQ0FnSmw5c2FXZG9kQ0I3WEhKY2JpQWdJQ0FnSUNBZ2JXbHVMWGRwWkhSb09pQXlNVEJ3ZUR0Y2NseHVJQ0FnSUNBZ0lDQndZV1JrYVc1bk9pQXdJREV3Y0hnZ01DQTBNSEI0TzF4eVhHNGdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNBbVgzWnBjMmxpYkdVZ2UxeHlYRzRnSUNBZ2IzQmhZMmwwZVRvZ01UdGNjbHh1SUNCOVhISmNibHh5WEc0Z0lDWmZhR2xrWkdWdUlIdGNjbHh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVU3WEhKY2JpQWdmVnh5WEc1OVhISmNiaUlzSWk4cUlEMDlQVDA5SUZOamNtOXNiR0poY2lBOVBUMDlQU0FxTDF4eVhHNDZPaTEzWldKcmFYUXRjMk55YjJ4c1ltRnlJSHRjY2x4dUlDQjNhV1IwYURvZ04zQjRPMXh5WEc0Z0lHaGxhV2RvZERvZ04zQjRPMXh5WEc0Z0lDMTNaV0pyYVhRdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE8xeHlYRzVjY2x4dUlDQW1MWFJ5WVdOckxYQnBaV05sSUh0Y2NseHVJQ0FnSUMxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnSmkxMGFIVnRZaUI3WEhKY2JpQWdJQ0FtT25abGNuUnBZMkZzSUh0Y2NseHVJQ0FnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2NtZGlZU2d3TENBd0xDQXdMQ0F3TGpJMUtUdGNjbHh1SUNBZ0lDQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdYSEpjYmlBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSmpwb2IzSnBlbTl1ZEdGc0lIdGNjbHh1SUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqSTFLVHRjY2x4dUlDQWdJQ0FnTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQTFjSGc3WEhKY2JpQWdJQ0I5WEhKY2JseHlYRzRnSUNBZ0pqcG9iM1psY2lCN1hISmNiaUFnSUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0ek5TazdYSEpjYmlBZ0lDQjlYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQW1PbWh2ZG1WeUlIdGNjbHh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eE5TazdYSEpjYmlBZ2ZWeHlYRzU5WEhKY2JpSmRmUT09ICovXG4iXSwiZmlsZSI6Im91dGxpbmUubWluLmNzcyJ9 */ diff --git a/outline.min.js b/outline.min.js index 42a47cb..a370647 100644 --- a/outline.min.js +++ b/outline.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Outline=e()}(this,(function(){"use strict";const t=t=>Object.prototype.toString.apply(t),e=e=>"function"==typeof e||"[object Function]"===t(e),s=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return!!e(t)&&setTimeout((()=>{t()}),s)},i=s=>("[object Object]"===t(s)||"object"==typeof s||e(s))&&null!==s,r=e=>Array.isArray?Array.isArray(e):"[object Array]"===t(e),n=t=>{let e={};return null===t?null:(r(t)?e=Array.from(t):(e=Object.assign({},t),Object.keys(e).forEach((s=>e[s]=i(t[s])?n(t[s]):t[s]))),e)},l=(t,e,s)=>{const i={},r=[];return t.forEach(((t,s)=>{i[t[e]]=s,t.children=[]})),t.forEach((e=>{const n=t[i[e[s]]];-1!==e[s]?n.children.push(e):r.push(e)})),r},o=t=>"string"==typeof t,h=t=>!!(i(t)&&t.nodeName&&t.tagName&&1===t.nodeType),a=(t,e)=>{const s=new RegExp("(\\s|^)"+e+"(\\s|$)");let i,r;return!!h(t)&&(i=t.className,!!i&&(r=t.classList,r&&r.contains?t.classList.contains(e):!!s.exec(i)))},c=(t,e)=>{var s;let i,r;if(a(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.add?i.add(e):(r=t.className,r+=r.length>0?" "+e:e,t.className=r)},d=t=>t*t,u=function(){let t,e,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return s?o(s)?e=document.querySelector(s):h(s)&&(e=s):(t=document.querySelectorAll("html,body"),e=t[0].scrollTop-t[1].scrollTop>=0?t[0]:t[1]),e},m=(t,s,i)=>{const r=u(t);let n=r.scrollTop,l=0;const o=s-n,h=r.scrollHeight,a=s-h<=0?s:h,c=t=>(e(i)&&i(t),!1),m=()=>{if(l+=1,o<0){if(n-=d(l),r.scrollTop=n,n<=s)return r.scrollTop=s,c(s)}else if(n+=d(l),r.scrollTop=n,n>=a)return r.scrollTop=a,c(a);requestAnimationFrame(m)};requestAnimationFrame(m)},p=(t,e)=>{const s=Object.prototype.hasOwnProperty;return t&&s.call(t,e)},g=(t,e)=>{Object.keys(e).forEach((s=>{p(e,s)&&(t[s]=e[s])}))},f={},b=t=>p(f,t)&&f[t].length>0,y=function(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?b(t):(t=>{let e=b(t),s=t.lastIndexOf(".");for(;!e&&-1!==s;)s=(t=t.substring(0,s)).lastIndexOf("."),e=b(t);return e})(t)},$=function(e,s){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r=e=>{if(!b(e))return!1;f[e].forEach((e=>{const i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object BigInt64Array]","[object BigUint64Array]"].indexOf(t(s))>-1?s.toString():s;e.callback.call(e.context||e,i)}))},n=()=>{let t=e,s=e.lastIndexOf(".");for(;-1!==s;)t=t.substring(0,s),s=t.lastIndexOf("."),r(t);r(e),r("*")};if(!y(e))return!1;i?setTimeout(n,10):n()},v=(()=>{let t=0;return e=>(t+=1,e?e+"-"+t:"guid-"+t)})(),_=t=>{if(!p(f,t))return!1;delete f[t]},x=(t,e)=>{if(!y(t))return!1;e?(t=>{const e=Object.keys(f);if(!t||e.length<1)return!1;e.forEach((e=>{const s=f[e];let i;s.forEach(((e,r)=>{e.callback!==t&&e.token!==t||(i=e.topic,s.splice(-1,r))})),s.length<1&&_(i)}))})(e):_(t)};class T{constructor(t){this.attrs={},t&&this.initialize(t)}initialize(t){return this.attr(t).render().addListeners(),this}attr(t,e){const s=this.attrs;return o(t)?e&&p(s,t)?(s[t]=e,this):s[t]:i(t)?(g(s,t),this):0===arguments.length?s:this}render(){return this}refresh(){return this}destroy(){return this.removeListeners(),this}reload(t){let e=this.attr();return t&&(e=this.attr(t)),this.destroy().initialize(e),this}$emit(t,e){return $(t,e),this}$on(t,s){return function(t,s){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const r=v();let n="symbol"==typeof t?t.toString():t;e(s)&&(f[n]||(f[n]=[]),f[n].push({topic:n,callback:s,context:i,token:r}))}(t,s,this),this}$off(t,e){return x(t,e),this}addListeners(){return this}removeListeners(){return this}}const w=[];let C,E;function L(t){for(;t.timeRemaining()>0&&w.length;){const t=w.shift();if(!e(t))return!1;t()}w.length?C=requestIdleCallback(L):(C=0,e(E)&&(E(),E=null))}void 0===window.requestIdleCallback&&(window.requestIdleCallback=function(t){const e=Date.now();return s((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),10)},window.cancelIdleCallback=function(t){clearTimeout(t)});const z=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;w.push(t),e(s)&&(E=s),C||requestIdleCallback(L)},S=t=>{let e=t.offsetTop;return null!==t.offsetParent&&(e+=S(t.offsetParent)),e},M=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=e.replace(/^>/i,"");return!!(e&&s&&t)&&(t.matches?t.matches(s):!!t.msMatchesSelector&&t.msMatchesSelector(s))},k=t=>t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode,A=["focusout","blur","focusin","focus","load","unload","mouseenter","mouseleave"],N=(t,e,s)=>{const i=A.indexOf(e)>-1;s._delegateListener&&delete(s=s._delegateListener)._delegateListener,function(t,e,s){const i=t._listeners;let r=-1;if(i.length<1)return!1;i.forEach(((t,i)=>{const n=t.fn;e===t.type&&(r=i,n===s&&(r=i))})),r>-1&&i.splice(r,1)}(t,e,s),t.removeEventListener(e,s,i)},H=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=o(t)?document.querySelector(t):t,r=i.childNodes,n=((t,e)=>{let s=t._listeners||[];return o(e)&&e&&(s=s.filter((t=>t.type===e))),s})(i,e);n.forEach((t=>{N(i,t.type,t.fn)})),(s||!0===e||1===arguments.length)&&i&&r&&r.forEach((t=>{h(t)&&H(t,e,s)}))},O=(t,s,i)=>{if(!e(i))return H(t,s),!1;N(t,s,i)},D=function(t,e,s,i,r,n){let l=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const o=A.indexOf(s)>-1,h=function(o){const a=function(t){const e=t.target;return(s=e)&&3===s.nodeType?s.parentNode:s;var s}(o),c=((t,e,s,i)=>{const r=s||document;if(!t)return null;do{if(null!=e&&(e.startsWith(">")?t.parentNode===r&&M(t,e):M(t,e))||i&&t===r)return t;if(t===r)break}while(t=k(t))})(a,e,t);let d=n||t;o.delegateTarget=c,!0===n&&(d=r),c&&(!0===l&&O(t,s,h),i.call(d,o,r))};if(!t)return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,selector:e,type:s,fn:h,data:r,context:n,capture:o}),i._delegateListener=h,t.addEventListener(s,h,o)},F=function(t){t.stopPropagation(),t.preventDefault()},q=['','','','','','','','','','','','','','','','','','',''],j=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";return o(t)?function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";const s=/id="(.*?)"/,i=/^(\w+)-/;return q.find((r=>{const n=s.exec(r)[1];return i.exec(n)[1]===e&&n===("icon"===e?`${e}-${t}`:`${e}-icon-${t}`)}))}(t,e):[...q]},I=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=document.body;let s=document.querySelector("#outline-icons"),i=[];(t=>{if(!t)return!1;r(t)&&t.length>0?t.forEach((t=>{-1===q.indexOf(t)&&o(t)&&q.push(t)})):o(t)&&q.push(t)})(t),i=j(),s?s.innerHTML=i.join(""):(s=document.createElement("div"),s.innerHTML=``,e.insertBefore(s.firstChild,e.firstChild))},R=t=>!!o(t)&&t.replace(/(^\s+)|(\s+$)/g,""),U=e=>{return!(!i(e)||!(h(e)||(e=>!(!i(e)||"[object NodeList]"!==t(e)))(e)||(s=e,i(s)&&"[object DocumentFragment]"===t(s))||(e=>!(!i(e)||!("[object Text]"===t(e)||e.tagName&&3===e.nodeType)))(e)));var s},B=(t,e,s)=>{let i=t.tagName.toLowerCase();switch(e){case"style":t.style.cssText=s;break;case"value":"input"===i||"textarea"===i?t.value=s:t.setAttribute(e,s);break;case"htmlFor":t.setAttribute("for",s);break;case"className":t.className=s;break;case"innerHTML":t.innerHTML=s;break;case"innerText":t.innerText=s;break;default:t.setAttribute(e,s)}},P=(t,e)=>{if(!t||!i(e))return!1;Object.keys(e).forEach((s=>{const i=e[s];p(e,s)&&B(t,s,i)}))},V=(t,e,s)=>{const n=document.createDocumentFragment(),l=document.createElement(t),h=t=>U(t)||o(t),a=t=>{let e;if(!h(t))return!1;U(t)?e=t:o(t)&&(e=document.createTextNode(t)),n.appendChild(e)};return i(e)?P(l,e):r(e)&&e.every((t=>h(t)))?e.forEach((t=>{a(t)})):U(e)?a(e):o(e)&&a(document.createTextNode(e)),r(s)?s.forEach((t=>{a(t)})):a(s),l.appendChild(n),l},W=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s="outline-icon",i=e.size||0,n=e.color||"",l=e.iconSet||"",h=r(i)?i[0]:i,a=r(i)?i[1]:i,c=i?`width:${h}px;height:${a}px;`:"",d=n?c+`color:${n}`:c,u=e.attrs||{},m=document.createElement("i");let p,g="",f="";return o(t)?((t=>{const e=new RegExp("^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<\\!doctype svg[^>]*\\s*(?:\\[?(?:\\s*]*>\\s*)*\\]?)*[^>]*>\\s*)?]*>[^]*<\\/svg>\\s*$\\s*$","i");return o(t)&&e.test(t)})(t)?f=t:(g=l&&"icon"!==l?`xlink:href="#${l}-icon-${t}"`:`xlink:href="#icon-${t}"`,f=``),m.innerHTML=f,u.className?u.className=`${s} ${u.className}`:u.className=s,P(m,u),p=m.querySelector("svg"),P(p,{"aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",class:"outline-icon__svg",width:200,height:200,style:d}),m):null},Q=function(t){return W(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},J=(t,e)=>{var s;let i,r=t.className;if(!r||!a(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.remove?i.remove(e):(r=R(r.replace(e,"")),t.className=r)},Y=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const i="outline-heading",r=t.innerHTML;let n;if(t.innerHTML=r.replace(/^\d+(\.?\d+)*\s?/gi,""),t.removeAttribute("id"),t.removeAttribute("data-id"),J(t,i),!e)return!1;var l;n=t.querySelector(`.${i}__anchor`),s&&J(t,`${i}_start`),l=R(t.className),o(l)&&""===l&&t.removeAttribute("class"),n&&t.removeChild(n)},G=function(t){let s=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=1,l=0,h="";const a=[];return t.forEach(((t,s)=>{const r=t.tagName,c=r.replace(/h/i,"");let d=parseInt(c,10),u=-1;var m;d>n?(l+=1,u=1===l?-1:s-1):d===n||dl?1===d?(l=1,u=-1):u=a[s-1].pid:d<=l&&(1===d?l=1:(l-=n-d,l<=1&&(l=1)),u=1===l?-1:((t,e,s)=>{let i,r,n=t[s-1];for(r=0;r]+(>|$)/g,""):"",e(i)&&(h=i(h)),a.push({id:s,pid:u,level:l,rel:`heading-${s}`,text:h,tagName:r})})),s?(t=>{const e={};return t.forEach((t=>{const s=JSON.stringify((t=>[t.pid])(t));e[s]=e[s]||[],e[s].push(t),t.index=e[s].length,-1===t.pid&&(t.code=String(t.index))})),Object.keys(e).forEach((t=>{e[t].forEach((t=>{const s=e[`[${t.id}]`];if(!s||!r(s))return!1;s.forEach((e=>{e.code=t.code+"."+e.index}))}))})),t})(a):a};class K extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(K.DEFAULTS),this.$articleElement=null,this.$scrollElement=null,this.$headings=[],this.chapters=[],this}initialize(t){const s=this.attr("showCode")||!0;let i,r,n,l,a;return this.attr(t),a=this.attr("articleElement"),r=this.attr("scrollElement"),n=this.attr("selector"),i=this.attr("created"),o(a)?l=document.querySelector(a):h(a)&&(l=a),l?(this.$articleElement=l,this.$scrollElement=u(r),this.$headings=[...l.querySelectorAll(n)],this.$headings.length<1||(this.chapters=G(this.$headings,s,this.attr("chapterTextFilter")),e(i)&&i.call(this),this.render().addListeners()),this):this}getChapters(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=this.chapters;return t?l(e,"id","pid"):e}count(){return this.chapters.length}render(){const t=this.attr("mounted");return I(),this._paint(this.chapters),e(t)&&t.call(this),this}erase(){return this._remove(),this}_paint(t){const e=400,s=this.attr("hasAnchor"),i=this.attr("isAtStart"),r=this.attr("showCode"),n=this.attr("anchorURL"),l=this.count(),o=[...this.$headings],h=(l,o)=>{l.forEach(((l,h)=>{const a=h+o*e,c=t[a].code;((t,e,s)=>{const i="outline-heading",r=s.hasAnchor||!0,n=s.isAtStart||!0,l=s.showCode||!1,o=s.chapterCode||"",h=s.anchorURL||"",a=`heading-${e}`,c={id:a,className:n?`${i} ${i}_start`:i,"data-id":e},d=R(t.innerHTML);let u,m;if(l&&(c.innerHTML=o+" "+d),P(t,c),!r)return!1;m=Q("hash",{iconSet:"outline"}),u=V("a",{id:`anchor-${e}`,className:`${i}__anchor anchor-${e}`,href:h||`#${a}`,target:h?"_blank":"self","data-id":e},m),t.appendChild(u)})(l,a,{hasAnchor:s,isAtStart:i,showCode:r,chapterCode:c,anchorURL:n})}))};let a=-1;if(l>e)for(a+=1,h(o.splice(0,e),0);o.length>0;){const t=o.splice(0,e);z((()=>{h(t,a+=1)}),(()=>{this.$emit("anchors:all:paint")}))}else h(o,0);return this}_remove(){const t=this.attr("hasAnchor"),e=this.attr("isAtStart");return this.$headings.forEach((s=>{Y(s,t,e)})),this}refresh(t){const e=this.$articleElement,s=this.attr("selector");return this.$headings=[...e.querySelectorAll(s)],this.chapters=t,this.erase()._paint(t),this}scrollTo(t,e){const s=this.$scrollElement;return m(s,t,e),this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}onAnchorTrigger(t){const i=this.attr("anchorURL"),r=this.attr("afterScroll"),n=this.attr("stickyHeight"),l=t.delegateTarget.parentNode,o=S(l)-(n+10),h=this.$scrollElement,a=h.scrollHeight-h.clientHeight;return this.scrollTo(o,(()=>{e(r)&&r.call(this,"anchor"),s((()=>{this.$emit("toolbar:update",{top:o,min:0,max:a})}))})),i||F(t),this}addListeners(){const t=this.$articleElement;return this.count()<1||D(t,".outline-heading__anchor","click",this.onAnchorTrigger,this,!0),this}removeListeners(){const t=this.$articleElement;return this.count()<1||O(t,"click",this.onAnchorTrigger),this}}K.DEFAULTS=n({scrollElement:"html,body",articleElement:"#article",selector:"h1,h2,h3,h4,h5,h6",stickyHeight:0,anchorURL:"",hasAnchor:!0,isAtStart:!0,showCode:!1,created:null,mounted:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,chapterTextFilter:null});const X=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],Z=t=>{let e,s,i;return!!o(t)&&(e=R(t).slice(0,1e3),s=/\s*|]*>|]*>|]+>/i,i=new RegExp(X.map((t=>`<${t}\\b[^>]*>`)).join("|"),"i"),s.test(e)||i.test(e))},tt=t=>t.replace(/]*>.*?<\/script>/gi,""),et=(t,e)=>{document.documentElement.style.setProperty(t,e)};let st=2e3;const it=t=>(t?st=t:st+=1,et("--outline-zIndex",`${st}`),st);class rt extends T{constructor(t){super(),this._default(),this.zIndex=0,t&&this.initialize(t)}_default(){return this.attrs=n(rt.DEFAULTS),this.title="",this.closed=!1,this.$el=null,this.$modal=null,this.$header=null,this.$title=null,this.$close=null,this.$main=null,this.$footer=null,this.$overlay=null,this}initialize(t){let s;return this.attr(t),this.title=this.attr("title"),s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}setTitle(t){return this.attr("title",t),this.title=t,this.$title.innerHTML=t,this}isClosed(){return this.closed}render(){const t=this.attr("mounted"),s=this.attr("size"),i=this.attr("placement"),r=this.attr("hasClose"),n=this.attr("hasOverlay"),l=this.attr("hasOffset"),o=this.attr("hasPadding"),h=this.attr("autoHeight"),a=this.attr("customClass");let d,u,m,p,g,f,b,y;return I(),this.zIndex=it(),p=V("h2",{className:"outline-drawer__title"},this.title),this.$title=p,r&&(g=V("div",{className:"outline-drawer__close"},Q("close",{iconSet:"outline",size:20})),this.$close=g),m=V("header",{className:"outline-drawer__header"},[p,g]),this.$header=m,f=V("div",{className:"outline-drawer__main"}),this.$main=f,o||c(f,"outline-drawer_full"),b=V("footer",{className:"outline-drawer__footer"}),this.$footer=b,u=V("div",{className:`outline-drawer__modal outline-drawer_${i} outline-drawer_${s} outline-drawer_closed`},[m,f,b]),this.$modal=u,l&&c(u,"outline-drawer_offset"),h&&c(u,"outline-drawer_auto"),a&&c(u,a),n&&(y=V("div",{className:"outline-drawer__overlay"}),this.$overlay=y),d=V("div",{className:"outline-drawer"},[u,y]),this.$el=d,document.body.appendChild(d),e(t)&&t.call(this),this}erase(){return this.$main.innerHTML="",this}_paint(t){let s=null;return e(t)?s=t():U(t)?s=t:Z(t)&&(s=((t,e)=>{const s=document.createDocumentFragment();if(!t||!Z(t)&&!o(t)&&!h(t))return null;if(Z(t)){const e=V("div");let i=[];return e.innerHTML=tt(t),i=[...e.childNodes],i.forEach((t=>{s.appendChild(t)})),s}if(!o(e))return t.innerHTML;t.innerHTML=tt(e)})(t)),s&&this.$main.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.erase()._paint(t),this}open(){const t=this.attr("afterOpened"),i=this.$modal;return c(this.$el,"outline-drawer_opened"),J(i,"outline-drawer_closed"),c(i,"outline-drawer_opened"),s((()=>{this.closed=!1,e(t)&&t.call(this)})),this}close(){const t=this.attr("afterClosed"),i=this.$modal;return J(i,"outline-drawer_opened"),c(i,"outline-drawer_closed"),s((()=>{J(this.$el,"outline-drawer_opened"),this.closed=!0,e(t)&&t.call(this)})),this}toggle(){const t=this.attr("afterToggle"),i=this.isClosed();return i?this.open():this.close(),e(t)&&s((()=>{t.call(this,i)})),this}destroy(){const t=this.attr("afterDestroy"),s=this.attr("beforeDestroy");let i=this.zIndex;return e(s)&&s.call(this),this.removeListeners()._remove()._default(),i-=1,it(i),this.zIndex=0,e(t)&&t.call(this),this}onClose(){return this.close(),this}addListeners(){const t=this.attr("hasClose"),e=this.attr("hasOverlay"),s=this.attr("closeOnClickModal"),i=this.$el;return t&&D(i,".outline-drawer__close","click",this.onClose,this,!0),e&&s&&D(i,".outline-drawer__overlay","click",this.onClose,this,!0),this}removeListeners(){const t=this.attr("hasClose"),e=this.attr("hasOverlay"),s=this.$el;return t||e?(O(s,"click",this.onClose),this):this}}rt.DEFAULTS=n({placement:"rtl",title:"标题",size:"regular",hasClose:!0,hasOverlay:!0,hasOffset:!1,hasPadding:!0,autoHeight:!0,closeOnClickModal:!0,created:null,mounted:null,afterClosed:null,afterOpened:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,afterToggle:null});const nt=function(t,s,i,r,n){let l=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const o=A.indexOf(s)>-1,h=function(e){let o=n||t;!0===n&&(o=r),!0===l&&O(t,s,h),i.call(o,e,r)};if(!e(i))return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,type:s,fn:h,data:r,context:n,capture:o}),i._delegateListener=h,t.addEventListener(s,h,o)},lt=(t,e)=>getComputedStyle(t)[e];class ot extends T{constructor(t){super(),this._default(),this.scrollTimer=null,this.resizeTimer=null,this.observerTimer=null,this.Observer=null,t&&this.initialize(t)}_default(){return this.attrs=n(ot.DEFAULTS),this.$el=null,this.$title=null,this.$main=null,this.$list=null,this.$placeholder=null,this.$parentElement=null,this.$scrollElement=null,this.$active=null,this.chapters=[],this.active=0,this.offsetWidth=0,this.offsetTop=0,this.playing=!1,this.closed=!1,this}initialize(t){let s,i,r,n;return this.attr(t),s=this.attr("created"),i=this.attr("parentElement"),r=this.attr("scrollElement"),o(i)?n=document.querySelector(i):h(i)&&(n=i),this.$parentElement=n,this.$scrollElement=u(r),this.chapters=this.attr("chapters"),this.closed=this.attr("closed"),this.active=this.attr("active"),e(s)&&s.call(this),this.chapters.length<1||(this.render().addListeners(),this.$active=document.querySelector(`#chapter-${this.active}`)),this}isClosed(){return this.closed}isSticky(){return"sticky"===this.attr("position")}isFixed(){return"fixed"===this.attr("position")}isInside(){return this.isFixed()||this.isSticky()}isOutside(){return!this.isInside()}count(){return this.chapters.length}_paintEdge(){const t=document.createDocumentFragment(),e=this.attr("title"),s=this.attr("animationCurrent"),i=this.attr("customClass"),r=this.$parentElement,n=[],l=[];let o,h,a,d,u=null;return r?(this.isInside()&&e&&(u=V("h2",{className:"outline-chapters__title"},e),this.$title=u,l.push(u)),a=V("ul",{className:"outline-chapters__list"}),this.$list=a,n.push(a),s&&(d=V("div",{className:"outline-chapters__placeholder"}),this.$placeholder=d,n.push(d)),h=V("div",{className:"outline-chapters__main"},n),this.$main=h,l.push(h),o=V("nav",{id:"outline-chapters",className:"outline-chapters outline-chapters_hidden"},l),this.$el=o,this.isSticky()&&(this.calculateStickyHeight(),c(o,"outline-chapters_sticky")),i&&c(o,i),t.appendChild(o),r.appendChild(t),this):this}render(){const t=this.attr("mounted"),i=this.$parentElement,r=this.chapters,n=this.count();let l;return!i||r.length<1||(this.isInside()&&c(i,"outline-chapters-parent"),this._paintEdge(),l=this.$el,this._paint(r),s((()=>{this.highlight(this.active)}),60),this.offsetTop=S(l),this.offsetWidth=l.offsetWidth,this.isFixed()&&(this.sticky(),et("--outline-chapters-width",`${this.offsetWidth}px`)),e(t)&&t.call(this),n<400&&this.onObserver()),this}erase(){return this.$list.innerHTML="",this}_paint(t){const e=this.attr("showCode"),s=this.$el;return function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=e.length,r=[...e],n=e=>{const i=e=>t.querySelector(`#${e}`);e.forEach((e=>{const r=e.pid,n=e.id,l=e.rel,o=[],h=V("span",{className:"outline-chapters__text"},e.text);let a,c,d,u,m;s&&(c=V("span",{className:"outline-chapters__code","data-id":n},e.code),o.push(c)),o.push(h),a=V("a",{id:`chapter__anchor-${n}`,className:"outline-chapters__anchor",href:"#"+l,rel:l,"data-id":n},o),d=V("li",{id:`chapter-${n}`,className:"outline-chapters__item","data-id":n},a),-1===r?t.appendChild(d):(m=i(`chapter-${r}`),u=i(`subject-${r}`),u?u.appendChild(d):(u=V("ul",{id:"subject-"+r,className:"outline-chapters__subject"},d),m.appendChild(u)))}))};if(i>400)for(n(r.splice(0,400));r.length>0;){const t=r.splice(0,400);z((()=>{n(t)}))}else n(r)}(this.$list,t,e),J(s,"outline-chapters_hidden"),this}_remove(){return this.$parentElement.removeChild(this.$el),this}refresh(t){const e=this.$el;return J(e,"outline-chapters_hidden"),this.erase()._paint(t),this}_getPlaceholderOffset(t){const e=this.$main,s=this.$list,i=s.querySelector(".outline-chapters__anchor"),r=this.attr("animationCurrent"),n=parseInt(lt(e,"padding-top"),10),l=parseInt(lt(e,"border-top-width"),10),o=parseInt(lt(s,"padding-top"),10),h=parseInt(lt(s,"margin-top"),10),a=parseInt(lt(s,"border-top-width"),10);let c,d=i.offsetHeight,u=0;return r?(n&&(u+=n),o&&(u+=o),h&&(u+=h),l&&(u+=l),a&&(u+=a),c=d*t,u+c):this}positionPlaceholder(t){const e=this.$list,s=this.$placeholder,i=e.querySelector(".outline-chapters__anchor"),r=this.attr("animationCurrent"),n=i.offsetHeight;let l=0;return r?(l=this._getPlaceholderOffset(t),s.style.cssText=`transform: translateY(${l}px);height:${n}px;`,this):this}highlight(t){const e=this.$el,i=this.attr("animationCurrent"),r="outline-chapters_active",n="outline-chapters_highlight";let l=null,o=0;return e?(l=e.querySelector(`#chapter__anchor-${t}`),l?(this.active=parseInt(l.getAttribute("data-id"),10),this.$active&&(J(this.$active,n),J(this.$active,r)),this.$active=l,c(this.$active,r),i?(this.positionPlaceholder(this.active),s((()=>{((t,e)=>{let s,i;return!(!h(t)||!h(e))&&(s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),i.top>=s.top&&i.right<=s.right&&i.bottom<=s.bottom&&i.left>=s.left)})(this.$active,this.$parentElement)||(o=this._getPlaceholderOffset(this.active),m(this.$main,o))}))):c(this.$active,n),this):this):this}sticky(){const t=this.attr("afterSticky"),s="outline-chapters_fixed",i=this.$el,r=this.offsetTop,n=this.$scrollElement.scrollTop;let l;return this.isFixed()?(l=n>=r,l?c(i,s):J(i,s),e(t)&&t.call(this,this.isClosed(),l),this):this}calculateStickyHeight(){const t=document.documentElement,e=Math.max(t.clientHeight||0,window.innerHeight||0);return et("--outline-sticky-height",`${e}px`),this}scrollTo(t,e){const s=this.$scrollElement;return m(s,t,e),this}show(){const t="outline-chapters_hidden",i=this.attr("afterOpened"),r=this.count(),n=this.$el,l=this.$parentElement;return this.isInside()?r>800?J(l,t):(J(l,t),s((()=>{J(l,"outline-chapters_folded")}),30)):J(n,t),this.closed=!1,e(i)&&i.call(this),this}hide(){const t="outline-chapters_hidden",i=this.attr("afterClosed"),r=this.count(),n=this.$el,l=this.$parentElement;return this.isInside()?r>800?c(l,t):(c(l,"outline-chapters_folded"),s((()=>{c(l,t)}))):c(n,t),this.closed=!0,e(i)&&i.call(this),this}toggle(){const t=this.attr("afterToggle"),i=this.offsetTop,r=this.$scrollElement.scrollTop;let n;return this.isClosed()?this.show():this.hide(),e(t)&&s((()=>{n=r>=i,t.call(this,this.isClosed(),n)})),this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.removeListeners()._remove()._default(),this.scrollTimer&&(clearTimeout(this.scrollTimer),this.scrollTimer=null),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null),this.observerTimer&&(clearTimeout(this.observerTimer),this.observerTimer=null),this.Observer&&(this.Observer=null),e(s)&&s.call(this),this}onObserver(){const t=this.attr("selector");return this.Observer=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=s.root||null,r=s.selector||".outline-heading",n=s.context||null,l={rootMargin:s.rootMargin||"0px 0px -90% 0px"},o=new IntersectionObserver((s=>{s.forEach((s=>{s.intersectionRatio>0&&e(t)&&t.call(n||s.target,s.target)}))}),l),a=h(i)?i:document;return i&&(l.root=i),a.querySelectorAll(r).forEach((t=>{o.observe(t)})),o}((t=>{const e=t.getAttribute("data-id");if(this.playing)return!1;this.observerTimer&&clearTimeout(this.observerTimer),this.observerTimer=s((()=>{this.highlight(e)}),100)}),{selector:t,context:this}),this}onSelect(t){const i=this.attr("stickyHeight"),r=t.delegateTarget,n=r.getAttribute("data-id"),l=r.href.split("#")[1],o=document.querySelector(`#${l}`),h=S(o)-(i+10),a=this.$scrollElement.scrollHeight,c=this.attr("afterScroll"),d=()=>{e(c)&&c.call(this,"chapter"),s((()=>{this.playing=!1,this.$emit("toolbar:update",{top:h,min:0,max:a})}))};return this.playing=!0,this.isFixed()?(this.sticky(),s((()=>{this.scrollTo(h,d),this.highlight(n)}),10)):(this.scrollTo(h,d),this.highlight(n)),F(t),this}onScroll(){const t=this.$scrollElement;return this.scrollTimer&&clearTimeout(this.scrollTimer),this.scrollTimer=s((()=>{const e=t.scrollTop,s=t.scrollHeight-t.clientHeight;this.isFixed()&&this.sticky(),this.$emit("toolbar:update",{top:e,min:0,max:s})}),100),this}onResize(){return this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=s((()=>{this.calculateStickyHeight()})),this}addListeners(){const t=this.$el,e=this.$scrollElement,s=e.tagName.toLowerCase();let i=e;return this.count()<1||("html"!==s&&"body"!==s||(i=window),D(t,".outline-chapters__anchor","click",this.onSelect,this,!0),nt(i,"scroll",this.onScroll,this,!0),this.isSticky()&&nt(window,"resize",this.onResize,this,!0),this.$on("anchors:all:paint",this.onObserver,this)),this}removeListeners(){const t=this.attr("selector"),e=this.$el,s=this.$scrollElement,i=s.tagName.toLowerCase();let r=s;return this.count()<1||("html"!==i&&"body"!==i||(r=window),O(e,"click",this.onSelect),O(r,"scroll",this.onScroll),this.isSticky()&&O(window,"resize",this.onResize),this.$off("anchors:all:paint"),this.Observer&&document.querySelectorAll(t).forEach((t=>{this.Observer.unobserve(t)}))),this}}ot.DEFAULTS=n({parentElement:"",scrollElement:"",selector:".outline-heading",active:0,closed:!1,showCode:!0,animationCurrent:!0,position:"relative",stickyHeight:0,chapters:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,afterSticky:null});const ht=t=>{const e=Object.getPrototypeOf;let s;if(!(t=>i(t)&&null!==t)(t))return!1;if(s=t.prototype,!s)return!0;for(s=t;null!==e(s);)s=e(s);return e(t)===s},at=t=>{const e={"&":"&","<":"<",">":">","'":"'",'"':"""};return t.replace(/[&<>'"]/g,(t=>e[t]||t))},ct=[];let dt;I();class ut extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(ut.DEFAULTS),this.$el=null,this.id="",this.closed=!1,this.visible=!1,this.offset=-50,this.timer=null,this.destroyed=!1,this}initialize(t){return this.attr(t),this.id=this.attr("id"),this.offset=this.attr("offset")||-50,this.$emit("created",{...this.attr()}),this.render().addListeners(),this.attr("visible")&&this.open(),this}isClosed(){return this.closed}isDestroyed(){return this.destroyed}_getClassName(){const t=this.attr("type"),e=this.attr("effect"),s=this.attr("round"),i=this.attr("closable"),r=this.attr("visible"),n=this.attr("customClass"),l=["outline-message",`outline-message_${t}`,`outline-message_${e}`];return s&&l.push("outline-message_round"),i||l.push("outline-message_full-width"),r&&l.push("outline-message_visible"),n&&l.push(n),l}render(){const t=this.attr("type"),e=this.attr("message"),s=this.attr("effect"),i=this.attr("round"),r=this.attr("closable"),n=this.attr("dangerouslyUseHTMLString"),l=this._getClassName(),o=[];let h,a,d,u,m,p=20;return i&&"default"===s&&(p=12),"plain"!==s&&(h=Q("light"===s?`circle-${t}`:t,{iconSet:"outline",size:p}),c(h,"outline-message__icon"),o.push(h)),n?(d=document.createDocumentFragment(),d.innerHTML=e):d=document.createTextNode(at(tt(e))),a=V("p",{className:"outline-message__content"},[d]),o.push(a),r&&(u=Q("close",{iconSet:"outline",size:18}),c(u,"outline-message__close"),o.push(u)),m=V("div",{className:l.join(" ")},o),m.style.cssText="top:-50px;",this.$el=m,document.body.appendChild(this.$el),this.$emit("mounted"),this}_refreshIcon(){const t=".outline-message_hidden",e=this.$el;let s,i,r,n,l,o,h,a=20;return this.isDestroyed()?this:(l=e.querySelector(".outline-icon"),l?(s=this.attr("type"),i=this.attr("effect"),r=this.attr("round"),"plain"===i?c(l,t):(J(l,t),r&&"default"===i&&(a=12)),o=l.querySelector(".outline-icon__svg"),P(o,{style:`width:${a}px;height:${a}px;`}),h=o.querySelector("use"),n="light"===i?`circle-${s}`:s,B(h,"xlink:href",`#outline-icon-${n}`),this):this)}_refreshMessage(){const t=this.$el;let e,s,i,r;return this.isDestroyed()||(e=t.querySelector(".outline-message__content"),s=this.attr("dangerouslyUseHTMLString"),i=this.attr("message"),r=s?i:at(tt(i)),e.innerHTML=r),this}_refreshClose(){const t=".outline-message_hidden",e=this.$el;let s,i;return this.isDestroyed()||(s=e.querySelector(".outline-message__close"),i=this.attr("closable"),s&&(i?c(s,t):J(s,t))),this}_refreshEl(){const t=this.$el;let e;return this.isDestroyed()||(e=this._getClassName(),B(t,"className",e.join(" "))),this}refresh(t){return ht(t)?(this.attr(t)._refreshIcon()._refreshMessage()._refreshClose()._refreshEl(),this):this}clearTimer(){return this.isDestroyed()||this.timer&&(clearTimeout(this.timer),this.timer=null),this}startTimer(t){return this.isDestroyed()||(this.timer=s((()=>{this.$emit("opened"),this.close()}),1e3*t)),this}open(t){const e=this.$el;let i,r,n,l;return this.isDestroyed()||(this.isClosed()&&this.refresh(t),i=this.attr("offset"),r=this.attr("duration"),n=i&&i>=this.offset?i:this.offset,l=`top:${n}px;`,this.clearTimer(),this.$emit("beforeOpen"),s((()=>{this.visible=!0,c(e,"outline-message_visible"),e.style.cssText=l,r>0&&this.startTimer(r)}),100)),this}close(){const t=this.$el;let i,r;return this.isDestroyed()||(i=this.attr("destroyAfterClosed"),r=this.attr("beforeClose"),e(r)&&r.call(this),t.style.cssText="top:-50px;",J(t,"outline-message_visible"),this.visible=!1,this.closed=!0,s((()=>{this.$emit("closed"),i&&this.destroy()}),500)),this}destroy(){return this.$emit("beforeDestroy"),this.isDestroyed()||(this.removeListeners(),document.body.removeChild(this.$el),clearTimeout(this.timer),this._default(),this.$emit("afterDestroy")),this}onMouseEnter(){return this.clearTimer(),this}onMouseLeave(){const t=this.attr("duration"),e=this.attr("delay");return t<=0||this.startTimer(e),this}onClose(){return this.clearTimer(),this.close(),this}addListeners(){const t=this.$el;return D(t,".outline-message__content","mouseenter",this.onMouseEnter,this,!0),D(t,".outline-message__content","mouseleave",this.onMouseLeave,this,!0),D(t,".outline-message__close","click",this.onClose,this,!0),this}removeListeners(){const t=this.$el;return O(t,"mouseenter",this.onMouseEnter),O(t,"mouseleave",this.onMouseLeave),O(t,"click",this.onClose),this}}ut.DEFAULTS=n({id:"",type:"info",effect:"default",round:!1,offset:30,duration:3,delay:2,message:"",customClass:"",closable:!0,visible:!0,dangerouslyUseHTMLString:!1,destroyAfterClosed:!0,beforeClose:null}),["info","success","warning","error"].forEach((t=>{ut[t]=e=>{const s={},i=v("outline-message-"),r=e.beforeClose||null;let n=e.offset||30;return o(e)?s.message=e:ht(e)&&g(s,e),s.id=i,s.type=t,s.offset=n,s.visible=!1,s.beforeClose=()=>{ut.close(i,r)},dt=new ut(s),ct.forEach((t=>{n+=t.$el.offsetHeight+16})),dt.offset=n,dt.open(),ct.push(dt),dt}})),ut.close=(t,s)=>{const i=ct.length;let r,n,l=-1;if(ct.forEach(((i,r)=>{t===i.id&&(n=i.$el.offsetHeight,l=r,e(s)&&s.call(i),ct.splice(r,1))})),i<=1||-1===l||l>ct.length-1)return!1;for(r=l;r{let t=ct.length-1;for(;t>=0;t-=1)ct[t].close()};class mt{constructor(t,s){this.name=t,e(s)&&(this.action=s)}execute(){return this.action(),this}}class pt{constructor(){this.commands=[]}get(t){return this.commands.find((e=>e.name===t))}add(t){return this.commands.push(t),this}del(t){const e=this.commands,s=e.find((e=>e.name===t)),i=s?e.indexOf(s):-1;return i>-1&&e.splice(i,1),this}clear(){return this.commands=[],this}execute(t){const s=this.commands.find((e=>e.name===t));return e(null==s?void 0:s.execute)&&s.execute(),this}}const gt=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const s=Q(t.icon,{iconSet:t.iconSet||"outline",color:t.color||"",size:t.size}),i=V("a",{className:"outline-toolbar__anchor",href:t.link},s),r=V("div",{className:`outline-toolbar__button ${t.name}`,"data-cmd":t.name},[t.link?i:s]);return c(s,"outline-toolbar__icon"),e&&c(r,"outline-toolbar_rounded"),t.disabled&&c(r,"outline-toolbar_disabled"),r},ft="outline-toolbar_disabled",bt="outline-toolbar_hidden";class yt extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(yt.DEFAULTS),this.disabled=!1,this.closed=!1,this.$el=null,this.buttons=[],this.commands=null,this}initialize(t){let s;return this.attr(t),this.disabled=this.attr("disabled"),this.closed=this.attr("closed"),this.commands=new pt,s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}isDisabled(t){let e;return t?(e=this.get(t),e.disabled):this.disabled}isExist(t){return!!this.get(t)}isClosed(){return this.closed}_getCommand(t){const s=this,{action:i,name:r}=t;let n,l,h=null,a=null;return i?(a=i.handler,n=i.context||this,e(a)?l=a:o(a)&&(l=function(){s.$emit(a,r)}),e(l)&&(h=new mt(r,l.bind(n))),h):h}get(t){return this.buttons.find((e=>e.name===t))}render(){const t=this.attr("mounted"),s=this.attr("buttons")||[],i=this.attr("placement");return I(),this.$el=V("div",{id:v("outline-toolbar"),className:`outline-toolbar outline-toolbar_${i}`}),this._paint(s),document.body.appendChild(this.$el),this.closed&&this.hide(),this.disabled&&this.disable(),e(t)&&t.call(this),this}erase(){return this.$el.innerHTML="",this}_paint(t){const e=this.attr("rounded"),s=document.createDocumentFragment();return t.forEach((t=>{const i=gt(t,e),r=this._getCommand(t),{name:n,disabled:l,context:o}=t;s.appendChild(i),this.isExist(n)||(this.buttons.push({$el:i,name:n,disabled:l||!1,context:o||this}),r&&this.commands.add(r))})),this.$el.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.attr({buttons:t}),this.erase()._paint(t),this}add(t){const e=this.$el,s=document.createDocumentFragment(),n=this.attr("buttons")||[],{name:l,disabled:o,context:h}=t,a=this._getCommand(t),c=t=>{const e=gt(t);s.appendChild(e),n.push(t),this.buttons.push({$el:e,name:l,disabled:o||!1,context:h||this,command:a}),a&&this.commands.add(a)};return i(t)?c(t):r(t)&&t.forEach((t=>{i(t)&&c(t)})),e.appendChild(s),this}remove(t){const e=this.$el,s=this.buttons,i=this.get(t);let r=-1;return i?(r=s.indexOf(i),r>-1&&(s.splice(r,1),this.attrs("buttons").splice(r,1)),this._disable(t),e.removeChild(i.$el),this):this}_disable(t){const e=this.get(t),s=this.commands.get(t);return!e||e.disabled||(e.disabled=!0,s&&this.commands.del(s),c(e.$el,ft)),this}_enable(t){const e=this.get(t),s=this.commands.get(t);return e&&e.disabled?(e.disabled=!1,s&&this.commands.add(s),J(e.$el,ft),this):this}disable(t){const s=this.attr("afterDisabled");return t?this._disable(t):(c(this.$el,ft),this.removeListeners(),this.disabled=!0,e(s)&&s.call(this)),this}enable(t){const s=this.attr("afterEnabled");return t?this._enable(t):(this.disabled=!1,J(this.$el,ft),this.addListeners(),e(s)&&s.call(this)),this}show(t){const i=this.attr("afterOpened"),r=this.get(t),n=this.$el;if(t){if(!r)return this;J(r.$el,bt)}else J(n,bt),this.closed=!1,e(i)&&s((()=>{i.call(this)}),310);return this}hide(t){const i=this.attr("afterClosed"),r=this.get(t),n=this.$el;if(t){if(!r)return this;c(r.$el,bt)}else c(n,bt),this.closed=!0,e(i)&&s((()=>{i.call(this)}),310);return this}toggle(){return this.isClosed()?this.show():this.hide(),this}highlight(t){const e=this.get(t),s="outline-toolbar_active";let i;return e?(i=e.$el,a(i,s)?J(i,s):c(i,s),this):this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.commands.clear(),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}execute(t){return this.isDisabled(t)||this.commands.execute(t),this}onExecute(t){const e=t.delegateTarget;let s="";return e&&(s=e.getAttribute("data-cmd"),s&&this.execute(s)),this}addListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||D(e,".outline-toolbar__button","click",this.onExecute,this,!0),this}removeListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||O(e,".outline-toolbar__button",this.onExecute),this}}yt.DEFAULTS=n({placement:"ltr",closed:!1,disabled:!1,rounded:!0,buttons:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterDisabled:null,afterEnabled:null,beforeDestroy:null,afterDestroy:null});const $t=(t,e)=>{let s,i=t;for(;i;)s=i.tagName.toLowerCase(),"script"!==s&&"style"!==s&&c(i,"outline-reader_sibling"),i=e?i.previousElementSibling:i.nextElementSibling},vt="进入阅读模式,按 ESC 键可退出阅读模式";class _t extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(_t.DEFAULTS),this.reading=!1,this.$target=null,this.$paper=null,this.$title=null,this.$article=null,this.$progress=null,this.toolbar=null,this}initialize(t){let e=null;return this.attr(t),e=this.attr("target"),o(e)?this.$target=document.querySelector(e):h(e)&&(this.$target=e),this.$target?(this.render().addListeners(),this):this}render(){return this._renderEdge()._paint(this.$target),this}erase(){return this.$article.innerHTML="",this}_paint(t){const e=document.createDocumentFragment(),i=[...t.cloneNode(!0).children];return s((()=>{i.forEach((t=>{e.appendChild(t)})),this.$article.appendChild(e)})),this}_remove(){const t=this.$paper,e=this.toolbar;return t&&document.body.removeChild(t),e&&e.destroy(),this}refresh(){return this.erase()._paint(this.$target),this}_renderEdge(){const t=this.$target;let e,i,r,n,l,o=this.attr("title");return i=t.querySelector("h1"),h(o)&&(i=o),h(i)&&(o=i.innerText),i=V("h1",{className:"outline-reader__title"},o),this.$title=i,r=V("article",{id:"outline-reader__article",className:"outline-reader__article"}),this.$article=r,n=V("div",{className:"outline-reader__progress"}),this.$progress=n,this.toolbar=new yt({placement:"rtl",buttons:[{name:"exit",icon:"close",size:20,action:{context:this,handler:this.exit}}]}),e=V("section",{id:"outline-reader",className:"outline-reader outline-reader_hidden"},[n,i,r,this.toolbar.$el]),this.$paper=e,document.body.appendChild(e),s((()=>{l=e.previousElementSibling,$t(l,!0),l=e.nextElementSibling,$t(l)})),this}enter(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,r=document.querySelectorAll(".outline-reader_sibling"),n=this.attr("enterReadingTip")||vt;return this.reading||!i||(r.forEach((t=>{c(t,s)})),c(i,e),J(i,s),this.toolbar.show(),this.reading=!0,ut.info({round:!0,message:n}),this.$emit("enterReading")),this}exit(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,r=document.querySelectorAll(".outline-reader_sibling");return this.reading&&i?(c(i,s),J(i,e),r.forEach((t=>{J(t,s)})),this.toolbar.hide(),this.reading=!1,this.$emit("exitReading"),this):this}toggle(){return this.reading?this.exit():this.enter(),this}print(){return e(print)?(print(),this):this}destroy(){return this.$paper?(this.removeListeners()._remove()._default(),this):this}onPrint(){return this.print(),this}onEnterReading(){return this.toggle(),this}onExitReading(t){return 27===t.keyCode&&this.reading&&(this.toggle(),F(t)),this}addListeners(){return this.$paper?(nt(document,"keyup",this.onExitReading,this,!0),this.$on("toolbar:action:print",this.onPrint),this.$on("toolbar:action:reading",this.onEnterReading),this):this}removeListeners(){return this.$paper?(O(document,"keyup",this.onExitReading),this.$off("toolbar:action:print"),this.$off("toolbar:action:reading"),this):this}}var xt;_t.DEFAULTS=n({target:"",title:"",enterReadingTip:vt});class Tt extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){const t=Tt.DEFAULTS;return this.attrs=n(t),this.$article=null,this.$scrollElement=null,this.buttons=[],this.anchors=null,this.drawer=null,this.chapters=null,this.reader=null,this.toolbar=null,this}initialize(t){let e="",s="",i=null;return this.attr(t),e=this.attr("articleElement"),s=this.attr("scrollElement"),o(e)?i=document.querySelector(e):h(e)&&(i=e),this.$article=i,this.$scrollElement=u(s),this.$emit("created",{...this.attr()}),this.render().addListeners(),this}getChapters(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=this.$article,s=this.attr("selector"),i=this.attr("showCode")||!0,r=this.attr("chapterTextFilter");let n=[],o=[];return e?(n=[...e.querySelectorAll(s)],o=G(n,i,r),t?l(o,"id","pid"):o):o}count(){return this.getChapters().length}render(){const t=this.attr("hasToolbar"),e=this.$scrollElement;return this._renderReader()._renderAnchors()._renderChapters()._renderToolbar(),e&&t&&this._updateToolbar({top:e.scrollTop,min:0,max:e.scrollHeight}),this.$emit("mounted"),this}refresh(){const t=this.getChapters();return this.anchors.refresh(t),this.chapters.refresh(t),this.reader.refresh(),this}_renderReader(){const t=this.attr("reader");return t.target?(c(this.$article,"outline-article"),this.reader=new _t(t),this):this}_renderAnchors(){const t=this.attr("articleElement"),e=this.attr("selector"),s=this.attr("stickyHeight"),i=this.attr("scrollElement"),r=this.attr("showCode"),n=this.attr("anchorURL"),l=this.attr("afterScroll"),o=this.attr("chapterTextFilter");return this.anchors=new K({articleElement:t,stickyHeight:s,scrollElement:i,selector:e,showCode:r,anchorURL:n,afterScroll:l,chapterTextFilter:o}),this}_renderChapters(){const t=this.attr("title"),e=this.attr("stickyHeight"),s=this.attr("scrollElement"),i=this.attr("customClass"),r=this.attr("showCode"),n=this.attr("animationCurrent"),l=this.attr("closeOnClickModal"),o=this.attr("showNavModalFirst"),h=this.attr("position"),a=this.attr("placement"),c=this.attr("afterSticky"),d=this.attr("afterToggle"),u=this.attr("afterScroll"),m=this.count();let p,g=this.attr("parentElement");return m<1||(p={scrollElement:s,showCode:r,animationCurrent:n,position:h,title:t,stickyHeight:e,chapters:this.getChapters(),afterSticky:c,afterToggle:d,afterScroll:u},"relative"===h?(this.drawer=new rt({placement:a,title:t,size:"tiny",hasOffset:!0,hasPadding:!1,closeOnClickModal:l,customClass:i,afterClosed:()=>{this.toolbar.toggle()}}),g=this.drawer.$main,o&&this.drawer.open()):p.customClass=i,p.parentElement=g,this.chapters=new ot(p)),this}_renderToolbar(){const t=this.attr("position"),s=this.attr("hasToolbar"),i=this.attr("showNavModalFirst"),r=this.attr("placement"),n=this.attr("homepage"),l=this.attr("git"),o=this.attr("tags"),h=this.attr("issues"),a=this.attr("tools"),c=this.attr("reader"),d=this.count(),u={name:"up",icon:"up",size:20,action:{context:this,handler:this.toTop}},m={name:"homepage",icon:"homepage",size:20,link:n},p={name:"github",icon:"github",size:20,link:l},g={name:"tags",icon:"tags",size:20,link:o},f={name:"issues",icon:"issues",size:20,link:h},b={name:"toggle",icon:"menu",size:18,action:{context:this,handler:this.toggle}},y={name:"reading",icon:"file",size:18,action:{context:this,handler:"toolbar:action:reading"}},$={name:"print",icon:"print",size:20,action:{handler:"toolbar:action:print"}},v={name:"down",icon:"down",size:20,action:{context:this,handler:this.toBottom}},_=[];return s?(_.push(u),d>0&&_.push(b),n&&_.push(m),l&&_.push(p),o&&_.push(g),h&&_.push(f),c.target&&(_.push(y),e(print)&&_.push($)),(null==a?void 0:a.length)>0&&_.push(...a),_.push(v),this.buttons=[..._],this.toolbar=new yt({placement:r,buttons:_}),"relative"===t&&i&&this.toolbar.hide(),this):this}addButton(t){const e=this.toolbar,s=this.buttons;return s.splice(-1,0,t),e.attr({buttons:s}),e.refresh(),this}removeButton(t){return this.toolbar.remove(t),this}toTop(){const t=this.attr("afterScroll"),s=this.toolbar,i=this.chapters,r=this.count();return r>0&&(i.playing=!0),this.scrollTo(0,(()=>{s.hide("up"),s.show("down"),r>0&&(i.highlight(0),i.playing=!1),e(t)&&t.call(s,"up")})),this}_updateToolbar(t){let{top:e,min:s,max:i}=t;const r=this.toolbar,n=Math.ceil(e);return n<=s?(r.hide("up"),r.show("down")):n>=i?(r.hide("down"),r.show("up")):n>s&&n0&&(r.playing=!0),this.scrollTo(l,(()=>{i.hide("down"),i.show("up"),n>0&&(r.highlight(n-1),r.playing=!1),e(t)&&t.call(i,"bottom")})),this}scrollTo(t,e){return m(this.$scrollElement,t,e),this}enterReading(){const t=this.reader;return!t||t.reading||(this.toolbar.toggle(),t.enter()),this}exitReading(){const t=this.reader;return t&&t.reading?(this.toolbar.toggle(),t.exit(),this):this}switchReading(){const t=this.reader;return t?(t.toggle(),this):this}toggle(){const t=this.attr("position"),e=this.toolbar,i=this.drawer,r=this.chapters;return this.count()<1||("relative"!==t?(r.toggle(),e.highlight("toggle")):(e.toggle(),s((()=>{i.toggle()})))),this}print(){return this.reader.print(),this}_destroy(){const t=this.count();let e=this.anchors,s=this.chapters,i=this.drawer,r=this.reader,n=this.toolbar,l=!1;return this.removeListeners(),r&&r.destroy(),t>0&&s&&(l=s.isOutside(),s.destroy(),l&&i&&i.destroy()),e&&e.destroy(),n&&n.destroy(),this}destroy(){return this.$emit("beforeDestroy"),this._destroy()._default(),this.$emit("destroyed"),this}onToolbarUpdate(t){let{top:e,min:s,max:i}=t;return this._updateToolbar({top:e,min:s,max:i}),this}addListeners(){return this.attr("hasToolbar")?(this.$on("toolbar:update",this.onToolbarUpdate),this):this}removeListeners(){return this.attr("hasToolbar")?(this.$off("toolbar:update"),this):this}}if(Tt.DEFAULTS=n({articleElement:"#article",selector:"h2,h3,h4,h5,h6",parentElement:"#aside",scrollElement:"html,body",title:"目录",position:"relative",placement:"rtl",animationCurrent:!0,showCode:!0,hasToolbar:!0,closeOnClickModal:!0,showNavModalFirst:!1,anchorURL:"",stickyHeight:0,homepage:"",git:"",tags:"",issues:"",tools:[],reader:{target:"",title:"",enterReadingTip:"进入阅读模式,按 ESC 键可退出阅读模式"},customClass:"",afterSticky:null,afterToggle:null,afterScroll:null,chapterTextFilter:null}),null!==(xt=window)&&void 0!==xt&&xt.jQuery){const t=window.jQuery;t.extend(t.fn,{outline:function(e){let s=t(this);return new Tt(t.extend({},e,{articleElement:s}))}})}return Tt})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Outline=e()}(this,(function(){"use strict";const t=t=>Object.prototype.toString.apply(t),e=e=>"function"==typeof e||"[object Function]"===t(e),s=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return!!e(t)&&setTimeout((()=>{t()}),s)},i=s=>("[object Object]"===t(s)||"object"==typeof s||e(s))&&null!==s,r=e=>Array.isArray?Array.isArray(e):"[object Array]"===t(e),n=t=>{let e={};return null===t?null:(r(t)?e=Array.from(t):(e=Object.assign({},t),Object.keys(e).forEach((s=>e[s]=i(t[s])?n(t[s]):t[s]))),e)},l=(t,e,s)=>{const i={},r=[];return t.forEach(((t,s)=>{i[t[e]]=s,t.children=[]})),t.forEach((e=>{const n=t[i[e[s]]];-1!==e[s]?n.children.push(e):r.push(e)})),r},o=t=>"string"==typeof t,h=t=>!!(i(t)&&t.nodeName&&t.tagName&&1===t.nodeType),a=(t,e)=>{const s=new RegExp("(\\s|^)"+e+"(\\s|$)");let i,r;return!!h(t)&&(i=t.className,!!i&&(r=t.classList,r&&r.contains?t.classList.contains(e):!!s.exec(i)))},c=(t,e)=>{var s;let i,r;if(a(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.add?i.add(e):(r=t.className,r+=r.length>0?" "+e:e,t.className=r)},d=t=>t*t,u=function(){let t,e,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return s?o(s)?e=document.querySelector(s):h(s)&&(e=s):(t=document.querySelectorAll("html,body"),e=t[0].scrollTop-t[1].scrollTop>=0?t[0]:t[1]),e},m=(t,s,i)=>{const r=u(t);let n=r.scrollTop,l=0;const o=s-n,h=r.scrollHeight,a=s-h<=0?s:h,c=t=>(e(i)&&i(t),!1),m=()=>{if(l+=1,o<0){if(n-=d(l),r.scrollTop=n,n<=s)return r.scrollTop=s,c(s)}else if(n+=d(l),r.scrollTop=n,n>=a)return r.scrollTop=a,c(a);requestAnimationFrame(m)};requestAnimationFrame(m)},p=(t,e)=>{const s=Object.prototype.hasOwnProperty;return t&&s.call(t,e)},g=(t,e)=>{Object.keys(e).forEach((s=>{p(e,s)&&(t[s]=e[s])}))},f={},b=t=>p(f,t)&&f[t].length>0,y=function(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?b(t):(t=>{let e=b(t),s=t.lastIndexOf(".");for(;!e&&-1!==s;)s=(t=t.substring(0,s)).lastIndexOf("."),e=b(t);return e})(t)},$=function(e,s){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r=e=>{if(!b(e))return!1;f[e].forEach((e=>{const i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object BigInt64Array]","[object BigUint64Array]"].indexOf(t(s))>-1?s.toString():s;e.callback.call(e.context||e,i)}))},n=()=>{let t=e,s=e.lastIndexOf(".");for(;-1!==s;)t=t.substring(0,s),s=t.lastIndexOf("."),r(t);r(e),r("*")};if(!y(e))return!1;i?setTimeout(n,10):n()},v=(()=>{let t=0;return e=>(t+=1,e?e+"-"+t:"guid-"+t)})(),_=t=>{if(!p(f,t))return!1;delete f[t]},x=(t,e)=>{if(!y(t))return!1;e?(t=>{const e=Object.keys(f);if(!t||e.length<1)return!1;e.forEach((e=>{const s=f[e];let i;s.forEach(((e,r)=>{e.callback!==t&&e.token!==t||(i=e.topic,s.splice(-1,r))})),s.length<1&&_(i)}))})(e):_(t)};class T{constructor(t){this.attrs={},t&&this.initialize(t)}initialize(t){return this.attr(t).render().addListeners(),this}attr(t,e){const s=this.attrs;return o(t)?e&&p(s,t)?(s[t]=e,this):s[t]:i(t)?(g(s,t),this):0===arguments.length?s:this}render(){return this}refresh(){return this}destroy(){return this.removeListeners(),this}reload(t){let e=this.attr();return t&&(e=this.attr(t)),this.destroy().initialize(e),this}$emit(t,e){return $(t,e),this}$on(t,s){return function(t,s){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const r=v();let n="symbol"==typeof t?t.toString():t;e(s)&&(f[n]||(f[n]=[]),f[n].push({topic:n,callback:s,context:i,token:r}))}(t,s,this),this}$off(t,e){return x(t,e),this}addListeners(){return this}removeListeners(){return this}}const w=[];let C,E;function L(t){for(;t.timeRemaining()>0&&w.length;){const t=w.shift();if(!e(t))return!1;t()}w.length?C=requestIdleCallback(L):(C=0,e(E)&&(E(),E=null))}void 0===window.requestIdleCallback&&(window.requestIdleCallback=function(t){const e=Date.now();return s((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),10)},window.cancelIdleCallback=function(t){clearTimeout(t)});const z=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;w.push(t),e(s)&&(E=s),C||requestIdleCallback(L)},S=t=>{let e=t.offsetTop;return null!==t.offsetParent&&(e+=S(t.offsetParent)),e},M=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=e.replace(/^>/i,"");return!!(e&&s&&t)&&(t.matches?t.matches(s):!!t.msMatchesSelector&&t.msMatchesSelector(s))},k=t=>t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode,A=["focusout","blur","focusin","focus","load","unload","mouseenter","mouseleave"],N=(t,e,s)=>{const i=A.indexOf(e)>-1;s._delegateListener&&delete(s=s._delegateListener)._delegateListener,function(t,e,s){const i=t._listeners;let r=-1;if(i.length<1)return!1;i.forEach(((t,i)=>{const n=t.fn;e===t.type&&(r=i,n===s&&(r=i))})),r>-1&&i.splice(r,1)}(t,e,s),t.removeEventListener(e,s,i)},H=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=o(t)?document.querySelector(t):t,r=i.childNodes,n=((t,e)=>{let s=t._listeners||[];return o(e)&&e&&(s=s.filter((t=>t.type===e))),s})(i,e);n.forEach((t=>{N(i,t.type,t.fn)})),(s||!0===e||1===arguments.length)&&i&&r&&r.forEach((t=>{h(t)&&H(t,e,s)}))},O=(t,s,i)=>{if(!e(i))return H(t,s),!1;N(t,s,i)},D=function(t,e,s,i,r,n){let l=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const o=A.indexOf(s)>-1,h=function(o){const a=function(t){const e=t.target;return(s=e)&&3===s.nodeType?s.parentNode:s;var s}(o),c=((t,e,s,i)=>{const r=s||document;if(!t)return null;do{if(null!=e&&(e.startsWith(">")?t.parentNode===r&&M(t,e):M(t,e))||i&&t===r)return t;if(t===r)break}while(t=k(t))})(a,e,t);let d=n||t;o.delegateTarget=c,!0===n&&(d=r),c&&(!0===l&&O(t,s,h),i.call(d,o,r))};if(!t)return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,selector:e,type:s,fn:h,data:r,context:n,capture:o}),i._delegateListener=h,t.addEventListener(s,h,o)},F=function(t){t.stopPropagation(),t.preventDefault()},q=['','','','','','','','','','','','','','','','','','',''],j=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";return o(t)?function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";const s=/id="(.*?)"/,i=/^(\w+)-/;return q.find((r=>{const n=s.exec(r)[1];return i.exec(n)[1]===e&&n===("icon"===e?`${e}-${t}`:`${e}-icon-${t}`)}))}(t,e):[...q]},I=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=document.body;let s=document.querySelector("#outline-icons"),i=[];(t=>{if(!t)return!1;r(t)&&t.length>0?t.forEach((t=>{-1===q.indexOf(t)&&o(t)&&q.push(t)})):o(t)&&q.push(t)})(t),i=j(),s?s.innerHTML=i.join(""):(s=document.createElement("div"),s.innerHTML=``,e.insertBefore(s.firstChild,e.firstChild))},R=t=>!!o(t)&&t.replace(/(^\s+)|(\s+$)/g,""),U=e=>{return!(!i(e)||!(h(e)||(e=>!(!i(e)||"[object NodeList]"!==t(e)))(e)||(s=e,i(s)&&"[object DocumentFragment]"===t(s))||(e=>!(!i(e)||!("[object Text]"===t(e)||e.tagName&&3===e.nodeType)))(e)));var s},B=(t,e,s)=>{let i=t.tagName.toLowerCase();switch(e){case"style":t.style.cssText=s;break;case"value":"input"===i||"textarea"===i?t.value=s:t.setAttribute(e,s);break;case"htmlFor":t.setAttribute("for",s);break;case"className":t.className=s;break;case"innerHTML":t.innerHTML=s;break;case"innerText":t.innerText=s;break;default:t.setAttribute(e,s)}},P=(t,e)=>{if(!t||!i(e))return!1;Object.keys(e).forEach((s=>{const i=e[s];p(e,s)&&B(t,s,i)}))},V=(t,e,s)=>{const n=document.createDocumentFragment(),l=document.createElement(t),h=t=>U(t)||o(t),a=t=>{let e;if(!h(t))return!1;U(t)?e=t:o(t)&&(e=document.createTextNode(t)),n.appendChild(e)};return i(e)?P(l,e):r(e)&&e.every((t=>h(t)))?e.forEach((t=>{a(t)})):U(e)?a(e):o(e)&&a(document.createTextNode(e)),r(s)?s.forEach((t=>{a(t)})):a(s),l.appendChild(n),l},W=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s="outline-icon",i=e.size||0,n=e.color||"",l=e.iconSet||"",h=r(i)?i[0]:i,a=r(i)?i[1]:i,c=i?`width:${h}px;height:${a}px;`:"",d=n?c+`color:${n}`:c,u=e.attrs||{},m=document.createElement("i");let p,g="",f="";return o(t)?((t=>{const e=new RegExp("^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<\\!doctype svg[^>]*\\s*(?:\\[?(?:\\s*]*>\\s*)*\\]?)*[^>]*>\\s*)?]*>[^]*<\\/svg>\\s*$\\s*$","i");return o(t)&&e.test(t)})(t)?f=t:(g=l&&"icon"!==l?`xlink:href="#${l}-icon-${t}"`:`xlink:href="#icon-${t}"`,f=``),m.innerHTML=f,u.className?u.className=`${s} ${u.className}`:u.className=s,P(m,u),p=m.querySelector("svg"),P(p,{"aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",class:"outline-icon__svg",width:200,height:200,style:d}),m):null},Q=function(t){return W(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},J=(t,e)=>{var s;let i,r=t.className;if(!r||!a(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.remove?i.remove(e):(r=R(r.replace(e,"")),t.className=r)},Y=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const i="outline-heading",r=t.innerHTML;let n;if(t.innerHTML=r.replace(/^\d+(\.?\d+)*\s?/gi,""),t.removeAttribute("id"),t.removeAttribute("data-id"),J(t,i),!e)return!1;var l;n=t.querySelector(`.${i}__anchor`),s&&J(t,`${i}_start`),l=R(t.className),o(l)&&""===l&&t.removeAttribute("class"),n&&t.removeChild(n)},G=function(t){let s=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=1,l=0,h="";const a=[];return t.forEach(((t,s)=>{const r=t.tagName,c=r.replace(/h/i,"");let d=parseInt(c,10),u=-1;var m;d>n?(l+=1,u=1===l?-1:s-1):d===n||dl?1===d?(l=1,u=-1):u=a[s-1].pid:d<=l&&(1===d?l=1:(l-=n-d,l<=1&&(l=1)),u=1===l?-1:((t,e,s)=>{let i,r,n=t[s-1];for(r=0;r]+(>|$)/g,""):"",e(i)&&(h=i(h)),a.push({id:s,pid:u,level:l,rel:`heading-${s}`,text:h,tagName:r})})),s?(t=>{const e={};return t.forEach((t=>{const s=JSON.stringify((t=>[t.pid])(t));e[s]=e[s]||[],e[s].push(t),t.index=e[s].length,-1===t.pid&&(t.code=String(t.index))})),Object.keys(e).forEach((t=>{e[t].forEach((t=>{const s=e[`[${t.id}]`];if(!s||!r(s))return!1;s.forEach((e=>{e.code=t.code+"."+e.index}))}))})),t})(a):a};class K extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(K.DEFAULTS),this.$articleElement=null,this.$scrollElement=null,this.$headings=[],this.chapters=[],this}initialize(t){const s=this.attr("showCode")||!0;let i,r,n,l,a;return this.attr(t),a=this.attr("articleElement"),r=this.attr("scrollElement"),n=this.attr("selector"),i=this.attr("created"),o(a)?l=document.querySelector(a):h(a)&&(l=a),l?(this.$articleElement=l,this.$scrollElement=u(r),this.$headings=[...l.querySelectorAll(n)],this.$headings.length<1||(this.chapters=G(this.$headings,s,this.attr("chapterTextFilter")),e(i)&&i.call(this),this.render().addListeners()),this):this}getChapters(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=this.chapters;return t?l(e,"id","pid"):e}count(){return this.chapters.length}render(){const t=this.attr("mounted");return I(),this._paint(this.chapters),e(t)&&t.call(this),this}erase(){return this._remove(),this}_paint(t){const e=400,s=this.attr("hasAnchor"),i=this.attr("isAtStart"),r=this.attr("showCode"),n=this.attr("anchorURL"),l=this.count(),o=[...this.$headings],h=(l,o)=>{l.forEach(((l,h)=>{const a=h+o*e,c=t[a].code;((t,e,s)=>{const i="outline-heading",r=s.hasAnchor||!0,n=s.isAtStart||!0,l=s.showCode||!1,o=s.chapterCode||"",h=s.anchorURL||"",a=`heading-${e}`,c={id:a,className:n?`${i} ${i}_start`:i,"data-id":e},d=R(t.innerHTML);let u,m;if(l&&(c.innerHTML=o+" "+d),P(t,c),!r)return!1;m=Q("hash",{iconSet:"outline"}),u=V("a",{id:`anchor-${e}`,className:`${i}__anchor anchor-${e}`,href:h||`#${a}`,target:h?"_blank":"self","data-id":e},m),t.appendChild(u)})(l,a,{hasAnchor:s,isAtStart:i,showCode:r,chapterCode:c,anchorURL:n})}))};let a=-1;if(l>e)for(a+=1,h(o.splice(0,e),0);o.length>0;){const t=o.splice(0,e);z((()=>{h(t,a+=1)}),(()=>{this.$emit("anchors:all:paint")}))}else h(o,0);return this}_remove(){const t=this.attr("hasAnchor"),e=this.attr("isAtStart");return this.$headings.forEach((s=>{Y(s,t,e)})),this}refresh(t){const e=this.$articleElement,s=this.attr("selector");return this.$headings=[...e.querySelectorAll(s)],this.chapters=t,this.erase()._paint(t),this}scrollTo(t,e){const s=this.$scrollElement;return m(s,t,e),this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}onAnchorTrigger(t){const i=this.attr("anchorURL"),r=this.attr("afterScroll"),n=this.attr("stickyHeight"),l=t.delegateTarget.parentNode,o=S(l)-(n+10),h=this.$scrollElement,a=h.scrollHeight-h.clientHeight;return this.scrollTo(o,(()=>{e(r)&&r.call(this,"anchor"),s((()=>{this.$emit("toolbar:update",{top:o,min:0,max:a})}))})),i||F(t),this}addListeners(){const t=this.$articleElement;return this.count()<1||D(t,".outline-heading__anchor","click",this.onAnchorTrigger,this,!0),this}removeListeners(){const t=this.$articleElement;return this.count()<1||O(t,"click",this.onAnchorTrigger),this}}K.DEFAULTS=n({scrollElement:"html,body",articleElement:"#article",selector:"h1,h2,h3,h4,h5,h6",stickyHeight:0,anchorURL:"",hasAnchor:!0,isAtStart:!0,showCode:!1,created:null,mounted:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,chapterTextFilter:null});const X=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],Z=t=>{let e,s,i;return!!o(t)&&(e=R(t).slice(0,1e3),s=/\s*|]*>|]*>|]+>/i,i=new RegExp(X.map((t=>`<${t}\\b[^>]*>`)).join("|"),"i"),s.test(e)||i.test(e))},tt=t=>t.replace(/]*>.*?<\/script>/gi,""),et=(t,e)=>{document.documentElement.style.setProperty(t,e)};let st=2e3;const it=t=>(t?st=t:st+=1,et("--outline-zIndex",`${st}`),st);class rt extends T{constructor(t){super(),this._default(),this.zIndex=0,t&&this.initialize(t)}_default(){return this.attrs=n(rt.DEFAULTS),this.title="",this.closed=!1,this.$el=null,this.$modal=null,this.$header=null,this.$title=null,this.$close=null,this.$main=null,this.$footer=null,this.$overlay=null,this}initialize(t){let s;return this.attr(t),this.title=this.attr("title"),s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}setTitle(t){return this.attr("title",t),this.title=t,this.$title.innerHTML=t,this}isClosed(){return this.closed}render(){const t=this.attr("mounted"),s=this.attr("size"),i=this.attr("placement"),r=this.attr("hasClose"),n=this.attr("hasOverlay"),l=this.attr("hasOffset"),o=this.attr("hasPadding"),h=this.attr("autoHeight"),a=this.attr("customClass");let d,u,m,p,g,f,b,y;return I(),this.zIndex=it(),p=V("h2",{className:"outline-drawer__title"},this.title),this.$title=p,r&&(g=V("div",{className:"outline-drawer__close"},Q("close",{iconSet:"outline",size:20})),this.$close=g),m=V("header",{className:"outline-drawer__header"},[p,g]),this.$header=m,f=V("div",{className:"outline-drawer__main"}),this.$main=f,o||c(f,"outline-drawer_full"),b=V("footer",{className:"outline-drawer__footer"}),this.$footer=b,u=V("div",{className:`outline-drawer__modal outline-drawer_${i} outline-drawer_${s} outline-drawer_closed`},[m,f,b]),this.$modal=u,l&&c(u,"outline-drawer_offset"),h&&c(u,"outline-drawer_auto"),a&&c(u,a),n&&(y=V("div",{className:"outline-drawer__overlay"}),this.$overlay=y),d=V("div",{className:"outline-drawer"},[u,y]),this.$el=d,document.body.appendChild(d),e(t)&&t.call(this),this}erase(){return this.$main.innerHTML="",this}_paint(t){let s=null;return e(t)?s=t():U(t)?s=t:Z(t)&&(s=((t,e)=>{const s=document.createDocumentFragment();if(!t||!Z(t)&&!o(t)&&!h(t))return null;if(Z(t)){const e=V("div");let i=[];return e.innerHTML=tt(t),i=[...e.childNodes],i.forEach((t=>{s.appendChild(t)})),s}if(!o(e))return t.innerHTML;t.innerHTML=tt(e)})(t)),s&&this.$main.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.erase()._paint(t),this}open(){const t=this.attr("afterOpened"),i=this.$modal;return c(this.$el,"outline-drawer_opened"),J(i,"outline-drawer_closed"),c(i,"outline-drawer_opened"),s((()=>{this.closed=!1,e(t)&&t.call(this)})),this}close(){const t=this.attr("afterClosed"),i=this.$modal;return J(i,"outline-drawer_opened"),c(i,"outline-drawer_closed"),s((()=>{J(this.$el,"outline-drawer_opened"),this.closed=!0,e(t)&&t.call(this)})),this}toggle(){const t=this.attr("afterToggle"),i=this.isClosed();return i?this.open():this.close(),e(t)&&s((()=>{t.call(this,i)})),this}destroy(){const t=this.attr("afterDestroy"),s=this.attr("beforeDestroy");let i=this.zIndex;return e(s)&&s.call(this),this.removeListeners()._remove()._default(),i-=1,it(i),this.zIndex=0,e(t)&&t.call(this),this}onClose(){return this.close(),this}addListeners(){const t=this.attr("hasClose"),e=this.attr("hasOverlay"),s=this.attr("closeOnClickModal"),i=this.$el;return t&&D(i,".outline-drawer__close","click",this.onClose,this,!0),e&&s&&D(i,".outline-drawer__overlay","click",this.onClose,this,!0),this}removeListeners(){const t=this.attr("hasClose"),e=this.attr("hasOverlay"),s=this.$el;return t||e?(O(s,"click",this.onClose),this):this}}rt.DEFAULTS=n({placement:"rtl",title:"标题",size:"regular",hasClose:!0,hasOverlay:!0,hasOffset:!1,hasPadding:!0,autoHeight:!0,closeOnClickModal:!0,created:null,mounted:null,afterClosed:null,afterOpened:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,afterToggle:null});const nt=function(t,s,i,r,n){let l=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const o=A.indexOf(s)>-1,h=function(e){let o=n||t;!0===n&&(o=r),!0===l&&O(t,s,h),i.call(o,e,r)};if(!e(i))return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,type:s,fn:h,data:r,context:n,capture:o}),i._delegateListener=h,t.addEventListener(s,h,o)},lt=(t,e)=>getComputedStyle(t)[e];class ot extends T{constructor(t){super(),this._default(),this.scrollTimer=null,this.resizeTimer=null,this.observerTimer=null,this.Observer=null,t&&this.initialize(t)}_default(){return this.attrs=n(ot.DEFAULTS),this.$el=null,this.$title=null,this.$main=null,this.$list=null,this.$placeholder=null,this.$parentElement=null,this.$scrollElement=null,this.$active=null,this.chapters=[],this.active=0,this.offsetWidth=0,this.offsetTop=0,this.playing=!1,this.closed=!1,this}initialize(t){let s,i,r,n;return this.attr(t),s=this.attr("created"),i=this.attr("parentElement"),r=this.attr("scrollElement"),o(i)?n=document.querySelector(i):h(i)&&(n=i),this.$parentElement=n,this.$scrollElement=u(r),this.chapters=this.attr("chapters"),this.closed=this.attr("closed"),this.active=this.attr("active"),e(s)&&s.call(this),this.chapters.length<1||(this.render().addListeners(),this.$active=document.querySelector(`#chapter-${this.active}`)),this}isClosed(){return this.closed}isSticky(){return"sticky"===this.attr("position")}isFixed(){return"fixed"===this.attr("position")}isInside(){return this.isFixed()||this.isSticky()}isOutside(){return!this.isInside()}count(){return this.chapters.length}_paintEdge(){const t=document.createDocumentFragment(),e=this.attr("title"),s=this.attr("animationCurrent"),i=this.attr("customClass"),r=this.$parentElement,n=[],l=[];let o,h,a,d,u=null;return r?(this.isInside()&&e&&(u=V("h2",{className:"outline-chapters__title"},e),this.$title=u,l.push(u)),a=V("ul",{className:"outline-chapters__list"}),this.$list=a,n.push(a),s&&(d=V("div",{className:"outline-chapters__placeholder"}),this.$placeholder=d,n.push(d)),h=V("div",{className:"outline-chapters__main"},n),this.$main=h,l.push(h),o=V("nav",{id:"outline-chapters",className:"outline-chapters outline-chapters_hidden"},l),this.$el=o,this.isSticky()&&(this.calculateStickyHeight(),c(o,"outline-chapters_sticky")),i&&c(o,i),t.appendChild(o),r.appendChild(t),this):this}render(){const t=this.attr("mounted"),i=this.$parentElement,r=this.chapters,n=this.count();let l;return!i||r.length<1||(this.isInside()&&c(i,"outline-chapters-parent"),this._paintEdge(),l=this.$el,this._paint(r),s((()=>{this.highlight(this.active)}),60),this.offsetTop=S(l),this.offsetWidth=l.offsetWidth,this.isFixed()&&(this.sticky(),et("--outline-chapters-width",`${this.offsetWidth}px`)),e(t)&&t.call(this),n<400&&this.onObserver()),this}erase(){return this.$list.innerHTML="",this}_paint(t){const e=this.attr("showCode"),s=this.$el;return function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=e.length,r=[...e],n=e=>{const i=e=>t.querySelector(`#${e}`);e.forEach((e=>{const r=e.pid,n=e.id,l=e.rel,o=[],h=V("span",{className:"outline-chapters__text"},e.text);let a,c,d,u,m;s&&(c=V("span",{className:"outline-chapters__code","data-id":n},e.code),o.push(c)),o.push(h),a=V("a",{id:`chapter__anchor-${n}`,className:"outline-chapters__anchor",href:"#"+l,rel:l,"data-id":n},o),d=V("li",{id:`chapter-${n}`,className:"outline-chapters__item","data-id":n},a),-1===r?t.appendChild(d):(m=i(`chapter-${r}`),u=i(`subject-${r}`),u?u.appendChild(d):(u=V("ul",{id:"subject-"+r,className:"outline-chapters__subject"},d),m.appendChild(u)))}))};if(i>400)for(n(r.splice(0,400));r.length>0;){const t=r.splice(0,400);z((()=>{n(t)}))}else n(r)}(this.$list,t,e),J(s,"outline-chapters_hidden"),this}_remove(){return this.$parentElement.removeChild(this.$el),this}refresh(t){const e=this.$el;return J(e,"outline-chapters_hidden"),this.erase()._paint(t),this}_getPlaceholderOffset(t){const e=this.$main,s=this.$list,i=s.querySelector(".outline-chapters__anchor"),r=this.attr("animationCurrent"),n=parseInt(lt(e,"padding-top"),10),l=parseInt(lt(e,"border-top-width"),10),o=parseInt(lt(s,"padding-top"),10),h=parseInt(lt(s,"margin-top"),10),a=parseInt(lt(s,"border-top-width"),10);let c,d=i.offsetHeight,u=0;return r?(n&&(u+=n),o&&(u+=o),h&&(u+=h),l&&(u+=l),a&&(u+=a),c=d*t,u+c):this}positionPlaceholder(t){const e=this.$list,s=this.$placeholder,i=e.querySelector(".outline-chapters__anchor"),r=this.attr("animationCurrent"),n=i.offsetHeight;let l=0;return r?(l=this._getPlaceholderOffset(t),s.style.cssText=`transform: translateY(${l}px);height:${n}px;`,this):this}highlight(t){const e=this.$el,i=this.attr("animationCurrent"),r="outline-chapters_active",n="outline-chapters_highlight";let l=null,o=0;return e?(l=e.querySelector(`#chapter__anchor-${t}`),l?(this.active=parseInt(l.getAttribute("data-id"),10),this.$active&&(J(this.$active,n),J(this.$active,r)),this.$active=l,c(this.$active,r),i?(this.positionPlaceholder(this.active),s((()=>{((t,e)=>{let s,i;return!(!h(t)||!h(e))&&(s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),i.top>=s.top&&i.right<=s.right&&i.bottom<=s.bottom&&i.left>=s.left)})(this.$active,this.$parentElement)||(o=this._getPlaceholderOffset(this.active),m(this.$main,o))}))):c(this.$active,n),this):this):this}sticky(){const t=this.attr("afterSticky"),s="outline-chapters_fixed",i=this.$el,r=this.offsetTop,n=this.$scrollElement.scrollTop;let l;return this.isFixed()?(l=n>=r,l?c(i,s):J(i,s),e(t)&&t.call(this,this.isClosed(),l),this):this}calculateStickyHeight(){const t=document.documentElement,e=Math.max(t.clientHeight||0,window.innerHeight||0);return et("--outline-sticky-height",`${e}px`),this}scrollTo(t,e){const s=this.$scrollElement;return m(s,t,e),this}show(){const t="outline-chapters_hidden",i=this.attr("afterOpened"),r=this.count(),n=this.$el,l=this.$parentElement;return this.isInside()?r>800?J(l,t):(J(l,t),s((()=>{J(l,"outline-chapters_folded")}),30)):J(n,t),this.closed=!1,e(i)&&i.call(this),this}hide(){const t="outline-chapters_hidden",i=this.attr("afterClosed"),r=this.count(),n=this.$el,l=this.$parentElement;return this.isInside()?r>800?c(l,t):(c(l,"outline-chapters_folded"),s((()=>{c(l,t)}))):c(n,t),this.closed=!0,e(i)&&i.call(this),this}toggle(){const t=this.attr("afterToggle"),i=this.offsetTop,r=this.$scrollElement.scrollTop;let n;return this.isClosed()?this.show():this.hide(),e(t)&&s((()=>{n=r>=i,t.call(this,this.isClosed(),n)})),this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.removeListeners()._remove()._default(),this.scrollTimer&&(clearTimeout(this.scrollTimer),this.scrollTimer=null),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null),this.observerTimer&&(clearTimeout(this.observerTimer),this.observerTimer=null),this.Observer&&(this.Observer=null),e(s)&&s.call(this),this}onObserver(){const t=this.attr("selector");return this.Observer=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=s.root||null,r=s.selector||".outline-heading",n=s.context||null,l={rootMargin:s.rootMargin||"0px 0px -90% 0px"},o=new IntersectionObserver((s=>{s.forEach((s=>{s.intersectionRatio>0&&e(t)&&t.call(n||s.target,s.target)}))}),l),a=h(i)?i:document;return i&&(l.root=i),a.querySelectorAll(r).forEach((t=>{o.observe(t)})),o}((t=>{const e=t.getAttribute("data-id");if(this.playing)return!1;this.observerTimer&&clearTimeout(this.observerTimer),this.observerTimer=s((()=>{this.highlight(e)}),100)}),{selector:t,context:this}),this}onSelect(t){const i=this.attr("stickyHeight"),r=t.delegateTarget,n=r.getAttribute("data-id"),l=r.href.split("#")[1],o=document.querySelector(`#${l}`),h=S(o)-(i+10),a=this.$scrollElement.scrollHeight,c=this.attr("afterScroll"),d=()=>{e(c)&&c.call(this,"chapter"),s((()=>{this.playing=!1,this.$emit("toolbar:update",{top:h,min:0,max:a})}))};return this.playing=!0,this.isFixed()?(this.sticky(),s((()=>{this.scrollTo(h,d),this.highlight(n)}),10)):(this.scrollTo(h,d),this.highlight(n)),F(t),this}onScroll(){const t=this.$scrollElement;return this.scrollTimer&&clearTimeout(this.scrollTimer),this.scrollTimer=s((()=>{const e=t.scrollTop,s=t.scrollHeight-t.clientHeight;this.isFixed()&&this.sticky(),this.$emit("toolbar:update",{top:e,min:0,max:s})}),100),this}onResize(){return this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=s((()=>{this.calculateStickyHeight()})),this}addListeners(){const t=this.$el,e=this.$scrollElement,s=e.tagName.toLowerCase();let i=e;return this.count()<1||("html"!==s&&"body"!==s||(i=window),D(t,".outline-chapters__anchor","click",this.onSelect,this,!0),nt(i,"scroll",this.onScroll,this,!0),this.isSticky()&&nt(window,"resize",this.onResize,this,!0),this.$on("anchors:all:paint",this.onObserver,this)),this}removeListeners(){const t=this.attr("selector"),e=this.$el,s=this.$scrollElement,i=s.tagName.toLowerCase();let r=s;return this.count()<1||("html"!==i&&"body"!==i||(r=window),O(e,"click",this.onSelect),O(r,"scroll",this.onScroll),this.isSticky()&&O(window,"resize",this.onResize),this.$off("anchors:all:paint"),this.Observer&&document.querySelectorAll(t).forEach((t=>{this.Observer.unobserve(t)}))),this}}ot.DEFAULTS=n({parentElement:"",scrollElement:"",selector:".outline-heading",active:0,closed:!1,showCode:!0,animationCurrent:!0,position:"relative",stickyHeight:0,chapters:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterScroll:null,beforeDestroy:null,afterDestroy:null,afterSticky:null});const ht=t=>{const e=Object.getPrototypeOf;let s;if(!(t=>i(t)&&null!==t)(t))return!1;if(s=t.prototype,!s)return!0;for(s=t;null!==e(s);)s=e(s);return e(t)===s},at=t=>{const e={"&":"&","<":"<",">":">","'":"'",'"':"""};return t.replace(/[&<>'"]/g,(t=>e[t]||t))},ct=[];let dt;I();class ut extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(ut.DEFAULTS),this.$el=null,this.id="",this.closed=!1,this.visible=!1,this.offset=-50,this.timer=null,this.destroyed=!1,this}initialize(t){return this.attr(t),this.id=this.attr("id"),this.offset=this.attr("offset")||-50,this.$emit("created",{...this.attr()}),this.render().addListeners(),this.attr("visible")&&this.open(),this}isClosed(){return this.closed}isDestroyed(){return this.destroyed}_getClassName(){const t=this.attr("type"),e=this.attr("effect"),s=this.attr("round"),i=this.attr("closable"),r=this.attr("visible"),n=this.attr("customClass"),l=["outline-message",`outline-message_${t}`,`outline-message_${e}`];return s&&l.push("outline-message_round"),i||l.push("outline-message_full-width"),r&&l.push("outline-message_visible"),n&&l.push(n),l}render(){const t=this.attr("type"),e=this.attr("message"),s=this.attr("effect"),i=this.attr("round"),r=this.attr("closable"),n=this.attr("dangerouslyUseHTMLString"),l=this._getClassName(),o=[];let h,a,d,u,m,p=20;return i&&"default"===s&&(p=12),"plain"!==s&&(h=Q("light"===s?`circle-${t}`:t,{iconSet:"outline",size:p}),c(h,"outline-message__icon"),o.push(h)),n?(d=document.createDocumentFragment(),d.innerHTML=e):d=document.createTextNode(at(tt(e))),a=V("p",{className:"outline-message__content"},[d]),o.push(a),r&&(u=Q("close",{iconSet:"outline",size:18}),c(u,"outline-message__close"),o.push(u)),m=V("div",{className:l.join(" ")},o),m.style.cssText="top:-50px;",this.$el=m,document.body.appendChild(this.$el),this.$emit("mounted"),this}_refreshIcon(){const t=".outline-message_hidden",e=this.$el;let s,i,r,n,l,o,h,a=20;return this.isDestroyed()?this:(l=e.querySelector(".outline-icon"),l?(s=this.attr("type"),i=this.attr("effect"),r=this.attr("round"),"plain"===i?c(l,t):(J(l,t),r&&"default"===i&&(a=12)),o=l.querySelector(".outline-icon__svg"),P(o,{style:`width:${a}px;height:${a}px;`}),h=o.querySelector("use"),n="light"===i?`circle-${s}`:s,B(h,"xlink:href",`#outline-icon-${n}`),this):this)}_refreshMessage(){const t=this.$el;let e,s,i,r;return this.isDestroyed()||(e=t.querySelector(".outline-message__content"),s=this.attr("dangerouslyUseHTMLString"),i=this.attr("message"),r=s?i:at(tt(i)),e.innerHTML=r),this}_refreshClose(){const t=".outline-message_hidden",e=this.$el;let s,i;return this.isDestroyed()||(s=e.querySelector(".outline-message__close"),i=this.attr("closable"),s&&(i?c(s,t):J(s,t))),this}_refreshEl(){const t=this.$el;let e;return this.isDestroyed()||(e=this._getClassName(),B(t,"className",e.join(" "))),this}refresh(t){return ht(t)?(this.attr(t)._refreshIcon()._refreshMessage()._refreshClose()._refreshEl(),this):this}clearTimer(){return this.isDestroyed()||this.timer&&(clearTimeout(this.timer),this.timer=null),this}startTimer(t){return this.isDestroyed()||(this.timer=s((()=>{this.$emit("opened"),this.close()}),1e3*t)),this}open(t){const e=this.$el;let i,r,n,l;return this.isDestroyed()||(this.isClosed()&&this.refresh(t),i=this.attr("offset"),r=this.attr("duration"),n=i&&i>=this.offset?i:this.offset,l=`top:${n}px;`,this.clearTimer(),this.$emit("beforeOpen"),s((()=>{this.visible=!0,c(e,"outline-message_visible"),e.style.cssText=l,r>0&&this.startTimer(r)}),100)),this}close(){const t=this.$el;let i,r;return this.isDestroyed()||(i=this.attr("destroyAfterClosed"),r=this.attr("beforeClose"),e(r)&&r.call(this),t.style.cssText="top:-50px;",J(t,"outline-message_visible"),this.visible=!1,this.closed=!0,s((()=>{this.$emit("closed"),i&&this.destroy()}),500)),this}destroy(){return this.$emit("beforeDestroy"),this.isDestroyed()||(this.removeListeners(),document.body.removeChild(this.$el),clearTimeout(this.timer),this._default(),this.$emit("afterDestroy")),this}onMouseEnter(){return this.clearTimer(),this}onMouseLeave(){const t=this.attr("duration"),e=this.attr("delay");return t<=0||this.startTimer(e),this}onClose(){return this.clearTimer(),this.close(),this}addListeners(){const t=this.$el;return D(t,".outline-message__content","mouseenter",this.onMouseEnter,this,!0),D(t,".outline-message__content","mouseleave",this.onMouseLeave,this,!0),D(t,".outline-message__close","click",this.onClose,this,!0),this}removeListeners(){const t=this.$el;return O(t,"mouseenter",this.onMouseEnter),O(t,"mouseleave",this.onMouseLeave),O(t,"click",this.onClose),this}}ut.DEFAULTS=n({id:"",type:"info",effect:"default",round:!1,offset:30,duration:3,delay:2,message:"",customClass:"",closable:!0,visible:!0,dangerouslyUseHTMLString:!1,destroyAfterClosed:!0,beforeClose:null}),["info","success","warning","error"].forEach((t=>{ut[t]=e=>{const s={},i=v("outline-message-"),r=e.beforeClose||null;let n=e.offset||30;return o(e)?s.message=e:ht(e)&&g(s,e),s.id=i,s.type=t,s.offset=n,s.visible=!1,s.beforeClose=()=>{ut.close(i,r)},dt=new ut(s),ct.forEach((t=>{n+=t.$el.offsetHeight+16})),dt.offset=n,dt.open(),ct.push(dt),dt}})),ut.close=(t,s)=>{const i=ct.length;let r,n,l=-1;if(ct.forEach(((i,r)=>{t===i.id&&(n=i.$el.offsetHeight,l=r,e(s)&&s.call(i),ct.splice(r,1))})),i<=1||-1===l||l>ct.length-1)return!1;for(r=l;r{let t=ct.length-1;for(;t>=0;t-=1)ct[t].close()};class mt{constructor(t,s){this.name=t,e(s)&&(this.action=s)}execute(){return this.action(),this}}class pt{constructor(){this.commands=[]}get(t){return this.commands.find((e=>e.name===t))}add(t){return this.commands.push(t),this}del(t){const e=this.commands,s=e.find((e=>e.name===t)),i=s?e.indexOf(s):-1;return i>-1&&e.splice(i,1),this}clear(){return this.commands=[],this}execute(t){const s=this.commands.find((e=>e.name===t));return e(null==s?void 0:s.execute)&&s.execute(),this}}const gt=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const s=Q(t.icon,{iconSet:t.iconSet||"outline",color:t.color||"",size:t.size}),i=V("a",{className:"outline-toolbar__anchor",href:t.link},s),r=V("div",{className:`outline-toolbar__button ${t.name}`,"data-cmd":t.name},[t.link?i:s]);return c(s,"outline-toolbar__icon"),e&&c(r,"outline-toolbar_rounded"),t.disabled&&c(r,"outline-toolbar_disabled"),r},ft="outline-toolbar_disabled",bt="outline-toolbar_hidden";class yt extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(yt.DEFAULTS),this.disabled=!1,this.closed=!1,this.$el=null,this.buttons=[],this.commands=null,this}initialize(t){let s;return this.attr(t),this.disabled=this.attr("disabled"),this.closed=this.attr("closed"),this.commands=new pt,s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}isDisabled(t){let e;return t?(e=this.get(t),e.disabled):this.disabled}isExist(t){return!!this.get(t)}isClosed(){return this.closed}_getCommand(t){const s=this,{action:i,name:r}=t;let n,l,h=null,a=null;return i?(a=i.handler,n=i.context||this,e(a)?l=a:o(a)&&(l=function(){s.$emit(a,r)}),e(l)&&(h=new mt(r,l.bind(n))),h):h}get(t){return this.buttons.find((e=>e.name===t))}render(){const t=this.attr("mounted"),s=this.attr("buttons")||[],i=this.attr("placement");return I(),this.$el=V("div",{id:v("outline-toolbar"),className:`outline-toolbar outline-toolbar_${i}`}),this._paint(s),document.body.appendChild(this.$el),this.closed&&this.hide(),this.disabled&&this.disable(),e(t)&&t.call(this),this}erase(){return this.$el.innerHTML="",this}_paint(t){const e=this.attr("rounded"),s=document.createDocumentFragment();return t.forEach((t=>{const i=gt(t,e),r=this._getCommand(t),{name:n,disabled:l,context:o}=t;s.appendChild(i),this.isExist(n)||(this.buttons.push({$el:i,name:n,disabled:l||!1,context:o||this}),r&&this.commands.add(r))})),this.$el.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.attr({buttons:t}),this.erase()._paint(t),this}add(t){const e=this.$el,s=document.createDocumentFragment(),n=this.attr("buttons")||[],{name:l,disabled:o,context:h}=t,a=this._getCommand(t),c=t=>{const e=gt(t);s.appendChild(e),n.push(t),this.buttons.push({$el:e,name:l,disabled:o||!1,context:h||this,command:a}),a&&this.commands.add(a)};return i(t)?c(t):r(t)&&t.forEach((t=>{i(t)&&c(t)})),e.appendChild(s),this}remove(t){const e=this.$el,s=this.buttons,i=this.get(t);let r=-1;return i?(r=s.indexOf(i),r>-1&&(s.splice(r,1),this.attrs("buttons").splice(r,1)),this._disable(t),e.removeChild(i.$el),this):this}_disable(t){const e=this.get(t),s=this.commands.get(t);return!e||e.disabled||(e.disabled=!0,s&&this.commands.del(s),c(e.$el,ft)),this}_enable(t){const e=this.get(t),s=this.commands.get(t);return e&&e.disabled?(e.disabled=!1,s&&this.commands.add(s),J(e.$el,ft),this):this}disable(t){const s=this.attr("afterDisabled");return t?this._disable(t):(c(this.$el,ft),this.removeListeners(),this.disabled=!0,e(s)&&s.call(this)),this}enable(t){const s=this.attr("afterEnabled");return t?this._enable(t):(this.disabled=!1,J(this.$el,ft),this.addListeners(),e(s)&&s.call(this)),this}show(t){const i=this.attr("afterOpened"),r=this.get(t),n=this.$el;if(t){if(!r)return this;J(r.$el,bt)}else J(n,bt),this.closed=!1,e(i)&&s((()=>{i.call(this)}),310);return this}hide(t){const i=this.attr("afterClosed"),r=this.get(t),n=this.$el;if(t){if(!r)return this;c(r.$el,bt)}else c(n,bt),this.closed=!0,e(i)&&s((()=>{i.call(this)}),310);return this}toggle(){return this.isClosed()?this.show():this.hide(),this}highlight(t){const e=this.get(t),s="outline-toolbar_active";let i;return e?(i=e.$el,a(i,s)?J(i,s):c(i,s),this):this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.commands.clear(),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}execute(t){return this.isDisabled(t)||this.commands.execute(t),this}onExecute(t){const e=t.delegateTarget;let s="";return e&&(s=e.getAttribute("data-cmd"),s&&this.execute(s)),this}addListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||D(e,".outline-toolbar__button","click",this.onExecute,this,!0),this}removeListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||O(e,".outline-toolbar__button",this.onExecute),this}}yt.DEFAULTS=n({placement:"ltr",closed:!1,disabled:!1,rounded:!0,buttons:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterDisabled:null,afterEnabled:null,beforeDestroy:null,afterDestroy:null});const $t=(t,e)=>{let s,i=t;for(;i;)s=i.tagName.toLowerCase(),"script"!==s&&"style"!==s&&c(i,"outline-reader_sibling"),i=e?i.previousElementSibling:i.nextElementSibling},vt="进入阅读模式,按 ESC 键可退出阅读模式";class _t extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(_t.DEFAULTS),this.reading=!1,this.$target=null,this.$paper=null,this.$title=null,this.$article=null,this.$progress=null,this.toolbar=null,this}initialize(t){let e=null;return this.attr(t),e=this.attr("target"),o(e)?this.$target=document.querySelector(e):h(e)&&(this.$target=e),this.$target?(this.render().addListeners(),this):this}render(){return this._renderEdge()._paint(this.$target),this}erase(){return this.$article.innerHTML="",this}_paint(t){const e=document.createDocumentFragment(),i=[...t.cloneNode(!0).children];return s((()=>{i.forEach((t=>{e.appendChild(t)})),this.$article.appendChild(e)})),this}_remove(){const t=this.$paper,e=this.toolbar;return t&&document.body.removeChild(t),e&&e.destroy(),this}refresh(){return this.erase()._paint(this.$target),this}_renderEdge(){const t=this.$target;let e,i,r,n,l,o=this.attr("title");return i=t.querySelector("h1"),h(o)&&(i=o),h(i)&&(o=i.innerText),i=V("h1",{className:"outline-reader__title"},o),this.$title=i,r=V("article",{id:"outline-reader__article",className:"outline-reader__article"}),this.$article=r,n=V("div",{className:"outline-reader__progress"}),this.$progress=n,this.toolbar=new yt({placement:"rtl",buttons:[{name:"print",icon:"print",size:20,action:{context:this,handler:this.print}},{name:"exit",icon:"close",size:20,action:{context:this,handler:this.exit}}]}),e=V("section",{id:"outline-reader",className:"outline-reader outline-reader_hidden"},[n,i,r,this.toolbar.$el]),this.$paper=e,document.body.appendChild(e),s((()=>{l=e.previousElementSibling,$t(l,!0),l=e.nextElementSibling,$t(l)})),this}enter(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,r=document.querySelectorAll(".outline-reader_sibling"),n=this.attr("enterReadingTip")||vt;return this.reading||!i||(r.forEach((t=>{c(t,s)})),c(i,e),J(i,s),this.toolbar.show(),this.reading=!0,ut.info({round:!0,message:n}),this.$emit("enterReading")),this}exit(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,r=document.querySelectorAll(".outline-reader_sibling");return this.reading&&i?(c(i,s),J(i,e),r.forEach((t=>{J(t,s)})),this.toolbar.hide(),this.reading=!1,this.$emit("exitReading"),this):this}toggle(){return this.reading?this.exit():this.enter(),this}print(){return e(print)?(print(),this):this}destroy(){return this.$paper?(this.removeListeners()._remove()._default(),this):this}onPrint(){return this.print(),this}onEnterReading(){return this.toggle(),this}onExitReading(t){return 27===t.keyCode&&this.reading&&(this.toggle(),F(t)),this}addListeners(){return this.$paper?(nt(document,"keyup",this.onExitReading,this,!0),this.$on("toolbar:action:print",this.onPrint),this.$on("toolbar:action:reading",this.onEnterReading),this):this}removeListeners(){return this.$paper?(O(document,"keyup",this.onExitReading),this.$off("toolbar:action:print"),this.$off("toolbar:action:reading"),this):this}}var xt;_t.DEFAULTS=n({target:"",title:"",enterReadingTip:vt});class Tt extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){const t=Tt.DEFAULTS;return this.attrs=n(t),this.$article=null,this.$scrollElement=null,this.buttons=[],this.anchors=null,this.drawer=null,this.chapters=null,this.reader=null,this.toolbar=null,this}initialize(t){let e="",s="",i=null;return this.attr(t),e=this.attr("articleElement"),s=this.attr("scrollElement"),o(e)?i=document.querySelector(e):h(e)&&(i=e),this.$article=i,this.$scrollElement=u(s),this.$emit("created",{...this.attr()}),this.render().addListeners(),this}getChapters(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=this.$article,s=this.attr("selector"),i=this.attr("showCode")||!0,r=this.attr("chapterTextFilter");let n=[],o=[];return e?(n=[...e.querySelectorAll(s)],o=G(n,i,r),t?l(o,"id","pid"):o):o}count(){return this.getChapters().length}render(){const t=this.attr("hasToolbar"),e=this.$scrollElement;return this._renderReader()._renderAnchors()._renderChapters()._renderToolbar(),e&&t&&this._updateToolbar({top:e.scrollTop,min:0,max:e.scrollHeight}),this.$emit("mounted"),this}refresh(){const t=this.getChapters();return this.anchors.refresh(t),this.chapters.refresh(t),this.reader.refresh(),this}_renderReader(){const t=this.attr("reader");return t.target?(c(this.$article,"outline-article"),this.reader=new _t(t),this):this}_renderAnchors(){const t=this.attr("articleElement"),e=this.attr("selector"),s=this.attr("stickyHeight"),i=this.attr("scrollElement"),r=this.attr("showCode"),n=this.attr("anchorURL"),l=this.attr("afterScroll"),o=this.attr("chapterTextFilter");return this.anchors=new K({articleElement:t,stickyHeight:s,scrollElement:i,selector:e,showCode:r,anchorURL:n,afterScroll:l,chapterTextFilter:o}),this}_renderChapters(){const t=this.attr("title"),e=this.attr("stickyHeight"),s=this.attr("scrollElement"),i=this.attr("customClass"),r=this.attr("showCode"),n=this.attr("animationCurrent"),l=this.attr("closeOnClickModal"),o=this.attr("showNavModalFirst"),h=this.attr("position"),a=this.attr("placement"),c=this.attr("afterSticky"),d=this.attr("afterToggle"),u=this.attr("afterScroll"),m=this.count();let p,g=this.attr("parentElement");return m<1||(p={scrollElement:s,showCode:r,animationCurrent:n,position:h,title:t,stickyHeight:e,chapters:this.getChapters(),afterSticky:c,afterToggle:d,afterScroll:u},"relative"===h?(this.drawer=new rt({placement:a,title:t,size:"tiny",hasOffset:!0,hasPadding:!1,closeOnClickModal:l,customClass:i,afterClosed:()=>{this.toolbar.toggle()}}),g=this.drawer.$main,o&&this.drawer.open()):p.customClass=i,p.parentElement=g,this.chapters=new ot(p)),this}_renderToolbar(){const t=this.attr("position"),s=this.attr("hasToolbar"),i=this.attr("showNavModalFirst"),r=this.attr("placement"),n=this.attr("homepage"),l=this.attr("git"),o=this.attr("tags"),h=this.attr("issues"),a=this.attr("tools"),c=this.attr("reader"),d=this.count(),u={name:"up",icon:"up",size:20,action:{context:this,handler:this.toTop}},m={name:"homepage",icon:"homepage",size:20,link:n},p={name:"github",icon:"github",size:20,link:l},g={name:"tags",icon:"tags",size:20,link:o},f={name:"issues",icon:"issues",size:20,link:h},b={name:"toggle",icon:"menu",size:18,action:{context:this,handler:this.toggle}},y={name:"reading",icon:"file",size:18,action:{context:this,handler:"toolbar:action:reading"}},$={name:"print",icon:"print",size:20,action:{handler:"toolbar:action:print"}},v={name:"down",icon:"down",size:20,action:{context:this,handler:this.toBottom}},_=[];return s?(_.push(u),d>0&&_.push(b),n&&_.push(m),l&&_.push(p),o&&_.push(g),h&&_.push(f),c.target&&(_.push(y),e(print)&&_.push($)),(null==a?void 0:a.length)>0&&_.push(...a),_.push(v),this.buttons=[..._],this.toolbar=new yt({placement:r,buttons:_}),"relative"===t&&i&&this.toolbar.hide(),this):this}addButton(t){const e=this.toolbar,s=this.buttons;return s.splice(-1,0,t),e.attr({buttons:s}),e.refresh(),this}removeButton(t){return this.toolbar.remove(t),this}toTop(){const t=this.attr("afterScroll"),s=this.toolbar,i=this.chapters,r=this.count();return r>0&&(i.playing=!0),this.scrollTo(0,(()=>{s.hide("up"),s.show("down"),r>0&&(i.highlight(0),i.playing=!1),e(t)&&t.call(s,"up")})),this}_updateToolbar(t){let{top:e,min:s,max:i}=t;const r=this.toolbar,n=Math.ceil(e);return n<=s?(r.hide("up"),r.show("down")):n>=i?(r.hide("down"),r.show("up")):n>s&&n0&&(r.playing=!0),this.scrollTo(l,(()=>{i.hide("down"),i.show("up"),n>0&&(r.highlight(n-1),r.playing=!1),e(t)&&t.call(i,"bottom")})),this}scrollTo(t,e){return m(this.$scrollElement,t,e),this}enterReading(){const t=this.reader;return!t||t.reading||(this.toolbar.toggle(),t.enter()),this}exitReading(){const t=this.reader;return t&&t.reading?(this.toolbar.toggle(),t.exit(),this):this}switchReading(){const t=this.reader;return t?(t.toggle(),this):this}toggle(){const t=this.attr("position"),e=this.toolbar,i=this.drawer,r=this.chapters;return this.count()<1||("relative"!==t?(r.toggle(),e.highlight("toggle")):(e.toggle(),s((()=>{i.toggle()})))),this}print(){return this.reader.print(),this}_destroy(){const t=this.count();let e=this.anchors,s=this.chapters,i=this.drawer,r=this.reader,n=this.toolbar,l=!1;return this.removeListeners(),r&&r.destroy(),t>0&&s&&(l=s.isOutside(),s.destroy(),l&&i&&i.destroy()),e&&e.destroy(),n&&n.destroy(),this}destroy(){return this.$emit("beforeDestroy"),this._destroy()._default(),this.$emit("destroyed"),this}onToolbarUpdate(t){let{top:e,min:s,max:i}=t;return this._updateToolbar({top:e,min:s,max:i}),this}addListeners(){return this.attr("hasToolbar")?(this.$on("toolbar:update",this.onToolbarUpdate),this):this}removeListeners(){return this.attr("hasToolbar")?(this.$off("toolbar:update"),this):this}}if(Tt.DEFAULTS=n({articleElement:"#article",selector:"h2,h3,h4,h5,h6",parentElement:"#aside",scrollElement:"html,body",title:"目录",position:"relative",placement:"rtl",animationCurrent:!0,showCode:!0,hasToolbar:!0,closeOnClickModal:!0,showNavModalFirst:!1,anchorURL:"",stickyHeight:0,homepage:"",git:"",tags:"",issues:"",tools:[],reader:{target:"",title:"",enterReadingTip:"进入阅读模式,按 ESC 键可退出阅读模式"},customClass:"",afterSticky:null,afterToggle:null,afterScroll:null,chapterTextFilter:null}),null!==(xt=window)&&void 0!==xt&&xt.jQuery){const t=window.jQuery;t.extend(t.fn,{outline:function(e){let s=t(this);return new Tt(t.extend({},e,{articleElement:s}))}})}return Tt})); //# sourceMappingURL=outline.min.js.map diff --git a/outline.min.js.map b/outline.min.js.map index 459c2d6..efb2e01 100644 --- a/outline.min.js.map +++ b/outline.min.js.map @@ -1 +1 @@ -{"version":3,"file":"outline.min.js","sources":["utils/lang/toString.js","utils/types/isFunction.js","utils/lang/later.js","utils/types/isObject.js","utils/types/isArray.js","utils/lang/cloneDeep.js","utils/lang/toTree.js","utils/types/isString.js","utils/types/isElement.js","utils/dom/hasClass.js","utils/dom/addClass.js","utils/lang/easeInQuad.js","utils/dom/_getScrollElement.js","utils/dom/scrollTo.js","utils/lang/hasOwn.js","utils/lang/extend.js","utils/observer/_subscribers.js","utils/observer/_hasDirectSubscribersFor.js","utils/observer/has.js","utils/observer/_hasSubscribers.js","utils/observer/emit.js","utils/types/isTypedArray.js","utils/lang/guid.js","utils/observer/_removeSubscriber.js","utils/observer/off.js","utils/observer/_removeSubscriberByToken.js","base.js","utils/observer/on.js","utils/lang/timeSlice.js","utils/dom/offsetTop.js","utils/dom/matches.js","utils/dom/getParentOrHost.js","utils/event/enum.js","utils/event/_off.js","utils/event/_delete.js","utils/event/purgeElement.js","utils/event/getListeners.js","utils/event/off.js","utils/event/on.js","utils/event/getTarget.js","utils/dom/resolveTextNode.js","utils/dom/closest.js","utils/event/stop.js","utils/icons/symbols.js","utils/icons/defaults.js","utils/icons/getSymbols.js","utils/icons/getSymbol.js","utils/icons/paint.js","utils/icons/add.js","utils/lang/trim.js","utils/types/isDOM.js","utils/types/isHTMLCollection.js","utils/types/isFragment.js","utils/types/isTextNode.js","utils/dom/setAttribute.js","utils/dom/setAttributes.js","utils/dom/createElement.js","utils/icons/createElement.js","utils/types/isSVG.js","utils/icons/icon.js","utils/dom/removeClass.js","_removeHeading.js","utils/types/isEmpty.js","getChapters.js","utils/lang/stripTags.js","_getChapterParentIdByDiffer.js","_getChaptersWithCode.js","anchors.js","_updateHeading.js","utils/types/tags.js","utils/types/isHTML.js","utils/lang/stripScripts.js","utils/dom/setProperty.js","zIndex.js","drawer.js","utils/dom/html.js","utils/event/at.js","utils/dom/getStyle.js","chapters.js","_paintChapters.js","utils/dom/inBounding.js","utils/dom/intersection.js","utils/types/isObjectLike.js","utils/types/isPlainObject.js","utils/lang/encodeHTML.js","message.js","command.js","commands.js","_createButton.js","toolbar.js","_updateSiblingElements.js","reader.js","outline.js"],"sourcesContent":["/**\r\n * Object 对象原型上的 toString 方法\r\n * ========================================================================\r\n * @method toString\r\n * @param {*} val\r\n * @returns {string}\r\n */\r\nconst toString = (val) => {\r\n return Object.prototype.toString.apply(val)\r\n}\r\n\r\nexport default toString\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测测试数据是否为 Function 类型\r\n * ========================================================================\r\n * @method isFunction\r\n * @param {*} val - (必须)待检测的数据\r\n * @returns {boolean} 'val' 是 Function 类型返回 true,否则返回 false\r\n */\r\nconst isFunction = (val) => {\r\n return typeof val === 'function' || toString(val) === '[object Function]'\r\n}\r\n\r\nexport default isFunction\r\n","import isFunction from '../types/isFunction'\r\n\r\n/**\r\n * later - 延迟执行方法\r\n * ========================================================================\r\n * @method later\r\n * @param {Function} fn\r\n * @param {Number} [delay]\r\n * @returns {number|boolean}\r\n */\r\nconst later = (fn, delay = 300) => {\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n return setTimeout(() => {\r\n fn()\r\n }, delay)\r\n}\r\n\r\nexport default later\r\n","import toString from '../lang/toString'\r\nimport isFunction from './isFunction'\r\n\r\n/**\r\n * 检测数据是否为 Object 类型\r\n * ========================================================================\r\n * @method isObject\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isObject = (o) => {\r\n return (\r\n (toString(o) === '[object Object]' ||\r\n typeof o === 'object' ||\r\n isFunction(o)) &&\r\n o !== null\r\n )\r\n}\r\n\r\nexport default isObject\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测数据是否为 Array 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isArray = (o) => {\r\n if (Array.isArray) {\r\n return Array.isArray(o)\r\n } else {\r\n return toString(o) === '[object Array]'\r\n }\r\n}\r\n\r\nexport default isArray\r\n","import isObject from '../types/isObject'\r\nimport isArray from '../types/isArray'\r\n\r\n/**\r\n * 深拷贝对象函数\r\n * ========================================================================\r\n * @methods cloneDeep\r\n * @param {Object} obj - 深拷贝的对象\r\n * @returns {Array|Object|*}\r\n *\r\n * @example\r\n * const arr = cloneDeep([2,3,4,6])\r\n * => [2,3,4,6]\r\n */\r\nconst cloneDeep = (obj) => {\r\n let clone = {}\r\n\r\n if (obj === null) {\r\n return null\r\n }\r\n\r\n if (isArray(obj)) {\r\n clone = Array.from(obj)\r\n } else {\r\n clone = Object.assign({}, obj)\r\n Object.keys(clone).forEach((key) => {\r\n return (clone[key] = isObject(obj[key]) ? cloneDeep(obj[key]) : obj[key])\r\n })\r\n }\r\n\r\n return clone\r\n}\r\n\r\nexport default cloneDeep\r\n","const toTree = (list, nodeKey, parentKey) => {\r\n const map = {}\r\n const roots = []\r\n\r\n list.forEach((item, i) => {\r\n // initialize the map\r\n map[item[nodeKey]] = i\r\n // initialize the children\r\n item.children = []\r\n })\r\n\r\n list.forEach((item) => {\r\n const node = list[map[item[parentKey]]]\r\n\r\n if (item[parentKey] !== -1) {\r\n // if you have dangling branches check that map[node.parentId] exists\r\n node.children.push(item)\r\n } else {\r\n roots.push(item)\r\n }\r\n })\r\n\r\n return roots\r\n}\r\n\r\nexport default toTree\r\n","/**\r\n * 检测数据是否为 String 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\nconst isString = (str) => {\r\n return typeof str === 'string'\r\n}\r\n\r\nexport default isString\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测数据是否为 HTMLElement DOM 节点\r\n * ========================================================================\r\n * @method isElement\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isElement = (o) => {\r\n return !!(isObject(o) && o.nodeName && o.tagName && o.nodeType === 1)\r\n}\r\n\r\nexport default isElement\r\n","import isElement from '../types/isElement'\r\n/**\r\n * 检测 DOM 节点是否包含名为 className 的样式\r\n * ========================================================================\r\n * @method hasClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst hasClass = (el, className) => {\r\n const pattern = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\r\n let allClass\r\n let classList\r\n\r\n if (!isElement(el)) {\r\n return false\r\n }\r\n\r\n allClass = el.className\r\n\r\n if (!allClass) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList && classList.contains) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!pattern.exec(allClass)\r\n}\r\n\r\nexport default hasClass\r\n","import hasClass from './hasClass'\r\n\r\n/**\r\n * 给 DOM 节点添加名为 className 的样式\r\n * ========================================================================\r\n * @method addClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst addClass = (el, className) => {\r\n let classList\r\n let allClass\r\n\r\n if (hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.add) {\r\n classList.add(className)\r\n } else {\r\n allClass = el.className\r\n allClass += allClass.length > 0 ? ' ' + className : className\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default addClass\r\n","/**\r\n * 返回给定值的平方值\r\n * ========================================================================\r\n * @method easeInQuad\r\n * @param {Number} x\r\n * @returns {number}\r\n */\r\nconst easeInQuad = (x) => {\r\n return x * x\r\n}\r\n\r\nexport default easeInQuad\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\n\r\n/**\r\n * 通过给的 scrollElement 参数,获取滚动 DOM 元素\r\n * ========================================================================\r\n * @method _getScrollElement\r\n * @param {String|HTMLElement} scrollElement\r\n * @returns {Element}\r\n * @private\r\n */\r\nconst _getScrollElement = (scrollElement = null) => {\r\n let $rootElements\r\n let $scrollElement\r\n\r\n if (!scrollElement) {\r\n $rootElements = document.querySelectorAll('html,body')\r\n $scrollElement =\r\n $rootElements[0].scrollTop - $rootElements[1].scrollTop >= 0\r\n ? $rootElements[0]\r\n : $rootElements[1]\r\n } else {\r\n if (isString(scrollElement)) {\r\n $scrollElement = document.querySelector(scrollElement)\r\n } else if (isElement(scrollElement)) {\r\n $scrollElement = scrollElement\r\n }\r\n }\r\n\r\n return $scrollElement\r\n}\r\n\r\nexport default _getScrollElement\r\n","import easeInQuad from '../lang/easeInQuad'\r\nimport isFunction from '../types/isFunction'\r\nimport _getScrollElement from './_getScrollElement'\r\n\r\n/**\r\n * 指定 rootElement DOM 节点滚动到指定 top 位置\r\n * ========================================================================\r\n * @method scrollTo\r\n * @param {HTMLElement|Object} [scrollElement] - (必须)要滚动的 DOM 节点\r\n * @param {Number} top - (必须)滚动的 scrollTop 数值\r\n * @param {Function} [afterStop] - (可选)滚动完成的回调函数\r\n */\r\nconst scrollTo = (scrollElement, top, afterStop) => {\r\n const $scrollElement = _getScrollElement(scrollElement)\r\n let scrollTop = $scrollElement.scrollTop\r\n let step = 0\r\n const distance = top - scrollTop\r\n const MAX_HEIGHT = $scrollElement.scrollHeight\r\n const MAX_TOP = top - MAX_HEIGHT <= 0 ? top : MAX_HEIGHT\r\n const stop = (top) => {\r\n if (isFunction(afterStop)) {\r\n afterStop(top)\r\n }\r\n\r\n return false\r\n }\r\n const play = () => {\r\n step += 1\r\n\r\n // 向上滚动\r\n if (distance < 0) {\r\n scrollTop -= easeInQuad(step)\r\n $scrollElement.scrollTop = scrollTop\r\n\r\n if (scrollTop <= top) {\r\n $scrollElement.scrollTop = top\r\n return stop(top)\r\n }\r\n } else {\r\n scrollTop += easeInQuad(step)\r\n $scrollElement.scrollTop = scrollTop\r\n\r\n if (scrollTop >= MAX_TOP) {\r\n $scrollElement.scrollTop = MAX_TOP\r\n return stop(MAX_TOP)\r\n }\r\n }\r\n\r\n // eslint-disable-next-line compat/compat\r\n requestAnimationFrame(play)\r\n }\r\n\r\n // eslint-disable-next-line compat/compat\r\n requestAnimationFrame(play)\r\n}\r\n\r\nexport default scrollTo\r\n","/**\r\n * 检测对象自身属性中是否具有指定的属性。\r\n * ========================================================================\r\n * @method hasOwn\r\n * @param {Object} obj - (必须)检测的目标对象\r\n * @param {String} prop - (必须)属性名\r\n * @returns {Boolean}\r\n */\r\nconst hasOwn = (obj, prop) => {\r\n const hasOwnProperty = Object.prototype.hasOwnProperty\r\n return obj && hasOwnProperty.call(obj, prop)\r\n}\r\n\r\nexport default hasOwn\r\n","import hasOwn from './hasOwn'\r\n\r\n/**\r\n * 扩展对象\r\n * ========================================================================\r\n * @method extend\r\n * @param {Object} origin\r\n * @param {Object} source\r\n */\r\nconst extend = (origin, source) => {\r\n const keys = Object.keys(source)\r\n\r\n keys.forEach((prop) => {\r\n if (hasOwn(source, prop)) {\r\n origin[prop] = source[prop]\r\n }\r\n })\r\n}\r\n\r\nexport default extend\r\n","/**\r\n * 存储订阅者(主题和处理器的)私有对象\r\n * ========================================================================\r\n * @type {{}}\r\n * @private\r\n */\r\nconst _subscribers = {}\r\n\r\nexport default _subscribers\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 判断是否存在与给定 topic 完全匹配的订阅者信息\r\n * ========================================================================\r\n * @method _hasDirectSubscribersFor\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasDirectSubscribersFor = (topic) => {\r\n return hasOwn(_subscribers, topic) && _subscribers[topic].length > 0\r\n}\r\n\r\nexport default _hasDirectSubscribersFor\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\nimport _hasSubscribers from './_hasSubscribers'\r\n\r\n/**\r\n * 判断是否存在包含 topic 指定的订阅者信息\r\n * ========================================================================\r\n * @method has\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Boolean} [isDirect] - (可选)是否为直接的主题,默认值:true\r\n * @returns {Boolean}\r\n */\r\nconst has = (topic, isDirect = true) => {\r\n return isDirect ? _hasDirectSubscribersFor(topic) : _hasSubscribers(topic)\r\n}\r\n\r\nexport default has\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * 判断是否存在包含给定 topic 相关的订阅者信息\r\n * ========================================================================\r\n * @method _hasSubscribers\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasSubscribers = (topic) => {\r\n let found = _hasDirectSubscribersFor(topic)\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (!found && position !== -1) {\r\n topic = topic.substring(0, position)\r\n position = topic.lastIndexOf('.')\r\n found = _hasDirectSubscribersFor(topic)\r\n }\r\n\r\n return found\r\n}\r\n\r\nexport default _hasSubscribers\r\n","import isTypedArray from '../types/isTypedArray'\r\nimport _subscribers from './_subscribers'\r\nimport has from './has'\r\nimport _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * (异步)发布订阅主题信息\r\n * ========================================================================\r\n * 主题默认是异步发布的。确保在消费者处理主题时,主题的发起者不会被阻止。\r\n * ========================================================================\r\n * @method emit\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Object} [data] - (可选)数据对象\r\n * @param {Boolean} [async] - (可选) 是否异步发布\r\n */\r\nconst emit = (topic, data, async = true) => {\r\n const execute = (topic) => {\r\n if (!_hasDirectSubscribersFor(topic)) {\r\n return false\r\n }\r\n\r\n _subscribers[topic].forEach((subscriber) => {\r\n // 针对 mqtt 消息服务返回的 Uint8Array 类似的 typed arrays 格式的数据\r\n // 采用 toString() 方法转化为普通(JSON)字符串\r\n const message = isTypedArray(data) ? data.toString() : data\r\n\r\n subscriber.callback.call(subscriber.context || subscriber, message)\r\n })\r\n }\r\n const deliver = () => {\r\n let subscriber = topic\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (position !== -1) {\r\n subscriber = subscriber.substring(0, position)\r\n position = subscriber.lastIndexOf('.')\r\n\r\n execute(subscriber)\r\n }\r\n\r\n // 执行 topic 对应的处理器\r\n execute(topic)\r\n // 执行特殊 topic:'*'(监听全部消息的发布)\r\n execute('*')\r\n }\r\n\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (async) {\r\n setTimeout(deliver, 10)\r\n } else {\r\n deliver()\r\n }\r\n}\r\n\r\nexport default emit\r\n","import toString from '../lang/toString'\r\n/**\r\n * 判断检测数据是否为 Typed Arrays 类型的数据\r\n * ========================================================================\r\n * @param {*} val\r\n * @returns {boolean}\r\n */\r\nconst isTypedArray = (val) => {\r\n const TYPES = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]',\r\n '[object BigInt64Array]',\r\n '[object BigUint64Array]'\r\n ]\r\n\r\n return TYPES.indexOf(toString(val)) > -1\r\n}\r\n\r\nexport default isTypedArray\r\n","/**\r\n * 生成唯一 id 字符串的函数\r\n * ========================================================================\r\n * @method guid\r\n * @param {String} [prefix] - 生成 id 的前缀字符串\r\n * @return {String} 返回一个表示唯一 id 的字符串\r\n */\r\nconst guid = (() => {\r\n let uuid = 0\r\n\r\n return (prefix) => {\r\n uuid += 1\r\n\r\n return prefix ? prefix + '-' + uuid : 'guid-' + uuid\r\n }\r\n})()\r\n\r\nexport default guid\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 删除与给定 topic 相同的订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriber\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _removeSubscriber = (topic) => {\r\n if (!hasOwn(_subscribers, topic)) {\r\n return false\r\n }\r\n\r\n delete _subscribers[topic]\r\n}\r\n\r\nexport default _removeSubscriber\r\n","import has from './has'\r\nimport _removeSubscriber from './_removeSubscriber'\r\nimport _removeSubscriberByToken from './_removeSubscriberByToken'\r\n\r\n/**\r\n * 取消订阅主题\r\n * ========================================================================\r\n * @method off\r\n * @param {String} topic - (必须)订阅的主题\r\n * @param {Function|String} [token] - (可选)订阅主题的处理器函数或者唯一 Id 值\r\n */\r\nconst off = (topic, token) => {\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (token) {\r\n _removeSubscriberByToken(token)\r\n } else {\r\n _removeSubscriber(topic)\r\n }\r\n}\r\n\r\nexport default off\r\n","import _subscribers from './_subscribers'\r\nimport _removeSubscriber from './_removeSubscriber'\r\n\r\n/**\r\n * 通过订阅者 token 值删除订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriberByToken\r\n * @param {String} token - 订阅者 token 字符串\r\n * @returns {boolean}\r\n * @private\r\n */\r\nconst _removeSubscriberByToken = (token) => {\r\n const keys = Object.keys(_subscribers)\r\n let index = -1\r\n\r\n if (!token || keys.length < 1) {\r\n return false\r\n }\r\n\r\n keys.forEach((subject) => {\r\n const subscriber = _subscribers[subject]\r\n let topic\r\n\r\n subscriber.forEach((execution, j) => {\r\n if (execution.callback === token || execution.token === token) {\r\n topic = execution.topic\r\n subscriber.splice(index, j)\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (subscriber.length < 1) {\r\n _removeSubscriber(topic)\r\n }\r\n })\r\n}\r\n\r\nexport default _removeSubscriberByToken\r\n","import isString from './utils/types/isString'\r\nimport hasOwn from './utils/lang/hasOwn'\r\nimport isObject from './utils/types/isObject'\r\nimport extend from './utils/lang/extend'\r\nimport publish from './utils/observer/emit'\r\nimport subscribe from './utils/observer/on'\r\nimport unsubscribe from './utils/observer/off'\r\n\r\nclass Base {\r\n constructor(options) {\r\n this.attrs = {}\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options).render().addListeners()\r\n return this\r\n }\r\n\r\n attr(prop, value) {\r\n const attrs = this.attrs\r\n\r\n if (isString(prop)) {\r\n // 只能扩展 attrs 中已有的属性\r\n if (value && hasOwn(attrs, prop)) {\r\n // 更新单个配置信息\r\n attrs[prop] = value\r\n return this\r\n }\r\n\r\n // 只传递 prop 参数,则返回对应的属性值\r\n return attrs[prop]\r\n } else if (isObject(prop)) {\r\n // 批量更新配置信息\r\n extend(attrs, prop)\r\n\r\n return this\r\n } else if (arguments.length === 0) {\r\n // 不传递参数,直接返回整个\r\n return attrs\r\n }\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n return this\r\n }\r\n\r\n refresh() {\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.removeListeners()\r\n return this\r\n }\r\n\r\n reload(options) {\r\n let attrs = this.attr()\r\n\r\n if (options) {\r\n attrs = this.attr(options)\r\n }\r\n\r\n this.destroy().initialize(attrs)\r\n\r\n return this\r\n }\r\n\r\n $emit(event, data) {\r\n publish(event, data)\r\n return this\r\n }\r\n\r\n $on(event, callback) {\r\n subscribe(event, callback, this)\r\n return this\r\n }\r\n\r\n $off(event, callback) {\r\n unsubscribe(event, callback)\r\n return this\r\n }\r\n\r\n addListeners() {\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n return this\r\n }\r\n}\r\n\r\nexport default Base\r\n","import _subscribers from './_subscribers'\r\nimport isFunction from '../types/isFunction'\r\nimport guid from '../lang/guid'\r\n\r\n/**\r\n * 订阅主题,并给出处理器函数\r\n * ========================================================================\r\n * @method on\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Function} handler - (必须)主题的处理器函数\r\n * @param {Object} [context] - (可选)指定 this 执行上下文\r\n * @return {String} - 唯一的 token 字符串,例如:'guid-1'。\r\n */\r\nconst on = (topic, handler, context = null) => {\r\n const token = guid()\r\n let subject = typeof topic === 'symbol' ? topic.toString() : topic\r\n\r\n if (!isFunction(handler)) {\r\n return ''\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (!_subscribers[subject]) {\r\n _subscribers[subject] = []\r\n }\r\n\r\n _subscribers[subject].push({\r\n topic: subject,\r\n callback: handler,\r\n context,\r\n token\r\n })\r\n\r\n return token\r\n}\r\n\r\nexport default on\r\n","/**\r\n * timeSlice.js 时间切片功能函数\r\n * ====================================================\r\n * Created By: Yaohaixiao\r\n * Update: 2023.09.04\r\n */\r\nimport isFunction from '../types/isFunction'\r\nimport later from './later'\r\n\r\nconst queue = []\r\nlet isHandling\r\nlet done\r\n\r\n// Shim from https://developers.google.com/web/updates/2015/08/using-requestidlecallback\r\nif (typeof window.requestIdleCallback === 'undefined') {\r\n window.requestIdleCallback = function (cb) {\r\n const start = Date.now()\r\n return later(function () {\r\n cb({\r\n didTimeout: false,\r\n timeRemaining: function () {\r\n return Math.max(0, 50 - (Date.now() - start))\r\n }\r\n })\r\n }, 10)\r\n }\r\n\r\n window.cancelIdleCallback = function (id) {\r\n clearTimeout(id)\r\n }\r\n}\r\n\r\nfunction runIdle(idleDeadline) {\r\n while (idleDeadline.timeRemaining() > 0 && queue.length) {\r\n const fn = queue.shift()\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n fn()\r\n }\r\n\r\n if (queue.length) {\r\n isHandling = requestIdleCallback(runIdle)\r\n } else {\r\n isHandling = 0\r\n\r\n if (isFunction(done)) {\r\n done()\r\n done = null\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 时间切片功能函数:主要用于优化长时任务的性能,将长时任务分解成\r\n * 多个短时间任务\r\n * ====================================================\r\n * @param {Function} fn - 需要在空闲时执行的回调函数\r\n * @param {Function} afterComplete - queen 的\r\n * @return {(function(): (boolean|undefined))|*|boolean}\r\n */\r\nconst timeSlice = (fn, afterComplete = null) => {\r\n queue.push(fn)\r\n\r\n if (isFunction(afterComplete)) {\r\n done = afterComplete\r\n }\r\n\r\n if (!isHandling) {\r\n requestIdleCallback(runIdle)\r\n }\r\n}\r\n\r\nexport default timeSlice\r\n","/**\r\n * 获取 DOM 节点相对于窗口的 left (纵坐标)值\r\n * ========================================================================\r\n * @method offsetTop\r\n * @param {HTMLElement} el - DOM 节点\r\n * @returns {Number}\r\n */\r\nconst offsetTop = (el) => {\r\n let top = el.offsetTop\r\n\r\n if (el.offsetParent !== null) {\r\n top += offsetTop(el.offsetParent)\r\n }\r\n\r\n return top\r\n}\r\n\r\nexport default offsetTop\r\n","/**\r\n * 获取 options 节点下匹配 selector 选择器的 DOM 节点\r\n * ========================================================================\r\n * Element.matches() 方法可以用来判断 DOM 元素是否与给定的选择器匹配,事件代理判断是\r\n * 否触发绑定的代理事件回调函数,关键就是使用 Element.matches() 辨别当前事件触发的目\r\n * 标 DOM 元素是否为事件代理所期望触发的目标。\r\n * ========================================================================\r\n * @method matches\r\n * @see https://developer.mozilla.org/en-US/docs/web/api/element/matches\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)匹配 DOM 元素的选择器\r\n * @returns {Boolean}\r\n */\r\nconst matches = (el, selector = '') => {\r\n const sel = selector.replace(/^>/i, '')\r\n\r\n if (!selector || !sel || !el) {\r\n return false\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el.matches) {\r\n return el.matches(sel)\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(sel)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport default matches\r\n","/**\r\n * 获取 DOM 元素的父节点\r\n * ========================================================================\r\n * @method getParentOrHost\r\n * @param {*|HTMLElement} el - (必须)要获取父节点的 DOM 元素\r\n * @returns {*|HTMLElement}\r\n */\r\nconst getParentOrHost = (el) => {\r\n return el.host && el !== document && el.host.nodeType\r\n ? el.host\r\n : el.parentNode\r\n}\r\n\r\nexport default getParentOrHost\r\n","export const CAPTURE_EVENTS = [\r\n 'focusout',\r\n 'blur',\r\n 'focusin',\r\n 'focus',\r\n 'load',\r\n 'unload',\r\n 'mouseenter',\r\n 'mouseleave'\r\n]\r\n","import { CAPTURE_EVENTS } from './enum'\r\nimport _delete from './_delete'\r\n\r\n/**\r\n * (私有方法)取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method _off\r\n * @param {HTMLElement} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} fn - (必须)事件处理器回调函数\r\n * @private\r\n */\r\nconst _off = (el, type, fn) => {\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n /* istanbul ignore else */\r\n if (fn._delegateListener) {\r\n fn = fn._delegateListener\r\n delete fn._delegateListener\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n _delete(el, type, fn)\r\n\r\n el.removeEventListener(type, fn, capture)\r\n}\r\n\r\nexport default _off\r\n","/**\r\n * 删除 DOM 元素缓存的 _listeners 数据\r\n * ========================================================================\r\n * @method _delete\r\n * @param {HTMLElement} el - 要删除 listener 的 DOM 元素\r\n * @param {String} type - 事件类型(名称)\r\n * @param {Function} [fn] - 事件处理器回调函数\r\n */\r\nconst _delete = function (el, type, fn) {\r\n const listeners = el._listeners\r\n let index = -1\r\n\r\n if (listeners.length < 1) {\r\n return false\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n listeners.forEach((listener, i) => {\r\n const handler = listener.fn\r\n\r\n if (type === listener.type) {\r\n index = i\r\n\r\n if (handler === fn) {\r\n index = i\r\n }\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n}\r\n\r\nexport default _delete\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport getListeners from './getListeners'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 销毁(type 类型的)代理事件绑定\r\n * ========================================================================\r\n * 1. 设置了事件类型 type,则销毁指定类型的事件绑定,否则清除所有代理事件绑定\r\n * 2. recurse 设置为 true,递归销毁子节点全部事件绑定\r\n * ========================================================================\r\n * @method purgeElement\r\n * @param {HTMLElement|String} el - (必须)DOM 元素或者其选择器\r\n * @param {String|Boolean} type - (必须)事件类型\r\n * @param {Boolean} [recurse] - (可选)是否递归销毁子节点所有事件绑定\r\n */\r\nconst purgeElement = function (el, type, recurse = false) {\r\n const $element = isString(el) ? document.querySelector(el) : el\r\n const $children = $element.childNodes\r\n const listeners = getListeners($element, type)\r\n\r\n listeners.forEach((listener) => {\r\n _off($element, listener.type, listener.fn)\r\n })\r\n\r\n if (\r\n (recurse || type === true || arguments.length === 1) &&\r\n $element &&\r\n $children\r\n ) {\r\n $children.forEach(($child) => {\r\n if (isElement($child)) {\r\n purgeElement($child, type, recurse)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default purgeElement\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 获取 DOM 元素(type 事件类型)事件绑定信息\r\n * ========================================================================\r\n * 如果设置了事件类型 type, 则返回指定类型的事件绑定信息,否则返回所有事件绑定信息\r\n * ========================================================================\r\n * @methods getListeners\r\n * @param {HTMLElement} el - (必须)要获取事件绑定信息的 DOM 元素\r\n * @param {String} [type] - (可选)事件类型\r\n * @returns {Array} - 已绑定的事件信息\r\n */\r\nconst getListeners = (el, type) => {\r\n let listeners = el._listeners || []\r\n\r\n if (isString(type) && type) {\r\n listeners = listeners.filter((listener) => {\r\n return listener.type === type\r\n })\r\n }\r\n\r\n return listeners\r\n}\r\n\r\nexport default getListeners\r\n","import purgeElement from './purgeElement'\r\nimport isFunction from '../types/isFunction'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method off\r\n * @param {HTMLElement|Object} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} [fn] - (可选)事件处理器回调函数\r\n */\r\nconst off = (el, type, fn) => {\r\n // 如果不设置 fn 参数,默认清除 el 元素上绑定的所有事件处理器\r\n if (!isFunction(fn)) {\r\n purgeElement(el, type)\r\n return false\r\n }\r\n\r\n _off(el, type, fn)\r\n}\r\n\r\nexport default off\r\n","import closest from '../dom/closest'\r\nimport off from './off'\r\nimport getTarget from './getTarget'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定代理事件\r\n * ========================================================================\r\n * @method on\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String} selector - (必须)事件代理目标 DOM 元素的选择器\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (可选) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst on = (el, selector, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n const listener = function (evt) {\r\n const target = getTarget(evt)\r\n // 通过 Element.matches 方法获得点击的目标元素\r\n const delegateTarget = closest(target, selector, el)\r\n let overrideContext = context || el\r\n\r\n evt.delegateTarget = delegateTarget\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (delegateTarget) {\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n }\r\n\r\n if (!el) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n selector,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default on\r\n","import resolveTextNode from '../dom/resolveTextNode'\r\n\r\n/**\r\n * 返回触发事件的 target DOM 元素\r\n * ========================================================================\r\n * @method getTarget\r\n * @param {Event} evt - Event 对象\r\n * @return {HTMLElement} - Event 对象的 target DOM 元素\r\n */\r\nconst getTarget = function (evt) {\r\n const target = evt.target\r\n\r\n return resolveTextNode(target)\r\n}\r\n\r\nexport default getTarget\r\n","/**\r\n * 在某些情况下,某些浏览器(例如:Safari 浏览器)会返回实际的目标元素内部的文本节点。\r\n * resolveTextNode() 方法则会返回实际的目标节点。\r\n * ========================================================================\r\n * @method resolveTextNode\r\n * @param {HTMLElement|Text} el - 要解析的节点\r\n * @return {*|HTMLElement} - 实际的目标 DOM 节点\r\n */\r\nconst resolveTextNode = function (el) {\r\n if (el && el.nodeType === 3) {\r\n return el.parentNode\r\n }\r\n\r\n return el\r\n}\r\n\r\nexport default resolveTextNode\r\n","import matches from './matches'\r\nimport getParentOrHost from './getParentOrHost'\r\n\r\n/**\r\n * 获取 options 元素父元素最近的包含 selector 选择器的元素\r\n * ========================================================================\r\n * @method closest\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)DOM 元素的选择其\r\n * @param {HTMLElement} [ctx] - (必须)比对的 DOM 元素\r\n * @param {Boolean} [includeCTX] - (必须)是否包含 context DOM 元素\r\n * @returns {null|HTMLElement} - 返回最接近的 DOM 元素\r\n */\r\nconst closest = (el, selector, ctx, includeCTX) => {\r\n const context = ctx || document\r\n\r\n if (!el) {\r\n return null\r\n }\r\n\r\n do {\r\n /* istanbul ignore else */\r\n if (\r\n (selector != null &&\r\n (selector.startsWith('>')\r\n ? el.parentNode === context && matches(el, selector)\r\n : matches(el, selector))) ||\r\n (includeCTX && el === context)\r\n ) {\r\n return el\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el === context) {\r\n break\r\n }\r\n\r\n /* jshint boss:true */\r\n } while ((el = getParentOrHost(el)))\r\n}\r\n\r\nexport default closest\r\n","/**\r\n * 停止事件(阻止默认行为和阻止事件的捕获或冒泡)\r\n * ========================================================================\r\n * @method stop\r\n * @param {Event} evt - 事件对象\r\n *\r\n * @example\r\n *
\r\n * Service\r\n * Help\r\n *
\r\n *\r\n * const $nav = document.querySelector('#nav')\r\n * const $service = document.querySelector('.anchor')\r\n *\r\n * on($nav, 'click', function(evt) {\r\n * console.log('你点击了导航栏')\r\n * })\r\n *\r\n * on($anchor, 'click', function(evt) {\r\n * console.log('tagName', this.tagName)\r\n *\r\n * // 工作台输出:'a'\r\n * // 不会触发事件冒泡,输出:'你点击了导航栏'\r\n * // 也不会切换到 href 属性的页面,阻止了点击链接的默认行为\r\n * stopEvent(evt)\r\n * })\r\n */\r\nconst stop = function (evt) {\r\n evt.stopPropagation()\r\n evt.preventDefault()\r\n}\r\n\r\nexport default stop\r\n","import DEFAULTS from './defaults'\r\n\r\nconst SYMBOLS = [...DEFAULTS]\r\n\r\nexport default SYMBOLS\r\n","const DEFAULTS = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n]\r\n\r\nexport default DEFAULTS\r\n","import isString from '../types/isString'\r\nimport getSymbol from './getSymbol'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n *\r\n * @method getSymbols\r\n * @param {String} [name]\r\n * @param {String} [iconSet]\r\n * @returns {string[]|*}\r\n */\r\nconst getSymbols = (name, iconSet = 'icon') => {\r\n if (isString(name)) {\r\n return getSymbol(name, iconSet)\r\n }\r\n\r\n return [...SYMBOLS]\r\n}\r\n\r\nexport default getSymbols\r\n","import SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method getSymbol\r\n * @param {String} name\r\n * @param {String} [iconSet]\r\n * @returns {String}\r\n */\r\nconst getSymbol = (name, iconSet = 'icon') => {\r\n const patternName = /id=\"(.*?)\"/\r\n const patternSet = /^(\\w+)-/\r\n const symbols = SYMBOLS\r\n\r\n return symbols.find((symbol) => {\r\n const names = patternName.exec(symbol)\r\n const fullName = names[1]\r\n const sets = patternSet.exec(fullName)\r\n const setName = sets[1]\r\n const iconName =\r\n iconSet === 'icon' ? `${iconSet}-${name}` : `${iconSet}-icon-${name}`\r\n\r\n return setName === iconSet && fullName === iconName\r\n })\r\n}\r\n\r\nexport default getSymbol\r\n","import add from './add'\r\nimport getSymbols from './getSymbols'\r\n\r\n/**\r\n * 绘制 SVG 图标集\r\n * ========================================================================\r\n * @method paint\r\n * @param {String|Array} symbol\r\n */\r\nconst paint = (symbol = '') => {\r\n const $body = document.body\r\n let $icons = document.querySelector('#outline-icons')\r\n let symbols = []\r\n\r\n add(symbol)\r\n symbols = getSymbols()\r\n\r\n if ($icons) {\r\n $icons.innerHTML = symbols.join('')\r\n } else {\r\n $icons = document.createElement('div')\r\n $icons.innerHTML =\r\n ``\r\n $body.insertBefore($icons.firstChild, $body.firstChild)\r\n }\r\n}\r\n\r\nexport default paint\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method add\r\n * @param {Array|String} symbols\r\n * @return {Boolean}\r\n */\r\nconst add = (symbols) => {\r\n if (!symbols) {\r\n return false\r\n }\r\n\r\n if (isArray(symbols) && symbols.length > 0) {\r\n symbols.forEach((symbol) => {\r\n /* istanbul ignore else */\r\n if (SYMBOLS.indexOf(symbol) === -1 && isString(symbol)) {\r\n SYMBOLS.push(symbol)\r\n }\r\n })\r\n } else {\r\n /* istanbul ignore else */\r\n if (isString(symbols)) {\r\n SYMBOLS.push(symbols)\r\n }\r\n }\r\n}\r\n\r\nexport default add\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 清楚字符串起始位置所有的空格\r\n * ========================================================================\r\n * @method trim\r\n * @param {string} str\r\n * @returns {string|Boolean}\r\n */\r\nconst trim = (str) => {\r\n if (!isString(str)) {\r\n return false\r\n }\r\n return str.replace(/(^\\s+)|(\\s+$)/g, '')\r\n}\r\n\r\nexport default trim\r\n","import isObject from './isObject'\r\nimport isElement from './isElement'\r\nimport isHTMLCollection from './isHTMLCollection'\r\nimport isFragment from './isFragment'\r\nimport isTextNode from './isTextNode'\r\n\r\nconst isDOM = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (isElement(el) || isHTMLCollection(el) || isFragment(el) || isTextNode(el))\r\n )\r\n}\r\n\r\nexport default isDOM\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isHTMLCollection = (el) => {\r\n return !!(isObject(el) && toString(el) === '[object NodeList]')\r\n}\r\n\r\nexport default isHTMLCollection\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isFragment = (fragment) => {\r\n return !!(\r\n isObject(fragment) && toString(fragment) === '[object DocumentFragment]'\r\n )\r\n}\r\n\r\nexport default isFragment\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isTextNode = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (toString(el) === '[object Text]' || (el.tagName && el.nodeType === 3))\r\n )\r\n}\r\n\r\nexport default isTextNode\r\n","/**\r\n * 给 DOM 节点设置属性/值\r\n * ========================================================================\r\n * @method setAttribute\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} attr - 属性名称\r\n * @param {String|Number|Boolean} value - 属性值\r\n */\r\nconst setAttribute = (el, attr, value) => {\r\n let tagName = el.tagName.toLowerCase()\r\n\r\n switch (attr) {\r\n case 'style':\r\n el.style.cssText = value\r\n break\r\n case 'value':\r\n if (tagName === 'input' || tagName === 'textarea') {\r\n el.value = value\r\n } else {\r\n el.setAttribute(attr, value)\r\n }\r\n break\r\n case 'htmlFor':\r\n el.setAttribute('for', value)\r\n break\r\n case 'className':\r\n el.className = value\r\n break\r\n case 'innerHTML':\r\n el.innerHTML = value\r\n break\r\n case 'innerText':\r\n el.innerText = value\r\n break\r\n default:\r\n el.setAttribute(attr, value)\r\n break\r\n }\r\n}\r\n\r\nexport default setAttribute\r\n","import isObject from '../types/isObject'\r\nimport hasOwn from '../lang/hasOwn'\r\nimport setAttribute from './setAttribute'\r\n\r\nconst setAttributes = (el, attrs) => {\r\n if (!el || !isObject(attrs)) {\r\n return false\r\n }\r\n\r\n Object.keys(attrs).forEach((attr) => {\r\n const value = attrs[attr]\r\n if (hasOwn(attrs, attr)) {\r\n setAttribute(el, attr, value)\r\n }\r\n })\r\n}\r\n\r\nexport default setAttributes\r\n","import isObject from '../types/isObject'\r\nimport isString from '../types/isString'\r\nimport isArray from '../types/isArray'\r\nimport isDOM from '../types/isDOM'\r\nimport setAttributes from './setAttributes'\r\n\r\n/**\r\n * 创建 DOM 节点,并添加属性和子节点\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} tagName - 标签名称\r\n * @param {Object|Array|HTMLElement|DocumentFragment|String} attrs - 属性对象或者子节点\r\n * @param {Array|HTMLElement|DocumentFragment|String} [children] - 子节点数组\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (tagName, attrs, children) => {\r\n const $fragment = document.createDocumentFragment()\r\n const $el = document.createElement(tagName)\r\n const isValidChild = (child) => {\r\n return isDOM(child) || isString(child)\r\n }\r\n const append = (child) => {\r\n let $child\r\n\r\n if (!isValidChild(child)) {\r\n return false\r\n }\r\n\r\n if (isDOM(child)) {\r\n $child = child\r\n } else if (isString(child)) {\r\n $child = document.createTextNode(child)\r\n }\r\n\r\n $fragment.appendChild($child)\r\n }\r\n\r\n if (isObject(attrs)) {\r\n setAttributes($el, attrs)\r\n } else if (isArray(attrs) && attrs.every((attr) => isValidChild(attr))) {\r\n attrs.forEach((child) => {\r\n append(child)\r\n })\r\n } else if (isDOM(attrs)) {\r\n append(attrs)\r\n } else if (isString(attrs)) {\r\n append(document.createTextNode(attrs))\r\n }\r\n\r\n if (isArray(children)) {\r\n children.forEach((child) => {\r\n append(child)\r\n })\r\n } else {\r\n append(children)\r\n }\r\n\r\n $el.appendChild($fragment)\r\n\r\n return $el\r\n}\r\n\r\nexport default createElement\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport isSVG from '../types/isSVG'\r\nimport setAttributes from '../dom/setAttributes'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @param {Object} [options.attrs]\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (name, options = {}) => {\r\n const ICON = 'outline-icon'\r\n const size = options.size || 0\r\n const color = options.color || ''\r\n const iconSet = options.iconSet || ''\r\n const width = isArray(size) ? size[0] : size\r\n const height = isArray(size) ? size[1] : size\r\n const defaultRules = size ? `width:${width}px;height:${height}px;` : ''\r\n const cssRules = color ? defaultRules + `color:${color}` : defaultRules\r\n const attrs = options.attrs || {}\r\n const $icon = document.createElement('i')\r\n let binds = ''\r\n let svg = ''\r\n let $svg\r\n\r\n if (!isString(name)) {\r\n return null\r\n }\r\n\r\n if (isSVG(name)) {\r\n svg = name\r\n } else {\r\n binds =\r\n iconSet && iconSet !== 'icon'\r\n ? `xlink:href=\"#${iconSet}-icon-${name}\"`\r\n : `xlink:href=\"#icon-${name}\"`\r\n svg = ``\r\n }\r\n\r\n $icon.innerHTML = svg\r\n\r\n if (attrs.className) {\r\n attrs.className = `${ICON} ${attrs.className}`\r\n } else {\r\n attrs.className = ICON\r\n }\r\n\r\n setAttributes($icon, attrs)\r\n\r\n $svg = $icon.querySelector('svg')\r\n setAttributes($svg, {\r\n 'aria-hidden': true,\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n class: 'outline-icon__svg',\r\n width: 200,\r\n height: 200,\r\n style: cssRules\r\n })\r\n\r\n return $icon\r\n}\r\n\r\nexport default createElement\r\n","import isString from './isString'\r\n\r\nconst isSVG = (str) => {\r\n const declaration = '(?:<\\\\?xml[^>]*>\\\\s*)?'\r\n const doctype =\r\n '(?:<\\\\!doctype svg[^>]*\\\\s*(?:\\\\[?(?:\\\\s*]*>\\\\s*)*\\\\]?)*[^>]*>\\\\s*)?'\r\n const content = ']*>[^]*<\\\\/svg>\\\\s*$'\r\n const svg = `^\\\\s*${declaration}${doctype}${content}\\\\s*$`\r\n const pattern = new RegExp(svg, 'i')\r\n\r\n return isString(str) && pattern.test(str)\r\n}\r\n\r\nexport default isSVG\r\n","import createElement from './createElement'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method icon\r\n * @alias createElement\r\n * @see createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @returns {HTMLElement}\r\n */\r\nconst icon = (name, options = {}) => {\r\n return createElement(name, options)\r\n}\r\n\r\nexport default icon\r\n","import trim from '../lang/trim'\r\nimport hasClass from './hasClass'\r\n\r\n/**\r\n * 移除 DOM 节点的 className 样式\r\n * ========================================================================\r\n * @method removeClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst removeClass = (el, className) => {\r\n let allClass = el.className\r\n let classList\r\n\r\n if (!allClass || !hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.remove) {\r\n classList.remove(className)\r\n } else {\r\n allClass = trim(allClass.replace(className, ''))\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default removeClass\r\n","import removeClass from './utils/dom/removeClass'\r\nimport isEmpty from './utils/types/isEmpty'\r\nimport trim from './utils/lang/trim'\r\n\r\nconst _removeHeading = ($heading, hasAnchor = true, isAtStart = true) => {\r\n const CLS_HEADING = 'outline-heading'\r\n const text = $heading.innerHTML\r\n const pattern = /^\\d+(\\.?\\d+)*\\s?/gi\r\n let $anchor\r\n\r\n $heading.innerHTML = text.replace(pattern, '')\r\n $heading.removeAttribute('id')\r\n $heading.removeAttribute('data-id')\r\n\r\n removeClass($heading, CLS_HEADING)\r\n\r\n if (!hasAnchor) {\r\n return false\r\n }\r\n\r\n $anchor = $heading.querySelector(`.${CLS_HEADING}__anchor`)\r\n\r\n if (isAtStart) {\r\n removeClass($heading, `${CLS_HEADING}_start`)\r\n }\r\n\r\n if (isEmpty(trim($heading.className))) {\r\n $heading.removeAttribute('class')\r\n }\r\n\r\n // 存在锚点才移除\r\n if ($anchor) {\r\n $heading.removeChild($anchor)\r\n }\r\n}\r\n\r\nexport default _removeHeading\r\n","import isString from './isString'\r\n/**\r\n * 检测数据是否为空字符串\r\n * ========================================================================\r\n * @method isEmpty\r\n * @param {String} str\r\n * @returns {boolean}\r\n */\r\nconst isEmpty = (str) => {\r\n return isString(str) && str === ''\r\n}\r\n\r\nexport default isEmpty\r\n","import trim from './utils/lang/trim'\r\nimport stripTags from './utils/lang/stripTags'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport _getChapterParentIdByDiffer from './_getChapterParentIdByDiffer'\r\nimport _getChaptersWithCode from './_getChaptersWithCode'\r\n\r\n/**\r\n * 根据文章中的 h1~h6 标签,自动分析返回文章章节数据\r\n * ========================================================================\r\n * @method getChapters\r\n * @param {Array} headings\r\n * @param {Boolean} [showCode]\r\n * @param {Function} [chapterTextFilter]\r\n * @return {*|*[]}\r\n */\r\nconst getChapters = (headings, showCode = true, chapterTextFilter = null) => {\r\n let previous = 1\r\n let level = 0\r\n let text = ''\r\n const chapters = []\r\n\r\n headings.forEach((heading, i) => {\r\n const tagName = heading.tagName\r\n const headingLevel = tagName.replace(/h/i, '')\r\n let current = parseInt(headingLevel, 10)\r\n let pid = -1\r\n\r\n // 场景1:当前标题是前一个标题的子标题\r\n // 当前标题的(标题标签)序号 > 前一个标题的序号:两个相连的标题是父标题 -> 子标题关系;\r\n // h2 (前一个标题)\r\n // h3 (当前标题)\r\n if (current > previous) {\r\n level += 1\r\n\r\n // 第一层级的 pid 是 -1\r\n if (level === 1) {\r\n pid = -1\r\n } else {\r\n pid = i - 1\r\n }\r\n }\r\n // 场景2:当前标题和前一个标题层级相同\r\n // 当前标题的(标题标签)序号 = 前一个标题的序号\r\n // h2 (前一个标题)\r\n // h2 (当前标题)\r\n // 当前标题的(标题标签)序号 < 前一个标题的序号,并且当前标题序号 > 当前的级别\r\n // h2\r\n // h4 (前一个标题)\r\n // h3 (当前标题:这种情况我们还是任务 h3 是 h2 的下一级章节)\r\n else if (current === previous || (current < previous && current > level)) {\r\n // H1 的层级肯定是 1\r\n if (current === 1) {\r\n level = 1\r\n pid = -1\r\n } else {\r\n pid = chapters[i - 1].pid\r\n }\r\n }\r\n // 场景3:当前标题比前一个标题层级高\r\n else if (current <= level) {\r\n // H1 的层级肯定是 1\r\n if (current === 1) {\r\n level = 1\r\n } else {\r\n level = level - (previous - current)\r\n\r\n if (level <= 1) {\r\n level = 1\r\n }\r\n }\r\n\r\n // 第一级的标题\r\n if (level === 1) {\r\n pid = -1\r\n } else {\r\n // 通过当前标题和前一个标题之间的等级差,获得当前标题的父标题ID\r\n pid = _getChapterParentIdByDiffer(chapters, previous - current, i)\r\n }\r\n }\r\n\r\n previous = current\r\n\r\n text = stripTags(trim(heading.innerHTML))\r\n\r\n if (isFunction(chapterTextFilter)) {\r\n text = chapterTextFilter(text)\r\n }\r\n\r\n chapters.push({\r\n id: i,\r\n pid: pid,\r\n level: level,\r\n rel: `heading-${i}`,\r\n text,\r\n tagName\r\n })\r\n })\r\n\r\n return showCode ? _getChaptersWithCode(chapters) : chapters\r\n}\r\n\r\nexport default getChapters\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 过滤所有 HTML 标签\r\n * ========================================================================\r\n * @method stripTags\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\nconst stripTags = (str) => {\r\n if (!isString(str)) {\r\n return ''\r\n }\r\n return str.replace(/<\\/?[^>]+(>|$)/g, '')\r\n}\r\n\r\nexport default stripTags\r\n","const _getChapterParentIdByDiffer = (chapters, differ, index) => {\r\n let previous = chapters[index - 1]\r\n let pid\r\n let i\r\n\r\n for (i = 0; i < differ; i += 1) {\r\n pid = previous.pid\r\n previous = chapters[pid]\r\n }\r\n\r\n pid = previous.pid\r\n\r\n return pid\r\n}\r\n\r\nexport default _getChapterParentIdByDiffer\r\n","import isArray from './utils/types/isArray'\r\n\r\nconst _getChaptersWithCode = (chapters) => {\r\n const groups = {}\r\n const cb = (o) => {\r\n return [o.pid]\r\n }\r\n\r\n chapters.forEach((o) => {\r\n const group = JSON.stringify(cb(o))\r\n\r\n groups[group] = groups[group] || []\r\n groups[group].push(o)\r\n\r\n o.index = groups[group].length\r\n\r\n if (o.pid === -1) {\r\n o.code = String(o.index)\r\n }\r\n })\r\n\r\n Object.keys(groups).forEach((group) => {\r\n groups[group].forEach((c) => {\r\n const subjects = groups[`[${c.id}]`]\r\n\r\n if (!subjects || !isArray(subjects)) {\r\n return false\r\n }\r\n\r\n subjects.forEach((o) => {\r\n o.code = c.code + '.' + o.index\r\n })\r\n })\r\n })\r\n\r\n return chapters\r\n}\r\n\r\nexport default _getChaptersWithCode\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isElement from './utils/types/isElement'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport timeSlice from './utils/lang/timeSlice'\r\nimport toTree from './utils/lang/toTree'\r\nimport later from './utils/lang/later'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\nimport offsetTop from './utils/dom/offsetTop'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport stop from './utils/event/stop'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport _updateHeading from './_updateHeading'\r\nimport _removeHeading from './_removeHeading'\r\nimport getChapters from './getChapters'\r\n\r\nimport Base from './base'\r\n\r\nclass Anchors extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Anchors.DEFAULTS)\r\n\r\n this.$articleElement = null\r\n this.$scrollElement = null\r\n this.$headings = []\r\n this.chapters = []\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n const showCode = this.attr('showCode') || true\r\n let created\r\n let scrollElement\r\n let selector\r\n let $articleElement\r\n let articleElement\r\n\r\n this.attr(options)\r\n\r\n articleElement = this.attr('articleElement')\r\n scrollElement = this.attr('scrollElement')\r\n selector = this.attr('selector')\r\n created = this.attr('created')\r\n\r\n if (isString(articleElement)) {\r\n $articleElement = document.querySelector(articleElement)\r\n } else if (isElement(articleElement)) {\r\n $articleElement = articleElement\r\n }\r\n\r\n if (!$articleElement) {\r\n return this\r\n }\r\n\r\n this.$articleElement = $articleElement\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n this.$headings = [...$articleElement.querySelectorAll(selector)]\r\n\r\n if (this.$headings.length < 1) {\r\n return this\r\n }\r\n\r\n this.chapters = getChapters(\r\n this.$headings,\r\n showCode,\r\n this.attr('chapterTextFilter')\r\n )\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n getChapters(isTreeStructured = false) {\r\n const chapters = this.chapters\r\n return isTreeStructured ? toTree(chapters, 'id', 'pid') : chapters\r\n }\r\n\r\n count() {\r\n return this.chapters.length\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n\r\n paint()\r\n\r\n this._paint(this.chapters)\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this._remove()\r\n\r\n return this\r\n }\r\n\r\n _paint(chapters) {\r\n const LIMIT = 400\r\n const hasAnchor = this.attr('hasAnchor')\r\n const isAtStart = this.attr('isAtStart')\r\n const showCode = this.attr('showCode')\r\n const anchorURL = this.attr('anchorURL')\r\n const count = this.count()\r\n const $headings = [...this.$headings]\r\n const update = (headings, group) => {\r\n headings.forEach(($heading, i) => {\r\n const id = i + group * LIMIT\r\n const chapterCode = chapters[id].code\r\n _updateHeading($heading, id, {\r\n hasAnchor,\r\n isAtStart,\r\n showCode,\r\n chapterCode,\r\n anchorURL\r\n })\r\n })\r\n }\r\n let groupIndex = -1\r\n\r\n // 针对超长的文章,进行 timeSlice 处理\r\n if (count > LIMIT) {\r\n groupIndex += 1\r\n // 同步绘制 Limit 以内的标题链接(可以确保 50ms 完成绘制)\r\n update($headings.splice(0, LIMIT), 0)\r\n // 采用 timeSlice 处理机制绘制剩余的标题\r\n while ($headings.length > 0) {\r\n const once = $headings.splice(0, LIMIT)\r\n timeSlice(\r\n () => {\r\n update(once, (groupIndex += 1))\r\n },\r\n () => {\r\n this.$emit('anchors:all:paint')\r\n }\r\n )\r\n }\r\n } else {\r\n update($headings, 0)\r\n }\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const hasAnchor = this.attr('hasAnchor')\r\n const isAtStart = this.attr('isAtStart')\r\n const $headings = this.$headings\r\n\r\n $headings.forEach(($heading) => {\r\n _removeHeading($heading, hasAnchor, isAtStart)\r\n })\r\n\r\n return this\r\n }\r\n\r\n refresh(chapters) {\r\n const $articleElement = this.$articleElement\r\n const selector = this.attr('selector')\r\n\r\n this.$headings = [...$articleElement.querySelectorAll(selector)]\r\n this.chapters = chapters\r\n\r\n this.erase()._paint(chapters)\r\n\r\n return this\r\n }\r\n\r\n scrollTo(top, after) {\r\n const el = this.$scrollElement\r\n\r\n scrollTo(el, top, after)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onAnchorTrigger(evt) {\r\n const anchorURL = this.attr('anchorURL')\r\n const afterScroll = this.attr('afterScroll')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const $anchor = evt.delegateTarget\r\n const $heading = $anchor.parentNode\r\n const top = offsetTop($heading) - (stickyHeight + 10)\r\n const $scrollElement = this.$scrollElement\r\n const min = 0\r\n const max = $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n const after = () => {\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(this, 'anchor')\r\n }\r\n\r\n later(() => {\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n })\r\n }\r\n\r\n this.scrollTo(top, after)\r\n\r\n if (!anchorURL) {\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $articleElement = this.$articleElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n on(\r\n $articleElement,\r\n '.outline-heading__anchor',\r\n 'click',\r\n this.onAnchorTrigger,\r\n this,\r\n true\r\n )\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $articleElement = this.$articleElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n off($articleElement, 'click', this.onAnchorTrigger)\r\n\r\n return this\r\n }\r\n}\r\n\r\nAnchors.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n scrollElement: 'html,body',\r\n articleElement: '#article',\r\n selector: 'h1,h2,h3,h4,h5,h6',\r\n stickyHeight: 0,\r\n anchorURL: '',\r\n hasAnchor: true,\r\n isAtStart: true,\r\n showCode: false,\r\n created: null,\r\n mounted: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n chapterTextFilter: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Anchors\r\n","import trim from './utils/lang/trim'\r\nimport createElement from './utils/dom/createElement'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\n\r\nconst _updateHeading = ($heading, i, options) => {\r\n const CLS_HEADING = 'outline-heading'\r\n const hasAnchor = options.hasAnchor || true\r\n const isAtStart = options.isAtStart || true\r\n const showCode = options.showCode || false\r\n const chapterCode = options.chapterCode || ''\r\n const anchorURL = options.anchorURL || ''\r\n const headingId = `heading-${i}`\r\n const attrs = {\r\n id: headingId,\r\n className: isAtStart ? `${CLS_HEADING} ${CLS_HEADING}_start` : CLS_HEADING,\r\n 'data-id': i\r\n }\r\n const text = trim($heading.innerHTML)\r\n let $anchor\r\n let $icon\r\n\r\n if (showCode) {\r\n attrs.innerHTML = chapterCode + ' ' + text\r\n }\r\n setAttributes($heading, attrs)\r\n\r\n if (!hasAnchor) {\r\n return false\r\n }\r\n\r\n $icon = icon('hash', { iconSet: 'outline' })\r\n $anchor = createElement(\r\n 'a',\r\n {\r\n id: `anchor-${i}`,\r\n className: `${CLS_HEADING}__anchor anchor-${i}`,\r\n href: anchorURL || `#${headingId}`,\r\n target: anchorURL ? '_blank' : 'self',\r\n 'data-id': i\r\n },\r\n $icon\r\n )\r\n $heading.appendChild($anchor)\r\n}\r\n\r\nexport default _updateHeading\r\n","// HTML 合法的标签\r\nconst TAGS = [\r\n 'a',\r\n 'abbr',\r\n 'address',\r\n 'area',\r\n 'article',\r\n 'aside',\r\n 'audio',\r\n 'b',\r\n 'base',\r\n 'bdi',\r\n 'bdo',\r\n 'blockquote',\r\n 'body',\r\n 'br',\r\n 'button',\r\n 'canvas',\r\n 'caption',\r\n 'cite',\r\n 'code',\r\n 'col',\r\n 'colgroup',\r\n 'data',\r\n 'datalist',\r\n 'dd',\r\n 'del',\r\n 'details',\r\n 'dfn',\r\n 'dialog',\r\n 'div',\r\n 'dl',\r\n 'dt',\r\n 'em',\r\n 'embed',\r\n 'fieldset',\r\n 'figcaption',\r\n 'figure',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'head',\r\n 'header',\r\n 'hgroup',\r\n 'hr',\r\n 'html',\r\n 'i',\r\n 'iframe',\r\n 'img',\r\n 'input',\r\n 'ins',\r\n 'kbd',\r\n 'label',\r\n 'legend',\r\n 'li',\r\n 'link',\r\n 'main',\r\n 'map',\r\n 'mark',\r\n 'math',\r\n 'menu',\r\n 'menuitem',\r\n 'meta',\r\n 'meter',\r\n 'nav',\r\n 'noscript',\r\n 'object',\r\n 'ol',\r\n 'optgroup',\r\n 'option',\r\n 'output',\r\n 'p',\r\n 'param',\r\n 'picture',\r\n 'pre',\r\n 'progress',\r\n 'q',\r\n 'rb',\r\n 'rp',\r\n 'rt',\r\n 'rtc',\r\n 'ruby',\r\n 's',\r\n 'samp',\r\n 'script',\r\n 'search',\r\n 'section',\r\n 'select',\r\n 'slot',\r\n 'small',\r\n 'source',\r\n 'span',\r\n 'strong',\r\n 'style',\r\n 'sub',\r\n 'summary',\r\n 'sup',\r\n 'svg',\r\n 'table',\r\n 'tbody',\r\n 'td',\r\n 'template',\r\n 'textarea',\r\n 'tfoot',\r\n 'th',\r\n 'thead',\r\n 'time',\r\n 'title',\r\n 'tr',\r\n 'track',\r\n 'u',\r\n 'ul',\r\n 'var',\r\n 'video',\r\n 'wbr'\r\n]\r\n\r\nexport default TAGS\r\n","import isString from './isString'\r\nimport trim from '../lang/trim'\r\nimport TAGS from './tags'\r\n\r\n/**\r\n * 检测测试数据是否为合法的 HTML 代码\r\n * ========================================================================\r\n * @method isHTML\r\n * @category Lang\r\n * @see https://github.com/sindresorhus/html-tags\r\n * @see https://github.com/sindresorhus/is-html\r\n * @param {String} str - 要检测的数据\r\n * @returns {Boolean} 'val' 为合法的 HTML 代码,返回 true,否则返回 false\r\n */\r\nconst isHTML = (str) => {\r\n let html\r\n let basic\r\n let full\r\n\r\n if (!isString(str)) {\r\n return false\r\n }\r\n\r\n // 为了提高性能,我们将其限制在合理的长度内。\r\n html = trim(str).slice(0, 1000)\r\n basic = /\\s*|]*>|]*>|]+>/i\r\n full = new RegExp(TAGS.map((tag) => `<${tag}\\\\b[^>]*>`).join('|'), 'i')\r\n\r\n return basic.test(html) || full.test(html)\r\n}\r\n\r\nexport default isHTML\r\n","/**\r\n * 移除字符串中的 JavaScript 代码\r\n * ====================================================\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nconst stripScripts = (str) => {\r\n return str.replace(/]*>.*?<\\/script>/gi, '')\r\n}\r\n\r\nexport default stripScripts\r\n","const setProperty = (prop, value) => {\r\n const documentElement = document.documentElement\r\n documentElement.style.setProperty(prop, value)\r\n}\r\n\r\nexport default setProperty\r\n","import setProperty from './utils/dom/setProperty'\r\n\r\nlet index = 2000\r\n\r\nconst zIndex = (idx) => {\r\n if (idx) {\r\n index = idx\r\n } else {\r\n index += 1\r\n }\r\n\r\n setProperty('--outline-zIndex', `${index}`)\r\n\r\n return index\r\n}\r\n\r\nexport default zIndex\r\n","import Base from './base'\r\n\r\nimport later from './utils/lang/later'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isDOM from './utils/types/isDOM'\r\nimport isHTML from './utils/types/isHTML'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport html from './utils/dom/html'\r\nimport createElement from './utils/dom/createElement'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport paint from './utils/icons/paint'\r\nimport icon from './utils/icons/icon'\r\nimport zIndex from './zIndex'\r\n\r\nclass Drawer extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n this.zIndex = 0\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Drawer.DEFAULTS)\r\n this.title = ''\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.$modal = null\r\n this.$header = null\r\n this.$title = null\r\n this.$close = null\r\n this.$main = null\r\n this.$footer = null\r\n this.$overlay = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.title = this.attr('title')\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n return this\r\n }\r\n\r\n setTitle(title) {\r\n this.attr('title', title)\r\n this.title = title\r\n this.$title.innerHTML = title\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const size = this.attr('size')\r\n const placement = this.attr('placement')\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const hasOffset = this.attr('hasOffset')\r\n const hasPadding = this.attr('hasPadding')\r\n const autoHeight = this.attr('autoHeight')\r\n const customClass = this.attr('customClass')\r\n let $el\r\n let $modal\r\n let $header\r\n let $title\r\n let $close\r\n let $main\r\n let $footer\r\n let $overlay\r\n\r\n paint()\r\n this.zIndex = zIndex()\r\n\r\n $title = createElement(\r\n 'h2',\r\n {\r\n className: 'outline-drawer__title'\r\n },\r\n this.title\r\n )\r\n this.$title = $title\r\n\r\n if (hasClose) {\r\n $close = createElement(\r\n 'div',\r\n {\r\n className: 'outline-drawer__close'\r\n },\r\n icon('close', { iconSet: 'outline', size: 20 })\r\n )\r\n this.$close = $close\r\n }\r\n\r\n $header = createElement(\r\n 'header',\r\n {\r\n className: 'outline-drawer__header'\r\n },\r\n [$title, $close]\r\n )\r\n this.$header = $header\r\n\r\n $main = createElement('div', {\r\n className: 'outline-drawer__main'\r\n })\r\n this.$main = $main\r\n\r\n if (!hasPadding) {\r\n addClass($main, 'outline-drawer_full')\r\n }\r\n\r\n $footer = createElement('footer', {\r\n className: 'outline-drawer__footer'\r\n })\r\n this.$footer = $footer\r\n\r\n $modal = createElement(\r\n 'div',\r\n {\r\n className: `outline-drawer__modal outline-drawer_${placement} outline-drawer_${size} outline-drawer_closed`\r\n },\r\n [$header, $main, $footer]\r\n )\r\n this.$modal = $modal\r\n\r\n if (hasOffset) {\r\n addClass($modal, 'outline-drawer_offset')\r\n }\r\n\r\n if (autoHeight) {\r\n addClass($modal, 'outline-drawer_auto')\r\n }\r\n\r\n if (customClass) {\r\n addClass($modal, customClass)\r\n }\r\n\r\n if (hasOverlay) {\r\n $overlay = createElement('div', {\r\n className: 'outline-drawer__overlay'\r\n })\r\n this.$overlay = $overlay\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: `outline-drawer`\r\n },\r\n [$modal, $overlay]\r\n )\r\n this.$el = $el\r\n document.body.appendChild($el)\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$main.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(content) {\r\n let $content = null\r\n\r\n if (isFunction(content)) {\r\n $content = content()\r\n } else if (isDOM(content)) {\r\n $content = content\r\n } else if (isHTML(content)) {\r\n $content = html(content)\r\n }\r\n\r\n if ($content) {\r\n this.$main.appendChild($content)\r\n }\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(content) {\r\n this.erase()._paint(content)\r\n return this\r\n }\r\n\r\n open() {\r\n const opened = this.attr('afterOpened')\r\n const $modal = this.$modal\r\n\r\n addClass(this.$el, 'outline-drawer_opened')\r\n removeClass($modal, 'outline-drawer_closed')\r\n addClass($modal, 'outline-drawer_opened')\r\n\r\n later(() => {\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n opened.call(this)\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const closed = this.attr('afterClosed')\r\n const $modal = this.$modal\r\n\r\n removeClass($modal, 'outline-drawer_opened')\r\n addClass($modal, 'outline-drawer_closed')\r\n\r\n later(() => {\r\n removeClass(this.$el, 'outline-drawer_opened')\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n closed.call(this)\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const afterToggle = this.attr('afterToggle')\r\n const closed = this.isClosed()\r\n\r\n if (closed) {\r\n this.open()\r\n } else {\r\n this.close()\r\n }\r\n\r\n if (isFunction(afterToggle)) {\r\n later(() => {\r\n afterToggle.call(this, closed)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const afterDestroy = this.attr('afterDestroy')\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n let index = this.zIndex\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n index -= 1\r\n zIndex(index)\r\n this.zIndex = 0\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const closeOnClickModal = this.attr('closeOnClickModal')\r\n const $el = this.$el\r\n\r\n if (hasClose) {\r\n on($el, '.outline-drawer__close', 'click', this.onClose, this, true)\r\n }\r\n\r\n if (hasOverlay && closeOnClickModal) {\r\n on($el, '.outline-drawer__overlay', 'click', this.onClose, this, true)\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const $el = this.$el\r\n\r\n if (!hasClose && !hasOverlay) {\r\n return this\r\n }\r\n\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nDrawer.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'rtl',\r\n title: '标题',\r\n size: 'regular',\r\n hasClose: true,\r\n hasOverlay: true,\r\n hasOffset: false,\r\n hasPadding: true,\r\n autoHeight: true,\r\n closeOnClickModal: true,\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n afterToggle: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Drawer\r\n","import isHTML from '../types/isHTML'\r\nimport isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport stripScripts from '../lang/stripScripts'\r\nimport createElement from './createElement'\r\n\r\n/**\r\n * 获取或者设置 DOM 元素的 innerHTML 属性值,或者通过 HTML 字符串,创建 DOM 元素\r\n * ========================================================================\r\n * @method html\r\n * @param {HTMLElement|String} el\r\n * @param {String} [strHTML]\r\n * @return {DocumentFragment|null|*}\r\n */\r\nconst html = (el, strHTML) => {\r\n const $fragment = document.createDocumentFragment()\r\n\r\n if (!el || (!isHTML(el) && !isString(el) && !isElement(el))) {\r\n return null\r\n }\r\n\r\n if (isHTML(el)) {\r\n const template = createElement('div')\r\n let children = []\r\n\r\n template.innerHTML = stripScripts(el)\r\n children = [...template.childNodes]\r\n children.forEach((child) => {\r\n $fragment.appendChild(child)\r\n })\r\n\r\n return $fragment\r\n } else if (isString(strHTML)) {\r\n el.innerHTML = stripScripts(strHTML)\r\n } else {\r\n return el.innerHTML\r\n }\r\n}\r\n\r\nexport default html\r\n","import isFunction from '../types/isFunction'\r\nimport off from './off'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定事件\r\n * ========================================================================\r\n * @method at\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (必须) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst at = (el, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n const listener = function (evt) {\r\n let overrideContext = context || el\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default at\r\n","/**\r\n * 获取HTML元素的某个CSS样式值\r\n * ====================================================\r\n * @param el\r\n * @param ruleName\r\n * @returns {*}\r\n */\r\nconst getStyle = (el, ruleName) => {\r\n return getComputedStyle(el)[ruleName]\r\n}\r\n\r\nexport default getStyle\r\n","import Base from './base'\r\n\r\nimport isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isElement from './utils/types/isElement'\r\nimport later from './utils/lang/later'\r\nimport at from './utils/event/at'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport stop from './utils/event/stop'\r\nimport createElement from './utils/dom/createElement'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport addClass from './utils/dom/addClass'\r\nimport intersection from './utils/dom/intersection'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport offsetTop from './utils/dom/offsetTop'\r\nimport getStyle from './utils/dom/getStyle'\r\nimport setProperty from './utils/dom/setProperty'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\n\r\nimport _paintChapters from './_paintChapters'\r\nimport inBounding from './utils/dom/inBounding'\r\n\r\nclass Chapters extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n this.scrollTimer = null\r\n this.resizeTimer = null\r\n this.observerTimer = null\r\n this.Observer = null\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Chapters.DEFAULTS)\r\n\r\n this.$el = null\r\n this.$title = null\r\n this.$main = null\r\n this.$list = null\r\n this.$placeholder = null\r\n this.$parentElement = null\r\n this.$scrollElement = null\r\n this.$active = null\r\n\r\n this.chapters = []\r\n this.active = 0\r\n this.offsetWidth = 0\r\n this.offsetTop = 0\r\n this.playing = false\r\n this.closed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n let parentElement\r\n let scrollElement\r\n let $parent\r\n\r\n this.attr(options)\r\n\r\n created = this.attr('created')\r\n parentElement = this.attr('parentElement')\r\n scrollElement = this.attr('scrollElement')\r\n\r\n if (isString(parentElement)) {\r\n $parent = document.querySelector(parentElement)\r\n } else if (isElement(parentElement)) {\r\n $parent = parentElement\r\n }\r\n this.$parentElement = $parent\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n\r\n this.chapters = this.attr('chapters')\r\n this.closed = this.attr('closed')\r\n this.active = this.attr('active')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n if (this.chapters.length < 1) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n this.$active = document.querySelector(`#chapter-${this.active}`)\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isSticky() {\r\n const position = this.attr('position')\r\n return position === 'sticky'\r\n }\r\n\r\n isFixed() {\r\n const position = this.attr('position')\r\n return position === 'fixed'\r\n }\r\n\r\n isInside() {\r\n return this.isFixed() || this.isSticky()\r\n }\r\n\r\n isOutside() {\r\n return !this.isInside()\r\n }\r\n\r\n count() {\r\n return this.chapters.length\r\n }\r\n\r\n _paintEdge() {\r\n const $fragment = document.createDocumentFragment()\r\n const STICKY = 'outline-chapters_sticky'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const title = this.attr('title')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const customClass = this.attr('customClass')\r\n const $parentElement = this.$parentElement\r\n const children = []\r\n const contents = []\r\n let $title = null\r\n let $el\r\n let $main\r\n let $list\r\n let $placeholder\r\n\r\n if (!$parentElement) {\r\n return this\r\n }\r\n\r\n if (this.isInside() && title) {\r\n $title = createElement(\r\n 'h2',\r\n {\r\n className: 'outline-chapters__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n contents.push($title)\r\n }\r\n\r\n $list = createElement('ul', {\r\n // 为优化性能,添加了 _fixed 和 _hidden\r\n // fixed 为了让 $list 脱离流布局\r\n // hidden 让 $list 不可见\r\n className: `outline-chapters__list`\r\n })\r\n this.$list = $list\r\n children.push($list)\r\n\r\n if (animationCurrent) {\r\n $placeholder = createElement('div', {\r\n className: 'outline-chapters__placeholder'\r\n })\r\n this.$placeholder = $placeholder\r\n children.push($placeholder)\r\n }\r\n\r\n $main = createElement(\r\n 'div',\r\n {\r\n className: 'outline-chapters__main'\r\n },\r\n children\r\n )\r\n this.$main = $main\r\n contents.push($main)\r\n\r\n $el = createElement(\r\n 'nav',\r\n {\r\n id: 'outline-chapters',\r\n className: `outline-chapters ${HIDDEN}`\r\n },\r\n contents\r\n )\r\n this.$el = $el\r\n\r\n if (this.isSticky()) {\r\n this.calculateStickyHeight()\r\n addClass($el, STICKY)\r\n }\r\n\r\n if (customClass) {\r\n addClass($el, customClass)\r\n }\r\n $fragment.appendChild($el)\r\n $parentElement.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const $parentElement = this.$parentElement\r\n const chapters = this.chapters\r\n const count = this.count()\r\n let $el\r\n\r\n if (!$parentElement || chapters.length < 1) {\r\n return this\r\n }\r\n\r\n if (this.isInside()) {\r\n addClass($parentElement, 'outline-chapters-parent')\r\n }\r\n\r\n this._paintEdge()\r\n $el = this.$el\r\n\r\n this._paint(chapters)\r\n\r\n later(() => {\r\n this.highlight(this.active)\r\n }, 60)\r\n\r\n this.offsetTop = offsetTop($el)\r\n this.offsetWidth = $el.offsetWidth\r\n\r\n if (this.isFixed()) {\r\n this.sticky()\r\n setProperty('--outline-chapters-width', `${this.offsetWidth}px`)\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n if (count < 400) {\r\n this.onObserver()\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$list.innerHTML = ''\r\n\r\n return this\r\n }\r\n\r\n _paint(chapters) {\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const showCode = this.attr('showCode')\r\n const $el = this.$el\r\n const $list = this.$list\r\n\r\n _paintChapters($list, chapters, showCode)\r\n removeClass($el, HIDDEN)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n this.$parentElement.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(chapters) {\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const $el = this.$el\r\n\r\n removeClass($el, HIDDEN)\r\n this.erase()._paint(chapters)\r\n\r\n return this\r\n }\r\n\r\n _getPlaceholderOffset(index) {\r\n const $main = this.$main\r\n const $list = this.$list\r\n const $anchor = $list.querySelector('.outline-chapters__anchor')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const mainPaddingTop = parseInt(getStyle($main, 'padding-top'), 10)\r\n const mainBorderTop = parseInt(getStyle($main, 'border-top-width'), 10)\r\n const placeholderPaddingTop = parseInt(getStyle($list, 'padding-top'), 10)\r\n const placeholderMarginTop = parseInt(getStyle($list, 'margin-top'), 10)\r\n const placeholderBorderTop = parseInt(\r\n getStyle($list, 'border-top-width'),\r\n 10\r\n )\r\n let height = $anchor.offsetHeight\r\n let offsetTop = 0\r\n let top\r\n\r\n if (!animationCurrent) {\r\n return this\r\n }\r\n\r\n if (mainPaddingTop) {\r\n offsetTop += mainPaddingTop\r\n }\r\n\r\n if (placeholderPaddingTop) {\r\n offsetTop += placeholderPaddingTop\r\n }\r\n\r\n if (placeholderMarginTop) {\r\n offsetTop += placeholderMarginTop\r\n }\r\n\r\n if (mainBorderTop) {\r\n offsetTop += mainBorderTop\r\n }\r\n\r\n if (placeholderBorderTop) {\r\n offsetTop += placeholderBorderTop\r\n }\r\n\r\n top = height * index\r\n\r\n return offsetTop + top\r\n }\r\n\r\n positionPlaceholder(index) {\r\n const $list = this.$list\r\n const $placeholder = this.$placeholder\r\n const $anchor = $list.querySelector('.outline-chapters__anchor')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const height = $anchor.offsetHeight\r\n let offsetTop = 0\r\n\r\n if (!animationCurrent) {\r\n return this\r\n }\r\n\r\n offsetTop = this._getPlaceholderOffset(index)\r\n\r\n $placeholder.style.cssText = `transform: translateY(${offsetTop}px);height:${height}px;`\r\n\r\n return this\r\n }\r\n\r\n highlight(id) {\r\n const $el = this.$el\r\n const animationCurrent = this.attr('animationCurrent')\r\n const ACTIVE = 'outline-chapters_active'\r\n const HIGHLIGHT = 'outline-chapters_highlight'\r\n let $anchor = null\r\n let placeholderOffsetTop = 0\r\n\r\n if (!$el) {\r\n return this\r\n }\r\n\r\n $anchor = $el.querySelector(`#chapter__anchor-${id}`)\r\n\r\n if (!$anchor) {\r\n return this\r\n }\r\n\r\n this.active = parseInt($anchor.getAttribute('data-id'), 10)\r\n\r\n if (this.$active) {\r\n removeClass(this.$active, HIGHLIGHT)\r\n removeClass(this.$active, ACTIVE)\r\n }\r\n\r\n this.$active = $anchor\r\n addClass(this.$active, ACTIVE)\r\n\r\n if (animationCurrent) {\r\n this.positionPlaceholder(this.active)\r\n\r\n later(() => {\r\n if (!inBounding(this.$active, this.$parentElement)) {\r\n placeholderOffsetTop = this._getPlaceholderOffset(this.active)\r\n scrollTo(this.$main, placeholderOffsetTop)\r\n }\r\n })\r\n } else {\r\n addClass(this.$active, HIGHLIGHT)\r\n }\r\n\r\n return this\r\n }\r\n\r\n sticky() {\r\n const afterSticky = this.attr('afterSticky')\r\n const FIXED = 'outline-chapters_fixed'\r\n const $el = this.$el\r\n const top = this.offsetTop\r\n const scrollTop = this.$scrollElement.scrollTop\r\n let isStickying\r\n\r\n if (!this.isFixed()) {\r\n return this\r\n }\r\n\r\n isStickying = scrollTop >= top\r\n\r\n if (isStickying) {\r\n addClass($el, FIXED)\r\n } else {\r\n removeClass($el, FIXED)\r\n }\r\n\r\n if (isFunction(afterSticky)) {\r\n afterSticky.call(this, this.isClosed(), isStickying)\r\n }\r\n\r\n return this\r\n }\r\n\r\n calculateStickyHeight() {\r\n const documentElement = document.documentElement\r\n const height = Math.max(\r\n documentElement.clientHeight || 0,\r\n window.innerHeight || 0\r\n )\r\n setProperty('--outline-sticky-height', `${height}px`)\r\n return this\r\n }\r\n\r\n scrollTo(top, after) {\r\n const el = this.$scrollElement\r\n\r\n scrollTo(el, top, after)\r\n\r\n return this\r\n }\r\n\r\n show() {\r\n const FOLDED = 'outline-chapters_folded'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const opened = this.attr('afterOpened')\r\n const count = this.count()\r\n const $el = this.$el\r\n const $parent = this.$parentElement\r\n\r\n if (this.isInside()) {\r\n if (count > 800) {\r\n removeClass($parent, HIDDEN)\r\n } else {\r\n removeClass($parent, HIDDEN)\r\n later(() => {\r\n removeClass($parent, FOLDED)\r\n }, 30)\r\n }\r\n } else {\r\n removeClass($el, HIDDEN)\r\n }\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n opened.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide() {\r\n const FOLDED = 'outline-chapters_folded'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const closed = this.attr('afterClosed')\r\n const count = this.count()\r\n const $el = this.$el\r\n const $parent = this.$parentElement\r\n\r\n if (this.isInside()) {\r\n if (count > 800) {\r\n addClass($parent, HIDDEN)\r\n } else {\r\n addClass($parent, FOLDED)\r\n later(() => {\r\n addClass($parent, HIDDEN)\r\n })\r\n }\r\n } else {\r\n addClass($el, HIDDEN)\r\n }\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n closed.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const afterToggle = this.attr('afterToggle')\r\n const top = this.offsetTop\r\n const scrollTop = this.$scrollElement.scrollTop\r\n let isStickying\r\n\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n if (isFunction(afterToggle)) {\r\n later(() => {\r\n isStickying = scrollTop >= top\r\n afterToggle.call(this, this.isClosed(), isStickying)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n if (this.scrollTimer) {\r\n clearTimeout(this.scrollTimer)\r\n this.scrollTimer = null\r\n }\r\n\r\n if (this.resizeTimer) {\r\n clearTimeout(this.resizeTimer)\r\n this.resizeTimer = null\r\n }\r\n\r\n if (this.observerTimer) {\r\n clearTimeout(this.observerTimer)\r\n this.observerTimer = null\r\n }\r\n\r\n if (this.Observer) {\r\n this.Observer = null\r\n }\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onObserver() {\r\n const selector = this.attr('selector')\r\n\r\n this.Observer = intersection(\r\n ($heading) => {\r\n const id = $heading.getAttribute('data-id')\r\n\r\n if (this.playing) {\r\n return false\r\n }\r\n\r\n if (this.observerTimer) {\r\n clearTimeout(this.observerTimer)\r\n }\r\n\r\n this.observerTimer = later(() => {\r\n this.highlight(id)\r\n }, 100)\r\n },\r\n {\r\n selector,\r\n context: this\r\n }\r\n )\r\n\r\n return this\r\n }\r\n\r\n onSelect(evt) {\r\n const stickyHeight = this.attr('stickyHeight')\r\n const $anchor = evt.delegateTarget\r\n const id = $anchor.getAttribute('data-id')\r\n const headingId = $anchor.href.split('#')[1]\r\n const $heading = document.querySelector(`#${headingId}`)\r\n const top = offsetTop($heading) - (stickyHeight + 10)\r\n const min = 0\r\n const max = this.$scrollElement.scrollHeight\r\n const afterScroll = this.attr('afterScroll')\r\n const after = () => {\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(this, 'chapter')\r\n }\r\n\r\n later(() => {\r\n this.playing = false\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n })\r\n }\r\n\r\n this.playing = true\r\n if (this.isFixed()) {\r\n this.sticky()\r\n later(() => {\r\n this.scrollTo(top, after)\r\n this.highlight(id)\r\n }, 10)\r\n } else {\r\n this.scrollTo(top, after)\r\n this.highlight(id)\r\n }\r\n\r\n stop(evt)\r\n\r\n return this\r\n }\r\n\r\n onScroll() {\r\n const $scrollElement = this.$scrollElement\r\n\r\n if (this.scrollTimer) {\r\n clearTimeout(this.scrollTimer)\r\n }\r\n\r\n this.scrollTimer = later(() => {\r\n const top = $scrollElement.scrollTop\r\n const min = 0\r\n const max = $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n\r\n if (this.isFixed()) {\r\n this.sticky()\r\n }\r\n\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n onResize() {\r\n if (this.resizeTimer) {\r\n clearTimeout(this.resizeTimer)\r\n }\r\n\r\n this.resizeTimer = later(() => {\r\n this.calculateStickyHeight()\r\n })\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n const $scrollElement = this.$scrollElement\r\n const tagName = $scrollElement.tagName.toLowerCase()\r\n let $element = $scrollElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n if (tagName === 'html' || tagName === 'body') {\r\n $element = window\r\n }\r\n\r\n on($el, '.outline-chapters__anchor', 'click', this.onSelect, this, true)\r\n at($element, 'scroll', this.onScroll, this, true)\r\n if (this.isSticky()) {\r\n at(window, 'resize', this.onResize, this, true)\r\n }\r\n this.$on('anchors:all:paint', this.onObserver, this)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const selector = this.attr('selector')\r\n const $el = this.$el\r\n const $scrollElement = this.$scrollElement\r\n const tagName = $scrollElement.tagName.toLowerCase()\r\n let $element = $scrollElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n if (tagName === 'html' || tagName === 'body') {\r\n $element = window\r\n }\r\n\r\n off($el, 'click', this.onSelect)\r\n off($element, 'scroll', this.onScroll)\r\n if (this.isSticky()) {\r\n off(window, 'resize', this.onResize)\r\n }\r\n this.$off('anchors:all:paint')\r\n\r\n if (this.Observer) {\r\n document.querySelectorAll(selector).forEach((section) => {\r\n this.Observer.unobserve(section)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nChapters.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n parentElement: '',\r\n scrollElement: '',\r\n selector: '.outline-heading',\r\n active: 0,\r\n closed: false,\r\n showCode: true,\r\n animationCurrent: true,\r\n position: 'relative',\r\n stickyHeight: 0,\r\n chapters: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n afterSticky: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Chapters\r\n","import createElement from './utils/dom/createElement'\r\nimport timeSlice from './utils/lang/timeSlice'\r\n\r\nconst _paintChapters = ($list, chapters, showCode = false) => {\r\n const LIMIT = 400\r\n const count = chapters.length\r\n const clones = [...chapters]\r\n const paint = (parts) => {\r\n const byId = (id) => $list.querySelector(`#${id}`)\r\n parts.forEach((chapter) => {\r\n const pid = chapter.pid\r\n const id = chapter.id\r\n const rel = chapter.rel\r\n const children = []\r\n const $text = createElement(\r\n 'span',\r\n {\r\n className: 'outline-chapters__text'\r\n },\r\n chapter.text\r\n )\r\n let $link\r\n let $code\r\n let $li\r\n let $subject\r\n let $chapter\r\n\r\n if (showCode) {\r\n $code = createElement(\r\n 'span',\r\n {\r\n className: 'outline-chapters__code',\r\n 'data-id': id\r\n },\r\n chapter.code\r\n )\r\n\r\n children.push($code)\r\n }\r\n\r\n children.push($text)\r\n\r\n $link = createElement(\r\n 'a',\r\n {\r\n id: `chapter__anchor-${id}`,\r\n className: 'outline-chapters__anchor',\r\n href: '#' + rel,\r\n rel: rel,\r\n 'data-id': id\r\n },\r\n children\r\n )\r\n\r\n $li = createElement(\r\n 'li',\r\n {\r\n id: `chapter-${id}`,\r\n className: 'outline-chapters__item',\r\n 'data-id': id\r\n },\r\n $link\r\n )\r\n\r\n if (pid === -1) {\r\n $list.appendChild($li)\r\n } else {\r\n $chapter = byId(`chapter-${pid}`)\r\n $subject = byId(`subject-${pid}`)\r\n\r\n if (!$subject) {\r\n $subject = createElement(\r\n 'ul',\r\n {\r\n id: 'subject-' + pid,\r\n className: 'outline-chapters__subject'\r\n },\r\n $li\r\n )\r\n\r\n $chapter.appendChild($subject)\r\n } else {\r\n $subject.appendChild($li)\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (count > LIMIT) {\r\n // 同步绘制\r\n paint(clones.splice(0, LIMIT))\r\n // 剩余的采用 timeSlice 机制绘制\r\n while (clones.length > 0) {\r\n const once = clones.splice(0, LIMIT)\r\n timeSlice(() => {\r\n paint(once)\r\n })\r\n }\r\n } else {\r\n paint(clones)\r\n }\r\n}\r\n\r\nexport default _paintChapters\r\n","import isElement from '../types/isElement'\r\n\r\n/**\r\n * 检测某个 DOM 节点的位置是否在另个一个 DOM 节点范围内\r\n * ========================================================================\r\n * @method inBounding\r\n * @param {HTMLElement} child\r\n * @param {HTMLElement} parent\r\n * @return {Boolean}\r\n */\r\nconst inBounding = (child, parent) => {\r\n let parentRect\r\n let childRect\r\n\r\n if (!isElement(child) || !isElement(parent)) {\r\n return false\r\n }\r\n\r\n parentRect = parent.getBoundingClientRect()\r\n childRect = child.getBoundingClientRect()\r\n\r\n return (\r\n childRect.top >= parentRect.top &&\r\n childRect.right <= parentRect.right &&\r\n childRect.bottom <= parentRect.bottom &&\r\n childRect.left >= parentRect.left\r\n )\r\n}\r\n\r\nexport default inBounding\r\n","import isFunction from '../types/isFunction'\r\nimport isElement from '../types/isElement'\r\n\r\n/**\r\n * 通用的 IntersectionObserver 观察者处理器\r\n * ========================================================================\r\n * @method intersection\r\n * @param {Function} fn\r\n * @param {Object} [props]\r\n * @param {Object|HTMLElement} [props.root]\r\n * @param {String} [props.selector]\r\n * @param {Object} [props.context]\r\n * @param {String} [props.attr]\r\n * @param {String} [props.rootMargin]\r\n */\r\nconst intersection = (fn, props = {}) => {\r\n const root = props.root || null\r\n const selector = props.selector || '.outline-heading'\r\n const context = props.context || null\r\n const rootMargin = props.rootMargin || '0px 0px -90% 0px'\r\n const options = {\r\n rootMargin: rootMargin\r\n }\r\n // eslint-disable-next-line compat/compat\r\n const Observer = new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.intersectionRatio > 0) {\r\n if (isFunction(fn)) {\r\n fn.call(context || entry.target, entry.target)\r\n }\r\n }\r\n })\r\n }, options)\r\n const $root = isElement(root) ? root : document\r\n\r\n if (root) {\r\n options.root = root\r\n }\r\n\r\n $root.querySelectorAll(selector).forEach((section) => {\r\n Observer.observe(section)\r\n })\r\n\r\n return Observer\r\n}\r\n\r\nexport default intersection\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测测试数据是否为类似 Object 类型\r\n * ========================================================================\r\n * @method isObjectLike\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是类似 Object 类型,返回 true,否则返回 false\r\n */\r\nconst isObjectLike = (val) => {\r\n return isObject(val) && val !== null\r\n}\r\n\r\nexport default isObjectLike\r\n","import isObjectLike from './isObjectLike'\r\n\r\n/**\r\n * 检测测试数据是否为普通对象\r\n * ========================================================================\r\n * @method isPlainObject\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是普通对象,返回 true,否则返回 false\r\n */\r\nconst isPlainObject = (val) => {\r\n const getPrototypeOf = Object.getPrototypeOf\r\n let proto\r\n\r\n // Detect obvious negatives\r\n if (!isObjectLike(val)) {\r\n return false\r\n }\r\n\r\n proto = val.prototype\r\n\r\n // JavaScript 对象分为两种:普通对象和函数对象\r\n // 普通对象:原型是 __proto__,没有 prototype 原型(属性)\r\n // 函数对象:原型是 prototype ,prototype 只存在于函数对象上\r\n if (!proto) {\r\n return true\r\n }\r\n\r\n proto = val\r\n\r\n while (getPrototypeOf(proto) !== null) {\r\n proto = getPrototypeOf(proto)\r\n }\r\n\r\n return getPrototypeOf(val) === proto\r\n}\r\n\r\nexport default isPlainObject\r\n","/**\r\n * 转义字符串中的 HTML 标签\r\n *\r\n * @param {String} str - 需要转义的字符串\r\n * @returns {String}\r\n */\r\nconst encodeHTML = (str) => {\r\n const CHARTS = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": ''',\r\n '\"': '"'\r\n }\r\n\r\n return str.replace(/[&<>'\"]/g, (tag) => {\r\n return CHARTS[tag] || tag\r\n })\r\n}\r\n\r\nexport default encodeHTML\r\n","import isString from './utils/types/isString'\r\nimport isPlainObject from './utils/types/isPlainObject'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport extend from './utils/lang/extend'\r\nimport later from './utils/lang/later'\r\nimport stripScripts from './utils/lang/stripScripts'\r\nimport encodeHTML from './utils/lang/encodeHTML'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport guid from './utils/lang/guid'\r\n\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport setAttribute from './utils/dom/setAttribute'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\nimport paint from './utils/icons/paint'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\n\r\nconst TYPES = ['info', 'success', 'warning', 'error']\r\nconst instances = []\r\nlet instance\r\n\r\npaint()\r\n\r\nclass Message extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Message.DEFAULTS)\r\n\r\n this.$el = null\r\n this.id = ''\r\n this.closed = false\r\n this.visible = false\r\n this.offset = -50\r\n this.timer = null\r\n this.destroyed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options)\r\n this.id = this.attr('id')\r\n this.offset = this.attr('offset') || -50\r\n\r\n this.$emit('created', { ...this.attr() })\r\n\r\n this.render().addListeners()\r\n\r\n if (this.attr('visible')) {\r\n this.open()\r\n }\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isDestroyed() {\r\n return this.destroyed\r\n }\r\n\r\n _getClassName() {\r\n const type = this.attr('type')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const visible = this.attr('visible')\r\n const customClass = this.attr('customClass')\r\n const className = [\r\n 'outline-message',\r\n `outline-message_${type}`,\r\n `outline-message_${effect}`\r\n ]\r\n\r\n if (round) {\r\n className.push('outline-message_round')\r\n }\r\n\r\n if (!closable) {\r\n className.push('outline-message_full-width')\r\n }\r\n\r\n if (visible) {\r\n className.push('outline-message_visible')\r\n }\r\n\r\n if (customClass) {\r\n className.push(customClass)\r\n }\r\n\r\n return className\r\n }\r\n\r\n render() {\r\n const type = this.attr('type')\r\n const message = this.attr('message')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n const className = this._getClassName()\r\n const iconName = effect === 'light' ? `circle-${type}` : type\r\n const children = []\r\n let iconSize = 20\r\n let $type\r\n let $message\r\n let $text\r\n let $close\r\n let $el\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n\r\n if (effect !== 'plain') {\r\n $type = icon(iconName, {\r\n iconSet: 'outline',\r\n size: iconSize\r\n })\r\n addClass($type, 'outline-message__icon')\r\n children.push($type)\r\n }\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n $text = document.createTextNode(encodeHTML(stripScripts(message)))\r\n } else {\r\n $text = document.createDocumentFragment()\r\n $text.innerHTML = message\r\n }\r\n $message = createElement(\r\n 'p',\r\n {\r\n className: 'outline-message__content'\r\n },\r\n [$text]\r\n )\r\n children.push($message)\r\n\r\n if (closable) {\r\n $close = icon('close', {\r\n iconSet: 'outline',\r\n size: 18\r\n })\r\n addClass($close, 'outline-message__close')\r\n children.push($close)\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: className.join(' ')\r\n },\r\n children\r\n )\r\n $el.style.cssText = `top:-50px;`\r\n this.$el = $el\r\n document.body.appendChild(this.$el)\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n _refreshIcon() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let iconSize = 20\r\n let type\r\n let effect\r\n let round\r\n let iconName\r\n let $icon\r\n let $svg\r\n let $use\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $icon = $el.querySelector('.outline-icon')\r\n\r\n if (!$icon) {\r\n return this\r\n }\r\n\r\n type = this.attr('type')\r\n effect = this.attr('effect')\r\n round = this.attr('round')\r\n\r\n if (effect === 'plain') {\r\n addClass($icon, HIDDEN)\r\n } else {\r\n removeClass($icon, HIDDEN)\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n }\r\n\r\n $svg = $icon.querySelector('.outline-icon__svg')\r\n setAttributes($svg, {\r\n style: `width:${iconSize}px;height:${iconSize}px;`\r\n })\r\n\r\n $use = $svg.querySelector('use')\r\n iconName = effect === 'light' ? `circle-${type}` : type\r\n setAttribute($use, 'xlink:href', `#outline-icon-${iconName}`)\r\n\r\n return this\r\n }\r\n\r\n _refreshMessage() {\r\n const $el = this.$el\r\n let $message\r\n let dangerouslyUseHTMLString\r\n let message\r\n let text\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $message = $el.querySelector('.outline-message__content')\r\n dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n message = this.attr('message')\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n text = encodeHTML(stripScripts(message))\r\n } else {\r\n text = message\r\n }\r\n\r\n $message.innerHTML = text\r\n\r\n return this\r\n }\r\n\r\n _refreshClose() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let $close\r\n let closable\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $close = $el.querySelector('.outline-message__close')\r\n closable = this.attr('closable')\r\n\r\n if ($close) {\r\n if (closable) {\r\n addClass($close, HIDDEN)\r\n } else {\r\n removeClass($close, HIDDEN)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n _refreshEl() {\r\n const $el = this.$el\r\n let className\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n className = this._getClassName()\r\n setAttribute($el, 'className', className.join(' '))\r\n\r\n return this\r\n }\r\n\r\n refresh(options) {\r\n if (!isPlainObject(options)) {\r\n return this\r\n }\r\n\r\n this.attr(options)\r\n ._refreshIcon()\r\n ._refreshMessage()\r\n ._refreshClose()\r\n ._refreshEl()\r\n\r\n return this\r\n }\r\n\r\n clearTimer() {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n this.timer = null\r\n }\r\n\r\n return this\r\n }\r\n\r\n startTimer(duration) {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.timer = later(() => {\r\n this.$emit('opened')\r\n this.close()\r\n }, duration * 1000)\r\n\r\n return this\r\n }\r\n\r\n open(options) {\r\n const $el = this.$el\r\n let offset\r\n let duration\r\n let top\r\n let cssRules\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.isClosed()) {\r\n this.refresh(options)\r\n }\r\n\r\n offset = this.attr('offset')\r\n duration = this.attr('duration')\r\n top = offset && offset >= this.offset ? offset : this.offset\r\n cssRules = `top:${top}px;`\r\n\r\n this.clearTimer()\r\n\r\n this.$emit('beforeOpen')\r\n\r\n later(() => {\r\n this.visible = true\r\n\r\n addClass($el, 'outline-message_visible')\r\n $el.style.cssText = cssRules\r\n\r\n if (duration > 0) {\r\n this.startTimer(duration)\r\n }\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const $el = this.$el\r\n const cssRules = `top:-50px;`\r\n let destroyAfterClosed\r\n let beforeClose\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n destroyAfterClosed = this.attr('destroyAfterClosed')\r\n beforeClose = this.attr('beforeClose')\r\n\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(this)\r\n }\r\n\r\n $el.style.cssText = cssRules\r\n removeClass($el, 'outline-message_visible')\r\n\r\n this.visible = false\r\n this.closed = true\r\n\r\n later(() => {\r\n this.$emit('closed')\r\n\r\n if (destroyAfterClosed) {\r\n this.destroy()\r\n }\r\n }, 500)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.removeListeners()\r\n\r\n document.body.removeChild(this.$el)\r\n\r\n clearTimeout(this.timer)\r\n this._default()\r\n\r\n this.$emit('afterDestroy')\r\n\r\n return this\r\n }\r\n\r\n onMouseEnter() {\r\n this.clearTimer()\r\n return this\r\n }\r\n\r\n onMouseLeave() {\r\n const duration = this.attr('duration')\r\n const delay = this.attr('delay')\r\n\r\n if (duration <= 0) {\r\n return this\r\n }\r\n\r\n this.startTimer(delay)\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.clearTimer()\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseenter',\r\n this.onMouseEnter,\r\n this,\r\n true\r\n )\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseleave',\r\n this.onMouseLeave,\r\n this,\r\n true\r\n )\r\n on($el, '.outline-message__close', 'click', this.onClose, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $el = this.$el\r\n\r\n off($el, 'mouseenter', this.onMouseEnter)\r\n off($el, 'mouseleave', this.onMouseLeave)\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nMessage.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n id: '',\r\n type: 'info',\r\n effect: 'default',\r\n round: false,\r\n offset: 30,\r\n duration: 3,\r\n delay: 2,\r\n message: '',\r\n customClass: '',\r\n closable: true,\r\n visible: true,\r\n dangerouslyUseHTMLString: false,\r\n destroyAfterClosed: true,\r\n beforeClose: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nTYPES.forEach((type) => {\r\n Message[type] = (options) => {\r\n const config = {}\r\n const id = guid(`outline-message-`)\r\n const beforeClose = options.beforeClose || null\r\n let offset = options.offset || 30\r\n\r\n if (isString(options)) {\r\n config.message = options\r\n } else {\r\n if (isPlainObject(options)) {\r\n extend(config, options)\r\n }\r\n }\r\n config.id = id\r\n config.type = type\r\n config.offset = offset\r\n config.visible = false\r\n config.beforeClose = () => {\r\n Message.close(id, beforeClose)\r\n }\r\n\r\n instance = new Message(config)\r\n instances.forEach((item) => {\r\n offset += item.$el.offsetHeight + 16\r\n })\r\n instance.offset = offset\r\n instance.open()\r\n instances.push(instance)\r\n\r\n return instance\r\n }\r\n})\r\n\r\n// 关闭指定 id 消息的静态方法\r\nMessage.close = (id, beforeClose) => {\r\n const len = instances.length\r\n let index = -1\r\n let i\r\n let offsetHeight\r\n\r\n instances.forEach((instance, i) => {\r\n // 在 instances 中通过 id 找到要关闭的消息\r\n if (id === instance.id) {\r\n offsetHeight = instance.$el.offsetHeight\r\n index = i\r\n\r\n // 关闭消息\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(instance)\r\n }\r\n\r\n instances.splice(i, 1)\r\n }\r\n })\r\n\r\n if (len <= 1 || index === -1 || index > instances.length - 1) {\r\n return false\r\n }\r\n\r\n i = index\r\n\r\n // 界面中的消息逐个向上收起\r\n for (; i < len - 1; i += 1) {\r\n const dom = instances[i].$el\r\n\r\n dom.style['top'] = parseInt(dom.style['top'], 10) - offsetHeight - 16 + 'px'\r\n }\r\n}\r\n\r\n// 关闭所有消息的静态方法\r\nMessage.clear = () => {\r\n let i = instances.length - 1\r\n for (; i >= 0; i -= 1) {\r\n instances[i].close()\r\n }\r\n}\r\n\r\nexport default Message\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Command {\r\n constructor(name, action) {\r\n this.name = name\r\n\r\n if (isFunction(action)) {\r\n this.action = action\r\n }\r\n }\r\n\r\n execute() {\r\n this.action()\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Command\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Commands {\r\n constructor() {\r\n this.commands = []\r\n }\r\n\r\n get(name) {\r\n return this.commands.find((cmd) => cmd.name === name)\r\n }\r\n\r\n add(command) {\r\n this.commands.push(command)\r\n\r\n return this\r\n }\r\n\r\n del(name) {\r\n const commands = this.commands\r\n const command = commands.find((cmd) => cmd.name === name)\r\n const index = command ? commands.indexOf(command) : -1\r\n\r\n if (index > -1) {\r\n commands.splice(index, 1)\r\n }\r\n\r\n return this\r\n }\r\n\r\n clear() {\r\n this.commands = []\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n const command = this.commands.find((cmd) => cmd.name === name)\r\n\r\n if (isFunction(command?.execute)) {\r\n command.execute()\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Commands\r\n","import icon from './utils/icons/icon'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\n\r\nconst _createButton = (button, rounded = true) => {\r\n const $icon = icon(button.icon, {\r\n iconSet: button.iconSet || 'outline',\r\n color: button.color || '',\r\n size: button.size\r\n })\r\n const $anchor = createElement(\r\n 'a',\r\n {\r\n className: `outline-toolbar__anchor`,\r\n href: button.link\r\n },\r\n $icon\r\n )\r\n const $button = createElement(\r\n 'div',\r\n {\r\n className: `outline-toolbar__button ${button.name}`,\r\n 'data-cmd': button.name\r\n },\r\n [button.link ? $anchor : $icon]\r\n )\r\n\r\n addClass($icon, 'outline-toolbar__icon')\r\n\r\n if (rounded) {\r\n addClass($button, 'outline-toolbar_rounded')\r\n }\r\n\r\n if (button.disabled) {\r\n addClass($button, 'outline-toolbar_disabled')\r\n }\r\n\r\n return $button\r\n}\r\n\r\nexport default _createButton\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isObject from './utils/types/isObject'\r\nimport isArray from './utils/types/isArray'\r\nimport later from './utils/lang/later'\r\nimport guid from './utils/lang/guid'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport hasClass from './utils/dom/hasClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport Base from './base'\r\nimport Command from './command'\r\nimport Commands from './commands'\r\n\r\nimport _createButton from './_createButton'\r\n\r\nconst DISABLED = 'outline-toolbar_disabled'\r\nconst HIDDEN = 'outline-toolbar_hidden'\r\n\r\nclass Toolbar extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Toolbar.DEFAULTS)\r\n\r\n this.disabled = false\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.buttons = []\r\n this.commands = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.disabled = this.attr('disabled')\r\n this.closed = this.attr('closed')\r\n this.commands = new Commands()\r\n\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n isDisabled(name) {\r\n let button\r\n\r\n if (name) {\r\n button = this.get(name)\r\n\r\n return button.disabled\r\n }\r\n\r\n return this.disabled\r\n }\r\n\r\n isExist(name) {\r\n const button = this.get(name)\r\n return !!button\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n _getCommand(button) {\r\n const _self = this\r\n const { action, name } = button\r\n let command = null\r\n let handler = null\r\n let context\r\n let listener\r\n\r\n if (!action) {\r\n return command\r\n }\r\n\r\n handler = action.handler\r\n context = action.context || this\r\n\r\n if (isFunction(handler)) {\r\n listener = handler\r\n } else if (isString(handler)) {\r\n listener = function () {\r\n _self.$emit(handler, name)\r\n }\r\n }\r\n\r\n if (isFunction(listener)) {\r\n command = new Command(name, listener.bind(context))\r\n }\r\n\r\n return command\r\n }\r\n\r\n get(name) {\r\n return this.buttons.find((button) => button.name === name)\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const buttons = this.attr('buttons') || []\r\n const placement = this.attr('placement')\r\n\r\n paint()\r\n\r\n this.$el = createElement('div', {\r\n id: guid('outline-toolbar'),\r\n className: `outline-toolbar outline-toolbar_${placement}`\r\n })\r\n this._paint(buttons)\r\n document.body.appendChild(this.$el)\r\n\r\n if (this.closed) {\r\n this.hide()\r\n }\r\n\r\n if (this.disabled) {\r\n this.disable()\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$el.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(buttons) {\r\n const rounded = this.attr('rounded')\r\n const $fragment = document.createDocumentFragment()\r\n\r\n buttons.forEach((button) => {\r\n const $button = _createButton(button, rounded)\r\n const command = this._getCommand(button)\r\n const { name, disabled, context } = button\r\n\r\n $fragment.appendChild($button)\r\n\r\n if (!this.isExist(name)) {\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n })\r\n\r\n this.$el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(buttons) {\r\n this.attr({ buttons })\r\n this.erase()._paint(buttons)\r\n return this\r\n }\r\n\r\n add(button) {\r\n const $el = this.$el\r\n const $fragment = document.createDocumentFragment()\r\n const buttons = this.attr('buttons') || []\r\n const { name, disabled, context } = button\r\n const command = this._getCommand(button)\r\n const _add = (button) => {\r\n const $button = _createButton(button)\r\n\r\n $fragment.appendChild($button)\r\n\r\n buttons.push(button)\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this,\r\n command\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n\r\n if (isObject(button)) {\r\n _add(button)\r\n } else if (isArray(button)) {\r\n button.forEach((item) => {\r\n if (isObject(item)) {\r\n _add(item)\r\n }\r\n })\r\n }\r\n $el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n remove(name) {\r\n const $el = this.$el\r\n const buttons = this.buttons\r\n const button = this.get(name)\r\n let index = -1\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n index = buttons.indexOf(button)\r\n\r\n if (index > -1) {\r\n buttons.splice(index, 1)\r\n this.attrs('buttons').splice(index, 1)\r\n }\r\n\r\n this._disable(name)\r\n $el.removeChild(button.$el)\r\n\r\n return this\r\n }\r\n\r\n _disable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = true\r\n\r\n if (command) {\r\n this.commands.del(command)\r\n }\r\n\r\n addClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n _enable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || !button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = false\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n\r\n removeClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n disable(name) {\r\n const disabled = this.attr('afterDisabled')\r\n\r\n if (name) {\r\n this._disable(name)\r\n } else {\r\n addClass(this.$el, DISABLED)\r\n this.removeListeners()\r\n this.disabled = true\r\n\r\n if (isFunction(disabled)) {\r\n disabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n enable(name) {\r\n const enabled = this.attr('afterEnabled')\r\n\r\n if (name) {\r\n this._enable(name)\r\n } else {\r\n this.disabled = false\r\n removeClass(this.$el, DISABLED)\r\n this.addListeners()\r\n\r\n if (isFunction(enabled)) {\r\n enabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n show(name) {\r\n const opened = this.attr('afterOpened')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n removeClass(button.$el, HIDDEN)\r\n } else {\r\n removeClass($el, HIDDEN)\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n later(() => {\r\n opened.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide(name) {\r\n const closed = this.attr('afterClosed')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n addClass(button.$el, HIDDEN)\r\n } else {\r\n addClass($el, HIDDEN)\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n later(() => {\r\n closed.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n highlight(name) {\r\n const button = this.get(name)\r\n const ACTIVE = 'outline-toolbar_active'\r\n let $button\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n $button = button.$el\r\n\r\n if (hasClass($button, ACTIVE)) {\r\n removeClass($button, ACTIVE)\r\n } else {\r\n addClass($button, ACTIVE)\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.commands.clear()\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n if (this.isDisabled(name)) {\r\n return this\r\n }\r\n\r\n this.commands.execute(name)\r\n\r\n return this\r\n }\r\n\r\n onExecute(evt) {\r\n const $button = evt.delegateTarget\r\n let cmd = ''\r\n\r\n if ($button) {\r\n cmd = $button.getAttribute('data-cmd')\r\n\r\n if (cmd) {\r\n this.execute(cmd)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n on($el, `.outline-toolbar__button`, 'click', this.onExecute, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n off($el, '.outline-toolbar__button', this.onExecute)\r\n\r\n return this\r\n }\r\n}\r\n\r\nToolbar.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'ltr',\r\n closed: false,\r\n disabled: false,\r\n rounded: true,\r\n buttons: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterDisabled: null,\r\n afterEnabled: null,\r\n beforeDestroy: null,\r\n afterDestroy: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Toolbar\r\n","import addClass from './utils/dom/addClass'\r\n\r\nconst _updateSiblingElements = (siblingElement, isPrev) => {\r\n let tagName\r\n let $sibling = siblingElement\r\n\r\n while ($sibling) {\r\n tagName = $sibling.tagName.toLowerCase()\r\n\r\n if (tagName !== 'script' && tagName !== 'style') {\r\n addClass($sibling, 'outline-reader_sibling')\r\n }\r\n\r\n if (isPrev) {\r\n $sibling = $sibling.previousElementSibling\r\n } else {\r\n $sibling = $sibling.nextElementSibling\r\n }\r\n }\r\n}\r\n\r\nexport default _updateSiblingElements\r\n","import cloneDeep from './utils/lang/cloneDeep'\r\nimport later from './utils/lang/later'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport isFunction from './utils/types/isFunction'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport at from './utils/event/at'\r\nimport stop from './utils/event/stop'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\nimport Message from './message'\r\nimport Toolbar from './toolbar'\r\n\r\nimport _updateSiblingElements from './_updateSiblingElements'\r\n\r\nconst ENTER_READING_TIP = '进入阅读模式,按 ESC 键可退出阅读模式'\r\n\r\nclass Reader extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Reader.DEFAULTS)\r\n this.reading = false\r\n\r\n this.$target = null\r\n this.$paper = null\r\n this.$title = null\r\n this.$article = null\r\n this.$progress = null\r\n\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let target = null\r\n\r\n this.attr(options)\r\n\r\n target = this.attr('target')\r\n\r\n if (isString(target)) {\r\n this.$target = document.querySelector(target)\r\n } else if (isElement(target)) {\r\n this.$target = target\r\n }\r\n\r\n if (!this.$target) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n this._renderEdge()._paint(this.$target)\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$article.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint($content) {\r\n const $fragment = document.createDocumentFragment()\r\n const $children = [...$content.cloneNode(true).children]\r\n\r\n later(() => {\r\n $children.forEach(($child) => {\r\n $fragment.appendChild($child)\r\n })\r\n\r\n this.$article.appendChild($fragment)\r\n })\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const $paper = this.$paper\r\n const toolbar = this.toolbar\r\n\r\n if ($paper) {\r\n document.body.removeChild($paper)\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n this.erase()._paint(this.$target)\r\n return this\r\n }\r\n\r\n _renderEdge() {\r\n const $target = this.$target\r\n let title = this.attr('title')\r\n let $paper\r\n let $title\r\n let $article\r\n let $progress\r\n let $sibling\r\n\r\n $title = $target.querySelector('h1')\r\n\r\n if (isElement(title)) {\r\n $title = title\r\n }\r\n\r\n if (isElement($title)) {\r\n title = $title.innerText\r\n }\r\n\r\n $title = createElement(\r\n 'h1',\r\n {\r\n className: 'outline-reader__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n\r\n $article = createElement('article', {\r\n id: 'outline-reader__article',\r\n className: 'outline-reader__article'\r\n })\r\n this.$article = $article\r\n\r\n $progress = createElement('div', {\r\n className: 'outline-reader__progress'\r\n })\r\n this.$progress = $progress\r\n\r\n this.toolbar = new Toolbar({\r\n placement: 'rtl',\r\n buttons: [\r\n {\r\n name: 'exit',\r\n icon: 'close',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.exit\r\n }\r\n }\r\n ]\r\n })\r\n\r\n $paper = createElement(\r\n 'section',\r\n {\r\n id: 'outline-reader',\r\n className: 'outline-reader outline-reader_hidden'\r\n },\r\n [$progress, $title, $article, this.toolbar.$el]\r\n )\r\n this.$paper = $paper\r\n\r\n document.body.appendChild($paper)\r\n\r\n later(() => {\r\n // 设置邻居节点的打印样式\r\n $sibling = $paper.previousElementSibling\r\n _updateSiblingElements($sibling, true)\r\n\r\n $sibling = $paper.nextElementSibling\r\n _updateSiblingElements($sibling)\r\n })\r\n\r\n return this\r\n }\r\n\r\n enter() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n const enterReadingTip = this.attr('enterReadingTip') || ENTER_READING_TIP\r\n\r\n if (this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n $siblings.forEach(($sibling) => {\r\n addClass($sibling, HIDDEN)\r\n })\r\n addClass($paper, READING)\r\n removeClass($paper, HIDDEN)\r\n this.toolbar.show()\r\n this.reading = true\r\n\r\n Message.info({\r\n round: true,\r\n message: enterReadingTip\r\n })\r\n\r\n this.$emit('enterReading')\r\n\r\n return this\r\n }\r\n\r\n exit() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n\r\n if (!this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n addClass($paper, HIDDEN)\r\n removeClass($paper, READING)\r\n $siblings.forEach(($sibling) => {\r\n removeClass($sibling, HIDDEN)\r\n })\r\n this.toolbar.hide()\r\n this.reading = false\r\n\r\n this.$emit('exitReading')\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.reading) {\r\n this.exit()\r\n } else {\r\n this.enter()\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n if (!isFunction(print)) {\r\n return this\r\n }\r\n\r\n print()\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n return this\r\n }\r\n\r\n onPrint() {\r\n this.print()\r\n return this\r\n }\r\n\r\n onEnterReading() {\r\n this.toggle()\r\n return this\r\n }\r\n\r\n onExitReading(evt) {\r\n const keyCode = evt.keyCode\r\n\r\n if (keyCode === 27 && this.reading) {\r\n this.toggle()\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n at(document, 'keyup', this.onExitReading, this, true)\r\n\r\n this.$on('toolbar:action:print', this.onPrint)\r\n this.$on('toolbar:action:reading', this.onEnterReading)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n off(document, 'keyup', this.onExitReading)\r\n\r\n this.$off('toolbar:action:print')\r\n this.$off('toolbar:action:reading')\r\n\r\n return this\r\n }\r\n}\r\n\r\nReader.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n target: '',\r\n title: '',\r\n enterReadingTip: ENTER_READING_TIP\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Reader\r\n","import later from './utils/lang/later'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport toTree from './utils/lang/toTree'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\n\r\nimport Base from './base'\r\nimport Anchors from './anchors'\r\nimport Drawer from './drawer'\r\nimport Chapters from './chapters'\r\nimport Reader from './reader'\r\nimport Toolbar from './toolbar'\r\n\r\nimport getChapters from './getChapters'\r\n\r\nclass Outline extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n const options = Outline.DEFAULTS\r\n\r\n this.attrs = cloneDeep(options)\r\n this.$article = null\r\n this.$scrollElement = null\r\n this.buttons = []\r\n\r\n this.anchors = null\r\n this.drawer = null\r\n this.chapters = null\r\n this.reader = null\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let articleElement = ''\r\n let scrollElement = ''\r\n let $article = null\r\n\r\n this.attr(options)\r\n\r\n articleElement = this.attr('articleElement')\r\n scrollElement = this.attr('scrollElement')\r\n\r\n if (isString(articleElement)) {\r\n $article = document.querySelector(articleElement)\r\n } else if (isElement(articleElement)) {\r\n $article = articleElement\r\n }\r\n this.$article = $article\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n\r\n this.$emit('created', { ...this.attr() })\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n getChapters(isTreeStructured = false) {\r\n const $article = this.$article\r\n const selector = this.attr('selector')\r\n const showCode = this.attr('showCode') || true\r\n const chapterTextFilter = this.attr('chapterTextFilter')\r\n let $headings = []\r\n let chapters = []\r\n\r\n if (!$article) {\r\n return chapters\r\n }\r\n\r\n $headings = [...$article.querySelectorAll(selector)]\r\n chapters = getChapters($headings, showCode, chapterTextFilter)\r\n\r\n return isTreeStructured ? toTree(chapters, 'id', 'pid') : chapters\r\n }\r\n\r\n count() {\r\n return this.getChapters().length\r\n }\r\n\r\n render() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n const $scrollElement = this.$scrollElement\r\n\r\n this._renderReader()._renderAnchors()._renderChapters()._renderToolbar()\r\n\r\n if ($scrollElement && hasToolbar) {\r\n this._updateToolbar({\r\n top: $scrollElement.scrollTop,\r\n min: 0,\r\n max: $scrollElement.scrollHeight\r\n })\r\n }\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n const chapters = this.getChapters()\r\n\r\n this.anchors.refresh(chapters)\r\n this.chapters.refresh(chapters)\r\n this.reader.refresh()\r\n\r\n return this\r\n }\r\n\r\n _renderReader() {\r\n const option = this.attr('reader')\r\n\r\n if (!option.target) {\r\n return this\r\n }\r\n\r\n addClass(this.$article, 'outline-article')\r\n\r\n this.reader = new Reader(option)\r\n\r\n return this\r\n }\r\n\r\n _renderAnchors() {\r\n const articleElement = this.attr('articleElement')\r\n const selector = this.attr('selector')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const scrollElement = this.attr('scrollElement')\r\n const showCode = this.attr('showCode')\r\n const anchorURL = this.attr('anchorURL')\r\n const afterScroll = this.attr('afterScroll')\r\n const chapterTextFilter = this.attr('chapterTextFilter')\r\n\r\n this.anchors = new Anchors({\r\n articleElement,\r\n stickyHeight,\r\n scrollElement,\r\n selector,\r\n showCode,\r\n anchorURL,\r\n afterScroll,\r\n chapterTextFilter\r\n })\r\n\r\n return this\r\n }\r\n\r\n _renderChapters() {\r\n const title = this.attr('title')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const scrollElement = this.attr('scrollElement')\r\n const customClass = this.attr('customClass')\r\n const showCode = this.attr('showCode')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const closeOnClickModal = this.attr('closeOnClickModal')\r\n const showNavModalFirst = this.attr('showNavModalFirst')\r\n const position = this.attr('position')\r\n const placement = this.attr('placement')\r\n const afterSticky = this.attr('afterSticky')\r\n const afterToggle = this.attr('afterToggle')\r\n const afterScroll = this.attr('afterScroll')\r\n const count = this.count()\r\n let parentElement = this.attr('parentElement')\r\n let CHAPTERS_OPTIONS\r\n\r\n if (count < 1) {\r\n return this\r\n }\r\n\r\n CHAPTERS_OPTIONS = {\r\n scrollElement,\r\n showCode,\r\n animationCurrent,\r\n position,\r\n title,\r\n stickyHeight,\r\n chapters: this.getChapters(),\r\n afterSticky,\r\n afterToggle,\r\n afterScroll\r\n }\r\n\r\n if (position === 'relative') {\r\n this.drawer = new Drawer({\r\n placement,\r\n title,\r\n size: 'tiny',\r\n hasOffset: true,\r\n hasPadding: false,\r\n closeOnClickModal,\r\n customClass,\r\n afterClosed: () => {\r\n const toolbar = this.toolbar\r\n toolbar.toggle()\r\n }\r\n })\r\n parentElement = this.drawer.$main\r\n\r\n if (showNavModalFirst) {\r\n this.drawer.open()\r\n }\r\n } else {\r\n CHAPTERS_OPTIONS.customClass = customClass\r\n }\r\n\r\n CHAPTERS_OPTIONS.parentElement = parentElement\r\n this.chapters = new Chapters(CHAPTERS_OPTIONS)\r\n\r\n return this\r\n }\r\n\r\n _renderToolbar() {\r\n const position = this.attr('position')\r\n const hasToolbar = this.attr('hasToolbar')\r\n const showNavModalFirst = this.attr('showNavModalFirst')\r\n const placement = this.attr('placement')\r\n const homepage = this.attr('homepage')\r\n const git = this.attr('git')\r\n const tags = this.attr('tags')\r\n const issues = this.attr('issues')\r\n const tools = this.attr('tools')\r\n const option = this.attr('reader')\r\n const count = this.count()\r\n const UP = {\r\n name: 'up',\r\n icon: 'up',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.toTop\r\n }\r\n }\r\n const HOME = {\r\n name: 'homepage',\r\n icon: 'homepage',\r\n size: 20,\r\n link: homepage\r\n }\r\n const GIT = {\r\n name: 'github',\r\n icon: 'github',\r\n size: 20,\r\n link: git\r\n }\r\n const TAGS = {\r\n name: 'tags',\r\n icon: 'tags',\r\n size: 20,\r\n link: tags\r\n }\r\n const ISSUES = {\r\n name: 'issues',\r\n icon: 'issues',\r\n size: 20,\r\n link: issues\r\n }\r\n const MENU = {\r\n name: 'toggle',\r\n icon: 'menu',\r\n size: 18,\r\n action: {\r\n context: this,\r\n handler: this.toggle\r\n }\r\n }\r\n const READING = {\r\n name: 'reading',\r\n icon: 'file',\r\n size: 18,\r\n action: {\r\n context: this,\r\n handler: 'toolbar:action:reading'\r\n }\r\n }\r\n const PRINT = {\r\n name: 'print',\r\n icon: 'print',\r\n size: 20,\r\n action: {\r\n handler: 'toolbar:action:print'\r\n }\r\n }\r\n const DOWN = {\r\n name: 'down',\r\n icon: 'down',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.toBottom\r\n }\r\n }\r\n const buttons = []\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n buttons.push(UP)\r\n if (count > 0) {\r\n buttons.push(MENU)\r\n }\r\n if (homepage) {\r\n buttons.push(HOME)\r\n }\r\n if (git) {\r\n buttons.push(GIT)\r\n }\r\n if (tags) {\r\n buttons.push(TAGS)\r\n }\r\n if (issues) {\r\n buttons.push(ISSUES)\r\n }\r\n if (option.target) {\r\n buttons.push(READING)\r\n if (isFunction(print)) {\r\n buttons.push(PRINT)\r\n }\r\n }\r\n if (tools?.length > 0) {\r\n buttons.push(...tools)\r\n }\r\n buttons.push(DOWN)\r\n this.buttons = [...buttons]\r\n\r\n this.toolbar = new Toolbar({\r\n placement,\r\n buttons\r\n })\r\n\r\n if (position === 'relative' && showNavModalFirst) {\r\n this.toolbar.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n addButton(button) {\r\n const toolbar = this.toolbar\r\n const buttons = this.buttons\r\n buttons.splice(-1, 0, button)\r\n toolbar.attr({\r\n buttons\r\n })\r\n toolbar.refresh()\r\n return this\r\n }\r\n\r\n removeButton(name) {\r\n this.toolbar.remove(name)\r\n return this\r\n }\r\n\r\n toTop() {\r\n const afterScroll = this.attr('afterScroll')\r\n const toolbar = this.toolbar\r\n const chapters = this.chapters\r\n const count = this.count()\r\n const afterTop = () => {\r\n toolbar.hide('up')\r\n toolbar.show('down')\r\n\r\n if (count > 0) {\r\n chapters.highlight(0)\r\n chapters.playing = false\r\n }\r\n\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(toolbar, 'up')\r\n }\r\n }\r\n\r\n if (count > 0) {\r\n chapters.playing = true\r\n }\r\n this.scrollTo(0, afterTop)\r\n\r\n return this\r\n }\r\n\r\n _updateToolbar({ top, min, max }) {\r\n const toolbar = this.toolbar\r\n const current = Math.ceil(top)\r\n\r\n if (current <= min) {\r\n toolbar.hide('up')\r\n toolbar.show('down')\r\n } else if (current >= max) {\r\n toolbar.hide('down')\r\n toolbar.show('up')\r\n } else if (current > min && current < max) {\r\n toolbar.show('up')\r\n toolbar.show('down')\r\n }\r\n\r\n return this\r\n }\r\n\r\n toBottom() {\r\n const afterScroll = this.attr('afterScroll')\r\n const $scrollElement = this.$scrollElement\r\n const toolbar = this.toolbar\r\n const chapters = this.chapters\r\n const count = this.count()\r\n const top = Math.floor(\r\n $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n )\r\n const afterDown = () => {\r\n toolbar.hide('down')\r\n toolbar.show('up')\r\n\r\n if (count > 0) {\r\n chapters.highlight(count - 1)\r\n chapters.playing = false\r\n }\r\n\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(toolbar, 'bottom')\r\n }\r\n }\r\n\r\n if (count > 0) {\r\n chapters.playing = true\r\n }\r\n\r\n this.scrollTo(top, afterDown)\r\n\r\n return this\r\n }\r\n\r\n scrollTo(top, afterScroll) {\r\n scrollTo(this.$scrollElement, top, afterScroll)\r\n return this\r\n }\r\n\r\n enterReading() {\r\n const reader = this.reader\r\n\r\n if (!reader || reader.reading) {\r\n return this\r\n }\r\n\r\n this.toolbar.toggle()\r\n reader.enter()\r\n\r\n return this\r\n }\r\n\r\n exitReading() {\r\n const reader = this.reader\r\n\r\n if (!reader || !reader.reading) {\r\n return this\r\n }\r\n\r\n this.toolbar.toggle()\r\n reader.exit()\r\n\r\n return this\r\n }\r\n\r\n switchReading() {\r\n const reader = this.reader\r\n\r\n if (!reader) {\r\n return this\r\n }\r\n\r\n reader.toggle()\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const position = this.attr('position')\r\n const toolbar = this.toolbar\r\n const drawer = this.drawer\r\n const chapters = this.chapters\r\n const count = this.count()\r\n\r\n if (count < 1) {\r\n return this\r\n }\r\n\r\n if (position !== 'relative') {\r\n chapters.toggle()\r\n toolbar.highlight('toggle')\r\n } else {\r\n toolbar.toggle()\r\n\r\n later(() => {\r\n drawer.toggle()\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n this.reader.print()\r\n\r\n return this\r\n }\r\n\r\n _destroy() {\r\n const count = this.count()\r\n let anchors = this.anchors\r\n let chapters = this.chapters\r\n let drawer = this.drawer\r\n let reader = this.reader\r\n let toolbar = this.toolbar\r\n let isOutside = false\r\n\r\n this.removeListeners()\r\n\r\n if (reader) {\r\n reader.destroy()\r\n }\r\n\r\n if (count > 0 && chapters) {\r\n isOutside = chapters.isOutside()\r\n\r\n chapters.destroy()\r\n\r\n if (isOutside && drawer) {\r\n drawer.destroy()\r\n }\r\n }\r\n\r\n if (anchors) {\r\n anchors.destroy()\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n this._destroy()._default()\r\n\r\n this.$emit('destroyed')\r\n\r\n return this\r\n }\r\n\r\n onToolbarUpdate({ top, min, max }) {\r\n this._updateToolbar({ top, min, max })\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n this.$on('toolbar:update', this.onToolbarUpdate)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n this.$off('toolbar:update')\r\n\r\n return this\r\n }\r\n}\r\n\r\nOutline.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n articleElement: '#article',\r\n selector: 'h2,h3,h4,h5,h6',\r\n parentElement: '#aside',\r\n scrollElement: 'html,body',\r\n title: '目录',\r\n position: 'relative',\r\n placement: 'rtl',\r\n animationCurrent: true,\r\n showCode: true,\r\n hasToolbar: true,\r\n closeOnClickModal: true,\r\n showNavModalFirst: false,\r\n anchorURL: '',\r\n stickyHeight: 0,\r\n homepage: '',\r\n git: '',\r\n tags: '',\r\n issues: '',\r\n tools: [],\r\n reader: {\r\n target: '',\r\n title: '',\r\n enterReadingTip: '进入阅读模式,按 ESC 键可退出阅读模式'\r\n },\r\n customClass: '',\r\n afterSticky: null,\r\n afterToggle: null,\r\n afterScroll: null,\r\n chapterTextFilter: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nif (window?.jQuery) {\r\n const $ = window.jQuery\r\n\r\n // 将 Outline 扩展为一个 jquery 插件\r\n // eslint-disable-next-line no-undef\r\n $.extend($.fn, {\r\n outline: function (options) {\r\n // eslint-disable-next-line no-undef\r\n let $article = $(this)\r\n\r\n return new Outline(\r\n // eslint-disable-next-line no-undef\r\n $.extend({}, options, {\r\n articleElement: $article\r\n })\r\n )\r\n }\r\n })\r\n}\r\n\r\nexport default Outline\r\n"],"names":["toString","val","Object","prototype","apply","isFunction","later","fn","delay","arguments","length","undefined","setTimeout","isObject","o","isArray","Array","cloneDeep","obj","clone","from","assign","keys","forEach","key","toTree","list","nodeKey","parentKey","map","roots","item","i","children","node","push","isString","str","isElement","nodeName","tagName","nodeType","hasClass","el","className","pattern","RegExp","allClass","classList","contains","exec","addClass","_classList","add","easeInQuad","x","_getScrollElement","$rootElements","$scrollElement","scrollElement","document","querySelector","querySelectorAll","scrollTop","scrollTo","top","afterStop","step","distance","MAX_HEIGHT","scrollHeight","MAX_TOP","stop","play","requestAnimationFrame","hasOwn","prop","hasOwnProperty","call","extend","origin","source","_subscribers","_hasDirectSubscribersFor","topic","has","found","position","lastIndexOf","substring","_hasSubscribers","emit","data","async","execute","subscriber","message","indexOf","callback","context","deliver","guid","uuid","prefix","_removeSubscriber","off","token","subject","execution","j","splice","_removeSubscriberByToken","Base","constructor","options","this","attrs","initialize","attr","render","addListeners","value","refresh","destroy","removeListeners","reload","$emit","event","publish","$on","handler","subscribe","$off","unsubscribe","queue","isHandling","done","runIdle","idleDeadline","timeRemaining","shift","requestIdleCallback","window","cb","start","Date","now","didTimeout","Math","max","cancelIdleCallback","id","clearTimeout","timeSlice","afterComplete","offsetTop","offsetParent","matches","selector","sel","replace","msMatchesSelector","getParentOrHost","host","parentNode","CAPTURE_EVENTS","_off","type","capture","_delegateListener","listeners","_listeners","index","listener","_delete","removeEventListener","purgeElement","recurse","$element","$children","childNodes","getListeners","filter","$child","on","once","evt","target","getTarget","delegateTarget","closest","ctx","includeCTX","startsWith","overrideContext","addEventListener","stopPropagation","preventDefault","SYMBOLS","getSymbols","name","iconSet","patternName","patternSet","find","symbol","fullName","getSymbol","paint","$body","body","$icons","symbols","innerHTML","join","createElement","insertBefore","firstChild","trim","isDOM","isHTMLCollection","fragment","isTextNode","setAttribute","toLowerCase","style","cssText","innerText","setAttributes","$fragment","createDocumentFragment","$el","isValidChild","child","append","createTextNode","appendChild","every","ICON","size","color","width","height","defaultRules","cssRules","$icon","$svg","binds","svg","test","isSVG","xmlns","class","icon","removeClass","remove","_removeHeading","$heading","hasAnchor","isAtStart","CLS_HEADING","text","$anchor","removeAttribute","removeChild","getChapters","headings","showCode","chapterTextFilter","previous","level","chapters","heading","headingLevel","current","parseInt","pid","_getChapterParentIdByDiffer","differ","rel","groups","group","JSON","stringify","code","String","c","subjects","_getChaptersWithCode","Anchors","super","_default","DEFAULTS","$articleElement","$headings","created","articleElement","isTreeStructured","count","mounted","_paint","erase","_remove","LIMIT","anchorURL","update","chapterCode","_updateHeading","headingId","href","groupIndex","after","beforeDestroy","afterDestroy","onAnchorTrigger","afterScroll","stickyHeight","clientHeight","min","TAGS","isHTML","html","basic","full","slice","tag","stripScripts","setProperty","documentElement","zIndex","idx","Drawer","title","closed","$modal","$header","$title","$close","$main","$footer","$overlay","setTitle","isClosed","placement","hasClose","hasOverlay","hasOffset","hasPadding","autoHeight","customClass","content","$content","strHTML","template","open","opened","close","toggle","afterToggle","onClose","closeOnClickModal","afterClosed","afterOpened","at","getStyle","ruleName","getComputedStyle","Chapters","scrollTimer","resizeTimer","observerTimer","Observer","$list","$placeholder","$parentElement","$active","active","offsetWidth","playing","parentElement","$parent","isSticky","isFixed","isInside","isOutside","_paintEdge","animationCurrent","contents","calculateStickyHeight","highlight","sticky","onObserver","clones","parts","byId","chapter","$text","$link","$code","$li","$subject","$chapter","_paintChapters","_getPlaceholderOffset","mainPaddingTop","mainBorderTop","placeholderPaddingTop","placeholderMarginTop","placeholderBorderTop","offsetHeight","positionPlaceholder","ACTIVE","HIGHLIGHT","placeholderOffsetTop","getAttribute","inBounding","parent","parentRect","childRect","getBoundingClientRect","right","bottom","left","afterSticky","FIXED","isStickying","innerHeight","show","HIDDEN","hide","props","root","rootMargin","IntersectionObserver","entries","entry","intersectionRatio","$root","section","observe","intersection","onSelect","split","onScroll","onResize","unobserve","isPlainObject","getPrototypeOf","proto","isObjectLike","encodeHTML","CHARTS","instances","instance","Message","visible","offset","timer","destroyed","isDestroyed","_getClassName","effect","round","closable","dangerouslyUseHTMLString","$type","$message","iconSize","_refreshIcon","iconName","$use","_refreshMessage","_refreshClose","_refreshEl","clearTimer","startTimer","duration","destroyAfterClosed","beforeClose","onMouseEnter","onMouseLeave","config","len","dom","clear","Command","action","Commands","commands","get","cmd","command","del","_createButton","button","rounded","link","$button","disabled","DISABLED","Toolbar","buttons","isDisabled","isExist","_getCommand","_self","bind","disable","_add","_disable","_enable","enable","enabled","onExecute","afterDisabled","afterEnabled","_updateSiblingElements","siblingElement","isPrev","$sibling","previousElementSibling","nextElementSibling","ENTER_READING_TIP","Reader","reading","$target","$paper","$article","$progress","toolbar","_renderEdge","cloneNode","exit","enter","READER","READING","$siblings","enterReadingTip","info","print","onPrint","onEnterReading","onExitReading","keyCode","Outline","anchors","drawer","reader","hasToolbar","_renderReader","_renderAnchors","_renderChapters","_renderToolbar","_updateToolbar","option","showNavModalFirst","CHAPTERS_OPTIONS","homepage","git","tags","issues","tools","UP","toTop","HOME","GIT","ISSUES","MENU","PRINT","DOWN","toBottom","addButton","removeButton","afterTop","_ref","ceil","floor","afterDown","enterReading","exitReading","switchReading","_destroy","onToolbarUpdate","_ref2","_window","jQuery","$","outline"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"outline.min.js","sources":["utils/lang/toString.js","utils/types/isFunction.js","utils/lang/later.js","utils/types/isObject.js","utils/types/isArray.js","utils/lang/cloneDeep.js","utils/lang/toTree.js","utils/types/isString.js","utils/types/isElement.js","utils/dom/hasClass.js","utils/dom/addClass.js","utils/lang/easeInQuad.js","utils/dom/_getScrollElement.js","utils/dom/scrollTo.js","utils/lang/hasOwn.js","utils/lang/extend.js","utils/observer/_subscribers.js","utils/observer/_hasDirectSubscribersFor.js","utils/observer/has.js","utils/observer/_hasSubscribers.js","utils/observer/emit.js","utils/types/isTypedArray.js","utils/lang/guid.js","utils/observer/_removeSubscriber.js","utils/observer/off.js","utils/observer/_removeSubscriberByToken.js","base.js","utils/observer/on.js","utils/lang/timeSlice.js","utils/dom/offsetTop.js","utils/dom/matches.js","utils/dom/getParentOrHost.js","utils/event/enum.js","utils/event/_off.js","utils/event/_delete.js","utils/event/purgeElement.js","utils/event/getListeners.js","utils/event/off.js","utils/event/on.js","utils/event/getTarget.js","utils/dom/resolveTextNode.js","utils/dom/closest.js","utils/event/stop.js","utils/icons/symbols.js","utils/icons/defaults.js","utils/icons/getSymbols.js","utils/icons/getSymbol.js","utils/icons/paint.js","utils/icons/add.js","utils/lang/trim.js","utils/types/isDOM.js","utils/types/isHTMLCollection.js","utils/types/isFragment.js","utils/types/isTextNode.js","utils/dom/setAttribute.js","utils/dom/setAttributes.js","utils/dom/createElement.js","utils/icons/createElement.js","utils/types/isSVG.js","utils/icons/icon.js","utils/dom/removeClass.js","_removeHeading.js","utils/types/isEmpty.js","getChapters.js","utils/lang/stripTags.js","_getChapterParentIdByDiffer.js","_getChaptersWithCode.js","anchors.js","_updateHeading.js","utils/types/tags.js","utils/types/isHTML.js","utils/lang/stripScripts.js","utils/dom/setProperty.js","zIndex.js","drawer.js","utils/dom/html.js","utils/event/at.js","utils/dom/getStyle.js","chapters.js","_paintChapters.js","utils/dom/inBounding.js","utils/dom/intersection.js","utils/types/isObjectLike.js","utils/types/isPlainObject.js","utils/lang/encodeHTML.js","message.js","command.js","commands.js","_createButton.js","toolbar.js","_updateSiblingElements.js","reader.js","outline.js"],"sourcesContent":["/**\r\n * Object 对象原型上的 toString 方法\r\n * ========================================================================\r\n * @method toString\r\n * @param {*} val\r\n * @returns {string}\r\n */\r\nconst toString = (val) => {\r\n return Object.prototype.toString.apply(val)\r\n}\r\n\r\nexport default toString\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测测试数据是否为 Function 类型\r\n * ========================================================================\r\n * @method isFunction\r\n * @param {*} val - (必须)待检测的数据\r\n * @returns {boolean} 'val' 是 Function 类型返回 true,否则返回 false\r\n */\r\nconst isFunction = (val) => {\r\n return typeof val === 'function' || toString(val) === '[object Function]'\r\n}\r\n\r\nexport default isFunction\r\n","import isFunction from '../types/isFunction'\r\n\r\n/**\r\n * later - 延迟执行方法\r\n * ========================================================================\r\n * @method later\r\n * @param {Function} fn\r\n * @param {Number} [delay]\r\n * @returns {number|boolean}\r\n */\r\nconst later = (fn, delay = 300) => {\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n return setTimeout(() => {\r\n fn()\r\n }, delay)\r\n}\r\n\r\nexport default later\r\n","import toString from '../lang/toString'\r\nimport isFunction from './isFunction'\r\n\r\n/**\r\n * 检测数据是否为 Object 类型\r\n * ========================================================================\r\n * @method isObject\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isObject = (o) => {\r\n return (\r\n (toString(o) === '[object Object]' ||\r\n typeof o === 'object' ||\r\n isFunction(o)) &&\r\n o !== null\r\n )\r\n}\r\n\r\nexport default isObject\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测数据是否为 Array 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isArray = (o) => {\r\n if (Array.isArray) {\r\n return Array.isArray(o)\r\n } else {\r\n return toString(o) === '[object Array]'\r\n }\r\n}\r\n\r\nexport default isArray\r\n","import isObject from '../types/isObject'\r\nimport isArray from '../types/isArray'\r\n\r\n/**\r\n * 深拷贝对象函数\r\n * ========================================================================\r\n * @methods cloneDeep\r\n * @param {Object} obj - 深拷贝的对象\r\n * @returns {Array|Object|*}\r\n *\r\n * @example\r\n * const arr = cloneDeep([2,3,4,6])\r\n * => [2,3,4,6]\r\n */\r\nconst cloneDeep = (obj) => {\r\n let clone = {}\r\n\r\n if (obj === null) {\r\n return null\r\n }\r\n\r\n if (isArray(obj)) {\r\n clone = Array.from(obj)\r\n } else {\r\n clone = Object.assign({}, obj)\r\n Object.keys(clone).forEach((key) => {\r\n return (clone[key] = isObject(obj[key]) ? cloneDeep(obj[key]) : obj[key])\r\n })\r\n }\r\n\r\n return clone\r\n}\r\n\r\nexport default cloneDeep\r\n","const toTree = (list, nodeKey, parentKey) => {\r\n const map = {}\r\n const roots = []\r\n\r\n list.forEach((item, i) => {\r\n // initialize the map\r\n map[item[nodeKey]] = i\r\n // initialize the children\r\n item.children = []\r\n })\r\n\r\n list.forEach((item) => {\r\n const node = list[map[item[parentKey]]]\r\n\r\n if (item[parentKey] !== -1) {\r\n // if you have dangling branches check that map[node.parentId] exists\r\n node.children.push(item)\r\n } else {\r\n roots.push(item)\r\n }\r\n })\r\n\r\n return roots\r\n}\r\n\r\nexport default toTree\r\n","/**\r\n * 检测数据是否为 String 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\nconst isString = (str) => {\r\n return typeof str === 'string'\r\n}\r\n\r\nexport default isString\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测数据是否为 HTMLElement DOM 节点\r\n * ========================================================================\r\n * @method isElement\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isElement = (o) => {\r\n return !!(isObject(o) && o.nodeName && o.tagName && o.nodeType === 1)\r\n}\r\n\r\nexport default isElement\r\n","import isElement from '../types/isElement'\r\n/**\r\n * 检测 DOM 节点是否包含名为 className 的样式\r\n * ========================================================================\r\n * @method hasClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst hasClass = (el, className) => {\r\n const pattern = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\r\n let allClass\r\n let classList\r\n\r\n if (!isElement(el)) {\r\n return false\r\n }\r\n\r\n allClass = el.className\r\n\r\n if (!allClass) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList && classList.contains) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!pattern.exec(allClass)\r\n}\r\n\r\nexport default hasClass\r\n","import hasClass from './hasClass'\r\n\r\n/**\r\n * 给 DOM 节点添加名为 className 的样式\r\n * ========================================================================\r\n * @method addClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst addClass = (el, className) => {\r\n let classList\r\n let allClass\r\n\r\n if (hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.add) {\r\n classList.add(className)\r\n } else {\r\n allClass = el.className\r\n allClass += allClass.length > 0 ? ' ' + className : className\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default addClass\r\n","/**\r\n * 返回给定值的平方值\r\n * ========================================================================\r\n * @method easeInQuad\r\n * @param {Number} x\r\n * @returns {number}\r\n */\r\nconst easeInQuad = (x) => {\r\n return x * x\r\n}\r\n\r\nexport default easeInQuad\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\n\r\n/**\r\n * 通过给的 scrollElement 参数,获取滚动 DOM 元素\r\n * ========================================================================\r\n * @method _getScrollElement\r\n * @param {String|HTMLElement} scrollElement\r\n * @returns {Element}\r\n * @private\r\n */\r\nconst _getScrollElement = (scrollElement = null) => {\r\n let $rootElements\r\n let $scrollElement\r\n\r\n if (!scrollElement) {\r\n $rootElements = document.querySelectorAll('html,body')\r\n $scrollElement =\r\n $rootElements[0].scrollTop - $rootElements[1].scrollTop >= 0\r\n ? $rootElements[0]\r\n : $rootElements[1]\r\n } else {\r\n if (isString(scrollElement)) {\r\n $scrollElement = document.querySelector(scrollElement)\r\n } else if (isElement(scrollElement)) {\r\n $scrollElement = scrollElement\r\n }\r\n }\r\n\r\n return $scrollElement\r\n}\r\n\r\nexport default _getScrollElement\r\n","import easeInQuad from '../lang/easeInQuad'\r\nimport isFunction from '../types/isFunction'\r\nimport _getScrollElement from './_getScrollElement'\r\n\r\n/**\r\n * 指定 rootElement DOM 节点滚动到指定 top 位置\r\n * ========================================================================\r\n * @method scrollTo\r\n * @param {HTMLElement|Object} [scrollElement] - (必须)要滚动的 DOM 节点\r\n * @param {Number} top - (必须)滚动的 scrollTop 数值\r\n * @param {Function} [afterStop] - (可选)滚动完成的回调函数\r\n */\r\nconst scrollTo = (scrollElement, top, afterStop) => {\r\n const $scrollElement = _getScrollElement(scrollElement)\r\n let scrollTop = $scrollElement.scrollTop\r\n let step = 0\r\n const distance = top - scrollTop\r\n const MAX_HEIGHT = $scrollElement.scrollHeight\r\n const MAX_TOP = top - MAX_HEIGHT <= 0 ? top : MAX_HEIGHT\r\n const stop = (top) => {\r\n if (isFunction(afterStop)) {\r\n afterStop(top)\r\n }\r\n\r\n return false\r\n }\r\n const play = () => {\r\n step += 1\r\n\r\n // 向上滚动\r\n if (distance < 0) {\r\n scrollTop -= easeInQuad(step)\r\n $scrollElement.scrollTop = scrollTop\r\n\r\n if (scrollTop <= top) {\r\n $scrollElement.scrollTop = top\r\n return stop(top)\r\n }\r\n } else {\r\n scrollTop += easeInQuad(step)\r\n $scrollElement.scrollTop = scrollTop\r\n\r\n if (scrollTop >= MAX_TOP) {\r\n $scrollElement.scrollTop = MAX_TOP\r\n return stop(MAX_TOP)\r\n }\r\n }\r\n\r\n // eslint-disable-next-line compat/compat\r\n requestAnimationFrame(play)\r\n }\r\n\r\n // eslint-disable-next-line compat/compat\r\n requestAnimationFrame(play)\r\n}\r\n\r\nexport default scrollTo\r\n","/**\r\n * 检测对象自身属性中是否具有指定的属性。\r\n * ========================================================================\r\n * @method hasOwn\r\n * @param {Object} obj - (必须)检测的目标对象\r\n * @param {String} prop - (必须)属性名\r\n * @returns {Boolean}\r\n */\r\nconst hasOwn = (obj, prop) => {\r\n const hasOwnProperty = Object.prototype.hasOwnProperty\r\n return obj && hasOwnProperty.call(obj, prop)\r\n}\r\n\r\nexport default hasOwn\r\n","import hasOwn from './hasOwn'\r\n\r\n/**\r\n * 扩展对象\r\n * ========================================================================\r\n * @method extend\r\n * @param {Object} origin\r\n * @param {Object} source\r\n */\r\nconst extend = (origin, source) => {\r\n const keys = Object.keys(source)\r\n\r\n keys.forEach((prop) => {\r\n if (hasOwn(source, prop)) {\r\n origin[prop] = source[prop]\r\n }\r\n })\r\n}\r\n\r\nexport default extend\r\n","/**\r\n * 存储订阅者(主题和处理器的)私有对象\r\n * ========================================================================\r\n * @type {{}}\r\n * @private\r\n */\r\nconst _subscribers = {}\r\n\r\nexport default _subscribers\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 判断是否存在与给定 topic 完全匹配的订阅者信息\r\n * ========================================================================\r\n * @method _hasDirectSubscribersFor\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasDirectSubscribersFor = (topic) => {\r\n return hasOwn(_subscribers, topic) && _subscribers[topic].length > 0\r\n}\r\n\r\nexport default _hasDirectSubscribersFor\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\nimport _hasSubscribers from './_hasSubscribers'\r\n\r\n/**\r\n * 判断是否存在包含 topic 指定的订阅者信息\r\n * ========================================================================\r\n * @method has\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Boolean} [isDirect] - (可选)是否为直接的主题,默认值:true\r\n * @returns {Boolean}\r\n */\r\nconst has = (topic, isDirect = true) => {\r\n return isDirect ? _hasDirectSubscribersFor(topic) : _hasSubscribers(topic)\r\n}\r\n\r\nexport default has\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * 判断是否存在包含给定 topic 相关的订阅者信息\r\n * ========================================================================\r\n * @method _hasSubscribers\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasSubscribers = (topic) => {\r\n let found = _hasDirectSubscribersFor(topic)\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (!found && position !== -1) {\r\n topic = topic.substring(0, position)\r\n position = topic.lastIndexOf('.')\r\n found = _hasDirectSubscribersFor(topic)\r\n }\r\n\r\n return found\r\n}\r\n\r\nexport default _hasSubscribers\r\n","import isTypedArray from '../types/isTypedArray'\r\nimport _subscribers from './_subscribers'\r\nimport has from './has'\r\nimport _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * (异步)发布订阅主题信息\r\n * ========================================================================\r\n * 主题默认是异步发布的。确保在消费者处理主题时,主题的发起者不会被阻止。\r\n * ========================================================================\r\n * @method emit\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Object} [data] - (可选)数据对象\r\n * @param {Boolean} [async] - (可选) 是否异步发布\r\n */\r\nconst emit = (topic, data, async = true) => {\r\n const execute = (topic) => {\r\n if (!_hasDirectSubscribersFor(topic)) {\r\n return false\r\n }\r\n\r\n _subscribers[topic].forEach((subscriber) => {\r\n // 针对 mqtt 消息服务返回的 Uint8Array 类似的 typed arrays 格式的数据\r\n // 采用 toString() 方法转化为普通(JSON)字符串\r\n const message = isTypedArray(data) ? data.toString() : data\r\n\r\n subscriber.callback.call(subscriber.context || subscriber, message)\r\n })\r\n }\r\n const deliver = () => {\r\n let subscriber = topic\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (position !== -1) {\r\n subscriber = subscriber.substring(0, position)\r\n position = subscriber.lastIndexOf('.')\r\n\r\n execute(subscriber)\r\n }\r\n\r\n // 执行 topic 对应的处理器\r\n execute(topic)\r\n // 执行特殊 topic:'*'(监听全部消息的发布)\r\n execute('*')\r\n }\r\n\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (async) {\r\n setTimeout(deliver, 10)\r\n } else {\r\n deliver()\r\n }\r\n}\r\n\r\nexport default emit\r\n","import toString from '../lang/toString'\r\n/**\r\n * 判断检测数据是否为 Typed Arrays 类型的数据\r\n * ========================================================================\r\n * @param {*} val\r\n * @returns {boolean}\r\n */\r\nconst isTypedArray = (val) => {\r\n const TYPES = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]',\r\n '[object BigInt64Array]',\r\n '[object BigUint64Array]'\r\n ]\r\n\r\n return TYPES.indexOf(toString(val)) > -1\r\n}\r\n\r\nexport default isTypedArray\r\n","/**\r\n * 生成唯一 id 字符串的函数\r\n * ========================================================================\r\n * @method guid\r\n * @param {String} [prefix] - 生成 id 的前缀字符串\r\n * @return {String} 返回一个表示唯一 id 的字符串\r\n */\r\nconst guid = (() => {\r\n let uuid = 0\r\n\r\n return (prefix) => {\r\n uuid += 1\r\n\r\n return prefix ? prefix + '-' + uuid : 'guid-' + uuid\r\n }\r\n})()\r\n\r\nexport default guid\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 删除与给定 topic 相同的订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriber\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _removeSubscriber = (topic) => {\r\n if (!hasOwn(_subscribers, topic)) {\r\n return false\r\n }\r\n\r\n delete _subscribers[topic]\r\n}\r\n\r\nexport default _removeSubscriber\r\n","import has from './has'\r\nimport _removeSubscriber from './_removeSubscriber'\r\nimport _removeSubscriberByToken from './_removeSubscriberByToken'\r\n\r\n/**\r\n * 取消订阅主题\r\n * ========================================================================\r\n * @method off\r\n * @param {String} topic - (必须)订阅的主题\r\n * @param {Function|String} [token] - (可选)订阅主题的处理器函数或者唯一 Id 值\r\n */\r\nconst off = (topic, token) => {\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (token) {\r\n _removeSubscriberByToken(token)\r\n } else {\r\n _removeSubscriber(topic)\r\n }\r\n}\r\n\r\nexport default off\r\n","import _subscribers from './_subscribers'\r\nimport _removeSubscriber from './_removeSubscriber'\r\n\r\n/**\r\n * 通过订阅者 token 值删除订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriberByToken\r\n * @param {String} token - 订阅者 token 字符串\r\n * @returns {boolean}\r\n * @private\r\n */\r\nconst _removeSubscriberByToken = (token) => {\r\n const keys = Object.keys(_subscribers)\r\n let index = -1\r\n\r\n if (!token || keys.length < 1) {\r\n return false\r\n }\r\n\r\n keys.forEach((subject) => {\r\n const subscriber = _subscribers[subject]\r\n let topic\r\n\r\n subscriber.forEach((execution, j) => {\r\n if (execution.callback === token || execution.token === token) {\r\n topic = execution.topic\r\n subscriber.splice(index, j)\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (subscriber.length < 1) {\r\n _removeSubscriber(topic)\r\n }\r\n })\r\n}\r\n\r\nexport default _removeSubscriberByToken\r\n","import isString from './utils/types/isString'\r\nimport hasOwn from './utils/lang/hasOwn'\r\nimport isObject from './utils/types/isObject'\r\nimport extend from './utils/lang/extend'\r\nimport publish from './utils/observer/emit'\r\nimport subscribe from './utils/observer/on'\r\nimport unsubscribe from './utils/observer/off'\r\n\r\nclass Base {\r\n constructor(options) {\r\n this.attrs = {}\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options).render().addListeners()\r\n return this\r\n }\r\n\r\n attr(prop, value) {\r\n const attrs = this.attrs\r\n\r\n if (isString(prop)) {\r\n // 只能扩展 attrs 中已有的属性\r\n if (value && hasOwn(attrs, prop)) {\r\n // 更新单个配置信息\r\n attrs[prop] = value\r\n return this\r\n }\r\n\r\n // 只传递 prop 参数,则返回对应的属性值\r\n return attrs[prop]\r\n } else if (isObject(prop)) {\r\n // 批量更新配置信息\r\n extend(attrs, prop)\r\n\r\n return this\r\n } else if (arguments.length === 0) {\r\n // 不传递参数,直接返回整个\r\n return attrs\r\n }\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n return this\r\n }\r\n\r\n refresh() {\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.removeListeners()\r\n return this\r\n }\r\n\r\n reload(options) {\r\n let attrs = this.attr()\r\n\r\n if (options) {\r\n attrs = this.attr(options)\r\n }\r\n\r\n this.destroy().initialize(attrs)\r\n\r\n return this\r\n }\r\n\r\n $emit(event, data) {\r\n publish(event, data)\r\n return this\r\n }\r\n\r\n $on(event, callback) {\r\n subscribe(event, callback, this)\r\n return this\r\n }\r\n\r\n $off(event, callback) {\r\n unsubscribe(event, callback)\r\n return this\r\n }\r\n\r\n addListeners() {\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n return this\r\n }\r\n}\r\n\r\nexport default Base\r\n","import _subscribers from './_subscribers'\r\nimport isFunction from '../types/isFunction'\r\nimport guid from '../lang/guid'\r\n\r\n/**\r\n * 订阅主题,并给出处理器函数\r\n * ========================================================================\r\n * @method on\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Function} handler - (必须)主题的处理器函数\r\n * @param {Object} [context] - (可选)指定 this 执行上下文\r\n * @return {String} - 唯一的 token 字符串,例如:'guid-1'。\r\n */\r\nconst on = (topic, handler, context = null) => {\r\n const token = guid()\r\n let subject = typeof topic === 'symbol' ? topic.toString() : topic\r\n\r\n if (!isFunction(handler)) {\r\n return ''\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (!_subscribers[subject]) {\r\n _subscribers[subject] = []\r\n }\r\n\r\n _subscribers[subject].push({\r\n topic: subject,\r\n callback: handler,\r\n context,\r\n token\r\n })\r\n\r\n return token\r\n}\r\n\r\nexport default on\r\n","/**\r\n * timeSlice.js 时间切片功能函数\r\n * ====================================================\r\n * Created By: Yaohaixiao\r\n * Update: 2023.09.04\r\n */\r\nimport isFunction from '../types/isFunction'\r\nimport later from './later'\r\n\r\nconst queue = []\r\nlet isHandling\r\nlet done\r\n\r\n// Shim from https://developers.google.com/web/updates/2015/08/using-requestidlecallback\r\nif (typeof window.requestIdleCallback === 'undefined') {\r\n window.requestIdleCallback = function (cb) {\r\n const start = Date.now()\r\n return later(function () {\r\n cb({\r\n didTimeout: false,\r\n timeRemaining: function () {\r\n return Math.max(0, 50 - (Date.now() - start))\r\n }\r\n })\r\n }, 10)\r\n }\r\n\r\n window.cancelIdleCallback = function (id) {\r\n clearTimeout(id)\r\n }\r\n}\r\n\r\nfunction runIdle(idleDeadline) {\r\n while (idleDeadline.timeRemaining() > 0 && queue.length) {\r\n const fn = queue.shift()\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n fn()\r\n }\r\n\r\n if (queue.length) {\r\n isHandling = requestIdleCallback(runIdle)\r\n } else {\r\n isHandling = 0\r\n\r\n if (isFunction(done)) {\r\n done()\r\n done = null\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 时间切片功能函数:主要用于优化长时任务的性能,将长时任务分解成\r\n * 多个短时间任务\r\n * ====================================================\r\n * @param {Function} fn - 需要在空闲时执行的回调函数\r\n * @param {Function} afterComplete - queen 的\r\n * @return {(function(): (boolean|undefined))|*|boolean}\r\n */\r\nconst timeSlice = (fn, afterComplete = null) => {\r\n queue.push(fn)\r\n\r\n if (isFunction(afterComplete)) {\r\n done = afterComplete\r\n }\r\n\r\n if (!isHandling) {\r\n requestIdleCallback(runIdle)\r\n }\r\n}\r\n\r\nexport default timeSlice\r\n","/**\r\n * 获取 DOM 节点相对于窗口的 left (纵坐标)值\r\n * ========================================================================\r\n * @method offsetTop\r\n * @param {HTMLElement} el - DOM 节点\r\n * @returns {Number}\r\n */\r\nconst offsetTop = (el) => {\r\n let top = el.offsetTop\r\n\r\n if (el.offsetParent !== null) {\r\n top += offsetTop(el.offsetParent)\r\n }\r\n\r\n return top\r\n}\r\n\r\nexport default offsetTop\r\n","/**\r\n * 获取 options 节点下匹配 selector 选择器的 DOM 节点\r\n * ========================================================================\r\n * Element.matches() 方法可以用来判断 DOM 元素是否与给定的选择器匹配,事件代理判断是\r\n * 否触发绑定的代理事件回调函数,关键就是使用 Element.matches() 辨别当前事件触发的目\r\n * 标 DOM 元素是否为事件代理所期望触发的目标。\r\n * ========================================================================\r\n * @method matches\r\n * @see https://developer.mozilla.org/en-US/docs/web/api/element/matches\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)匹配 DOM 元素的选择器\r\n * @returns {Boolean}\r\n */\r\nconst matches = (el, selector = '') => {\r\n const sel = selector.replace(/^>/i, '')\r\n\r\n if (!selector || !sel || !el) {\r\n return false\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el.matches) {\r\n return el.matches(sel)\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(sel)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport default matches\r\n","/**\r\n * 获取 DOM 元素的父节点\r\n * ========================================================================\r\n * @method getParentOrHost\r\n * @param {*|HTMLElement} el - (必须)要获取父节点的 DOM 元素\r\n * @returns {*|HTMLElement}\r\n */\r\nconst getParentOrHost = (el) => {\r\n return el.host && el !== document && el.host.nodeType\r\n ? el.host\r\n : el.parentNode\r\n}\r\n\r\nexport default getParentOrHost\r\n","export const CAPTURE_EVENTS = [\r\n 'focusout',\r\n 'blur',\r\n 'focusin',\r\n 'focus',\r\n 'load',\r\n 'unload',\r\n 'mouseenter',\r\n 'mouseleave'\r\n]\r\n","import { CAPTURE_EVENTS } from './enum'\r\nimport _delete from './_delete'\r\n\r\n/**\r\n * (私有方法)取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method _off\r\n * @param {HTMLElement} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} fn - (必须)事件处理器回调函数\r\n * @private\r\n */\r\nconst _off = (el, type, fn) => {\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n /* istanbul ignore else */\r\n if (fn._delegateListener) {\r\n fn = fn._delegateListener\r\n delete fn._delegateListener\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n _delete(el, type, fn)\r\n\r\n el.removeEventListener(type, fn, capture)\r\n}\r\n\r\nexport default _off\r\n","/**\r\n * 删除 DOM 元素缓存的 _listeners 数据\r\n * ========================================================================\r\n * @method _delete\r\n * @param {HTMLElement} el - 要删除 listener 的 DOM 元素\r\n * @param {String} type - 事件类型(名称)\r\n * @param {Function} [fn] - 事件处理器回调函数\r\n */\r\nconst _delete = function (el, type, fn) {\r\n const listeners = el._listeners\r\n let index = -1\r\n\r\n if (listeners.length < 1) {\r\n return false\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n listeners.forEach((listener, i) => {\r\n const handler = listener.fn\r\n\r\n if (type === listener.type) {\r\n index = i\r\n\r\n if (handler === fn) {\r\n index = i\r\n }\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n}\r\n\r\nexport default _delete\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport getListeners from './getListeners'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 销毁(type 类型的)代理事件绑定\r\n * ========================================================================\r\n * 1. 设置了事件类型 type,则销毁指定类型的事件绑定,否则清除所有代理事件绑定\r\n * 2. recurse 设置为 true,递归销毁子节点全部事件绑定\r\n * ========================================================================\r\n * @method purgeElement\r\n * @param {HTMLElement|String} el - (必须)DOM 元素或者其选择器\r\n * @param {String|Boolean} type - (必须)事件类型\r\n * @param {Boolean} [recurse] - (可选)是否递归销毁子节点所有事件绑定\r\n */\r\nconst purgeElement = function (el, type, recurse = false) {\r\n const $element = isString(el) ? document.querySelector(el) : el\r\n const $children = $element.childNodes\r\n const listeners = getListeners($element, type)\r\n\r\n listeners.forEach((listener) => {\r\n _off($element, listener.type, listener.fn)\r\n })\r\n\r\n if (\r\n (recurse || type === true || arguments.length === 1) &&\r\n $element &&\r\n $children\r\n ) {\r\n $children.forEach(($child) => {\r\n if (isElement($child)) {\r\n purgeElement($child, type, recurse)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default purgeElement\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 获取 DOM 元素(type 事件类型)事件绑定信息\r\n * ========================================================================\r\n * 如果设置了事件类型 type, 则返回指定类型的事件绑定信息,否则返回所有事件绑定信息\r\n * ========================================================================\r\n * @methods getListeners\r\n * @param {HTMLElement} el - (必须)要获取事件绑定信息的 DOM 元素\r\n * @param {String} [type] - (可选)事件类型\r\n * @returns {Array} - 已绑定的事件信息\r\n */\r\nconst getListeners = (el, type) => {\r\n let listeners = el._listeners || []\r\n\r\n if (isString(type) && type) {\r\n listeners = listeners.filter((listener) => {\r\n return listener.type === type\r\n })\r\n }\r\n\r\n return listeners\r\n}\r\n\r\nexport default getListeners\r\n","import purgeElement from './purgeElement'\r\nimport isFunction from '../types/isFunction'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method off\r\n * @param {HTMLElement|Object} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} [fn] - (可选)事件处理器回调函数\r\n */\r\nconst off = (el, type, fn) => {\r\n // 如果不设置 fn 参数,默认清除 el 元素上绑定的所有事件处理器\r\n if (!isFunction(fn)) {\r\n purgeElement(el, type)\r\n return false\r\n }\r\n\r\n _off(el, type, fn)\r\n}\r\n\r\nexport default off\r\n","import closest from '../dom/closest'\r\nimport off from './off'\r\nimport getTarget from './getTarget'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定代理事件\r\n * ========================================================================\r\n * @method on\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String} selector - (必须)事件代理目标 DOM 元素的选择器\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (可选) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst on = (el, selector, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n const listener = function (evt) {\r\n const target = getTarget(evt)\r\n // 通过 Element.matches 方法获得点击的目标元素\r\n const delegateTarget = closest(target, selector, el)\r\n let overrideContext = context || el\r\n\r\n evt.delegateTarget = delegateTarget\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (delegateTarget) {\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n }\r\n\r\n if (!el) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n selector,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default on\r\n","import resolveTextNode from '../dom/resolveTextNode'\r\n\r\n/**\r\n * 返回触发事件的 target DOM 元素\r\n * ========================================================================\r\n * @method getTarget\r\n * @param {Event} evt - Event 对象\r\n * @return {HTMLElement} - Event 对象的 target DOM 元素\r\n */\r\nconst getTarget = function (evt) {\r\n const target = evt.target\r\n\r\n return resolveTextNode(target)\r\n}\r\n\r\nexport default getTarget\r\n","/**\r\n * 在某些情况下,某些浏览器(例如:Safari 浏览器)会返回实际的目标元素内部的文本节点。\r\n * resolveTextNode() 方法则会返回实际的目标节点。\r\n * ========================================================================\r\n * @method resolveTextNode\r\n * @param {HTMLElement|Text} el - 要解析的节点\r\n * @return {*|HTMLElement} - 实际的目标 DOM 节点\r\n */\r\nconst resolveTextNode = function (el) {\r\n if (el && el.nodeType === 3) {\r\n return el.parentNode\r\n }\r\n\r\n return el\r\n}\r\n\r\nexport default resolveTextNode\r\n","import matches from './matches'\r\nimport getParentOrHost from './getParentOrHost'\r\n\r\n/**\r\n * 获取 options 元素父元素最近的包含 selector 选择器的元素\r\n * ========================================================================\r\n * @method closest\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)DOM 元素的选择其\r\n * @param {HTMLElement} [ctx] - (必须)比对的 DOM 元素\r\n * @param {Boolean} [includeCTX] - (必须)是否包含 context DOM 元素\r\n * @returns {null|HTMLElement} - 返回最接近的 DOM 元素\r\n */\r\nconst closest = (el, selector, ctx, includeCTX) => {\r\n const context = ctx || document\r\n\r\n if (!el) {\r\n return null\r\n }\r\n\r\n do {\r\n /* istanbul ignore else */\r\n if (\r\n (selector != null &&\r\n (selector.startsWith('>')\r\n ? el.parentNode === context && matches(el, selector)\r\n : matches(el, selector))) ||\r\n (includeCTX && el === context)\r\n ) {\r\n return el\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el === context) {\r\n break\r\n }\r\n\r\n /* jshint boss:true */\r\n } while ((el = getParentOrHost(el)))\r\n}\r\n\r\nexport default closest\r\n","/**\r\n * 停止事件(阻止默认行为和阻止事件的捕获或冒泡)\r\n * ========================================================================\r\n * @method stop\r\n * @param {Event} evt - 事件对象\r\n *\r\n * @example\r\n *
\r\n * Service\r\n * Help\r\n *
\r\n *\r\n * const $nav = document.querySelector('#nav')\r\n * const $service = document.querySelector('.anchor')\r\n *\r\n * on($nav, 'click', function(evt) {\r\n * console.log('你点击了导航栏')\r\n * })\r\n *\r\n * on($anchor, 'click', function(evt) {\r\n * console.log('tagName', this.tagName)\r\n *\r\n * // 工作台输出:'a'\r\n * // 不会触发事件冒泡,输出:'你点击了导航栏'\r\n * // 也不会切换到 href 属性的页面,阻止了点击链接的默认行为\r\n * stopEvent(evt)\r\n * })\r\n */\r\nconst stop = function (evt) {\r\n evt.stopPropagation()\r\n evt.preventDefault()\r\n}\r\n\r\nexport default stop\r\n","import DEFAULTS from './defaults'\r\n\r\nconst SYMBOLS = [...DEFAULTS]\r\n\r\nexport default SYMBOLS\r\n","const DEFAULTS = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n]\r\n\r\nexport default DEFAULTS\r\n","import isString from '../types/isString'\r\nimport getSymbol from './getSymbol'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n *\r\n * @method getSymbols\r\n * @param {String} [name]\r\n * @param {String} [iconSet]\r\n * @returns {string[]|*}\r\n */\r\nconst getSymbols = (name, iconSet = 'icon') => {\r\n if (isString(name)) {\r\n return getSymbol(name, iconSet)\r\n }\r\n\r\n return [...SYMBOLS]\r\n}\r\n\r\nexport default getSymbols\r\n","import SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method getSymbol\r\n * @param {String} name\r\n * @param {String} [iconSet]\r\n * @returns {String}\r\n */\r\nconst getSymbol = (name, iconSet = 'icon') => {\r\n const patternName = /id=\"(.*?)\"/\r\n const patternSet = /^(\\w+)-/\r\n const symbols = SYMBOLS\r\n\r\n return symbols.find((symbol) => {\r\n const names = patternName.exec(symbol)\r\n const fullName = names[1]\r\n const sets = patternSet.exec(fullName)\r\n const setName = sets[1]\r\n const iconName =\r\n iconSet === 'icon' ? `${iconSet}-${name}` : `${iconSet}-icon-${name}`\r\n\r\n return setName === iconSet && fullName === iconName\r\n })\r\n}\r\n\r\nexport default getSymbol\r\n","import add from './add'\r\nimport getSymbols from './getSymbols'\r\n\r\n/**\r\n * 绘制 SVG 图标集\r\n * ========================================================================\r\n * @method paint\r\n * @param {String|Array} symbol\r\n */\r\nconst paint = (symbol = '') => {\r\n const $body = document.body\r\n let $icons = document.querySelector('#outline-icons')\r\n let symbols = []\r\n\r\n add(symbol)\r\n symbols = getSymbols()\r\n\r\n if ($icons) {\r\n $icons.innerHTML = symbols.join('')\r\n } else {\r\n $icons = document.createElement('div')\r\n $icons.innerHTML =\r\n ``\r\n $body.insertBefore($icons.firstChild, $body.firstChild)\r\n }\r\n}\r\n\r\nexport default paint\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method add\r\n * @param {Array|String} symbols\r\n * @return {Boolean}\r\n */\r\nconst add = (symbols) => {\r\n if (!symbols) {\r\n return false\r\n }\r\n\r\n if (isArray(symbols) && symbols.length > 0) {\r\n symbols.forEach((symbol) => {\r\n /* istanbul ignore else */\r\n if (SYMBOLS.indexOf(symbol) === -1 && isString(symbol)) {\r\n SYMBOLS.push(symbol)\r\n }\r\n })\r\n } else {\r\n /* istanbul ignore else */\r\n if (isString(symbols)) {\r\n SYMBOLS.push(symbols)\r\n }\r\n }\r\n}\r\n\r\nexport default add\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 清楚字符串起始位置所有的空格\r\n * ========================================================================\r\n * @method trim\r\n * @param {string} str\r\n * @returns {string|Boolean}\r\n */\r\nconst trim = (str) => {\r\n if (!isString(str)) {\r\n return false\r\n }\r\n return str.replace(/(^\\s+)|(\\s+$)/g, '')\r\n}\r\n\r\nexport default trim\r\n","import isObject from './isObject'\r\nimport isElement from './isElement'\r\nimport isHTMLCollection from './isHTMLCollection'\r\nimport isFragment from './isFragment'\r\nimport isTextNode from './isTextNode'\r\n\r\nconst isDOM = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (isElement(el) || isHTMLCollection(el) || isFragment(el) || isTextNode(el))\r\n )\r\n}\r\n\r\nexport default isDOM\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isHTMLCollection = (el) => {\r\n return !!(isObject(el) && toString(el) === '[object NodeList]')\r\n}\r\n\r\nexport default isHTMLCollection\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isFragment = (fragment) => {\r\n return !!(\r\n isObject(fragment) && toString(fragment) === '[object DocumentFragment]'\r\n )\r\n}\r\n\r\nexport default isFragment\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isTextNode = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (toString(el) === '[object Text]' || (el.tagName && el.nodeType === 3))\r\n )\r\n}\r\n\r\nexport default isTextNode\r\n","/**\r\n * 给 DOM 节点设置属性/值\r\n * ========================================================================\r\n * @method setAttribute\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} attr - 属性名称\r\n * @param {String|Number|Boolean} value - 属性值\r\n */\r\nconst setAttribute = (el, attr, value) => {\r\n let tagName = el.tagName.toLowerCase()\r\n\r\n switch (attr) {\r\n case 'style':\r\n el.style.cssText = value\r\n break\r\n case 'value':\r\n if (tagName === 'input' || tagName === 'textarea') {\r\n el.value = value\r\n } else {\r\n el.setAttribute(attr, value)\r\n }\r\n break\r\n case 'htmlFor':\r\n el.setAttribute('for', value)\r\n break\r\n case 'className':\r\n el.className = value\r\n break\r\n case 'innerHTML':\r\n el.innerHTML = value\r\n break\r\n case 'innerText':\r\n el.innerText = value\r\n break\r\n default:\r\n el.setAttribute(attr, value)\r\n break\r\n }\r\n}\r\n\r\nexport default setAttribute\r\n","import isObject from '../types/isObject'\r\nimport hasOwn from '../lang/hasOwn'\r\nimport setAttribute from './setAttribute'\r\n\r\nconst setAttributes = (el, attrs) => {\r\n if (!el || !isObject(attrs)) {\r\n return false\r\n }\r\n\r\n Object.keys(attrs).forEach((attr) => {\r\n const value = attrs[attr]\r\n if (hasOwn(attrs, attr)) {\r\n setAttribute(el, attr, value)\r\n }\r\n })\r\n}\r\n\r\nexport default setAttributes\r\n","import isObject from '../types/isObject'\r\nimport isString from '../types/isString'\r\nimport isArray from '../types/isArray'\r\nimport isDOM from '../types/isDOM'\r\nimport setAttributes from './setAttributes'\r\n\r\n/**\r\n * 创建 DOM 节点,并添加属性和子节点\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} tagName - 标签名称\r\n * @param {Object|Array|HTMLElement|DocumentFragment|String} attrs - 属性对象或者子节点\r\n * @param {Array|HTMLElement|DocumentFragment|String} [children] - 子节点数组\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (tagName, attrs, children) => {\r\n const $fragment = document.createDocumentFragment()\r\n const $el = document.createElement(tagName)\r\n const isValidChild = (child) => {\r\n return isDOM(child) || isString(child)\r\n }\r\n const append = (child) => {\r\n let $child\r\n\r\n if (!isValidChild(child)) {\r\n return false\r\n }\r\n\r\n if (isDOM(child)) {\r\n $child = child\r\n } else if (isString(child)) {\r\n $child = document.createTextNode(child)\r\n }\r\n\r\n $fragment.appendChild($child)\r\n }\r\n\r\n if (isObject(attrs)) {\r\n setAttributes($el, attrs)\r\n } else if (isArray(attrs) && attrs.every((attr) => isValidChild(attr))) {\r\n attrs.forEach((child) => {\r\n append(child)\r\n })\r\n } else if (isDOM(attrs)) {\r\n append(attrs)\r\n } else if (isString(attrs)) {\r\n append(document.createTextNode(attrs))\r\n }\r\n\r\n if (isArray(children)) {\r\n children.forEach((child) => {\r\n append(child)\r\n })\r\n } else {\r\n append(children)\r\n }\r\n\r\n $el.appendChild($fragment)\r\n\r\n return $el\r\n}\r\n\r\nexport default createElement\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport isSVG from '../types/isSVG'\r\nimport setAttributes from '../dom/setAttributes'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @param {Object} [options.attrs]\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (name, options = {}) => {\r\n const ICON = 'outline-icon'\r\n const size = options.size || 0\r\n const color = options.color || ''\r\n const iconSet = options.iconSet || ''\r\n const width = isArray(size) ? size[0] : size\r\n const height = isArray(size) ? size[1] : size\r\n const defaultRules = size ? `width:${width}px;height:${height}px;` : ''\r\n const cssRules = color ? defaultRules + `color:${color}` : defaultRules\r\n const attrs = options.attrs || {}\r\n const $icon = document.createElement('i')\r\n let binds = ''\r\n let svg = ''\r\n let $svg\r\n\r\n if (!isString(name)) {\r\n return null\r\n }\r\n\r\n if (isSVG(name)) {\r\n svg = name\r\n } else {\r\n binds =\r\n iconSet && iconSet !== 'icon'\r\n ? `xlink:href=\"#${iconSet}-icon-${name}\"`\r\n : `xlink:href=\"#icon-${name}\"`\r\n svg = ``\r\n }\r\n\r\n $icon.innerHTML = svg\r\n\r\n if (attrs.className) {\r\n attrs.className = `${ICON} ${attrs.className}`\r\n } else {\r\n attrs.className = ICON\r\n }\r\n\r\n setAttributes($icon, attrs)\r\n\r\n $svg = $icon.querySelector('svg')\r\n setAttributes($svg, {\r\n 'aria-hidden': true,\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n class: 'outline-icon__svg',\r\n width: 200,\r\n height: 200,\r\n style: cssRules\r\n })\r\n\r\n return $icon\r\n}\r\n\r\nexport default createElement\r\n","import isString from './isString'\r\n\r\nconst isSVG = (str) => {\r\n const declaration = '(?:<\\\\?xml[^>]*>\\\\s*)?'\r\n const doctype =\r\n '(?:<\\\\!doctype svg[^>]*\\\\s*(?:\\\\[?(?:\\\\s*]*>\\\\s*)*\\\\]?)*[^>]*>\\\\s*)?'\r\n const content = ']*>[^]*<\\\\/svg>\\\\s*$'\r\n const svg = `^\\\\s*${declaration}${doctype}${content}\\\\s*$`\r\n const pattern = new RegExp(svg, 'i')\r\n\r\n return isString(str) && pattern.test(str)\r\n}\r\n\r\nexport default isSVG\r\n","import createElement from './createElement'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method icon\r\n * @alias createElement\r\n * @see createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @returns {HTMLElement}\r\n */\r\nconst icon = (name, options = {}) => {\r\n return createElement(name, options)\r\n}\r\n\r\nexport default icon\r\n","import trim from '../lang/trim'\r\nimport hasClass from './hasClass'\r\n\r\n/**\r\n * 移除 DOM 节点的 className 样式\r\n * ========================================================================\r\n * @method removeClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst removeClass = (el, className) => {\r\n let allClass = el.className\r\n let classList\r\n\r\n if (!allClass || !hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.remove) {\r\n classList.remove(className)\r\n } else {\r\n allClass = trim(allClass.replace(className, ''))\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default removeClass\r\n","import removeClass from './utils/dom/removeClass'\r\nimport isEmpty from './utils/types/isEmpty'\r\nimport trim from './utils/lang/trim'\r\n\r\nconst _removeHeading = ($heading, hasAnchor = true, isAtStart = true) => {\r\n const CLS_HEADING = 'outline-heading'\r\n const text = $heading.innerHTML\r\n const pattern = /^\\d+(\\.?\\d+)*\\s?/gi\r\n let $anchor\r\n\r\n $heading.innerHTML = text.replace(pattern, '')\r\n $heading.removeAttribute('id')\r\n $heading.removeAttribute('data-id')\r\n\r\n removeClass($heading, CLS_HEADING)\r\n\r\n if (!hasAnchor) {\r\n return false\r\n }\r\n\r\n $anchor = $heading.querySelector(`.${CLS_HEADING}__anchor`)\r\n\r\n if (isAtStart) {\r\n removeClass($heading, `${CLS_HEADING}_start`)\r\n }\r\n\r\n if (isEmpty(trim($heading.className))) {\r\n $heading.removeAttribute('class')\r\n }\r\n\r\n // 存在锚点才移除\r\n if ($anchor) {\r\n $heading.removeChild($anchor)\r\n }\r\n}\r\n\r\nexport default _removeHeading\r\n","import isString from './isString'\r\n/**\r\n * 检测数据是否为空字符串\r\n * ========================================================================\r\n * @method isEmpty\r\n * @param {String} str\r\n * @returns {boolean}\r\n */\r\nconst isEmpty = (str) => {\r\n return isString(str) && str === ''\r\n}\r\n\r\nexport default isEmpty\r\n","import trim from './utils/lang/trim'\r\nimport stripTags from './utils/lang/stripTags'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport _getChapterParentIdByDiffer from './_getChapterParentIdByDiffer'\r\nimport _getChaptersWithCode from './_getChaptersWithCode'\r\n\r\n/**\r\n * 根据文章中的 h1~h6 标签,自动分析返回文章章节数据\r\n * ========================================================================\r\n * @method getChapters\r\n * @param {Array} headings\r\n * @param {Boolean} [showCode]\r\n * @param {Function} [chapterTextFilter]\r\n * @return {*|*[]}\r\n */\r\nconst getChapters = (headings, showCode = true, chapterTextFilter = null) => {\r\n let previous = 1\r\n let level = 0\r\n let text = ''\r\n const chapters = []\r\n\r\n headings.forEach((heading, i) => {\r\n const tagName = heading.tagName\r\n const headingLevel = tagName.replace(/h/i, '')\r\n let current = parseInt(headingLevel, 10)\r\n let pid = -1\r\n\r\n // 场景1:当前标题是前一个标题的子标题\r\n // 当前标题的(标题标签)序号 > 前一个标题的序号:两个相连的标题是父标题 -> 子标题关系;\r\n // h2 (前一个标题)\r\n // h3 (当前标题)\r\n if (current > previous) {\r\n level += 1\r\n\r\n // 第一层级的 pid 是 -1\r\n if (level === 1) {\r\n pid = -1\r\n } else {\r\n pid = i - 1\r\n }\r\n }\r\n // 场景2:当前标题和前一个标题层级相同\r\n // 当前标题的(标题标签)序号 = 前一个标题的序号\r\n // h2 (前一个标题)\r\n // h2 (当前标题)\r\n // 当前标题的(标题标签)序号 < 前一个标题的序号,并且当前标题序号 > 当前的级别\r\n // h2\r\n // h4 (前一个标题)\r\n // h3 (当前标题:这种情况我们还是任务 h3 是 h2 的下一级章节)\r\n else if (current === previous || (current < previous && current > level)) {\r\n // H1 的层级肯定是 1\r\n if (current === 1) {\r\n level = 1\r\n pid = -1\r\n } else {\r\n pid = chapters[i - 1].pid\r\n }\r\n }\r\n // 场景3:当前标题比前一个标题层级高\r\n else if (current <= level) {\r\n // H1 的层级肯定是 1\r\n if (current === 1) {\r\n level = 1\r\n } else {\r\n level = level - (previous - current)\r\n\r\n if (level <= 1) {\r\n level = 1\r\n }\r\n }\r\n\r\n // 第一级的标题\r\n if (level === 1) {\r\n pid = -1\r\n } else {\r\n // 通过当前标题和前一个标题之间的等级差,获得当前标题的父标题ID\r\n pid = _getChapterParentIdByDiffer(chapters, previous - current, i)\r\n }\r\n }\r\n\r\n previous = current\r\n\r\n text = stripTags(trim(heading.innerHTML))\r\n\r\n if (isFunction(chapterTextFilter)) {\r\n text = chapterTextFilter(text)\r\n }\r\n\r\n chapters.push({\r\n id: i,\r\n pid: pid,\r\n level: level,\r\n rel: `heading-${i}`,\r\n text,\r\n tagName\r\n })\r\n })\r\n\r\n return showCode ? _getChaptersWithCode(chapters) : chapters\r\n}\r\n\r\nexport default getChapters\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 过滤所有 HTML 标签\r\n * ========================================================================\r\n * @method stripTags\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\nconst stripTags = (str) => {\r\n if (!isString(str)) {\r\n return ''\r\n }\r\n return str.replace(/<\\/?[^>]+(>|$)/g, '')\r\n}\r\n\r\nexport default stripTags\r\n","const _getChapterParentIdByDiffer = (chapters, differ, index) => {\r\n let previous = chapters[index - 1]\r\n let pid\r\n let i\r\n\r\n for (i = 0; i < differ; i += 1) {\r\n pid = previous.pid\r\n previous = chapters[pid]\r\n }\r\n\r\n pid = previous.pid\r\n\r\n return pid\r\n}\r\n\r\nexport default _getChapterParentIdByDiffer\r\n","import isArray from './utils/types/isArray'\r\n\r\nconst _getChaptersWithCode = (chapters) => {\r\n const groups = {}\r\n const cb = (o) => {\r\n return [o.pid]\r\n }\r\n\r\n chapters.forEach((o) => {\r\n const group = JSON.stringify(cb(o))\r\n\r\n groups[group] = groups[group] || []\r\n groups[group].push(o)\r\n\r\n o.index = groups[group].length\r\n\r\n if (o.pid === -1) {\r\n o.code = String(o.index)\r\n }\r\n })\r\n\r\n Object.keys(groups).forEach((group) => {\r\n groups[group].forEach((c) => {\r\n const subjects = groups[`[${c.id}]`]\r\n\r\n if (!subjects || !isArray(subjects)) {\r\n return false\r\n }\r\n\r\n subjects.forEach((o) => {\r\n o.code = c.code + '.' + o.index\r\n })\r\n })\r\n })\r\n\r\n return chapters\r\n}\r\n\r\nexport default _getChaptersWithCode\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isElement from './utils/types/isElement'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport timeSlice from './utils/lang/timeSlice'\r\nimport toTree from './utils/lang/toTree'\r\nimport later from './utils/lang/later'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\nimport offsetTop from './utils/dom/offsetTop'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport stop from './utils/event/stop'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport _updateHeading from './_updateHeading'\r\nimport _removeHeading from './_removeHeading'\r\nimport getChapters from './getChapters'\r\n\r\nimport Base from './base'\r\n\r\nclass Anchors extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Anchors.DEFAULTS)\r\n\r\n this.$articleElement = null\r\n this.$scrollElement = null\r\n this.$headings = []\r\n this.chapters = []\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n const showCode = this.attr('showCode') || true\r\n let created\r\n let scrollElement\r\n let selector\r\n let $articleElement\r\n let articleElement\r\n\r\n this.attr(options)\r\n\r\n articleElement = this.attr('articleElement')\r\n scrollElement = this.attr('scrollElement')\r\n selector = this.attr('selector')\r\n created = this.attr('created')\r\n\r\n if (isString(articleElement)) {\r\n $articleElement = document.querySelector(articleElement)\r\n } else if (isElement(articleElement)) {\r\n $articleElement = articleElement\r\n }\r\n\r\n if (!$articleElement) {\r\n return this\r\n }\r\n\r\n this.$articleElement = $articleElement\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n this.$headings = [...$articleElement.querySelectorAll(selector)]\r\n\r\n if (this.$headings.length < 1) {\r\n return this\r\n }\r\n\r\n this.chapters = getChapters(\r\n this.$headings,\r\n showCode,\r\n this.attr('chapterTextFilter')\r\n )\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n getChapters(isTreeStructured = false) {\r\n const chapters = this.chapters\r\n return isTreeStructured ? toTree(chapters, 'id', 'pid') : chapters\r\n }\r\n\r\n count() {\r\n return this.chapters.length\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n\r\n paint()\r\n\r\n this._paint(this.chapters)\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this._remove()\r\n\r\n return this\r\n }\r\n\r\n _paint(chapters) {\r\n const LIMIT = 400\r\n const hasAnchor = this.attr('hasAnchor')\r\n const isAtStart = this.attr('isAtStart')\r\n const showCode = this.attr('showCode')\r\n const anchorURL = this.attr('anchorURL')\r\n const count = this.count()\r\n const $headings = [...this.$headings]\r\n const update = (headings, group) => {\r\n headings.forEach(($heading, i) => {\r\n const id = i + group * LIMIT\r\n const chapterCode = chapters[id].code\r\n _updateHeading($heading, id, {\r\n hasAnchor,\r\n isAtStart,\r\n showCode,\r\n chapterCode,\r\n anchorURL\r\n })\r\n })\r\n }\r\n let groupIndex = -1\r\n\r\n // 针对超长的文章,进行 timeSlice 处理\r\n if (count > LIMIT) {\r\n groupIndex += 1\r\n // 同步绘制 Limit 以内的标题链接(可以确保 50ms 完成绘制)\r\n update($headings.splice(0, LIMIT), 0)\r\n // 采用 timeSlice 处理机制绘制剩余的标题\r\n while ($headings.length > 0) {\r\n const once = $headings.splice(0, LIMIT)\r\n timeSlice(\r\n () => {\r\n update(once, (groupIndex += 1))\r\n },\r\n () => {\r\n this.$emit('anchors:all:paint')\r\n }\r\n )\r\n }\r\n } else {\r\n update($headings, 0)\r\n }\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const hasAnchor = this.attr('hasAnchor')\r\n const isAtStart = this.attr('isAtStart')\r\n const $headings = this.$headings\r\n\r\n $headings.forEach(($heading) => {\r\n _removeHeading($heading, hasAnchor, isAtStart)\r\n })\r\n\r\n return this\r\n }\r\n\r\n refresh(chapters) {\r\n const $articleElement = this.$articleElement\r\n const selector = this.attr('selector')\r\n\r\n this.$headings = [...$articleElement.querySelectorAll(selector)]\r\n this.chapters = chapters\r\n\r\n this.erase()._paint(chapters)\r\n\r\n return this\r\n }\r\n\r\n scrollTo(top, after) {\r\n const el = this.$scrollElement\r\n\r\n scrollTo(el, top, after)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onAnchorTrigger(evt) {\r\n const anchorURL = this.attr('anchorURL')\r\n const afterScroll = this.attr('afterScroll')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const $anchor = evt.delegateTarget\r\n const $heading = $anchor.parentNode\r\n const top = offsetTop($heading) - (stickyHeight + 10)\r\n const $scrollElement = this.$scrollElement\r\n const min = 0\r\n const max = $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n const after = () => {\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(this, 'anchor')\r\n }\r\n\r\n later(() => {\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n })\r\n }\r\n\r\n this.scrollTo(top, after)\r\n\r\n if (!anchorURL) {\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $articleElement = this.$articleElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n on(\r\n $articleElement,\r\n '.outline-heading__anchor',\r\n 'click',\r\n this.onAnchorTrigger,\r\n this,\r\n true\r\n )\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $articleElement = this.$articleElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n off($articleElement, 'click', this.onAnchorTrigger)\r\n\r\n return this\r\n }\r\n}\r\n\r\nAnchors.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n scrollElement: 'html,body',\r\n articleElement: '#article',\r\n selector: 'h1,h2,h3,h4,h5,h6',\r\n stickyHeight: 0,\r\n anchorURL: '',\r\n hasAnchor: true,\r\n isAtStart: true,\r\n showCode: false,\r\n created: null,\r\n mounted: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n chapterTextFilter: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Anchors\r\n","import trim from './utils/lang/trim'\r\nimport createElement from './utils/dom/createElement'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\n\r\nconst _updateHeading = ($heading, i, options) => {\r\n const CLS_HEADING = 'outline-heading'\r\n const hasAnchor = options.hasAnchor || true\r\n const isAtStart = options.isAtStart || true\r\n const showCode = options.showCode || false\r\n const chapterCode = options.chapterCode || ''\r\n const anchorURL = options.anchorURL || ''\r\n const headingId = `heading-${i}`\r\n const attrs = {\r\n id: headingId,\r\n className: isAtStart ? `${CLS_HEADING} ${CLS_HEADING}_start` : CLS_HEADING,\r\n 'data-id': i\r\n }\r\n const text = trim($heading.innerHTML)\r\n let $anchor\r\n let $icon\r\n\r\n if (showCode) {\r\n attrs.innerHTML = chapterCode + ' ' + text\r\n }\r\n setAttributes($heading, attrs)\r\n\r\n if (!hasAnchor) {\r\n return false\r\n }\r\n\r\n $icon = icon('hash', { iconSet: 'outline' })\r\n $anchor = createElement(\r\n 'a',\r\n {\r\n id: `anchor-${i}`,\r\n className: `${CLS_HEADING}__anchor anchor-${i}`,\r\n href: anchorURL || `#${headingId}`,\r\n target: anchorURL ? '_blank' : 'self',\r\n 'data-id': i\r\n },\r\n $icon\r\n )\r\n $heading.appendChild($anchor)\r\n}\r\n\r\nexport default _updateHeading\r\n","// HTML 合法的标签\r\nconst TAGS = [\r\n 'a',\r\n 'abbr',\r\n 'address',\r\n 'area',\r\n 'article',\r\n 'aside',\r\n 'audio',\r\n 'b',\r\n 'base',\r\n 'bdi',\r\n 'bdo',\r\n 'blockquote',\r\n 'body',\r\n 'br',\r\n 'button',\r\n 'canvas',\r\n 'caption',\r\n 'cite',\r\n 'code',\r\n 'col',\r\n 'colgroup',\r\n 'data',\r\n 'datalist',\r\n 'dd',\r\n 'del',\r\n 'details',\r\n 'dfn',\r\n 'dialog',\r\n 'div',\r\n 'dl',\r\n 'dt',\r\n 'em',\r\n 'embed',\r\n 'fieldset',\r\n 'figcaption',\r\n 'figure',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'head',\r\n 'header',\r\n 'hgroup',\r\n 'hr',\r\n 'html',\r\n 'i',\r\n 'iframe',\r\n 'img',\r\n 'input',\r\n 'ins',\r\n 'kbd',\r\n 'label',\r\n 'legend',\r\n 'li',\r\n 'link',\r\n 'main',\r\n 'map',\r\n 'mark',\r\n 'math',\r\n 'menu',\r\n 'menuitem',\r\n 'meta',\r\n 'meter',\r\n 'nav',\r\n 'noscript',\r\n 'object',\r\n 'ol',\r\n 'optgroup',\r\n 'option',\r\n 'output',\r\n 'p',\r\n 'param',\r\n 'picture',\r\n 'pre',\r\n 'progress',\r\n 'q',\r\n 'rb',\r\n 'rp',\r\n 'rt',\r\n 'rtc',\r\n 'ruby',\r\n 's',\r\n 'samp',\r\n 'script',\r\n 'search',\r\n 'section',\r\n 'select',\r\n 'slot',\r\n 'small',\r\n 'source',\r\n 'span',\r\n 'strong',\r\n 'style',\r\n 'sub',\r\n 'summary',\r\n 'sup',\r\n 'svg',\r\n 'table',\r\n 'tbody',\r\n 'td',\r\n 'template',\r\n 'textarea',\r\n 'tfoot',\r\n 'th',\r\n 'thead',\r\n 'time',\r\n 'title',\r\n 'tr',\r\n 'track',\r\n 'u',\r\n 'ul',\r\n 'var',\r\n 'video',\r\n 'wbr'\r\n]\r\n\r\nexport default TAGS\r\n","import isString from './isString'\r\nimport trim from '../lang/trim'\r\nimport TAGS from './tags'\r\n\r\n/**\r\n * 检测测试数据是否为合法的 HTML 代码\r\n * ========================================================================\r\n * @method isHTML\r\n * @category Lang\r\n * @see https://github.com/sindresorhus/html-tags\r\n * @see https://github.com/sindresorhus/is-html\r\n * @param {String} str - 要检测的数据\r\n * @returns {Boolean} 'val' 为合法的 HTML 代码,返回 true,否则返回 false\r\n */\r\nconst isHTML = (str) => {\r\n let html\r\n let basic\r\n let full\r\n\r\n if (!isString(str)) {\r\n return false\r\n }\r\n\r\n // 为了提高性能,我们将其限制在合理的长度内。\r\n html = trim(str).slice(0, 1000)\r\n basic = /\\s*|]*>|]*>|]+>/i\r\n full = new RegExp(TAGS.map((tag) => `<${tag}\\\\b[^>]*>`).join('|'), 'i')\r\n\r\n return basic.test(html) || full.test(html)\r\n}\r\n\r\nexport default isHTML\r\n","/**\r\n * 移除字符串中的 JavaScript 代码\r\n * ====================================================\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nconst stripScripts = (str) => {\r\n return str.replace(/]*>.*?<\\/script>/gi, '')\r\n}\r\n\r\nexport default stripScripts\r\n","const setProperty = (prop, value) => {\r\n const documentElement = document.documentElement\r\n documentElement.style.setProperty(prop, value)\r\n}\r\n\r\nexport default setProperty\r\n","import setProperty from './utils/dom/setProperty'\r\n\r\nlet index = 2000\r\n\r\nconst zIndex = (idx) => {\r\n if (idx) {\r\n index = idx\r\n } else {\r\n index += 1\r\n }\r\n\r\n setProperty('--outline-zIndex', `${index}`)\r\n\r\n return index\r\n}\r\n\r\nexport default zIndex\r\n","import Base from './base'\r\n\r\nimport later from './utils/lang/later'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isDOM from './utils/types/isDOM'\r\nimport isHTML from './utils/types/isHTML'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport html from './utils/dom/html'\r\nimport createElement from './utils/dom/createElement'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport paint from './utils/icons/paint'\r\nimport icon from './utils/icons/icon'\r\nimport zIndex from './zIndex'\r\n\r\nclass Drawer extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n this.zIndex = 0\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Drawer.DEFAULTS)\r\n this.title = ''\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.$modal = null\r\n this.$header = null\r\n this.$title = null\r\n this.$close = null\r\n this.$main = null\r\n this.$footer = null\r\n this.$overlay = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.title = this.attr('title')\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n return this\r\n }\r\n\r\n setTitle(title) {\r\n this.attr('title', title)\r\n this.title = title\r\n this.$title.innerHTML = title\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const size = this.attr('size')\r\n const placement = this.attr('placement')\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const hasOffset = this.attr('hasOffset')\r\n const hasPadding = this.attr('hasPadding')\r\n const autoHeight = this.attr('autoHeight')\r\n const customClass = this.attr('customClass')\r\n let $el\r\n let $modal\r\n let $header\r\n let $title\r\n let $close\r\n let $main\r\n let $footer\r\n let $overlay\r\n\r\n paint()\r\n this.zIndex = zIndex()\r\n\r\n $title = createElement(\r\n 'h2',\r\n {\r\n className: 'outline-drawer__title'\r\n },\r\n this.title\r\n )\r\n this.$title = $title\r\n\r\n if (hasClose) {\r\n $close = createElement(\r\n 'div',\r\n {\r\n className: 'outline-drawer__close'\r\n },\r\n icon('close', { iconSet: 'outline', size: 20 })\r\n )\r\n this.$close = $close\r\n }\r\n\r\n $header = createElement(\r\n 'header',\r\n {\r\n className: 'outline-drawer__header'\r\n },\r\n [$title, $close]\r\n )\r\n this.$header = $header\r\n\r\n $main = createElement('div', {\r\n className: 'outline-drawer__main'\r\n })\r\n this.$main = $main\r\n\r\n if (!hasPadding) {\r\n addClass($main, 'outline-drawer_full')\r\n }\r\n\r\n $footer = createElement('footer', {\r\n className: 'outline-drawer__footer'\r\n })\r\n this.$footer = $footer\r\n\r\n $modal = createElement(\r\n 'div',\r\n {\r\n className: `outline-drawer__modal outline-drawer_${placement} outline-drawer_${size} outline-drawer_closed`\r\n },\r\n [$header, $main, $footer]\r\n )\r\n this.$modal = $modal\r\n\r\n if (hasOffset) {\r\n addClass($modal, 'outline-drawer_offset')\r\n }\r\n\r\n if (autoHeight) {\r\n addClass($modal, 'outline-drawer_auto')\r\n }\r\n\r\n if (customClass) {\r\n addClass($modal, customClass)\r\n }\r\n\r\n if (hasOverlay) {\r\n $overlay = createElement('div', {\r\n className: 'outline-drawer__overlay'\r\n })\r\n this.$overlay = $overlay\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: `outline-drawer`\r\n },\r\n [$modal, $overlay]\r\n )\r\n this.$el = $el\r\n document.body.appendChild($el)\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$main.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(content) {\r\n let $content = null\r\n\r\n if (isFunction(content)) {\r\n $content = content()\r\n } else if (isDOM(content)) {\r\n $content = content\r\n } else if (isHTML(content)) {\r\n $content = html(content)\r\n }\r\n\r\n if ($content) {\r\n this.$main.appendChild($content)\r\n }\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(content) {\r\n this.erase()._paint(content)\r\n return this\r\n }\r\n\r\n open() {\r\n const opened = this.attr('afterOpened')\r\n const $modal = this.$modal\r\n\r\n addClass(this.$el, 'outline-drawer_opened')\r\n removeClass($modal, 'outline-drawer_closed')\r\n addClass($modal, 'outline-drawer_opened')\r\n\r\n later(() => {\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n opened.call(this)\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const closed = this.attr('afterClosed')\r\n const $modal = this.$modal\r\n\r\n removeClass($modal, 'outline-drawer_opened')\r\n addClass($modal, 'outline-drawer_closed')\r\n\r\n later(() => {\r\n removeClass(this.$el, 'outline-drawer_opened')\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n closed.call(this)\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const afterToggle = this.attr('afterToggle')\r\n const closed = this.isClosed()\r\n\r\n if (closed) {\r\n this.open()\r\n } else {\r\n this.close()\r\n }\r\n\r\n if (isFunction(afterToggle)) {\r\n later(() => {\r\n afterToggle.call(this, closed)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const afterDestroy = this.attr('afterDestroy')\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n let index = this.zIndex\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n index -= 1\r\n zIndex(index)\r\n this.zIndex = 0\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const closeOnClickModal = this.attr('closeOnClickModal')\r\n const $el = this.$el\r\n\r\n if (hasClose) {\r\n on($el, '.outline-drawer__close', 'click', this.onClose, this, true)\r\n }\r\n\r\n if (hasOverlay && closeOnClickModal) {\r\n on($el, '.outline-drawer__overlay', 'click', this.onClose, this, true)\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const hasClose = this.attr('hasClose')\r\n const hasOverlay = this.attr('hasOverlay')\r\n const $el = this.$el\r\n\r\n if (!hasClose && !hasOverlay) {\r\n return this\r\n }\r\n\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nDrawer.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'rtl',\r\n title: '标题',\r\n size: 'regular',\r\n hasClose: true,\r\n hasOverlay: true,\r\n hasOffset: false,\r\n hasPadding: true,\r\n autoHeight: true,\r\n closeOnClickModal: true,\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n afterToggle: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Drawer\r\n","import isHTML from '../types/isHTML'\r\nimport isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport stripScripts from '../lang/stripScripts'\r\nimport createElement from './createElement'\r\n\r\n/**\r\n * 获取或者设置 DOM 元素的 innerHTML 属性值,或者通过 HTML 字符串,创建 DOM 元素\r\n * ========================================================================\r\n * @method html\r\n * @param {HTMLElement|String} el\r\n * @param {String} [strHTML]\r\n * @return {DocumentFragment|null|*}\r\n */\r\nconst html = (el, strHTML) => {\r\n const $fragment = document.createDocumentFragment()\r\n\r\n if (!el || (!isHTML(el) && !isString(el) && !isElement(el))) {\r\n return null\r\n }\r\n\r\n if (isHTML(el)) {\r\n const template = createElement('div')\r\n let children = []\r\n\r\n template.innerHTML = stripScripts(el)\r\n children = [...template.childNodes]\r\n children.forEach((child) => {\r\n $fragment.appendChild(child)\r\n })\r\n\r\n return $fragment\r\n } else if (isString(strHTML)) {\r\n el.innerHTML = stripScripts(strHTML)\r\n } else {\r\n return el.innerHTML\r\n }\r\n}\r\n\r\nexport default html\r\n","import isFunction from '../types/isFunction'\r\nimport off from './off'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定事件\r\n * ========================================================================\r\n * @method at\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (必须) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst at = (el, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n const listener = function (evt) {\r\n let overrideContext = context || el\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default at\r\n","/**\r\n * 获取HTML元素的某个CSS样式值\r\n * ====================================================\r\n * @param el\r\n * @param ruleName\r\n * @returns {*}\r\n */\r\nconst getStyle = (el, ruleName) => {\r\n return getComputedStyle(el)[ruleName]\r\n}\r\n\r\nexport default getStyle\r\n","import Base from './base'\r\n\r\nimport isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isElement from './utils/types/isElement'\r\nimport later from './utils/lang/later'\r\nimport at from './utils/event/at'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport stop from './utils/event/stop'\r\nimport createElement from './utils/dom/createElement'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport addClass from './utils/dom/addClass'\r\nimport intersection from './utils/dom/intersection'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport offsetTop from './utils/dom/offsetTop'\r\nimport getStyle from './utils/dom/getStyle'\r\nimport setProperty from './utils/dom/setProperty'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\n\r\nimport _paintChapters from './_paintChapters'\r\nimport inBounding from './utils/dom/inBounding'\r\n\r\nclass Chapters extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n this.scrollTimer = null\r\n this.resizeTimer = null\r\n this.observerTimer = null\r\n this.Observer = null\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Chapters.DEFAULTS)\r\n\r\n this.$el = null\r\n this.$title = null\r\n this.$main = null\r\n this.$list = null\r\n this.$placeholder = null\r\n this.$parentElement = null\r\n this.$scrollElement = null\r\n this.$active = null\r\n\r\n this.chapters = []\r\n this.active = 0\r\n this.offsetWidth = 0\r\n this.offsetTop = 0\r\n this.playing = false\r\n this.closed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n let parentElement\r\n let scrollElement\r\n let $parent\r\n\r\n this.attr(options)\r\n\r\n created = this.attr('created')\r\n parentElement = this.attr('parentElement')\r\n scrollElement = this.attr('scrollElement')\r\n\r\n if (isString(parentElement)) {\r\n $parent = document.querySelector(parentElement)\r\n } else if (isElement(parentElement)) {\r\n $parent = parentElement\r\n }\r\n this.$parentElement = $parent\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n\r\n this.chapters = this.attr('chapters')\r\n this.closed = this.attr('closed')\r\n this.active = this.attr('active')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n if (this.chapters.length < 1) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n this.$active = document.querySelector(`#chapter-${this.active}`)\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isSticky() {\r\n const position = this.attr('position')\r\n return position === 'sticky'\r\n }\r\n\r\n isFixed() {\r\n const position = this.attr('position')\r\n return position === 'fixed'\r\n }\r\n\r\n isInside() {\r\n return this.isFixed() || this.isSticky()\r\n }\r\n\r\n isOutside() {\r\n return !this.isInside()\r\n }\r\n\r\n count() {\r\n return this.chapters.length\r\n }\r\n\r\n _paintEdge() {\r\n const $fragment = document.createDocumentFragment()\r\n const STICKY = 'outline-chapters_sticky'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const title = this.attr('title')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const customClass = this.attr('customClass')\r\n const $parentElement = this.$parentElement\r\n const children = []\r\n const contents = []\r\n let $title = null\r\n let $el\r\n let $main\r\n let $list\r\n let $placeholder\r\n\r\n if (!$parentElement) {\r\n return this\r\n }\r\n\r\n if (this.isInside() && title) {\r\n $title = createElement(\r\n 'h2',\r\n {\r\n className: 'outline-chapters__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n contents.push($title)\r\n }\r\n\r\n $list = createElement('ul', {\r\n // 为优化性能,添加了 _fixed 和 _hidden\r\n // fixed 为了让 $list 脱离流布局\r\n // hidden 让 $list 不可见\r\n className: `outline-chapters__list`\r\n })\r\n this.$list = $list\r\n children.push($list)\r\n\r\n if (animationCurrent) {\r\n $placeholder = createElement('div', {\r\n className: 'outline-chapters__placeholder'\r\n })\r\n this.$placeholder = $placeholder\r\n children.push($placeholder)\r\n }\r\n\r\n $main = createElement(\r\n 'div',\r\n {\r\n className: 'outline-chapters__main'\r\n },\r\n children\r\n )\r\n this.$main = $main\r\n contents.push($main)\r\n\r\n $el = createElement(\r\n 'nav',\r\n {\r\n id: 'outline-chapters',\r\n className: `outline-chapters ${HIDDEN}`\r\n },\r\n contents\r\n )\r\n this.$el = $el\r\n\r\n if (this.isSticky()) {\r\n this.calculateStickyHeight()\r\n addClass($el, STICKY)\r\n }\r\n\r\n if (customClass) {\r\n addClass($el, customClass)\r\n }\r\n $fragment.appendChild($el)\r\n $parentElement.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const $parentElement = this.$parentElement\r\n const chapters = this.chapters\r\n const count = this.count()\r\n let $el\r\n\r\n if (!$parentElement || chapters.length < 1) {\r\n return this\r\n }\r\n\r\n if (this.isInside()) {\r\n addClass($parentElement, 'outline-chapters-parent')\r\n }\r\n\r\n this._paintEdge()\r\n $el = this.$el\r\n\r\n this._paint(chapters)\r\n\r\n later(() => {\r\n this.highlight(this.active)\r\n }, 60)\r\n\r\n this.offsetTop = offsetTop($el)\r\n this.offsetWidth = $el.offsetWidth\r\n\r\n if (this.isFixed()) {\r\n this.sticky()\r\n setProperty('--outline-chapters-width', `${this.offsetWidth}px`)\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n if (count < 400) {\r\n this.onObserver()\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$list.innerHTML = ''\r\n\r\n return this\r\n }\r\n\r\n _paint(chapters) {\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const showCode = this.attr('showCode')\r\n const $el = this.$el\r\n const $list = this.$list\r\n\r\n _paintChapters($list, chapters, showCode)\r\n removeClass($el, HIDDEN)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n this.$parentElement.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(chapters) {\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const $el = this.$el\r\n\r\n removeClass($el, HIDDEN)\r\n this.erase()._paint(chapters)\r\n\r\n return this\r\n }\r\n\r\n _getPlaceholderOffset(index) {\r\n const $main = this.$main\r\n const $list = this.$list\r\n const $anchor = $list.querySelector('.outline-chapters__anchor')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const mainPaddingTop = parseInt(getStyle($main, 'padding-top'), 10)\r\n const mainBorderTop = parseInt(getStyle($main, 'border-top-width'), 10)\r\n const placeholderPaddingTop = parseInt(getStyle($list, 'padding-top'), 10)\r\n const placeholderMarginTop = parseInt(getStyle($list, 'margin-top'), 10)\r\n const placeholderBorderTop = parseInt(\r\n getStyle($list, 'border-top-width'),\r\n 10\r\n )\r\n let height = $anchor.offsetHeight\r\n let offsetTop = 0\r\n let top\r\n\r\n if (!animationCurrent) {\r\n return this\r\n }\r\n\r\n if (mainPaddingTop) {\r\n offsetTop += mainPaddingTop\r\n }\r\n\r\n if (placeholderPaddingTop) {\r\n offsetTop += placeholderPaddingTop\r\n }\r\n\r\n if (placeholderMarginTop) {\r\n offsetTop += placeholderMarginTop\r\n }\r\n\r\n if (mainBorderTop) {\r\n offsetTop += mainBorderTop\r\n }\r\n\r\n if (placeholderBorderTop) {\r\n offsetTop += placeholderBorderTop\r\n }\r\n\r\n top = height * index\r\n\r\n return offsetTop + top\r\n }\r\n\r\n positionPlaceholder(index) {\r\n const $list = this.$list\r\n const $placeholder = this.$placeholder\r\n const $anchor = $list.querySelector('.outline-chapters__anchor')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const height = $anchor.offsetHeight\r\n let offsetTop = 0\r\n\r\n if (!animationCurrent) {\r\n return this\r\n }\r\n\r\n offsetTop = this._getPlaceholderOffset(index)\r\n\r\n $placeholder.style.cssText = `transform: translateY(${offsetTop}px);height:${height}px;`\r\n\r\n return this\r\n }\r\n\r\n highlight(id) {\r\n const $el = this.$el\r\n const animationCurrent = this.attr('animationCurrent')\r\n const ACTIVE = 'outline-chapters_active'\r\n const HIGHLIGHT = 'outline-chapters_highlight'\r\n let $anchor = null\r\n let placeholderOffsetTop = 0\r\n\r\n if (!$el) {\r\n return this\r\n }\r\n\r\n $anchor = $el.querySelector(`#chapter__anchor-${id}`)\r\n\r\n if (!$anchor) {\r\n return this\r\n }\r\n\r\n this.active = parseInt($anchor.getAttribute('data-id'), 10)\r\n\r\n if (this.$active) {\r\n removeClass(this.$active, HIGHLIGHT)\r\n removeClass(this.$active, ACTIVE)\r\n }\r\n\r\n this.$active = $anchor\r\n addClass(this.$active, ACTIVE)\r\n\r\n if (animationCurrent) {\r\n this.positionPlaceholder(this.active)\r\n\r\n later(() => {\r\n if (!inBounding(this.$active, this.$parentElement)) {\r\n placeholderOffsetTop = this._getPlaceholderOffset(this.active)\r\n scrollTo(this.$main, placeholderOffsetTop)\r\n }\r\n })\r\n } else {\r\n addClass(this.$active, HIGHLIGHT)\r\n }\r\n\r\n return this\r\n }\r\n\r\n sticky() {\r\n const afterSticky = this.attr('afterSticky')\r\n const FIXED = 'outline-chapters_fixed'\r\n const $el = this.$el\r\n const top = this.offsetTop\r\n const scrollTop = this.$scrollElement.scrollTop\r\n let isStickying\r\n\r\n if (!this.isFixed()) {\r\n return this\r\n }\r\n\r\n isStickying = scrollTop >= top\r\n\r\n if (isStickying) {\r\n addClass($el, FIXED)\r\n } else {\r\n removeClass($el, FIXED)\r\n }\r\n\r\n if (isFunction(afterSticky)) {\r\n afterSticky.call(this, this.isClosed(), isStickying)\r\n }\r\n\r\n return this\r\n }\r\n\r\n calculateStickyHeight() {\r\n const documentElement = document.documentElement\r\n const height = Math.max(\r\n documentElement.clientHeight || 0,\r\n window.innerHeight || 0\r\n )\r\n setProperty('--outline-sticky-height', `${height}px`)\r\n return this\r\n }\r\n\r\n scrollTo(top, after) {\r\n const el = this.$scrollElement\r\n\r\n scrollTo(el, top, after)\r\n\r\n return this\r\n }\r\n\r\n show() {\r\n const FOLDED = 'outline-chapters_folded'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const opened = this.attr('afterOpened')\r\n const count = this.count()\r\n const $el = this.$el\r\n const $parent = this.$parentElement\r\n\r\n if (this.isInside()) {\r\n if (count > 800) {\r\n removeClass($parent, HIDDEN)\r\n } else {\r\n removeClass($parent, HIDDEN)\r\n later(() => {\r\n removeClass($parent, FOLDED)\r\n }, 30)\r\n }\r\n } else {\r\n removeClass($el, HIDDEN)\r\n }\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n opened.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide() {\r\n const FOLDED = 'outline-chapters_folded'\r\n const HIDDEN = 'outline-chapters_hidden'\r\n const closed = this.attr('afterClosed')\r\n const count = this.count()\r\n const $el = this.$el\r\n const $parent = this.$parentElement\r\n\r\n if (this.isInside()) {\r\n if (count > 800) {\r\n addClass($parent, HIDDEN)\r\n } else {\r\n addClass($parent, FOLDED)\r\n later(() => {\r\n addClass($parent, HIDDEN)\r\n })\r\n }\r\n } else {\r\n addClass($el, HIDDEN)\r\n }\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n closed.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const afterToggle = this.attr('afterToggle')\r\n const top = this.offsetTop\r\n const scrollTop = this.$scrollElement.scrollTop\r\n let isStickying\r\n\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n if (isFunction(afterToggle)) {\r\n later(() => {\r\n isStickying = scrollTop >= top\r\n afterToggle.call(this, this.isClosed(), isStickying)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n if (this.scrollTimer) {\r\n clearTimeout(this.scrollTimer)\r\n this.scrollTimer = null\r\n }\r\n\r\n if (this.resizeTimer) {\r\n clearTimeout(this.resizeTimer)\r\n this.resizeTimer = null\r\n }\r\n\r\n if (this.observerTimer) {\r\n clearTimeout(this.observerTimer)\r\n this.observerTimer = null\r\n }\r\n\r\n if (this.Observer) {\r\n this.Observer = null\r\n }\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n onObserver() {\r\n const selector = this.attr('selector')\r\n\r\n this.Observer = intersection(\r\n ($heading) => {\r\n const id = $heading.getAttribute('data-id')\r\n\r\n if (this.playing) {\r\n return false\r\n }\r\n\r\n if (this.observerTimer) {\r\n clearTimeout(this.observerTimer)\r\n }\r\n\r\n this.observerTimer = later(() => {\r\n this.highlight(id)\r\n }, 100)\r\n },\r\n {\r\n selector,\r\n context: this\r\n }\r\n )\r\n\r\n return this\r\n }\r\n\r\n onSelect(evt) {\r\n const stickyHeight = this.attr('stickyHeight')\r\n const $anchor = evt.delegateTarget\r\n const id = $anchor.getAttribute('data-id')\r\n const headingId = $anchor.href.split('#')[1]\r\n const $heading = document.querySelector(`#${headingId}`)\r\n const top = offsetTop($heading) - (stickyHeight + 10)\r\n const min = 0\r\n const max = this.$scrollElement.scrollHeight\r\n const afterScroll = this.attr('afterScroll')\r\n const after = () => {\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(this, 'chapter')\r\n }\r\n\r\n later(() => {\r\n this.playing = false\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n })\r\n }\r\n\r\n this.playing = true\r\n if (this.isFixed()) {\r\n this.sticky()\r\n later(() => {\r\n this.scrollTo(top, after)\r\n this.highlight(id)\r\n }, 10)\r\n } else {\r\n this.scrollTo(top, after)\r\n this.highlight(id)\r\n }\r\n\r\n stop(evt)\r\n\r\n return this\r\n }\r\n\r\n onScroll() {\r\n const $scrollElement = this.$scrollElement\r\n\r\n if (this.scrollTimer) {\r\n clearTimeout(this.scrollTimer)\r\n }\r\n\r\n this.scrollTimer = later(() => {\r\n const top = $scrollElement.scrollTop\r\n const min = 0\r\n const max = $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n\r\n if (this.isFixed()) {\r\n this.sticky()\r\n }\r\n\r\n this.$emit('toolbar:update', {\r\n top,\r\n min,\r\n max\r\n })\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n onResize() {\r\n if (this.resizeTimer) {\r\n clearTimeout(this.resizeTimer)\r\n }\r\n\r\n this.resizeTimer = later(() => {\r\n this.calculateStickyHeight()\r\n })\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n const $scrollElement = this.$scrollElement\r\n const tagName = $scrollElement.tagName.toLowerCase()\r\n let $element = $scrollElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n if (tagName === 'html' || tagName === 'body') {\r\n $element = window\r\n }\r\n\r\n on($el, '.outline-chapters__anchor', 'click', this.onSelect, this, true)\r\n at($element, 'scroll', this.onScroll, this, true)\r\n if (this.isSticky()) {\r\n at(window, 'resize', this.onResize, this, true)\r\n }\r\n this.$on('anchors:all:paint', this.onObserver, this)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const selector = this.attr('selector')\r\n const $el = this.$el\r\n const $scrollElement = this.$scrollElement\r\n const tagName = $scrollElement.tagName.toLowerCase()\r\n let $element = $scrollElement\r\n\r\n if (this.count() < 1) {\r\n return this\r\n }\r\n\r\n if (tagName === 'html' || tagName === 'body') {\r\n $element = window\r\n }\r\n\r\n off($el, 'click', this.onSelect)\r\n off($element, 'scroll', this.onScroll)\r\n if (this.isSticky()) {\r\n off(window, 'resize', this.onResize)\r\n }\r\n this.$off('anchors:all:paint')\r\n\r\n if (this.Observer) {\r\n document.querySelectorAll(selector).forEach((section) => {\r\n this.Observer.unobserve(section)\r\n })\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nChapters.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n parentElement: '',\r\n scrollElement: '',\r\n selector: '.outline-heading',\r\n active: 0,\r\n closed: false,\r\n showCode: true,\r\n animationCurrent: true,\r\n position: 'relative',\r\n stickyHeight: 0,\r\n chapters: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterScroll: null,\r\n beforeDestroy: null,\r\n afterDestroy: null,\r\n afterSticky: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Chapters\r\n","import createElement from './utils/dom/createElement'\r\nimport timeSlice from './utils/lang/timeSlice'\r\n\r\nconst _paintChapters = ($list, chapters, showCode = false) => {\r\n const LIMIT = 400\r\n const count = chapters.length\r\n const clones = [...chapters]\r\n const paint = (parts) => {\r\n const byId = (id) => $list.querySelector(`#${id}`)\r\n parts.forEach((chapter) => {\r\n const pid = chapter.pid\r\n const id = chapter.id\r\n const rel = chapter.rel\r\n const children = []\r\n const $text = createElement(\r\n 'span',\r\n {\r\n className: 'outline-chapters__text'\r\n },\r\n chapter.text\r\n )\r\n let $link\r\n let $code\r\n let $li\r\n let $subject\r\n let $chapter\r\n\r\n if (showCode) {\r\n $code = createElement(\r\n 'span',\r\n {\r\n className: 'outline-chapters__code',\r\n 'data-id': id\r\n },\r\n chapter.code\r\n )\r\n\r\n children.push($code)\r\n }\r\n\r\n children.push($text)\r\n\r\n $link = createElement(\r\n 'a',\r\n {\r\n id: `chapter__anchor-${id}`,\r\n className: 'outline-chapters__anchor',\r\n href: '#' + rel,\r\n rel: rel,\r\n 'data-id': id\r\n },\r\n children\r\n )\r\n\r\n $li = createElement(\r\n 'li',\r\n {\r\n id: `chapter-${id}`,\r\n className: 'outline-chapters__item',\r\n 'data-id': id\r\n },\r\n $link\r\n )\r\n\r\n if (pid === -1) {\r\n $list.appendChild($li)\r\n } else {\r\n $chapter = byId(`chapter-${pid}`)\r\n $subject = byId(`subject-${pid}`)\r\n\r\n if (!$subject) {\r\n $subject = createElement(\r\n 'ul',\r\n {\r\n id: 'subject-' + pid,\r\n className: 'outline-chapters__subject'\r\n },\r\n $li\r\n )\r\n\r\n $chapter.appendChild($subject)\r\n } else {\r\n $subject.appendChild($li)\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (count > LIMIT) {\r\n // 同步绘制\r\n paint(clones.splice(0, LIMIT))\r\n // 剩余的采用 timeSlice 机制绘制\r\n while (clones.length > 0) {\r\n const once = clones.splice(0, LIMIT)\r\n timeSlice(() => {\r\n paint(once)\r\n })\r\n }\r\n } else {\r\n paint(clones)\r\n }\r\n}\r\n\r\nexport default _paintChapters\r\n","import isElement from '../types/isElement'\r\n\r\n/**\r\n * 检测某个 DOM 节点的位置是否在另个一个 DOM 节点范围内\r\n * ========================================================================\r\n * @method inBounding\r\n * @param {HTMLElement} child\r\n * @param {HTMLElement} parent\r\n * @return {Boolean}\r\n */\r\nconst inBounding = (child, parent) => {\r\n let parentRect\r\n let childRect\r\n\r\n if (!isElement(child) || !isElement(parent)) {\r\n return false\r\n }\r\n\r\n parentRect = parent.getBoundingClientRect()\r\n childRect = child.getBoundingClientRect()\r\n\r\n return (\r\n childRect.top >= parentRect.top &&\r\n childRect.right <= parentRect.right &&\r\n childRect.bottom <= parentRect.bottom &&\r\n childRect.left >= parentRect.left\r\n )\r\n}\r\n\r\nexport default inBounding\r\n","import isFunction from '../types/isFunction'\r\nimport isElement from '../types/isElement'\r\n\r\n/**\r\n * 通用的 IntersectionObserver 观察者处理器\r\n * ========================================================================\r\n * @method intersection\r\n * @param {Function} fn\r\n * @param {Object} [props]\r\n * @param {Object|HTMLElement} [props.root]\r\n * @param {String} [props.selector]\r\n * @param {Object} [props.context]\r\n * @param {String} [props.attr]\r\n * @param {String} [props.rootMargin]\r\n */\r\nconst intersection = (fn, props = {}) => {\r\n const root = props.root || null\r\n const selector = props.selector || '.outline-heading'\r\n const context = props.context || null\r\n const rootMargin = props.rootMargin || '0px 0px -90% 0px'\r\n const options = {\r\n rootMargin: rootMargin\r\n }\r\n // eslint-disable-next-line compat/compat\r\n const Observer = new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.intersectionRatio > 0) {\r\n if (isFunction(fn)) {\r\n fn.call(context || entry.target, entry.target)\r\n }\r\n }\r\n })\r\n }, options)\r\n const $root = isElement(root) ? root : document\r\n\r\n if (root) {\r\n options.root = root\r\n }\r\n\r\n $root.querySelectorAll(selector).forEach((section) => {\r\n Observer.observe(section)\r\n })\r\n\r\n return Observer\r\n}\r\n\r\nexport default intersection\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测测试数据是否为类似 Object 类型\r\n * ========================================================================\r\n * @method isObjectLike\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是类似 Object 类型,返回 true,否则返回 false\r\n */\r\nconst isObjectLike = (val) => {\r\n return isObject(val) && val !== null\r\n}\r\n\r\nexport default isObjectLike\r\n","import isObjectLike from './isObjectLike'\r\n\r\n/**\r\n * 检测测试数据是否为普通对象\r\n * ========================================================================\r\n * @method isPlainObject\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是普通对象,返回 true,否则返回 false\r\n */\r\nconst isPlainObject = (val) => {\r\n const getPrototypeOf = Object.getPrototypeOf\r\n let proto\r\n\r\n // Detect obvious negatives\r\n if (!isObjectLike(val)) {\r\n return false\r\n }\r\n\r\n proto = val.prototype\r\n\r\n // JavaScript 对象分为两种:普通对象和函数对象\r\n // 普通对象:原型是 __proto__,没有 prototype 原型(属性)\r\n // 函数对象:原型是 prototype ,prototype 只存在于函数对象上\r\n if (!proto) {\r\n return true\r\n }\r\n\r\n proto = val\r\n\r\n while (getPrototypeOf(proto) !== null) {\r\n proto = getPrototypeOf(proto)\r\n }\r\n\r\n return getPrototypeOf(val) === proto\r\n}\r\n\r\nexport default isPlainObject\r\n","/**\r\n * 转义字符串中的 HTML 标签\r\n *\r\n * @param {String} str - 需要转义的字符串\r\n * @returns {String}\r\n */\r\nconst encodeHTML = (str) => {\r\n const CHARTS = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": ''',\r\n '\"': '"'\r\n }\r\n\r\n return str.replace(/[&<>'\"]/g, (tag) => {\r\n return CHARTS[tag] || tag\r\n })\r\n}\r\n\r\nexport default encodeHTML\r\n","import isString from './utils/types/isString'\r\nimport isPlainObject from './utils/types/isPlainObject'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport extend from './utils/lang/extend'\r\nimport later from './utils/lang/later'\r\nimport stripScripts from './utils/lang/stripScripts'\r\nimport encodeHTML from './utils/lang/encodeHTML'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport guid from './utils/lang/guid'\r\n\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport setAttribute from './utils/dom/setAttribute'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\nimport paint from './utils/icons/paint'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\n\r\nconst TYPES = ['info', 'success', 'warning', 'error']\r\nconst instances = []\r\nlet instance\r\n\r\npaint()\r\n\r\nclass Message extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Message.DEFAULTS)\r\n\r\n this.$el = null\r\n this.id = ''\r\n this.closed = false\r\n this.visible = false\r\n this.offset = -50\r\n this.timer = null\r\n this.destroyed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options)\r\n this.id = this.attr('id')\r\n this.offset = this.attr('offset') || -50\r\n\r\n this.$emit('created', { ...this.attr() })\r\n\r\n this.render().addListeners()\r\n\r\n if (this.attr('visible')) {\r\n this.open()\r\n }\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isDestroyed() {\r\n return this.destroyed\r\n }\r\n\r\n _getClassName() {\r\n const type = this.attr('type')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const visible = this.attr('visible')\r\n const customClass = this.attr('customClass')\r\n const className = [\r\n 'outline-message',\r\n `outline-message_${type}`,\r\n `outline-message_${effect}`\r\n ]\r\n\r\n if (round) {\r\n className.push('outline-message_round')\r\n }\r\n\r\n if (!closable) {\r\n className.push('outline-message_full-width')\r\n }\r\n\r\n if (visible) {\r\n className.push('outline-message_visible')\r\n }\r\n\r\n if (customClass) {\r\n className.push(customClass)\r\n }\r\n\r\n return className\r\n }\r\n\r\n render() {\r\n const type = this.attr('type')\r\n const message = this.attr('message')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n const className = this._getClassName()\r\n const iconName = effect === 'light' ? `circle-${type}` : type\r\n const children = []\r\n let iconSize = 20\r\n let $type\r\n let $message\r\n let $text\r\n let $close\r\n let $el\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n\r\n if (effect !== 'plain') {\r\n $type = icon(iconName, {\r\n iconSet: 'outline',\r\n size: iconSize\r\n })\r\n addClass($type, 'outline-message__icon')\r\n children.push($type)\r\n }\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n $text = document.createTextNode(encodeHTML(stripScripts(message)))\r\n } else {\r\n $text = document.createDocumentFragment()\r\n $text.innerHTML = message\r\n }\r\n $message = createElement(\r\n 'p',\r\n {\r\n className: 'outline-message__content'\r\n },\r\n [$text]\r\n )\r\n children.push($message)\r\n\r\n if (closable) {\r\n $close = icon('close', {\r\n iconSet: 'outline',\r\n size: 18\r\n })\r\n addClass($close, 'outline-message__close')\r\n children.push($close)\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: className.join(' ')\r\n },\r\n children\r\n )\r\n $el.style.cssText = `top:-50px;`\r\n this.$el = $el\r\n document.body.appendChild(this.$el)\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n _refreshIcon() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let iconSize = 20\r\n let type\r\n let effect\r\n let round\r\n let iconName\r\n let $icon\r\n let $svg\r\n let $use\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $icon = $el.querySelector('.outline-icon')\r\n\r\n if (!$icon) {\r\n return this\r\n }\r\n\r\n type = this.attr('type')\r\n effect = this.attr('effect')\r\n round = this.attr('round')\r\n\r\n if (effect === 'plain') {\r\n addClass($icon, HIDDEN)\r\n } else {\r\n removeClass($icon, HIDDEN)\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n }\r\n\r\n $svg = $icon.querySelector('.outline-icon__svg')\r\n setAttributes($svg, {\r\n style: `width:${iconSize}px;height:${iconSize}px;`\r\n })\r\n\r\n $use = $svg.querySelector('use')\r\n iconName = effect === 'light' ? `circle-${type}` : type\r\n setAttribute($use, 'xlink:href', `#outline-icon-${iconName}`)\r\n\r\n return this\r\n }\r\n\r\n _refreshMessage() {\r\n const $el = this.$el\r\n let $message\r\n let dangerouslyUseHTMLString\r\n let message\r\n let text\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $message = $el.querySelector('.outline-message__content')\r\n dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n message = this.attr('message')\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n text = encodeHTML(stripScripts(message))\r\n } else {\r\n text = message\r\n }\r\n\r\n $message.innerHTML = text\r\n\r\n return this\r\n }\r\n\r\n _refreshClose() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let $close\r\n let closable\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $close = $el.querySelector('.outline-message__close')\r\n closable = this.attr('closable')\r\n\r\n if ($close) {\r\n if (closable) {\r\n addClass($close, HIDDEN)\r\n } else {\r\n removeClass($close, HIDDEN)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n _refreshEl() {\r\n const $el = this.$el\r\n let className\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n className = this._getClassName()\r\n setAttribute($el, 'className', className.join(' '))\r\n\r\n return this\r\n }\r\n\r\n refresh(options) {\r\n if (!isPlainObject(options)) {\r\n return this\r\n }\r\n\r\n this.attr(options)\r\n ._refreshIcon()\r\n ._refreshMessage()\r\n ._refreshClose()\r\n ._refreshEl()\r\n\r\n return this\r\n }\r\n\r\n clearTimer() {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n this.timer = null\r\n }\r\n\r\n return this\r\n }\r\n\r\n startTimer(duration) {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.timer = later(() => {\r\n this.$emit('opened')\r\n this.close()\r\n }, duration * 1000)\r\n\r\n return this\r\n }\r\n\r\n open(options) {\r\n const $el = this.$el\r\n let offset\r\n let duration\r\n let top\r\n let cssRules\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.isClosed()) {\r\n this.refresh(options)\r\n }\r\n\r\n offset = this.attr('offset')\r\n duration = this.attr('duration')\r\n top = offset && offset >= this.offset ? offset : this.offset\r\n cssRules = `top:${top}px;`\r\n\r\n this.clearTimer()\r\n\r\n this.$emit('beforeOpen')\r\n\r\n later(() => {\r\n this.visible = true\r\n\r\n addClass($el, 'outline-message_visible')\r\n $el.style.cssText = cssRules\r\n\r\n if (duration > 0) {\r\n this.startTimer(duration)\r\n }\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const $el = this.$el\r\n const cssRules = `top:-50px;`\r\n let destroyAfterClosed\r\n let beforeClose\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n destroyAfterClosed = this.attr('destroyAfterClosed')\r\n beforeClose = this.attr('beforeClose')\r\n\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(this)\r\n }\r\n\r\n $el.style.cssText = cssRules\r\n removeClass($el, 'outline-message_visible')\r\n\r\n this.visible = false\r\n this.closed = true\r\n\r\n later(() => {\r\n this.$emit('closed')\r\n\r\n if (destroyAfterClosed) {\r\n this.destroy()\r\n }\r\n }, 500)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.removeListeners()\r\n\r\n document.body.removeChild(this.$el)\r\n\r\n clearTimeout(this.timer)\r\n this._default()\r\n\r\n this.$emit('afterDestroy')\r\n\r\n return this\r\n }\r\n\r\n onMouseEnter() {\r\n this.clearTimer()\r\n return this\r\n }\r\n\r\n onMouseLeave() {\r\n const duration = this.attr('duration')\r\n const delay = this.attr('delay')\r\n\r\n if (duration <= 0) {\r\n return this\r\n }\r\n\r\n this.startTimer(delay)\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.clearTimer()\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseenter',\r\n this.onMouseEnter,\r\n this,\r\n true\r\n )\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseleave',\r\n this.onMouseLeave,\r\n this,\r\n true\r\n )\r\n on($el, '.outline-message__close', 'click', this.onClose, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $el = this.$el\r\n\r\n off($el, 'mouseenter', this.onMouseEnter)\r\n off($el, 'mouseleave', this.onMouseLeave)\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nMessage.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n id: '',\r\n type: 'info',\r\n effect: 'default',\r\n round: false,\r\n offset: 30,\r\n duration: 3,\r\n delay: 2,\r\n message: '',\r\n customClass: '',\r\n closable: true,\r\n visible: true,\r\n dangerouslyUseHTMLString: false,\r\n destroyAfterClosed: true,\r\n beforeClose: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nTYPES.forEach((type) => {\r\n Message[type] = (options) => {\r\n const config = {}\r\n const id = guid(`outline-message-`)\r\n const beforeClose = options.beforeClose || null\r\n let offset = options.offset || 30\r\n\r\n if (isString(options)) {\r\n config.message = options\r\n } else {\r\n if (isPlainObject(options)) {\r\n extend(config, options)\r\n }\r\n }\r\n config.id = id\r\n config.type = type\r\n config.offset = offset\r\n config.visible = false\r\n config.beforeClose = () => {\r\n Message.close(id, beforeClose)\r\n }\r\n\r\n instance = new Message(config)\r\n instances.forEach((item) => {\r\n offset += item.$el.offsetHeight + 16\r\n })\r\n instance.offset = offset\r\n instance.open()\r\n instances.push(instance)\r\n\r\n return instance\r\n }\r\n})\r\n\r\n// 关闭指定 id 消息的静态方法\r\nMessage.close = (id, beforeClose) => {\r\n const len = instances.length\r\n let index = -1\r\n let i\r\n let offsetHeight\r\n\r\n instances.forEach((instance, i) => {\r\n // 在 instances 中通过 id 找到要关闭的消息\r\n if (id === instance.id) {\r\n offsetHeight = instance.$el.offsetHeight\r\n index = i\r\n\r\n // 关闭消息\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(instance)\r\n }\r\n\r\n instances.splice(i, 1)\r\n }\r\n })\r\n\r\n if (len <= 1 || index === -1 || index > instances.length - 1) {\r\n return false\r\n }\r\n\r\n i = index\r\n\r\n // 界面中的消息逐个向上收起\r\n for (; i < len - 1; i += 1) {\r\n const dom = instances[i].$el\r\n\r\n dom.style['top'] = parseInt(dom.style['top'], 10) - offsetHeight - 16 + 'px'\r\n }\r\n}\r\n\r\n// 关闭所有消息的静态方法\r\nMessage.clear = () => {\r\n let i = instances.length - 1\r\n for (; i >= 0; i -= 1) {\r\n instances[i].close()\r\n }\r\n}\r\n\r\nexport default Message\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Command {\r\n constructor(name, action) {\r\n this.name = name\r\n\r\n if (isFunction(action)) {\r\n this.action = action\r\n }\r\n }\r\n\r\n execute() {\r\n this.action()\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Command\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Commands {\r\n constructor() {\r\n this.commands = []\r\n }\r\n\r\n get(name) {\r\n return this.commands.find((cmd) => cmd.name === name)\r\n }\r\n\r\n add(command) {\r\n this.commands.push(command)\r\n\r\n return this\r\n }\r\n\r\n del(name) {\r\n const commands = this.commands\r\n const command = commands.find((cmd) => cmd.name === name)\r\n const index = command ? commands.indexOf(command) : -1\r\n\r\n if (index > -1) {\r\n commands.splice(index, 1)\r\n }\r\n\r\n return this\r\n }\r\n\r\n clear() {\r\n this.commands = []\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n const command = this.commands.find((cmd) => cmd.name === name)\r\n\r\n if (isFunction(command?.execute)) {\r\n command.execute()\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Commands\r\n","import icon from './utils/icons/icon'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\n\r\nconst _createButton = (button, rounded = true) => {\r\n const $icon = icon(button.icon, {\r\n iconSet: button.iconSet || 'outline',\r\n color: button.color || '',\r\n size: button.size\r\n })\r\n const $anchor = createElement(\r\n 'a',\r\n {\r\n className: `outline-toolbar__anchor`,\r\n href: button.link\r\n },\r\n $icon\r\n )\r\n const $button = createElement(\r\n 'div',\r\n {\r\n className: `outline-toolbar__button ${button.name}`,\r\n 'data-cmd': button.name\r\n },\r\n [button.link ? $anchor : $icon]\r\n )\r\n\r\n addClass($icon, 'outline-toolbar__icon')\r\n\r\n if (rounded) {\r\n addClass($button, 'outline-toolbar_rounded')\r\n }\r\n\r\n if (button.disabled) {\r\n addClass($button, 'outline-toolbar_disabled')\r\n }\r\n\r\n return $button\r\n}\r\n\r\nexport default _createButton\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isObject from './utils/types/isObject'\r\nimport isArray from './utils/types/isArray'\r\nimport later from './utils/lang/later'\r\nimport guid from './utils/lang/guid'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport hasClass from './utils/dom/hasClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport Base from './base'\r\nimport Command from './command'\r\nimport Commands from './commands'\r\n\r\nimport _createButton from './_createButton'\r\n\r\nconst DISABLED = 'outline-toolbar_disabled'\r\nconst HIDDEN = 'outline-toolbar_hidden'\r\n\r\nclass Toolbar extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Toolbar.DEFAULTS)\r\n\r\n this.disabled = false\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.buttons = []\r\n this.commands = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.disabled = this.attr('disabled')\r\n this.closed = this.attr('closed')\r\n this.commands = new Commands()\r\n\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n isDisabled(name) {\r\n let button\r\n\r\n if (name) {\r\n button = this.get(name)\r\n\r\n return button.disabled\r\n }\r\n\r\n return this.disabled\r\n }\r\n\r\n isExist(name) {\r\n const button = this.get(name)\r\n return !!button\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n _getCommand(button) {\r\n const _self = this\r\n const { action, name } = button\r\n let command = null\r\n let handler = null\r\n let context\r\n let listener\r\n\r\n if (!action) {\r\n return command\r\n }\r\n\r\n handler = action.handler\r\n context = action.context || this\r\n\r\n if (isFunction(handler)) {\r\n listener = handler\r\n } else if (isString(handler)) {\r\n listener = function () {\r\n _self.$emit(handler, name)\r\n }\r\n }\r\n\r\n if (isFunction(listener)) {\r\n command = new Command(name, listener.bind(context))\r\n }\r\n\r\n return command\r\n }\r\n\r\n get(name) {\r\n return this.buttons.find((button) => button.name === name)\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const buttons = this.attr('buttons') || []\r\n const placement = this.attr('placement')\r\n\r\n paint()\r\n\r\n this.$el = createElement('div', {\r\n id: guid('outline-toolbar'),\r\n className: `outline-toolbar outline-toolbar_${placement}`\r\n })\r\n this._paint(buttons)\r\n document.body.appendChild(this.$el)\r\n\r\n if (this.closed) {\r\n this.hide()\r\n }\r\n\r\n if (this.disabled) {\r\n this.disable()\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$el.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(buttons) {\r\n const rounded = this.attr('rounded')\r\n const $fragment = document.createDocumentFragment()\r\n\r\n buttons.forEach((button) => {\r\n const $button = _createButton(button, rounded)\r\n const command = this._getCommand(button)\r\n const { name, disabled, context } = button\r\n\r\n $fragment.appendChild($button)\r\n\r\n if (!this.isExist(name)) {\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n })\r\n\r\n this.$el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(buttons) {\r\n this.attr({ buttons })\r\n this.erase()._paint(buttons)\r\n return this\r\n }\r\n\r\n add(button) {\r\n const $el = this.$el\r\n const $fragment = document.createDocumentFragment()\r\n const buttons = this.attr('buttons') || []\r\n const { name, disabled, context } = button\r\n const command = this._getCommand(button)\r\n const _add = (button) => {\r\n const $button = _createButton(button)\r\n\r\n $fragment.appendChild($button)\r\n\r\n buttons.push(button)\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this,\r\n command\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n\r\n if (isObject(button)) {\r\n _add(button)\r\n } else if (isArray(button)) {\r\n button.forEach((item) => {\r\n if (isObject(item)) {\r\n _add(item)\r\n }\r\n })\r\n }\r\n $el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n remove(name) {\r\n const $el = this.$el\r\n const buttons = this.buttons\r\n const button = this.get(name)\r\n let index = -1\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n index = buttons.indexOf(button)\r\n\r\n if (index > -1) {\r\n buttons.splice(index, 1)\r\n this.attrs('buttons').splice(index, 1)\r\n }\r\n\r\n this._disable(name)\r\n $el.removeChild(button.$el)\r\n\r\n return this\r\n }\r\n\r\n _disable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = true\r\n\r\n if (command) {\r\n this.commands.del(command)\r\n }\r\n\r\n addClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n _enable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || !button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = false\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n\r\n removeClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n disable(name) {\r\n const disabled = this.attr('afterDisabled')\r\n\r\n if (name) {\r\n this._disable(name)\r\n } else {\r\n addClass(this.$el, DISABLED)\r\n this.removeListeners()\r\n this.disabled = true\r\n\r\n if (isFunction(disabled)) {\r\n disabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n enable(name) {\r\n const enabled = this.attr('afterEnabled')\r\n\r\n if (name) {\r\n this._enable(name)\r\n } else {\r\n this.disabled = false\r\n removeClass(this.$el, DISABLED)\r\n this.addListeners()\r\n\r\n if (isFunction(enabled)) {\r\n enabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n show(name) {\r\n const opened = this.attr('afterOpened')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n removeClass(button.$el, HIDDEN)\r\n } else {\r\n removeClass($el, HIDDEN)\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n later(() => {\r\n opened.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide(name) {\r\n const closed = this.attr('afterClosed')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n addClass(button.$el, HIDDEN)\r\n } else {\r\n addClass($el, HIDDEN)\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n later(() => {\r\n closed.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n highlight(name) {\r\n const button = this.get(name)\r\n const ACTIVE = 'outline-toolbar_active'\r\n let $button\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n $button = button.$el\r\n\r\n if (hasClass($button, ACTIVE)) {\r\n removeClass($button, ACTIVE)\r\n } else {\r\n addClass($button, ACTIVE)\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.commands.clear()\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n if (this.isDisabled(name)) {\r\n return this\r\n }\r\n\r\n this.commands.execute(name)\r\n\r\n return this\r\n }\r\n\r\n onExecute(evt) {\r\n const $button = evt.delegateTarget\r\n let cmd = ''\r\n\r\n if ($button) {\r\n cmd = $button.getAttribute('data-cmd')\r\n\r\n if (cmd) {\r\n this.execute(cmd)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n on($el, `.outline-toolbar__button`, 'click', this.onExecute, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n off($el, '.outline-toolbar__button', this.onExecute)\r\n\r\n return this\r\n }\r\n}\r\n\r\nToolbar.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'ltr',\r\n closed: false,\r\n disabled: false,\r\n rounded: true,\r\n buttons: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterDisabled: null,\r\n afterEnabled: null,\r\n beforeDestroy: null,\r\n afterDestroy: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Toolbar\r\n","import addClass from './utils/dom/addClass'\r\n\r\nconst _updateSiblingElements = (siblingElement, isPrev) => {\r\n let tagName\r\n let $sibling = siblingElement\r\n\r\n while ($sibling) {\r\n tagName = $sibling.tagName.toLowerCase()\r\n\r\n if (tagName !== 'script' && tagName !== 'style') {\r\n addClass($sibling, 'outline-reader_sibling')\r\n }\r\n\r\n if (isPrev) {\r\n $sibling = $sibling.previousElementSibling\r\n } else {\r\n $sibling = $sibling.nextElementSibling\r\n }\r\n }\r\n}\r\n\r\nexport default _updateSiblingElements\r\n","import cloneDeep from './utils/lang/cloneDeep'\r\nimport later from './utils/lang/later'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport isFunction from './utils/types/isFunction'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport at from './utils/event/at'\r\nimport stop from './utils/event/stop'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\nimport Message from './message'\r\nimport Toolbar from './toolbar'\r\n\r\nimport _updateSiblingElements from './_updateSiblingElements'\r\n\r\nconst ENTER_READING_TIP = '进入阅读模式,按 ESC 键可退出阅读模式'\r\n\r\nclass Reader extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Reader.DEFAULTS)\r\n this.reading = false\r\n\r\n this.$target = null\r\n this.$paper = null\r\n this.$title = null\r\n this.$article = null\r\n this.$progress = null\r\n\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let target = null\r\n\r\n this.attr(options)\r\n\r\n target = this.attr('target')\r\n\r\n if (isString(target)) {\r\n this.$target = document.querySelector(target)\r\n } else if (isElement(target)) {\r\n this.$target = target\r\n }\r\n\r\n if (!this.$target) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n this._renderEdge()._paint(this.$target)\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$article.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint($content) {\r\n const $fragment = document.createDocumentFragment()\r\n const $children = [...$content.cloneNode(true).children]\r\n\r\n later(() => {\r\n $children.forEach(($child) => {\r\n $fragment.appendChild($child)\r\n })\r\n\r\n this.$article.appendChild($fragment)\r\n })\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const $paper = this.$paper\r\n const toolbar = this.toolbar\r\n\r\n if ($paper) {\r\n document.body.removeChild($paper)\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n this.erase()._paint(this.$target)\r\n return this\r\n }\r\n\r\n _renderEdge() {\r\n const $target = this.$target\r\n let title = this.attr('title')\r\n let $paper\r\n let $title\r\n let $article\r\n let $progress\r\n let $sibling\r\n\r\n $title = $target.querySelector('h1')\r\n\r\n if (isElement(title)) {\r\n $title = title\r\n }\r\n\r\n if (isElement($title)) {\r\n title = $title.innerText\r\n }\r\n\r\n $title = createElement(\r\n 'h1',\r\n {\r\n className: 'outline-reader__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n\r\n $article = createElement('article', {\r\n id: 'outline-reader__article',\r\n className: 'outline-reader__article'\r\n })\r\n this.$article = $article\r\n\r\n $progress = createElement('div', {\r\n className: 'outline-reader__progress'\r\n })\r\n this.$progress = $progress\r\n\r\n this.toolbar = new Toolbar({\r\n placement: 'rtl',\r\n buttons: [\r\n {\r\n name: 'print',\r\n icon: 'print',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.print\r\n }\r\n },\r\n {\r\n name: 'exit',\r\n icon: 'close',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.exit\r\n }\r\n }\r\n ]\r\n })\r\n\r\n $paper = createElement(\r\n 'section',\r\n {\r\n id: 'outline-reader',\r\n className: 'outline-reader outline-reader_hidden'\r\n },\r\n [$progress, $title, $article, this.toolbar.$el]\r\n )\r\n this.$paper = $paper\r\n\r\n document.body.appendChild($paper)\r\n\r\n later(() => {\r\n // 设置邻居节点的打印样式\r\n $sibling = $paper.previousElementSibling\r\n _updateSiblingElements($sibling, true)\r\n\r\n $sibling = $paper.nextElementSibling\r\n _updateSiblingElements($sibling)\r\n })\r\n\r\n return this\r\n }\r\n\r\n enter() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n const enterReadingTip = this.attr('enterReadingTip') || ENTER_READING_TIP\r\n\r\n if (this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n $siblings.forEach(($sibling) => {\r\n addClass($sibling, HIDDEN)\r\n })\r\n addClass($paper, READING)\r\n removeClass($paper, HIDDEN)\r\n this.toolbar.show()\r\n this.reading = true\r\n\r\n Message.info({\r\n round: true,\r\n message: enterReadingTip\r\n })\r\n\r\n this.$emit('enterReading')\r\n\r\n return this\r\n }\r\n\r\n exit() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n\r\n if (!this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n addClass($paper, HIDDEN)\r\n removeClass($paper, READING)\r\n $siblings.forEach(($sibling) => {\r\n removeClass($sibling, HIDDEN)\r\n })\r\n this.toolbar.hide()\r\n this.reading = false\r\n\r\n this.$emit('exitReading')\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.reading) {\r\n this.exit()\r\n } else {\r\n this.enter()\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n if (!isFunction(print)) {\r\n return this\r\n }\r\n\r\n print()\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n return this\r\n }\r\n\r\n onPrint() {\r\n this.print()\r\n return this\r\n }\r\n\r\n onEnterReading() {\r\n this.toggle()\r\n return this\r\n }\r\n\r\n onExitReading(evt) {\r\n const keyCode = evt.keyCode\r\n\r\n if (keyCode === 27 && this.reading) {\r\n this.toggle()\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n at(document, 'keyup', this.onExitReading, this, true)\r\n\r\n this.$on('toolbar:action:print', this.onPrint)\r\n this.$on('toolbar:action:reading', this.onEnterReading)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n off(document, 'keyup', this.onExitReading)\r\n\r\n this.$off('toolbar:action:print')\r\n this.$off('toolbar:action:reading')\r\n\r\n return this\r\n }\r\n}\r\n\r\nReader.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n target: '',\r\n title: '',\r\n enterReadingTip: ENTER_READING_TIP\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Reader\r\n","import later from './utils/lang/later'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport toTree from './utils/lang/toTree'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport scrollTo from './utils/dom/scrollTo'\r\nimport _getScrollElement from './utils/dom/_getScrollElement'\r\n\r\nimport Base from './base'\r\nimport Anchors from './anchors'\r\nimport Drawer from './drawer'\r\nimport Chapters from './chapters'\r\nimport Reader from './reader'\r\nimport Toolbar from './toolbar'\r\n\r\nimport getChapters from './getChapters'\r\n\r\nclass Outline extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n const options = Outline.DEFAULTS\r\n\r\n this.attrs = cloneDeep(options)\r\n this.$article = null\r\n this.$scrollElement = null\r\n this.buttons = []\r\n\r\n this.anchors = null\r\n this.drawer = null\r\n this.chapters = null\r\n this.reader = null\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let articleElement = ''\r\n let scrollElement = ''\r\n let $article = null\r\n\r\n this.attr(options)\r\n\r\n articleElement = this.attr('articleElement')\r\n scrollElement = this.attr('scrollElement')\r\n\r\n if (isString(articleElement)) {\r\n $article = document.querySelector(articleElement)\r\n } else if (isElement(articleElement)) {\r\n $article = articleElement\r\n }\r\n this.$article = $article\r\n this.$scrollElement = _getScrollElement(scrollElement)\r\n\r\n this.$emit('created', { ...this.attr() })\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n getChapters(isTreeStructured = false) {\r\n const $article = this.$article\r\n const selector = this.attr('selector')\r\n const showCode = this.attr('showCode') || true\r\n const chapterTextFilter = this.attr('chapterTextFilter')\r\n let $headings = []\r\n let chapters = []\r\n\r\n if (!$article) {\r\n return chapters\r\n }\r\n\r\n $headings = [...$article.querySelectorAll(selector)]\r\n chapters = getChapters($headings, showCode, chapterTextFilter)\r\n\r\n return isTreeStructured ? toTree(chapters, 'id', 'pid') : chapters\r\n }\r\n\r\n count() {\r\n return this.getChapters().length\r\n }\r\n\r\n render() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n const $scrollElement = this.$scrollElement\r\n\r\n this._renderReader()._renderAnchors()._renderChapters()._renderToolbar()\r\n\r\n if ($scrollElement && hasToolbar) {\r\n this._updateToolbar({\r\n top: $scrollElement.scrollTop,\r\n min: 0,\r\n max: $scrollElement.scrollHeight\r\n })\r\n }\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n const chapters = this.getChapters()\r\n\r\n this.anchors.refresh(chapters)\r\n this.chapters.refresh(chapters)\r\n this.reader.refresh()\r\n\r\n return this\r\n }\r\n\r\n _renderReader() {\r\n const option = this.attr('reader')\r\n\r\n if (!option.target) {\r\n return this\r\n }\r\n\r\n addClass(this.$article, 'outline-article')\r\n\r\n this.reader = new Reader(option)\r\n\r\n return this\r\n }\r\n\r\n _renderAnchors() {\r\n const articleElement = this.attr('articleElement')\r\n const selector = this.attr('selector')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const scrollElement = this.attr('scrollElement')\r\n const showCode = this.attr('showCode')\r\n const anchorURL = this.attr('anchorURL')\r\n const afterScroll = this.attr('afterScroll')\r\n const chapterTextFilter = this.attr('chapterTextFilter')\r\n\r\n this.anchors = new Anchors({\r\n articleElement,\r\n stickyHeight,\r\n scrollElement,\r\n selector,\r\n showCode,\r\n anchorURL,\r\n afterScroll,\r\n chapterTextFilter\r\n })\r\n\r\n return this\r\n }\r\n\r\n _renderChapters() {\r\n const title = this.attr('title')\r\n const stickyHeight = this.attr('stickyHeight')\r\n const scrollElement = this.attr('scrollElement')\r\n const customClass = this.attr('customClass')\r\n const showCode = this.attr('showCode')\r\n const animationCurrent = this.attr('animationCurrent')\r\n const closeOnClickModal = this.attr('closeOnClickModal')\r\n const showNavModalFirst = this.attr('showNavModalFirst')\r\n const position = this.attr('position')\r\n const placement = this.attr('placement')\r\n const afterSticky = this.attr('afterSticky')\r\n const afterToggle = this.attr('afterToggle')\r\n const afterScroll = this.attr('afterScroll')\r\n const count = this.count()\r\n let parentElement = this.attr('parentElement')\r\n let CHAPTERS_OPTIONS\r\n\r\n if (count < 1) {\r\n return this\r\n }\r\n\r\n CHAPTERS_OPTIONS = {\r\n scrollElement,\r\n showCode,\r\n animationCurrent,\r\n position,\r\n title,\r\n stickyHeight,\r\n chapters: this.getChapters(),\r\n afterSticky,\r\n afterToggle,\r\n afterScroll\r\n }\r\n\r\n if (position === 'relative') {\r\n this.drawer = new Drawer({\r\n placement,\r\n title,\r\n size: 'tiny',\r\n hasOffset: true,\r\n hasPadding: false,\r\n closeOnClickModal,\r\n customClass,\r\n afterClosed: () => {\r\n const toolbar = this.toolbar\r\n toolbar.toggle()\r\n }\r\n })\r\n parentElement = this.drawer.$main\r\n\r\n if (showNavModalFirst) {\r\n this.drawer.open()\r\n }\r\n } else {\r\n CHAPTERS_OPTIONS.customClass = customClass\r\n }\r\n\r\n CHAPTERS_OPTIONS.parentElement = parentElement\r\n this.chapters = new Chapters(CHAPTERS_OPTIONS)\r\n\r\n return this\r\n }\r\n\r\n _renderToolbar() {\r\n const position = this.attr('position')\r\n const hasToolbar = this.attr('hasToolbar')\r\n const showNavModalFirst = this.attr('showNavModalFirst')\r\n const placement = this.attr('placement')\r\n const homepage = this.attr('homepage')\r\n const git = this.attr('git')\r\n const tags = this.attr('tags')\r\n const issues = this.attr('issues')\r\n const tools = this.attr('tools')\r\n const option = this.attr('reader')\r\n const count = this.count()\r\n const UP = {\r\n name: 'up',\r\n icon: 'up',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.toTop\r\n }\r\n }\r\n const HOME = {\r\n name: 'homepage',\r\n icon: 'homepage',\r\n size: 20,\r\n link: homepage\r\n }\r\n const GIT = {\r\n name: 'github',\r\n icon: 'github',\r\n size: 20,\r\n link: git\r\n }\r\n const TAGS = {\r\n name: 'tags',\r\n icon: 'tags',\r\n size: 20,\r\n link: tags\r\n }\r\n const ISSUES = {\r\n name: 'issues',\r\n icon: 'issues',\r\n size: 20,\r\n link: issues\r\n }\r\n const MENU = {\r\n name: 'toggle',\r\n icon: 'menu',\r\n size: 18,\r\n action: {\r\n context: this,\r\n handler: this.toggle\r\n }\r\n }\r\n const READING = {\r\n name: 'reading',\r\n icon: 'file',\r\n size: 18,\r\n action: {\r\n context: this,\r\n handler: 'toolbar:action:reading'\r\n }\r\n }\r\n const PRINT = {\r\n name: 'print',\r\n icon: 'print',\r\n size: 20,\r\n action: {\r\n handler: 'toolbar:action:print'\r\n }\r\n }\r\n const DOWN = {\r\n name: 'down',\r\n icon: 'down',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.toBottom\r\n }\r\n }\r\n const buttons = []\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n buttons.push(UP)\r\n if (count > 0) {\r\n buttons.push(MENU)\r\n }\r\n if (homepage) {\r\n buttons.push(HOME)\r\n }\r\n if (git) {\r\n buttons.push(GIT)\r\n }\r\n if (tags) {\r\n buttons.push(TAGS)\r\n }\r\n if (issues) {\r\n buttons.push(ISSUES)\r\n }\r\n if (option.target) {\r\n buttons.push(READING)\r\n if (isFunction(print)) {\r\n buttons.push(PRINT)\r\n }\r\n }\r\n if (tools?.length > 0) {\r\n buttons.push(...tools)\r\n }\r\n buttons.push(DOWN)\r\n this.buttons = [...buttons]\r\n\r\n this.toolbar = new Toolbar({\r\n placement,\r\n buttons\r\n })\r\n\r\n if (position === 'relative' && showNavModalFirst) {\r\n this.toolbar.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n addButton(button) {\r\n const toolbar = this.toolbar\r\n const buttons = this.buttons\r\n buttons.splice(-1, 0, button)\r\n toolbar.attr({\r\n buttons\r\n })\r\n toolbar.refresh()\r\n return this\r\n }\r\n\r\n removeButton(name) {\r\n this.toolbar.remove(name)\r\n return this\r\n }\r\n\r\n toTop() {\r\n const afterScroll = this.attr('afterScroll')\r\n const toolbar = this.toolbar\r\n const chapters = this.chapters\r\n const count = this.count()\r\n const afterTop = () => {\r\n toolbar.hide('up')\r\n toolbar.show('down')\r\n\r\n if (count > 0) {\r\n chapters.highlight(0)\r\n chapters.playing = false\r\n }\r\n\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(toolbar, 'up')\r\n }\r\n }\r\n\r\n if (count > 0) {\r\n chapters.playing = true\r\n }\r\n this.scrollTo(0, afterTop)\r\n\r\n return this\r\n }\r\n\r\n _updateToolbar({ top, min, max }) {\r\n const toolbar = this.toolbar\r\n const current = Math.ceil(top)\r\n\r\n if (current <= min) {\r\n toolbar.hide('up')\r\n toolbar.show('down')\r\n } else if (current >= max) {\r\n toolbar.hide('down')\r\n toolbar.show('up')\r\n } else if (current > min && current < max) {\r\n toolbar.show('up')\r\n toolbar.show('down')\r\n }\r\n\r\n return this\r\n }\r\n\r\n toBottom() {\r\n const afterScroll = this.attr('afterScroll')\r\n const $scrollElement = this.$scrollElement\r\n const toolbar = this.toolbar\r\n const chapters = this.chapters\r\n const count = this.count()\r\n const top = Math.floor(\r\n $scrollElement.scrollHeight - $scrollElement.clientHeight\r\n )\r\n const afterDown = () => {\r\n toolbar.hide('down')\r\n toolbar.show('up')\r\n\r\n if (count > 0) {\r\n chapters.highlight(count - 1)\r\n chapters.playing = false\r\n }\r\n\r\n if (isFunction(afterScroll)) {\r\n afterScroll.call(toolbar, 'bottom')\r\n }\r\n }\r\n\r\n if (count > 0) {\r\n chapters.playing = true\r\n }\r\n\r\n this.scrollTo(top, afterDown)\r\n\r\n return this\r\n }\r\n\r\n scrollTo(top, afterScroll) {\r\n scrollTo(this.$scrollElement, top, afterScroll)\r\n return this\r\n }\r\n\r\n enterReading() {\r\n const reader = this.reader\r\n\r\n if (!reader || reader.reading) {\r\n return this\r\n }\r\n\r\n this.toolbar.toggle()\r\n reader.enter()\r\n\r\n return this\r\n }\r\n\r\n exitReading() {\r\n const reader = this.reader\r\n\r\n if (!reader || !reader.reading) {\r\n return this\r\n }\r\n\r\n this.toolbar.toggle()\r\n reader.exit()\r\n\r\n return this\r\n }\r\n\r\n switchReading() {\r\n const reader = this.reader\r\n\r\n if (!reader) {\r\n return this\r\n }\r\n\r\n reader.toggle()\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n const position = this.attr('position')\r\n const toolbar = this.toolbar\r\n const drawer = this.drawer\r\n const chapters = this.chapters\r\n const count = this.count()\r\n\r\n if (count < 1) {\r\n return this\r\n }\r\n\r\n if (position !== 'relative') {\r\n chapters.toggle()\r\n toolbar.highlight('toggle')\r\n } else {\r\n toolbar.toggle()\r\n\r\n later(() => {\r\n drawer.toggle()\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n this.reader.print()\r\n\r\n return this\r\n }\r\n\r\n _destroy() {\r\n const count = this.count()\r\n let anchors = this.anchors\r\n let chapters = this.chapters\r\n let drawer = this.drawer\r\n let reader = this.reader\r\n let toolbar = this.toolbar\r\n let isOutside = false\r\n\r\n this.removeListeners()\r\n\r\n if (reader) {\r\n reader.destroy()\r\n }\r\n\r\n if (count > 0 && chapters) {\r\n isOutside = chapters.isOutside()\r\n\r\n chapters.destroy()\r\n\r\n if (isOutside && drawer) {\r\n drawer.destroy()\r\n }\r\n }\r\n\r\n if (anchors) {\r\n anchors.destroy()\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n this._destroy()._default()\r\n\r\n this.$emit('destroyed')\r\n\r\n return this\r\n }\r\n\r\n onToolbarUpdate({ top, min, max }) {\r\n this._updateToolbar({ top, min, max })\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n this.$on('toolbar:update', this.onToolbarUpdate)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const hasToolbar = this.attr('hasToolbar')\r\n\r\n if (!hasToolbar) {\r\n return this\r\n }\r\n\r\n this.$off('toolbar:update')\r\n\r\n return this\r\n }\r\n}\r\n\r\nOutline.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n articleElement: '#article',\r\n selector: 'h2,h3,h4,h5,h6',\r\n parentElement: '#aside',\r\n scrollElement: 'html,body',\r\n title: '目录',\r\n position: 'relative',\r\n placement: 'rtl',\r\n animationCurrent: true,\r\n showCode: true,\r\n hasToolbar: true,\r\n closeOnClickModal: true,\r\n showNavModalFirst: false,\r\n anchorURL: '',\r\n stickyHeight: 0,\r\n homepage: '',\r\n git: '',\r\n tags: '',\r\n issues: '',\r\n tools: [],\r\n reader: {\r\n target: '',\r\n title: '',\r\n enterReadingTip: '进入阅读模式,按 ESC 键可退出阅读模式'\r\n },\r\n customClass: '',\r\n afterSticky: null,\r\n afterToggle: null,\r\n afterScroll: null,\r\n chapterTextFilter: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nif (window?.jQuery) {\r\n const $ = window.jQuery\r\n\r\n // 将 Outline 扩展为一个 jquery 插件\r\n // eslint-disable-next-line no-undef\r\n $.extend($.fn, {\r\n outline: function (options) {\r\n // eslint-disable-next-line no-undef\r\n let $article = $(this)\r\n\r\n return new Outline(\r\n // eslint-disable-next-line no-undef\r\n $.extend({}, options, {\r\n articleElement: $article\r\n })\r\n )\r\n }\r\n })\r\n}\r\n\r\nexport default Outline\r\n"],"names":["toString","val","Object","prototype","apply","isFunction","later","fn","delay","arguments","length","undefined","setTimeout","isObject","o","isArray","Array","cloneDeep","obj","clone","from","assign","keys","forEach","key","toTree","list","nodeKey","parentKey","map","roots","item","i","children","node","push","isString","str","isElement","nodeName","tagName","nodeType","hasClass","el","className","pattern","RegExp","allClass","classList","contains","exec","addClass","_classList","add","easeInQuad","x","_getScrollElement","$rootElements","$scrollElement","scrollElement","document","querySelector","querySelectorAll","scrollTop","scrollTo","top","afterStop","step","distance","MAX_HEIGHT","scrollHeight","MAX_TOP","stop","play","requestAnimationFrame","hasOwn","prop","hasOwnProperty","call","extend","origin","source","_subscribers","_hasDirectSubscribersFor","topic","has","found","position","lastIndexOf","substring","_hasSubscribers","emit","data","async","execute","subscriber","message","indexOf","callback","context","deliver","guid","uuid","prefix","_removeSubscriber","off","token","subject","execution","j","splice","_removeSubscriberByToken","Base","constructor","options","this","attrs","initialize","attr","render","addListeners","value","refresh","destroy","removeListeners","reload","$emit","event","publish","$on","handler","subscribe","$off","unsubscribe","queue","isHandling","done","runIdle","idleDeadline","timeRemaining","shift","requestIdleCallback","window","cb","start","Date","now","didTimeout","Math","max","cancelIdleCallback","id","clearTimeout","timeSlice","afterComplete","offsetTop","offsetParent","matches","selector","sel","replace","msMatchesSelector","getParentOrHost","host","parentNode","CAPTURE_EVENTS","_off","type","capture","_delegateListener","listeners","_listeners","index","listener","_delete","removeEventListener","purgeElement","recurse","$element","$children","childNodes","getListeners","filter","$child","on","once","evt","target","getTarget","delegateTarget","closest","ctx","includeCTX","startsWith","overrideContext","addEventListener","stopPropagation","preventDefault","SYMBOLS","getSymbols","name","iconSet","patternName","patternSet","find","symbol","fullName","getSymbol","paint","$body","body","$icons","symbols","innerHTML","join","createElement","insertBefore","firstChild","trim","isDOM","isHTMLCollection","fragment","isTextNode","setAttribute","toLowerCase","style","cssText","innerText","setAttributes","$fragment","createDocumentFragment","$el","isValidChild","child","append","createTextNode","appendChild","every","ICON","size","color","width","height","defaultRules","cssRules","$icon","$svg","binds","svg","test","isSVG","xmlns","class","icon","removeClass","remove","_removeHeading","$heading","hasAnchor","isAtStart","CLS_HEADING","text","$anchor","removeAttribute","removeChild","getChapters","headings","showCode","chapterTextFilter","previous","level","chapters","heading","headingLevel","current","parseInt","pid","_getChapterParentIdByDiffer","differ","rel","groups","group","JSON","stringify","code","String","c","subjects","_getChaptersWithCode","Anchors","super","_default","DEFAULTS","$articleElement","$headings","created","articleElement","isTreeStructured","count","mounted","_paint","erase","_remove","LIMIT","anchorURL","update","chapterCode","_updateHeading","headingId","href","groupIndex","after","beforeDestroy","afterDestroy","onAnchorTrigger","afterScroll","stickyHeight","clientHeight","min","TAGS","isHTML","html","basic","full","slice","tag","stripScripts","setProperty","documentElement","zIndex","idx","Drawer","title","closed","$modal","$header","$title","$close","$main","$footer","$overlay","setTitle","isClosed","placement","hasClose","hasOverlay","hasOffset","hasPadding","autoHeight","customClass","content","$content","strHTML","template","open","opened","close","toggle","afterToggle","onClose","closeOnClickModal","afterClosed","afterOpened","at","getStyle","ruleName","getComputedStyle","Chapters","scrollTimer","resizeTimer","observerTimer","Observer","$list","$placeholder","$parentElement","$active","active","offsetWidth","playing","parentElement","$parent","isSticky","isFixed","isInside","isOutside","_paintEdge","animationCurrent","contents","calculateStickyHeight","highlight","sticky","onObserver","clones","parts","byId","chapter","$text","$link","$code","$li","$subject","$chapter","_paintChapters","_getPlaceholderOffset","mainPaddingTop","mainBorderTop","placeholderPaddingTop","placeholderMarginTop","placeholderBorderTop","offsetHeight","positionPlaceholder","ACTIVE","HIGHLIGHT","placeholderOffsetTop","getAttribute","inBounding","parent","parentRect","childRect","getBoundingClientRect","right","bottom","left","afterSticky","FIXED","isStickying","innerHeight","show","HIDDEN","hide","props","root","rootMargin","IntersectionObserver","entries","entry","intersectionRatio","$root","section","observe","intersection","onSelect","split","onScroll","onResize","unobserve","isPlainObject","getPrototypeOf","proto","isObjectLike","encodeHTML","CHARTS","instances","instance","Message","visible","offset","timer","destroyed","isDestroyed","_getClassName","effect","round","closable","dangerouslyUseHTMLString","$type","$message","iconSize","_refreshIcon","iconName","$use","_refreshMessage","_refreshClose","_refreshEl","clearTimer","startTimer","duration","destroyAfterClosed","beforeClose","onMouseEnter","onMouseLeave","config","len","dom","clear","Command","action","Commands","commands","get","cmd","command","del","_createButton","button","rounded","link","$button","disabled","DISABLED","Toolbar","buttons","isDisabled","isExist","_getCommand","_self","bind","disable","_add","_disable","_enable","enable","enabled","onExecute","afterDisabled","afterEnabled","_updateSiblingElements","siblingElement","isPrev","$sibling","previousElementSibling","nextElementSibling","ENTER_READING_TIP","Reader","reading","$target","$paper","$article","$progress","toolbar","_renderEdge","cloneNode","print","exit","enter","READER","READING","$siblings","enterReadingTip","info","onPrint","onEnterReading","onExitReading","keyCode","Outline","anchors","drawer","reader","hasToolbar","_renderReader","_renderAnchors","_renderChapters","_renderToolbar","_updateToolbar","option","showNavModalFirst","CHAPTERS_OPTIONS","homepage","git","tags","issues","tools","UP","toTop","HOME","GIT","ISSUES","MENU","PRINT","DOWN","toBottom","addButton","removeButton","afterTop","_ref","ceil","floor","afterDown","enterReading","exitReading","switchReading","_destroy","onToolbarUpdate","_ref2","_window","jQuery","$","outline"],"mappings":"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"} \ No newline at end of file diff --git a/reader.js b/reader.js index e667a88..9b65dcc 100644 --- a/reader.js +++ b/reader.js @@ -153,6 +153,15 @@ class Reader extends Base { this.toolbar = new Toolbar({ placement: 'rtl', buttons: [ + { + name: 'print', + icon: 'print', + size: 20, + action: { + context: this, + handler: this.print + } + }, { name: 'exit', icon: 'close', diff --git a/reader.min.js b/reader.min.js index e19f3d7..e0b0448 100644 --- a/reader.min.js +++ b/reader.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Reader=e()}(this,(function(){"use strict";const t=t=>Object.prototype.toString.apply(t),e=e=>"function"==typeof e||"[object Function]"===t(e),s=s=>("[object Object]"===t(s)||"object"==typeof s||e(s))&&null!==s,i=e=>Array.isArray?Array.isArray(e):"[object Array]"===t(e),n=t=>{let e={};return null===t?null:(i(t)?e=Array.from(t):(e=Object.assign({},t),Object.keys(e).forEach((i=>e[i]=s(t[i])?n(t[i]):t[i]))),e)},r=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return!!e(t)&&setTimeout((()=>{t()}),s)},o=t=>"string"==typeof t,l=t=>!!(s(t)&&t.nodeName&&t.tagName&&1===t.nodeType),a=e=>{return!(!s(e)||!(l(e)||(e=>!(!s(e)||"[object NodeList]"!==t(e)))(e)||(i=e,s(i)&&"[object DocumentFragment]"===t(i))||(e=>!(!s(e)||!("[object Text]"===t(e)||e.tagName&&3===e.nodeType)))(e)));var i},h=(t,e)=>{const s=Object.prototype.hasOwnProperty;return t&&s.call(t,e)},c=(t,e,s)=>{let i=t.tagName.toLowerCase();switch(e){case"style":t.style.cssText=s;break;case"value":"input"===i||"textarea"===i?t.value=s:t.setAttribute(e,s);break;case"htmlFor":t.setAttribute("for",s);break;case"className":t.className=s;break;case"innerHTML":t.innerHTML=s;break;case"innerText":t.innerText=s;break;default:t.setAttribute(e,s)}},d=(t,e)=>{if(!t||!s(e))return!1;Object.keys(e).forEach((s=>{const i=e[s];h(e,s)&&c(t,s,i)}))},u=(t,e,n)=>{const r=document.createDocumentFragment(),l=document.createElement(t),h=t=>a(t)||o(t),c=t=>{let e;if(!h(t))return!1;a(t)?e=t:o(t)&&(e=document.createTextNode(t)),r.appendChild(e)};return s(e)?d(l,e):i(e)&&e.every((t=>h(t)))?e.forEach((t=>{c(t)})):a(e)?c(e):o(e)&&c(document.createTextNode(e)),i(n)?n.forEach((t=>{c(t)})):c(n),l.appendChild(r),l},m=(t,e)=>{const s=new RegExp("(\\s|^)"+e+"(\\s|$)");let i,n;return!!l(t)&&(i=t.className,!!i&&(n=t.classList,n&&n.contains?t.classList.contains(e):!!s.exec(i)))},p=(t,e)=>{var s;let i,n;if(m(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.add?i.add(e):(n=t.className,n+=n.length>0?" "+e:e,t.className=n)},f=(t,e)=>{var s;let i,n=t.className;if(!n||!m(t,e))return!1;var r;i=t.classList,null!==(s=i)&&void 0!==s&&s.remove?i.remove(e):(r=n.replace(e,""),n=!!o(r)&&r.replace(/(^\s+)|(\s+$)/g,""),t.className=n)},b=["focusout","blur","focusin","focus","load","unload","mouseenter","mouseleave"],g=(t,e,s)=>{const i=b.indexOf(e)>-1;s._delegateListener&&delete(s=s._delegateListener)._delegateListener,function(t,e,s){const i=t._listeners;let n=-1;if(i.length<1)return!1;i.forEach(((t,i)=>{const r=t.fn;e===t.type&&(n=i,r===s&&(n=i))})),n>-1&&i.splice(n,1)}(t,e,s),t.removeEventListener(e,s,i)},y=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=o(t)?document.querySelector(t):t,n=i.childNodes,r=((t,e)=>{let s=t._listeners||[];return o(e)&&e&&(s=s.filter((t=>t.type===e))),s})(i,e);r.forEach((t=>{g(i,t.type,t.fn)})),(s||!0===e||1===arguments.length)&&i&&n&&n.forEach((t=>{l(t)&&y(t,e,s)}))},v=(t,s,i)=>{if(!e(i))return y(t,s),!1;g(t,s,i)},_=(t,e)=>{Object.keys(e).forEach((s=>{h(e,s)&&(t[s]=e[s])}))},$={},x=t=>h($,t)&&$[t].length>0,z=function(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?x(t):(t=>{let e=x(t),s=t.lastIndexOf(".");for(;!e&&-1!==s;)s=(t=t.substring(0,s)).lastIndexOf("."),e=x(t);return e})(t)},L=function(e,s){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const n=e=>{if(!x(e))return!1;$[e].forEach((e=>{const i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object BigInt64Array]","[object BigUint64Array]"].indexOf(t(s))>-1?s.toString():s;e.callback.call(e.context||e,i)}))},r=()=>{let t=e,s=e.lastIndexOf(".");for(;-1!==s;)t=t.substring(0,s),s=t.lastIndexOf("."),n(t);n(e),n("*")};if(!z(e))return!1;i?setTimeout(r,10):r()},M=(()=>{let t=0;return e=>(t+=1,e?e+"-"+t:"guid-"+t)})(),E=t=>{if(!h($,t))return!1;delete $[t]},C=(t,e)=>{if(!z(t))return!1;e?(t=>{const e=Object.keys($);if(!t||e.length<1)return!1;e.forEach((e=>{const s=$[e];let i;s.forEach(((e,n)=>{e.callback!==t&&e.token!==t||(i=e.topic,s.splice(-1,n))})),s.length<1&&E(i)}))})(e):E(t)};class T{constructor(t){this.attrs={},t&&this.initialize(t)}initialize(t){return this.attr(t).render().addListeners(),this}attr(t,e){const i=this.attrs;return o(t)?e&&h(i,t)?(i[t]=e,this):i[t]:s(t)?(_(i,t),this):0===arguments.length?i:this}render(){return this}refresh(){return this}destroy(){return this.removeListeners(),this}reload(t){let e=this.attr();return t&&(e=this.attr(t)),this.destroy().initialize(e),this}$emit(t,e){return L(t,e),this}$on(t,s){return function(t,s){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const n=M();let r="symbol"==typeof t?t.toString():t;e(s)&&($[r]||($[r]=[]),$[r].push({topic:r,callback:s,context:i,token:n}))}(t,s,this),this}$off(t,e){return C(t,e),this}addListeners(){return this}removeListeners(){return this}}const w=t=>{const e=Object.getPrototypeOf;let i;if(!(t=>s(t)&&null!==t)(t))return!1;if(i=t.prototype,!i)return!0;for(i=t;null!==e(i);)i=e(i);return e(t)===i},S=t=>t.replace(/]*>.*?<\/script>/gi,""),N=t=>{const e={"&":"&","<":"<",">":">","'":"'",'"':"""};return t.replace(/[&<>'"]/g,(t=>e[t]||t))},A=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s="outline-icon",n=e.size||0,r=e.color||"",l=e.iconSet||"",a=i(n)?n[0]:n,h=i(n)?n[1]:n,c=n?`width:${a}px;height:${h}px;`:"",u=r?c+`color:${r}`:c,m=e.attrs||{},p=document.createElement("i");let f,b="",g="";return o(t)?((t=>{const e=new RegExp("^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<\\!doctype svg[^>]*\\s*(?:\\[?(?:\\s*]*>\\s*)*\\]?)*[^>]*>\\s*)?]*>[^]*<\\/svg>\\s*$\\s*$","i");return o(t)&&e.test(t)})(t)?g=t:(b=l&&"icon"!==l?`xlink:href="#${l}-icon-${t}"`:`xlink:href="#icon-${t}"`,g=``),p.innerHTML=g,m.className?m.className=`${s} ${m.className}`:m.className=s,d(p,m),f=p.querySelector("svg"),d(f,{"aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",class:"outline-icon__svg",width:200,height:200,style:u}),p):null},D=function(t){return A(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},j=['','','','','','','','','','','','','','','','','','',''],k=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";return o(t)?function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";const s=/id="(.*?)"/,i=/^(\w+)-/;return j.find((n=>{const r=s.exec(n)[1];return i.exec(r)[1]===e&&r===("icon"===e?`${e}-${t}`:`${e}-icon-${t}`)}))}(t,e):[...j]},H=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=document.body;let s=document.querySelector("#outline-icons"),n=[];(t=>{if(!t)return!1;i(t)&&t.length>0?t.forEach((t=>{-1===j.indexOf(t)&&o(t)&&j.push(t)})):o(t)&&j.push(t)})(t),n=k(),s?s.innerHTML=n.join(""):(s=document.createElement("div"),s.innerHTML=``,e.insertBefore(s.firstChild,e.firstChild))},O=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=e.replace(/^>/i,"");return!!(e&&s&&t)&&(t.matches?t.matches(s):!!t.msMatchesSelector&&t.msMatchesSelector(s))},B=t=>t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode,q=function(t,e,s,i,n,r){let o=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const l=b.indexOf(s)>-1,a=function(l){const h=function(t){const e=t.target;return(s=e)&&3===s.nodeType?s.parentNode:s;var s}(l),c=((t,e,s,i)=>{const n=s||document;if(!t)return null;do{if(null!=e&&(e.startsWith(">")?t.parentNode===n&&O(t,e):O(t,e))||i&&t===n)return t;if(t===n)break}while(t=B(t))})(h,e,t);let d=r||t;l.delegateTarget=c,!0===r&&(d=n),c&&(!0===o&&v(t,s,a),i.call(d,l,n))};if(!t)return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,selector:e,type:s,fn:a,data:n,context:r,capture:l}),i._delegateListener=a,t.addEventListener(s,a,l)},F=[];let U;H();class R extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(R.DEFAULTS),this.$el=null,this.id="",this.closed=!1,this.visible=!1,this.offset=-50,this.timer=null,this.destroyed=!1,this}initialize(t){return this.attr(t),this.id=this.attr("id"),this.offset=this.attr("offset")||-50,this.$emit("created",{...this.attr()}),this.render().addListeners(),this.attr("visible")&&this.open(),this}isClosed(){return this.closed}isDestroyed(){return this.destroyed}_getClassName(){const t=this.attr("type"),e=this.attr("effect"),s=this.attr("round"),i=this.attr("closable"),n=this.attr("visible"),r=this.attr("customClass"),o=["outline-message",`outline-message_${t}`,`outline-message_${e}`];return s&&o.push("outline-message_round"),i||o.push("outline-message_full-width"),n&&o.push("outline-message_visible"),r&&o.push(r),o}render(){const t=this.attr("type"),e=this.attr("message"),s=this.attr("effect"),i=this.attr("round"),n=this.attr("closable"),r=this.attr("dangerouslyUseHTMLString"),o=this._getClassName(),l=[];let a,h,c,d,m,f=20;return i&&"default"===s&&(f=12),"plain"!==s&&(a=D("light"===s?`circle-${t}`:t,{iconSet:"outline",size:f}),p(a,"outline-message__icon"),l.push(a)),r?(c=document.createDocumentFragment(),c.innerHTML=e):c=document.createTextNode(N(S(e))),h=u("p",{className:"outline-message__content"},[c]),l.push(h),n&&(d=D("close",{iconSet:"outline",size:18}),p(d,"outline-message__close"),l.push(d)),m=u("div",{className:o.join(" ")},l),m.style.cssText="top:-50px;",this.$el=m,document.body.appendChild(this.$el),this.$emit("mounted"),this}_refreshIcon(){const t=".outline-message_hidden",e=this.$el;let s,i,n,r,o,l,a,h=20;return this.isDestroyed()?this:(o=e.querySelector(".outline-icon"),o?(s=this.attr("type"),i=this.attr("effect"),n=this.attr("round"),"plain"===i?p(o,t):(f(o,t),n&&"default"===i&&(h=12)),l=o.querySelector(".outline-icon__svg"),d(l,{style:`width:${h}px;height:${h}px;`}),a=l.querySelector("use"),r="light"===i?`circle-${s}`:s,c(a,"xlink:href",`#outline-icon-${r}`),this):this)}_refreshMessage(){const t=this.$el;let e,s,i,n;return this.isDestroyed()||(e=t.querySelector(".outline-message__content"),s=this.attr("dangerouslyUseHTMLString"),i=this.attr("message"),n=s?i:N(S(i)),e.innerHTML=n),this}_refreshClose(){const t=".outline-message_hidden",e=this.$el;let s,i;return this.isDestroyed()||(s=e.querySelector(".outline-message__close"),i=this.attr("closable"),s&&(i?p(s,t):f(s,t))),this}_refreshEl(){const t=this.$el;let e;return this.isDestroyed()||(e=this._getClassName(),c(t,"className",e.join(" "))),this}refresh(t){return w(t)?(this.attr(t)._refreshIcon()._refreshMessage()._refreshClose()._refreshEl(),this):this}clearTimer(){return this.isDestroyed()||this.timer&&(clearTimeout(this.timer),this.timer=null),this}startTimer(t){return this.isDestroyed()||(this.timer=r((()=>{this.$emit("opened"),this.close()}),1e3*t)),this}open(t){const e=this.$el;let s,i,n,o;return this.isDestroyed()||(this.isClosed()&&this.refresh(t),s=this.attr("offset"),i=this.attr("duration"),n=s&&s>=this.offset?s:this.offset,o=`top:${n}px;`,this.clearTimer(),this.$emit("beforeOpen"),r((()=>{this.visible=!0,p(e,"outline-message_visible"),e.style.cssText=o,i>0&&this.startTimer(i)}),100)),this}close(){const t=this.$el;let s,i;return this.isDestroyed()||(s=this.attr("destroyAfterClosed"),i=this.attr("beforeClose"),e(i)&&i.call(this),t.style.cssText="top:-50px;",f(t,"outline-message_visible"),this.visible=!1,this.closed=!0,r((()=>{this.$emit("closed"),s&&this.destroy()}),500)),this}destroy(){return this.$emit("beforeDestroy"),this.isDestroyed()||(this.removeListeners(),document.body.removeChild(this.$el),clearTimeout(this.timer),this._default(),this.$emit("afterDestroy")),this}onMouseEnter(){return this.clearTimer(),this}onMouseLeave(){const t=this.attr("duration"),e=this.attr("delay");return t<=0||this.startTimer(e),this}onClose(){return this.clearTimer(),this.close(),this}addListeners(){const t=this.$el;return q(t,".outline-message__content","mouseenter",this.onMouseEnter,this,!0),q(t,".outline-message__content","mouseleave",this.onMouseLeave,this,!0),q(t,".outline-message__close","click",this.onClose,this,!0),this}removeListeners(){const t=this.$el;return v(t,"mouseenter",this.onMouseEnter),v(t,"mouseleave",this.onMouseLeave),v(t,"click",this.onClose),this}}R.DEFAULTS=n({id:"",type:"info",effect:"default",round:!1,offset:30,duration:3,delay:2,message:"",customClass:"",closable:!0,visible:!0,dangerouslyUseHTMLString:!1,destroyAfterClosed:!0,beforeClose:null}),["info","success","warning","error"].forEach((t=>{R[t]=e=>{const s={},i=M("outline-message-"),n=e.beforeClose||null;let r=e.offset||30;return o(e)?s.message=e:w(e)&&_(s,e),s.id=i,s.type=t,s.offset=r,s.visible=!1,s.beforeClose=()=>{R.close(i,n)},U=new R(s),F.forEach((t=>{r+=t.$el.offsetHeight+16})),U.offset=r,U.open(),F.push(U),U}})),R.close=(t,s)=>{const i=F.length;let n,r,o=-1;if(F.forEach(((i,n)=>{t===i.id&&(r=i.$el.offsetHeight,o=n,e(s)&&s.call(i),F.splice(n,1))})),i<=1||-1===o||o>F.length-1)return!1;for(n=o;n{let t=F.length-1;for(;t>=0;t-=1)F[t].close()};class I{constructor(t,s){this.name=t,e(s)&&(this.action=s)}execute(){return this.action(),this}}class V{constructor(){this.commands=[]}get(t){return this.commands.find((e=>e.name===t))}add(t){return this.commands.push(t),this}del(t){const e=this.commands,s=e.find((e=>e.name===t)),i=s?e.indexOf(s):-1;return i>-1&&e.splice(i,1),this}clear(){return this.commands=[],this}execute(t){const s=this.commands.find((e=>e.name===t));return e(null==s?void 0:s.execute)&&s.execute(),this}}const P=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const s=D(t.icon,{iconSet:t.iconSet||"outline",color:t.color||"",size:t.size}),i=u("a",{className:"outline-toolbar__anchor",href:t.link},s),n=u("div",{className:`outline-toolbar__button ${t.name}`,"data-cmd":t.name},[t.link?i:s]);return p(s,"outline-toolbar__icon"),e&&p(n,"outline-toolbar_rounded"),t.disabled&&p(n,"outline-toolbar_disabled"),n},W="outline-toolbar_disabled",G="outline-toolbar_hidden";class J extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(J.DEFAULTS),this.disabled=!1,this.closed=!1,this.$el=null,this.buttons=[],this.commands=null,this}initialize(t){let s;return this.attr(t),this.disabled=this.attr("disabled"),this.closed=this.attr("closed"),this.commands=new V,s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}isDisabled(t){let e;return t?(e=this.get(t),e.disabled):this.disabled}isExist(t){return!!this.get(t)}isClosed(){return this.closed}_getCommand(t){const s=this,{action:i,name:n}=t;let r,l,a=null,h=null;return i?(h=i.handler,r=i.context||this,e(h)?l=h:o(h)&&(l=function(){s.$emit(h,n)}),e(l)&&(a=new I(n,l.bind(r))),a):a}get(t){return this.buttons.find((e=>e.name===t))}render(){const t=this.attr("mounted"),s=this.attr("buttons")||[],i=this.attr("placement");return H(),this.$el=u("div",{id:M("outline-toolbar"),className:`outline-toolbar outline-toolbar_${i}`}),this._paint(s),document.body.appendChild(this.$el),this.closed&&this.hide(),this.disabled&&this.disable(),e(t)&&t.call(this),this}erase(){return this.$el.innerHTML="",this}_paint(t){const e=this.attr("rounded"),s=document.createDocumentFragment();return t.forEach((t=>{const i=P(t,e),n=this._getCommand(t),{name:r,disabled:o,context:l}=t;s.appendChild(i),this.isExist(r)||(this.buttons.push({$el:i,name:r,disabled:o||!1,context:l||this}),n&&this.commands.add(n))})),this.$el.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.attr({buttons:t}),this.erase()._paint(t),this}add(t){const e=this.$el,n=document.createDocumentFragment(),r=this.attr("buttons")||[],{name:o,disabled:l,context:a}=t,h=this._getCommand(t),c=t=>{const e=P(t);n.appendChild(e),r.push(t),this.buttons.push({$el:e,name:o,disabled:l||!1,context:a||this,command:h}),h&&this.commands.add(h)};return s(t)?c(t):i(t)&&t.forEach((t=>{s(t)&&c(t)})),e.appendChild(n),this}remove(t){const e=this.$el,s=this.buttons,i=this.get(t);let n=-1;return i?(n=s.indexOf(i),n>-1&&(s.splice(n,1),this.attrs("buttons").splice(n,1)),this._disable(t),e.removeChild(i.$el),this):this}_disable(t){const e=this.get(t),s=this.commands.get(t);return!e||e.disabled||(e.disabled=!0,s&&this.commands.del(s),p(e.$el,W)),this}_enable(t){const e=this.get(t),s=this.commands.get(t);return e&&e.disabled?(e.disabled=!1,s&&this.commands.add(s),f(e.$el,W),this):this}disable(t){const s=this.attr("afterDisabled");return t?this._disable(t):(p(this.$el,W),this.removeListeners(),this.disabled=!0,e(s)&&s.call(this)),this}enable(t){const s=this.attr("afterEnabled");return t?this._enable(t):(this.disabled=!1,f(this.$el,W),this.addListeners(),e(s)&&s.call(this)),this}show(t){const s=this.attr("afterOpened"),i=this.get(t),n=this.$el;if(t){if(!i)return this;f(i.$el,G)}else f(n,G),this.closed=!1,e(s)&&r((()=>{s.call(this)}),310);return this}hide(t){const s=this.attr("afterClosed"),i=this.get(t),n=this.$el;if(t){if(!i)return this;p(i.$el,G)}else p(n,G),this.closed=!0,e(s)&&r((()=>{s.call(this)}),310);return this}toggle(){return this.isClosed()?this.show():this.hide(),this}highlight(t){const e=this.get(t),s="outline-toolbar_active";let i;return e?(i=e.$el,m(i,s)?f(i,s):p(i,s),this):this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.commands.clear(),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}execute(t){return this.isDisabled(t)||this.commands.execute(t),this}onExecute(t){const e=t.delegateTarget;let s="";return e&&(s=e.getAttribute("data-cmd"),s&&this.execute(s)),this}addListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||q(e,".outline-toolbar__button","click",this.onExecute,this,!0),this}removeListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||v(e,".outline-toolbar__button",this.onExecute),this}}J.DEFAULTS=n({placement:"ltr",closed:!1,disabled:!1,rounded:!0,buttons:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterDisabled:null,afterEnabled:null,beforeDestroy:null,afterDestroy:null});const K=(t,e)=>{let s,i=t;for(;i;)s=i.tagName.toLowerCase(),"script"!==s&&"style"!==s&&p(i,"outline-reader_sibling"),i=e?i.previousElementSibling:i.nextElementSibling},Q="进入阅读模式,按 ESC 键可退出阅读模式";class X extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(X.DEFAULTS),this.reading=!1,this.$target=null,this.$paper=null,this.$title=null,this.$article=null,this.$progress=null,this.toolbar=null,this}initialize(t){let e=null;return this.attr(t),e=this.attr("target"),o(e)?this.$target=document.querySelector(e):l(e)&&(this.$target=e),this.$target?(this.render().addListeners(),this):this}render(){return this._renderEdge()._paint(this.$target),this}erase(){return this.$article.innerHTML="",this}_paint(t){const e=document.createDocumentFragment(),s=[...t.cloneNode(!0).children];return r((()=>{s.forEach((t=>{e.appendChild(t)})),this.$article.appendChild(e)})),this}_remove(){const t=this.$paper,e=this.toolbar;return t&&document.body.removeChild(t),e&&e.destroy(),this}refresh(){return this.erase()._paint(this.$target),this}_renderEdge(){const t=this.$target;let e,s,i,n,o,a=this.attr("title");return s=t.querySelector("h1"),l(a)&&(s=a),l(s)&&(a=s.innerText),s=u("h1",{className:"outline-reader__title"},a),this.$title=s,i=u("article",{id:"outline-reader__article",className:"outline-reader__article"}),this.$article=i,n=u("div",{className:"outline-reader__progress"}),this.$progress=n,this.toolbar=new J({placement:"rtl",buttons:[{name:"exit",icon:"close",size:20,action:{context:this,handler:this.exit}}]}),e=u("section",{id:"outline-reader",className:"outline-reader outline-reader_hidden"},[n,s,i,this.toolbar.$el]),this.$paper=e,document.body.appendChild(e),r((()=>{o=e.previousElementSibling,K(o,!0),o=e.nextElementSibling,K(o)})),this}enter(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,n=document.querySelectorAll(".outline-reader_sibling"),r=this.attr("enterReadingTip")||Q;return this.reading||!i||(n.forEach((t=>{p(t,s)})),p(i,e),f(i,s),this.toolbar.show(),this.reading=!0,R.info({round:!0,message:r}),this.$emit("enterReading")),this}exit(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,n=document.querySelectorAll(".outline-reader_sibling");return this.reading&&i?(p(i,s),f(i,e),n.forEach((t=>{f(t,s)})),this.toolbar.hide(),this.reading=!1,this.$emit("exitReading"),this):this}toggle(){return this.reading?this.exit():this.enter(),this}print(){return e(print)?(print(),this):this}destroy(){return this.$paper?(this.removeListeners()._remove()._default(),this):this}onPrint(){return this.print(),this}onEnterReading(){return this.toggle(),this}onExitReading(t){return 27===t.keyCode&&this.reading&&(this.toggle(),function(t){t.stopPropagation(),t.preventDefault()}(t)),this}addListeners(){return this.$paper?(function(t,s,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const l=b.indexOf(s)>-1,a=function(e){let l=r||t;!0===r&&(l=n),!0===o&&v(t,s,a),i.call(l,e,n)};if(!e(i))return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,type:s,fn:a,data:n,context:r,capture:l}),i._delegateListener=a,t.addEventListener(s,a,l)}(document,"keyup",this.onExitReading,this,!0),this.$on("toolbar:action:print",this.onPrint),this.$on("toolbar:action:reading",this.onEnterReading),this):this}removeListeners(){return this.$paper?(v(document,"keyup",this.onExitReading),this.$off("toolbar:action:print"),this.$off("toolbar:action:reading"),this):this}}return X.DEFAULTS=n({target:"",title:"",enterReadingTip:Q}),X})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Reader=e()}(this,(function(){"use strict";const t=t=>Object.prototype.toString.apply(t),e=e=>"function"==typeof e||"[object Function]"===t(e),s=s=>("[object Object]"===t(s)||"object"==typeof s||e(s))&&null!==s,i=e=>Array.isArray?Array.isArray(e):"[object Array]"===t(e),n=t=>{let e={};return null===t?null:(i(t)?e=Array.from(t):(e=Object.assign({},t),Object.keys(e).forEach((i=>e[i]=s(t[i])?n(t[i]):t[i]))),e)},r=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;return!!e(t)&&setTimeout((()=>{t()}),s)},o=t=>"string"==typeof t,l=t=>!!(s(t)&&t.nodeName&&t.tagName&&1===t.nodeType),a=e=>{return!(!s(e)||!(l(e)||(e=>!(!s(e)||"[object NodeList]"!==t(e)))(e)||(i=e,s(i)&&"[object DocumentFragment]"===t(i))||(e=>!(!s(e)||!("[object Text]"===t(e)||e.tagName&&3===e.nodeType)))(e)));var i},h=(t,e)=>{const s=Object.prototype.hasOwnProperty;return t&&s.call(t,e)},c=(t,e,s)=>{let i=t.tagName.toLowerCase();switch(e){case"style":t.style.cssText=s;break;case"value":"input"===i||"textarea"===i?t.value=s:t.setAttribute(e,s);break;case"htmlFor":t.setAttribute("for",s);break;case"className":t.className=s;break;case"innerHTML":t.innerHTML=s;break;case"innerText":t.innerText=s;break;default:t.setAttribute(e,s)}},d=(t,e)=>{if(!t||!s(e))return!1;Object.keys(e).forEach((s=>{const i=e[s];h(e,s)&&c(t,s,i)}))},u=(t,e,n)=>{const r=document.createDocumentFragment(),l=document.createElement(t),h=t=>a(t)||o(t),c=t=>{let e;if(!h(t))return!1;a(t)?e=t:o(t)&&(e=document.createTextNode(t)),r.appendChild(e)};return s(e)?d(l,e):i(e)&&e.every((t=>h(t)))?e.forEach((t=>{c(t)})):a(e)?c(e):o(e)&&c(document.createTextNode(e)),i(n)?n.forEach((t=>{c(t)})):c(n),l.appendChild(r),l},m=(t,e)=>{const s=new RegExp("(\\s|^)"+e+"(\\s|$)");let i,n;return!!l(t)&&(i=t.className,!!i&&(n=t.classList,n&&n.contains?t.classList.contains(e):!!s.exec(i)))},p=(t,e)=>{var s;let i,n;if(m(t,e))return!1;i=t.classList,null!==(s=i)&&void 0!==s&&s.add?i.add(e):(n=t.className,n+=n.length>0?" "+e:e,t.className=n)},f=(t,e)=>{var s;let i,n=t.className;if(!n||!m(t,e))return!1;var r;i=t.classList,null!==(s=i)&&void 0!==s&&s.remove?i.remove(e):(r=n.replace(e,""),n=!!o(r)&&r.replace(/(^\s+)|(\s+$)/g,""),t.className=n)},b=["focusout","blur","focusin","focus","load","unload","mouseenter","mouseleave"],g=(t,e,s)=>{const i=b.indexOf(e)>-1;s._delegateListener&&delete(s=s._delegateListener)._delegateListener,function(t,e,s){const i=t._listeners;let n=-1;if(i.length<1)return!1;i.forEach(((t,i)=>{const r=t.fn;e===t.type&&(n=i,r===s&&(n=i))})),n>-1&&i.splice(n,1)}(t,e,s),t.removeEventListener(e,s,i)},y=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=o(t)?document.querySelector(t):t,n=i.childNodes,r=((t,e)=>{let s=t._listeners||[];return o(e)&&e&&(s=s.filter((t=>t.type===e))),s})(i,e);r.forEach((t=>{g(i,t.type,t.fn)})),(s||!0===e||1===arguments.length)&&i&&n&&n.forEach((t=>{l(t)&&y(t,e,s)}))},v=(t,s,i)=>{if(!e(i))return y(t,s),!1;g(t,s,i)},_=(t,e)=>{Object.keys(e).forEach((s=>{h(e,s)&&(t[s]=e[s])}))},$={},x=t=>h($,t)&&$[t].length>0,z=function(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?x(t):(t=>{let e=x(t),s=t.lastIndexOf(".");for(;!e&&-1!==s;)s=(t=t.substring(0,s)).lastIndexOf("."),e=x(t);return e})(t)},L=function(e,s){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const n=e=>{if(!x(e))return!1;$[e].forEach((e=>{const i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object BigInt64Array]","[object BigUint64Array]"].indexOf(t(s))>-1?s.toString():s;e.callback.call(e.context||e,i)}))},r=()=>{let t=e,s=e.lastIndexOf(".");for(;-1!==s;)t=t.substring(0,s),s=t.lastIndexOf("."),n(t);n(e),n("*")};if(!z(e))return!1;i?setTimeout(r,10):r()},M=(()=>{let t=0;return e=>(t+=1,e?e+"-"+t:"guid-"+t)})(),E=t=>{if(!h($,t))return!1;delete $[t]},C=(t,e)=>{if(!z(t))return!1;e?(t=>{const e=Object.keys($);if(!t||e.length<1)return!1;e.forEach((e=>{const s=$[e];let i;s.forEach(((e,n)=>{e.callback!==t&&e.token!==t||(i=e.topic,s.splice(-1,n))})),s.length<1&&E(i)}))})(e):E(t)};class T{constructor(t){this.attrs={},t&&this.initialize(t)}initialize(t){return this.attr(t).render().addListeners(),this}attr(t,e){const i=this.attrs;return o(t)?e&&h(i,t)?(i[t]=e,this):i[t]:s(t)?(_(i,t),this):0===arguments.length?i:this}render(){return this}refresh(){return this}destroy(){return this.removeListeners(),this}reload(t){let e=this.attr();return t&&(e=this.attr(t)),this.destroy().initialize(e),this}$emit(t,e){return L(t,e),this}$on(t,s){return function(t,s){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const n=M();let r="symbol"==typeof t?t.toString():t;e(s)&&($[r]||($[r]=[]),$[r].push({topic:r,callback:s,context:i,token:n}))}(t,s,this),this}$off(t,e){return C(t,e),this}addListeners(){return this}removeListeners(){return this}}const w=t=>{const e=Object.getPrototypeOf;let i;if(!(t=>s(t)&&null!==t)(t))return!1;if(i=t.prototype,!i)return!0;for(i=t;null!==e(i);)i=e(i);return e(t)===i},S=t=>t.replace(/]*>.*?<\/script>/gi,""),N=t=>{const e={"&":"&","<":"<",">":">","'":"'",'"':"""};return t.replace(/[&<>'"]/g,(t=>e[t]||t))},A=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s="outline-icon",n=e.size||0,r=e.color||"",l=e.iconSet||"",a=i(n)?n[0]:n,h=i(n)?n[1]:n,c=n?`width:${a}px;height:${h}px;`:"",u=r?c+`color:${r}`:c,m=e.attrs||{},p=document.createElement("i");let f,b="",g="";return o(t)?((t=>{const e=new RegExp("^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<\\!doctype svg[^>]*\\s*(?:\\[?(?:\\s*]*>\\s*)*\\]?)*[^>]*>\\s*)?]*>[^]*<\\/svg>\\s*$\\s*$","i");return o(t)&&e.test(t)})(t)?g=t:(b=l&&"icon"!==l?`xlink:href="#${l}-icon-${t}"`:`xlink:href="#icon-${t}"`,g=``),p.innerHTML=g,m.className?m.className=`${s} ${m.className}`:m.className=s,d(p,m),f=p.querySelector("svg"),d(f,{"aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",class:"outline-icon__svg",width:200,height:200,style:u}),p):null},D=function(t){return A(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},j=['','','','','','','','','','','','','','','','','','',''],k=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";return o(t)?function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"icon";const s=/id="(.*?)"/,i=/^(\w+)-/;return j.find((n=>{const r=s.exec(n)[1];return i.exec(r)[1]===e&&r===("icon"===e?`${e}-${t}`:`${e}-icon-${t}`)}))}(t,e):[...j]},H=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=document.body;let s=document.querySelector("#outline-icons"),n=[];(t=>{if(!t)return!1;i(t)&&t.length>0?t.forEach((t=>{-1===j.indexOf(t)&&o(t)&&j.push(t)})):o(t)&&j.push(t)})(t),n=k(),s?s.innerHTML=n.join(""):(s=document.createElement("div"),s.innerHTML=``,e.insertBefore(s.firstChild,e.firstChild))},O=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=e.replace(/^>/i,"");return!!(e&&s&&t)&&(t.matches?t.matches(s):!!t.msMatchesSelector&&t.msMatchesSelector(s))},B=t=>t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode,q=function(t,e,s,i,n,r){let o=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const l=b.indexOf(s)>-1,a=function(l){const h=function(t){const e=t.target;return(s=e)&&3===s.nodeType?s.parentNode:s;var s}(l),c=((t,e,s,i)=>{const n=s||document;if(!t)return null;do{if(null!=e&&(e.startsWith(">")?t.parentNode===n&&O(t,e):O(t,e))||i&&t===n)return t;if(t===n)break}while(t=B(t))})(h,e,t);let d=r||t;l.delegateTarget=c,!0===r&&(d=n),c&&(!0===o&&v(t,s,a),i.call(d,l,n))};if(!t)return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,selector:e,type:s,fn:a,data:n,context:r,capture:l}),i._delegateListener=a,t.addEventListener(s,a,l)},F=[];let U;H();class R extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(R.DEFAULTS),this.$el=null,this.id="",this.closed=!1,this.visible=!1,this.offset=-50,this.timer=null,this.destroyed=!1,this}initialize(t){return this.attr(t),this.id=this.attr("id"),this.offset=this.attr("offset")||-50,this.$emit("created",{...this.attr()}),this.render().addListeners(),this.attr("visible")&&this.open(),this}isClosed(){return this.closed}isDestroyed(){return this.destroyed}_getClassName(){const t=this.attr("type"),e=this.attr("effect"),s=this.attr("round"),i=this.attr("closable"),n=this.attr("visible"),r=this.attr("customClass"),o=["outline-message",`outline-message_${t}`,`outline-message_${e}`];return s&&o.push("outline-message_round"),i||o.push("outline-message_full-width"),n&&o.push("outline-message_visible"),r&&o.push(r),o}render(){const t=this.attr("type"),e=this.attr("message"),s=this.attr("effect"),i=this.attr("round"),n=this.attr("closable"),r=this.attr("dangerouslyUseHTMLString"),o=this._getClassName(),l=[];let a,h,c,d,m,f=20;return i&&"default"===s&&(f=12),"plain"!==s&&(a=D("light"===s?`circle-${t}`:t,{iconSet:"outline",size:f}),p(a,"outline-message__icon"),l.push(a)),r?(c=document.createDocumentFragment(),c.innerHTML=e):c=document.createTextNode(N(S(e))),h=u("p",{className:"outline-message__content"},[c]),l.push(h),n&&(d=D("close",{iconSet:"outline",size:18}),p(d,"outline-message__close"),l.push(d)),m=u("div",{className:o.join(" ")},l),m.style.cssText="top:-50px;",this.$el=m,document.body.appendChild(this.$el),this.$emit("mounted"),this}_refreshIcon(){const t=".outline-message_hidden",e=this.$el;let s,i,n,r,o,l,a,h=20;return this.isDestroyed()?this:(o=e.querySelector(".outline-icon"),o?(s=this.attr("type"),i=this.attr("effect"),n=this.attr("round"),"plain"===i?p(o,t):(f(o,t),n&&"default"===i&&(h=12)),l=o.querySelector(".outline-icon__svg"),d(l,{style:`width:${h}px;height:${h}px;`}),a=l.querySelector("use"),r="light"===i?`circle-${s}`:s,c(a,"xlink:href",`#outline-icon-${r}`),this):this)}_refreshMessage(){const t=this.$el;let e,s,i,n;return this.isDestroyed()||(e=t.querySelector(".outline-message__content"),s=this.attr("dangerouslyUseHTMLString"),i=this.attr("message"),n=s?i:N(S(i)),e.innerHTML=n),this}_refreshClose(){const t=".outline-message_hidden",e=this.$el;let s,i;return this.isDestroyed()||(s=e.querySelector(".outline-message__close"),i=this.attr("closable"),s&&(i?p(s,t):f(s,t))),this}_refreshEl(){const t=this.$el;let e;return this.isDestroyed()||(e=this._getClassName(),c(t,"className",e.join(" "))),this}refresh(t){return w(t)?(this.attr(t)._refreshIcon()._refreshMessage()._refreshClose()._refreshEl(),this):this}clearTimer(){return this.isDestroyed()||this.timer&&(clearTimeout(this.timer),this.timer=null),this}startTimer(t){return this.isDestroyed()||(this.timer=r((()=>{this.$emit("opened"),this.close()}),1e3*t)),this}open(t){const e=this.$el;let s,i,n,o;return this.isDestroyed()||(this.isClosed()&&this.refresh(t),s=this.attr("offset"),i=this.attr("duration"),n=s&&s>=this.offset?s:this.offset,o=`top:${n}px;`,this.clearTimer(),this.$emit("beforeOpen"),r((()=>{this.visible=!0,p(e,"outline-message_visible"),e.style.cssText=o,i>0&&this.startTimer(i)}),100)),this}close(){const t=this.$el;let s,i;return this.isDestroyed()||(s=this.attr("destroyAfterClosed"),i=this.attr("beforeClose"),e(i)&&i.call(this),t.style.cssText="top:-50px;",f(t,"outline-message_visible"),this.visible=!1,this.closed=!0,r((()=>{this.$emit("closed"),s&&this.destroy()}),500)),this}destroy(){return this.$emit("beforeDestroy"),this.isDestroyed()||(this.removeListeners(),document.body.removeChild(this.$el),clearTimeout(this.timer),this._default(),this.$emit("afterDestroy")),this}onMouseEnter(){return this.clearTimer(),this}onMouseLeave(){const t=this.attr("duration"),e=this.attr("delay");return t<=0||this.startTimer(e),this}onClose(){return this.clearTimer(),this.close(),this}addListeners(){const t=this.$el;return q(t,".outline-message__content","mouseenter",this.onMouseEnter,this,!0),q(t,".outline-message__content","mouseleave",this.onMouseLeave,this,!0),q(t,".outline-message__close","click",this.onClose,this,!0),this}removeListeners(){const t=this.$el;return v(t,"mouseenter",this.onMouseEnter),v(t,"mouseleave",this.onMouseLeave),v(t,"click",this.onClose),this}}R.DEFAULTS=n({id:"",type:"info",effect:"default",round:!1,offset:30,duration:3,delay:2,message:"",customClass:"",closable:!0,visible:!0,dangerouslyUseHTMLString:!1,destroyAfterClosed:!0,beforeClose:null}),["info","success","warning","error"].forEach((t=>{R[t]=e=>{const s={},i=M("outline-message-"),n=e.beforeClose||null;let r=e.offset||30;return o(e)?s.message=e:w(e)&&_(s,e),s.id=i,s.type=t,s.offset=r,s.visible=!1,s.beforeClose=()=>{R.close(i,n)},U=new R(s),F.forEach((t=>{r+=t.$el.offsetHeight+16})),U.offset=r,U.open(),F.push(U),U}})),R.close=(t,s)=>{const i=F.length;let n,r,o=-1;if(F.forEach(((i,n)=>{t===i.id&&(r=i.$el.offsetHeight,o=n,e(s)&&s.call(i),F.splice(n,1))})),i<=1||-1===o||o>F.length-1)return!1;for(n=o;n{let t=F.length-1;for(;t>=0;t-=1)F[t].close()};class I{constructor(t,s){this.name=t,e(s)&&(this.action=s)}execute(){return this.action(),this}}class V{constructor(){this.commands=[]}get(t){return this.commands.find((e=>e.name===t))}add(t){return this.commands.push(t),this}del(t){const e=this.commands,s=e.find((e=>e.name===t)),i=s?e.indexOf(s):-1;return i>-1&&e.splice(i,1),this}clear(){return this.commands=[],this}execute(t){const s=this.commands.find((e=>e.name===t));return e(null==s?void 0:s.execute)&&s.execute(),this}}const P=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const s=D(t.icon,{iconSet:t.iconSet||"outline",color:t.color||"",size:t.size}),i=u("a",{className:"outline-toolbar__anchor",href:t.link},s),n=u("div",{className:`outline-toolbar__button ${t.name}`,"data-cmd":t.name},[t.link?i:s]);return p(s,"outline-toolbar__icon"),e&&p(n,"outline-toolbar_rounded"),t.disabled&&p(n,"outline-toolbar_disabled"),n},W="outline-toolbar_disabled",G="outline-toolbar_hidden";class J extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(J.DEFAULTS),this.disabled=!1,this.closed=!1,this.$el=null,this.buttons=[],this.commands=null,this}initialize(t){let s;return this.attr(t),this.disabled=this.attr("disabled"),this.closed=this.attr("closed"),this.commands=new V,s=this.attr("created"),e(s)&&s.call(this),this.render().addListeners(),this}isDisabled(t){let e;return t?(e=this.get(t),e.disabled):this.disabled}isExist(t){return!!this.get(t)}isClosed(){return this.closed}_getCommand(t){const s=this,{action:i,name:n}=t;let r,l,a=null,h=null;return i?(h=i.handler,r=i.context||this,e(h)?l=h:o(h)&&(l=function(){s.$emit(h,n)}),e(l)&&(a=new I(n,l.bind(r))),a):a}get(t){return this.buttons.find((e=>e.name===t))}render(){const t=this.attr("mounted"),s=this.attr("buttons")||[],i=this.attr("placement");return H(),this.$el=u("div",{id:M("outline-toolbar"),className:`outline-toolbar outline-toolbar_${i}`}),this._paint(s),document.body.appendChild(this.$el),this.closed&&this.hide(),this.disabled&&this.disable(),e(t)&&t.call(this),this}erase(){return this.$el.innerHTML="",this}_paint(t){const e=this.attr("rounded"),s=document.createDocumentFragment();return t.forEach((t=>{const i=P(t,e),n=this._getCommand(t),{name:r,disabled:o,context:l}=t;s.appendChild(i),this.isExist(r)||(this.buttons.push({$el:i,name:r,disabled:o||!1,context:l||this}),n&&this.commands.add(n))})),this.$el.appendChild(s),this}_remove(){return document.body.removeChild(this.$el),this}refresh(t){return this.attr({buttons:t}),this.erase()._paint(t),this}add(t){const e=this.$el,n=document.createDocumentFragment(),r=this.attr("buttons")||[],{name:o,disabled:l,context:a}=t,h=this._getCommand(t),c=t=>{const e=P(t);n.appendChild(e),r.push(t),this.buttons.push({$el:e,name:o,disabled:l||!1,context:a||this,command:h}),h&&this.commands.add(h)};return s(t)?c(t):i(t)&&t.forEach((t=>{s(t)&&c(t)})),e.appendChild(n),this}remove(t){const e=this.$el,s=this.buttons,i=this.get(t);let n=-1;return i?(n=s.indexOf(i),n>-1&&(s.splice(n,1),this.attrs("buttons").splice(n,1)),this._disable(t),e.removeChild(i.$el),this):this}_disable(t){const e=this.get(t),s=this.commands.get(t);return!e||e.disabled||(e.disabled=!0,s&&this.commands.del(s),p(e.$el,W)),this}_enable(t){const e=this.get(t),s=this.commands.get(t);return e&&e.disabled?(e.disabled=!1,s&&this.commands.add(s),f(e.$el,W),this):this}disable(t){const s=this.attr("afterDisabled");return t?this._disable(t):(p(this.$el,W),this.removeListeners(),this.disabled=!0,e(s)&&s.call(this)),this}enable(t){const s=this.attr("afterEnabled");return t?this._enable(t):(this.disabled=!1,f(this.$el,W),this.addListeners(),e(s)&&s.call(this)),this}show(t){const s=this.attr("afterOpened"),i=this.get(t),n=this.$el;if(t){if(!i)return this;f(i.$el,G)}else f(n,G),this.closed=!1,e(s)&&r((()=>{s.call(this)}),310);return this}hide(t){const s=this.attr("afterClosed"),i=this.get(t),n=this.$el;if(t){if(!i)return this;p(i.$el,G)}else p(n,G),this.closed=!0,e(s)&&r((()=>{s.call(this)}),310);return this}toggle(){return this.isClosed()?this.show():this.hide(),this}highlight(t){const e=this.get(t),s="outline-toolbar_active";let i;return e?(i=e.$el,m(i,s)?f(i,s):p(i,s),this):this}destroy(){const t=this.attr("beforeDestroy"),s=this.attr("afterDestroy");return e(t)&&t.call(this),this.commands.clear(),this.removeListeners()._remove()._default(),e(s)&&s.call(this),this}execute(t){return this.isDisabled(t)||this.commands.execute(t),this}onExecute(t){const e=t.delegateTarget;let s="";return e&&(s=e.getAttribute("data-cmd"),s&&this.execute(s)),this}addListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||q(e,".outline-toolbar__button","click",this.onExecute,this,!0),this}removeListeners(){const t=this.attr("buttons")||[],e=this.$el;return!t||t.length<1||v(e,".outline-toolbar__button",this.onExecute),this}}J.DEFAULTS=n({placement:"ltr",closed:!1,disabled:!1,rounded:!0,buttons:[],created:null,mounted:null,afterClosed:null,afterOpened:null,afterDisabled:null,afterEnabled:null,beforeDestroy:null,afterDestroy:null});const K=(t,e)=>{let s,i=t;for(;i;)s=i.tagName.toLowerCase(),"script"!==s&&"style"!==s&&p(i,"outline-reader_sibling"),i=e?i.previousElementSibling:i.nextElementSibling},Q="进入阅读模式,按 ESC 键可退出阅读模式";class X extends T{constructor(t){super(),this._default(),t&&this.initialize(t)}_default(){return this.attrs=n(X.DEFAULTS),this.reading=!1,this.$target=null,this.$paper=null,this.$title=null,this.$article=null,this.$progress=null,this.toolbar=null,this}initialize(t){let e=null;return this.attr(t),e=this.attr("target"),o(e)?this.$target=document.querySelector(e):l(e)&&(this.$target=e),this.$target?(this.render().addListeners(),this):this}render(){return this._renderEdge()._paint(this.$target),this}erase(){return this.$article.innerHTML="",this}_paint(t){const e=document.createDocumentFragment(),s=[...t.cloneNode(!0).children];return r((()=>{s.forEach((t=>{e.appendChild(t)})),this.$article.appendChild(e)})),this}_remove(){const t=this.$paper,e=this.toolbar;return t&&document.body.removeChild(t),e&&e.destroy(),this}refresh(){return this.erase()._paint(this.$target),this}_renderEdge(){const t=this.$target;let e,s,i,n,o,a=this.attr("title");return s=t.querySelector("h1"),l(a)&&(s=a),l(s)&&(a=s.innerText),s=u("h1",{className:"outline-reader__title"},a),this.$title=s,i=u("article",{id:"outline-reader__article",className:"outline-reader__article"}),this.$article=i,n=u("div",{className:"outline-reader__progress"}),this.$progress=n,this.toolbar=new J({placement:"rtl",buttons:[{name:"print",icon:"print",size:20,action:{context:this,handler:this.print}},{name:"exit",icon:"close",size:20,action:{context:this,handler:this.exit}}]}),e=u("section",{id:"outline-reader",className:"outline-reader outline-reader_hidden"},[n,s,i,this.toolbar.$el]),this.$paper=e,document.body.appendChild(e),r((()=>{o=e.previousElementSibling,K(o,!0),o=e.nextElementSibling,K(o)})),this}enter(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,n=document.querySelectorAll(".outline-reader_sibling"),r=this.attr("enterReadingTip")||Q;return this.reading||!i||(n.forEach((t=>{p(t,s)})),p(i,e),f(i,s),this.toolbar.show(),this.reading=!0,R.info({round:!0,message:r}),this.$emit("enterReading")),this}exit(){const t="outline-reader",e=`${t}--reading`,s=`${t}_hidden`,i=this.$paper,n=document.querySelectorAll(".outline-reader_sibling");return this.reading&&i?(p(i,s),f(i,e),n.forEach((t=>{f(t,s)})),this.toolbar.hide(),this.reading=!1,this.$emit("exitReading"),this):this}toggle(){return this.reading?this.exit():this.enter(),this}print(){return e(print)?(print(),this):this}destroy(){return this.$paper?(this.removeListeners()._remove()._default(),this):this}onPrint(){return this.print(),this}onEnterReading(){return this.toggle(),this}onExitReading(t){return 27===t.keyCode&&this.reading&&(this.toggle(),function(t){t.stopPropagation(),t.preventDefault()}(t)),this}addListeners(){return this.$paper?(function(t,s,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const l=b.indexOf(s)>-1,a=function(e){let l=r||t;!0===r&&(l=n),!0===o&&v(t,s,a),i.call(l,e,n)};if(!e(i))return!1;t._listeners||(t._listeners=[]),t._listeners.push({el:t,type:s,fn:a,data:n,context:r,capture:l}),i._delegateListener=a,t.addEventListener(s,a,l)}(document,"keyup",this.onExitReading,this,!0),this.$on("toolbar:action:print",this.onPrint),this.$on("toolbar:action:reading",this.onEnterReading),this):this}removeListeners(){return this.$paper?(v(document,"keyup",this.onExitReading),this.$off("toolbar:action:print"),this.$off("toolbar:action:reading"),this):this}}return X.DEFAULTS=n({target:"",title:"",enterReadingTip:Q}),X})); //# sourceMappingURL=reader.min.js.map diff --git a/reader.min.js.map b/reader.min.js.map index d909b0c..d342267 100644 --- a/reader.min.js.map +++ b/reader.min.js.map @@ -1 +1 @@ -{"version":3,"file":"reader.min.js","sources":["utils/lang/toString.js","utils/types/isFunction.js","utils/types/isObject.js","utils/types/isArray.js","utils/lang/cloneDeep.js","utils/lang/later.js","utils/types/isString.js","utils/types/isElement.js","utils/types/isDOM.js","utils/types/isHTMLCollection.js","utils/types/isFragment.js","utils/types/isTextNode.js","utils/lang/hasOwn.js","utils/dom/setAttribute.js","utils/dom/setAttributes.js","utils/dom/createElement.js","utils/dom/hasClass.js","utils/dom/addClass.js","utils/dom/removeClass.js","utils/lang/trim.js","utils/event/enum.js","utils/event/_off.js","utils/event/_delete.js","utils/event/purgeElement.js","utils/event/getListeners.js","utils/event/off.js","utils/lang/extend.js","utils/observer/_subscribers.js","utils/observer/_hasDirectSubscribersFor.js","utils/observer/has.js","utils/observer/_hasSubscribers.js","utils/observer/emit.js","utils/types/isTypedArray.js","utils/lang/guid.js","utils/observer/_removeSubscriber.js","utils/observer/off.js","utils/observer/_removeSubscriberByToken.js","base.js","utils/observer/on.js","utils/types/isObjectLike.js","utils/types/isPlainObject.js","utils/lang/stripScripts.js","utils/lang/encodeHTML.js","utils/icons/createElement.js","utils/types/isSVG.js","utils/icons/icon.js","utils/icons/symbols.js","utils/icons/defaults.js","utils/icons/getSymbols.js","utils/icons/getSymbol.js","utils/icons/paint.js","utils/icons/add.js","utils/dom/matches.js","utils/dom/getParentOrHost.js","utils/event/on.js","utils/event/getTarget.js","utils/dom/resolveTextNode.js","utils/dom/closest.js","message.js","command.js","commands.js","_createButton.js","toolbar.js","_updateSiblingElements.js","reader.js","utils/event/stop.js","utils/event/at.js"],"sourcesContent":["/**\r\n * Object 对象原型上的 toString 方法\r\n * ========================================================================\r\n * @method toString\r\n * @param {*} val\r\n * @returns {string}\r\n */\r\nconst toString = (val) => {\r\n return Object.prototype.toString.apply(val)\r\n}\r\n\r\nexport default toString\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测测试数据是否为 Function 类型\r\n * ========================================================================\r\n * @method isFunction\r\n * @param {*} val - (必须)待检测的数据\r\n * @returns {boolean} 'val' 是 Function 类型返回 true,否则返回 false\r\n */\r\nconst isFunction = (val) => {\r\n return typeof val === 'function' || toString(val) === '[object Function]'\r\n}\r\n\r\nexport default isFunction\r\n","import toString from '../lang/toString'\r\nimport isFunction from './isFunction'\r\n\r\n/**\r\n * 检测数据是否为 Object 类型\r\n * ========================================================================\r\n * @method isObject\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isObject = (o) => {\r\n return (\r\n (toString(o) === '[object Object]' ||\r\n typeof o === 'object' ||\r\n isFunction(o)) &&\r\n o !== null\r\n )\r\n}\r\n\r\nexport default isObject\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测数据是否为 Array 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isArray = (o) => {\r\n if (Array.isArray) {\r\n return Array.isArray(o)\r\n } else {\r\n return toString(o) === '[object Array]'\r\n }\r\n}\r\n\r\nexport default isArray\r\n","import isObject from '../types/isObject'\r\nimport isArray from '../types/isArray'\r\n\r\n/**\r\n * 深拷贝对象函数\r\n * ========================================================================\r\n * @methods cloneDeep\r\n * @param {Object} obj - 深拷贝的对象\r\n * @returns {Array|Object|*}\r\n *\r\n * @example\r\n * const arr = cloneDeep([2,3,4,6])\r\n * => [2,3,4,6]\r\n */\r\nconst cloneDeep = (obj) => {\r\n let clone = {}\r\n\r\n if (obj === null) {\r\n return null\r\n }\r\n\r\n if (isArray(obj)) {\r\n clone = Array.from(obj)\r\n } else {\r\n clone = Object.assign({}, obj)\r\n Object.keys(clone).forEach((key) => {\r\n return (clone[key] = isObject(obj[key]) ? cloneDeep(obj[key]) : obj[key])\r\n })\r\n }\r\n\r\n return clone\r\n}\r\n\r\nexport default cloneDeep\r\n","import isFunction from '../types/isFunction'\r\n\r\n/**\r\n * later - 延迟执行方法\r\n * ========================================================================\r\n * @method later\r\n * @param {Function} fn\r\n * @param {Number} [delay]\r\n * @returns {number|boolean}\r\n */\r\nconst later = (fn, delay = 300) => {\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n return setTimeout(() => {\r\n fn()\r\n }, delay)\r\n}\r\n\r\nexport default later\r\n","/**\r\n * 检测数据是否为 String 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\nconst isString = (str) => {\r\n return typeof str === 'string'\r\n}\r\n\r\nexport default isString\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测数据是否为 HTMLElement DOM 节点\r\n * ========================================================================\r\n * @method isElement\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isElement = (o) => {\r\n return !!(isObject(o) && o.nodeName && o.tagName && o.nodeType === 1)\r\n}\r\n\r\nexport default isElement\r\n","import isObject from './isObject'\r\nimport isElement from './isElement'\r\nimport isHTMLCollection from './isHTMLCollection'\r\nimport isFragment from './isFragment'\r\nimport isTextNode from './isTextNode'\r\n\r\nconst isDOM = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (isElement(el) || isHTMLCollection(el) || isFragment(el) || isTextNode(el))\r\n )\r\n}\r\n\r\nexport default isDOM\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isHTMLCollection = (el) => {\r\n return !!(isObject(el) && toString(el) === '[object NodeList]')\r\n}\r\n\r\nexport default isHTMLCollection\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isFragment = (fragment) => {\r\n return !!(\r\n isObject(fragment) && toString(fragment) === '[object DocumentFragment]'\r\n )\r\n}\r\n\r\nexport default isFragment\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isTextNode = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (toString(el) === '[object Text]' || (el.tagName && el.nodeType === 3))\r\n )\r\n}\r\n\r\nexport default isTextNode\r\n","/**\r\n * 检测对象自身属性中是否具有指定的属性。\r\n * ========================================================================\r\n * @method hasOwn\r\n * @param {Object} obj - (必须)检测的目标对象\r\n * @param {String} prop - (必须)属性名\r\n * @returns {Boolean}\r\n */\r\nconst hasOwn = (obj, prop) => {\r\n const hasOwnProperty = Object.prototype.hasOwnProperty\r\n return obj && hasOwnProperty.call(obj, prop)\r\n}\r\n\r\nexport default hasOwn\r\n","/**\r\n * 给 DOM 节点设置属性/值\r\n * ========================================================================\r\n * @method setAttribute\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} attr - 属性名称\r\n * @param {String|Number|Boolean} value - 属性值\r\n */\r\nconst setAttribute = (el, attr, value) => {\r\n let tagName = el.tagName.toLowerCase()\r\n\r\n switch (attr) {\r\n case 'style':\r\n el.style.cssText = value\r\n break\r\n case 'value':\r\n if (tagName === 'input' || tagName === 'textarea') {\r\n el.value = value\r\n } else {\r\n el.setAttribute(attr, value)\r\n }\r\n break\r\n case 'htmlFor':\r\n el.setAttribute('for', value)\r\n break\r\n case 'className':\r\n el.className = value\r\n break\r\n case 'innerHTML':\r\n el.innerHTML = value\r\n break\r\n case 'innerText':\r\n el.innerText = value\r\n break\r\n default:\r\n el.setAttribute(attr, value)\r\n break\r\n }\r\n}\r\n\r\nexport default setAttribute\r\n","import isObject from '../types/isObject'\r\nimport hasOwn from '../lang/hasOwn'\r\nimport setAttribute from './setAttribute'\r\n\r\nconst setAttributes = (el, attrs) => {\r\n if (!el || !isObject(attrs)) {\r\n return false\r\n }\r\n\r\n Object.keys(attrs).forEach((attr) => {\r\n const value = attrs[attr]\r\n if (hasOwn(attrs, attr)) {\r\n setAttribute(el, attr, value)\r\n }\r\n })\r\n}\r\n\r\nexport default setAttributes\r\n","import isObject from '../types/isObject'\r\nimport isString from '../types/isString'\r\nimport isArray from '../types/isArray'\r\nimport isDOM from '../types/isDOM'\r\nimport setAttributes from './setAttributes'\r\n\r\n/**\r\n * 创建 DOM 节点,并添加属性和子节点\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} tagName - 标签名称\r\n * @param {Object|Array|HTMLElement|DocumentFragment|String} attrs - 属性对象或者子节点\r\n * @param {Array|HTMLElement|DocumentFragment|String} [children] - 子节点数组\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (tagName, attrs, children) => {\r\n const $fragment = document.createDocumentFragment()\r\n const $el = document.createElement(tagName)\r\n const isValidChild = (child) => {\r\n return isDOM(child) || isString(child)\r\n }\r\n const append = (child) => {\r\n let $child\r\n\r\n if (!isValidChild(child)) {\r\n return false\r\n }\r\n\r\n if (isDOM(child)) {\r\n $child = child\r\n } else if (isString(child)) {\r\n $child = document.createTextNode(child)\r\n }\r\n\r\n $fragment.appendChild($child)\r\n }\r\n\r\n if (isObject(attrs)) {\r\n setAttributes($el, attrs)\r\n } else if (isArray(attrs) && attrs.every((attr) => isValidChild(attr))) {\r\n attrs.forEach((child) => {\r\n append(child)\r\n })\r\n } else if (isDOM(attrs)) {\r\n append(attrs)\r\n } else if (isString(attrs)) {\r\n append(document.createTextNode(attrs))\r\n }\r\n\r\n if (isArray(children)) {\r\n children.forEach((child) => {\r\n append(child)\r\n })\r\n } else {\r\n append(children)\r\n }\r\n\r\n $el.appendChild($fragment)\r\n\r\n return $el\r\n}\r\n\r\nexport default createElement\r\n","import isElement from '../types/isElement'\r\n/**\r\n * 检测 DOM 节点是否包含名为 className 的样式\r\n * ========================================================================\r\n * @method hasClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst hasClass = (el, className) => {\r\n const pattern = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\r\n let allClass\r\n let classList\r\n\r\n if (!isElement(el)) {\r\n return false\r\n }\r\n\r\n allClass = el.className\r\n\r\n if (!allClass) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList && classList.contains) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!pattern.exec(allClass)\r\n}\r\n\r\nexport default hasClass\r\n","import hasClass from './hasClass'\r\n\r\n/**\r\n * 给 DOM 节点添加名为 className 的样式\r\n * ========================================================================\r\n * @method addClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst addClass = (el, className) => {\r\n let classList\r\n let allClass\r\n\r\n if (hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.add) {\r\n classList.add(className)\r\n } else {\r\n allClass = el.className\r\n allClass += allClass.length > 0 ? ' ' + className : className\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default addClass\r\n","import trim from '../lang/trim'\r\nimport hasClass from './hasClass'\r\n\r\n/**\r\n * 移除 DOM 节点的 className 样式\r\n * ========================================================================\r\n * @method removeClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst removeClass = (el, className) => {\r\n let allClass = el.className\r\n let classList\r\n\r\n if (!allClass || !hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.remove) {\r\n classList.remove(className)\r\n } else {\r\n allClass = trim(allClass.replace(className, ''))\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default removeClass\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 清楚字符串起始位置所有的空格\r\n * ========================================================================\r\n * @method trim\r\n * @param {string} str\r\n * @returns {string|Boolean}\r\n */\r\nconst trim = (str) => {\r\n if (!isString(str)) {\r\n return false\r\n }\r\n return str.replace(/(^\\s+)|(\\s+$)/g, '')\r\n}\r\n\r\nexport default trim\r\n","export const CAPTURE_EVENTS = [\r\n 'focusout',\r\n 'blur',\r\n 'focusin',\r\n 'focus',\r\n 'load',\r\n 'unload',\r\n 'mouseenter',\r\n 'mouseleave'\r\n]\r\n","import { CAPTURE_EVENTS } from './enum'\r\nimport _delete from './_delete'\r\n\r\n/**\r\n * (私有方法)取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method _off\r\n * @param {HTMLElement} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} fn - (必须)事件处理器回调函数\r\n * @private\r\n */\r\nconst _off = (el, type, fn) => {\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n /* istanbul ignore else */\r\n if (fn._delegateListener) {\r\n fn = fn._delegateListener\r\n delete fn._delegateListener\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n _delete(el, type, fn)\r\n\r\n el.removeEventListener(type, fn, capture)\r\n}\r\n\r\nexport default _off\r\n","/**\r\n * 删除 DOM 元素缓存的 _listeners 数据\r\n * ========================================================================\r\n * @method _delete\r\n * @param {HTMLElement} el - 要删除 listener 的 DOM 元素\r\n * @param {String} type - 事件类型(名称)\r\n * @param {Function} [fn] - 事件处理器回调函数\r\n */\r\nconst _delete = function (el, type, fn) {\r\n const listeners = el._listeners\r\n let index = -1\r\n\r\n if (listeners.length < 1) {\r\n return false\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n listeners.forEach((listener, i) => {\r\n const handler = listener.fn\r\n\r\n if (type === listener.type) {\r\n index = i\r\n\r\n if (handler === fn) {\r\n index = i\r\n }\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n}\r\n\r\nexport default _delete\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport getListeners from './getListeners'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 销毁(type 类型的)代理事件绑定\r\n * ========================================================================\r\n * 1. 设置了事件类型 type,则销毁指定类型的事件绑定,否则清除所有代理事件绑定\r\n * 2. recurse 设置为 true,递归销毁子节点全部事件绑定\r\n * ========================================================================\r\n * @method purgeElement\r\n * @param {HTMLElement|String} el - (必须)DOM 元素或者其选择器\r\n * @param {String|Boolean} type - (必须)事件类型\r\n * @param {Boolean} [recurse] - (可选)是否递归销毁子节点所有事件绑定\r\n */\r\nconst purgeElement = function (el, type, recurse = false) {\r\n const $element = isString(el) ? document.querySelector(el) : el\r\n const $children = $element.childNodes\r\n const listeners = getListeners($element, type)\r\n\r\n listeners.forEach((listener) => {\r\n _off($element, listener.type, listener.fn)\r\n })\r\n\r\n if (\r\n (recurse || type === true || arguments.length === 1) &&\r\n $element &&\r\n $children\r\n ) {\r\n $children.forEach(($child) => {\r\n if (isElement($child)) {\r\n purgeElement($child, type, recurse)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default purgeElement\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 获取 DOM 元素(type 事件类型)事件绑定信息\r\n * ========================================================================\r\n * 如果设置了事件类型 type, 则返回指定类型的事件绑定信息,否则返回所有事件绑定信息\r\n * ========================================================================\r\n * @methods getListeners\r\n * @param {HTMLElement} el - (必须)要获取事件绑定信息的 DOM 元素\r\n * @param {String} [type] - (可选)事件类型\r\n * @returns {Array} - 已绑定的事件信息\r\n */\r\nconst getListeners = (el, type) => {\r\n let listeners = el._listeners || []\r\n\r\n if (isString(type) && type) {\r\n listeners = listeners.filter((listener) => {\r\n return listener.type === type\r\n })\r\n }\r\n\r\n return listeners\r\n}\r\n\r\nexport default getListeners\r\n","import purgeElement from './purgeElement'\r\nimport isFunction from '../types/isFunction'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method off\r\n * @param {HTMLElement|Object} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} [fn] - (可选)事件处理器回调函数\r\n */\r\nconst off = (el, type, fn) => {\r\n // 如果不设置 fn 参数,默认清除 el 元素上绑定的所有事件处理器\r\n if (!isFunction(fn)) {\r\n purgeElement(el, type)\r\n return false\r\n }\r\n\r\n _off(el, type, fn)\r\n}\r\n\r\nexport default off\r\n","import hasOwn from './hasOwn'\r\n\r\n/**\r\n * 扩展对象\r\n * ========================================================================\r\n * @method extend\r\n * @param {Object} origin\r\n * @param {Object} source\r\n */\r\nconst extend = (origin, source) => {\r\n const keys = Object.keys(source)\r\n\r\n keys.forEach((prop) => {\r\n if (hasOwn(source, prop)) {\r\n origin[prop] = source[prop]\r\n }\r\n })\r\n}\r\n\r\nexport default extend\r\n","/**\r\n * 存储订阅者(主题和处理器的)私有对象\r\n * ========================================================================\r\n * @type {{}}\r\n * @private\r\n */\r\nconst _subscribers = {}\r\n\r\nexport default _subscribers\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 判断是否存在与给定 topic 完全匹配的订阅者信息\r\n * ========================================================================\r\n * @method _hasDirectSubscribersFor\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasDirectSubscribersFor = (topic) => {\r\n return hasOwn(_subscribers, topic) && _subscribers[topic].length > 0\r\n}\r\n\r\nexport default _hasDirectSubscribersFor\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\nimport _hasSubscribers from './_hasSubscribers'\r\n\r\n/**\r\n * 判断是否存在包含 topic 指定的订阅者信息\r\n * ========================================================================\r\n * @method has\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Boolean} [isDirect] - (可选)是否为直接的主题,默认值:true\r\n * @returns {Boolean}\r\n */\r\nconst has = (topic, isDirect = true) => {\r\n return isDirect ? _hasDirectSubscribersFor(topic) : _hasSubscribers(topic)\r\n}\r\n\r\nexport default has\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * 判断是否存在包含给定 topic 相关的订阅者信息\r\n * ========================================================================\r\n * @method _hasSubscribers\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasSubscribers = (topic) => {\r\n let found = _hasDirectSubscribersFor(topic)\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (!found && position !== -1) {\r\n topic = topic.substring(0, position)\r\n position = topic.lastIndexOf('.')\r\n found = _hasDirectSubscribersFor(topic)\r\n }\r\n\r\n return found\r\n}\r\n\r\nexport default _hasSubscribers\r\n","import isTypedArray from '../types/isTypedArray'\r\nimport _subscribers from './_subscribers'\r\nimport has from './has'\r\nimport _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * (异步)发布订阅主题信息\r\n * ========================================================================\r\n * 主题默认是异步发布的。确保在消费者处理主题时,主题的发起者不会被阻止。\r\n * ========================================================================\r\n * @method emit\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Object} [data] - (可选)数据对象\r\n * @param {Boolean} [async] - (可选) 是否异步发布\r\n */\r\nconst emit = (topic, data, async = true) => {\r\n const execute = (topic) => {\r\n if (!_hasDirectSubscribersFor(topic)) {\r\n return false\r\n }\r\n\r\n _subscribers[topic].forEach((subscriber) => {\r\n // 针对 mqtt 消息服务返回的 Uint8Array 类似的 typed arrays 格式的数据\r\n // 采用 toString() 方法转化为普通(JSON)字符串\r\n const message = isTypedArray(data) ? data.toString() : data\r\n\r\n subscriber.callback.call(subscriber.context || subscriber, message)\r\n })\r\n }\r\n const deliver = () => {\r\n let subscriber = topic\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (position !== -1) {\r\n subscriber = subscriber.substring(0, position)\r\n position = subscriber.lastIndexOf('.')\r\n\r\n execute(subscriber)\r\n }\r\n\r\n // 执行 topic 对应的处理器\r\n execute(topic)\r\n // 执行特殊 topic:'*'(监听全部消息的发布)\r\n execute('*')\r\n }\r\n\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (async) {\r\n setTimeout(deliver, 10)\r\n } else {\r\n deliver()\r\n }\r\n}\r\n\r\nexport default emit\r\n","import toString from '../lang/toString'\r\n/**\r\n * 判断检测数据是否为 Typed Arrays 类型的数据\r\n * ========================================================================\r\n * @param {*} val\r\n * @returns {boolean}\r\n */\r\nconst isTypedArray = (val) => {\r\n const TYPES = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]',\r\n '[object BigInt64Array]',\r\n '[object BigUint64Array]'\r\n ]\r\n\r\n return TYPES.indexOf(toString(val)) > -1\r\n}\r\n\r\nexport default isTypedArray\r\n","/**\r\n * 生成唯一 id 字符串的函数\r\n * ========================================================================\r\n * @method guid\r\n * @param {String} [prefix] - 生成 id 的前缀字符串\r\n * @return {String} 返回一个表示唯一 id 的字符串\r\n */\r\nconst guid = (() => {\r\n let uuid = 0\r\n\r\n return (prefix) => {\r\n uuid += 1\r\n\r\n return prefix ? prefix + '-' + uuid : 'guid-' + uuid\r\n }\r\n})()\r\n\r\nexport default guid\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 删除与给定 topic 相同的订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriber\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _removeSubscriber = (topic) => {\r\n if (!hasOwn(_subscribers, topic)) {\r\n return false\r\n }\r\n\r\n delete _subscribers[topic]\r\n}\r\n\r\nexport default _removeSubscriber\r\n","import has from './has'\r\nimport _removeSubscriber from './_removeSubscriber'\r\nimport _removeSubscriberByToken from './_removeSubscriberByToken'\r\n\r\n/**\r\n * 取消订阅主题\r\n * ========================================================================\r\n * @method off\r\n * @param {String} topic - (必须)订阅的主题\r\n * @param {Function|String} [token] - (可选)订阅主题的处理器函数或者唯一 Id 值\r\n */\r\nconst off = (topic, token) => {\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (token) {\r\n _removeSubscriberByToken(token)\r\n } else {\r\n _removeSubscriber(topic)\r\n }\r\n}\r\n\r\nexport default off\r\n","import _subscribers from './_subscribers'\r\nimport _removeSubscriber from './_removeSubscriber'\r\n\r\n/**\r\n * 通过订阅者 token 值删除订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriberByToken\r\n * @param {String} token - 订阅者 token 字符串\r\n * @returns {boolean}\r\n * @private\r\n */\r\nconst _removeSubscriberByToken = (token) => {\r\n const keys = Object.keys(_subscribers)\r\n let index = -1\r\n\r\n if (!token || keys.length < 1) {\r\n return false\r\n }\r\n\r\n keys.forEach((subject) => {\r\n const subscriber = _subscribers[subject]\r\n let topic\r\n\r\n subscriber.forEach((execution, j) => {\r\n if (execution.callback === token || execution.token === token) {\r\n topic = execution.topic\r\n subscriber.splice(index, j)\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (subscriber.length < 1) {\r\n _removeSubscriber(topic)\r\n }\r\n })\r\n}\r\n\r\nexport default _removeSubscriberByToken\r\n","import isString from './utils/types/isString'\r\nimport hasOwn from './utils/lang/hasOwn'\r\nimport isObject from './utils/types/isObject'\r\nimport extend from './utils/lang/extend'\r\nimport publish from './utils/observer/emit'\r\nimport subscribe from './utils/observer/on'\r\nimport unsubscribe from './utils/observer/off'\r\n\r\nclass Base {\r\n constructor(options) {\r\n this.attrs = {}\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options).render().addListeners()\r\n return this\r\n }\r\n\r\n attr(prop, value) {\r\n const attrs = this.attrs\r\n\r\n if (isString(prop)) {\r\n // 只能扩展 attrs 中已有的属性\r\n if (value && hasOwn(attrs, prop)) {\r\n // 更新单个配置信息\r\n attrs[prop] = value\r\n return this\r\n }\r\n\r\n // 只传递 prop 参数,则返回对应的属性值\r\n return attrs[prop]\r\n } else if (isObject(prop)) {\r\n // 批量更新配置信息\r\n extend(attrs, prop)\r\n\r\n return this\r\n } else if (arguments.length === 0) {\r\n // 不传递参数,直接返回整个\r\n return attrs\r\n }\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n return this\r\n }\r\n\r\n refresh() {\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.removeListeners()\r\n return this\r\n }\r\n\r\n reload(options) {\r\n let attrs = this.attr()\r\n\r\n if (options) {\r\n attrs = this.attr(options)\r\n }\r\n\r\n this.destroy().initialize(attrs)\r\n\r\n return this\r\n }\r\n\r\n $emit(event, data) {\r\n publish(event, data)\r\n return this\r\n }\r\n\r\n $on(event, callback) {\r\n subscribe(event, callback, this)\r\n return this\r\n }\r\n\r\n $off(event, callback) {\r\n unsubscribe(event, callback)\r\n return this\r\n }\r\n\r\n addListeners() {\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n return this\r\n }\r\n}\r\n\r\nexport default Base\r\n","import _subscribers from './_subscribers'\r\nimport isFunction from '../types/isFunction'\r\nimport guid from '../lang/guid'\r\n\r\n/**\r\n * 订阅主题,并给出处理器函数\r\n * ========================================================================\r\n * @method on\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Function} handler - (必须)主题的处理器函数\r\n * @param {Object} [context] - (可选)指定 this 执行上下文\r\n * @return {String} - 唯一的 token 字符串,例如:'guid-1'。\r\n */\r\nconst on = (topic, handler, context = null) => {\r\n const token = guid()\r\n let subject = typeof topic === 'symbol' ? topic.toString() : topic\r\n\r\n if (!isFunction(handler)) {\r\n return ''\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (!_subscribers[subject]) {\r\n _subscribers[subject] = []\r\n }\r\n\r\n _subscribers[subject].push({\r\n topic: subject,\r\n callback: handler,\r\n context,\r\n token\r\n })\r\n\r\n return token\r\n}\r\n\r\nexport default on\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测测试数据是否为类似 Object 类型\r\n * ========================================================================\r\n * @method isObjectLike\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是类似 Object 类型,返回 true,否则返回 false\r\n */\r\nconst isObjectLike = (val) => {\r\n return isObject(val) && val !== null\r\n}\r\n\r\nexport default isObjectLike\r\n","import isObjectLike from './isObjectLike'\r\n\r\n/**\r\n * 检测测试数据是否为普通对象\r\n * ========================================================================\r\n * @method isPlainObject\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是普通对象,返回 true,否则返回 false\r\n */\r\nconst isPlainObject = (val) => {\r\n const getPrototypeOf = Object.getPrototypeOf\r\n let proto\r\n\r\n // Detect obvious negatives\r\n if (!isObjectLike(val)) {\r\n return false\r\n }\r\n\r\n proto = val.prototype\r\n\r\n // JavaScript 对象分为两种:普通对象和函数对象\r\n // 普通对象:原型是 __proto__,没有 prototype 原型(属性)\r\n // 函数对象:原型是 prototype ,prototype 只存在于函数对象上\r\n if (!proto) {\r\n return true\r\n }\r\n\r\n proto = val\r\n\r\n while (getPrototypeOf(proto) !== null) {\r\n proto = getPrototypeOf(proto)\r\n }\r\n\r\n return getPrototypeOf(val) === proto\r\n}\r\n\r\nexport default isPlainObject\r\n","/**\r\n * 移除字符串中的 JavaScript 代码\r\n * ====================================================\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nconst stripScripts = (str) => {\r\n return str.replace(/]*>.*?<\\/script>/gi, '')\r\n}\r\n\r\nexport default stripScripts\r\n","/**\r\n * 转义字符串中的 HTML 标签\r\n *\r\n * @param {String} str - 需要转义的字符串\r\n * @returns {String}\r\n */\r\nconst encodeHTML = (str) => {\r\n const CHARTS = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": ''',\r\n '\"': '"'\r\n }\r\n\r\n return str.replace(/[&<>'\"]/g, (tag) => {\r\n return CHARTS[tag] || tag\r\n })\r\n}\r\n\r\nexport default encodeHTML\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport isSVG from '../types/isSVG'\r\nimport setAttributes from '../dom/setAttributes'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @param {Object} [options.attrs]\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (name, options = {}) => {\r\n const ICON = 'outline-icon'\r\n const size = options.size || 0\r\n const color = options.color || ''\r\n const iconSet = options.iconSet || ''\r\n const width = isArray(size) ? size[0] : size\r\n const height = isArray(size) ? size[1] : size\r\n const defaultRules = size ? `width:${width}px;height:${height}px;` : ''\r\n const cssRules = color ? defaultRules + `color:${color}` : defaultRules\r\n const attrs = options.attrs || {}\r\n const $icon = document.createElement('i')\r\n let binds = ''\r\n let svg = ''\r\n let $svg\r\n\r\n if (!isString(name)) {\r\n return null\r\n }\r\n\r\n if (isSVG(name)) {\r\n svg = name\r\n } else {\r\n binds =\r\n iconSet && iconSet !== 'icon'\r\n ? `xlink:href=\"#${iconSet}-icon-${name}\"`\r\n : `xlink:href=\"#icon-${name}\"`\r\n svg = ``\r\n }\r\n\r\n $icon.innerHTML = svg\r\n\r\n if (attrs.className) {\r\n attrs.className = `${ICON} ${attrs.className}`\r\n } else {\r\n attrs.className = ICON\r\n }\r\n\r\n setAttributes($icon, attrs)\r\n\r\n $svg = $icon.querySelector('svg')\r\n setAttributes($svg, {\r\n 'aria-hidden': true,\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n class: 'outline-icon__svg',\r\n width: 200,\r\n height: 200,\r\n style: cssRules\r\n })\r\n\r\n return $icon\r\n}\r\n\r\nexport default createElement\r\n","import isString from './isString'\r\n\r\nconst isSVG = (str) => {\r\n const declaration = '(?:<\\\\?xml[^>]*>\\\\s*)?'\r\n const doctype =\r\n '(?:<\\\\!doctype svg[^>]*\\\\s*(?:\\\\[?(?:\\\\s*]*>\\\\s*)*\\\\]?)*[^>]*>\\\\s*)?'\r\n const content = ']*>[^]*<\\\\/svg>\\\\s*$'\r\n const svg = `^\\\\s*${declaration}${doctype}${content}\\\\s*$`\r\n const pattern = new RegExp(svg, 'i')\r\n\r\n return isString(str) && pattern.test(str)\r\n}\r\n\r\nexport default isSVG\r\n","import createElement from './createElement'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method icon\r\n * @alias createElement\r\n * @see createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @returns {HTMLElement}\r\n */\r\nconst icon = (name, options = {}) => {\r\n return createElement(name, options)\r\n}\r\n\r\nexport default icon\r\n","import DEFAULTS from './defaults'\r\n\r\nconst SYMBOLS = [...DEFAULTS]\r\n\r\nexport default SYMBOLS\r\n","const DEFAULTS = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n]\r\n\r\nexport default DEFAULTS\r\n","import isString from '../types/isString'\r\nimport getSymbol from './getSymbol'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n *\r\n * @method getSymbols\r\n * @param {String} [name]\r\n * @param {String} [iconSet]\r\n * @returns {string[]|*}\r\n */\r\nconst getSymbols = (name, iconSet = 'icon') => {\r\n if (isString(name)) {\r\n return getSymbol(name, iconSet)\r\n }\r\n\r\n return [...SYMBOLS]\r\n}\r\n\r\nexport default getSymbols\r\n","import SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method getSymbol\r\n * @param {String} name\r\n * @param {String} [iconSet]\r\n * @returns {String}\r\n */\r\nconst getSymbol = (name, iconSet = 'icon') => {\r\n const patternName = /id=\"(.*?)\"/\r\n const patternSet = /^(\\w+)-/\r\n const symbols = SYMBOLS\r\n\r\n return symbols.find((symbol) => {\r\n const names = patternName.exec(symbol)\r\n const fullName = names[1]\r\n const sets = patternSet.exec(fullName)\r\n const setName = sets[1]\r\n const iconName =\r\n iconSet === 'icon' ? `${iconSet}-${name}` : `${iconSet}-icon-${name}`\r\n\r\n return setName === iconSet && fullName === iconName\r\n })\r\n}\r\n\r\nexport default getSymbol\r\n","import add from './add'\r\nimport getSymbols from './getSymbols'\r\n\r\n/**\r\n * 绘制 SVG 图标集\r\n * ========================================================================\r\n * @method paint\r\n * @param {String|Array} symbol\r\n */\r\nconst paint = (symbol = '') => {\r\n const $body = document.body\r\n let $icons = document.querySelector('#outline-icons')\r\n let symbols = []\r\n\r\n add(symbol)\r\n symbols = getSymbols()\r\n\r\n if ($icons) {\r\n $icons.innerHTML = symbols.join('')\r\n } else {\r\n $icons = document.createElement('div')\r\n $icons.innerHTML =\r\n ``\r\n $body.insertBefore($icons.firstChild, $body.firstChild)\r\n }\r\n}\r\n\r\nexport default paint\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method add\r\n * @param {Array|String} symbols\r\n * @return {Boolean}\r\n */\r\nconst add = (symbols) => {\r\n if (!symbols) {\r\n return false\r\n }\r\n\r\n if (isArray(symbols) && symbols.length > 0) {\r\n symbols.forEach((symbol) => {\r\n /* istanbul ignore else */\r\n if (SYMBOLS.indexOf(symbol) === -1 && isString(symbol)) {\r\n SYMBOLS.push(symbol)\r\n }\r\n })\r\n } else {\r\n /* istanbul ignore else */\r\n if (isString(symbols)) {\r\n SYMBOLS.push(symbols)\r\n }\r\n }\r\n}\r\n\r\nexport default add\r\n","/**\r\n * 获取 options 节点下匹配 selector 选择器的 DOM 节点\r\n * ========================================================================\r\n * Element.matches() 方法可以用来判断 DOM 元素是否与给定的选择器匹配,事件代理判断是\r\n * 否触发绑定的代理事件回调函数,关键就是使用 Element.matches() 辨别当前事件触发的目\r\n * 标 DOM 元素是否为事件代理所期望触发的目标。\r\n * ========================================================================\r\n * @method matches\r\n * @see https://developer.mozilla.org/en-US/docs/web/api/element/matches\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)匹配 DOM 元素的选择器\r\n * @returns {Boolean}\r\n */\r\nconst matches = (el, selector = '') => {\r\n const sel = selector.replace(/^>/i, '')\r\n\r\n if (!selector || !sel || !el) {\r\n return false\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el.matches) {\r\n return el.matches(sel)\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(sel)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport default matches\r\n","/**\r\n * 获取 DOM 元素的父节点\r\n * ========================================================================\r\n * @method getParentOrHost\r\n * @param {*|HTMLElement} el - (必须)要获取父节点的 DOM 元素\r\n * @returns {*|HTMLElement}\r\n */\r\nconst getParentOrHost = (el) => {\r\n return el.host && el !== document && el.host.nodeType\r\n ? el.host\r\n : el.parentNode\r\n}\r\n\r\nexport default getParentOrHost\r\n","import closest from '../dom/closest'\r\nimport off from './off'\r\nimport getTarget from './getTarget'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定代理事件\r\n * ========================================================================\r\n * @method on\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String} selector - (必须)事件代理目标 DOM 元素的选择器\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (可选) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst on = (el, selector, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n const listener = function (evt) {\r\n const target = getTarget(evt)\r\n // 通过 Element.matches 方法获得点击的目标元素\r\n const delegateTarget = closest(target, selector, el)\r\n let overrideContext = context || el\r\n\r\n evt.delegateTarget = delegateTarget\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (delegateTarget) {\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n }\r\n\r\n if (!el) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n selector,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default on\r\n","import resolveTextNode from '../dom/resolveTextNode'\r\n\r\n/**\r\n * 返回触发事件的 target DOM 元素\r\n * ========================================================================\r\n * @method getTarget\r\n * @param {Event} evt - Event 对象\r\n * @return {HTMLElement} - Event 对象的 target DOM 元素\r\n */\r\nconst getTarget = function (evt) {\r\n const target = evt.target\r\n\r\n return resolveTextNode(target)\r\n}\r\n\r\nexport default getTarget\r\n","/**\r\n * 在某些情况下,某些浏览器(例如:Safari 浏览器)会返回实际的目标元素内部的文本节点。\r\n * resolveTextNode() 方法则会返回实际的目标节点。\r\n * ========================================================================\r\n * @method resolveTextNode\r\n * @param {HTMLElement|Text} el - 要解析的节点\r\n * @return {*|HTMLElement} - 实际的目标 DOM 节点\r\n */\r\nconst resolveTextNode = function (el) {\r\n if (el && el.nodeType === 3) {\r\n return el.parentNode\r\n }\r\n\r\n return el\r\n}\r\n\r\nexport default resolveTextNode\r\n","import matches from './matches'\r\nimport getParentOrHost from './getParentOrHost'\r\n\r\n/**\r\n * 获取 options 元素父元素最近的包含 selector 选择器的元素\r\n * ========================================================================\r\n * @method closest\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)DOM 元素的选择其\r\n * @param {HTMLElement} [ctx] - (必须)比对的 DOM 元素\r\n * @param {Boolean} [includeCTX] - (必须)是否包含 context DOM 元素\r\n * @returns {null|HTMLElement} - 返回最接近的 DOM 元素\r\n */\r\nconst closest = (el, selector, ctx, includeCTX) => {\r\n const context = ctx || document\r\n\r\n if (!el) {\r\n return null\r\n }\r\n\r\n do {\r\n /* istanbul ignore else */\r\n if (\r\n (selector != null &&\r\n (selector.startsWith('>')\r\n ? el.parentNode === context && matches(el, selector)\r\n : matches(el, selector))) ||\r\n (includeCTX && el === context)\r\n ) {\r\n return el\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el === context) {\r\n break\r\n }\r\n\r\n /* jshint boss:true */\r\n } while ((el = getParentOrHost(el)))\r\n}\r\n\r\nexport default closest\r\n","import isString from './utils/types/isString'\r\nimport isPlainObject from './utils/types/isPlainObject'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport extend from './utils/lang/extend'\r\nimport later from './utils/lang/later'\r\nimport stripScripts from './utils/lang/stripScripts'\r\nimport encodeHTML from './utils/lang/encodeHTML'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport guid from './utils/lang/guid'\r\n\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport setAttribute from './utils/dom/setAttribute'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\nimport paint from './utils/icons/paint'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\n\r\nconst TYPES = ['info', 'success', 'warning', 'error']\r\nconst instances = []\r\nlet instance\r\n\r\npaint()\r\n\r\nclass Message extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Message.DEFAULTS)\r\n\r\n this.$el = null\r\n this.id = ''\r\n this.closed = false\r\n this.visible = false\r\n this.offset = -50\r\n this.timer = null\r\n this.destroyed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options)\r\n this.id = this.attr('id')\r\n this.offset = this.attr('offset') || -50\r\n\r\n this.$emit('created', { ...this.attr() })\r\n\r\n this.render().addListeners()\r\n\r\n if (this.attr('visible')) {\r\n this.open()\r\n }\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isDestroyed() {\r\n return this.destroyed\r\n }\r\n\r\n _getClassName() {\r\n const type = this.attr('type')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const visible = this.attr('visible')\r\n const customClass = this.attr('customClass')\r\n const className = [\r\n 'outline-message',\r\n `outline-message_${type}`,\r\n `outline-message_${effect}`\r\n ]\r\n\r\n if (round) {\r\n className.push('outline-message_round')\r\n }\r\n\r\n if (!closable) {\r\n className.push('outline-message_full-width')\r\n }\r\n\r\n if (visible) {\r\n className.push('outline-message_visible')\r\n }\r\n\r\n if (customClass) {\r\n className.push(customClass)\r\n }\r\n\r\n return className\r\n }\r\n\r\n render() {\r\n const type = this.attr('type')\r\n const message = this.attr('message')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n const className = this._getClassName()\r\n const iconName = effect === 'light' ? `circle-${type}` : type\r\n const children = []\r\n let iconSize = 20\r\n let $type\r\n let $message\r\n let $text\r\n let $close\r\n let $el\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n\r\n if (effect !== 'plain') {\r\n $type = icon(iconName, {\r\n iconSet: 'outline',\r\n size: iconSize\r\n })\r\n addClass($type, 'outline-message__icon')\r\n children.push($type)\r\n }\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n $text = document.createTextNode(encodeHTML(stripScripts(message)))\r\n } else {\r\n $text = document.createDocumentFragment()\r\n $text.innerHTML = message\r\n }\r\n $message = createElement(\r\n 'p',\r\n {\r\n className: 'outline-message__content'\r\n },\r\n [$text]\r\n )\r\n children.push($message)\r\n\r\n if (closable) {\r\n $close = icon('close', {\r\n iconSet: 'outline',\r\n size: 18\r\n })\r\n addClass($close, 'outline-message__close')\r\n children.push($close)\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: className.join(' ')\r\n },\r\n children\r\n )\r\n $el.style.cssText = `top:-50px;`\r\n this.$el = $el\r\n document.body.appendChild(this.$el)\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n _refreshIcon() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let iconSize = 20\r\n let type\r\n let effect\r\n let round\r\n let iconName\r\n let $icon\r\n let $svg\r\n let $use\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $icon = $el.querySelector('.outline-icon')\r\n\r\n if (!$icon) {\r\n return this\r\n }\r\n\r\n type = this.attr('type')\r\n effect = this.attr('effect')\r\n round = this.attr('round')\r\n\r\n if (effect === 'plain') {\r\n addClass($icon, HIDDEN)\r\n } else {\r\n removeClass($icon, HIDDEN)\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n }\r\n\r\n $svg = $icon.querySelector('.outline-icon__svg')\r\n setAttributes($svg, {\r\n style: `width:${iconSize}px;height:${iconSize}px;`\r\n })\r\n\r\n $use = $svg.querySelector('use')\r\n iconName = effect === 'light' ? `circle-${type}` : type\r\n setAttribute($use, 'xlink:href', `#outline-icon-${iconName}`)\r\n\r\n return this\r\n }\r\n\r\n _refreshMessage() {\r\n const $el = this.$el\r\n let $message\r\n let dangerouslyUseHTMLString\r\n let message\r\n let text\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $message = $el.querySelector('.outline-message__content')\r\n dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n message = this.attr('message')\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n text = encodeHTML(stripScripts(message))\r\n } else {\r\n text = message\r\n }\r\n\r\n $message.innerHTML = text\r\n\r\n return this\r\n }\r\n\r\n _refreshClose() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let $close\r\n let closable\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $close = $el.querySelector('.outline-message__close')\r\n closable = this.attr('closable')\r\n\r\n if ($close) {\r\n if (closable) {\r\n addClass($close, HIDDEN)\r\n } else {\r\n removeClass($close, HIDDEN)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n _refreshEl() {\r\n const $el = this.$el\r\n let className\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n className = this._getClassName()\r\n setAttribute($el, 'className', className.join(' '))\r\n\r\n return this\r\n }\r\n\r\n refresh(options) {\r\n if (!isPlainObject(options)) {\r\n return this\r\n }\r\n\r\n this.attr(options)\r\n ._refreshIcon()\r\n ._refreshMessage()\r\n ._refreshClose()\r\n ._refreshEl()\r\n\r\n return this\r\n }\r\n\r\n clearTimer() {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n this.timer = null\r\n }\r\n\r\n return this\r\n }\r\n\r\n startTimer(duration) {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.timer = later(() => {\r\n this.$emit('opened')\r\n this.close()\r\n }, duration * 1000)\r\n\r\n return this\r\n }\r\n\r\n open(options) {\r\n const $el = this.$el\r\n let offset\r\n let duration\r\n let top\r\n let cssRules\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.isClosed()) {\r\n this.refresh(options)\r\n }\r\n\r\n offset = this.attr('offset')\r\n duration = this.attr('duration')\r\n top = offset && offset >= this.offset ? offset : this.offset\r\n cssRules = `top:${top}px;`\r\n\r\n this.clearTimer()\r\n\r\n this.$emit('beforeOpen')\r\n\r\n later(() => {\r\n this.visible = true\r\n\r\n addClass($el, 'outline-message_visible')\r\n $el.style.cssText = cssRules\r\n\r\n if (duration > 0) {\r\n this.startTimer(duration)\r\n }\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const $el = this.$el\r\n const cssRules = `top:-50px;`\r\n let destroyAfterClosed\r\n let beforeClose\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n destroyAfterClosed = this.attr('destroyAfterClosed')\r\n beforeClose = this.attr('beforeClose')\r\n\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(this)\r\n }\r\n\r\n $el.style.cssText = cssRules\r\n removeClass($el, 'outline-message_visible')\r\n\r\n this.visible = false\r\n this.closed = true\r\n\r\n later(() => {\r\n this.$emit('closed')\r\n\r\n if (destroyAfterClosed) {\r\n this.destroy()\r\n }\r\n }, 500)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.removeListeners()\r\n\r\n document.body.removeChild(this.$el)\r\n\r\n clearTimeout(this.timer)\r\n this._default()\r\n\r\n this.$emit('afterDestroy')\r\n\r\n return this\r\n }\r\n\r\n onMouseEnter() {\r\n this.clearTimer()\r\n return this\r\n }\r\n\r\n onMouseLeave() {\r\n const duration = this.attr('duration')\r\n const delay = this.attr('delay')\r\n\r\n if (duration <= 0) {\r\n return this\r\n }\r\n\r\n this.startTimer(delay)\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.clearTimer()\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseenter',\r\n this.onMouseEnter,\r\n this,\r\n true\r\n )\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseleave',\r\n this.onMouseLeave,\r\n this,\r\n true\r\n )\r\n on($el, '.outline-message__close', 'click', this.onClose, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $el = this.$el\r\n\r\n off($el, 'mouseenter', this.onMouseEnter)\r\n off($el, 'mouseleave', this.onMouseLeave)\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nMessage.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n id: '',\r\n type: 'info',\r\n effect: 'default',\r\n round: false,\r\n offset: 30,\r\n duration: 3,\r\n delay: 2,\r\n message: '',\r\n customClass: '',\r\n closable: true,\r\n visible: true,\r\n dangerouslyUseHTMLString: false,\r\n destroyAfterClosed: true,\r\n beforeClose: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nTYPES.forEach((type) => {\r\n Message[type] = (options) => {\r\n const config = {}\r\n const id = guid(`outline-message-`)\r\n const beforeClose = options.beforeClose || null\r\n let offset = options.offset || 30\r\n\r\n if (isString(options)) {\r\n config.message = options\r\n } else {\r\n if (isPlainObject(options)) {\r\n extend(config, options)\r\n }\r\n }\r\n config.id = id\r\n config.type = type\r\n config.offset = offset\r\n config.visible = false\r\n config.beforeClose = () => {\r\n Message.close(id, beforeClose)\r\n }\r\n\r\n instance = new Message(config)\r\n instances.forEach((item) => {\r\n offset += item.$el.offsetHeight + 16\r\n })\r\n instance.offset = offset\r\n instance.open()\r\n instances.push(instance)\r\n\r\n return instance\r\n }\r\n})\r\n\r\n// 关闭指定 id 消息的静态方法\r\nMessage.close = (id, beforeClose) => {\r\n const len = instances.length\r\n let index = -1\r\n let i\r\n let offsetHeight\r\n\r\n instances.forEach((instance, i) => {\r\n // 在 instances 中通过 id 找到要关闭的消息\r\n if (id === instance.id) {\r\n offsetHeight = instance.$el.offsetHeight\r\n index = i\r\n\r\n // 关闭消息\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(instance)\r\n }\r\n\r\n instances.splice(i, 1)\r\n }\r\n })\r\n\r\n if (len <= 1 || index === -1 || index > instances.length - 1) {\r\n return false\r\n }\r\n\r\n i = index\r\n\r\n // 界面中的消息逐个向上收起\r\n for (; i < len - 1; i += 1) {\r\n const dom = instances[i].$el\r\n\r\n dom.style['top'] = parseInt(dom.style['top'], 10) - offsetHeight - 16 + 'px'\r\n }\r\n}\r\n\r\n// 关闭所有消息的静态方法\r\nMessage.clear = () => {\r\n let i = instances.length - 1\r\n for (; i >= 0; i -= 1) {\r\n instances[i].close()\r\n }\r\n}\r\n\r\nexport default Message\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Command {\r\n constructor(name, action) {\r\n this.name = name\r\n\r\n if (isFunction(action)) {\r\n this.action = action\r\n }\r\n }\r\n\r\n execute() {\r\n this.action()\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Command\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Commands {\r\n constructor() {\r\n this.commands = []\r\n }\r\n\r\n get(name) {\r\n return this.commands.find((cmd) => cmd.name === name)\r\n }\r\n\r\n add(command) {\r\n this.commands.push(command)\r\n\r\n return this\r\n }\r\n\r\n del(name) {\r\n const commands = this.commands\r\n const command = commands.find((cmd) => cmd.name === name)\r\n const index = command ? commands.indexOf(command) : -1\r\n\r\n if (index > -1) {\r\n commands.splice(index, 1)\r\n }\r\n\r\n return this\r\n }\r\n\r\n clear() {\r\n this.commands = []\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n const command = this.commands.find((cmd) => cmd.name === name)\r\n\r\n if (isFunction(command?.execute)) {\r\n command.execute()\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Commands\r\n","import icon from './utils/icons/icon'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\n\r\nconst _createButton = (button, rounded = true) => {\r\n const $icon = icon(button.icon, {\r\n iconSet: button.iconSet || 'outline',\r\n color: button.color || '',\r\n size: button.size\r\n })\r\n const $anchor = createElement(\r\n 'a',\r\n {\r\n className: `outline-toolbar__anchor`,\r\n href: button.link\r\n },\r\n $icon\r\n )\r\n const $button = createElement(\r\n 'div',\r\n {\r\n className: `outline-toolbar__button ${button.name}`,\r\n 'data-cmd': button.name\r\n },\r\n [button.link ? $anchor : $icon]\r\n )\r\n\r\n addClass($icon, 'outline-toolbar__icon')\r\n\r\n if (rounded) {\r\n addClass($button, 'outline-toolbar_rounded')\r\n }\r\n\r\n if (button.disabled) {\r\n addClass($button, 'outline-toolbar_disabled')\r\n }\r\n\r\n return $button\r\n}\r\n\r\nexport default _createButton\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isObject from './utils/types/isObject'\r\nimport isArray from './utils/types/isArray'\r\nimport later from './utils/lang/later'\r\nimport guid from './utils/lang/guid'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport hasClass from './utils/dom/hasClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport Base from './base'\r\nimport Command from './command'\r\nimport Commands from './commands'\r\n\r\nimport _createButton from './_createButton'\r\n\r\nconst DISABLED = 'outline-toolbar_disabled'\r\nconst HIDDEN = 'outline-toolbar_hidden'\r\n\r\nclass Toolbar extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Toolbar.DEFAULTS)\r\n\r\n this.disabled = false\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.buttons = []\r\n this.commands = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.disabled = this.attr('disabled')\r\n this.closed = this.attr('closed')\r\n this.commands = new Commands()\r\n\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n isDisabled(name) {\r\n let button\r\n\r\n if (name) {\r\n button = this.get(name)\r\n\r\n return button.disabled\r\n }\r\n\r\n return this.disabled\r\n }\r\n\r\n isExist(name) {\r\n const button = this.get(name)\r\n return !!button\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n _getCommand(button) {\r\n const _self = this\r\n const { action, name } = button\r\n let command = null\r\n let handler = null\r\n let context\r\n let listener\r\n\r\n if (!action) {\r\n return command\r\n }\r\n\r\n handler = action.handler\r\n context = action.context || this\r\n\r\n if (isFunction(handler)) {\r\n listener = handler\r\n } else if (isString(handler)) {\r\n listener = function () {\r\n _self.$emit(handler, name)\r\n }\r\n }\r\n\r\n if (isFunction(listener)) {\r\n command = new Command(name, listener.bind(context))\r\n }\r\n\r\n return command\r\n }\r\n\r\n get(name) {\r\n return this.buttons.find((button) => button.name === name)\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const buttons = this.attr('buttons') || []\r\n const placement = this.attr('placement')\r\n\r\n paint()\r\n\r\n this.$el = createElement('div', {\r\n id: guid('outline-toolbar'),\r\n className: `outline-toolbar outline-toolbar_${placement}`\r\n })\r\n this._paint(buttons)\r\n document.body.appendChild(this.$el)\r\n\r\n if (this.closed) {\r\n this.hide()\r\n }\r\n\r\n if (this.disabled) {\r\n this.disable()\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$el.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(buttons) {\r\n const rounded = this.attr('rounded')\r\n const $fragment = document.createDocumentFragment()\r\n\r\n buttons.forEach((button) => {\r\n const $button = _createButton(button, rounded)\r\n const command = this._getCommand(button)\r\n const { name, disabled, context } = button\r\n\r\n $fragment.appendChild($button)\r\n\r\n if (!this.isExist(name)) {\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n })\r\n\r\n this.$el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(buttons) {\r\n this.attr({ buttons })\r\n this.erase()._paint(buttons)\r\n return this\r\n }\r\n\r\n add(button) {\r\n const $el = this.$el\r\n const $fragment = document.createDocumentFragment()\r\n const buttons = this.attr('buttons') || []\r\n const { name, disabled, context } = button\r\n const command = this._getCommand(button)\r\n const _add = (button) => {\r\n const $button = _createButton(button)\r\n\r\n $fragment.appendChild($button)\r\n\r\n buttons.push(button)\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this,\r\n command\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n\r\n if (isObject(button)) {\r\n _add(button)\r\n } else if (isArray(button)) {\r\n button.forEach((item) => {\r\n if (isObject(item)) {\r\n _add(item)\r\n }\r\n })\r\n }\r\n $el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n remove(name) {\r\n const $el = this.$el\r\n const buttons = this.buttons\r\n const button = this.get(name)\r\n let index = -1\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n index = buttons.indexOf(button)\r\n\r\n if (index > -1) {\r\n buttons.splice(index, 1)\r\n this.attrs('buttons').splice(index, 1)\r\n }\r\n\r\n this._disable(name)\r\n $el.removeChild(button.$el)\r\n\r\n return this\r\n }\r\n\r\n _disable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = true\r\n\r\n if (command) {\r\n this.commands.del(command)\r\n }\r\n\r\n addClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n _enable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || !button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = false\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n\r\n removeClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n disable(name) {\r\n const disabled = this.attr('afterDisabled')\r\n\r\n if (name) {\r\n this._disable(name)\r\n } else {\r\n addClass(this.$el, DISABLED)\r\n this.removeListeners()\r\n this.disabled = true\r\n\r\n if (isFunction(disabled)) {\r\n disabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n enable(name) {\r\n const enabled = this.attr('afterEnabled')\r\n\r\n if (name) {\r\n this._enable(name)\r\n } else {\r\n this.disabled = false\r\n removeClass(this.$el, DISABLED)\r\n this.addListeners()\r\n\r\n if (isFunction(enabled)) {\r\n enabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n show(name) {\r\n const opened = this.attr('afterOpened')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n removeClass(button.$el, HIDDEN)\r\n } else {\r\n removeClass($el, HIDDEN)\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n later(() => {\r\n opened.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide(name) {\r\n const closed = this.attr('afterClosed')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n addClass(button.$el, HIDDEN)\r\n } else {\r\n addClass($el, HIDDEN)\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n later(() => {\r\n closed.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n highlight(name) {\r\n const button = this.get(name)\r\n const ACTIVE = 'outline-toolbar_active'\r\n let $button\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n $button = button.$el\r\n\r\n if (hasClass($button, ACTIVE)) {\r\n removeClass($button, ACTIVE)\r\n } else {\r\n addClass($button, ACTIVE)\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.commands.clear()\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n if (this.isDisabled(name)) {\r\n return this\r\n }\r\n\r\n this.commands.execute(name)\r\n\r\n return this\r\n }\r\n\r\n onExecute(evt) {\r\n const $button = evt.delegateTarget\r\n let cmd = ''\r\n\r\n if ($button) {\r\n cmd = $button.getAttribute('data-cmd')\r\n\r\n if (cmd) {\r\n this.execute(cmd)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n on($el, `.outline-toolbar__button`, 'click', this.onExecute, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n off($el, '.outline-toolbar__button', this.onExecute)\r\n\r\n return this\r\n }\r\n}\r\n\r\nToolbar.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'ltr',\r\n closed: false,\r\n disabled: false,\r\n rounded: true,\r\n buttons: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterDisabled: null,\r\n afterEnabled: null,\r\n beforeDestroy: null,\r\n afterDestroy: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Toolbar\r\n","import addClass from './utils/dom/addClass'\r\n\r\nconst _updateSiblingElements = (siblingElement, isPrev) => {\r\n let tagName\r\n let $sibling = siblingElement\r\n\r\n while ($sibling) {\r\n tagName = $sibling.tagName.toLowerCase()\r\n\r\n if (tagName !== 'script' && tagName !== 'style') {\r\n addClass($sibling, 'outline-reader_sibling')\r\n }\r\n\r\n if (isPrev) {\r\n $sibling = $sibling.previousElementSibling\r\n } else {\r\n $sibling = $sibling.nextElementSibling\r\n }\r\n }\r\n}\r\n\r\nexport default _updateSiblingElements\r\n","import cloneDeep from './utils/lang/cloneDeep'\r\nimport later from './utils/lang/later'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport isFunction from './utils/types/isFunction'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport at from './utils/event/at'\r\nimport stop from './utils/event/stop'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\nimport Message from './message'\r\nimport Toolbar from './toolbar'\r\n\r\nimport _updateSiblingElements from './_updateSiblingElements'\r\n\r\nconst ENTER_READING_TIP = '进入阅读模式,按 ESC 键可退出阅读模式'\r\n\r\nclass Reader extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Reader.DEFAULTS)\r\n this.reading = false\r\n\r\n this.$target = null\r\n this.$paper = null\r\n this.$title = null\r\n this.$article = null\r\n this.$progress = null\r\n\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let target = null\r\n\r\n this.attr(options)\r\n\r\n target = this.attr('target')\r\n\r\n if (isString(target)) {\r\n this.$target = document.querySelector(target)\r\n } else if (isElement(target)) {\r\n this.$target = target\r\n }\r\n\r\n if (!this.$target) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n this._renderEdge()._paint(this.$target)\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$article.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint($content) {\r\n const $fragment = document.createDocumentFragment()\r\n const $children = [...$content.cloneNode(true).children]\r\n\r\n later(() => {\r\n $children.forEach(($child) => {\r\n $fragment.appendChild($child)\r\n })\r\n\r\n this.$article.appendChild($fragment)\r\n })\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const $paper = this.$paper\r\n const toolbar = this.toolbar\r\n\r\n if ($paper) {\r\n document.body.removeChild($paper)\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n this.erase()._paint(this.$target)\r\n return this\r\n }\r\n\r\n _renderEdge() {\r\n const $target = this.$target\r\n let title = this.attr('title')\r\n let $paper\r\n let $title\r\n let $article\r\n let $progress\r\n let $sibling\r\n\r\n $title = $target.querySelector('h1')\r\n\r\n if (isElement(title)) {\r\n $title = title\r\n }\r\n\r\n if (isElement($title)) {\r\n title = $title.innerText\r\n }\r\n\r\n $title = createElement(\r\n 'h1',\r\n {\r\n className: 'outline-reader__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n\r\n $article = createElement('article', {\r\n id: 'outline-reader__article',\r\n className: 'outline-reader__article'\r\n })\r\n this.$article = $article\r\n\r\n $progress = createElement('div', {\r\n className: 'outline-reader__progress'\r\n })\r\n this.$progress = $progress\r\n\r\n this.toolbar = new Toolbar({\r\n placement: 'rtl',\r\n buttons: [\r\n {\r\n name: 'exit',\r\n icon: 'close',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.exit\r\n }\r\n }\r\n ]\r\n })\r\n\r\n $paper = createElement(\r\n 'section',\r\n {\r\n id: 'outline-reader',\r\n className: 'outline-reader outline-reader_hidden'\r\n },\r\n [$progress, $title, $article, this.toolbar.$el]\r\n )\r\n this.$paper = $paper\r\n\r\n document.body.appendChild($paper)\r\n\r\n later(() => {\r\n // 设置邻居节点的打印样式\r\n $sibling = $paper.previousElementSibling\r\n _updateSiblingElements($sibling, true)\r\n\r\n $sibling = $paper.nextElementSibling\r\n _updateSiblingElements($sibling)\r\n })\r\n\r\n return this\r\n }\r\n\r\n enter() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n const enterReadingTip = this.attr('enterReadingTip') || ENTER_READING_TIP\r\n\r\n if (this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n $siblings.forEach(($sibling) => {\r\n addClass($sibling, HIDDEN)\r\n })\r\n addClass($paper, READING)\r\n removeClass($paper, HIDDEN)\r\n this.toolbar.show()\r\n this.reading = true\r\n\r\n Message.info({\r\n round: true,\r\n message: enterReadingTip\r\n })\r\n\r\n this.$emit('enterReading')\r\n\r\n return this\r\n }\r\n\r\n exit() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n\r\n if (!this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n addClass($paper, HIDDEN)\r\n removeClass($paper, READING)\r\n $siblings.forEach(($sibling) => {\r\n removeClass($sibling, HIDDEN)\r\n })\r\n this.toolbar.hide()\r\n this.reading = false\r\n\r\n this.$emit('exitReading')\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.reading) {\r\n this.exit()\r\n } else {\r\n this.enter()\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n if (!isFunction(print)) {\r\n return this\r\n }\r\n\r\n print()\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n return this\r\n }\r\n\r\n onPrint() {\r\n this.print()\r\n return this\r\n }\r\n\r\n onEnterReading() {\r\n this.toggle()\r\n return this\r\n }\r\n\r\n onExitReading(evt) {\r\n const keyCode = evt.keyCode\r\n\r\n if (keyCode === 27 && this.reading) {\r\n this.toggle()\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n at(document, 'keyup', this.onExitReading, this, true)\r\n\r\n this.$on('toolbar:action:print', this.onPrint)\r\n this.$on('toolbar:action:reading', this.onEnterReading)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n off(document, 'keyup', this.onExitReading)\r\n\r\n this.$off('toolbar:action:print')\r\n this.$off('toolbar:action:reading')\r\n\r\n return this\r\n }\r\n}\r\n\r\nReader.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n target: '',\r\n title: '',\r\n enterReadingTip: ENTER_READING_TIP\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Reader\r\n","/**\r\n * 停止事件(阻止默认行为和阻止事件的捕获或冒泡)\r\n * ========================================================================\r\n * @method stop\r\n * @param {Event} evt - 事件对象\r\n *\r\n * @example\r\n *
\r\n * Service\r\n * Help\r\n *
\r\n *\r\n * const $nav = document.querySelector('#nav')\r\n * const $service = document.querySelector('.anchor')\r\n *\r\n * on($nav, 'click', function(evt) {\r\n * console.log('你点击了导航栏')\r\n * })\r\n *\r\n * on($anchor, 'click', function(evt) {\r\n * console.log('tagName', this.tagName)\r\n *\r\n * // 工作台输出:'a'\r\n * // 不会触发事件冒泡,输出:'你点击了导航栏'\r\n * // 也不会切换到 href 属性的页面,阻止了点击链接的默认行为\r\n * stopEvent(evt)\r\n * })\r\n */\r\nconst stop = function (evt) {\r\n evt.stopPropagation()\r\n evt.preventDefault()\r\n}\r\n\r\nexport default stop\r\n","import isFunction from '../types/isFunction'\r\nimport off from './off'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定事件\r\n * ========================================================================\r\n * @method at\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (必须) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst at = (el, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n const listener = function (evt) {\r\n let overrideContext = context || el\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default at\r\n"],"names":["toString","val","Object","prototype","apply","isFunction","isObject","o","isArray","Array","cloneDeep","obj","clone","from","assign","keys","forEach","key","later","fn","delay","arguments","length","undefined","setTimeout","isString","str","isElement","nodeName","tagName","nodeType","isDOM","el","isHTMLCollection","fragment","isTextNode","hasOwn","prop","hasOwnProperty","call","setAttribute","attr","value","toLowerCase","style","cssText","className","innerHTML","innerText","setAttributes","attrs","createElement","children","$fragment","document","createDocumentFragment","$el","isValidChild","child","append","$child","createTextNode","appendChild","every","hasClass","pattern","RegExp","allClass","classList","contains","exec","addClass","_classList","add","removeClass","remove","replace","CAPTURE_EVENTS","_off","type","capture","indexOf","_delegateListener","listeners","_listeners","index","listener","i","handler","splice","_delete","removeEventListener","purgeElement","recurse","$element","querySelector","$children","childNodes","getListeners","filter","off","extend","origin","source","_subscribers","_hasDirectSubscribersFor","topic","has","found","position","lastIndexOf","substring","_hasSubscribers","emit","data","async","execute","subscriber","message","callback","context","deliver","guid","uuid","prefix","_removeSubscriber","token","subject","execution","j","_removeSubscriberByToken","Base","constructor","options","this","initialize","render","addListeners","refresh","destroy","removeListeners","reload","$emit","event","publish","$on","push","subscribe","$off","unsubscribe","isPlainObject","getPrototypeOf","proto","isObjectLike","stripScripts","encodeHTML","CHARTS","tag","name","ICON","size","color","iconSet","width","height","defaultRules","cssRules","$icon","$svg","binds","svg","test","isSVG","xmlns","class","icon","SYMBOLS","getSymbols","patternName","patternSet","find","symbol","fullName","getSymbol","paint","$body","body","$icons","symbols","join","insertBefore","firstChild","matches","selector","sel","msMatchesSelector","getParentOrHost","host","parentNode","on","once","evt","target","getTarget","delegateTarget","closest","ctx","includeCTX","startsWith","overrideContext","addEventListener","instances","instance","Message","super","_default","DEFAULTS","id","closed","visible","offset","timer","destroyed","open","isClosed","isDestroyed","_getClassName","effect","round","closable","customClass","dangerouslyUseHTMLString","$type","$message","$text","$close","iconSize","_refreshIcon","HIDDEN","iconName","$use","_refreshMessage","text","_refreshClose","_refreshEl","clearTimer","clearTimeout","startTimer","duration","close","top","destroyAfterClosed","beforeClose","removeChild","onMouseEnter","onMouseLeave","onClose","config","item","offsetHeight","len","dom","parseInt","clear","Command","action","Commands","commands","get","cmd","command","del","_createButton","button","rounded","$anchor","href","link","$button","disabled","DISABLED","Toolbar","buttons","created","isDisabled","isExist","_getCommand","_self","bind","mounted","placement","_paint","hide","disable","erase","_remove","_add","_disable","_enable","enable","enabled","show","opened","toggle","highlight","ACTIVE","beforeDestroy","afterDestroy","onExecute","getAttribute","afterClosed","afterOpened","afterDisabled","afterEnabled","_updateSiblingElements","siblingElement","isPrev","$sibling","previousElementSibling","nextElementSibling","ENTER_READING_TIP","Reader","reading","$target","$paper","$title","$article","$progress","toolbar","_renderEdge","$content","cloneNode","title","exit","enter","READER","READING","$siblings","querySelectorAll","enterReadingTip","info","print","onPrint","onEnterReading","onExitReading","keyCode","stopPropagation","preventDefault","stop","at"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"reader.min.js","sources":["utils/lang/toString.js","utils/types/isFunction.js","utils/types/isObject.js","utils/types/isArray.js","utils/lang/cloneDeep.js","utils/lang/later.js","utils/types/isString.js","utils/types/isElement.js","utils/types/isDOM.js","utils/types/isHTMLCollection.js","utils/types/isFragment.js","utils/types/isTextNode.js","utils/lang/hasOwn.js","utils/dom/setAttribute.js","utils/dom/setAttributes.js","utils/dom/createElement.js","utils/dom/hasClass.js","utils/dom/addClass.js","utils/dom/removeClass.js","utils/lang/trim.js","utils/event/enum.js","utils/event/_off.js","utils/event/_delete.js","utils/event/purgeElement.js","utils/event/getListeners.js","utils/event/off.js","utils/lang/extend.js","utils/observer/_subscribers.js","utils/observer/_hasDirectSubscribersFor.js","utils/observer/has.js","utils/observer/_hasSubscribers.js","utils/observer/emit.js","utils/types/isTypedArray.js","utils/lang/guid.js","utils/observer/_removeSubscriber.js","utils/observer/off.js","utils/observer/_removeSubscriberByToken.js","base.js","utils/observer/on.js","utils/types/isObjectLike.js","utils/types/isPlainObject.js","utils/lang/stripScripts.js","utils/lang/encodeHTML.js","utils/icons/createElement.js","utils/types/isSVG.js","utils/icons/icon.js","utils/icons/symbols.js","utils/icons/defaults.js","utils/icons/getSymbols.js","utils/icons/getSymbol.js","utils/icons/paint.js","utils/icons/add.js","utils/dom/matches.js","utils/dom/getParentOrHost.js","utils/event/on.js","utils/event/getTarget.js","utils/dom/resolveTextNode.js","utils/dom/closest.js","message.js","command.js","commands.js","_createButton.js","toolbar.js","_updateSiblingElements.js","reader.js","utils/event/stop.js","utils/event/at.js"],"sourcesContent":["/**\r\n * Object 对象原型上的 toString 方法\r\n * ========================================================================\r\n * @method toString\r\n * @param {*} val\r\n * @returns {string}\r\n */\r\nconst toString = (val) => {\r\n return Object.prototype.toString.apply(val)\r\n}\r\n\r\nexport default toString\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测测试数据是否为 Function 类型\r\n * ========================================================================\r\n * @method isFunction\r\n * @param {*} val - (必须)待检测的数据\r\n * @returns {boolean} 'val' 是 Function 类型返回 true,否则返回 false\r\n */\r\nconst isFunction = (val) => {\r\n return typeof val === 'function' || toString(val) === '[object Function]'\r\n}\r\n\r\nexport default isFunction\r\n","import toString from '../lang/toString'\r\nimport isFunction from './isFunction'\r\n\r\n/**\r\n * 检测数据是否为 Object 类型\r\n * ========================================================================\r\n * @method isObject\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isObject = (o) => {\r\n return (\r\n (toString(o) === '[object Object]' ||\r\n typeof o === 'object' ||\r\n isFunction(o)) &&\r\n o !== null\r\n )\r\n}\r\n\r\nexport default isObject\r\n","import toString from '../lang/toString'\r\n\r\n/**\r\n * 检测数据是否为 Array 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isArray = (o) => {\r\n if (Array.isArray) {\r\n return Array.isArray(o)\r\n } else {\r\n return toString(o) === '[object Array]'\r\n }\r\n}\r\n\r\nexport default isArray\r\n","import isObject from '../types/isObject'\r\nimport isArray from '../types/isArray'\r\n\r\n/**\r\n * 深拷贝对象函数\r\n * ========================================================================\r\n * @methods cloneDeep\r\n * @param {Object} obj - 深拷贝的对象\r\n * @returns {Array|Object|*}\r\n *\r\n * @example\r\n * const arr = cloneDeep([2,3,4,6])\r\n * => [2,3,4,6]\r\n */\r\nconst cloneDeep = (obj) => {\r\n let clone = {}\r\n\r\n if (obj === null) {\r\n return null\r\n }\r\n\r\n if (isArray(obj)) {\r\n clone = Array.from(obj)\r\n } else {\r\n clone = Object.assign({}, obj)\r\n Object.keys(clone).forEach((key) => {\r\n return (clone[key] = isObject(obj[key]) ? cloneDeep(obj[key]) : obj[key])\r\n })\r\n }\r\n\r\n return clone\r\n}\r\n\r\nexport default cloneDeep\r\n","import isFunction from '../types/isFunction'\r\n\r\n/**\r\n * later - 延迟执行方法\r\n * ========================================================================\r\n * @method later\r\n * @param {Function} fn\r\n * @param {Number} [delay]\r\n * @returns {number|boolean}\r\n */\r\nconst later = (fn, delay = 300) => {\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n return setTimeout(() => {\r\n fn()\r\n }, delay)\r\n}\r\n\r\nexport default later\r\n","/**\r\n * 检测数据是否为 String 类型\r\n * ========================================================================\r\n * @method isArray\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\nconst isString = (str) => {\r\n return typeof str === 'string'\r\n}\r\n\r\nexport default isString\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测数据是否为 HTMLElement DOM 节点\r\n * ========================================================================\r\n * @method isElement\r\n * @param {*} o\r\n * @returns {boolean}\r\n */\r\nconst isElement = (o) => {\r\n return !!(isObject(o) && o.nodeName && o.tagName && o.nodeType === 1)\r\n}\r\n\r\nexport default isElement\r\n","import isObject from './isObject'\r\nimport isElement from './isElement'\r\nimport isHTMLCollection from './isHTMLCollection'\r\nimport isFragment from './isFragment'\r\nimport isTextNode from './isTextNode'\r\n\r\nconst isDOM = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (isElement(el) || isHTMLCollection(el) || isFragment(el) || isTextNode(el))\r\n )\r\n}\r\n\r\nexport default isDOM\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isHTMLCollection = (el) => {\r\n return !!(isObject(el) && toString(el) === '[object NodeList]')\r\n}\r\n\r\nexport default isHTMLCollection\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isFragment = (fragment) => {\r\n return !!(\r\n isObject(fragment) && toString(fragment) === '[object DocumentFragment]'\r\n )\r\n}\r\n\r\nexport default isFragment\r\n","import toString from '../lang/toString'\r\nimport isObject from './isObject'\r\n\r\nconst isTextNode = (el) => {\r\n return !!(\r\n isObject(el) &&\r\n (toString(el) === '[object Text]' || (el.tagName && el.nodeType === 3))\r\n )\r\n}\r\n\r\nexport default isTextNode\r\n","/**\r\n * 检测对象自身属性中是否具有指定的属性。\r\n * ========================================================================\r\n * @method hasOwn\r\n * @param {Object} obj - (必须)检测的目标对象\r\n * @param {String} prop - (必须)属性名\r\n * @returns {Boolean}\r\n */\r\nconst hasOwn = (obj, prop) => {\r\n const hasOwnProperty = Object.prototype.hasOwnProperty\r\n return obj && hasOwnProperty.call(obj, prop)\r\n}\r\n\r\nexport default hasOwn\r\n","/**\r\n * 给 DOM 节点设置属性/值\r\n * ========================================================================\r\n * @method setAttribute\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} attr - 属性名称\r\n * @param {String|Number|Boolean} value - 属性值\r\n */\r\nconst setAttribute = (el, attr, value) => {\r\n let tagName = el.tagName.toLowerCase()\r\n\r\n switch (attr) {\r\n case 'style':\r\n el.style.cssText = value\r\n break\r\n case 'value':\r\n if (tagName === 'input' || tagName === 'textarea') {\r\n el.value = value\r\n } else {\r\n el.setAttribute(attr, value)\r\n }\r\n break\r\n case 'htmlFor':\r\n el.setAttribute('for', value)\r\n break\r\n case 'className':\r\n el.className = value\r\n break\r\n case 'innerHTML':\r\n el.innerHTML = value\r\n break\r\n case 'innerText':\r\n el.innerText = value\r\n break\r\n default:\r\n el.setAttribute(attr, value)\r\n break\r\n }\r\n}\r\n\r\nexport default setAttribute\r\n","import isObject from '../types/isObject'\r\nimport hasOwn from '../lang/hasOwn'\r\nimport setAttribute from './setAttribute'\r\n\r\nconst setAttributes = (el, attrs) => {\r\n if (!el || !isObject(attrs)) {\r\n return false\r\n }\r\n\r\n Object.keys(attrs).forEach((attr) => {\r\n const value = attrs[attr]\r\n if (hasOwn(attrs, attr)) {\r\n setAttribute(el, attr, value)\r\n }\r\n })\r\n}\r\n\r\nexport default setAttributes\r\n","import isObject from '../types/isObject'\r\nimport isString from '../types/isString'\r\nimport isArray from '../types/isArray'\r\nimport isDOM from '../types/isDOM'\r\nimport setAttributes from './setAttributes'\r\n\r\n/**\r\n * 创建 DOM 节点,并添加属性和子节点\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} tagName - 标签名称\r\n * @param {Object|Array|HTMLElement|DocumentFragment|String} attrs - 属性对象或者子节点\r\n * @param {Array|HTMLElement|DocumentFragment|String} [children] - 子节点数组\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (tagName, attrs, children) => {\r\n const $fragment = document.createDocumentFragment()\r\n const $el = document.createElement(tagName)\r\n const isValidChild = (child) => {\r\n return isDOM(child) || isString(child)\r\n }\r\n const append = (child) => {\r\n let $child\r\n\r\n if (!isValidChild(child)) {\r\n return false\r\n }\r\n\r\n if (isDOM(child)) {\r\n $child = child\r\n } else if (isString(child)) {\r\n $child = document.createTextNode(child)\r\n }\r\n\r\n $fragment.appendChild($child)\r\n }\r\n\r\n if (isObject(attrs)) {\r\n setAttributes($el, attrs)\r\n } else if (isArray(attrs) && attrs.every((attr) => isValidChild(attr))) {\r\n attrs.forEach((child) => {\r\n append(child)\r\n })\r\n } else if (isDOM(attrs)) {\r\n append(attrs)\r\n } else if (isString(attrs)) {\r\n append(document.createTextNode(attrs))\r\n }\r\n\r\n if (isArray(children)) {\r\n children.forEach((child) => {\r\n append(child)\r\n })\r\n } else {\r\n append(children)\r\n }\r\n\r\n $el.appendChild($fragment)\r\n\r\n return $el\r\n}\r\n\r\nexport default createElement\r\n","import isElement from '../types/isElement'\r\n/**\r\n * 检测 DOM 节点是否包含名为 className 的样式\r\n * ========================================================================\r\n * @method hasClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst hasClass = (el, className) => {\r\n const pattern = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\r\n let allClass\r\n let classList\r\n\r\n if (!isElement(el)) {\r\n return false\r\n }\r\n\r\n allClass = el.className\r\n\r\n if (!allClass) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList && classList.contains) {\r\n return el.classList.contains(className)\r\n }\r\n\r\n return !!pattern.exec(allClass)\r\n}\r\n\r\nexport default hasClass\r\n","import hasClass from './hasClass'\r\n\r\n/**\r\n * 给 DOM 节点添加名为 className 的样式\r\n * ========================================================================\r\n * @method addClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst addClass = (el, className) => {\r\n let classList\r\n let allClass\r\n\r\n if (hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.add) {\r\n classList.add(className)\r\n } else {\r\n allClass = el.className\r\n allClass += allClass.length > 0 ? ' ' + className : className\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default addClass\r\n","import trim from '../lang/trim'\r\nimport hasClass from './hasClass'\r\n\r\n/**\r\n * 移除 DOM 节点的 className 样式\r\n * ========================================================================\r\n * @method removeClass\r\n * @param {HTMLElement} el - DOM 节点\r\n * @param {String} className - 样式名称\r\n * @returns {Boolean}\r\n */\r\nconst removeClass = (el, className) => {\r\n let allClass = el.className\r\n let classList\r\n\r\n if (!allClass || !hasClass(el, className)) {\r\n return false\r\n }\r\n\r\n classList = el.classList\r\n\r\n if (classList?.remove) {\r\n classList.remove(className)\r\n } else {\r\n allClass = trim(allClass.replace(className, ''))\r\n el.className = allClass\r\n }\r\n}\r\n\r\nexport default removeClass\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 清楚字符串起始位置所有的空格\r\n * ========================================================================\r\n * @method trim\r\n * @param {string} str\r\n * @returns {string|Boolean}\r\n */\r\nconst trim = (str) => {\r\n if (!isString(str)) {\r\n return false\r\n }\r\n return str.replace(/(^\\s+)|(\\s+$)/g, '')\r\n}\r\n\r\nexport default trim\r\n","export const CAPTURE_EVENTS = [\r\n 'focusout',\r\n 'blur',\r\n 'focusin',\r\n 'focus',\r\n 'load',\r\n 'unload',\r\n 'mouseenter',\r\n 'mouseleave'\r\n]\r\n","import { CAPTURE_EVENTS } from './enum'\r\nimport _delete from './_delete'\r\n\r\n/**\r\n * (私有方法)取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method _off\r\n * @param {HTMLElement} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} fn - (必须)事件处理器回调函数\r\n * @private\r\n */\r\nconst _off = (el, type, fn) => {\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n /* istanbul ignore else */\r\n if (fn._delegateListener) {\r\n fn = fn._delegateListener\r\n delete fn._delegateListener\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n _delete(el, type, fn)\r\n\r\n el.removeEventListener(type, fn, capture)\r\n}\r\n\r\nexport default _off\r\n","/**\r\n * 删除 DOM 元素缓存的 _listeners 数据\r\n * ========================================================================\r\n * @method _delete\r\n * @param {HTMLElement} el - 要删除 listener 的 DOM 元素\r\n * @param {String} type - 事件类型(名称)\r\n * @param {Function} [fn] - 事件处理器回调函数\r\n */\r\nconst _delete = function (el, type, fn) {\r\n const listeners = el._listeners\r\n let index = -1\r\n\r\n if (listeners.length < 1) {\r\n return false\r\n }\r\n\r\n // 移除缓存的 _listeners 数据\r\n listeners.forEach((listener, i) => {\r\n const handler = listener.fn\r\n\r\n if (type === listener.type) {\r\n index = i\r\n\r\n if (handler === fn) {\r\n index = i\r\n }\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n}\r\n\r\nexport default _delete\r\n","import isString from '../types/isString'\r\nimport isElement from '../types/isElement'\r\nimport getListeners from './getListeners'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 销毁(type 类型的)代理事件绑定\r\n * ========================================================================\r\n * 1. 设置了事件类型 type,则销毁指定类型的事件绑定,否则清除所有代理事件绑定\r\n * 2. recurse 设置为 true,递归销毁子节点全部事件绑定\r\n * ========================================================================\r\n * @method purgeElement\r\n * @param {HTMLElement|String} el - (必须)DOM 元素或者其选择器\r\n * @param {String|Boolean} type - (必须)事件类型\r\n * @param {Boolean} [recurse] - (可选)是否递归销毁子节点所有事件绑定\r\n */\r\nconst purgeElement = function (el, type, recurse = false) {\r\n const $element = isString(el) ? document.querySelector(el) : el\r\n const $children = $element.childNodes\r\n const listeners = getListeners($element, type)\r\n\r\n listeners.forEach((listener) => {\r\n _off($element, listener.type, listener.fn)\r\n })\r\n\r\n if (\r\n (recurse || type === true || arguments.length === 1) &&\r\n $element &&\r\n $children\r\n ) {\r\n $children.forEach(($child) => {\r\n if (isElement($child)) {\r\n purgeElement($child, type, recurse)\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default purgeElement\r\n","import isString from '../types/isString'\r\n\r\n/**\r\n * 获取 DOM 元素(type 事件类型)事件绑定信息\r\n * ========================================================================\r\n * 如果设置了事件类型 type, 则返回指定类型的事件绑定信息,否则返回所有事件绑定信息\r\n * ========================================================================\r\n * @methods getListeners\r\n * @param {HTMLElement} el - (必须)要获取事件绑定信息的 DOM 元素\r\n * @param {String} [type] - (可选)事件类型\r\n * @returns {Array} - 已绑定的事件信息\r\n */\r\nconst getListeners = (el, type) => {\r\n let listeners = el._listeners || []\r\n\r\n if (isString(type) && type) {\r\n listeners = listeners.filter((listener) => {\r\n return listener.type === type\r\n })\r\n }\r\n\r\n return listeners\r\n}\r\n\r\nexport default getListeners\r\n","import purgeElement from './purgeElement'\r\nimport isFunction from '../types/isFunction'\r\nimport _off from './_off'\r\n\r\n/**\r\n * 取消 type 类型的代理事件绑定\r\n * ========================================================================\r\n * 如果没有设置 handler,则销毁 this.$options 绑定的所有符合 type 事件类型的事件绑定\r\n * ========================================================================\r\n * @method off\r\n * @param {HTMLElement|Object} el - (必须)取消事件绑定的 DOM 元素\r\n * @param {String} type - (必须)事件类型\r\n * @param {Function} [fn] - (可选)事件处理器回调函数\r\n */\r\nconst off = (el, type, fn) => {\r\n // 如果不设置 fn 参数,默认清除 el 元素上绑定的所有事件处理器\r\n if (!isFunction(fn)) {\r\n purgeElement(el, type)\r\n return false\r\n }\r\n\r\n _off(el, type, fn)\r\n}\r\n\r\nexport default off\r\n","import hasOwn from './hasOwn'\r\n\r\n/**\r\n * 扩展对象\r\n * ========================================================================\r\n * @method extend\r\n * @param {Object} origin\r\n * @param {Object} source\r\n */\r\nconst extend = (origin, source) => {\r\n const keys = Object.keys(source)\r\n\r\n keys.forEach((prop) => {\r\n if (hasOwn(source, prop)) {\r\n origin[prop] = source[prop]\r\n }\r\n })\r\n}\r\n\r\nexport default extend\r\n","/**\r\n * 存储订阅者(主题和处理器的)私有对象\r\n * ========================================================================\r\n * @type {{}}\r\n * @private\r\n */\r\nconst _subscribers = {}\r\n\r\nexport default _subscribers\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 判断是否存在与给定 topic 完全匹配的订阅者信息\r\n * ========================================================================\r\n * @method _hasDirectSubscribersFor\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasDirectSubscribersFor = (topic) => {\r\n return hasOwn(_subscribers, topic) && _subscribers[topic].length > 0\r\n}\r\n\r\nexport default _hasDirectSubscribersFor\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\nimport _hasSubscribers from './_hasSubscribers'\r\n\r\n/**\r\n * 判断是否存在包含 topic 指定的订阅者信息\r\n * ========================================================================\r\n * @method has\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Boolean} [isDirect] - (可选)是否为直接的主题,默认值:true\r\n * @returns {Boolean}\r\n */\r\nconst has = (topic, isDirect = true) => {\r\n return isDirect ? _hasDirectSubscribersFor(topic) : _hasSubscribers(topic)\r\n}\r\n\r\nexport default has\r\n","import _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * 判断是否存在包含给定 topic 相关的订阅者信息\r\n * ========================================================================\r\n * @method _hasSubscribers\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _hasSubscribers = (topic) => {\r\n let found = _hasDirectSubscribersFor(topic)\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (!found && position !== -1) {\r\n topic = topic.substring(0, position)\r\n position = topic.lastIndexOf('.')\r\n found = _hasDirectSubscribersFor(topic)\r\n }\r\n\r\n return found\r\n}\r\n\r\nexport default _hasSubscribers\r\n","import isTypedArray from '../types/isTypedArray'\r\nimport _subscribers from './_subscribers'\r\nimport has from './has'\r\nimport _hasDirectSubscribersFor from './_hasDirectSubscribersFor'\r\n\r\n/**\r\n * (异步)发布订阅主题信息\r\n * ========================================================================\r\n * 主题默认是异步发布的。确保在消费者处理主题时,主题的发起者不会被阻止。\r\n * ========================================================================\r\n * @method emit\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Object} [data] - (可选)数据对象\r\n * @param {Boolean} [async] - (可选) 是否异步发布\r\n */\r\nconst emit = (topic, data, async = true) => {\r\n const execute = (topic) => {\r\n if (!_hasDirectSubscribersFor(topic)) {\r\n return false\r\n }\r\n\r\n _subscribers[topic].forEach((subscriber) => {\r\n // 针对 mqtt 消息服务返回的 Uint8Array 类似的 typed arrays 格式的数据\r\n // 采用 toString() 方法转化为普通(JSON)字符串\r\n const message = isTypedArray(data) ? data.toString() : data\r\n\r\n subscriber.callback.call(subscriber.context || subscriber, message)\r\n })\r\n }\r\n const deliver = () => {\r\n let subscriber = topic\r\n let position = topic.lastIndexOf('.')\r\n\r\n while (position !== -1) {\r\n subscriber = subscriber.substring(0, position)\r\n position = subscriber.lastIndexOf('.')\r\n\r\n execute(subscriber)\r\n }\r\n\r\n // 执行 topic 对应的处理器\r\n execute(topic)\r\n // 执行特殊 topic:'*'(监听全部消息的发布)\r\n execute('*')\r\n }\r\n\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (async) {\r\n setTimeout(deliver, 10)\r\n } else {\r\n deliver()\r\n }\r\n}\r\n\r\nexport default emit\r\n","import toString from '../lang/toString'\r\n/**\r\n * 判断检测数据是否为 Typed Arrays 类型的数据\r\n * ========================================================================\r\n * @param {*} val\r\n * @returns {boolean}\r\n */\r\nconst isTypedArray = (val) => {\r\n const TYPES = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]',\r\n '[object BigInt64Array]',\r\n '[object BigUint64Array]'\r\n ]\r\n\r\n return TYPES.indexOf(toString(val)) > -1\r\n}\r\n\r\nexport default isTypedArray\r\n","/**\r\n * 生成唯一 id 字符串的函数\r\n * ========================================================================\r\n * @method guid\r\n * @param {String} [prefix] - 生成 id 的前缀字符串\r\n * @return {String} 返回一个表示唯一 id 的字符串\r\n */\r\nconst guid = (() => {\r\n let uuid = 0\r\n\r\n return (prefix) => {\r\n uuid += 1\r\n\r\n return prefix ? prefix + '-' + uuid : 'guid-' + uuid\r\n }\r\n})()\r\n\r\nexport default guid\r\n","import _subscribers from './_subscribers'\r\nimport hasOwn from '../lang/hasOwn'\r\n\r\n/**\r\n * 删除与给定 topic 相同的订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriber\r\n * @param {String} topic - (必须)订阅主题字符串\r\n * @returns {Boolean}\r\n */\r\nconst _removeSubscriber = (topic) => {\r\n if (!hasOwn(_subscribers, topic)) {\r\n return false\r\n }\r\n\r\n delete _subscribers[topic]\r\n}\r\n\r\nexport default _removeSubscriber\r\n","import has from './has'\r\nimport _removeSubscriber from './_removeSubscriber'\r\nimport _removeSubscriberByToken from './_removeSubscriberByToken'\r\n\r\n/**\r\n * 取消订阅主题\r\n * ========================================================================\r\n * @method off\r\n * @param {String} topic - (必须)订阅的主题\r\n * @param {Function|String} [token] - (可选)订阅主题的处理器函数或者唯一 Id 值\r\n */\r\nconst off = (topic, token) => {\r\n if (!has(topic)) {\r\n return false\r\n }\r\n\r\n if (token) {\r\n _removeSubscriberByToken(token)\r\n } else {\r\n _removeSubscriber(topic)\r\n }\r\n}\r\n\r\nexport default off\r\n","import _subscribers from './_subscribers'\r\nimport _removeSubscriber from './_removeSubscriber'\r\n\r\n/**\r\n * 通过订阅者 token 值删除订阅者信息\r\n * ========================================================================\r\n * @method _removeSubscriberByToken\r\n * @param {String} token - 订阅者 token 字符串\r\n * @returns {boolean}\r\n * @private\r\n */\r\nconst _removeSubscriberByToken = (token) => {\r\n const keys = Object.keys(_subscribers)\r\n let index = -1\r\n\r\n if (!token || keys.length < 1) {\r\n return false\r\n }\r\n\r\n keys.forEach((subject) => {\r\n const subscriber = _subscribers[subject]\r\n let topic\r\n\r\n subscriber.forEach((execution, j) => {\r\n if (execution.callback === token || execution.token === token) {\r\n topic = execution.topic\r\n subscriber.splice(index, j)\r\n }\r\n })\r\n\r\n /* istanbul ignore else */\r\n if (subscriber.length < 1) {\r\n _removeSubscriber(topic)\r\n }\r\n })\r\n}\r\n\r\nexport default _removeSubscriberByToken\r\n","import isString from './utils/types/isString'\r\nimport hasOwn from './utils/lang/hasOwn'\r\nimport isObject from './utils/types/isObject'\r\nimport extend from './utils/lang/extend'\r\nimport publish from './utils/observer/emit'\r\nimport subscribe from './utils/observer/on'\r\nimport unsubscribe from './utils/observer/off'\r\n\r\nclass Base {\r\n constructor(options) {\r\n this.attrs = {}\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options).render().addListeners()\r\n return this\r\n }\r\n\r\n attr(prop, value) {\r\n const attrs = this.attrs\r\n\r\n if (isString(prop)) {\r\n // 只能扩展 attrs 中已有的属性\r\n if (value && hasOwn(attrs, prop)) {\r\n // 更新单个配置信息\r\n attrs[prop] = value\r\n return this\r\n }\r\n\r\n // 只传递 prop 参数,则返回对应的属性值\r\n return attrs[prop]\r\n } else if (isObject(prop)) {\r\n // 批量更新配置信息\r\n extend(attrs, prop)\r\n\r\n return this\r\n } else if (arguments.length === 0) {\r\n // 不传递参数,直接返回整个\r\n return attrs\r\n }\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n return this\r\n }\r\n\r\n refresh() {\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.removeListeners()\r\n return this\r\n }\r\n\r\n reload(options) {\r\n let attrs = this.attr()\r\n\r\n if (options) {\r\n attrs = this.attr(options)\r\n }\r\n\r\n this.destroy().initialize(attrs)\r\n\r\n return this\r\n }\r\n\r\n $emit(event, data) {\r\n publish(event, data)\r\n return this\r\n }\r\n\r\n $on(event, callback) {\r\n subscribe(event, callback, this)\r\n return this\r\n }\r\n\r\n $off(event, callback) {\r\n unsubscribe(event, callback)\r\n return this\r\n }\r\n\r\n addListeners() {\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n return this\r\n }\r\n}\r\n\r\nexport default Base\r\n","import _subscribers from './_subscribers'\r\nimport isFunction from '../types/isFunction'\r\nimport guid from '../lang/guid'\r\n\r\n/**\r\n * 订阅主题,并给出处理器函数\r\n * ========================================================================\r\n * @method on\r\n * @param {String} topic - (必须)主题名称\r\n * @param {Function} handler - (必须)主题的处理器函数\r\n * @param {Object} [context] - (可选)指定 this 执行上下文\r\n * @return {String} - 唯一的 token 字符串,例如:'guid-1'。\r\n */\r\nconst on = (topic, handler, context = null) => {\r\n const token = guid()\r\n let subject = typeof topic === 'symbol' ? topic.toString() : topic\r\n\r\n if (!isFunction(handler)) {\r\n return ''\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (!_subscribers[subject]) {\r\n _subscribers[subject] = []\r\n }\r\n\r\n _subscribers[subject].push({\r\n topic: subject,\r\n callback: handler,\r\n context,\r\n token\r\n })\r\n\r\n return token\r\n}\r\n\r\nexport default on\r\n","import isObject from './isObject'\r\n\r\n/**\r\n * 检测测试数据是否为类似 Object 类型\r\n * ========================================================================\r\n * @method isObjectLike\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是类似 Object 类型,返回 true,否则返回 false\r\n */\r\nconst isObjectLike = (val) => {\r\n return isObject(val) && val !== null\r\n}\r\n\r\nexport default isObjectLike\r\n","import isObjectLike from './isObjectLike'\r\n\r\n/**\r\n * 检测测试数据是否为普通对象\r\n * ========================================================================\r\n * @method isPlainObject\r\n * @param {Object} val - 要检测的数据\r\n * @returns {Boolean} 'val' 是普通对象,返回 true,否则返回 false\r\n */\r\nconst isPlainObject = (val) => {\r\n const getPrototypeOf = Object.getPrototypeOf\r\n let proto\r\n\r\n // Detect obvious negatives\r\n if (!isObjectLike(val)) {\r\n return false\r\n }\r\n\r\n proto = val.prototype\r\n\r\n // JavaScript 对象分为两种:普通对象和函数对象\r\n // 普通对象:原型是 __proto__,没有 prototype 原型(属性)\r\n // 函数对象:原型是 prototype ,prototype 只存在于函数对象上\r\n if (!proto) {\r\n return true\r\n }\r\n\r\n proto = val\r\n\r\n while (getPrototypeOf(proto) !== null) {\r\n proto = getPrototypeOf(proto)\r\n }\r\n\r\n return getPrototypeOf(val) === proto\r\n}\r\n\r\nexport default isPlainObject\r\n","/**\r\n * 移除字符串中的 JavaScript 代码\r\n * ====================================================\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nconst stripScripts = (str) => {\r\n return str.replace(/]*>.*?<\\/script>/gi, '')\r\n}\r\n\r\nexport default stripScripts\r\n","/**\r\n * 转义字符串中的 HTML 标签\r\n *\r\n * @param {String} str - 需要转义的字符串\r\n * @returns {String}\r\n */\r\nconst encodeHTML = (str) => {\r\n const CHARTS = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": ''',\r\n '\"': '"'\r\n }\r\n\r\n return str.replace(/[&<>'\"]/g, (tag) => {\r\n return CHARTS[tag] || tag\r\n })\r\n}\r\n\r\nexport default encodeHTML\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport isSVG from '../types/isSVG'\r\nimport setAttributes from '../dom/setAttributes'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @param {Object} [options.attrs]\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (name, options = {}) => {\r\n const ICON = 'outline-icon'\r\n const size = options.size || 0\r\n const color = options.color || ''\r\n const iconSet = options.iconSet || ''\r\n const width = isArray(size) ? size[0] : size\r\n const height = isArray(size) ? size[1] : size\r\n const defaultRules = size ? `width:${width}px;height:${height}px;` : ''\r\n const cssRules = color ? defaultRules + `color:${color}` : defaultRules\r\n const attrs = options.attrs || {}\r\n const $icon = document.createElement('i')\r\n let binds = ''\r\n let svg = ''\r\n let $svg\r\n\r\n if (!isString(name)) {\r\n return null\r\n }\r\n\r\n if (isSVG(name)) {\r\n svg = name\r\n } else {\r\n binds =\r\n iconSet && iconSet !== 'icon'\r\n ? `xlink:href=\"#${iconSet}-icon-${name}\"`\r\n : `xlink:href=\"#icon-${name}\"`\r\n svg = ``\r\n }\r\n\r\n $icon.innerHTML = svg\r\n\r\n if (attrs.className) {\r\n attrs.className = `${ICON} ${attrs.className}`\r\n } else {\r\n attrs.className = ICON\r\n }\r\n\r\n setAttributes($icon, attrs)\r\n\r\n $svg = $icon.querySelector('svg')\r\n setAttributes($svg, {\r\n 'aria-hidden': true,\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n class: 'outline-icon__svg',\r\n width: 200,\r\n height: 200,\r\n style: cssRules\r\n })\r\n\r\n return $icon\r\n}\r\n\r\nexport default createElement\r\n","import isString from './isString'\r\n\r\nconst isSVG = (str) => {\r\n const declaration = '(?:<\\\\?xml[^>]*>\\\\s*)?'\r\n const doctype =\r\n '(?:<\\\\!doctype svg[^>]*\\\\s*(?:\\\\[?(?:\\\\s*]*>\\\\s*)*\\\\]?)*[^>]*>\\\\s*)?'\r\n const content = ']*>[^]*<\\\\/svg>\\\\s*$'\r\n const svg = `^\\\\s*${declaration}${doctype}${content}\\\\s*$`\r\n const pattern = new RegExp(svg, 'i')\r\n\r\n return isString(str) && pattern.test(str)\r\n}\r\n\r\nexport default isSVG\r\n","import createElement from './createElement'\r\n\r\n/**\r\n * 创建 SVG 图标 DOM 元素\r\n * ========================================================================\r\n * @method icon\r\n * @alias createElement\r\n * @see createElement\r\n * @param {String} name\r\n * @param {Object} [options]\r\n * @param {Number|Array} [options.size]\r\n * @param {String} [options.color]\r\n * @param {String} [options.iconSet]\r\n * @returns {HTMLElement}\r\n */\r\nconst icon = (name, options = {}) => {\r\n return createElement(name, options)\r\n}\r\n\r\nexport default icon\r\n","import DEFAULTS from './defaults'\r\n\r\nconst SYMBOLS = [...DEFAULTS]\r\n\r\nexport default SYMBOLS\r\n","const DEFAULTS = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n]\r\n\r\nexport default DEFAULTS\r\n","import isString from '../types/isString'\r\nimport getSymbol from './getSymbol'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n *\r\n * @method getSymbols\r\n * @param {String} [name]\r\n * @param {String} [iconSet]\r\n * @returns {string[]|*}\r\n */\r\nconst getSymbols = (name, iconSet = 'icon') => {\r\n if (isString(name)) {\r\n return getSymbol(name, iconSet)\r\n }\r\n\r\n return [...SYMBOLS]\r\n}\r\n\r\nexport default getSymbols\r\n","import SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method getSymbol\r\n * @param {String} name\r\n * @param {String} [iconSet]\r\n * @returns {String}\r\n */\r\nconst getSymbol = (name, iconSet = 'icon') => {\r\n const patternName = /id=\"(.*?)\"/\r\n const patternSet = /^(\\w+)-/\r\n const symbols = SYMBOLS\r\n\r\n return symbols.find((symbol) => {\r\n const names = patternName.exec(symbol)\r\n const fullName = names[1]\r\n const sets = patternSet.exec(fullName)\r\n const setName = sets[1]\r\n const iconName =\r\n iconSet === 'icon' ? `${iconSet}-${name}` : `${iconSet}-icon-${name}`\r\n\r\n return setName === iconSet && fullName === iconName\r\n })\r\n}\r\n\r\nexport default getSymbol\r\n","import add from './add'\r\nimport getSymbols from './getSymbols'\r\n\r\n/**\r\n * 绘制 SVG 图标集\r\n * ========================================================================\r\n * @method paint\r\n * @param {String|Array} symbol\r\n */\r\nconst paint = (symbol = '') => {\r\n const $body = document.body\r\n let $icons = document.querySelector('#outline-icons')\r\n let symbols = []\r\n\r\n add(symbol)\r\n symbols = getSymbols()\r\n\r\n if ($icons) {\r\n $icons.innerHTML = symbols.join('')\r\n } else {\r\n $icons = document.createElement('div')\r\n $icons.innerHTML =\r\n ``\r\n $body.insertBefore($icons.firstChild, $body.firstChild)\r\n }\r\n}\r\n\r\nexport default paint\r\n","import isArray from '../types/isArray'\r\nimport isString from '../types/isString'\r\nimport SYMBOLS from './symbols'\r\n\r\n/**\r\n * @method add\r\n * @param {Array|String} symbols\r\n * @return {Boolean}\r\n */\r\nconst add = (symbols) => {\r\n if (!symbols) {\r\n return false\r\n }\r\n\r\n if (isArray(symbols) && symbols.length > 0) {\r\n symbols.forEach((symbol) => {\r\n /* istanbul ignore else */\r\n if (SYMBOLS.indexOf(symbol) === -1 && isString(symbol)) {\r\n SYMBOLS.push(symbol)\r\n }\r\n })\r\n } else {\r\n /* istanbul ignore else */\r\n if (isString(symbols)) {\r\n SYMBOLS.push(symbols)\r\n }\r\n }\r\n}\r\n\r\nexport default add\r\n","/**\r\n * 获取 options 节点下匹配 selector 选择器的 DOM 节点\r\n * ========================================================================\r\n * Element.matches() 方法可以用来判断 DOM 元素是否与给定的选择器匹配,事件代理判断是\r\n * 否触发绑定的代理事件回调函数,关键就是使用 Element.matches() 辨别当前事件触发的目\r\n * 标 DOM 元素是否为事件代理所期望触发的目标。\r\n * ========================================================================\r\n * @method matches\r\n * @see https://developer.mozilla.org/en-US/docs/web/api/element/matches\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)匹配 DOM 元素的选择器\r\n * @returns {Boolean}\r\n */\r\nconst matches = (el, selector = '') => {\r\n const sel = selector.replace(/^>/i, '')\r\n\r\n if (!selector || !sel || !el) {\r\n return false\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el.matches) {\r\n return el.matches(sel)\r\n } else if (el.msMatchesSelector) {\r\n return el.msMatchesSelector(sel)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport default matches\r\n","/**\r\n * 获取 DOM 元素的父节点\r\n * ========================================================================\r\n * @method getParentOrHost\r\n * @param {*|HTMLElement} el - (必须)要获取父节点的 DOM 元素\r\n * @returns {*|HTMLElement}\r\n */\r\nconst getParentOrHost = (el) => {\r\n return el.host && el !== document && el.host.nodeType\r\n ? el.host\r\n : el.parentNode\r\n}\r\n\r\nexport default getParentOrHost\r\n","import closest from '../dom/closest'\r\nimport off from './off'\r\nimport getTarget from './getTarget'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定代理事件\r\n * ========================================================================\r\n * @method on\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String} selector - (必须)事件代理目标 DOM 元素的选择器\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (可选) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst on = (el, selector, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n\r\n const listener = function (evt) {\r\n const target = getTarget(evt)\r\n // 通过 Element.matches 方法获得点击的目标元素\r\n const delegateTarget = closest(target, selector, el)\r\n let overrideContext = context || el\r\n\r\n evt.delegateTarget = delegateTarget\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (delegateTarget) {\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n }\r\n\r\n if (!el) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n selector,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default on\r\n","import resolveTextNode from '../dom/resolveTextNode'\r\n\r\n/**\r\n * 返回触发事件的 target DOM 元素\r\n * ========================================================================\r\n * @method getTarget\r\n * @param {Event} evt - Event 对象\r\n * @return {HTMLElement} - Event 对象的 target DOM 元素\r\n */\r\nconst getTarget = function (evt) {\r\n const target = evt.target\r\n\r\n return resolveTextNode(target)\r\n}\r\n\r\nexport default getTarget\r\n","/**\r\n * 在某些情况下,某些浏览器(例如:Safari 浏览器)会返回实际的目标元素内部的文本节点。\r\n * resolveTextNode() 方法则会返回实际的目标节点。\r\n * ========================================================================\r\n * @method resolveTextNode\r\n * @param {HTMLElement|Text} el - 要解析的节点\r\n * @return {*|HTMLElement} - 实际的目标 DOM 节点\r\n */\r\nconst resolveTextNode = function (el) {\r\n if (el && el.nodeType === 3) {\r\n return el.parentNode\r\n }\r\n\r\n return el\r\n}\r\n\r\nexport default resolveTextNode\r\n","import matches from './matches'\r\nimport getParentOrHost from './getParentOrHost'\r\n\r\n/**\r\n * 获取 options 元素父元素最近的包含 selector 选择器的元素\r\n * ========================================================================\r\n * @method closest\r\n * @param {HTMLElement} el - (必须)DOM 元素\r\n * @param {String} selector - (必须)DOM 元素的选择其\r\n * @param {HTMLElement} [ctx] - (必须)比对的 DOM 元素\r\n * @param {Boolean} [includeCTX] - (必须)是否包含 context DOM 元素\r\n * @returns {null|HTMLElement} - 返回最接近的 DOM 元素\r\n */\r\nconst closest = (el, selector, ctx, includeCTX) => {\r\n const context = ctx || document\r\n\r\n if (!el) {\r\n return null\r\n }\r\n\r\n do {\r\n /* istanbul ignore else */\r\n if (\r\n (selector != null &&\r\n (selector.startsWith('>')\r\n ? el.parentNode === context && matches(el, selector)\r\n : matches(el, selector))) ||\r\n (includeCTX && el === context)\r\n ) {\r\n return el\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (el === context) {\r\n break\r\n }\r\n\r\n /* jshint boss:true */\r\n } while ((el = getParentOrHost(el)))\r\n}\r\n\r\nexport default closest\r\n","import isString from './utils/types/isString'\r\nimport isPlainObject from './utils/types/isPlainObject'\r\nimport isFunction from './utils/types/isFunction'\r\n\r\nimport extend from './utils/lang/extend'\r\nimport later from './utils/lang/later'\r\nimport stripScripts from './utils/lang/stripScripts'\r\nimport encodeHTML from './utils/lang/encodeHTML'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport guid from './utils/lang/guid'\r\n\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport setAttribute from './utils/dom/setAttribute'\r\nimport setAttributes from './utils/dom/setAttributes'\r\n\r\nimport icon from './utils/icons/icon'\r\nimport paint from './utils/icons/paint'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\n\r\nconst TYPES = ['info', 'success', 'warning', 'error']\r\nconst instances = []\r\nlet instance\r\n\r\npaint()\r\n\r\nclass Message extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Message.DEFAULTS)\r\n\r\n this.$el = null\r\n this.id = ''\r\n this.closed = false\r\n this.visible = false\r\n this.offset = -50\r\n this.timer = null\r\n this.destroyed = false\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n this.attr(options)\r\n this.id = this.attr('id')\r\n this.offset = this.attr('offset') || -50\r\n\r\n this.$emit('created', { ...this.attr() })\r\n\r\n this.render().addListeners()\r\n\r\n if (this.attr('visible')) {\r\n this.open()\r\n }\r\n\r\n return this\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n isDestroyed() {\r\n return this.destroyed\r\n }\r\n\r\n _getClassName() {\r\n const type = this.attr('type')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const visible = this.attr('visible')\r\n const customClass = this.attr('customClass')\r\n const className = [\r\n 'outline-message',\r\n `outline-message_${type}`,\r\n `outline-message_${effect}`\r\n ]\r\n\r\n if (round) {\r\n className.push('outline-message_round')\r\n }\r\n\r\n if (!closable) {\r\n className.push('outline-message_full-width')\r\n }\r\n\r\n if (visible) {\r\n className.push('outline-message_visible')\r\n }\r\n\r\n if (customClass) {\r\n className.push(customClass)\r\n }\r\n\r\n return className\r\n }\r\n\r\n render() {\r\n const type = this.attr('type')\r\n const message = this.attr('message')\r\n const effect = this.attr('effect')\r\n const round = this.attr('round')\r\n const closable = this.attr('closable')\r\n const dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n const className = this._getClassName()\r\n const iconName = effect === 'light' ? `circle-${type}` : type\r\n const children = []\r\n let iconSize = 20\r\n let $type\r\n let $message\r\n let $text\r\n let $close\r\n let $el\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n\r\n if (effect !== 'plain') {\r\n $type = icon(iconName, {\r\n iconSet: 'outline',\r\n size: iconSize\r\n })\r\n addClass($type, 'outline-message__icon')\r\n children.push($type)\r\n }\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n $text = document.createTextNode(encodeHTML(stripScripts(message)))\r\n } else {\r\n $text = document.createDocumentFragment()\r\n $text.innerHTML = message\r\n }\r\n $message = createElement(\r\n 'p',\r\n {\r\n className: 'outline-message__content'\r\n },\r\n [$text]\r\n )\r\n children.push($message)\r\n\r\n if (closable) {\r\n $close = icon('close', {\r\n iconSet: 'outline',\r\n size: 18\r\n })\r\n addClass($close, 'outline-message__close')\r\n children.push($close)\r\n }\r\n\r\n $el = createElement(\r\n 'div',\r\n {\r\n className: className.join(' ')\r\n },\r\n children\r\n )\r\n $el.style.cssText = `top:-50px;`\r\n this.$el = $el\r\n document.body.appendChild(this.$el)\r\n\r\n this.$emit('mounted')\r\n\r\n return this\r\n }\r\n\r\n _refreshIcon() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let iconSize = 20\r\n let type\r\n let effect\r\n let round\r\n let iconName\r\n let $icon\r\n let $svg\r\n let $use\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $icon = $el.querySelector('.outline-icon')\r\n\r\n if (!$icon) {\r\n return this\r\n }\r\n\r\n type = this.attr('type')\r\n effect = this.attr('effect')\r\n round = this.attr('round')\r\n\r\n if (effect === 'plain') {\r\n addClass($icon, HIDDEN)\r\n } else {\r\n removeClass($icon, HIDDEN)\r\n\r\n if (round && effect === 'default') {\r\n iconSize = 12\r\n }\r\n }\r\n\r\n $svg = $icon.querySelector('.outline-icon__svg')\r\n setAttributes($svg, {\r\n style: `width:${iconSize}px;height:${iconSize}px;`\r\n })\r\n\r\n $use = $svg.querySelector('use')\r\n iconName = effect === 'light' ? `circle-${type}` : type\r\n setAttribute($use, 'xlink:href', `#outline-icon-${iconName}`)\r\n\r\n return this\r\n }\r\n\r\n _refreshMessage() {\r\n const $el = this.$el\r\n let $message\r\n let dangerouslyUseHTMLString\r\n let message\r\n let text\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $message = $el.querySelector('.outline-message__content')\r\n dangerouslyUseHTMLString = this.attr('dangerouslyUseHTMLString')\r\n message = this.attr('message')\r\n\r\n if (!dangerouslyUseHTMLString) {\r\n text = encodeHTML(stripScripts(message))\r\n } else {\r\n text = message\r\n }\r\n\r\n $message.innerHTML = text\r\n\r\n return this\r\n }\r\n\r\n _refreshClose() {\r\n const HIDDEN = '.outline-message_hidden'\r\n const $el = this.$el\r\n let $close\r\n let closable\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n $close = $el.querySelector('.outline-message__close')\r\n closable = this.attr('closable')\r\n\r\n if ($close) {\r\n if (closable) {\r\n addClass($close, HIDDEN)\r\n } else {\r\n removeClass($close, HIDDEN)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n _refreshEl() {\r\n const $el = this.$el\r\n let className\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n className = this._getClassName()\r\n setAttribute($el, 'className', className.join(' '))\r\n\r\n return this\r\n }\r\n\r\n refresh(options) {\r\n if (!isPlainObject(options)) {\r\n return this\r\n }\r\n\r\n this.attr(options)\r\n ._refreshIcon()\r\n ._refreshMessage()\r\n ._refreshClose()\r\n ._refreshEl()\r\n\r\n return this\r\n }\r\n\r\n clearTimer() {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n this.timer = null\r\n }\r\n\r\n return this\r\n }\r\n\r\n startTimer(duration) {\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.timer = later(() => {\r\n this.$emit('opened')\r\n this.close()\r\n }, duration * 1000)\r\n\r\n return this\r\n }\r\n\r\n open(options) {\r\n const $el = this.$el\r\n let offset\r\n let duration\r\n let top\r\n let cssRules\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n if (this.isClosed()) {\r\n this.refresh(options)\r\n }\r\n\r\n offset = this.attr('offset')\r\n duration = this.attr('duration')\r\n top = offset && offset >= this.offset ? offset : this.offset\r\n cssRules = `top:${top}px;`\r\n\r\n this.clearTimer()\r\n\r\n this.$emit('beforeOpen')\r\n\r\n later(() => {\r\n this.visible = true\r\n\r\n addClass($el, 'outline-message_visible')\r\n $el.style.cssText = cssRules\r\n\r\n if (duration > 0) {\r\n this.startTimer(duration)\r\n }\r\n }, 100)\r\n\r\n return this\r\n }\r\n\r\n close() {\r\n const $el = this.$el\r\n const cssRules = `top:-50px;`\r\n let destroyAfterClosed\r\n let beforeClose\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n destroyAfterClosed = this.attr('destroyAfterClosed')\r\n beforeClose = this.attr('beforeClose')\r\n\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(this)\r\n }\r\n\r\n $el.style.cssText = cssRules\r\n removeClass($el, 'outline-message_visible')\r\n\r\n this.visible = false\r\n this.closed = true\r\n\r\n later(() => {\r\n this.$emit('closed')\r\n\r\n if (destroyAfterClosed) {\r\n this.destroy()\r\n }\r\n }, 500)\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n this.$emit('beforeDestroy')\r\n\r\n if (this.isDestroyed()) {\r\n return this\r\n }\r\n\r\n this.removeListeners()\r\n\r\n document.body.removeChild(this.$el)\r\n\r\n clearTimeout(this.timer)\r\n this._default()\r\n\r\n this.$emit('afterDestroy')\r\n\r\n return this\r\n }\r\n\r\n onMouseEnter() {\r\n this.clearTimer()\r\n return this\r\n }\r\n\r\n onMouseLeave() {\r\n const duration = this.attr('duration')\r\n const delay = this.attr('delay')\r\n\r\n if (duration <= 0) {\r\n return this\r\n }\r\n\r\n this.startTimer(delay)\r\n\r\n return this\r\n }\r\n\r\n onClose() {\r\n this.clearTimer()\r\n this.close()\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $el = this.$el\r\n\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseenter',\r\n this.onMouseEnter,\r\n this,\r\n true\r\n )\r\n on(\r\n $el,\r\n '.outline-message__content',\r\n 'mouseleave',\r\n this.onMouseLeave,\r\n this,\r\n true\r\n )\r\n on($el, '.outline-message__close', 'click', this.onClose, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $el = this.$el\r\n\r\n off($el, 'mouseenter', this.onMouseEnter)\r\n off($el, 'mouseleave', this.onMouseLeave)\r\n off($el, 'click', this.onClose)\r\n\r\n return this\r\n }\r\n}\r\n\r\nMessage.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n id: '',\r\n type: 'info',\r\n effect: 'default',\r\n round: false,\r\n offset: 30,\r\n duration: 3,\r\n delay: 2,\r\n message: '',\r\n customClass: '',\r\n closable: true,\r\n visible: true,\r\n dangerouslyUseHTMLString: false,\r\n destroyAfterClosed: true,\r\n beforeClose: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nTYPES.forEach((type) => {\r\n Message[type] = (options) => {\r\n const config = {}\r\n const id = guid(`outline-message-`)\r\n const beforeClose = options.beforeClose || null\r\n let offset = options.offset || 30\r\n\r\n if (isString(options)) {\r\n config.message = options\r\n } else {\r\n if (isPlainObject(options)) {\r\n extend(config, options)\r\n }\r\n }\r\n config.id = id\r\n config.type = type\r\n config.offset = offset\r\n config.visible = false\r\n config.beforeClose = () => {\r\n Message.close(id, beforeClose)\r\n }\r\n\r\n instance = new Message(config)\r\n instances.forEach((item) => {\r\n offset += item.$el.offsetHeight + 16\r\n })\r\n instance.offset = offset\r\n instance.open()\r\n instances.push(instance)\r\n\r\n return instance\r\n }\r\n})\r\n\r\n// 关闭指定 id 消息的静态方法\r\nMessage.close = (id, beforeClose) => {\r\n const len = instances.length\r\n let index = -1\r\n let i\r\n let offsetHeight\r\n\r\n instances.forEach((instance, i) => {\r\n // 在 instances 中通过 id 找到要关闭的消息\r\n if (id === instance.id) {\r\n offsetHeight = instance.$el.offsetHeight\r\n index = i\r\n\r\n // 关闭消息\r\n if (isFunction(beforeClose)) {\r\n beforeClose.call(instance)\r\n }\r\n\r\n instances.splice(i, 1)\r\n }\r\n })\r\n\r\n if (len <= 1 || index === -1 || index > instances.length - 1) {\r\n return false\r\n }\r\n\r\n i = index\r\n\r\n // 界面中的消息逐个向上收起\r\n for (; i < len - 1; i += 1) {\r\n const dom = instances[i].$el\r\n\r\n dom.style['top'] = parseInt(dom.style['top'], 10) - offsetHeight - 16 + 'px'\r\n }\r\n}\r\n\r\n// 关闭所有消息的静态方法\r\nMessage.clear = () => {\r\n let i = instances.length - 1\r\n for (; i >= 0; i -= 1) {\r\n instances[i].close()\r\n }\r\n}\r\n\r\nexport default Message\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Command {\r\n constructor(name, action) {\r\n this.name = name\r\n\r\n if (isFunction(action)) {\r\n this.action = action\r\n }\r\n }\r\n\r\n execute() {\r\n this.action()\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Command\r\n","import isFunction from './utils/types/isFunction'\r\n\r\nclass Commands {\r\n constructor() {\r\n this.commands = []\r\n }\r\n\r\n get(name) {\r\n return this.commands.find((cmd) => cmd.name === name)\r\n }\r\n\r\n add(command) {\r\n this.commands.push(command)\r\n\r\n return this\r\n }\r\n\r\n del(name) {\r\n const commands = this.commands\r\n const command = commands.find((cmd) => cmd.name === name)\r\n const index = command ? commands.indexOf(command) : -1\r\n\r\n if (index > -1) {\r\n commands.splice(index, 1)\r\n }\r\n\r\n return this\r\n }\r\n\r\n clear() {\r\n this.commands = []\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n const command = this.commands.find((cmd) => cmd.name === name)\r\n\r\n if (isFunction(command?.execute)) {\r\n command.execute()\r\n }\r\n\r\n return this\r\n }\r\n}\r\n\r\nexport default Commands\r\n","import icon from './utils/icons/icon'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\n\r\nconst _createButton = (button, rounded = true) => {\r\n const $icon = icon(button.icon, {\r\n iconSet: button.iconSet || 'outline',\r\n color: button.color || '',\r\n size: button.size\r\n })\r\n const $anchor = createElement(\r\n 'a',\r\n {\r\n className: `outline-toolbar__anchor`,\r\n href: button.link\r\n },\r\n $icon\r\n )\r\n const $button = createElement(\r\n 'div',\r\n {\r\n className: `outline-toolbar__button ${button.name}`,\r\n 'data-cmd': button.name\r\n },\r\n [button.link ? $anchor : $icon]\r\n )\r\n\r\n addClass($icon, 'outline-toolbar__icon')\r\n\r\n if (rounded) {\r\n addClass($button, 'outline-toolbar_rounded')\r\n }\r\n\r\n if (button.disabled) {\r\n addClass($button, 'outline-toolbar_disabled')\r\n }\r\n\r\n return $button\r\n}\r\n\r\nexport default _createButton\r\n","import isString from './utils/types/isString'\r\nimport isFunction from './utils/types/isFunction'\r\nimport isObject from './utils/types/isObject'\r\nimport isArray from './utils/types/isArray'\r\nimport later from './utils/lang/later'\r\nimport guid from './utils/lang/guid'\r\nimport cloneDeep from './utils/lang/cloneDeep'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport hasClass from './utils/dom/hasClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport on from './utils/event/on'\r\nimport off from './utils/event/off'\r\nimport paint from './utils/icons/paint'\r\n\r\nimport Base from './base'\r\nimport Command from './command'\r\nimport Commands from './commands'\r\n\r\nimport _createButton from './_createButton'\r\n\r\nconst DISABLED = 'outline-toolbar_disabled'\r\nconst HIDDEN = 'outline-toolbar_hidden'\r\n\r\nclass Toolbar extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Toolbar.DEFAULTS)\r\n\r\n this.disabled = false\r\n this.closed = false\r\n\r\n this.$el = null\r\n this.buttons = []\r\n this.commands = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let created\r\n\r\n this.attr(options)\r\n\r\n this.disabled = this.attr('disabled')\r\n this.closed = this.attr('closed')\r\n this.commands = new Commands()\r\n\r\n created = this.attr('created')\r\n\r\n if (isFunction(created)) {\r\n created.call(this)\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n isDisabled(name) {\r\n let button\r\n\r\n if (name) {\r\n button = this.get(name)\r\n\r\n return button.disabled\r\n }\r\n\r\n return this.disabled\r\n }\r\n\r\n isExist(name) {\r\n const button = this.get(name)\r\n return !!button\r\n }\r\n\r\n isClosed() {\r\n return this.closed\r\n }\r\n\r\n _getCommand(button) {\r\n const _self = this\r\n const { action, name } = button\r\n let command = null\r\n let handler = null\r\n let context\r\n let listener\r\n\r\n if (!action) {\r\n return command\r\n }\r\n\r\n handler = action.handler\r\n context = action.context || this\r\n\r\n if (isFunction(handler)) {\r\n listener = handler\r\n } else if (isString(handler)) {\r\n listener = function () {\r\n _self.$emit(handler, name)\r\n }\r\n }\r\n\r\n if (isFunction(listener)) {\r\n command = new Command(name, listener.bind(context))\r\n }\r\n\r\n return command\r\n }\r\n\r\n get(name) {\r\n return this.buttons.find((button) => button.name === name)\r\n }\r\n\r\n render() {\r\n const mounted = this.attr('mounted')\r\n const buttons = this.attr('buttons') || []\r\n const placement = this.attr('placement')\r\n\r\n paint()\r\n\r\n this.$el = createElement('div', {\r\n id: guid('outline-toolbar'),\r\n className: `outline-toolbar outline-toolbar_${placement}`\r\n })\r\n this._paint(buttons)\r\n document.body.appendChild(this.$el)\r\n\r\n if (this.closed) {\r\n this.hide()\r\n }\r\n\r\n if (this.disabled) {\r\n this.disable()\r\n }\r\n\r\n if (isFunction(mounted)) {\r\n mounted.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$el.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint(buttons) {\r\n const rounded = this.attr('rounded')\r\n const $fragment = document.createDocumentFragment()\r\n\r\n buttons.forEach((button) => {\r\n const $button = _createButton(button, rounded)\r\n const command = this._getCommand(button)\r\n const { name, disabled, context } = button\r\n\r\n $fragment.appendChild($button)\r\n\r\n if (!this.isExist(name)) {\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n })\r\n\r\n this.$el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n document.body.removeChild(this.$el)\r\n return this\r\n }\r\n\r\n refresh(buttons) {\r\n this.attr({ buttons })\r\n this.erase()._paint(buttons)\r\n return this\r\n }\r\n\r\n add(button) {\r\n const $el = this.$el\r\n const $fragment = document.createDocumentFragment()\r\n const buttons = this.attr('buttons') || []\r\n const { name, disabled, context } = button\r\n const command = this._getCommand(button)\r\n const _add = (button) => {\r\n const $button = _createButton(button)\r\n\r\n $fragment.appendChild($button)\r\n\r\n buttons.push(button)\r\n this.buttons.push({\r\n $el: $button,\r\n name,\r\n disabled: disabled || false,\r\n context: context || this,\r\n command\r\n })\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n }\r\n\r\n if (isObject(button)) {\r\n _add(button)\r\n } else if (isArray(button)) {\r\n button.forEach((item) => {\r\n if (isObject(item)) {\r\n _add(item)\r\n }\r\n })\r\n }\r\n $el.appendChild($fragment)\r\n\r\n return this\r\n }\r\n\r\n remove(name) {\r\n const $el = this.$el\r\n const buttons = this.buttons\r\n const button = this.get(name)\r\n let index = -1\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n index = buttons.indexOf(button)\r\n\r\n if (index > -1) {\r\n buttons.splice(index, 1)\r\n this.attrs('buttons').splice(index, 1)\r\n }\r\n\r\n this._disable(name)\r\n $el.removeChild(button.$el)\r\n\r\n return this\r\n }\r\n\r\n _disable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = true\r\n\r\n if (command) {\r\n this.commands.del(command)\r\n }\r\n\r\n addClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n _enable(name) {\r\n const button = this.get(name)\r\n const command = this.commands.get(name)\r\n\r\n if (!button || !button.disabled) {\r\n return this\r\n }\r\n\r\n button.disabled = false\r\n\r\n if (command) {\r\n this.commands.add(command)\r\n }\r\n\r\n removeClass(button.$el, DISABLED)\r\n\r\n return this\r\n }\r\n\r\n disable(name) {\r\n const disabled = this.attr('afterDisabled')\r\n\r\n if (name) {\r\n this._disable(name)\r\n } else {\r\n addClass(this.$el, DISABLED)\r\n this.removeListeners()\r\n this.disabled = true\r\n\r\n if (isFunction(disabled)) {\r\n disabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n enable(name) {\r\n const enabled = this.attr('afterEnabled')\r\n\r\n if (name) {\r\n this._enable(name)\r\n } else {\r\n this.disabled = false\r\n removeClass(this.$el, DISABLED)\r\n this.addListeners()\r\n\r\n if (isFunction(enabled)) {\r\n enabled.call(this)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n show(name) {\r\n const opened = this.attr('afterOpened')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n removeClass(button.$el, HIDDEN)\r\n } else {\r\n removeClass($el, HIDDEN)\r\n this.closed = false\r\n\r\n if (isFunction(opened)) {\r\n later(() => {\r\n opened.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n hide(name) {\r\n const closed = this.attr('afterClosed')\r\n const button = this.get(name)\r\n const $el = this.$el\r\n\r\n if (name) {\r\n if (!button) {\r\n return this\r\n }\r\n\r\n addClass(button.$el, HIDDEN)\r\n } else {\r\n addClass($el, HIDDEN)\r\n this.closed = true\r\n\r\n if (isFunction(closed)) {\r\n later(() => {\r\n closed.call(this)\r\n }, 310)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.isClosed()) {\r\n this.show()\r\n } else {\r\n this.hide()\r\n }\r\n\r\n return this\r\n }\r\n\r\n highlight(name) {\r\n const button = this.get(name)\r\n const ACTIVE = 'outline-toolbar_active'\r\n let $button\r\n\r\n if (!button) {\r\n return this\r\n }\r\n\r\n $button = button.$el\r\n\r\n if (hasClass($button, ACTIVE)) {\r\n removeClass($button, ACTIVE)\r\n } else {\r\n addClass($button, ACTIVE)\r\n }\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const beforeDestroy = this.attr('beforeDestroy')\r\n const afterDestroy = this.attr('afterDestroy')\r\n\r\n if (isFunction(beforeDestroy)) {\r\n beforeDestroy.call(this)\r\n }\r\n\r\n this.commands.clear()\r\n this.removeListeners()._remove()._default()\r\n\r\n if (isFunction(afterDestroy)) {\r\n afterDestroy.call(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n execute(name) {\r\n if (this.isDisabled(name)) {\r\n return this\r\n }\r\n\r\n this.commands.execute(name)\r\n\r\n return this\r\n }\r\n\r\n onExecute(evt) {\r\n const $button = evt.delegateTarget\r\n let cmd = ''\r\n\r\n if ($button) {\r\n cmd = $button.getAttribute('data-cmd')\r\n\r\n if (cmd) {\r\n this.execute(cmd)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n on($el, `.outline-toolbar__button`, 'click', this.onExecute, this, true)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const buttons = this.attr('buttons') || []\r\n const $el = this.$el\r\n\r\n if (!buttons || buttons.length < 1) {\r\n return this\r\n }\r\n\r\n off($el, '.outline-toolbar__button', this.onExecute)\r\n\r\n return this\r\n }\r\n}\r\n\r\nToolbar.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n placement: 'ltr',\r\n closed: false,\r\n disabled: false,\r\n rounded: true,\r\n buttons: [],\r\n created: null,\r\n mounted: null,\r\n afterClosed: null,\r\n afterOpened: null,\r\n afterDisabled: null,\r\n afterEnabled: null,\r\n beforeDestroy: null,\r\n afterDestroy: null\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Toolbar\r\n","import addClass from './utils/dom/addClass'\r\n\r\nconst _updateSiblingElements = (siblingElement, isPrev) => {\r\n let tagName\r\n let $sibling = siblingElement\r\n\r\n while ($sibling) {\r\n tagName = $sibling.tagName.toLowerCase()\r\n\r\n if (tagName !== 'script' && tagName !== 'style') {\r\n addClass($sibling, 'outline-reader_sibling')\r\n }\r\n\r\n if (isPrev) {\r\n $sibling = $sibling.previousElementSibling\r\n } else {\r\n $sibling = $sibling.nextElementSibling\r\n }\r\n }\r\n}\r\n\r\nexport default _updateSiblingElements\r\n","import cloneDeep from './utils/lang/cloneDeep'\r\nimport later from './utils/lang/later'\r\nimport isString from './utils/types/isString'\r\nimport isElement from './utils/types/isElement'\r\nimport isFunction from './utils/types/isFunction'\r\nimport createElement from './utils/dom/createElement'\r\nimport addClass from './utils/dom/addClass'\r\nimport removeClass from './utils/dom/removeClass'\r\nimport at from './utils/event/at'\r\nimport stop from './utils/event/stop'\r\nimport off from './utils/event/off'\r\n\r\nimport Base from './base'\r\nimport Message from './message'\r\nimport Toolbar from './toolbar'\r\n\r\nimport _updateSiblingElements from './_updateSiblingElements'\r\n\r\nconst ENTER_READING_TIP = '进入阅读模式,按 ESC 键可退出阅读模式'\r\n\r\nclass Reader extends Base {\r\n constructor(options) {\r\n super()\r\n\r\n this._default()\r\n\r\n if (options) {\r\n this.initialize(options)\r\n }\r\n }\r\n\r\n _default() {\r\n this.attrs = cloneDeep(Reader.DEFAULTS)\r\n this.reading = false\r\n\r\n this.$target = null\r\n this.$paper = null\r\n this.$title = null\r\n this.$article = null\r\n this.$progress = null\r\n\r\n this.toolbar = null\r\n\r\n return this\r\n }\r\n\r\n initialize(options) {\r\n let target = null\r\n\r\n this.attr(options)\r\n\r\n target = this.attr('target')\r\n\r\n if (isString(target)) {\r\n this.$target = document.querySelector(target)\r\n } else if (isElement(target)) {\r\n this.$target = target\r\n }\r\n\r\n if (!this.$target) {\r\n return this\r\n }\r\n\r\n this.render().addListeners()\r\n\r\n return this\r\n }\r\n\r\n render() {\r\n this._renderEdge()._paint(this.$target)\r\n return this\r\n }\r\n\r\n erase() {\r\n this.$article.innerHTML = ''\r\n return this\r\n }\r\n\r\n _paint($content) {\r\n const $fragment = document.createDocumentFragment()\r\n const $children = [...$content.cloneNode(true).children]\r\n\r\n later(() => {\r\n $children.forEach(($child) => {\r\n $fragment.appendChild($child)\r\n })\r\n\r\n this.$article.appendChild($fragment)\r\n })\r\n\r\n return this\r\n }\r\n\r\n _remove() {\r\n const $paper = this.$paper\r\n const toolbar = this.toolbar\r\n\r\n if ($paper) {\r\n document.body.removeChild($paper)\r\n }\r\n\r\n if (toolbar) {\r\n toolbar.destroy()\r\n }\r\n\r\n return this\r\n }\r\n\r\n refresh() {\r\n this.erase()._paint(this.$target)\r\n return this\r\n }\r\n\r\n _renderEdge() {\r\n const $target = this.$target\r\n let title = this.attr('title')\r\n let $paper\r\n let $title\r\n let $article\r\n let $progress\r\n let $sibling\r\n\r\n $title = $target.querySelector('h1')\r\n\r\n if (isElement(title)) {\r\n $title = title\r\n }\r\n\r\n if (isElement($title)) {\r\n title = $title.innerText\r\n }\r\n\r\n $title = createElement(\r\n 'h1',\r\n {\r\n className: 'outline-reader__title'\r\n },\r\n title\r\n )\r\n this.$title = $title\r\n\r\n $article = createElement('article', {\r\n id: 'outline-reader__article',\r\n className: 'outline-reader__article'\r\n })\r\n this.$article = $article\r\n\r\n $progress = createElement('div', {\r\n className: 'outline-reader__progress'\r\n })\r\n this.$progress = $progress\r\n\r\n this.toolbar = new Toolbar({\r\n placement: 'rtl',\r\n buttons: [\r\n {\r\n name: 'print',\r\n icon: 'print',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.print\r\n }\r\n },\r\n {\r\n name: 'exit',\r\n icon: 'close',\r\n size: 20,\r\n action: {\r\n context: this,\r\n handler: this.exit\r\n }\r\n }\r\n ]\r\n })\r\n\r\n $paper = createElement(\r\n 'section',\r\n {\r\n id: 'outline-reader',\r\n className: 'outline-reader outline-reader_hidden'\r\n },\r\n [$progress, $title, $article, this.toolbar.$el]\r\n )\r\n this.$paper = $paper\r\n\r\n document.body.appendChild($paper)\r\n\r\n later(() => {\r\n // 设置邻居节点的打印样式\r\n $sibling = $paper.previousElementSibling\r\n _updateSiblingElements($sibling, true)\r\n\r\n $sibling = $paper.nextElementSibling\r\n _updateSiblingElements($sibling)\r\n })\r\n\r\n return this\r\n }\r\n\r\n enter() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n const enterReadingTip = this.attr('enterReadingTip') || ENTER_READING_TIP\r\n\r\n if (this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n $siblings.forEach(($sibling) => {\r\n addClass($sibling, HIDDEN)\r\n })\r\n addClass($paper, READING)\r\n removeClass($paper, HIDDEN)\r\n this.toolbar.show()\r\n this.reading = true\r\n\r\n Message.info({\r\n round: true,\r\n message: enterReadingTip\r\n })\r\n\r\n this.$emit('enterReading')\r\n\r\n return this\r\n }\r\n\r\n exit() {\r\n const READER = 'outline-reader'\r\n const READING = `${READER}--reading`\r\n const HIDDEN = `${READER}_hidden`\r\n const $paper = this.$paper\r\n const $siblings = document.querySelectorAll('.outline-reader_sibling')\r\n\r\n if (!this.reading || !$paper) {\r\n return this\r\n }\r\n\r\n addClass($paper, HIDDEN)\r\n removeClass($paper, READING)\r\n $siblings.forEach(($sibling) => {\r\n removeClass($sibling, HIDDEN)\r\n })\r\n this.toolbar.hide()\r\n this.reading = false\r\n\r\n this.$emit('exitReading')\r\n\r\n return this\r\n }\r\n\r\n toggle() {\r\n if (this.reading) {\r\n this.exit()\r\n } else {\r\n this.enter()\r\n }\r\n\r\n return this\r\n }\r\n\r\n print() {\r\n if (!isFunction(print)) {\r\n return this\r\n }\r\n\r\n print()\r\n\r\n return this\r\n }\r\n\r\n destroy() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n this.removeListeners()._remove()._default()\r\n\r\n return this\r\n }\r\n\r\n onPrint() {\r\n this.print()\r\n return this\r\n }\r\n\r\n onEnterReading() {\r\n this.toggle()\r\n return this\r\n }\r\n\r\n onExitReading(evt) {\r\n const keyCode = evt.keyCode\r\n\r\n if (keyCode === 27 && this.reading) {\r\n this.toggle()\r\n stop(evt)\r\n }\r\n\r\n return this\r\n }\r\n\r\n addListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n at(document, 'keyup', this.onExitReading, this, true)\r\n\r\n this.$on('toolbar:action:print', this.onPrint)\r\n this.$on('toolbar:action:reading', this.onEnterReading)\r\n\r\n return this\r\n }\r\n\r\n removeListeners() {\r\n const $paper = this.$paper\r\n\r\n if (!$paper) {\r\n return this\r\n }\r\n\r\n off(document, 'keyup', this.onExitReading)\r\n\r\n this.$off('toolbar:action:print')\r\n this.$off('toolbar:action:reading')\r\n\r\n return this\r\n }\r\n}\r\n\r\nReader.DEFAULTS = (() => {\r\n const OPTIONS = {\r\n target: '',\r\n title: '',\r\n enterReadingTip: ENTER_READING_TIP\r\n }\r\n\r\n return cloneDeep(OPTIONS)\r\n})()\r\n\r\nexport default Reader\r\n","/**\r\n * 停止事件(阻止默认行为和阻止事件的捕获或冒泡)\r\n * ========================================================================\r\n * @method stop\r\n * @param {Event} evt - 事件对象\r\n *\r\n * @example\r\n *
\r\n * Service\r\n * Help\r\n *
\r\n *\r\n * const $nav = document.querySelector('#nav')\r\n * const $service = document.querySelector('.anchor')\r\n *\r\n * on($nav, 'click', function(evt) {\r\n * console.log('你点击了导航栏')\r\n * })\r\n *\r\n * on($anchor, 'click', function(evt) {\r\n * console.log('tagName', this.tagName)\r\n *\r\n * // 工作台输出:'a'\r\n * // 不会触发事件冒泡,输出:'你点击了导航栏'\r\n * // 也不会切换到 href 属性的页面,阻止了点击链接的默认行为\r\n * stopEvent(evt)\r\n * })\r\n */\r\nconst stop = function (evt) {\r\n evt.stopPropagation()\r\n evt.preventDefault()\r\n}\r\n\r\nexport default stop\r\n","import isFunction from '../types/isFunction'\r\nimport off from './off'\r\n\r\nimport { CAPTURE_EVENTS } from './enum'\r\n\r\n/**\r\n * 绑定事件\r\n * ========================================================================\r\n * @method at\r\n * @param {HTMLElement|String|Object} el - (必须)绑定代理事件的 DOM 节点\r\n * @param {String|Function} type - (必须)事件类型或者事件处理器回调函数\r\n * @param {Function|Object} fn - (必须) 事件处理器回调函数或者传递给事件处理器回调函数的数据对象\r\n * @param {Object|Boolean} [data] - (可选)传递给事件处理器回调函数的数据对象或者事件处理器回调函数的 this 上下文指向,\r\n * @param {Object|Boolean} [context] - (可选)事件处理器回调函数的 this 上下文指向,或者是否仅触发一次\r\n * 当设置为 true 时,则事件处理器回调函数的 this 上下文指向为 data 对象\r\n * @param {Boolean} once - (可选)是否仅触发一次\r\n */\r\nconst at = (el, type, fn, data, context, once = false) => {\r\n // CAPTURE_EVENTS 中的特殊事件,采用事件捕获模型\r\n const capture = CAPTURE_EVENTS.indexOf(type) > -1\r\n const listener = function (evt) {\r\n let overrideContext = context || el\r\n\r\n // 当设置为 true 时,则事件处理器回调函数的\r\n // this 上下文指向为 data 对象\r\n if (context === true) {\r\n overrideContext = data\r\n }\r\n\r\n // 仅触发一次\r\n /* istanbul ignore else */\r\n if (once === true) {\r\n off(el, type, listener)\r\n }\r\n\r\n fn.call(overrideContext, evt, data)\r\n }\r\n\r\n if (!isFunction(fn)) {\r\n return false\r\n }\r\n\r\n if (!el._listeners) {\r\n el._listeners = []\r\n }\r\n\r\n // 缓存 options 元素绑定的事件处理器\r\n el._listeners.push({\r\n el,\r\n type,\r\n fn: listener,\r\n data,\r\n context,\r\n capture\r\n })\r\n\r\n // 缓存包装后的事件处理器\r\n fn._delegateListener = listener\r\n\r\n el.addEventListener(type, listener, capture)\r\n}\r\n\r\nexport default at\r\n"],"names":["toString","val","Object","prototype","apply","isFunction","isObject","o","isArray","Array","cloneDeep","obj","clone","from","assign","keys","forEach","key","later","fn","delay","arguments","length","undefined","setTimeout","isString","str","isElement","nodeName","tagName","nodeType","isDOM","el","isHTMLCollection","fragment","isTextNode","hasOwn","prop","hasOwnProperty","call","setAttribute","attr","value","toLowerCase","style","cssText","className","innerHTML","innerText","setAttributes","attrs","createElement","children","$fragment","document","createDocumentFragment","$el","isValidChild","child","append","$child","createTextNode","appendChild","every","hasClass","pattern","RegExp","allClass","classList","contains","exec","addClass","_classList","add","removeClass","remove","replace","CAPTURE_EVENTS","_off","type","capture","indexOf","_delegateListener","listeners","_listeners","index","listener","i","handler","splice","_delete","removeEventListener","purgeElement","recurse","$element","querySelector","$children","childNodes","getListeners","filter","off","extend","origin","source","_subscribers","_hasDirectSubscribersFor","topic","has","found","position","lastIndexOf","substring","_hasSubscribers","emit","data","async","execute","subscriber","message","callback","context","deliver","guid","uuid","prefix","_removeSubscriber","token","subject","execution","j","_removeSubscriberByToken","Base","constructor","options","this","initialize","render","addListeners","refresh","destroy","removeListeners","reload","$emit","event","publish","$on","push","subscribe","$off","unsubscribe","isPlainObject","getPrototypeOf","proto","isObjectLike","stripScripts","encodeHTML","CHARTS","tag","name","ICON","size","color","iconSet","width","height","defaultRules","cssRules","$icon","$svg","binds","svg","test","isSVG","xmlns","class","icon","SYMBOLS","getSymbols","patternName","patternSet","find","symbol","fullName","getSymbol","paint","$body","body","$icons","symbols","join","insertBefore","firstChild","matches","selector","sel","msMatchesSelector","getParentOrHost","host","parentNode","on","once","evt","target","getTarget","delegateTarget","closest","ctx","includeCTX","startsWith","overrideContext","addEventListener","instances","instance","Message","super","_default","DEFAULTS","id","closed","visible","offset","timer","destroyed","open","isClosed","isDestroyed","_getClassName","effect","round","closable","customClass","dangerouslyUseHTMLString","$type","$message","$text","$close","iconSize","_refreshIcon","HIDDEN","iconName","$use","_refreshMessage","text","_refreshClose","_refreshEl","clearTimer","clearTimeout","startTimer","duration","close","top","destroyAfterClosed","beforeClose","removeChild","onMouseEnter","onMouseLeave","onClose","config","item","offsetHeight","len","dom","parseInt","clear","Command","action","Commands","commands","get","cmd","command","del","_createButton","button","rounded","$anchor","href","link","$button","disabled","DISABLED","Toolbar","buttons","created","isDisabled","isExist","_getCommand","_self","bind","mounted","placement","_paint","hide","disable","erase","_remove","_add","_disable","_enable","enable","enabled","show","opened","toggle","highlight","ACTIVE","beforeDestroy","afterDestroy","onExecute","getAttribute","afterClosed","afterOpened","afterDisabled","afterEnabled","_updateSiblingElements","siblingElement","isPrev","$sibling","previousElementSibling","nextElementSibling","ENTER_READING_TIP","Reader","reading","$target","$paper","$title","$article","$progress","toolbar","_renderEdge","$content","cloneNode","title","print","exit","enter","READER","READING","$siblings","querySelectorAll","enterReadingTip","info","onPrint","onEnterReading","onExitReading","keyCode","stopPropagation","preventDefault","stop","at"],"mappings":"uOAOA,MAAMA,EAAYC,GACTC,OAAOC,UAAUH,SAASI,MAAMH,GCCnCI,EAAcJ,GACI,mBAARA,GAAwC,sBAAlBD,EAASC,GCAzCK,EAAYC,IAEG,oBAAhBP,EAASO,IACK,iBAANA,GACPF,EAAWE,KACP,OAANA,ECNEC,EAAWD,GACXE,MAAMD,QACDC,MAAMD,QAAQD,GAEE,mBAAhBP,EAASO,GCCdG,EAAaC,IACjB,IAAIC,EAAQ,CAAA,EAEZ,OAAY,OAARD,EACK,MAGLH,EAAQG,GACVC,EAAQH,MAAMI,KAAKF,IAEnBC,EAAQV,OAAOY,OAAO,CAAE,EAAEH,GAC1BT,OAAOa,KAAKH,GAAOI,SAASC,GAClBL,EAAMK,GAAOX,EAASK,EAAIM,IAAQP,EAAUC,EAAIM,IAAQN,EAAIM,MAIjEL,EAAK,ECpBRM,EAAQ,SAACC,GAAoB,IAAhBC,EAAKC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IACzB,QAAKhB,EAAWc,IAITK,YAAW,KAChBL,GAAI,GACHC,EACL,ECXMK,EAAYC,GACM,iBAARA,ECCVC,EAAapB,MACPD,EAASC,IAAMA,EAAEqB,UAAYrB,EAAEsB,SAA0B,IAAftB,EAAEuB,UCJlDC,EAASC,IACb,SACE1B,EAAS0B,MACRL,EAAUK,ICNWA,OACd1B,EAAS0B,IAAwB,sBAAjBhC,EAASgC,IDKfC,CAAiBD,KENnBE,EFMqCF,EEJrD1B,EAAS4B,IAAoC,8BAAvBlC,EAASkC,KCFfF,OAEhB1B,EAAS0B,MACS,kBAAjBhC,EAASgC,IAA4BA,EAAGH,SAA2B,IAAhBG,EAAGF,WHGKK,CAAWH,KENvDE,KFOjB,EIFGE,EAASA,CAACzB,EAAK0B,KACnB,MAAMC,EAAiBpC,OAAOC,UAAUmC,eACxC,OAAO3B,GAAO2B,EAAeC,KAAK5B,EAAK0B,EAAK,ECFxCG,EAAeA,CAACR,EAAIS,EAAMC,KAC9B,IAAIb,EAAUG,EAAGH,QAAQc,cAEzB,OAAQF,GACN,IAAK,QACHT,EAAGY,MAAMC,QAAUH,EACnB,MACF,IAAK,QACa,UAAZb,GAAmC,aAAZA,EACzBG,EAAGU,MAAQA,EAEXV,EAAGQ,aAAaC,EAAMC,GAExB,MACF,IAAK,UACHV,EAAGQ,aAAa,MAAOE,GACvB,MACF,IAAK,YACHV,EAAGc,UAAYJ,EACf,MACF,IAAK,YACHV,EAAGe,UAAYL,EACf,MACF,IAAK,YACHV,EAAGgB,UAAYN,EACf,MACF,QACEV,EAAGQ,aAAaC,EAAMC,GAE1B,ECjCIO,EAAgBA,CAACjB,EAAIkB,KACzB,IAAKlB,IAAO1B,EAAS4C,GACnB,OAAO,EAGThD,OAAOa,KAAKmC,GAAOlC,SAASyB,IAC1B,MAAMC,EAAQQ,EAAMT,GAChBL,EAAOc,EAAOT,IAChBD,EAAaR,EAAIS,EAAMC,EACzB,GACA,ECCES,EAAgBA,CAACtB,EAASqB,EAAOE,KACrC,MAAMC,EAAYC,SAASC,yBACrBC,EAAMF,SAASH,cAActB,GAC7B4B,EAAgBC,GACb3B,EAAM2B,IAAUjC,EAASiC,GAE5BC,EAAUD,IACd,IAAIE,EAEJ,IAAKH,EAAaC,GAChB,OAAO,EAGL3B,EAAM2B,GACRE,EAASF,EACAjC,EAASiC,KAClBE,EAASN,SAASO,eAAeH,IAGnCL,EAAUS,YAAYF,EAAO,EAyB/B,OAtBItD,EAAS4C,GACXD,EAAcO,EAAKN,GACV1C,EAAQ0C,IAAUA,EAAMa,OAAOtB,GAASgB,EAAahB,KAC9DS,EAAMlC,SAAS0C,IACbC,EAAOD,EAAM,IAEN3B,EAAMmB,GACfS,EAAOT,GACEzB,EAASyB,IAClBS,EAAOL,SAASO,eAAeX,IAG7B1C,EAAQ4C,GACVA,EAASpC,SAAS0C,IAChBC,EAAOD,EAAM,IAGfC,EAAOP,GAGTI,EAAIM,YAAYT,GAETG,CAAG,EClDNQ,EAAWA,CAAChC,EAAIc,KACpB,MAAMmB,EAAU,IAAIC,OAAO,UAAYpB,EAAY,WACnD,IAAIqB,EACAC,EAEJ,QAAKzC,EAAUK,KAIfmC,EAAWnC,EAAGc,YAETqB,IAILC,EAAYpC,EAAGoC,UAEXA,GAAaA,EAAUC,SAClBrC,EAAGoC,UAAUC,SAASvB,KAGtBmB,EAAQK,KAAKH,IAAS,ECpB3BI,EAAWA,CAACvC,EAAIc,KAAc,IAAA0B,EAClC,IAAIJ,EACAD,EAEJ,GAAIH,EAAShC,EAAIc,GACf,OAAO,EAGTsB,EAAYpC,EAAGoC,UAEF,QAAbI,EAAIJ,SAAAI,IAASA,GAATA,EAAWC,IACbL,EAAUK,IAAI3B,IAEdqB,EAAWnC,EAAGc,UACdqB,GAAYA,EAAS7C,OAAS,EAAI,IAAMwB,EAAYA,EACpDd,EAAGc,UAAYqB,EACjB,ECfIO,EAAcA,CAAC1C,EAAIc,KAAc,IAAA0B,EACrC,IACIJ,EADAD,EAAWnC,EAAGc,UAGlB,IAAKqB,IAAaH,EAAShC,EAAIc,GAC7B,OAAO,ECPGpB,MDUZ0C,EAAYpC,EAAGoC,UAEF,QAAbI,EAAIJ,SAAAI,IAASA,GAATA,EAAWG,OACbP,EAAUO,OAAO7B,ICbPpB,EDeMyC,EAASS,QAAQ9B,EAAW,IAA5CqB,ICdG1C,EAASC,IAGPA,EAAIkD,QAAQ,iBAAkB,IDYnC5C,EAAGc,UAAYqB,EACjB,EE1BWU,EAAiB,CAC5B,WACA,OACA,UACA,QACA,OACA,SACA,aACA,cCMIC,EAAOA,CAAC9C,EAAI+C,EAAM5D,KACtB,MAAM6D,EAAUH,EAAeI,QAAQF,IAAS,EAG5C5D,EAAG+D,0BACL/D,EAAKA,EAAG+D,mBACEA,kBCZE,SAAUlD,EAAI+C,EAAM5D,GAClC,MAAMgE,EAAYnD,EAAGoD,WACrB,IAAIC,GAAS,EAEb,GAAIF,EAAU7D,OAAS,EACrB,OAAO,EAIT6D,EAAUnE,SAAQ,CAACsE,EAAUC,KAC3B,MAAMC,EAAUF,EAASnE,GAErB4D,IAASO,EAASP,OACpBM,EAAQE,EAEJC,IAAYrE,IACdkE,EAAQE,GAEZ,IAIEF,GAAS,GACXF,EAAUM,OAAOJ,EAAO,EAE5B,CDTEK,CAAQ1D,EAAI+C,EAAM5D,GAElBa,EAAG2D,oBAAoBZ,EAAM5D,EAAI6D,EAAQ,EEVrCY,EAAe,SAAU5D,EAAI+C,GAAuB,IAAjBc,EAAOxE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC9C,MAAMyE,EAAWrE,EAASO,GAAMsB,SAASyC,cAAc/D,GAAMA,EACvDgE,EAAYF,EAASG,WACrBd,ECPae,EAAClE,EAAI+C,KACxB,IAAII,EAAYnD,EAAGoD,YAAc,GAQjC,OANI3D,EAASsD,IAASA,IACpBI,EAAYA,EAAUgB,QAAQb,GACrBA,EAASP,OAASA,KAItBI,CAAS,EDFEe,CAAaJ,EAAUf,GAEzCI,EAAUnE,SAASsE,IACjBR,EAAKgB,EAAUR,EAASP,KAAMO,EAASnE,GAAG,KAIzC0E,IAAoB,IAATd,GAAsC,IAArB1D,UAAUC,SACvCwE,GACAE,GAEAA,EAAUhF,SAAS4C,IACbjC,EAAUiC,IACZgC,EAAahC,EAAQmB,EAAMc,EAC7B,GAGN,EEtBMO,EAAMA,CAACpE,EAAI+C,EAAM5D,KAErB,IAAKd,EAAWc,GAEd,OADAyE,EAAa5D,EAAI+C,IACV,EAGTD,EAAK9C,EAAI+C,EAAM5D,EAAG,ECZdkF,EAASA,CAACC,EAAQC,KACTrG,OAAOa,KAAKwF,GAEpBvF,SAASqB,IACRD,EAAOmE,EAAQlE,KACjBiE,EAAOjE,GAAQkE,EAAOlE,GACxB,GACA,ECVEmE,EAAe,CAAE,ECIjBC,EAA4BC,GACzBtE,EAAOoE,EAAcE,IAAUF,EAAaE,GAAOpF,OAAS,ECA/DqF,EAAM,SAACD,GACX,QAD0BrF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACRoF,EAAyBC,GCHpBA,KACvB,IAAIE,EAAQH,EAAyBC,GACjCG,EAAWH,EAAMI,YAAY,KAEjC,MAAQF,IAAuB,IAAdC,GAEfA,GADAH,EAAQA,EAAMK,UAAU,EAAGF,IACVC,YAAY,KAC7BF,EAAQH,EAAyBC,GAGnC,OAAOE,CAAK,EDPwCI,CAAgBN,EACtE,EEEMO,EAAO,SAACP,EAAOQ,GAAuB,IAAjBC,IAAK9F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC9B,MAAM+F,EAAWV,IACf,IAAKD,EAAyBC,GAC5B,OAAO,EAGTF,EAAaE,GAAO1F,SAASqG,IAG3B,MAAMC,EChBI,CACZ,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,wBACA,yBACA,2BAGWrC,QAAQjF,EDEYkH,KCFM,EDEEA,EAAKlH,WAAakH,EAEvDG,EAAWE,SAAShF,KAAK8E,EAAWG,SAAWH,EAAYC,EAAQ,GACnE,EAEEG,EAAUA,KACd,IAAIJ,EAAaX,EACbG,EAAWH,EAAMI,YAAY,KAEjC,MAAqB,IAAdD,GACLQ,EAAaA,EAAWN,UAAU,EAAGF,GACrCA,EAAWQ,EAAWP,YAAY,KAElCM,EAAQC,GAIVD,EAAQV,GAERU,EAAQ,IAAI,EAGd,IAAKT,EAAID,GACP,OAAO,EAGLS,EACF3F,WAAWiG,EAAS,IAEpBA,GAEJ,EEhDMC,EAAO,MACX,IAAIC,EAAO,EAEX,OAAQC,IACND,GAAQ,EAEDC,EAASA,EAAS,IAAMD,EAAO,QAAUA,EAEnD,EARY,GCGPE,EAAqBnB,IACzB,IAAKtE,EAAOoE,EAAcE,GACxB,OAAO,SAGFF,EAAaE,EAAM,ECJtBN,EAAMA,CAACM,EAAOoB,KAClB,IAAKnB,EAAID,GACP,OAAO,EAGLoB,ECL4BA,KAChC,MAAM/G,EAAOb,OAAOa,KAAKyF,GAGzB,IAAKsB,GAAS/G,EAAKO,OAAS,EAC1B,OAAO,EAGTP,EAAKC,SAAS+G,IACZ,MAAMV,EAAab,EAAauB,GAChC,IAAIrB,EAEJW,EAAWrG,SAAQ,CAACgH,EAAWC,KACzBD,EAAUT,WAAaO,GAASE,EAAUF,QAAUA,IACtDpB,EAAQsB,EAAUtB,MAClBW,EAAW5B,QAbL,EAamBwC,GAC3B,IAIEZ,EAAW/F,OAAS,GACtBuG,EAAkBnB,EACpB,GACA,EDjBAwB,CAAyBJ,GAEzBD,EAAkBnB,EACpB,EEZF,MAAMyB,EACJC,YAAYC,GACVC,KAAKpF,MAAQ,GAETmF,GACFC,KAAKC,WAAWF,EAEpB,CAEAE,WAAWF,GAET,OADAC,KAAK7F,KAAK4F,GAASG,SAASC,eACrBH,IACT,CAEA7F,KAAKJ,EAAMK,GACT,MAAMQ,EAAQoF,KAAKpF,MAEnB,OAAIzB,EAASY,GAEPK,GAASN,EAAOc,EAAOb,IAEzBa,EAAMb,GAAQK,EACP4F,MAIFpF,EAAMb,GACJ/B,EAAS+B,IAElBgE,EAAOnD,EAAOb,GAEPiG,MACuB,IAArBjH,UAAUC,OAEZ4B,EAGFoF,IACT,CAEAE,SACE,OAAOF,IACT,CAEAI,UACE,OAAOJ,IACT,CAEAK,UAEE,OADAL,KAAKM,kBACEN,IACT,CAEAO,OAAOR,GACL,IAAInF,EAAQoF,KAAK7F,OAQjB,OANI4F,IACFnF,EAAQoF,KAAK7F,KAAK4F,IAGpBC,KAAKK,UAAUJ,WAAWrF,GAEnBoF,IACT,CAEAQ,MAAMC,EAAO7B,GAEX,OADA8B,EAAQD,EAAO7B,GACRoB,IACT,CAEAW,IAAIF,EAAOxB,GAET,OCnEO,SAACb,EAAOlB,GAA4B,IAAnBgC,EAAOnG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KACpC,MAAMyG,EAAQJ,IACd,IAAIK,EAA2B,iBAAVrB,EAAqBA,EAAM1G,WAAa0G,EAExDrG,EAAWmF,KAKXgB,EAAauB,KAChBvB,EAAauB,GAAW,IAG1BvB,EAAauB,GAASmB,KAAK,CACzBxC,MAAOqB,EACPR,SAAU/B,EACVgC,UACAM,UAIJ,CD6CIqB,CAAUJ,EAAOxB,EAAUe,MACpBA,IACT,CAEAc,KAAKL,EAAOxB,GAEV,OADA8B,EAAYN,EAAOxB,GACZe,IACT,CAEAG,eACE,OAAOH,IACT,CAEAM,kBACE,OAAON,IACT,EErFF,MCAMgB,EAAiBrJ,IACrB,MAAMsJ,EAAiBrJ,OAAOqJ,eAC9B,IAAIC,EAGJ,IDLoBvJ,IACbK,EAASL,IAAgB,OAARA,ECInBwJ,CAAaxJ,GAChB,OAAO,EAQT,GALAuJ,EAAQvJ,EAAIE,WAKPqJ,EACH,OAAO,EAKT,IAFAA,EAAQvJ,EAEyB,OAA1BsJ,EAAeC,IACpBA,EAAQD,EAAeC,GAGzB,OAAOD,EAAetJ,KAASuJ,CAAK,EC3BhCE,EAAgBhI,GACbA,EAAIkD,QAAQ,+BAAgC,ICD/C+E,EAAcjI,IAClB,MAAMkI,EAAS,CACb,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,UAGP,OAAOlI,EAAIkD,QAAQ,YAAaiF,GACvBD,EAAOC,IAAQA,GACtB,ECAE1G,EAAgB,SAAC2G,GAAuB,IAAjBzB,EAAOhH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAA,EACrC,MAAM0I,EAAO,eACPC,EAAO3B,EAAQ2B,MAAQ,EACvBC,EAAQ5B,EAAQ4B,OAAS,GACzBC,EAAU7B,EAAQ6B,SAAW,GAC7BC,EAAQ3J,EAAQwJ,GAAQA,EAAK,GAAKA,EAClCI,EAAS5J,EAAQwJ,GAAQA,EAAK,GAAKA,EACnCK,EAAeL,EAAQ,SAAQG,cAAkBC,OAAc,GAC/DE,EAAWL,EAAQI,EAAgB,SAAQJ,IAAUI,EACrDnH,EAAQmF,EAAQnF,OAAS,GACzBqH,EAAQjH,SAASH,cAAc,KACrC,IAEIqH,EAFAC,EAAQ,GACRC,EAAM,GAGV,OAAKjJ,EAASqI,IC9BDpI,KACb,MAKMuC,EAAU,IAAIC,OADP,uIACmB,KAEhC,OAAOzC,EAASC,IAAQuC,EAAQ0G,KAAKjJ,EAAI,ED0BrCkJ,CAAMd,GACRY,EAAMZ,GAENW,EACEP,GAAuB,SAAZA,EACN,gBAAeA,UAAgBJ,KAC/B,qBAAoBA,KAC3BY,EAAO,aAAYD,kBAGrBF,EAAMxH,UAAY2H,EAEdxH,EAAMJ,UACRI,EAAMJ,UAAa,GAAEiH,KAAQ7G,EAAMJ,YAEnCI,EAAMJ,UAAYiH,EAGpB9G,EAAcsH,EAAOrH,GAErBsH,EAAOD,EAAMxE,cAAc,OAC3B9C,EAAcuH,EAAM,CAClB,eAAe,EACfK,MAAO,6BACPC,MAAO,oBACPX,MAAO,IACPC,OAAQ,IACRxH,MAAO0H,IAGFC,GAjCE,IAkCX,EEpDMQ,EAAO,SAACjB,GACZ,OAAO3G,EAAc2G,EADIzI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAA,EAE9B,ECfM2J,EAAU,CCDd,gbACA,2bACA,+MACA,0UACA,yqBACA,4UACA,kqBACA,q4DACA,0wBACA,uvBACA,iYACA,+SACA,oTACA,4QACA,kNACA,8wBACA,uwBACA,2gBACA,uuBCRIC,EAAa,SAACnB,GAA2B,IAArBI,EAAO7I,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,OAClC,OAAII,EAASqI,GCJG,SAACA,GAA2B,IAArBI,EAAO7I,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,OACjC,MAAM6J,EAAc,aACdC,EAAa,UAGnB,OAFgBH,EAEDI,MAAMC,IACnB,MACMC,EADQJ,EAAY5G,KAAK+G,GACR,GAMvB,OALaF,EAAW7G,KAAKgH,GACR,KAIFpB,GAAWoB,KAFhB,SAAZpB,EAAsB,GAAEA,KAAWJ,IAAU,GAAEI,UAAgBJ,IAEd,GAEvD,CDVWyB,CAAUzB,EAAMI,GAGlB,IAAIc,EACb,EERMQ,EAAQ,WAAiB,IAAhBH,EAAMhK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACtB,MAAMoK,EAAQnI,SAASoI,KACvB,IAAIC,EAASrI,SAASyC,cAAc,kBAChC6F,EAAU,GCHHA,KACX,IAAKA,EACH,OAAO,EAGLpL,EAAQoL,IAAYA,EAAQtK,OAAS,EACvCsK,EAAQ5K,SAASqK,KAEkB,IAA7BL,EAAQ/F,QAAQoG,IAAkB5J,EAAS4J,IAC7CL,EAAQ9B,KAAKmC,EACf,IAIE5J,EAASmK,IACXZ,EAAQ9B,KAAK0C,EAEjB,EDZAnH,CAAI4G,GACJO,EAAUX,IAENU,EACFA,EAAO5I,UAAY6I,EAAQC,KAAK,KAEhCF,EAASrI,SAASH,cAAc,OAChCwI,EAAO5I,UAEJ,uHAAE6I,EAAQC,KAAK,YAElBJ,EAAMK,aAAaH,EAAOI,WAAYN,EAAMM,YAEhD,EEdMC,EAAU,SAAChK,GAAsB,IAAlBiK,EAAQ5K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAC9B,MAAM6K,EAAMD,EAASrH,QAAQ,MAAO,IAEpC,SAAKqH,GAAaC,GAAQlK,KAKtBA,EAAGgK,QACEhK,EAAGgK,QAAQE,KACTlK,EAAGmK,mBACLnK,EAAGmK,kBAAkBD,GAIhC,ECrBME,EAAmBpK,GAChBA,EAAGqK,MAAQrK,IAAOsB,UAAYtB,EAAGqK,KAAKvK,SACzCE,EAAGqK,KACHrK,EAAGsK,WCSHC,EAAK,SAACvK,EAAIiK,EAAUlH,EAAM5D,EAAI+F,EAAMM,GAA0B,IAAjBgF,EAAInL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAErD,MAAM2D,EAAUH,EAAeI,QAAQF,IAAS,EAE1CO,EAAW,SAAUmH,GACzB,MAAMC,ECfQ,SAAUD,GAC1B,MAAMC,EAASD,EAAIC,OAEnB,OCJgC1K,EDIT0K,ICHG,IAAhB1K,EAAGF,SACJE,EAAGsK,WAGLtK,EALe,IAAUA,CDKlC,CDWmB2K,CAAUF,GAEnBG,EGbMC,EAAC7K,EAAIiK,EAAUa,EAAKC,KAClC,MAAMvF,EAAUsF,GAAOxJ,SAEvB,IAAKtB,EACH,OAAO,KAGT,EAAG,CAED,GACe,MAAZiK,IACEA,EAASe,WAAW,KACjBhL,EAAGsK,aAAe9E,GAAWwE,EAAQhK,EAAIiK,GACzCD,EAAQhK,EAAIiK,KACjBc,GAAc/K,IAAOwF,EAEtB,OAAOxF,EAIT,GAAIA,IAAOwF,EACT,KAIJ,OAAUxF,EAAKoK,EAAgBpK,GAAG,EHZT6K,CAAQH,EAAQT,EAAUjK,GACjD,IAAIiL,EAAkBzF,GAAWxF,EAEjCyK,EAAIG,eAAiBA,GAIL,IAAZpF,IACFyF,EAAkB/F,GAIhB0F,KAGW,IAATJ,GACFpG,EAAIpE,EAAI+C,EAAMO,GAGhBnE,EAAGoB,KAAK0K,EAAiBR,EAAKvF,KAIlC,IAAKlF,EACH,OAAO,EAGJA,EAAGoD,aACNpD,EAAGoD,WAAa,IAIlBpD,EAAGoD,WAAW8D,KAAK,CACjBlH,KACAiK,WACAlH,OACA5D,GAAImE,EACJ4B,OACAM,UACAxC,YAIF7D,EAAG+D,kBAAoBI,EAEvBtD,EAAGkL,iBAAiBnI,EAAMO,EAAUN,EACtC,EI/CMmI,EAAY,GAClB,IAAIC,EAEJ5B,IAEA,MAAM6B,UAAgBlF,EACpBC,YAAYC,GACViF,QAEAhF,KAAKiF,WAEDlF,GACFC,KAAKC,WAAWF,EAEpB,CAEAkF,WAWE,OAVAjF,KAAKpF,MAAQxC,EAAU2M,EAAQG,UAE/BlF,KAAK9E,IAAM,KACX8E,KAAKmF,GAAK,GACVnF,KAAKoF,QAAS,EACdpF,KAAKqF,SAAU,EACfrF,KAAKsF,QAAU,GACftF,KAAKuF,MAAQ,KACbvF,KAAKwF,WAAY,EAEVxF,IACT,CAEAC,WAAWF,GAaT,OAZAC,KAAK7F,KAAK4F,GACVC,KAAKmF,GAAKnF,KAAK7F,KAAK,MACpB6F,KAAKsF,OAAStF,KAAK7F,KAAK,YAAc,GAEtC6F,KAAKQ,MAAM,UAAW,IAAKR,KAAK7F,SAEhC6F,KAAKE,SAASC,eAEVH,KAAK7F,KAAK,YACZ6F,KAAKyF,OAGAzF,IACT,CAEA0F,WACE,OAAO1F,KAAKoF,MACd,CAEAO,cACE,OAAO3F,KAAKwF,SACd,CAEAI,gBACE,MAAMnJ,EAAOuD,KAAK7F,KAAK,QACjB0L,EAAS7F,KAAK7F,KAAK,UACnB2L,EAAQ9F,KAAK7F,KAAK,SAClB4L,EAAW/F,KAAK7F,KAAK,YACrBkL,EAAUrF,KAAK7F,KAAK,WACpB6L,EAAchG,KAAK7F,KAAK,eACxBK,EAAY,CAChB,kBACC,mBAAkBiC,IAClB,mBAAkBoJ,KAmBrB,OAhBIC,GACFtL,EAAUoG,KAAK,yBAGZmF,GACHvL,EAAUoG,KAAK,8BAGbyE,GACF7K,EAAUoG,KAAK,2BAGboF,GACFxL,EAAUoG,KAAKoF,GAGVxL,CACT,CAEA0F,SACE,MAAMzD,EAAOuD,KAAK7F,KAAK,QACjB6E,EAAUgB,KAAK7F,KAAK,WACpB0L,EAAS7F,KAAK7F,KAAK,UACnB2L,EAAQ9F,KAAK7F,KAAK,SAClB4L,EAAW/F,KAAK7F,KAAK,YACrB8L,EAA2BjG,KAAK7F,KAAK,4BACrCK,EAAYwF,KAAK4F,gBAEjB9K,EAAW,GACjB,IACIoL,EACAC,EACAC,EACAC,EACAnL,EALAoL,EAAW,GAyDf,OAlDIR,GAAoB,YAAXD,IACXS,EAAW,IAGE,UAAXT,IACFK,EAAQzD,EAdkB,UAAXoD,EAAsB,UAASpJ,IAASA,EAchC,CACrBmF,QAAS,UACTF,KAAM4E,IAERrK,EAASiK,EAAO,yBAChBpL,EAAS8F,KAAKsF,IAGXD,GAGHG,EAAQpL,SAASC,yBACjBmL,EAAM3L,UAAYuE,GAHlBoH,EAAQpL,SAASO,eAAe8F,EAAWD,EAAapC,KAK1DmH,EAAWtL,EACT,IACA,CACEL,UAAW,4BAEb,CAAC4L,IAEHtL,EAAS8F,KAAKuF,GAEVJ,IACFM,EAAS5D,EAAK,QAAS,CACrBb,QAAS,UACTF,KAAM,KAERzF,EAASoK,EAAQ,0BACjBvL,EAAS8F,KAAKyF,IAGhBnL,EAAML,EACJ,MACA,CACEL,UAAWA,EAAU+I,KAAK,MAE5BzI,GAEFI,EAAIZ,MAAMC,QAAW,aACrByF,KAAK9E,IAAMA,EACXF,SAASoI,KAAK5H,YAAYwE,KAAK9E,KAE/B8E,KAAKQ,MAAM,WAEJR,IACT,CAEAuG,eACE,MAAMC,EAAS,0BACTtL,EAAM8E,KAAK9E,IACjB,IACIuB,EACAoJ,EACAC,EACAW,EACAxE,EACAC,EACAwE,EAPAJ,EAAW,GASf,OAAItG,KAAK2F,cACA3F,MAGTiC,EAAQ/G,EAAIuC,cAAc,iBAErBwE,GAILxF,EAAOuD,KAAK7F,KAAK,QACjB0L,EAAS7F,KAAK7F,KAAK,UACnB2L,EAAQ9F,KAAK7F,KAAK,SAEH,UAAX0L,EACF5J,EAASgG,EAAOuE,IAEhBpK,EAAY6F,EAAOuE,GAEfV,GAAoB,YAAXD,IACXS,EAAW,KAIfpE,EAAOD,EAAMxE,cAAc,sBAC3B9C,EAAcuH,EAAM,CAClB5H,MAAQ,SAAQgM,cAAqBA,SAGvCI,EAAOxE,EAAKzE,cAAc,OAC1BgJ,EAAsB,UAAXZ,EAAsB,UAASpJ,IAASA,EACnDvC,EAAawM,EAAM,aAAe,iBAAgBD,KAE3CzG,MA1BEA,KA2BX,CAEA2G,kBACE,MAAMzL,EAAM8E,KAAK9E,IACjB,IAAIiL,EACAF,EACAjH,EACA4H,EAEJ,OAAI5G,KAAK2F,gBAITQ,EAAWjL,EAAIuC,cAAc,6BAC7BwI,EAA2BjG,KAAK7F,KAAK,4BACrC6E,EAAUgB,KAAK7F,KAAK,WAKlByM,EAHGX,EAGIjH,EAFAqC,EAAWD,EAAapC,IAKjCmH,EAAS1L,UAAYmM,GAbZ5G,IAgBX,CAEA6G,gBACE,MAAML,EAAS,0BACTtL,EAAM8E,KAAK9E,IACjB,IAAImL,EACAN,EAEJ,OAAI/F,KAAK2F,gBAITU,EAASnL,EAAIuC,cAAc,2BAC3BsI,EAAW/F,KAAK7F,KAAK,YAEjBkM,IACEN,EACF9J,EAASoK,EAAQG,GAEjBpK,EAAYiK,EAAQG,KAVfxG,IAeX,CAEA8G,aACE,MAAM5L,EAAM8E,KAAK9E,IACjB,IAAIV,EAEJ,OAAIwF,KAAK2F,gBAITnL,EAAYwF,KAAK4F,gBACjB1L,EAAagB,EAAK,YAAaV,EAAU+I,KAAK,OAJrCvD,IAOX,CAEAI,QAAQL,GACN,OAAKiB,EAAcjB,IAInBC,KAAK7F,KAAK4F,GACPwG,eACAI,kBACAE,gBACAC,aAEI9G,MATEA,IAUX,CAEA+G,aACE,OAAI/G,KAAK2F,eAIL3F,KAAKuF,QACPyB,aAAahH,KAAKuF,OAClBvF,KAAKuF,MAAQ,MALNvF,IASX,CAEAiH,WAAWC,GACT,OAAIlH,KAAK2F,gBAIT3F,KAAKuF,MAAQ3M,GAAM,KACjBoH,KAAKQ,MAAM,UACXR,KAAKmH,OAAO,GACA,IAAXD,IANMlH,IASX,CAEAyF,KAAK1F,GACH,MAAM7E,EAAM8E,KAAK9E,IACjB,IAAIoK,EACA4B,EACAE,EACApF,EAEJ,OAAIhC,KAAK2F,gBAIL3F,KAAK0F,YACP1F,KAAKI,QAAQL,GAGfuF,EAAStF,KAAK7F,KAAK,UACnB+M,EAAWlH,KAAK7F,KAAK,YACrBiN,EAAM9B,GAAUA,GAAUtF,KAAKsF,OAASA,EAAStF,KAAKsF,OACtDtD,EAAY,OAAMoF,OAElBpH,KAAK+G,aAEL/G,KAAKQ,MAAM,cAEX5H,GAAM,KACJoH,KAAKqF,SAAU,EAEfpJ,EAASf,EAAK,2BACdA,EAAIZ,MAAMC,QAAUyH,EAEhBkF,EAAW,GACblH,KAAKiH,WAAWC,EAClB,GACC,MAzBMlH,IA4BX,CAEAmH,QACE,MAAMjM,EAAM8E,KAAK9E,IAEjB,IAAImM,EACAC,EAEJ,OAAItH,KAAK2F,gBAIT0B,EAAqBrH,KAAK7F,KAAK,sBAC/BmN,EAActH,KAAK7F,KAAK,eAEpBpC,EAAWuP,IACbA,EAAYrN,KAAK+F,MAGnB9E,EAAIZ,MAAMC,QAfQ,aAgBlB6B,EAAYlB,EAAK,2BAEjB8E,KAAKqF,SAAU,EACfrF,KAAKoF,QAAS,EAEdxM,GAAM,KACJoH,KAAKQ,MAAM,UAEP6G,GACFrH,KAAKK,SACP,GACC,MAtBML,IAyBX,CAEAK,UAGE,OAFAL,KAAKQ,MAAM,iBAEPR,KAAK2F,gBAIT3F,KAAKM,kBAELtF,SAASoI,KAAKmE,YAAYvH,KAAK9E,KAE/B8L,aAAahH,KAAKuF,OAClBvF,KAAKiF,WAELjF,KAAKQ,MAAM,iBAVFR,IAaX,CAEAwH,eAEE,OADAxH,KAAK+G,aACE/G,IACT,CAEAyH,eACE,MAAMP,EAAWlH,KAAK7F,KAAK,YACrBrB,EAAQkH,KAAK7F,KAAK,SAExB,OAAI+M,GAAY,GAIhBlH,KAAKiH,WAAWnO,GAHPkH,IAMX,CAEA0H,UAGE,OAFA1H,KAAK+G,aACL/G,KAAKmH,QACEnH,IACT,CAEAG,eACE,MAAMjF,EAAM8E,KAAK9E,IAoBjB,OAlBA+I,EACE/I,EACA,4BACA,aACA8E,KAAKwH,aACLxH,MACA,GAEFiE,EACE/I,EACA,4BACA,aACA8E,KAAKyH,aACLzH,MACA,GAEFiE,EAAG/I,EAAK,0BAA2B,QAAS8E,KAAK0H,QAAS1H,MAAM,GAEzDA,IACT,CAEAM,kBACE,MAAMpF,EAAM8E,KAAK9E,IAMjB,OAJA4C,EAAI5C,EAAK,aAAc8E,KAAKwH,cAC5B1J,EAAI5C,EAAK,aAAc8E,KAAKyH,cAC5B3J,EAAI5C,EAAK,QAAS8E,KAAK0H,SAEhB1H,IACT,EAGF+E,EAAQG,SAkBC9M,EAjBS,CACd+M,GAAI,GACJ1I,KAAM,OACNoJ,OAAQ,UACRC,OAAO,EACPR,OAAQ,GACR4B,SAAU,EACVpO,MAAO,EACPkG,QAAS,GACTgH,YAAa,GACbD,UAAU,EACVV,SAAS,EACTY,0BAA0B,EAC1BoB,oBAAoB,EACpBC,YAAa,OA1dH,CAAC,OAAQ,UAAW,UAAW,SAgevC5O,SAAS+D,IACbsI,EAAQtI,GAASsD,IACf,MAAM4H,EAAS,CAAA,EACTxC,EAAK/F,EAAM,oBACXkI,EAAcvH,EAAQuH,aAAe,KAC3C,IAAIhC,EAASvF,EAAQuF,QAAU,GAyB/B,OAvBInM,EAAS4G,GACX4H,EAAO3I,QAAUe,EAEbiB,EAAcjB,IAChBhC,EAAO4J,EAAQ5H,GAGnB4H,EAAOxC,GAAKA,EACZwC,EAAOlL,KAAOA,EACdkL,EAAOrC,OAASA,EAChBqC,EAAOtC,SAAU,EACjBsC,EAAOL,YAAc,KACnBvC,EAAQoC,MAAMhC,EAAImC,EAAY,EAGhCxC,EAAW,IAAIC,EAAQ4C,GACvB9C,EAAUnM,SAASkP,IACjBtC,GAAUsC,EAAK1M,IAAI2M,aAAe,EAAE,IAEtC/C,EAASQ,OAASA,EAClBR,EAASW,OACTZ,EAAUjE,KAAKkE,GAERA,CAAQ,CAChB,IAIHC,EAAQoC,MAAQ,CAAChC,EAAImC,KACnB,MAAMQ,EAAMjD,EAAU7L,OACtB,IACIiE,EACA4K,EAFA9K,GAAS,EAmBb,GAfA8H,EAAUnM,SAAQ,CAACoM,EAAU7H,KAEvBkI,IAAOL,EAASK,KAClB0C,EAAe/C,EAAS5J,IAAI2M,aAC5B9K,EAAQE,EAGJlF,EAAWuP,IACbA,EAAYrN,KAAK6K,GAGnBD,EAAU1H,OAAOF,EAAG,GACtB,IAGE6K,GAAO,IAAgB,IAAX/K,GAAgBA,EAAQ8H,EAAU7L,OAAS,EACzD,OAAO,EAMT,IAHAiE,EAAIF,EAGGE,EAAI6K,EAAM,EAAG7K,GAAK,EAAG,CAC1B,MAAM8K,EAAMlD,EAAU5H,GAAG/B,IAEzB6M,EAAIzN,MAAW,IAAI0N,SAASD,EAAIzN,MAAW,IAAG,IAAMuN,EAAe,GAAK,IAC1E,GAIF9C,EAAQkD,MAAQ,KACd,IAAIhL,EAAI4H,EAAU7L,OAAS,EAC3B,KAAOiE,GAAK,EAAGA,GAAK,EAClB4H,EAAU5H,GAAGkK,OACf,ECjkBF,MAAMe,EACJpI,YAAY0B,EAAM2G,GAChBnI,KAAKwB,KAAOA,EAERzJ,EAAWoQ,KACbnI,KAAKmI,OAASA,EAElB,CAEArJ,UAGE,OAFAkB,KAAKmI,SAEEnI,IACT,ECbF,MAAMoI,EACJtI,cACEE,KAAKqI,SAAW,EAClB,CAEAC,IAAI9G,GACF,OAAOxB,KAAKqI,SAASvF,MAAMyF,GAAQA,EAAI/G,OAASA,GAClD,CAEArF,IAAIqM,GAGF,OAFAxI,KAAKqI,SAASzH,KAAK4H,GAEZxI,IACT,CAEAyI,IAAIjH,GACF,MAAM6G,EAAWrI,KAAKqI,SAChBG,EAAUH,EAASvF,MAAMyF,GAAQA,EAAI/G,OAASA,IAC9CzE,EAAQyL,EAAUH,EAAS1L,QAAQ6L,IAAY,EAMrD,OAJIzL,GAAS,GACXsL,EAASlL,OAAOJ,EAAO,GAGlBiD,IACT,CAEAiI,QAGE,OAFAjI,KAAKqI,SAAW,GAETrI,IACT,CAEAlB,QAAQ0C,GACN,MAAMgH,EAAUxI,KAAKqI,SAASvF,MAAMyF,GAAQA,EAAI/G,OAASA,IAMzD,OAJIzJ,EAAWyQ,eAAAA,EAAS1J,UACtB0J,EAAQ1J,UAGHkB,IACT,ECvCF,MAAM0I,EAAgB,SAACC,GAA2B,IAAnBC,IAAO7P,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACpC,MAAMkJ,EAAQQ,EAAKkG,EAAOlG,KAAM,CAC9Bb,QAAS+G,EAAO/G,SAAW,UAC3BD,MAAOgH,EAAOhH,OAAS,GACvBD,KAAMiH,EAAOjH,OAETmH,EAAUhO,EACd,IACA,CACEL,UAAY,0BACZsO,KAAMH,EAAOI,MAEf9G,GAEI+G,EAAUnO,EACd,MACA,CACEL,UAAY,2BAA0BmO,EAAOnH,OAC7C,WAAYmH,EAAOnH,MAErB,CAACmH,EAAOI,KAAOF,EAAU5G,IAa3B,OAVAhG,EAASgG,EAAO,yBAEZ2G,GACF3M,EAAS+M,EAAS,2BAGhBL,EAAOM,UACThN,EAAS+M,EAAS,4BAGbA,CACT,ECjBME,EAAW,2BACX1C,EAAS,yBAEf,MAAM2C,UAAgBtJ,EACpBC,YAAYC,GACViF,QAEAhF,KAAKiF,WAEDlF,GACFC,KAAKC,WAAWF,EAEpB,CAEAkF,WAUE,OATAjF,KAAKpF,MAAQxC,EAAU+Q,EAAQjE,UAE/BlF,KAAKiJ,UAAW,EAChBjJ,KAAKoF,QAAS,EAEdpF,KAAK9E,IAAM,KACX8E,KAAKoJ,QAAU,GACfpJ,KAAKqI,SAAW,KAETrI,IACT,CAEAC,WAAWF,GACT,IAAIsJ,EAgBJ,OAdArJ,KAAK7F,KAAK4F,GAEVC,KAAKiJ,SAAWjJ,KAAK7F,KAAK,YAC1B6F,KAAKoF,OAASpF,KAAK7F,KAAK,UACxB6F,KAAKqI,SAAW,IAAID,EAEpBiB,EAAUrJ,KAAK7F,KAAK,WAEhBpC,EAAWsR,IACbA,EAAQpP,KAAK+F,MAGfA,KAAKE,SAASC,eAEPH,IACT,CAEAsJ,WAAW9H,GACT,IAAImH,EAEJ,OAAInH,GACFmH,EAAS3I,KAAKsI,IAAI9G,GAEXmH,EAAOM,UAGTjJ,KAAKiJ,QACd,CAEAM,QAAQ/H,GAEN,QADexB,KAAKsI,IAAI9G,EAE1B,CAEAkE,WACE,OAAO1F,KAAKoF,MACd,CAEAoE,YAAYb,GACV,MAAMc,EAAQzJ,MACRmI,OAAEA,EAAM3G,KAAEA,GAASmH,EACzB,IAEIzJ,EACAlC,EAHAwL,EAAU,KACVtL,EAAU,KAId,OAAKiL,GAILjL,EAAUiL,EAAOjL,QACjBgC,EAAUiJ,EAAOjJ,SAAWc,KAExBjI,EAAWmF,GACbF,EAAWE,EACF/D,EAAS+D,KAClBF,EAAW,WACTyM,EAAMjJ,MAAMtD,EAASsE,KAIrBzJ,EAAWiF,KACbwL,EAAU,IAAIN,EAAQ1G,EAAMxE,EAAS0M,KAAKxK,KAGrCsJ,GAlBEA,CAmBX,CAEAF,IAAI9G,GACF,OAAOxB,KAAKoJ,QAAQtG,MAAM6F,GAAWA,EAAOnH,OAASA,GACvD,CAEAtB,SACE,MAAMyJ,EAAU3J,KAAK7F,KAAK,WACpBiP,EAAUpJ,KAAK7F,KAAK,YAAc,GAClCyP,EAAY5J,KAAK7F,KAAK,aAuB5B,OArBA+I,IAEAlD,KAAK9E,IAAML,EAAc,MAAO,CAC9BsK,GAAI/F,EAAK,mBACT5E,UAAY,mCAAkCoP,MAEhD5J,KAAK6J,OAAOT,GACZpO,SAASoI,KAAK5H,YAAYwE,KAAK9E,KAE3B8E,KAAKoF,QACPpF,KAAK8J,OAGH9J,KAAKiJ,UACPjJ,KAAK+J,UAGHhS,EAAW4R,IACbA,EAAQ1P,KAAK+F,MAGRA,IACT,CAEAgK,QAEE,OADAhK,KAAK9E,IAAIT,UAAY,GACduF,IACT,CAEA6J,OAAOT,GACL,MAAMR,EAAU5I,KAAK7F,KAAK,WACpBY,EAAYC,SAASC,yBAyB3B,OAvBAmO,EAAQ1Q,SAASiQ,IACf,MAAMK,EAAUN,EAAcC,EAAQC,GAChCJ,EAAUxI,KAAKwJ,YAAYb,IAC3BnH,KAAEA,EAAIyH,SAAEA,EAAQ/J,QAAEA,GAAYyJ,EAEpC5N,EAAUS,YAAYwN,GAEjBhJ,KAAKuJ,QAAQ/H,KAChBxB,KAAKoJ,QAAQxI,KAAK,CAChB1F,IAAK8N,EACLxH,OACAyH,SAAUA,IAAY,EACtB/J,QAASA,GAAWc,OAGlBwI,GACFxI,KAAKqI,SAASlM,IAAIqM,GAEtB,IAGFxI,KAAK9E,IAAIM,YAAYT,GAEdiF,IACT,CAEAiK,UAEE,OADAjP,SAASoI,KAAKmE,YAAYvH,KAAK9E,KACxB8E,IACT,CAEAI,QAAQgJ,GAGN,OAFApJ,KAAK7F,KAAK,CAAEiP,YACZpJ,KAAKgK,QAAQH,OAAOT,GACbpJ,IACT,CAEA7D,IAAIwM,GACF,MAAMzN,EAAM8E,KAAK9E,IACXH,EAAYC,SAASC,yBACrBmO,EAAUpJ,KAAK7F,KAAK,YAAc,IAClCqH,KAAEA,EAAIyH,SAAEA,EAAQ/J,QAAEA,GAAYyJ,EAC9BH,EAAUxI,KAAKwJ,YAAYb,GAC3BuB,EAAQvB,IACZ,MAAMK,EAAUN,EAAcC,GAE9B5N,EAAUS,YAAYwN,GAEtBI,EAAQxI,KAAK+H,GACb3I,KAAKoJ,QAAQxI,KAAK,CAChB1F,IAAK8N,EACLxH,OACAyH,SAAUA,IAAY,EACtB/J,QAASA,GAAWc,KACpBwI,YAGEA,GACFxI,KAAKqI,SAASlM,IAAIqM,EACpB,EAcF,OAXIxQ,EAAS2Q,GACXuB,EAAKvB,GACIzQ,EAAQyQ,IACjBA,EAAOjQ,SAASkP,IACV5P,EAAS4P,IACXsC,EAAKtC,EACP,IAGJ1M,EAAIM,YAAYT,GAETiF,IACT,CAEA3D,OAAOmF,GACL,MAAMtG,EAAM8E,KAAK9E,IACXkO,EAAUpJ,KAAKoJ,QACfT,EAAS3I,KAAKsI,IAAI9G,GACxB,IAAIzE,GAAS,EAEb,OAAK4L,GAIL5L,EAAQqM,EAAQzM,QAAQgM,GAEpB5L,GAAS,IACXqM,EAAQjM,OAAOJ,EAAO,GACtBiD,KAAKpF,MAAM,WAAWuC,OAAOJ,EAAO,IAGtCiD,KAAKmK,SAAS3I,GACdtG,EAAIqM,YAAYoB,EAAOzN,KAEhB8E,MAbEA,IAcX,CAEAmK,SAAS3I,GACP,MAAMmH,EAAS3I,KAAKsI,IAAI9G,GAClBgH,EAAUxI,KAAKqI,SAASC,IAAI9G,GAElC,OAAKmH,GAAUA,EAAOM,WAItBN,EAAOM,UAAW,EAEdT,GACFxI,KAAKqI,SAASI,IAAID,GAGpBvM,EAAS0M,EAAOzN,IAAKgO,IATZlJ,IAYX,CAEAoK,QAAQ5I,GACN,MAAMmH,EAAS3I,KAAKsI,IAAI9G,GAClBgH,EAAUxI,KAAKqI,SAASC,IAAI9G,GAElC,OAAKmH,GAAWA,EAAOM,UAIvBN,EAAOM,UAAW,EAEdT,GACFxI,KAAKqI,SAASlM,IAAIqM,GAGpBpM,EAAYuM,EAAOzN,IAAKgO,GAEjBlJ,MAXEA,IAYX,CAEA+J,QAAQvI,GACN,MAAMyH,EAAWjJ,KAAK7F,KAAK,iBAc3B,OAZIqH,EACFxB,KAAKmK,SAAS3I,IAEdvF,EAAS+D,KAAK9E,IAAKgO,GACnBlJ,KAAKM,kBACLN,KAAKiJ,UAAW,EAEZlR,EAAWkR,IACbA,EAAShP,KAAK+F,OAIXA,IACT,CAEAqK,OAAO7I,GACL,MAAM8I,EAAUtK,KAAK7F,KAAK,gBAc1B,OAZIqH,EACFxB,KAAKoK,QAAQ5I,IAEbxB,KAAKiJ,UAAW,EAChB7M,EAAY4D,KAAK9E,IAAKgO,GACtBlJ,KAAKG,eAEDpI,EAAWuS,IACbA,EAAQrQ,KAAK+F,OAIVA,IACT,CAEAuK,KAAK/I,GACH,MAAMgJ,EAASxK,KAAK7F,KAAK,eACnBwO,EAAS3I,KAAKsI,IAAI9G,GAClBtG,EAAM8E,KAAK9E,IAEjB,GAAIsG,EAAM,CACR,IAAKmH,EACH,OAAO3I,KAGT5D,EAAYuM,EAAOzN,IAAKsL,EAC1B,MACEpK,EAAYlB,EAAKsL,GACjBxG,KAAKoF,QAAS,EAEVrN,EAAWyS,IACb5R,GAAM,KACJ4R,EAAOvQ,KAAK+F,KAAK,GAChB,KAIP,OAAOA,IACT,CAEA8J,KAAKtI,GACH,MAAM4D,EAASpF,KAAK7F,KAAK,eACnBwO,EAAS3I,KAAKsI,IAAI9G,GAClBtG,EAAM8E,KAAK9E,IAEjB,GAAIsG,EAAM,CACR,IAAKmH,EACH,OAAO3I,KAGT/D,EAAS0M,EAAOzN,IAAKsL,EACvB,MACEvK,EAASf,EAAKsL,GACdxG,KAAKoF,QAAS,EAEVrN,EAAWqN,IACbxM,GAAM,KACJwM,EAAOnL,KAAK+F,KAAK,GAChB,KAIP,OAAOA,IACT,CAEAyK,SAOE,OANIzK,KAAK0F,WACP1F,KAAKuK,OAELvK,KAAK8J,OAGA9J,IACT,CAEA0K,UAAUlJ,GACR,MAAMmH,EAAS3I,KAAKsI,IAAI9G,GAClBmJ,EAAS,yBACf,IAAI3B,EAEJ,OAAKL,GAILK,EAAUL,EAAOzN,IAEbQ,EAASsN,EAAS2B,GACpBvO,EAAY4M,EAAS2B,GAErB1O,EAAS+M,EAAS2B,GAGb3K,MAXEA,IAYX,CAEAK,UACE,MAAMuK,EAAgB5K,KAAK7F,KAAK,iBAC1B0Q,EAAe7K,KAAK7F,KAAK,gBAa/B,OAXIpC,EAAW6S,IACbA,EAAc3Q,KAAK+F,MAGrBA,KAAKqI,SAASJ,QACdjI,KAAKM,kBAAkB2J,UAAUhF,WAE7BlN,EAAW8S,IACbA,EAAa5Q,KAAK+F,MAGbA,IACT,CAEAlB,QAAQ0C,GACN,OAAIxB,KAAKsJ,WAAW9H,IAIpBxB,KAAKqI,SAASvJ,QAAQ0C,GAHbxB,IAMX,CAEA8K,UAAU3G,GACR,MAAM6E,EAAU7E,EAAIG,eACpB,IAAIiE,EAAM,GAUV,OARIS,IACFT,EAAMS,EAAQ+B,aAAa,YAEvBxC,GACFvI,KAAKlB,QAAQyJ,IAIVvI,IACT,CAEAG,eACE,MAAMiJ,EAAUpJ,KAAK7F,KAAK,YAAc,GAClCe,EAAM8E,KAAK9E,IAEjB,OAAKkO,GAAWA,EAAQpQ,OAAS,GAIjCiL,EAAG/I,EAAM,2BAA2B,QAAS8E,KAAK8K,UAAW9K,MAAM,GAH1DA,IAMX,CAEAM,kBACE,MAAM8I,EAAUpJ,KAAK7F,KAAK,YAAc,GAClCe,EAAM8E,KAAK9E,IAEjB,OAAKkO,GAAWA,EAAQpQ,OAAS,GAIjC8E,EAAI5C,EAAK,2BAA4B8E,KAAK8K,WAHjC9K,IAMX,EAGFmJ,EAAQjE,SAiBC9M,EAhBS,CACdwR,UAAW,MACXxE,QAAQ,EACR6D,UAAU,EACVL,SAAS,EACTQ,QAAS,GACTC,QAAS,KACTM,QAAS,KACTqB,YAAa,KACbC,YAAa,KACbC,cAAe,KACfC,aAAc,KACdP,cAAe,KACfC,aAAc,OChflB,MAAMO,EAAyBA,CAACC,EAAgBC,KAC9C,IAAI/R,EACAgS,EAAWF,EAEf,KAAOE,GACLhS,EAAUgS,EAAShS,QAAQc,cAEX,WAAZd,GAAoC,UAAZA,GAC1B0C,EAASsP,EAAU,0BAInBA,EADED,EACSC,EAASC,uBAETD,EAASE,kBAExB,ECAIC,EAAoB,wBAE1B,MAAMC,UAAe9L,EACnBC,YAAYC,GACViF,QAEAhF,KAAKiF,WAEDlF,GACFC,KAAKC,WAAWF,EAEpB,CAEAkF,WAYE,OAXAjF,KAAKpF,MAAQxC,EAAUuT,EAAOzG,UAC9BlF,KAAK4L,SAAU,EAEf5L,KAAK6L,QAAU,KACf7L,KAAK8L,OAAS,KACd9L,KAAK+L,OAAS,KACd/L,KAAKgM,SAAW,KAChBhM,KAAKiM,UAAY,KAEjBjM,KAAKkM,QAAU,KAERlM,IACT,CAEAC,WAAWF,GACT,IAAIqE,EAAS,KAYb,OAVApE,KAAK7F,KAAK4F,GAEVqE,EAASpE,KAAK7F,KAAK,UAEfhB,EAASiL,GACXpE,KAAK6L,QAAU7Q,SAASyC,cAAc2G,GAC7B/K,EAAU+K,KACnBpE,KAAK6L,QAAUzH,GAGZpE,KAAK6L,SAIV7L,KAAKE,SAASC,eAEPH,MALEA,IAMX,CAEAE,SAEE,OADAF,KAAKmM,cAActC,OAAO7J,KAAK6L,SACxB7L,IACT,CAEAgK,QAEE,OADAhK,KAAKgM,SAASvR,UAAY,GACnBuF,IACT,CAEA6J,OAAOuC,GACL,MAAMrR,EAAYC,SAASC,yBACrByC,EAAY,IAAI0O,EAASC,WAAU,GAAMvR,UAU/C,OARAlC,GAAM,KACJ8E,EAAUhF,SAAS4C,IACjBP,EAAUS,YAAYF,EAAO,IAG/B0E,KAAKgM,SAASxQ,YAAYT,EAAU,IAG/BiF,IACT,CAEAiK,UACE,MAAM6B,EAAS9L,KAAK8L,OACdI,EAAUlM,KAAKkM,QAUrB,OARIJ,GACF9Q,SAASoI,KAAKmE,YAAYuE,GAGxBI,GACFA,EAAQ7L,UAGHL,IACT,CAEAI,UAEE,OADAJ,KAAKgK,QAAQH,OAAO7J,KAAK6L,SAClB7L,IACT,CAEAmM,cACE,MAAMN,EAAU7L,KAAK6L,QACrB,IACIC,EACAC,EACAC,EACAC,EACAV,EALAe,EAAQtM,KAAK7F,KAAK,SAkFtB,OA3EA4R,EAASF,EAAQpO,cAAc,MAE3BpE,EAAUiT,KACZP,EAASO,GAGPjT,EAAU0S,KACZO,EAAQP,EAAOrR,WAGjBqR,EAASlR,EACP,KACA,CACEL,UAAW,yBAEb8R,GAEFtM,KAAK+L,OAASA,EAEdC,EAAWnR,EAAc,UAAW,CAClCsK,GAAI,0BACJ3K,UAAW,4BAEbwF,KAAKgM,SAAWA,EAEhBC,EAAYpR,EAAc,MAAO,CAC/BL,UAAW,6BAEbwF,KAAKiM,UAAYA,EAEjBjM,KAAKkM,QAAU,IAAI/C,EAAQ,CACzBS,UAAW,MACXR,QAAS,CACP,CACE5H,KAAM,QACNiB,KAAM,QACNf,KAAM,GACNyG,OAAQ,CACNjJ,QAASc,KACT9C,QAAS8C,KAAKuM,QAGlB,CACE/K,KAAM,OACNiB,KAAM,QACNf,KAAM,GACNyG,OAAQ,CACNjJ,QAASc,KACT9C,QAAS8C,KAAKwM,UAMtBV,EAASjR,EACP,UACA,CACEsK,GAAI,iBACJ3K,UAAW,wCAEb,CAACyR,EAAWF,EAAQC,EAAUhM,KAAKkM,QAAQhR,MAE7C8E,KAAK8L,OAASA,EAEd9Q,SAASoI,KAAK5H,YAAYsQ,GAE1BlT,GAAM,KAEJ2S,EAAWO,EAAON,uBAClBJ,EAAuBG,GAAU,GAEjCA,EAAWO,EAAOL,mBAClBL,EAAuBG,EAAS,IAG3BvL,IACT,CAEAyM,QACE,MAAMC,EAAS,iBACTC,EAAW,GAAED,aACblG,EAAU,GAAEkG,WACZZ,EAAS9L,KAAK8L,OACdc,EAAY5R,SAAS6R,iBAAiB,2BACtCC,EAAkB9M,KAAK7F,KAAK,oBAAsBuR,EAExD,OAAI1L,KAAK4L,UAAYE,IAIrBc,EAAUlU,SAAS6S,IACjBtP,EAASsP,EAAU/E,EAAO,IAE5BvK,EAAS6P,EAAQa,GACjBvQ,EAAY0P,EAAQtF,GACpBxG,KAAKkM,QAAQ3B,OACbvK,KAAK4L,SAAU,EAEf7G,EAAQgI,KAAK,CACXjH,OAAO,EACP9G,QAAS8N,IAGX9M,KAAKQ,MAAM,iBAhBFR,IAmBX,CAEAwM,OACE,MAAME,EAAS,iBACTC,EAAW,GAAED,aACblG,EAAU,GAAEkG,WACZZ,EAAS9L,KAAK8L,OACdc,EAAY5R,SAAS6R,iBAAiB,2BAE5C,OAAK7M,KAAK4L,SAAYE,GAItB7P,EAAS6P,EAAQtF,GACjBpK,EAAY0P,EAAQa,GACpBC,EAAUlU,SAAS6S,IACjBnP,EAAYmP,EAAU/E,EAAO,IAE/BxG,KAAKkM,QAAQpC,OACb9J,KAAK4L,SAAU,EAEf5L,KAAKQ,MAAM,eAEJR,MAbEA,IAcX,CAEAyK,SAOE,OANIzK,KAAK4L,QACP5L,KAAKwM,OAELxM,KAAKyM,QAGAzM,IACT,CAEAuM,QACE,OAAKxU,EAAWwU,QAIhBA,QAEOvM,MALEA,IAMX,CAEAK,UAGE,OAFeL,KAAK8L,QAMpB9L,KAAKM,kBAAkB2J,UAAUhF,WAE1BjF,MALEA,IAMX,CAEAgN,UAEE,OADAhN,KAAKuM,QACEvM,IACT,CAEAiN,iBAEE,OADAjN,KAAKyK,SACEzK,IACT,CAEAkN,cAAc/I,GAQZ,OALgB,KAFAA,EAAIgJ,SAEEnN,KAAK4L,UACzB5L,KAAKyK,SChRE,SAAUtG,GACrBA,EAAIiJ,kBACJjJ,EAAIkJ,gBACN,CD8QMC,CAAKnJ,IAGAnE,IACT,CAEAG,eAGE,OAFeH,KAAK8L,QEnSb,SAACpS,EAAI+C,EAAM5D,EAAI+F,EAAMM,GAA0B,IAAjBgF,EAAInL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAE3C,MAAM2D,EAAUH,EAAeI,QAAQF,IAAS,EAC1CO,EAAW,SAAUmH,GACzB,IAAIQ,EAAkBzF,GAAWxF,GAIjB,IAAZwF,IACFyF,EAAkB/F,IAKP,IAATsF,GACFpG,EAAIpE,EAAI+C,EAAMO,GAGhBnE,EAAGoB,KAAK0K,EAAiBR,EAAKvF,IAGhC,IAAK7G,EAAWc,GACd,OAAO,EAGJa,EAAGoD,aACNpD,EAAGoD,WAAa,IAIlBpD,EAAGoD,WAAW8D,KAAK,CACjBlH,KACA+C,OACA5D,GAAImE,EACJ4B,OACAM,UACAxC,YAIF7D,EAAG+D,kBAAoBI,EAEvBtD,EAAGkL,iBAAiBnI,EAAMO,EAAUN,EACtC,CF8PI6Q,CAAGvS,SAAU,QAASgF,KAAKkN,cAAelN,MAAM,GAEhDA,KAAKW,IAAI,uBAAwBX,KAAKgN,SACtChN,KAAKW,IAAI,yBAA0BX,KAAKiN,gBAEjCjN,MAREA,IASX,CAEAM,kBAGE,OAFeN,KAAK8L,QAMpBhO,EAAI9C,SAAU,QAASgF,KAAKkN,eAE5BlN,KAAKc,KAAK,wBACVd,KAAKc,KAAK,0BAEHd,MAREA,IASX,SAGF2L,EAAOzG,SAOE9M,EANS,CACdgM,OAAQ,GACRkI,MAAO,GACPQ,gBAAiBpB"} \ No newline at end of file diff --git a/theme/reader.less b/theme/reader.less index f94d8be..487c887 100644 --- a/theme/reader.less +++ b/theme/reader.less @@ -124,24 +124,15 @@ height: initial !important; } - .outline-reader { - display: block !important; - overflow: hidden; - - h1, - &__title { - margin: 13.4pt 0 28pt !important; - text-align: center !important; - font-size: 20pt !important; + .outline { + &-message, + &-toolbar { + display: none !important; } - &.outline-reader { - &--reading { - position: relative !important; - height: auto !important; - padding: 0 !important; - overflow: hidden !important; - } + &-reader { + display: block !important; + overflow: hidden; h1, &__title { @@ -150,31 +141,47 @@ font-size: 20pt !important; } - &__close, - &__progress { - display: none !important; + &.outline-reader { + &--reading { + position: relative !important; + height: auto !important; + padding: 0 !important; + overflow: hidden !important; + } + + h1, + &__title { + margin: 13.4pt 0 28pt !important; + text-align: center !important; + font-size: 20pt !important; + } + + &__close, + &__progress { + display: none !important; + } } - } - pre { - padding: 1em !important; - border: 1px solid @border_color !important; - border-radius: 4px !important; - } + pre { + padding: 1em !important; + border: 1px solid @border_color !important; + border-radius: 4px !important; + } - pre, - code { - background-color: @white !important; - } + pre, + code { + background-color: @white !important; + } - table, - img, - svg { - break-inside: avoid; - } + table, + img, + svg { + break-inside: avoid; + } - &_sibling { - display: none !important; + &_sibling { + display: none !important; + } } } }