{"format":"cadcraft-addon-package","version":1,"manifest":{"id":"printer-resin-goo","name":"Resin files: Elegoo GOO","version":"0.9.0","apps":["bimcraft"],"api":"1.0","license":"Apache-2.0","entry":"./main.js","permissions":[],"needs":[{"id":"slicer-resin","range":"*"}],"description":"Writes the Elegoo GOO file for resin printers that use it (Mars 4 Ultra, Saturn 3 Ultra and similar). Written from Elegoo's published specification and read back by CadCraft only: not yet loaded on a printer.","author":"CadCraft","lang":"./lang/","default":"off"},"files":{"LICENSE":"CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLwoKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCgogICAxLiBEZWZpbml0aW9ucy4KCiAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCiAgICAgIGFuZCBkaXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlzIGRvY3VtZW50LgoKICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKICAgICAgdGhlIGNvcHlyaWdodCBvd25lciB0aGF0IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAogICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29tbW9uCiAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sCiAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQogICAgICBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvcgogICAgICBvdGhlcndpc2UsIG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUKICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KCiAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KCiAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVhbiB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAogICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCiAgICAgIHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgogICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAogICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBmb3JtLCBpbmNsdWRpbmcgYnV0CiAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgoKICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQogICAgICBjb3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsKICAgICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KCiAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3b3JrLCB3aGV0aGVyIGluIFNvdXJjZSBvciBPYmplY3QKICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBmcm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQogICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCiAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwgd29yayBvZiBhdXRob3JzaGlwLiBGb3IgdGhlIHB1cnBvc2VzCiAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3JrcyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgogICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCiAgICAgIHRoZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YuCgogICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZwogICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgV29yayBhbmQgYW55IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCiAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQogICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCiAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5IGF1dGhvcml6ZWQgdG8gc3VibWl0IG9uIGJlaGFsZiBvZgogICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAogICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bwogICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFpbGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAogICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQogICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQKICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBpcyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCgogICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKICAgICAgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsuCgogICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAogICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQogICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKICAgICAgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCiAgICAgIFdvcmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCgogICAzLiBHcmFudCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAogICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQogICAgICAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwKICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssCiAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCiAgICAgIGJ5IHN1Y2ggQ29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZWlyCiAgICAgIENvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRpb24ocykKICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKICAgICAgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKICAgICAgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yawogICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAogICAgICBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCiAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQogICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCgogICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSByZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQogICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybSwgcHJvdmlkZWQgdGhhdCBZb3UKICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgogICAgICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgV29yayBvcgogICAgICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKCiAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7IGFuZAoKICAgICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBmb3JtIG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCiAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwgY29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCiAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAogICAgICAgICAgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFpbiB0byBhbnkgcGFydCBvZgogICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAoKICAgICAgKGQpIElmIHRoZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzCiAgICAgICAgICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSBtdXN0CiAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdAogICAgICAgICAgcGVydGFpbiB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCiAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAogICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcgogICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYgcHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCiAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCiAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMKICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCiAgICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQogICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZyb20gdGhlIFdvcmssIHByb3ZpZGVkCiAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGljZW5zZS4KCiAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAogICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zCiAgICAgIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0aW9ucywgb3IKICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCiAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAogICAgICB0aGUgY29uZGl0aW9ucyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgoKICAgNS4gU3VibWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLAogICAgICBhbnkgQ29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsKICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuCiAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUgYWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRpb25zLgoKICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQogICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsCiAgICAgIGV4Y2VwdCBhcyByZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRoZQogICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KCiAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgogICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCiAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAiQVMgSVMiIEJBU0lTLAogICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKICAgICAgb2YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1IgQQogICAgICBQQVJUSUNVTEFSIFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUKICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CiAgICAgIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBZb3VyIGV4ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4KCiAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAogICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSwgY29udHJhY3QsIG9yIG90aGVyd2lzZSwKICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNoIGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKICAgICAgbGlhYmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAogICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNoYXJhY3RlciBhcmlzaW5nIGFzIGEKICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQogICAgICBXb3JrIChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGwsCiAgICAgIHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBhbmQgYWxsCiAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKICAgICAgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgoKICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZwogICAgICB0aGUgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLAogICAgICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwgaW5kZW1uaXR5LAogICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcwogICAgICBMaWNlbnNlLiBIb3dldmVyLCBpbiBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qgb25seQogICAgICBvbiBZb3VyIG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFsZgogICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCiAgICAgIGRlZmVuZCwgYW5kIGhvbGQgZWFjaCBDb250cmlidXRvciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQogICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFzc2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCiAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgoKICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCg==","addon.json":"ewogICJpZCI6ICJwcmludGVyLXJlc2luLWdvbyIsCiAgIm5hbWUiOiAiUmVzaW4gZmlsZXM6IEVsZWdvbyBHT08iLAogICJ2ZXJzaW9uIjogIjAuOS4wIiwKICAiYXBwcyI6IFsKICAgICJiaW1jcmFmdCIKICBdLAogICJhcGkiOiAiMS4wIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiZW50cnkiOiAiLi9tYWluLmpzIiwKICAicGVybWlzc2lvbnMiOiBbXSwKICAibmVlZHMiOiBbCiAgICB7CiAgICAgICJpZCI6ICJzbGljZXItcmVzaW4iLAogICAgICAicmFuZ2UiOiAiKiIKICAgIH0KICBdLAogICJkZXNjcmlwdGlvbiI6ICJXcml0ZXMgdGhlIEVsZWdvbyBHT08gZmlsZSBmb3IgcmVzaW4gcHJpbnRlcnMgdGhhdCB1c2UgaXQgKE1hcnMgNCBVbHRyYSwgU2F0dXJuIDMgVWx0cmEgYW5kIHNpbWlsYXIpLiBXcml0dGVuIGZyb20gRWxlZ29vJ3MgcHVibGlzaGVkIHNwZWNpZmljYXRpb24gYW5kIHJlYWQgYmFjayBieSBDYWRDcmFmdCBvbmx5OiBub3QgeWV0IGxvYWRlZCBvbiBhIHByaW50ZXIuIiwKICAiYXV0aG9yIjogIkNhZENyYWZ0IiwKICAibGFuZyI6ICIuL2xhbmcvIiwKICAiZGVmYXVsdCI6ICJvZmYiCn0K","lang/ar.json":"ewogICJAbG9jYWxlIjogImFyIiwKICAiQG5hbWUiOiAi2KfZhNi52LHYqNmK2KkiLAogICJAbm90ZSI6ICJEcmFmdCB0cmFuc2xhdGlvbiwgbm90IHlldCByZXZpZXdlZCBieSBhIG5hdGl2ZSBzcGVha2VyIiwKICAibGFiZWwiOiAiRWxlZ29vIEdPTyIsCiAgIm9wdC5ieXRlT3JkZXIiOiAi2KrYsdiq2YrYqCDYp9mE2KjYp9mK2KrYp9iqIiwKICAib3B0LmJ5dGVPcmRlci5iaWciOiAiQmlnLWVuZGlhbiAo2KfZhNmF2LnYqtin2K8g2YHZiiDYp9mE2KrZgtix2YrYsSkiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogItmF2KzZhdmI2Lkg2KfZhNiq2K3ZgtmCIiwKICAib3B0LmNoZWNrc3VtLm5lZ3N1bSI6ICLYp9mE2YXYrNmF2YjYuSDYp9mE2YXYudmD2YjYsyIsCiAgIm9wdC5jaGVja3N1bS5zdW0iOiAi2KfZhNmF2KzZhdmI2Lkg2KfZhNi52KfYr9mKIgp9Cg==","lang/de.json":"ewogICJAbG9jYWxlIjogImRlIiwKICAiQG5hbWUiOiAiRGV1dHNjaCIsCiAgIkBub3RlIjogIkRyYWZ0IHRyYW5zbGF0aW9uLCBub3QgeWV0IHJldmlld2VkIGJ5IGEgbmF0aXZlIHNwZWFrZXIiLAogICJsYWJlbCI6ICJFbGVnb28gR09PIiwKICAib3B0LmJ5dGVPcmRlciI6ICJCeXRlcmVpaGVuZm9sZ2UiLAogICJvcHQuYnl0ZU9yZGVyLmJpZyI6ICJCaWctRW5kaWFuIChkaWUgw7xibGljaGUgQW5nYWJlKSIsCiAgIm9wdC5ieXRlT3JkZXIubGl0dGxlIjogIkxpdHRsZS1FbmRpYW4iLAogICJvcHQuY2hlY2tzdW0iOiAiUHLDvGZzdW1tZSIsCiAgIm9wdC5jaGVja3N1bS5uZWdzdW0iOiAiTmVnaWVydGUgU3VtbWUiLAogICJvcHQuY2hlY2tzdW0uc3VtIjogIkVpbmZhY2hlIFN1bW1lIgp9Cg==","lang/el.json":"ewogICJAbG9jYWxlIjogImVsIiwKICAiQG5hbWUiOiAizpXOu867zrfOvc65zrrOrCIsCiAgIkBub3RlIjogIkRyYWZ0IHRyYW5zbGF0aW9uLCBub3QgeWV0IHJldmlld2VkIGJ5IGEgbmF0aXZlIHNwZWFrZXIiLAogICJsYWJlbCI6ICJFbGVnb28gR09PIiwKICAib3B0LmJ5dGVPcmRlciI6ICLOo861zrnPgc6sIGJ5dGUiLAogICJvcHQuYnl0ZU9yZGVyLmJpZyI6ICJCaWctZW5kaWFuICjOtyDPg8+Fzr3Ors64zrfPgiDOsc69zrHPhs6/z4HOrCkiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogIs6GzrjPgc6/zrnPg868zrEgzrXOu86tzrPPh86/z4UiLAogICJvcHQuY2hlY2tzdW0ubmVnc3VtIjogIs6Rz4HOvc63z4TOuc66z4wgzqzOuM+Bzr/Ouc+DzrzOsSIsCiAgIm9wdC5jaGVja3N1bS5zdW0iOiAizpHPgM67z4wgzqzOuM+Bzr/Ouc+DzrzOsSIKfQo=","lang/en.json":"ewogICJsYWJlbCI6ICJFbGVnb28gR09PIiwKICAib3B0LmJ5dGVPcmRlciI6ICJCeXRlIG9yZGVyIiwKICAib3B0LmJ5dGVPcmRlci5iaWciOiAiQmlnLWVuZGlhbiAodGhlIHVzdWFsIHJlcG9ydCkiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogIkNoZWNrc3VtIiwKICAib3B0LmNoZWNrc3VtLm5lZ3N1bSI6ICJOZWdhdGVkIHN1bSIsCiAgIm9wdC5jaGVja3N1bS5zdW0iOiAiUGxhaW4gc3VtIgp9Cg==","lang/es-ES.json":"ewogICJAbG9jYWxlIjogImVzLUVTIiwKICAiQG5hbWUiOiAiRXNwYcOxb2wgKEVzcGHDsWEpIiwKICAiQG5vdGUiOiAiRHJhZnQgdHJhbnNsYXRpb24sIG5vdCB5ZXQgcmV2aWV3ZWQgYnkgYSBuYXRpdmUgc3BlYWtlciIsCiAgImxhYmVsIjogIkVsZWdvbyBHT08iLAogICJvcHQuYnl0ZU9yZGVyIjogIk9yZGVuIGRlIGJ5dGVzIiwKICAib3B0LmJ5dGVPcmRlci5iaWciOiAiQmlnLWVuZGlhbiAoZWwgaGFiaXR1YWwgZW4gbG9zIGluZm9ybWVzKSIsCiAgIm9wdC5ieXRlT3JkZXIubGl0dGxlIjogIkxpdHRsZS1lbmRpYW4iLAogICJvcHQuY2hlY2tzdW0iOiAiU3VtYSBkZSBjb21wcm9iYWNpw7NuIiwKICAib3B0LmNoZWNrc3VtLm5lZ3N1bSI6ICJTdW1hIG5lZ2FkYSIsCiAgIm9wdC5jaGVja3N1bS5zdW0iOiAiU3VtYSBzaW1wbGUiCn0K","lang/es-MX.json":"ewogICJAbG9jYWxlIjogImVzLU1YIiwKICAiQG5hbWUiOiAiRXNwYcOxb2wgKE3DqXhpY28pIiwKICAiQG5vdGUiOiAiRHJhZnQgdHJhbnNsYXRpb24sIG5vdCB5ZXQgcmV2aWV3ZWQgYnkgYSBuYXRpdmUgc3BlYWtlciIsCiAgImxhYmVsIjogIkVsZWdvbyBHT08iLAogICJvcHQuYnl0ZU9yZGVyIjogIk9yZGVuIGRlIGJ5dGVzIiwKICAib3B0LmJ5dGVPcmRlci5iaWciOiAiQmlnLWVuZGlhbiAoZWwgaGFiaXR1YWwpIiwKICAib3B0LmJ5dGVPcmRlci5saXR0bGUiOiAiTGl0dGxlLWVuZGlhbiIsCiAgIm9wdC5jaGVja3N1bSI6ICJTdW1hIGRlIHZlcmlmaWNhY2nDs24iLAogICJvcHQuY2hlY2tzdW0ubmVnc3VtIjogIlN1bWEgbmVnYWRhIiwKICAib3B0LmNoZWNrc3VtLnN1bSI6ICJTdW1hIHNpbXBsZSIKfQo=","lang/fr.json":"ewogICJAbG9jYWxlIjogImZyIiwKICAiQG5hbWUiOiAiRnJhbsOnYWlzIiwKICAiQG5vdGUiOiAiRHJhZnQgdHJhbnNsYXRpb24sIG5vdCB5ZXQgcmV2aWV3ZWQgYnkgYSBuYXRpdmUgc3BlYWtlciIsCiAgImxhYmVsIjogIkVsZWdvbyBHT08iLAogICJvcHQuYnl0ZU9yZGVyIjogIk9yZHJlIGRlcyBvY3RldHMiLAogICJvcHQuYnl0ZU9yZGVyLmJpZyI6ICJCaWctZW5kaWFuIChsZSBwbHVzIGNvdXJhbnQpIiwKICAib3B0LmJ5dGVPcmRlci5saXR0bGUiOiAiTGl0dGxlLWVuZGlhbiIsCiAgIm9wdC5jaGVja3N1bSI6ICJTb21tZSBkZSBjb250csO0bGUiLAogICJvcHQuY2hlY2tzdW0ubmVnc3VtIjogIlNvbW1lIG9wcG9zw6llIiwKICAib3B0LmNoZWNrc3VtLnN1bSI6ICJTb21tZSBzaW1wbGUiCn0K","lang/id.json":"ewogICJAbG9jYWxlIjogImlkIiwKICAiQG5hbWUiOiAiQmFoYXNhIEluZG9uZXNpYSIsCiAgIkBub3RlIjogIkRyYWZ0IHRyYW5zbGF0aW9uLCBub3QgeWV0IHJldmlld2VkIGJ5IGEgbmF0aXZlIHNwZWFrZXIiLAogICJsYWJlbCI6ICJFbGVnb28gR09PIiwKICAib3B0LmJ5dGVPcmRlciI6ICJVcnV0YW4gYnl0ZSIsCiAgIm9wdC5ieXRlT3JkZXIuYmlnIjogIkJpZy1lbmRpYW4gKHlhbmcgYmlhc2EgZGlsYXBvcmthbikiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogIkNoZWNrc3VtIiwKICAib3B0LmNoZWNrc3VtLm5lZ3N1bSI6ICJKdW1sYWggbmVnYXRpZiIsCiAgIm9wdC5jaGVja3N1bS5zdW0iOiAiSnVtbGFoIGJpYXNhIgp9Cg==","lang/it.json":"ewogICJAbG9jYWxlIjogIml0IiwKICAiQG5hbWUiOiAiSXRhbGlhbm8iLAogICJAbm90ZSI6ICJEcmFmdCB0cmFuc2xhdGlvbiwgbm90IHlldCByZXZpZXdlZCBieSBhIG5hdGl2ZSBzcGVha2VyIiwKICAibGFiZWwiOiAiRWxlZ29vIEdPTyIsCiAgIm9wdC5ieXRlT3JkZXIiOiAiT3JkaW5lIGRlaSBieXRlIiwKICAib3B0LmJ5dGVPcmRlci5iaWciOiAiQmlnLWVuZGlhbiAoaWwgZm9ybWF0byBhYml0dWFsZSkiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogIkNoZWNrc3VtIiwKICAib3B0LmNoZWNrc3VtLm5lZ3N1bSI6ICJTb21tYSBuZWdhdGEiLAogICJvcHQuY2hlY2tzdW0uc3VtIjogIlNvbW1hIHNlbXBsaWNlIgp9Cg==","lang/ja.json":"ewogICJAbG9jYWxlIjogImphIiwKICAiQG5hbWUiOiAi5pel5pys6KqeIiwKICAiQG5vdGUiOiAiRHJhZnQgdHJhbnNsYXRpb24sIG5vdCB5ZXQgcmV2aWV3ZWQgYnkgYSBuYXRpdmUgc3BlYWtlciIsCiAgImxhYmVsIjogIkVsZWdvbyBHT08iLAogICJvcHQuYnl0ZU9yZGVyIjogIuODkOOCpOODiOmghuW6jyIsCiAgIm9wdC5ieXRlT3JkZXIuYmlnIjogIuODk+ODg+OCsOOCqOODs+ODh+OCo+OCouODsyjkuIDoiKznmoTjgarjg6zjg53jg7zjg4gpIiwKICAib3B0LmJ5dGVPcmRlci5saXR0bGUiOiAi44Oq44OI44Or44Ko44Oz44OH44Kj44Ki44OzIiwKICAib3B0LmNoZWNrc3VtIjogIuODgeOCp+ODg+OCr+OCteODoCIsCiAgIm9wdC5jaGVja3N1bS5uZWdzdW0iOiAi56ym5Y+35Y+N6Lui44Gu5ZCI6KiIIiwKICAib3B0LmNoZWNrc3VtLnN1bSI6ICLljZjntJTlkIjoqIgiCn0K","lang/ko.json":"ewogICJAbG9jYWxlIjogImtvIiwKICAiQG5hbWUiOiAi7ZWc6rWt7Ja0IiwKICAiQG5vdGUiOiAiRHJhZnQgdHJhbnNsYXRpb24sIG5vdCB5ZXQgcmV2aWV3ZWQgYnkgYSBuYXRpdmUgc3BlYWtlciIsCiAgImxhYmVsIjogIkVsZWdvbyBHT08iLAogICJvcHQuYnl0ZU9yZGVyIjogIuuwlOydtO2KuCDsiJzshJwiLAogICJvcHQuYnl0ZU9yZGVyLmJpZyI6ICLruYUg7JeU65SU7Ja4ICjsnbzrsJjsoIHsnbgg67O06rOgIOuwqeyLnSkiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICLrpqzti4Ag7JeU65SU7Ja4IiwKICAib3B0LmNoZWNrc3VtIjogIuyytO2BrOyErCIsCiAgIm9wdC5jaGVja3N1bS5uZWdzdW0iOiAi67aA7Zi4IOuwmOyghCDtlanqs4QiLAogICJvcHQuY2hlY2tzdW0uc3VtIjogIuuLqOyInCDtlanqs4QiCn0K","lang/nl.json":"ewogICJAbG9jYWxlIjogIm5sIiwKICAiQG5hbWUiOiAiTmVkZXJsYW5kcyIsCiAgIkBub3RlIjogIkRyYWZ0IHRyYW5zbGF0aW9uLCBub3QgeWV0IHJldmlld2VkIGJ5IGEgbmF0aXZlIHNwZWFrZXIiLAogICJsYWJlbCI6ICJFbGVnb28gR09PIiwKICAib3B0LmJ5dGVPcmRlciI6ICJCeXRldm9sZ29yZGUiLAogICJvcHQuYnl0ZU9yZGVyLmJpZyI6ICJCaWctZW5kaWFuIChkZSBnZWJydWlrZWxpamtlKSIsCiAgIm9wdC5ieXRlT3JkZXIubGl0dGxlIjogIkxpdHRsZS1lbmRpYW4iLAogICJvcHQuY2hlY2tzdW0iOiAiQ29udHJvbGVzb20iLAogICJvcHQuY2hlY2tzdW0ubmVnc3VtIjogIk5lZ2F0aWV2ZSBzb20iLAogICJvcHQuY2hlY2tzdW0uc3VtIjogIkdld29uZSBzb20iCn0K","lang/pl.json":"ewogICJAbG9jYWxlIjogInBsIiwKICAiQG5hbWUiOiAiUG9sc2tpIiwKICAiQG5vdGUiOiAiRHJhZnQgdHJhbnNsYXRpb24sIG5vdCB5ZXQgcmV2aWV3ZWQgYnkgYSBuYXRpdmUgc3BlYWtlciIsCiAgImxhYmVsIjogIkVsZWdvbyBHT08iLAogICJvcHQuYnl0ZU9yZGVyIjogIktvbGVqbm/Fm8SHIGJhanTDs3ciLAogICJvcHQuYnl0ZU9yZGVyLmJpZyI6ICJCaWctZW5kaWFuICh0eXBvd3kgcmFwb3J0KSIsCiAgIm9wdC5ieXRlT3JkZXIubGl0dGxlIjogIkxpdHRsZS1lbmRpYW4iLAogICJvcHQuY2hlY2tzdW0iOiAiU3VtYSBrb250cm9sbmEiLAogICJvcHQuY2hlY2tzdW0ubmVnc3VtIjogIlN1bWEgemFuZWdvd2FuYSIsCiAgIm9wdC5jaGVja3N1bS5zdW0iOiAiWnd5a8WCYSBzdW1hIgp9Cg==","lang/pt-BR.json":"ewogICJAbG9jYWxlIjogInB0LUJSIiwKICAiQG5hbWUiOiAiUG9ydHVndcOqcyAoQnJhc2lsKSIsCiAgIkBub3RlIjogIkRyYWZ0IHRyYW5zbGF0aW9uLCBub3QgeWV0IHJldmlld2VkIGJ5IGEgbmF0aXZlIHNwZWFrZXIiLAogICJsYWJlbCI6ICJFbGVnb28gR09PIiwKICAib3B0LmJ5dGVPcmRlciI6ICJPcmRlbSBkZSBieXRlcyIsCiAgIm9wdC5ieXRlT3JkZXIuYmlnIjogIkJpZy1lbmRpYW4gKG8gaGFiaXR1YWwgbm9zIHJlbGF0w7NyaW9zKSIsCiAgIm9wdC5ieXRlT3JkZXIubGl0dGxlIjogIkxpdHRsZS1lbmRpYW4iLAogICJvcHQuY2hlY2tzdW0iOiAiU29tYSBkZSB2ZXJpZmljYcOnw6NvIiwKICAib3B0LmNoZWNrc3VtLm5lZ3N1bSI6ICJTb21hIG5lZ2FkYSIsCiAgIm9wdC5jaGVja3N1bS5zdW0iOiAiU29tYSBzaW1wbGVzIgp9Cg==","lang/pt-PT.json":"ewogICJAbG9jYWxlIjogInB0LVBUIiwKICAiQG5hbWUiOiAiUG9ydHVndcOqcyAoUG9ydHVnYWwpIiwKICAiQG5vdGUiOiAiRHJhZnQgdHJhbnNsYXRpb24sIG5vdCB5ZXQgcmV2aWV3ZWQgYnkgYSBuYXRpdmUgc3BlYWtlciIsCiAgImxhYmVsIjogIkVsZWdvbyBHT08iLAogICJvcHQuYnl0ZU9yZGVyIjogIk9yZGVtIGRvcyBieXRlcyIsCiAgIm9wdC5ieXRlT3JkZXIuYmlnIjogIkJpZy1lbmRpYW4gKG8gbWFpcyBoYWJpdHVhbCkiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogIlNvbWEgZGUgdmVyaWZpY2HDp8OjbyIsCiAgIm9wdC5jaGVja3N1bS5uZWdzdW0iOiAiU29tYSBuZWdhZGEiLAogICJvcHQuY2hlY2tzdW0uc3VtIjogIlNvbWEgc2ltcGxlcyIKfQo=","lang/ru.json":"ewogICJAbG9jYWxlIjogInJ1IiwKICAiQG5hbWUiOiAi0KDRg9GB0YHQutC40LkiLAogICJAbm90ZSI6ICJEcmFmdCB0cmFuc2xhdGlvbiwgbm90IHlldCByZXZpZXdlZCBieSBhIG5hdGl2ZSBzcGVha2VyIiwKICAibGFiZWwiOiAiRWxlZ29vIEdPTyIsCiAgIm9wdC5ieXRlT3JkZXIiOiAi0J/QvtGA0Y/QtNC+0Log0LHQsNC50YLQvtCyIiwKICAib3B0LmJ5dGVPcmRlci5iaWciOiAiQmlnLWVuZGlhbiAo0L7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQsiDQvtGC0YfQtdGC0LDRhSkiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogItCa0L7QvdGC0YDQvtC70YzQvdCw0Y8g0YHRg9C80LzQsCIsCiAgIm9wdC5jaGVja3N1bS5uZWdzdW0iOiAi0JjQvdCy0LXRgNGC0LjRgNC+0LLQsNC90L3QsNGPINGB0YPQvNC80LAiLAogICJvcHQuY2hlY2tzdW0uc3VtIjogItCf0YDQvtGB0YLQsNGPINGB0YPQvNC80LAiCn0K","lang/sv.json":"ewogICJAbG9jYWxlIjogInN2IiwKICAiQG5hbWUiOiAiU3ZlbnNrYSIsCiAgIkBub3RlIjogIkRyYWZ0IHRyYW5zbGF0aW9uLCBub3QgeWV0IHJldmlld2VkIGJ5IGEgbmF0aXZlIHNwZWFrZXIiLAogICJsYWJlbCI6ICJFbGVnb28gR09PIiwKICAib3B0LmJ5dGVPcmRlciI6ICJCeXRlb3JkbmluZyIsCiAgIm9wdC5ieXRlT3JkZXIuYmlnIjogIkJpZy1lbmRpYW4gKGRlbiB2YW5saWdhIHJhcHBvcnRlbikiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogIktvbnRyb2xsc3VtbWEiLAogICJvcHQuY2hlY2tzdW0ubmVnc3VtIjogIk5lZ2VyYWQgc3VtbWEiLAogICJvcHQuY2hlY2tzdW0uc3VtIjogIlZhbmxpZyBzdW1tYSIKfQo=","lang/th.json":"ewogICJAbG9jYWxlIjogInRoIiwKICAiQG5hbWUiOiAi4LmE4LiX4LiiIiwKICAiQG5vdGUiOiAiRHJhZnQgdHJhbnNsYXRpb24sIG5vdCB5ZXQgcmV2aWV3ZWQgYnkgYSBuYXRpdmUgc3BlYWtlciIsCiAgImxhYmVsIjogIkVsZWdvbyBHT08iLAogICJvcHQuYnl0ZU9yZGVyIjogIuC4peC4s+C4lOC4seC4muC5hOC4muC4leC5jCIsCiAgIm9wdC5ieXRlT3JkZXIuYmlnIjogIkJpZy1lbmRpYW4gKOC4o+C4ueC4m+C5geC4muC4muC4l+C4teC5iOC4nuC4muC4l+C4seC5iOC4p+C5hOC4mykiLAogICJvcHQuYnl0ZU9yZGVyLmxpdHRsZSI6ICJMaXR0bGUtZW5kaWFuIiwKICAib3B0LmNoZWNrc3VtIjogIuC5gOC4iuC5h+C4geC4i+C4seC4oSIsCiAgIm9wdC5jaGVja3N1bS5uZWdzdW0iOiAi4Lic4Lil4Lij4Lin4Lih4Lil4LiaIiwKICAib3B0LmNoZWNrc3VtLnN1bSI6ICLguJzguKXguKPguKfguKHguJvguIHguJXguLQiCn0K","lang/tr.json":"ewogICJAbG9jYWxlIjogInRyIiwKICAiQG5hbWUiOiAiVMO8cmvDp2UiLAogICJAbm90ZSI6ICJEcmFmdCB0cmFuc2xhdGlvbiwgbm90IHlldCByZXZpZXdlZCBieSBhIG5hdGl2ZSBzcGVha2VyIiwKICAibGFiZWwiOiAiRWxlZ29vIEdPTyIsCiAgIm9wdC5ieXRlT3JkZXIiOiAiQmF5dCBzxLFyYXPEsSIsCiAgIm9wdC5ieXRlT3JkZXIuYmlnIjogIkLDvHnDvGsgdcOnbHUgKGdlbmVsZGUga3VsbGFuxLFsYW4pIiwKICAib3B0LmJ5dGVPcmRlci5saXR0bGUiOiAiS8O8w6fDvGsgdcOnbHUiLAogICJvcHQuY2hlY2tzdW0iOiAiU2HEn2xhbWEgdG9wbGFtxLEiLAogICJvcHQuY2hlY2tzdW0ubmVnc3VtIjogIk5lZ2F0aWYgdG9wbGFtIiwKICAib3B0LmNoZWNrc3VtLnN1bSI6ICJEw7x6IHRvcGxhbSIKfQo=","lang/zh-Hans.json":"ewogICJAbG9jYWxlIjogInpoLUhhbnMiLAogICJAbmFtZSI6ICLnroDkvZPkuK3mlociLAogICJAbm90ZSI6ICJEcmFmdCB0cmFuc2xhdGlvbiwgbm90IHlldCByZXZpZXdlZCBieSBhIG5hdGl2ZSBzcGVha2VyIiwKICAibGFiZWwiOiAiRWxlZ29vIEdPTyIsCiAgIm9wdC5ieXRlT3JkZXIiOiAi5a2X6IqC5bqPIiwKICAib3B0LmJ5dGVPcmRlci5iaWciOiAi5aSn56uv5bqP77yI5bi455So77yJIiwKICAib3B0LmJ5dGVPcmRlci5saXR0bGUiOiAi5bCP56uv5bqPIiwKICAib3B0LmNoZWNrc3VtIjogIuagoemqjOWSjCIsCiAgIm9wdC5jaGVja3N1bS5uZWdzdW0iOiAi5Y+W5Y+N5rGC5ZKMIiwKICAib3B0LmNoZWNrc3VtLnN1bSI6ICLmma7pgJrmsYLlkowiCn0K","lang/zh-Hant.json":"ewogICJAbG9jYWxlIjogInpoLUhhbnQiLAogICJAbmFtZSI6ICLnuYHpq5TkuK3mlociLAogICJAbm90ZSI6ICJEcmFmdCB0cmFuc2xhdGlvbiwgbm90IHlldCByZXZpZXdlZCBieSBhIG5hdGl2ZSBzcGVha2VyIiwKICAibGFiZWwiOiAiRWxlZ29vIEdPTyIsCiAgIm9wdC5ieXRlT3JkZXIiOiAi5L2N5YWD57WE6aCG5bqPIiwKICAib3B0LmJ5dGVPcmRlci5iaWciOiAi5aSn56uv5bqP77yI5bi455So77yJIiwKICAib3B0LmJ5dGVPcmRlci5saXR0bGUiOiAi5bCP56uv5bqPIiwKICAib3B0LmNoZWNrc3VtIjogIuagoempl+WSjCIsCiAgIm9wdC5jaGVja3N1bS5uZWdzdW0iOiAi6LKg5pW457i95ZKMIiwKICAib3B0LmNoZWNrc3VtLnN1bSI6ICLntJTnuL3lkowiCn0K","main.js":"LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgKi8KLyoqCiAqIG1haW4uanMg4oCUIHRoZSBFbGVnb28gR09PIGZpbGUgZm9yIHJlc2luIHByaW50aW5nIChyb2FkbWFwIFJTTi4yL1JTTi4zOyBkb2NzLzAuOS1SRVNJTi1TVEFHRS5tZCkuIEl0IGFkZHMgdGhlIHdyaXRlciB0byB3aW5kb3cuY2NSZXNpbkZvcm1hdHMsIHdoaWNoIHRoZSBSZXNpbiBjYXJkIGxpc3RzIGZvciB0aGUgcHJpbnRlcnMgdGhhdCB1c2UgaXQuCiAqIHJzLWdvby5qcyBpcyBsaWIvcHJpbnRyZXNpbidzIGNvcHkgKG5vZGUgdG9vbHMvcHJpbnRyZXNpbi9zeW5jLm1qcykuCiAqLwppbXBvcnQgeyBHT08sIHdyaXRlR29vIH0gZnJvbSAnLi9ycy1nb28uanMnOwoKZXhwb3J0IGZ1bmN0aW9uIGFjdGl2YXRlKGFwaSkgewogIGNvbnN0IGRlZiA9IHsgLi4uR09PLCB3cml0ZTogd3JpdGVHb28sIHQ6IChrLCB2KSA9PiBhcGkudChrLCB2KSB9OwogICh3aW5kb3cuY2NSZXNpbkZvcm1hdHMgfHw9IFtdKS5wdXNoKGRlZik7CiAgZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NjLXByaW50LXNsaWNlcnMnKSk7CiAgYXBpLm9uRGVhY3RpdmF0ZSgoKSA9PiB7CiAgICBjb25zdCBhdCA9IHdpbmRvdy5jY1Jlc2luRm9ybWF0cy5pbmRleE9mKGRlZik7CiAgICBpZiAoYXQgPj0gMCkgd2luZG93LmNjUmVzaW5Gb3JtYXRzLnNwbGljZShhdCwgMSk7CiAgICBkaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2MtcHJpbnQtc2xpY2VycycpKTsKICB9KTsKfQo=","rs-goo.js":"LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgKi8KLyoqCiAqIHJzLWdvby5qcyDigJQgdGhlIEVsZWdvbyBHT08gZmlsZSB3cml0ZXIgKHJvYWRtYXAgUlNOLiopOiBhIFNsaWNlZCBwbGF0ZSBpbiwgdGhlIGJ5dGVzIG9mIGEgLmdvbyBvdXQsIHJlYWR5IGZvciB0aGUgcHJpbnRlcidzIFVTQiBzdGljay4gTm8gRE9NLCBubyBpbXBvcnRzCiAqIGJleW9uZCBsaWIvcHJpbnRyZXNpbi8qLiBXcml0dGVuIGZyb20gRWxlZ29vJ3Mgb3duIHB1Ymxpc2hlZCAiR29vIEZvcm1hdCBTcGVjIFYxLjIiICh0aGUgUERGIGluIGdpdGh1Yi5jb20vZWxlZ29vb2ZmaWNpYWwvR09PKSBhbmQgbm90aGluZyBlbHNlOyBubwogKiB0aGlyZC1wYXJ0eSBpbXBsZW1lbnRhdGlvbiB3YXMgcmVhZC4gVGhlIHNwZWMgaXMgc2lsZW50IG9yIHVuY2xlYXIgaW4gcGxhY2VzOyBlYWNoIGlzIG1hcmtlZCBgLy8gU1BFQy1HQVA6YCB3aXRoIHRoZSByZWFkaW5nIHRha2VuLCBzbyBhIGZpcnN0IHJlYWwtcHJpbnRlcgogKiB0ZXN0IGtub3dzIHdoZXJlIHRvIGxvb2suCiAqCiAqIFNXSVRDSEFCTEUgQ0hPSUNFUzogdGhlIHNwZWMgbGVhdmVzIHR3byByZWFsIGZvcmtzIG9wZW4sIHNvIHRoZXkgYXJlIG9wdGlvbnMsIG5vdCBmaXhlZCBndWVzc2VzIChHT08ub3B0aW9uczsgY2hvc2VuIHBlciBmaWxlIGluIG1ldGEub3B0aW9ucyk6CiAqICAgYnl0ZU9yZGVyICdiaWcnIHwgJ2xpdHRsZScgIGV2ZXJ5IGludCAvIHNob3J0IC8gZmxvYXQgZmllbGQgYW5kIHRoZSBSR0I1NjUgcHJldmlldyB3b3JkcyAgICAgICAgKGRlZmF1bHQgJ2JpZycpCiAqICAgY2hlY2tzdW0gICduZWdzdW0nIHwgJ3N1bScgIHRoZSBpbWFnZS1kYXRhIGNoZWNrc3VtOiB0d28ncyBjb21wbGVtZW50IChuZWdhdGVkKSBvZiB0aGUgYnl0ZSBzdW0sIG9yIHRoZSBwbGFpbiBieXRlIHN1bSwgYm90aCBtb2QgMjU2ICAgKGRlZmF1bHQgJ25lZ3N1bScpCiAqIFRoZSBkZWZhdWx0cyByZXN0IG9uIGEgU0VDT05EQVJZLCBVTlZFUklGSUVEIHJlcG9ydDogYSB3ZWIgc2VhcmNoIHR1cm5lZCB1cCBhIGNvbW1pdCBtZXNzYWdlIGJ5IHRoZSBhdXRob3Igb2YgYSB0aGlyZC1wYXJ0eSBzbGljZXIgc2F5aW5nIHJlYWwgZmlsZXMgYXJlCiAqIGJpZy1lbmRpYW4gd2l0aCBhIG5lZ2F0ZWQtc3VtIGNoZWNrc3VtLiBJdCBpcyBub3QgZnJvbSBzb3VyY2Ugd2UgcmVhZCBhbmQgbm90IGNoZWNrZWQgYnkgdXM7IG5vIHJlYWwgRWxlZ29vIHByaW50ZXIgaGFzIGJlZW4gdHJpZWQuIEEgdGVzdGVyIGZsaXBzIHRoZQogKiBvcHRpb25zIHdoZW4gdGhlIHByaW50ZXIgcmVqZWN0cyBhIGZpbGUuIFRoZSBVSSBzaG93cyBsYWJlbHMgZnJvbSB0aGUgYWRkLW9uJ3MgbGFuZyBmaWxlIHVuZGVyIGBvcHQuPGlkPmAgYW5kIGBvcHQuPGlkPi48dmFsdWU+YC4KICoKICogSE9ORVNUWTogbm90aGluZyB3cml0dGVuIGhlcmUgaGFzIGJlZW4gbG9hZGVkIG9uIGEgcmVhbCBFbGVnb28gcHJpbnRlci4gSXQgaXMgcmVhZCBiYWNrIGJ5IG91ciBvd24gcmVhZGVyIG9ubHkgKHRvb2xzL3ByaW50cmVzaW4vZ29vLXJlYWQubWpzLCBhbHNvCiAqIHdyaXR0ZW4gZnJvbSB0aGUgc3BlYyksIHNvIGl0IHByb3ZlcyB0aGUgZmlsZSBtYXRjaGVzIG91ciByZWFkaW5nIG9mIHRoZSBzcGVjLCBub3QgdGhhdCBhIG1hY2hpbmUgYWNjZXB0cyBpdC4KICoKICogICBHT08gPSB7IGlkLCBuYW1lLCBleHQsIG1pbWUsIG9wdGlvbnM6IFt7IGlkLCB2YWx1ZXMsIGRlZmF1bHQgfV0gfQogKiAgIHdyaXRlR29vKHNsaWNlZCwgbWV0YSkg4oaSIFByb21pc2U8VWludDhBcnJheT4KICogICAgIHNsaWNlZDogeyB3LCBoLCBsYXllckhlaWdodCwgY291bnQsIGxheWVyKGkpIOKGkiBVaW50OEFycmF5KHcgKiBoKSwgbW06IFt4LCB5XSB9ICAgICAgICAgICAgICAgICAgICBzZWUgcnMtcmxlLmpzCiAqICAgICBtZXRhOiAgIHsgbmFtZSwgcHJpbnRlcjogeyBpZCwgbmFtZSwgbW0/OiBbeCwgeSwgel0sIGZsaXA/OiB7IHgsIHkgfSB9LAogKiAgICAgICAgICAgICAgIHJlc2luOiB7IG5hbWUsIGV4cG9zdXJlLCBib3R0b21FeHBvc3VyZSwgYm90dG9tTGF5ZXJzLCBsaWZ0SGVpZ2h0LCBsaWZ0U3BlZWQsIHJldHJhY3RTcGVlZCwgbGlnaHRPZmYsIGRlbnNpdHk/LCBwcmljZT8sIHB3bT8gfSwKICogICAgICAgICAgICAgICBsYXllckhlaWdodCwgdm9sdW1lTWwsIHNlY29uZHMsIHRpbWU/OiBEYXRlLCBvblByb2dyZXNzPygwLi4xKSwKICogICAgICAgICAgICAgICBvcHRpb25zPzogeyBieXRlT3JkZXI/LCBjaGVja3N1bT8gfSB9ICAgICAgICAgICAgICAgICAgIHVua25vd24gdmFsdWUg4oaSIHRocm93czsgbWlzc2luZyDihpIgdGhlIEdPTy5vcHRpb25zIGRlZmF1bHQKICogICAgIHRpbWVzIGluIHNlY29uZHMsIGRpc3RhbmNlcyBpbiBtbSwgc3BlZWRzIGluIG1tL21pbjogZXhhY3RseSB3aGF0IHRoZSBwcm9maWxlIGhvbGRzLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgdGhlIHNwZWMgYXNrcyBmb3I7IG9ubHkgdGhlIHZvbHVtZSBjb252ZXJ0cwogKiAgIE1BWF9QWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxhcmdlc3QgcmVzb2x1dGlvbiBvbmUgYXhpcyBtYXkgaGF2ZSAodGhlIHNwZWMncyBYIGFuZCBZIGFyZSAxNi1iaXQpCiAqCiAqIEZpbGUgbGF5b3V0IChzcGVjIFYxLjIpOiBoZWFkZXIgaW5mbywgdGhlbiBvbmUgImxheWVyIGNvbnRlbnQiIGEgbGF5ZXIsIHRoZW4gdGhlIGVuZGluZyBzdHJpbmcuCiAqICAgaGVhZGVyOiB2ZXJzaW9uKDQpIG1hZ2ljKDgpIHNvZnR3YXJlKDMyKSBzb2Z0d2FyZVZlcnNpb24oMjQpIHRpbWUoMjQpIHByaW50ZXJOYW1lKDMyKSBwcmludGVyVHlwZSgzMikgcHJvZmlsZSgzMikgYWEoMikgZ3JleSgyKSBibHVyKDIpCiAqICAgICAgICAgICBzbWFsbCBwcmV2aWV3IDExNsOXMTE2IFJHQjU2NSwgQ1JMRiwgYmlnIHByZXZpZXcgMjkww5cyOTAgUkdCNTY1LCBDUkxGLCB0aGVuIGZpZWxkcyAxNeKAkzYxIChjb3VudHMsIHNpemUsIGV4cG9zdXJlLCBtb3Rpb24sIHBvd2VyLCB0b3RhbHMsIG9mZnNldCkKICogICBsYXllciBjb250ZW50OiBsYXllciBkZWZpbml0aW9uICg2NiBieXRlcywgZW5kcyBDUkxGKSDCtyBkYXRhIHNpemUgKDQpIMK3IGltYWdlIGRhdGEgKDB4NTUsIFJMRSBjaHVua3MsIDgtYml0IGNoZWNrc3VtKSDCtyBDUkxGCiAqICAgZW5kaW5nIHN0cmluZzogMDAgMDAgMDAgMDcgMDAgMDAgMDAgNDQgNEMgNTAgMDAKICovCmV4cG9ydCBjb25zdCBHT08gPSB7CiAgaWQ6ICdnb28nLCBuYW1lOiAnRWxlZ29vIEdPTyAoLmdvbyknLCBleHQ6ICdnb28nLCBtaW1lOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICBvcHRpb25zOiBbCiAgICB7IGlkOiAnYnl0ZU9yZGVyJywgdmFsdWVzOiBbJ2JpZycsICdsaXR0bGUnXSwgZGVmYXVsdDogJ2JpZycgfSwKICAgIHsgaWQ6ICdjaGVja3N1bScsIHZhbHVlczogWyduZWdzdW0nLCAnc3VtJ10sIGRlZmF1bHQ6ICduZWdzdW0nIH0sCiAgXSwKfTsKCi8vIFNQRUMtR0FQIChieXRlT3JkZXIpOiB0aGUgc3BlYyBuZXZlciBzYXlzIHdoaWNoIGJ5dGUgb3JkZXIgaXRzIGludC9zaG9ydC9mbG9hdCBmaWVsZHMgdXNlLiBJdHMgb3duIGJ5dGVzIGRvIG5vdCBzZXR0bGUgaXQsIGhvbmVzdGx5OiB0aGUgOC1ieXRlIG1hZ2ljCi8vIDA3IDAwIDAwIDAwIDQ0IDRDIDUwIDAwIHJlYWRzIGFzIHRoZSBudW1iZXIgNyBmb2xsb3dlZCBieSAiRExQXDAiIG9ubHkgaWYgbGl0dGxlLWVuZGlhbjsgdGhlIGVuZGluZyBzdHJpbmcgMDAgMDAgMDAgMDcgMDAgMDAgMDAgNDQgNEMgNTAgMDAgcmVhZHMgYXMgYQovLyBiaWctZW5kaWFuIDcgZm9sbG93ZWQgYnkgMDAgMDAgMDAgIkRMUCIgMDAsIGJ1dCBpdCBlcXVhbGx5IHJlYWRzIGFzIHRocmVlIHplcm8gYnl0ZXMgcGx1cyB0aGUgdmVyeSBzYW1lIG1hZ2ljLiBCb3RoIGFyZSBwbGFpbiBieXRlIHN0cmluZ3MgdGhlIHdyaXRlcgovLyBjb3BpZXMgdmVyYmF0aW0sIHNvIG5laXRoZXIgc3VwcG9ydHMgZWl0aGVyIG9yZGVyLiBUaGUgZGVmYXVsdCAnYmlnJyBmb2xsb3dzIG9ubHkgdGhlIHNlY29uZGFyeSwgVU5WRVJJRklFRCB3ZWItc2VhcmNoIHJlcG9ydCBuYW1lZCBpbiB0aGUgaGVhZGVyCi8vIGNvbW1lbnQgKGEgdGhpcmQtcGFydHkgc2xpY2VyIGF1dGhvcidzIGNvbW1pdCBtZXNzYWdlOiBiaWctZW5kaWFuLCBuZWdhdGVkLXN1bSBjaGVja3N1bTsgbm90IGZyb20gc291cmNlIHdlIHJlYWQsIG5vdCB2ZXJpZmllZCBieSB1cykuCi8vIFNQRUMtR0FQIChjaGVja3N1bSk6IHRoZSBzcGVjIHNheXMgIjgtYml0IGNoZWNrc3VtIiB3aXRoIG5vIGZvcm11bGE7ICduZWdzdW0nIChkZWZhdWx0LCBzYW1lIHVudmVyaWZpZWQgcmVwb3J0KSBvciB0aGUgcGxhaW4gJ3N1bScuCi8vIFNQRUMtR0FQIChoZWFkZXIgc2l6ZSk6IHRoZSB0YWJsZSdzIGZpZWxkcyBhZGQgdXAgdG8gYSAxOTUsNDc3LWJ5dGUgaGVhZGVyOyB0aGUgc3BlYydzIGV4YW1wbGUgb2Zmc2V0IDB4MkZBQjcgPSAxOTUsMjU1IGNhbm5vdCBiZSByZWNvbmNpbGVkIHdpdGggaXQKLy8gKGhlYWRlciBieXRlcyAwLTE0IGFsb25lIGFyZSAxOTUsMzEwKSwgc28gdGhlIGV4YW1wbGUgaXMgcmVhZCBhcyBpbGx1c3RyYXRpdmUgYW5kIHRoZSB0YWJsZSBpcyBmb2xsb3dlZC4KY29uc3Qgb3B0aW9uc09mID0gKGdpdmVuKSA9PiB7CiAgY29uc3Qgb3V0ID0ge30sIGcgPSBnaXZlbiB8fCB7fTsKICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoZykpIGlmICghR09PLm9wdGlvbnMuc29tZSgobykgPT4gby5pZCA9PT0gaykpIHRocm93IG5ldyBFcnJvcihgZ29vOiB1bmtub3duIG9wdGlvbiAiJHtrfSJgKTsKICBmb3IgKGNvbnN0IG8gb2YgR09PLm9wdGlvbnMpIHsKICAgIGNvbnN0IHYgPSBnW28uaWRdID09PSB1bmRlZmluZWQgfHwgZ1tvLmlkXSA9PT0gbnVsbCA/IG8uZGVmYXVsdCA6IGdbby5pZF07CiAgICBpZiAoIW8udmFsdWVzLmluY2x1ZGVzKHYpKSB0aHJvdyBuZXcgRXJyb3IoYGdvbzogb3B0aW9uICR7by5pZH0gbXVzdCBiZSBvbmUgb2YgJHtvLnZhbHVlcy5qb2luKCcsICcpfSwgbm90ICR7SlNPTi5zdHJpbmdpZnkodil9YCk7CiAgICBvdXRbby5pZF0gPSB2OwogIH0KICByZXR1cm4gb3V0Owp9OwoKLy8gU1BFQy1HQVA6ICJmb3JtYXQgdmVyc2lvbiIgKFN0cmluZywgNCBieXRlcykgaXMgZ2l2ZW4gbm8gdmFsdWU7IHRoZSBkb2N1bWVudCBpcyB0aXRsZWQgVjEuMiwgc28gdGhvc2UgZm91ciBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuLgpjb25zdCBWRVJTSU9OID0gJ1YxLjInOwpjb25zdCBNQUdJQyA9IFsweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDRjLCAweDUwLCAweDAwXTsgICAgICAgICAgICAgICAgLy8gZmllbGQgMSwgImZpeCBjb25zdGFudCIKY29uc3QgRU5ESU5HID0gWzB4MDAsIDB4MDAsIDB4MDAsIC4uLk1BR0lDXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZGlhZ3JhbSdzIGVuZGluZyBzdHJpbmc6IDAwIDAwIDAwICsgdGhlIG1hZ2ljIHRhZyAoMTEgYnl0ZXMpCmNvbnN0IENSTEYgPSBbMHgwZCwgMHgwYV07CmNvbnN0IFNNQUxMID0gMTE2LCBCSUcgPSAyOTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlldyBlZGdlcywgZmllbGRzIDExIGFuZCAxMwpleHBvcnQgY29uc3QgTUFYX1BYID0gMzI3Njc7ICAgICAgIC8vIHRoZSBzcGVjJ3MgcmVzb2x1dGlvbnMgYXJlICJzaG9ydCBpbnQiOyBoZWxkIHRvIHRoZSBzaWduZWQgcmFuZ2Ugc28gZWl0aGVyIHJlYWRpbmcgaXMgc2FmZQpjb25zdCBNQVhfUlVOID0gMHgwZmZmZmZmZjsgICAgICAgIC8vIDQtYml0IG5pYmJsZSArIHRocmVlIGxlbmd0aCBieXRlcwoKY29uc3QgbnVtID0gKHYsIGQgPSAwKSA9PiAoTnVtYmVyLmlzRmluaXRlKCt2KSA/ICt2IDogZCk7CgovKiogU2VxdWVudGlhbCBsaXR0bGUgaGVscGVyIG92ZXIgb25lIEFycmF5QnVmZmVyOiBldmVyeSBmaWVsZCBnb2VzIHRocm91Z2ggaGVyZSBzbyB0aGUgYnl0ZSBvcmRlciBsaXZlcyBpbiBvbmUgcGxhY2UuICovCmNsYXNzIE91dCB7CiAgY29uc3RydWN0b3IobiwgbGUpIHsgdGhpcy5iID0gbmV3IFVpbnQ4QXJyYXkobik7IHRoaXMudiA9IG5ldyBEYXRhVmlldyh0aGlzLmIuYnVmZmVyKTsgdGhpcy5vID0gMDsgdGhpcy5sZSA9IGxlOyB9CiAgdTgoeCkgeyB0aGlzLmJbdGhpcy5vKytdID0geCAmIDB4ZmY7IH0KICBpMTYoeCkgeyB0aGlzLnYuc2V0SW50MTYodGhpcy5vLCB4LCB0aGlzLmxlKTsgdGhpcy5vICs9IDI7IH0KICBpMzIoeCkgeyB0aGlzLnYuc2V0SW50MzIodGhpcy5vLCB4LCB0aGlzLmxlKTsgdGhpcy5vICs9IDQ7IH0KICBmMzIoeCkgeyB0aGlzLnYuc2V0RmxvYXQzMih0aGlzLm8sIHgsIHRoaXMubGUpOyB0aGlzLm8gKz0gNDsgfQogIGJ5dGVzKGEpIHsgdGhpcy5iLnNldChhLCB0aGlzLm8pOyB0aGlzLm8gKz0gYS5sZW5ndGg7IH0KICBzdHIocywgbikgeyAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhlZC13aWR0aCBBU0NJSSwgemVyby1wYWRkZWQ7IGFsd2F5cyBsZWF2ZXMgYSBjbG9zaW5nIHplcm8gc28gYSByZWFkZXIgc3RvcHMgd2hlcmUgdGhlIHRleHQgZG9lcwogICAgY29uc3QgdCA9IFN0cmluZyhzID8/ICcnKS5yZXBsYWNlKC9bXlx4MjAtXHg3ZV0vZywgJz8nKS5zbGljZSgwLCBuIC0gMSk7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykgdGhpcy5iW3RoaXMubyArIGldID0gaSA8IHQubGVuZ3RoID8gdC5jaGFyQ29kZUF0KGkpIDogMDsKICAgIHRoaXMubyArPSBuOwogIH0KfQoKY29uc3QgcGFkMiA9IChuKSA9PiBTdHJpbmcobikucGFkU3RhcnQoMiwgJzAnKTsKLy8gU1BFQy1HQVA6ICJGaWxlIGNyZWF0ZSB0aW1lIiBpcyBhIDI0LWJ5dGUgU3RyaW5nIHdpdGggbm8gZm9ybWF0OyAiWVlZWS1NTS1ERCBISDpNTTpTUyIgKDE5IGNoYXJhY3RlcnMsIGxvY2FsIHRpbWUpIGlzIHRoZSBwbGFpbiByZWFkaW5nLgpjb25zdCBzdGFtcCA9IChkKSA9PiBgJHtkLmdldEZ1bGxZZWFyKCl9LSR7cGFkMihkLmdldE1vbnRoKCkgKyAxKX0tJHtwYWQyKGQuZ2V0RGF0ZSgpKX0gJHtwYWQyKGQuZ2V0SG91cnMoKSl9OiR7cGFkMihkLmdldE1pbnV0ZXMoKSl9OiR7cGFkMihkLmdldFNlY29uZHMoKSl9YDsKCi8qKgogKiBPbmUgcHJldmlldyBwaWN0dXJlIGFzIFJHQjU2NSAocmVkIDUgYml0cywgZ3JlZW4gNiwgYmx1ZSA1KSwgc2l6ZSDDlyBzaXplLiBUaGUgcGxhdGUgaXMgc2hvd24gYXMgZXZlcnkgbGF5ZXIncyBsaWdodCBsYWlkIG9uIHRvcCBvZiBvbmUgYW5vdGhlciAoc2FtcGxlZCB0bwogKiBhdCBtb3N0IDI0IGxheWVycyksIGZpdHRlZCBpbnRvIHRoZSBzcXVhcmUgd2l0aCBpdHMgcHJvcG9ydGlvbnMga2VwdCwgaW4gcmVzaW4tZ3JlZW4gb24gZGFyay4gUGl4ZWxzIGFyZSBhcmVhLWF2ZXJhZ2VkLCBub3QgcGlja2VkLCBzbyBlZGdlcyBzdGF5IHNtb290aC4KICovCmZ1bmN0aW9uIHByZXZpZXcoc2xpY2VkLCBzaXplLCBsZSkgewogIGNvbnN0IHsgdywgaCwgY291bnQgfSA9IHNsaWNlZDsKICBjb25zdCBhY2MgPSBuZXcgVWludDhBcnJheSh3ICogaCk7CiAgY29uc3Qgc3RlcCA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChjb3VudCAvIDI0KSk7CiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSArPSBzdGVwKSB7IGNvbnN0IGcgPSBzbGljZWQubGF5ZXIoaSk7IGZvciAobGV0IGsgPSAwOyBrIDwgYWNjLmxlbmd0aDsgaysrKSBpZiAoZ1trXSA+IGFjY1trXSkgYWNjW2tdID0gZ1trXTsgfQogIGNvbnN0IHMgPSBNYXRoLm1pbihzaXplIC8gdywgc2l6ZSAvIGgpLCBwdyA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQodyAqIHMpKSwgcGggPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKGggKiBzKSk7CiAgY29uc3QgeDAgPSAoc2l6ZSAtIHB3KSA+PiAxLCB5MCA9IChzaXplIC0gcGgpID4+IDE7CiAgY29uc3Qgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSAqIHNpemUgKiAyKSwgdiA9IG5ldyBEYXRhVmlldyhvdXQuYnVmZmVyKTsKICBjb25zdCBiZyA9IFsxNiwgMTgsIDIyXSwgZmcgPSBbOTYsIDIzMCwgMTUwXTsKICBmb3IgKGxldCB5ID0gMDsgeSA8IHNpemU7IHkrKykgewogICAgZm9yIChsZXQgeCA9IDA7IHggPCBzaXplOyB4KyspIHsKICAgICAgbGV0IHQgPSAwOwogICAgICBpZiAoeCA+PSB4MCAmJiB4IDwgeDAgKyBwdyAmJiB5ID49IHkwICYmIHkgPCB5MCArIHBoKSB7CiAgICAgICAgY29uc3Qgc3gwID0gTWF0aC5mbG9vcigoeCAtIHgwKSAqIHcgLyBwdyksIHN4MSA9IE1hdGgubWF4KHN4MCArIDEsIE1hdGguZmxvb3IoKHggLSB4MCArIDEpICogdyAvIHB3KSk7CiAgICAgICAgY29uc3Qgc3kwID0gTWF0aC5mbG9vcigoeSAtIHkwKSAqIGggLyBwaCksIHN5MSA9IE1hdGgubWF4KHN5MCArIDEsIE1hdGguZmxvb3IoKHkgLSB5MCArIDEpICogaCAvIHBoKSk7CiAgICAgICAgbGV0IHN1bSA9IDAsIG4gPSAwOwogICAgICAgIGZvciAobGV0IHl5ID0gc3kwOyB5eSA8IHN5MSAmJiB5eSA8IGg7IHl5KyspIGZvciAobGV0IHh4ID0gc3gwOyB4eCA8IHN4MSAmJiB4eCA8IHc7IHh4KyspIHsgc3VtICs9IGFjY1t5eSAqIHcgKyB4eF07IG4rKzsgfQogICAgICAgIHQgPSBuID8gc3VtIC8gbiAvIDI1NSA6IDA7CiAgICAgIH0KICAgICAgY29uc3QgYyA9IFswLCAxLCAyXS5tYXAoKGspID0+IE1hdGgucm91bmQoYmdba10gKyAoZmdba10gLSBiZ1trXSkgKiB0KSk7CiAgICAgIHYuc2V0VWludDE2KCh5ICogc2l6ZSArIHgpICogMiwgKChjWzBdID4+IDMpIDw8IDExKSB8ICgoY1sxXSA+PiAyKSA8PCA1KSB8IChjWzJdID4+IDMpLCBsZSk7CiAgICB9CiAgfQogIHJldHVybiBvdXQ7Cn0KCi8qKgogKiBPbmUgbGF5ZXIgcGljdHVyZSBhcyB0aGUgc3BlYydzIGltYWdlIGRhdGE6IDB4NTUsIFJMRSBjaHVua3MsIGFuIDgtYml0IGNoZWNrc3VtLiBDaHVuayBieXRlIDAgaXMgW3R5cGU6Ml1bbGVuZ3RoIGNvZGU6Ml1bbmliYmxlOjRdOgogKiAgIDAwIGFsbC0weDAwIHBpeGVscyDCtyAxMSBhbGwtMHhmZiBwaXhlbHMgwrcgMDEgb25lIGdyZXkgMHgwMeKAkzB4ZmUsIHRoZSBncmV5IGJ5dGUgZm9sbG93aW5nIGJ5dGUgMCDCtyAoMTAsIGEgZGlmZiBmcm9tIHRoZSBwcmV2aW91cyBwaXhlbCwgaXMgbmV2ZXIgd3JpdHRlbikKICogVGhlIHJ1biBsZW5ndGggaXMgdGhlIGxvdyBuaWJibGUgb2YgYnl0ZSAwIHBsdXMgMOKAkzMgbW9yZSBieXRlcywgbW9zdCBzaWduaWZpY2FudCBmaXJzdCwgdGhlbiB0aGUgbmliYmxlIGxhc3Qg4oCUIHJlYWQgb2ZmIHRoZSBzcGVjJ3Mgd29ya2VkIGV4YW1wbGVzCiAqIChieXRlcyA1NSA1NiA1NyArIG5pYmJsZSBmIGlzIGxlbmd0aCAweDU1NTY1N2YpLiBUaGUgc2hvcnRlc3QgY29kZSB0aGF0IGhvbGRzIHRoZSBydW4gaXMgdXNlZC4KICogU1BFQy1HQVA6IHRoZSBkaWZmIGNodW5rJ3MgbWVhbmluZyBmb3IgYSBydW4gKGRvZXMgdGhlIHN0ZXAgYXBwbHkgb25jZSwgb3IgdG8gZXZlcnkgcGl4ZWw/KSBhbmQgaXRzIGZpcnN0LXBpeGVsIHN0YXJ0IHZhbHVlIGFyZSBub3Qgc3RhdGVkLCBzbyB0aGUgd3JpdGVyCiAqIGRvZXMgbm90IHVzZSBpdDsgcGxhaW4gcnVuIGNodW5rcyBhcmUgYWx3YXlzIHZhbGlkIHVuZGVyIHRoZSBzcGVjJ3MgdGFibGUsIGF0IHNvbWUgY29zdCBpbiBzaXplIG9uIGFudGlhbGlhc2VkIGVkZ2VzLgogKiBTUEVDLUdBUDogdGhlICI4LWJpdCBjaGVja3N1bSIgaGFzIG5vIGZvcm11bGEuIE92ZXIgZXZlcnkgYnl0ZSBhZnRlciB0aGUgMHg1NSBhbmQgYmVmb3JlIHRoZSBjaGVja3N1bSwgbW9kdWxvIDI1NjogJ3N1bScgaXMgdGhlIHBsYWluIHN1bSwgJ25lZ3N1bScgaXRzCiAqIHR3bydzIGNvbXBsZW1lbnQgKG9wdGlvbiBgY2hlY2tzdW1gKS4KICovCmZ1bmN0aW9uIGVuY29kZUltYWdlKGdyYXksIGNoZWNrc3VtKSB7CiAgY29uc3Qgb3V0ID0gWzB4NTVdOwogIGxldCBzdW0gPSAwOwogIGNvbnN0IHB1dCA9IChiKSA9PiB7IG91dC5wdXNoKGIpOyBzdW0gPSAoc3VtICsgYikgJiAweGZmOyB9OwogIGNvbnN0IG4gPSBncmF5Lmxlbmd0aDsKICBsZXQgaSA9IDA7CiAgd2hpbGUgKGkgPCBuKSB7CiAgICBjb25zdCB2YWwgPSBncmF5W2ldOwogICAgbGV0IGogPSBpICsgMTsKICAgIHdoaWxlIChqIDwgbiAmJiBncmF5W2pdID09PSB2YWwpIGorKzsKICAgIGZvciAobGV0IHJ1biA9IGogLSBpOyBydW4gPiAwOykgeyAgICAgICAgICAgICAgICAgICAgICAvLyBhIHJ1biBwYXN0IE1BWF9SVU4gaXMgc3BsaXQ7IGEgbGF5ZXIgbmV2ZXIgZ2V0cyBuZWFyIGl0CiAgICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKHJ1biwgTUFYX1JVTik7CiAgICAgIHJ1biAtPSBsZW47CiAgICAgIGNvbnN0IGNvZGUgPSBsZW4gPCAweDEwID8gMCA6IGxlbiA8IDB4MTAwMCA/IDEgOiBsZW4gPCAweDEwMDAwMCA/IDIgOiAzOwogICAgICBjb25zdCB0eXBlID0gdmFsID09PSAwID8gMCA6IHZhbCA9PT0gMjU1ID8gMyA6IDE7CiAgICAgIHB1dCgodHlwZSA8PCA2KSB8IChjb2RlIDw8IDQpIHwgKGxlbiAmIDB4MGYpKTsKICAgICAgaWYgKHR5cGUgPT09IDEpIHB1dCh2YWwpOwogICAgICBmb3IgKGxldCBrID0gY29kZTsgayA+IDA7IGstLSkgcHV0KChsZW4gPj4+ICg0ICsgOCAqIChrIC0gMSkpKSAmIDB4ZmYpOwogICAgfQogICAgaSA9IGo7CiAgfQogIG91dC5wdXNoKChjaGVja3N1bSA9PT0gJ3N1bScgPyBzdW0gOiAtc3VtKSAmIDB4ZmYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbWFnaWMgMHg1NSBpcyBub3QgaW4gdGhlIHN1bQogIHJldHVybiBVaW50OEFycmF5LmZyb20ob3V0KTsKfQoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlR29vKHNsaWNlZCwgbWV0YSA9IHt9KSB7CiAgY29uc3Qgb3B0ID0gb3B0aW9uc09mKG1ldGEub3B0aW9ucyksIExFID0gb3B0LmJ5dGVPcmRlciA9PT0gJ2xpdHRsZSc7CiAgY29uc3QgeyB3LCBoLCBjb3VudCB9ID0gc2xpY2VkOwogIGlmICghTnVtYmVyLmlzSW50ZWdlcih3KSB8fCAhTnVtYmVyLmlzSW50ZWdlcihoKSB8fCB3IDwgMSB8fCBoIDwgMSkgdGhyb3cgbmV3IEVycm9yKCdnb286IHRoZSBsYXllciBzaXplIG11c3QgYmUgd2hvbGUgcGl4ZWxzJyk7CiAgaWYgKHcgPiBNQVhfUFggfHwgaCA+IE1BWF9QWCkgdGhyb3cgbmV3IEVycm9yKGBnb286ICR7d30gw5cgJHtofSBweCBpcyB0b28gbGFyZ2U7IHRoZSBmb3JtYXQgaG9sZHMgYXQgbW9zdCAke01BWF9QWH0gcHggb24gZWFjaCBzaWRlYCk7CiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGNvdW50KSB8fCBjb3VudCA8IDEpIHRocm93IG5ldyBFcnJvcignZ29vOiB0aGVyZSBhcmUgbm8gbGF5ZXJzIHRvIHdyaXRlJyk7CiAgY29uc3QgcHIgPSBtZXRhLnByaW50ZXIgfHwge30sIHJzID0gbWV0YS5yZXNpbiB8fCB7fTsKICBjb25zdCBsYXllckggPSBudW0obWV0YS5sYXllckhlaWdodCwgc2xpY2VkLmxheWVySGVpZ2h0KTsKICBjb25zdCBib3R0b21OID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oY291bnQsIE1hdGgucm91bmQobnVtKHJzLmJvdHRvbUxheWVycykpKSk7CiAgY29uc3QgZXhwbyA9IG51bShycy5leHBvc3VyZSksIGJFeHBvID0gbnVtKHJzLmJvdHRvbUV4cG9zdXJlLCBleHBvKTsKICBjb25zdCBsaWZ0ID0gbnVtKHJzLmxpZnRIZWlnaHQpLCBsaWZ0ViA9IG51bShycy5saWZ0U3BlZWQpLCByZXRWID0gbnVtKHJzLnJldHJhY3RTcGVlZCksIG9mZiA9IG51bShycy5saWdodE9mZik7CiAgY29uc3QgcHdtID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKG51bShycy5wd20sIDI1NSkpKSk7CiAgY29uc3QgbW0gPSBzbGljZWQubW0gfHwgcHIubW0gfHwgWzAsIDBdOwogIGNvbnN0IHBsYXRaID0gbnVtKHByLm1tICYmIHByLm1tWzJdLCBjb3VudCAqIGxheWVySCk7ICAgLy8gU1BFQy1HQVA6ICJaIHNpemUgb2YgcGxhdGZvcm0iIGhhcyBubyBzb3VyY2UgaW4gdGhlIHBsYXRlOyB0aGUgcHJpbnRlcidzIGJ1aWxkIGhlaWdodCwgZWxzZSB0aGUgbW9kZWwncyBvd24gaGVpZ2h0CiAgY29uc3Qgdm9sTW0zID0gbnVtKG1ldGEudm9sdW1lTWwpICogMTAwMDsgICAgICAgICAgICAgICAgLy8gdGhlIG9uZSBjb252ZXJzaW9uOiB0aGUgcGxhdGUgaG9sZHMgbWlsbGlsaXRyZXMsIHRoZSBzcGVjIHdhbnRzIG1twrMgKDEgbWwgPSAxMDAwIG1twrMpCiAgY29uc3QgZ3JhbXMgPSBudW0obWV0YS52b2x1bWVNbCkgKiBudW0ocnMuZGVuc2l0eSwgMS4xKTsgLy8gd2VpZ2h0OiBtaWxsaWxpdHJlcyDDlyB0aGUgcmVzaW4ncyBkZW5zaXR5IChnL21sOyAxLjEgd2hlbiB0aGUgcHJvZmlsZSBoYXMgbm9uZSkKICBjb25zdCBwcmljZSA9IGdyYW1zIC8gMTAwMCAqIG51bShycy5wcmljZSk7ICAgICAgICAgICAgICAvLyBwcmljZTogcHJvZmlsZSBwcmljZSBpcyByZWFkIGFzIHBlciBraWxvZ3JhbTsgMCB3aGVuIHRoZSBwcm9maWxlIGhhcyBub25lCgogIGNvbnN0IHNtID0gcHJldmlldyhzbGljZWQsIFNNQUxMLCBMRSksIGJpZyA9IHByZXZpZXcoc2xpY2VkLCBCSUcsIExFKTsKICBjb25zdCBoZCA9IG5ldyBPdXQoMiAqIChTTUFMTCAqIFNNQUxMICsgQklHICogQklHKSArIDEwMjQsIExFKTsgICAvLyByb29teTsgdHJpbW1lZCB0byB3aGF0IHdhcyB3cml0dGVuIGJlbG93CiAgaGQuc3RyKFZFUlNJT04sIDUpOyBoZC5vIC09IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIDQgY2hhcmFjdGVycyBmaWxsIHRoZSB3aG9sZSBmaWVsZDsgbm8gY2xvc2luZyB6ZXJvIGhlcmUKICBoZC5ieXRlcyhNQUdJQyk7CiAgaGQuc3RyKCdDYWRDcmFmdCcsIDMyKTsKICBoZC5zdHIobWV0YS5zb2Z0d2FyZVZlcnNpb24gfHwgJzAuOScsIDI0KTsKICBoZC5zdHIoc3RhbXAobWV0YS50aW1lIGluc3RhbmNlb2YgRGF0ZSA/IG1ldGEudGltZSA6IG5ldyBEYXRlKCkpLCAyNCk7CiAgaGQuc3RyKHByLm5hbWUgfHwgcHIuaWQsIDMyKTsKICBoZC5zdHIocHIudHlwZSB8fCBwci5pZCwgMzIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTUEVDLUdBUDogIlByaW50ZXIgdHlwZSIgaXMgbm90IGV4cGxhaW5lZDsgdGhlIHByaW50ZXIncyBpZCBpcyB0aGUgc3RhYmxlIHNob3J0IG5hbWUKICBoZC5zdHIocnMubmFtZSwgMzIpOwogIGhkLmkxNigxKTsgICAgICAgLy8gU1BFQy1HQVA6ICJBbnRpLWFsaWFzaW5nIGxldmVsIHNldHRpbmcgYnkgc2xpY2VyIjogQ2FkQ3JhZnQncyBsYXllcnMgY2FycnkgdGhlaXIgb3duIGdyZXkgZWRnZSwgd3JpdHRlbiBhcyBsZXZlbCAxCiAgaGQuaTE2KDI1NSk7ICAgICAvLyBTUEVDLUdBUDogIkdyZXkgbGV2ZWwiIGlzIG5vdCBleHBsYWluZWQ7IDI1NSwgdGhlIHRvcCB2YWx1ZSBhIHBpeGVsIGhlcmUgY2FuIHRha2UKICBoZC5pMTYoMCk7ICAgICAgIC8vIGJsdXIgbGV2ZWw6IG5vbmUgYXBwbGllZAogIGhkLmJ5dGVzKHNtKTsgaGQuYnl0ZXMoQ1JMRik7IGhkLmJ5dGVzKGJpZyk7IGhkLmJ5dGVzKENSTEYpOwogIGhkLmkzMihjb3VudCk7CiAgaGQuaTE2KHcpOyBoZC5pMTYoaCk7CiAgaGQudTgocHIuZmxpcCAmJiBwci5mbGlwLnggPyAxIDogMCk7IGhkLnU4KHByLmZsaXAgJiYgcHIuZmxpcC55ID8gMSA6IDApOwogIGhkLmYzMihudW0obW1bMF0pKTsgaGQuZjMyKG51bShtbVsxXSkpOyBoZC5mMzIocGxhdFopOwogIGhkLmYzMihsYXllckgpOwogIGhkLmYzMihleHBvKTsKICAvLyBTUEVDLUdBUDogIkV4cG9zdXJlIGRlbGF5IG1vZGUiIDEgPSBzdGF0aWMgdGltZSwgMCA9ICJ0dXJuIG9mZiB0aW1lIi4gVGhlIHByb2ZpbGUncyBvbmUgbGlnaHQtb2ZmIGRlbGF5IGlzIGV4YWN0bHkgdGhlIHR1cm4tb2ZmIHRpbWUsIHNvIG1vZGUgMCBhbmQgdGhlCiAgLy8gcGVyLXBoYXNlIHdhaXRzIChiZWZvcmUgbGlmdCwgYWZ0ZXIgbGlmdCwgYWZ0ZXIgcmV0cmFjdCkgYXJlIHdyaXR0ZW4gYXMgMC4KICBoZC51OCgwKTsKICBoZC5mMzIob2ZmKTsKICBoZC5mMzIoMCk7IGhkLmYzMigwKTsgaGQuZjMyKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3R0b206IGJlZm9yZSBsaWZ0LCBhZnRlciBsaWZ0LCBhZnRlciByZXRyYWN0CiAgaGQuZjMyKDApOyBoZC5mMzIoMCk7IGhkLmYzMigwKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tbW9uOiBiZWZvcmUgbGlmdCwgYWZ0ZXIgbGlmdCwgYWZ0ZXIgcmV0cmFjdAogIGhkLmYzMihiRXhwbyk7IGhkLmkzMihib3R0b21OKTsKICAvLyBTUEVDLUdBUDogdGhlIHByb2ZpbGUgaGFzIG9uZSBsaWZ0IChhbmQgb25lIHNwZWVkKSBmb3IgZXZlcnkgbGF5ZXIsIGFuZCBubyBzZWNvbmQgc3RhZ2U7IGJvdHRvbSBsYXllcnMgdXNlIHRoZSBzYW1lLiBUaGUgcmV0cmFjdCBkaXN0YW5jZSBpcyB3cml0dGVuCiAgLy8gZXF1YWwgdG8gdGhlIGxpZnQgZGlzdGFuY2UgKHRoZSBoZWFkIHJldHVybnMgdG8gd2hlcmUgaXQgbGVmdCkuIFNlY29uZC1zdGFnZSBkaXN0YW5jZXMgYXJlIDAgYW5kIGNhcnJ5IHRoZSBmaXJzdCBzdGFnZSdzIHNwZWVkLgogIGhkLmYzMihsaWZ0KTsgaGQuZjMyKGxpZnRWKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvdHRvbSBsaWZ0IGRpc3RhbmNlLCBzcGVlZAogIGhkLmYzMihsaWZ0KTsgaGQuZjMyKGxpZnRWKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpZnQgZGlzdGFuY2UsIHNwZWVkCiAgaGQuZjMyKGxpZnQpOyBoZC5mMzIocmV0Vik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYm90dG9tIHJldHJhY3QgZGlzdGFuY2UsIHNwZWVkCiAgaGQuZjMyKGxpZnQpOyBoZC5mMzIocmV0Vik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0cmFjdCBkaXN0YW5jZSwgc3BlZWQKICBoZC5mMzIoMCk7IGhkLmYzMihsaWZ0Vik7IGhkLmYzMigwKTsgaGQuZjMyKGxpZnRWKTsgICAgICAvLyBib3R0b20gc2Vjb25kIGxpZnQsIHNlY29uZCBsaWZ0OiBkaXN0YW5jZSwgc3BlZWQKICBoZC5mMzIoMCk7IGhkLmYzMihyZXRWKTsgaGQuZjMyKDApOyBoZC5mMzIocmV0Vik7ICAgICAgICAvLyBib3R0b20gc2Vjb25kIHJldHJhY3QsIHNlY29uZCByZXRyYWN0OiBkaXN0YW5jZSwgc3BlZWQKICBoZC5pMTYocHdtKTsgaGQuaTE2KHB3bSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3R0b20gbGlnaHQgUFdNLCBsaWdodCBQV00gKDDigJMyNTU7IHRoZSBwcm9maWxlIGhhcyBubyBwb3dlciwgc28gZnVsbCkKICBoZC51OCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZHZhbmNlIG1vZGU6IG5vcm1hbCAodGhlIGhlYWRlciB2YWx1ZXMgYXBwbHk7IHRoZSBwZXItbGF5ZXIgdmFsdWVzIHJlcGVhdCB0aGVtKQogIGhkLmkzMihNYXRoLnJvdW5kKG51bShtZXRhLnNlY29uZHMpKSk7CiAgaGQuZjMyKHZvbE1tMyk7IGhkLmYzMihncmFtcyk7IGhkLmYzMihwcmljZSk7CiAgaGQuc3RyKCckJywgOCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU1BFQy1HQVA6IHByaWNlIHVuaXQ7IHRoZSBwcm9maWxlJ3MgcHJpY2UgaXMgZG9sbGFycwogIGNvbnN0IG9mZkF0ID0gaGQubzsgaGQuaTMyKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCBvZiB0aGUgZmlyc3QgbGF5ZXIsIGZpbGxlZCBpbiBiZWxvdwogIGhkLnU4KDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdyYXkgc2NhbGUgbGV2ZWwgMTogcGl4ZWwgdmFsdWVzIDB4MDDigJMweGZmCiAgaGQuaTE2KDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBsYXllcnM6IG5vbmUKICBjb25zdCBIRUFEID0gaGQubzsKICBoZC52LnNldEludDMyKG9mZkF0LCBIRUFELCBMRSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTUEVDLUdBUDogdGhlIG9mZnNldCBpcyBjb3VudGVkIGZyb20gdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGZpbGUsIHRoZSBzdGFydCBvZiB0aGUgZmlyc3QgbGF5ZXIgZGVmaW5pdGlvbgoKICBjb25zdCBwYXJ0cyA9IFtoZC5iLnNsaWNlKDAsIEhFQUQpXTsKICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgIGNvbnN0IGcgPSBzbGljZWQubGF5ZXIoaSk7CiAgICBpZiAoIWcgfHwgZy5sZW5ndGggIT09IHcgKiBoKSB0aHJvdyBuZXcgRXJyb3IoYGdvbzogbGF5ZXIgJHtpfSBpcyBub3QgJHt3fSDDlyAke2h9YCk7CiAgICBjb25zdCBib3R0b20gPSBpIDwgYm90dG9tTjsKICAgIGNvbnN0IGltZyA9IGVuY29kZUltYWdlKGcsIG9wdC5jaGVja3N1bSk7CiAgICBjb25zdCBsZCA9IG5ldyBPdXQoNjYgKyA0LCBMRSk7CiAgICBsZC5pMTYoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGF1c2UgZmxhZzogMCwgbm8gcGF1c2UKICAgIGxkLmYzMigwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXVzZSBwb3NpdGlvbiBaCiAgICBsZC5mMzIoTWF0aC5mcm91bmQoKGkgKyAxKSAqIGxheWVySCkpOyAgICAgICAgICAgICAgICAgLy8gU1BFQy1HQVA6ICJsYXllciBwb3NpdGlvbiBaLCB0aGUgaGVpZ2h0IG9mIGN1cnJlbnQgbGF5ZXIiOiB0aGUgdG9wIG9mIHRoaXMgbGF5ZXIsIChpICsgMSkgw5cgdGhpY2tuZXNzCiAgICBsZC5mMzIoYm90dG9tID8gYkV4cG8gOiBleHBvKTsKICAgIGxkLmYzMihvZmYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsYXllciBvZmYgdGltZSAodXNlZCBpbiBtb2RlIDApCiAgICBsZC5mMzIoMCk7IGxkLmYzMigwKTsgbGQuZjMyKDApOyAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVmb3JlIGxpZnQsIGFmdGVyIGxpZnQsIGFmdGVyIHJldHJhY3QgKHVzZWQgaW4gbW9kZSAxKQogICAgbGQuZjMyKGxpZnQpOyBsZC5mMzIobGlmdFYpOyBsZC5mMzIoMCk7IGxkLmYzMihsaWZ0Vik7CiAgICBsZC5mMzIobGlmdCk7IGxkLmYzMihyZXRWKTsgbGQuZjMyKDApOyBsZC5mMzIocmV0Vik7CiAgICBsZC5pMTYocHdtKTsKICAgIGxkLmJ5dGVzKENSTEYpOwogICAgbGQuaTMyKGltZy5sZW5ndGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNQRUMtR0FQOiAic2l6ZSBvZiBlbmNvZGVkIGltYWdlIGRhdGEiIGlzIGNvdW50ZWQgb3ZlciB0aGUgd2hvbGUgaW1hZ2UtZGF0YSBmaWVsZDogMHg1NSwgY2h1bmtzIGFuZCBjaGVja3N1bQogICAgcGFydHMucHVzaChsZC5iLCBpbWcsIFVpbnQ4QXJyYXkuZnJvbShDUkxGKSk7CiAgICBpZiAobWV0YS5vblByb2dyZXNzICYmIChpICYgMzEpID09PSAzMSkgeyBtZXRhLm9uUHJvZ3Jlc3MoKGkgKyAxKSAvIGNvdW50KTsgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7IH0KICB9CiAgcGFydHMucHVzaChVaW50OEFycmF5LmZyb20oRU5ESU5HKSk7CiAgY29uc3QgdG90YWwgPSBwYXJ0cy5yZWR1Y2UoKHMsIHApID0+IHMgKyBwLmxlbmd0aCwgMCksIG91dCA9IG5ldyBVaW50OEFycmF5KHRvdGFsKTsKICBsZXQgYXQgPSAwOwogIGZvciAoY29uc3QgcCBvZiBwYXJ0cykgeyBvdXQuc2V0KHAsIGF0KTsgYXQgKz0gcC5sZW5ndGg7IH0KICByZXR1cm4gb3V0Owp9Cg=="},"signature":{"alg":"Ed25519","key":"cc-addons-2026-1","sig":"fq+JgyEXi65G+Z78QHrT0btdAVGi+WvLc5jsCPWNm/cmxOTw55ZkpPS7s3OQ9HcnpXCEkkilIn5KJQSKvt6yAA=="}}