paywallBundle top-level property

MasonBundle paywallBundle
final

Implementation

final paywallBundle = MasonBundle.fromJson(<String, dynamic>{
  "files": [
    {
      "path": "lib/features/paywall/paywall_card.dart",
      "data":
          "aW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvbWF0ZXJpYWwuZGFydCc7CgppbXBvcnQgJ3BheXdhbGxfd2lkZ2V0cy5kYXJ0JzsKCi8vLyBUaGUgbmFtZSBvZiB0aGUgYXBwLCBhcyB0aGUgY2FyZCBzaG93cyBpdC4KY29uc3QgX2FwcE5hbWUgPSAne3thcHBfbmFtZS50aXRsZUNhc2UoKX19JzsKCi8vLyBUaGUgc3ltYm9sIG9mIHRoZSBhcHAgaW4gaXRzIGNlbGwsIGFzIGFuIGVsZW1lbnQgb2YgdGhlIHBlcmlvZGljIHRhYmxlCi8vLyBoYXMgb25lOiB0aGUgZmlyc3QgbGV0dGVycyBvZiB0aGUgZmlyc3QgdHdvIHdvcmRzIG9mIGl0cyBuYW1lLCBvciB0aGUKLy8vIGZpcnN0IHR3byBsZXR0ZXJzIG9mIGEgbmFtZSBvZiBvbmUgd29yZC4KY29uc3QgX2FwcFN5bWJvbCA9IHt7e2FwcF9zeW1ib2x9fX07CgovLy8gVGhlIG51bWJlciBpbiB0aGUgY2VsbCBvZiB0aGUgYXBwOiBob3cgbWFueSBsZXR0ZXJzIGFuZCBkaWdpdHMgaXRzIG5hbWUKLy8vIGhhcy4KY29uc3QgX2FwcE51bWJlciA9IHt7YXBwX251bWJlcn19OwoKLy8vIFRoZSBjb2xvdXJzIG9mIFNheSBNeSBGcmFtZSwgd2hpY2ggdGhlIGNhcmQga2VlcHMgaW4gdGhlIGxpZ2h0IGFuZCBpbgovLy8gdGhlIGRhcmsgdGhlbWUsIGFzIHRoZSBzdGFydCBzY3JlZW4gb2YgU01GIGRvZXMuCmNvbnN0IF9icmFuZEdyZWVuID0gQ29sb3IoMHhGRjBGMzMyNik7CmNvbnN0IF9icmFuZENyZWFtID0gQ29sb3IoMHhGRkYxRjFFOCk7CmNvbnN0IF9icmFuZEFjY2VudCA9IENvbG9yKDB4RkY0QURFODApOwoKLy8vIFRoZSBzaWRlIG9mIHRoZSBjZWxsIG9mIHRoZSBhcHAgaW4gdGhlIGNhcmQsIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBjZWxsCi8vLyBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBjYXJkLCB0aGUgc2lkZSBvZiBhIGNlbGwgb2YgdGhlIHRhYmxlIG9uIHRoZSByaWdodAovLy8gb2YgdGhlIGNhcmQsIHRoZSBzcGFjZSBiZXR3ZWVuIHR3byBvZiB0aGVtLCBhbmQgdGhlaXIgc3BhY2UgZnJvbSB0aGUKLy8vIGVkZ2VzIG9mIHRoZSBjYXJkLgpjb25zdCBfY2VsbFNpZGUgPSA3Ni4wOwpjb25zdCBfY2FyZFBhZGRpbmcgPSAyMi4wOwpjb25zdCBfdGFibGVDZWxsID0gNDAuMDsKY29uc3QgX3RhYmxlR2FwID0gOC4wOwpjb25zdCBfdGFibGVJbnNldCA9IDIwLjA7CgovLy8gVGhlIGNhcmQgaW4gdGhlIGNvbG91cnMgb2YgU2F5IE15IEZyYW1lIGF0IHRoZSB0b3Agb2YgdGhlIHBheXdhbGwgYW5kIG9mCi8vLyB0aGUgc2NyZWVuIG9mIHRoZSBzdWJzY3JpcHRpb246IHRoZSBhcHAgYXMgYW4gZWxlbWVudCBvZiBhIHRhYmxlLCBpdHMKLy8vIG5hbWUgd2l0aCBgUHJlbWl1bWAgYWJvdmUgaXQsIGFuZCBvbiB0aGUgcmlnaHQgdGhlIGNlbGxzIG9mIGEgdGFibGUgdGhhdAovLy8gbGlnaHQgdXAgb25lIGFmdGVyIGFub3RoZXIgd2hpbGUgW2FuaW1hdGlvbl0gcnVucyBhbmQgZW5kIGluIGEgY2VsbCBpbgovLy8gdGhlIGFjY2VudCB3aXRoIHRoZSBpY29uIG9mIHByZW1pdW0gYWNjZXNzLCB3aGljaCBncm93cyBhIGxpdHRsZSBvbmNlOgovLy8gdGhlIHRhYmxlIHVubG9ja3MuCi8vLwovLy8gV2l0aCBbYmFkZ2VdLCBzdWNoIGFzIGBVbmxvY2tlZGAsIGl0IHNob3dzIHRoZSBiYWRnZSBuZXh0IHRvIGBQcmVtaXVtYC4KLy8vIEEgc2NyZWVuIHJlYWRlciByZWFkcyB0aGUgbmFtZSB3aXRoIGBQcmVtaXVtYCBhcyBhIGhlYWRlci4KY2xhc3MgUHJlbWl1bUNhcmQgZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIC8vLyBDcmVhdGVzIHRoZSBjYXJkLgogIGNvbnN0IFByZW1pdW1DYXJkKHsKICAgIHJlcXVpcmVkIHRoaXMuYW5pbWF0aW9uLAogICAgcmVxdWlyZWQgdGhpcy5wcmVtaXVtLAogICAgdGhpcy5iYWRnZSwKICAgIHN1cGVyLmtleSwKICB9KTsKCiAgLy8vIFRoZSBlbnRyYW5jZSBvZiB0aGUgY2FyZCwgZnJvbSAwIHRvIDEuCiAgZmluYWwgQW5pbWF0aW9uPGRvdWJsZT4gYW5pbWF0aW9uOwoKICAvLy8gVGhlIHRleHQgYFByZW1pdW1gIGluIHRoZSBsYW5ndWFnZSBvZiB0aGUgYXBwLgogIGZpbmFsIFN0cmluZyBwcmVtaXVtOwoKICAvLy8gVGhlIHRleHQgb2YgdGhlIGJhZGdlIG5leHQgdG8gYFByZW1pdW1gLCBvciBgbnVsbGAuCiAgZmluYWwgU3RyaW5nPyBiYWRnZTsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICBmaW5hbCB0aGVtZSA9IFRoZW1lLm9mKGNvbnRleHQpOwogICAgZmluYWwgYmFkZ2UgPSB0aGlzLmJhZGdlOwogICAgcmV0dXJuIERlY29yYXRlZEJveCgKICAgICAgZGVjb3JhdGlvbjogQm94RGVjb3JhdGlvbigKICAgICAgICBjb2xvcjogX2JyYW5kR3JlZW4sCiAgICAgICAgYm9yZGVyUmFkaXVzOiBCb3JkZXJSYWRpdXMuY2lyY3VsYXIoMjgpLAogICAgICApLAogICAgICBjaGlsZDogQ2xpcFJSZWN0KAogICAgICAgIGJvcmRlclJhZGl1czogQm9yZGVyUmFkaXVzLmNpcmN1bGFyKDI4KSwKICAgICAgICBjaGlsZDogU3RhY2soCiAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICBQb3NpdGlvbmVkLmZpbGwoCiAgICAgICAgICAgICAgY2hpbGQ6IEV4Y2x1ZGVTZW1hbnRpY3MoCiAgICAgICAgICAgICAgICBjaGlsZDogQ3VzdG9tUGFpbnQocGFpbnRlcjogX1RhYmxlUGFpbnRlcihhbmltYXRpb24pKSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICApLAogICAgICAgICAgICBQb3NpdGlvbmVkRGlyZWN0aW9uYWwoCiAgICAgICAgICAgICAgdG9wOiBfdGFibGVJbnNldCwKICAgICAgICAgICAgICBlbmQ6IF90YWJsZUluc2V0LAogICAgICAgICAgICAgIGNoaWxkOiBfVW5sb2NrQ2VsbChhbmltYXRpb246IGFuaW1hdGlvbiksCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFBhZGRpbmcoCiAgICAgICAgICAgICAgcGFkZGluZzogY29uc3QgRWRnZUluc2V0cy5hbGwoX2NhcmRQYWRkaW5nKSwKICAgICAgICAgICAgICBjaGlsZDogQ29sdW1uKAogICAgICAgICAgICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBDcm9zc0F4aXNBbGlnbm1lbnQuc3RhcnQsCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICAgICAgICBjb25zdCBfRWxlbWVudENlbGwoKSwKICAgICAgICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiA0MCksCiAgICAgICAgICAgICAgICAgIFNlbWFudGljcygKICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICckX2FwcE5hbWUgJHByZW1pdW0nLAogICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVTZW1hbnRpY3M6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IENvbHVtbigKICAgICAgICAgICAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICAgICAgICAgICAgV3JhcCgKICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICBydW5TcGFjaW5nOiA2LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogV3JhcENyb3NzQWxpZ25tZW50LmNlbnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBsYWJlbCwgd2hpY2ggZ3Jvd3Mgb25seSBieSBoYWxmIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0IHNpemUgb2YgdGhlIGRldmljZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhUXVlcnkud2l0aENsYW1wZWRUZXh0U2NhbGluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2NhbGVGYWN0b3I6IDEuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IFRleHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWl1bS50b1VwcGVyQ2FzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBtb25vc3BhY2UuY29weVdpdGgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0Lnc2MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IF9icmFuZEFjY2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWRnZSAhPSBudWxsKSBfQmFkZ2UoYmFkZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogNiksCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuYW1lIGlzIGxhcmdlIGFscmVhZHksIHNvIGl0IGdyb3dzIG9ubHkgYnkKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFsZiB3aXRoIHRoZSB0ZXh0IHNpemUgb2YgdGhlIGRldmljZS4KICAgICAgICAgICAgICAgICAgICAgICAgUGF5d2FsbFdvcmRzKAogICAgICAgICAgICAgICAgICAgICAgICAgIF9hcHBOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0aGVtZS50ZXh0VGhlbWUuaGVhZGxpbmVNZWRpdW0/LmNvcHlXaXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IF9icmFuZENyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogRm9udFdlaWdodC53NjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2NhbGVGYWN0b3I6IDEuNSwKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgKSwKICAgICAgKSwKICAgICk7CiAgfQp9CgovLy8gVGhlIGJhZGdlIG9mIGEgW1ByZW1pdW1DYXJkXSwgc3VjaCBhcyBgVW5sb2NrZWRgOiB0aGUgdGV4dCBpbiB0aGUKLy8vIGFjY2VudCBvZiBTYXkgTXkgRnJhbWUgaW4gYSBwaWxsIG9mIHRoYXQgYWNjZW50LgpjbGFzcyBfQmFkZ2UgZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIGNvbnN0IF9CYWRnZSh0aGlzLnRleHQpOwoKICBmaW5hbCBTdHJpbmcgdGV4dDsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSA9PiBEZWNvcmF0ZWRCb3goCiAgICBkZWNvcmF0aW9uOiBCb3hEZWNvcmF0aW9uKAogICAgICBjb2xvcjogX2JyYW5kQWNjZW50LndpdGhWYWx1ZXMoYWxwaGE6IDAuMTYpLAogICAgICBib3JkZXJSYWRpdXM6IEJvcmRlclJhZGl1cy5jaXJjdWxhcig5OTkpLAogICAgICBib3JkZXI6IEJvcmRlci5hbGwoY29sb3I6IF9icmFuZEFjY2VudC53aXRoVmFsdWVzKGFscGhhOiAwLjUpKSwKICAgICksCiAgICBjaGlsZDogUGFkZGluZygKICAgICAgcGFkZGluZzogY29uc3QgRWRnZUluc2V0cy5zeW1tZXRyaWMoaG9yaXpvbnRhbDogMTAsIHZlcnRpY2FsOiAzKSwKICAgICAgY2hpbGQ6IFJvdygKICAgICAgICBtYWluQXhpc1NpemU6IE1haW5BeGlzU2l6ZS5taW4sCiAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgIGNvbnN0IEljb24oSWNvbnMuY2hlY2tfcm91bmRlZCwgc2l6ZTogMTQsIGNvbG9yOiBfYnJhbmRBY2NlbnQpLAogICAgICAgICAgY29uc3QgU2l6ZWRCb3god2lkdGg6IDQpLAogICAgICAgICAgVGV4dCgKICAgICAgICAgICAgdGV4dCwKICAgICAgICAgICAgc3R5bGU6IFRoZW1lLm9mKGNvbnRleHQpLnRleHRUaGVtZS5sYWJlbE1lZGl1bT8uY29weVdpdGgoCiAgICAgICAgICAgICAgY29sb3I6IF9icmFuZEFjY2VudCwKICAgICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0Lnc2MDAsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICksCiAgICApLAogICk7Cn0KCi8vLyBUaGUgY2VsbCBvZiB0aGUgYXBwLCB3aXRoIGl0cyBzeW1ib2wgYW5kIGl0cyBudW1iZXIsIGFzIHRoZSBtYXJrIG9mIFNheQovLy8gTXkgRnJhbWUgaGFzIG9uZS4KLy8vCi8vLyBJdCBpcyBhIHBpY3R1cmUgb2YgdGhlIGFwcCwgd2hvc2UgbmFtZSB0aGUgY2FyZCB0ZWxscyBiZWxvdyBpdC4gU28gaXRzCi8vLyBsZXR0ZXJzIGtlZXAgdGhlaXIgc2l6ZSB3aGVuIHRoZSB0ZXh0IG9mIHRoZSBkZXZpY2UgaXMgbGFyZ2VyLCBhbmQgYQovLy8gc2NyZWVuIHJlYWRlciBwYXNzZXMgaXQgYnkuCmNsYXNzIF9FbGVtZW50Q2VsbCBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgY29uc3QgX0VsZW1lbnRDZWxsKCk7CgogIEBvdmVycmlkZQogIFdpZGdldCBidWlsZChCdWlsZENvbnRleHQgY29udGV4dCkgewogICAgZmluYWwgdGhlbWUgPSBUaGVtZS5vZihjb250ZXh0KTsKICAgIHJldHVybiBFeGNsdWRlU2VtYW50aWNzKAogICAgICBjaGlsZDogTWVkaWFRdWVyeS53aXRoTm9UZXh0U2NhbGluZygKICAgICAgICBjaGlsZDogQ29udGFpbmVyKAogICAgICAgICAgd2lkdGg6IF9jZWxsU2lkZSwKICAgICAgICAgIGhlaWdodDogX2NlbGxTaWRlLAogICAgICAgICAgZGVjb3JhdGlvbjogQm94RGVjb3JhdGlvbigKICAgICAgICAgICAgY29sb3I6IF9icmFuZEdyZWVuLAogICAgICAgICAgICBib3JkZXI6IEJvcmRlci5hbGwoY29sb3I6IF9icmFuZENyZWFtLCB3aWR0aDogMS41KSwKICAgICAgICAgICksCiAgICAgICAgICBjaGlsZDogU3RhY2soCiAgICAgICAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgICAgICAgUG9zaXRpb25lZERpcmVjdGlvbmFsKAogICAgICAgICAgICAgICAgdG9wOiA1LAogICAgICAgICAgICAgICAgZW5kOiA3LAogICAgICAgICAgICAgICAgY2hpbGQ6IFRleHQoCiAgICAgICAgICAgICAgICAgICckX2FwcE51bWJlcicsCiAgICAgICAgICAgICAgICAgIHN0eWxlOiBtb25vc3BhY2UuY29weVdpdGgoCiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDEwLAogICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IEZvbnRXZWlnaHQudzUwMCwKICAgICAgICAgICAgICAgICAgICBjb2xvcjogX2JyYW5kQ3JlYW0sCiAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgQ2VudGVyKAogICAgICAgICAgICAgICAgY2hpbGQ6IFRleHQoCiAgICAgICAgICAgICAgICAgIF9hcHBTeW1ib2wsCiAgICAgICAgICAgICAgICAgIHN0eWxlOiB0aGVtZS50ZXh0VGhlbWUuYm9keU1lZGl1bT8uY29weVdpdGgoCiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDM2LAogICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IEZvbnRXZWlnaHQudzUwMCwKICAgICAgICAgICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiAtMS4yLAogICAgICAgICAgICAgICAgICAgIGNvbG9yOiBfYnJhbmRDcmVhbSwKICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICksCiAgICAgICAgKSwKICAgICAgKSwKICAgICk7CiAgfQp9CgovLy8gVGhlIGNlbGwgYXQgdGhlIHRvcCBvZiB0aGUgdGFibGUgb2YgYSBbUHJlbWl1bUNhcmRdOiBpdCBmaWxscyB3aXRoIHRoZQovLy8gYWNjZW50IG9mIFNheSBNeSBGcmFtZSBvbmNlIHRoZSBvdGhlciBjZWxscyBsaXQgdXAsIHdpdGggdGhlIGljb24gb2YKLy8vIHByZW1pdW0gYWNjZXNzLCB3aGljaCBncm93cyBhIGxpdHRsZSBhbmQgYmFjayBvbmNlLgpjbGFzcyBfVW5sb2NrQ2VsbCBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgY29uc3QgX1VubG9ja0NlbGwoe3JlcXVpcmVkIHRoaXMuYW5pbWF0aW9ufSk7CgogIGZpbmFsIEFuaW1hdGlvbjxkb3VibGU+IGFuaW1hdGlvbjsKCiAgLy8vIFdoZW4gdGhlIGNlbGwgZmlsbHMsIGFuZCB3aGVuIGl0IGdyb3dzIGFuZCBjb21lcyBiYWNrLCBpbiB0aGUKICAvLy8gZW50cmFuY2Ugb2YgdGhlIGNhcmQuCiAgc3RhdGljIGNvbnN0IF9maWxsID0gSW50ZXJ2YWwoMC42LCAwLjc4LCBjdXJ2ZTogQ3VydmVzLmVhc2VPdXQpOwogIHN0YXRpYyBmaW5hbCBfZ3JvdyA9IFR3ZWVuU2VxdWVuY2U8ZG91YmxlPihbCiAgICBUd2VlblNlcXVlbmNlSXRlbSgKICAgICAgdHdlZW46IFR3ZWVuPGRvdWJsZT4oYmVnaW46IDEsIGVuZDogMS4wNikuY2hhaW4oQ3VydmVUd2VlbihjdXJ2ZTogQ3VydmVzLmVhc2VPdXQpKSwKICAgICAgd2VpZ2h0OiAxLAogICAgKSwKICAgIFR3ZWVuU2VxdWVuY2VJdGVtKAogICAgICB0d2VlbjogVHdlZW48ZG91YmxlPihiZWdpbjogMS4wNiwgZW5kOiAxKS5jaGFpbihDdXJ2ZVR3ZWVuKGN1cnZlOiBDdXJ2ZXMuZWFzZUluKSksCiAgICAgIHdlaWdodDogMSwKICAgICksCiAgXSkuY2hhaW4oQ3VydmVUd2VlbihjdXJ2ZTogY29uc3QgSW50ZXJ2YWwoMC43NCwgMSkpKTsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSA9PiBFeGNsdWRlU2VtYW50aWNzKAogICAgY2hpbGQ6IEFuaW1hdGVkQnVpbGRlcigKICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24sCiAgICAgIGJ1aWxkZXI6IChjb250ZXh0LCBfKSB7CiAgICAgICAgZmluYWwgZmlsbGVkID0gX2ZpbGwudHJhbnNmb3JtKGFuaW1hdGlvbi52YWx1ZSk7CiAgICAgICAgcmV0dXJuIFRyYW5zZm9ybS5zY2FsZSgKICAgICAgICAgIHNjYWxlOiBfZ3Jvdy50cmFuc2Zvcm0oYW5pbWF0aW9uLnZhbHVlKSwKICAgICAgICAgIGNoaWxkOiBDb250YWluZXIoCiAgICAgICAgICAgIHdpZHRoOiBfdGFibGVDZWxsLAogICAgICAgICAgICBoZWlnaHQ6IF90YWJsZUNlbGwsCiAgICAgICAgICAgIGRlY29yYXRpb246IEJveERlY29yYXRpb24oCiAgICAgICAgICAgICAgY29sb3I6IF9icmFuZEFjY2VudC53aXRoVmFsdWVzKGFscGhhOiBmaWxsZWQpLAogICAgICAgICAgICAgIGJvcmRlcjogQm9yZGVyLmFsbCgKICAgICAgICAgICAgICAgIGNvbG9yOiBfYnJhbmRDcmVhbS53aXRoVmFsdWVzKGFscGhhOiAwLjE0ICsgMC44NiAqIGZpbGxlZCksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgY2hpbGQ6IE9wYWNpdHkoCiAgICAgICAgICAgICAgb3BhY2l0eTogZmlsbGVkLAogICAgICAgICAgICAgIGNoaWxkOiBjb25zdCBJY29uKAogICAgICAgICAgICAgICAgSWNvbnMud29ya3NwYWNlX3ByZW1pdW1fcm91bmRlZCwKICAgICAgICAgICAgICAgIHNpemU6IDI0LAogICAgICAgICAgICAgICAgY29sb3I6IF9icmFuZEdyZWVuLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0sCiAgICApLAogICk7Cn0KCi8vLyBUaGUgY2VsbHMgb2YgYSB0YWJsZSBvbiB0aGUgcmlnaHQgb2YgYSBbUHJlbWl1bUNhcmRdLCBidXQgZm9yIHRoZSBjZWxsCi8vLyBhdCBpdHMgdG9wIHJpZ2h0LCB3aGljaCBbX1VubG9ja0NlbGxdIGlzOiBvdXRsaW5lcywgc29tZSBvZiB3aGljaCBsaWdodAovLy8gdXAgb25lIGFmdGVyIGFub3RoZXIgd2hpbGUgW2FuaW1hdGlvbl0gcnVucy4KY2xhc3MgX1RhYmxlUGFpbnRlciBleHRlbmRzIEN1c3RvbVBhaW50ZXIgewogIF9UYWJsZVBhaW50ZXIodGhpcy5hbmltYXRpb24pIDogc3VwZXIocmVwYWludDogYW5pbWF0aW9uKTsKCiAgZmluYWwgQW5pbWF0aW9uPGRvdWJsZT4gYW5pbWF0aW9uOwoKICAvLy8gVGhlIGNlbGxzIHRoYXQgbGlnaHQgdXAsIGJ5IGNvbHVtbiBmcm9tIHRoZSByaWdodCBhbmQgcm93IGZyb20gdGhlCiAgLy8vIHRvcCwgZWFjaCB3aXRoIGl0cyBjb2xvdXIgYW5kIHRoZSBvcmRlciBpbiB3aGljaCBpdCBsaWdodHMgdXAuCiAgc3RhdGljIGNvbnN0IF9saXQgPSA8KGludCwgaW50LCBDb2xvciwgaW50KT5bCiAgICAoMiwgMSwgQ29sb3IoMHgzM0YxRjFFOCksIDApLAogICAgKDEsIDIsIENvbG9yKDB4NjY0QURFODApLCAxKSwKICAgICgzLCAwLCBDb2xvcigweDFGRjFGMUU4KSwgMiksCiAgICAoMSwgMSwgQ29sb3IoMHg5OTRBREU4MCksIDMpLAogICAgKDAsIDEsIENvbG9yKDB4MzNGMUYxRTgpLCA0KSwKICBdOwoKICBAb3ZlcnJpZGUKICB2b2lkIHBhaW50KENhbnZhcyBjYW52YXMsIFNpemUgc2l6ZSkgewogICAgZmluYWwgb3V0bGluZSA9IFBhaW50KCkKICAgICAgLi5zdHlsZSA9IFBhaW50aW5nU3R5bGUuc3Ryb2tlCiAgICAgIC4uc3Ryb2tlV2lkdGggPSAxOwogICAgZm9yICh2YXIgY29sdW1uID0gMDsgY29sdW1uIDwgNDsgY29sdW1uKyspIHsKICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgMzsgcm93KyspIHsKICAgICAgICAvLyBUaGUgY2VsbCBhdCB0aGUgdG9wIHJpZ2h0IGlzIHRoZSBjZWxsIHRoYXQgdW5sb2Nrcy4KICAgICAgICBpZiAoY29sdW1uID09IDAgJiYgcm93ID09IDApIGNvbnRpbnVlOwogICAgICAgIGZpbmFsIHJlY3QgPSBSZWN0LmZyb21MVFdIKAogICAgICAgICAgc2l6ZS53aWR0aCAtIF90YWJsZUluc2V0IC0gX3RhYmxlQ2VsbCAtIGNvbHVtbiAqIChfdGFibGVDZWxsICsgX3RhYmxlR2FwKSwKICAgICAgICAgIF90YWJsZUluc2V0ICsgcm93ICogKF90YWJsZUNlbGwgKyBfdGFibGVHYXApLAogICAgICAgICAgX3RhYmxlQ2VsbCwKICAgICAgICAgIF90YWJsZUNlbGwsCiAgICAgICAgKTsKICAgICAgICAvLyBBIG5hcnJvdyBjYXJkIGhhcyBubyByb29tIGZvciBldmVyeSBjb2x1bW46IGl0IGxlYXZlcyBvdXQgdGhvc2UKICAgICAgICAvLyB0aGF0IHdvdWxkIHJlYWNoIHRoZSBjZWxsIG9mIHRoZSBhcHAgb24gaXRzIGxlZnQuCiAgICAgICAgaWYgKHJlY3QubGVmdCA8IF9jYXJkUGFkZGluZyArIF9jZWxsU2lkZSArIF90YWJsZUdhcCkgY29udGludWU7CiAgICAgICAgLy8gVGhlIG91dGxpbmVzIGZhZGUgdG93YXJkcyB0aGUgY2VsbCBvZiB0aGUgYXBwLgogICAgICAgIG91dGxpbmUuY29sb3IgPSBfYnJhbmRDcmVhbS53aXRoVmFsdWVzKGFscGhhOiAwLjE0IC0gY29sdW1uICogMC4wMyk7CiAgICAgICAgY2FudmFzLmRyYXdSZWN0KHJlY3QsIG91dGxpbmUpOwogICAgICAgIGZvciAoZmluYWwgKGxpdENvbHVtbiwgbGl0Um93LCBjb2xvciwgb3JkZXIpIGluIF9saXQpIHsKICAgICAgICAgIGlmIChsaXRDb2x1bW4gIT0gY29sdW1uIHx8IGxpdFJvdyAhPSByb3cpIGNvbnRpbnVlOwogICAgICAgICAgZmluYWwgc3RhcnQgPSAwLjE1ICsgb3JkZXIgKiAwLjA4OwogICAgICAgICAgZmluYWwgc2hvd24gPSBJbnRlcnZhbCgKICAgICAgICAgICAgc3RhcnQsCiAgICAgICAgICAgIChzdGFydCArIDAuMjUpLmNsYW1wKDAsIDEpLAogICAgICAgICAgICBjdXJ2ZTogQ3VydmVzLmVhc2VPdXQsCiAgICAgICAgICApLnRyYW5zZm9ybShhbmltYXRpb24udmFsdWUpOwogICAgICAgICAgY2FudmFzLmRyYXdSZWN0KAogICAgICAgICAgICByZWN0LAogICAgICAgICAgICBQYWludCgpLi5jb2xvciA9IGNvbG9yLndpdGhWYWx1ZXMoYWxwaGE6IGNvbG9yLmEgKiBzaG93biksCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KCiAgQG92ZXJyaWRlCiAgYm9vbCBzaG91bGRSZXBhaW50KF9UYWJsZVBhaW50ZXIgb2xkRGVsZWdhdGUpID0+CiAgICAgIG9sZERlbGVnYXRlLmFuaW1hdGlvbiAhPSBhbmltYXRpb247Cn0K",
      "type": "text"
    },
    {
      "path": "lib/features/paywall/paywall_guards.dart",
      "data":
          "aW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvZm91bmRhdGlvbi5kYXJ0JzsKCmltcG9ydCAnLi4vLi4vY29yZS9wdXJjaGFzZXMvYXBwX3B1cmNoYXNlcy5kYXJ0JzsKCi8vLyBXaGV0aGVyIHRoZSB1c2VyIGhhcyBwcmVtaXVtIGFjY2VzcywgYXMgdGhlIGd1YXJkIG9mIHRoZSByb3V0ZXMgdGhhdAovLy8gbmVlZCBpdCBhc2tzOiB3aGlsZSB0aGUgdmFsdWUgaXMgYGZhbHNlYCwgdGhlIHJvdXRlciBvcGVucyB0aGUgcGF5d2FsbAovLy8gb3ZlciB0aGUgcGFnZSB0aGF0IHRoZSB1c2VyIGlzIG9uIGluIHBsYWNlIG9mIHN1Y2ggYSByb3V0ZSwgYW5kIG9uY2UgaXQKLy8vIGlzIGB0cnVlYCwgdGhlIHJvdXRlciBjbG9zZXMgdGhlIHBheXdhbGwgYW5kIHNob3dzIHRoZSByb3V0ZS4KVmFsdWVMaXN0ZW5hYmxlPGJvb2w+IHBheXdhbGxIYXNQcmVtaXVtKCkgPT4gYXBwUHVyY2hhc2VzLmhhc1ByZW1pdW07Cg==",
      "type": "text"
    },
    {
      "path": "lib/features/paywall/paywall_links.dart",
      "data":
          "aW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvZm91bmRhdGlvbi5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnVybF9sYXVuY2hlci91cmxfbGF1bmNoZXIuZGFydCc7CgovLy8gVGhlIG5hbWUgb2YgdGhlIGtleSBvZiB0aGUgYWRkcmVzcyBvZiB0aGUgdGVybXMgb2YgdXNlIGluIGAuZW52YC4KY29uc3QgU3RyaW5nIHBheXdhbGxUZXJtc0tleSA9ICd7e3Rlcm1zX2tleX19JzsKCi8vLyBUaGUgbmFtZSBvZiB0aGUga2V5IG9mIHRoZSBhZGRyZXNzIG9mIHRoZSBwcml2YWN5IHBvbGljeSBpbiBgLmVudmAuCmNvbnN0IFN0cmluZyBwYXl3YWxsUHJpdmFjeUtleSA9ICd7e3ByaXZhY3lfa2V5fX0nOwoKLy8vIFRoZSBzdGFuZGFyZCBsaWNlbnNlIGFncmVlbWVudCBvZiBBcHBsZSwgd2hpY2ggdGhlIHRlcm1zIG9mIHVzZSBvZiB0aGUKLy8vIHBheXdhbGwgbGVhZCB0byBvbiBpT1Mgd2hpbGUgYC5lbnZgIGhhcyBubyBhZGRyZXNzIG9mIHRoZSB0ZXJtcyBvZiB1c2UuCmZpbmFsIFVyaSBhcHBsZVN0YW5kYXJkRXVsYSA9IFVyaS5wYXJzZSgKICAnaHR0cHM6Ly93d3cuYXBwbGUuY29tL2xlZ2FsL2ludGVybmV0LXNlcnZpY2VzL2l0dW5lcy9kZXYvc3RkZXVsYS8nLAopOwoKLy8vIFRoZSBhZGRyZXNzIG9mIHRoZSB0ZXJtcyBvZiB1c2UgdGhhdCB0aGUgcGF5d2FsbCBsaW5rcyB0bzogdGhlIHZhbHVlIG9mCi8vLyBbcGF5d2FsbFRlcm1zS2V5XSBpbiBgLmVudmAsIG9yIG9uIGlPUyBhbmQgbWFjT1MgdGhlIHN0YW5kYXJkIGxpY2Vuc2UKLy8vIGFncmVlbWVudCBvZiBBcHBsZSB3aGlsZSB0aGF0IHZhbHVlIGlzIGVtcHR5IG9yIG5vIHdlYiBhZGRyZXNzLCBhbmQKLy8vIG90aGVyd2lzZSBgbnVsbGAsIGZvciBubyBsaW5rLgpVcmk/IHBheXdhbGxUZXJtc1VybCgpID0+CiAgICB3ZWJBZGRyZXNzT2Yoe3t7ZW52X3BheXdhbGxfdGVybXNfdXJsfX19KSA/PwogICAgc3dpdGNoIChkZWZhdWx0VGFyZ2V0UGxhdGZvcm0pIHsKICAgICAgVGFyZ2V0UGxhdGZvcm0uaU9TIHx8IFRhcmdldFBsYXRmb3JtLm1hY09TID0+IGFwcGxlU3RhbmRhcmRFdWxhLAogICAgICBfID0+IG51bGwsCiAgICB9OwoKLy8vIFRoZSBhZGRyZXNzIG9mIHRoZSBwcml2YWN5IHBvbGljeSB0aGF0IHRoZSBwYXl3YWxsIGxpbmtzIHRvOiB0aGUgdmFsdWUKLy8vIG9mIFtwYXl3YWxsUHJpdmFjeUtleV0gaW4gYC5lbnZgLCBvciBgbnVsbGAsIGZvciBubyBsaW5rLCB3aGlsZSB0aGF0Ci8vLyB2YWx1ZSBpcyBlbXB0eSBvciBubyB3ZWIgYWRkcmVzcy4KVXJpPyBwYXl3YWxsUHJpdmFjeVVybCgpID0+IHdlYkFkZHJlc3NPZih7e3tlbnZfcGF5d2FsbF9wcml2YWN5X3VybH19fSk7CgovLy8gVGhlIGtleXMgb2YgYC5lbnZgIHdob3NlIHZhbHVlcyB0aGUgcGF5d2FsbCBjYW5ub3QgbGluayB0bywgc2luY2UgdGhleQovLy8gYXJlIGVtcHR5IG9yIG5vIHdlYiBhZGRyZXNzOiBpbiBhIGRlYnVnIGJ1aWxkLCB0aGUgcGF5d2FsbCBuYW1lcyB0aGVtCi8vLyBmb3IgdGhlIGRldmVsb3BlciBvZiB0aGUgYXBwLgpMaXN0PFN0cmluZz4gbWlzc2luZ1BheXdhbGxLZXlzKCkgPT4gWwogIGlmICh3ZWJBZGRyZXNzT2Yoe3t7ZW52X3BheXdhbGxfdGVybXNfdXJsfX19KSA9PSBudWxsKSBwYXl3YWxsVGVybXNLZXksCiAgaWYgKHdlYkFkZHJlc3NPZih7e3tlbnZfcGF5d2FsbF9wcml2YWN5X3VybH19fSkgPT0gbnVsbCkgcGF5d2FsbFByaXZhY3lLZXksCl07CgovLy8gW3ZhbHVlXSBhcyBhIHdlYiBhZGRyZXNzLCB3aXRoIGBodHRwc2Agb3IgYGh0dHBgIGFuZCBhIGhvc3QsIG9yIGBudWxsYAovLy8gZm9yIGFuIGVtcHR5IHZhbHVlIGFuZCBmb3IgYW55dGhpbmcgZWxzZS4KVXJpPyB3ZWJBZGRyZXNzT2YoU3RyaW5nPyB2YWx1ZSkgewogIGZpbmFsIGFkZHJlc3MgPSBVcmkudHJ5UGFyc2UodmFsdWU/LnRyaW0oKSA/PyAnJyk7CiAgaWYgKGFkZHJlc3MgPT0gbnVsbCB8fCBhZGRyZXNzLmhvc3QuaXNFbXB0eSkgcmV0dXJuIG51bGw7CiAgcmV0dXJuIGFkZHJlc3MuaXNTY2hlbWUoJ2h0dHBzJykgfHwgYWRkcmVzcy5pc1NjaGVtZSgnaHR0cCcpID8gYWRkcmVzcyA6IG51bGw7Cn0KCi8vLyBPcGVucyBbdXJsXSBvdXRzaWRlIHRoZSBhcHA6IGEgcGFnZSBpbiB0aGUgYnJvd3Nlciwgb3IgYSBwYWdlIG9mIHRoZQovLy8gc3RvcmUgaW4gdGhlIGFwcCBvZiB0aGUgc3RvcmUuCkZ1dHVyZTx2b2lkPiBvcGVuUGF5d2FsbExpbmsoVXJpIHVybCkgYXN5bmMgewogIGF3YWl0IGxhdW5jaFVybCh1cmwsIG1vZGU6IExhdW5jaE1vZGUuZXh0ZXJuYWxBcHBsaWNhdGlvbik7Cn0K",
      "type": "text"
    },
    {
      "path": "lib/features/paywall/paywall_state.dart",
      "data":
          "aW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvZm91bmRhdGlvbi5kYXJ0JzsKCmltcG9ydCAnLi4vLi4vY29yZS9wdXJjaGFzZXMvYXBwX3B1cmNoYXNlcy5kYXJ0JzsKCi8vLyBBIGNhbGwgb2YgdGhlIHBheXdhbGwgdGhhdCBpcyBvbiBpdHMgd2F5LgplbnVtIFBheXdhbGxBY3Rpb24gewogIC8vLyBCdXlpbmcgdGhlIHNlbGVjdGVkIHBsYW4uCiAgcHVyY2hhc2UsCgogIC8vLyBSZXN0b3Jpbmcgd2hhdCB0aGUgc3RvcmUgYWNjb3VudCBvZiB0aGUgdXNlciBib3VnaHQuCiAgcmVzdG9yZSwKfQoKLy8vIFdoYXQgdGhlIHBheXdhbGwgdGVsbHMgdGhlIHVzZXIgYWZ0ZXIgYSBjYWxsIHRoYXQgZGlkIG5vdCBmYWlsLgplbnVtIFBheXdhbGxOb3RpY2UgewogIC8vLyBUaGUgcGF5bWVudCB3YWl0cyBmb3IgYW4gYXBwcm92YWwsIGFzIG9uZSB0aGF0IGEgcGFyZW50IGFwcHJvdmVzOiB0aGUKICAvLy8gYWNjZXNzIGNvbWVzIG9uY2UgdGhlIHN0b3JlIHRvb2sgdGhlIHBheW1lbnQsIGFuZCB0aGUgcm91dGVyIGNsb3NlcwogIC8vLyB0aGUgcGF5d2FsbCB0aGVuLgogIHBlbmRpbmcsCgogIC8vLyBBIHJlc3RvcmUgZm91bmQgbm90aGluZyB0aGF0IHRoZSBzdG9yZSBhY2NvdW50IGJvdWdodC4KICBub3RoaW5nVG9SZXN0b3JlLAp9CgovLy8gVGhlIHN0YXRlIG9mIHRoZSBwYXl3YWxsOiB0aGUgcGxhbnMgb2YgdGhlIGN1cnJlbnQgb2ZmZXIsIG9yIHdoeSB0aGV5Ci8vLyBkaWQgbm90IGxvYWQsIHRoZSBwbGFuIHRoYXQgdGhlIHVzZXIgc2VsZWN0ZWQsIHdoaWNoIGNhbGwgaXMgb24gaXRzIHdheSwKLy8vIGFuZCB3aGF0IHRoZSBsYXN0IGNhbGwgZW5kZWQgd2l0aC4KQGltbXV0YWJsZQpmaW5hbCBjbGFzcyBQYXl3YWxsU3RhdGUgewogIC8vLyBDcmVhdGVzIHRoZSBzdGF0ZSwgd2hpY2ggaXMgbG9hZGluZyB0aGUgcGxhbnMgd2l0aG91dCBbcGxhbnNdIGFuZAogIC8vLyBbbG9hZEZhaWx1cmVdLgogIGNvbnN0IFBheXdhbGxTdGF0ZSh7CiAgICB0aGlzLnBsYW5zLAogICAgdGhpcy5sb2FkRmFpbHVyZSwKICAgIHRoaXMuc2VsZWN0ZWQsCiAgICB0aGlzLmJ1c3ksCiAgICB0aGlzLmZhaWx1cmUsCiAgICB0aGlzLm5vdGljZSwKICB9KTsKCiAgLy8vIFRoZSBwbGFucyBvZiB0aGUgY3VycmVudCBvZmZlciwgaW4gdGhlIG9yZGVyIG9mIHRoZSBwcm92aWRlciBvZgogIC8vLyBwdXJjaGFzZXMsIG9yIGBudWxsYCB3aGlsZSB0aGV5IGxvYWQgb3Igd2hlbiB0aGV5IGRpZCBub3QuCiAgZmluYWwgTGlzdDxQbGFuPj8gcGxhbnM7CgogIC8vLyBXaHkgdGhlIHBsYW5zIGRpZCBub3QgbG9hZCwgb3IgYG51bGxgLgogIGZpbmFsIFB1cmNoYXNlc0ZhaWx1cmU/IGxvYWRGYWlsdXJlOwoKICAvLy8gVGhlIHBsYW4gdGhhdCB0aGUgYnV0dG9uIG9mIHRoZSBwYXl3YWxsIGJ1eXMsIG9yIGBudWxsYCB3aGlsZSB0aGVyZQogIC8vLyBhcmUgbm8gcGxhbnMuCiAgZmluYWwgUGxhbj8gc2VsZWN0ZWQ7CgogIC8vLyBUaGUgY2FsbCB0aGF0IGlzIG9uIGl0cyB3YXksIG9yIGBudWxsYCB3aGVuIG5vbmUgaXMuIFdoaWxlIGl0IGlzLCB0aGUKICAvLy8gcGF5d2FsbCB0YWtlcyBubyBvdGhlciBjYWxsLgogIC8vLwogIC8vLyBJdCBzdGF5cyBzbyBhZnRlciBhIHB1cmNoYXNlIG9yIGEgcmVzdG9yZSB0aGF0IGdhdmUgdGhlIHVzZXIgcHJlbWl1bQogIC8vLyBhY2Nlc3MsIGZvciBhcyBsb25nIGFzIHRoZSB1c2VyIGhhcyBpdDogd2hhdCBjb21lcyBuZXh0IGlzIHVwIHRvIHRoZQogIC8vLyByb3V0ZXIsIHdoaWNoIGNsb3NlcyB0aGUgcGF5d2FsbC4gVGhlIHBheXdhbGwgbmVpdGhlciBjbG9zZXMgaXRzZWxmCiAgLy8vIG5vciBuYXZpZ2F0ZXMuIFdoZW4gdGhlIGFjY2VzcyBlbmRzIGJlZm9yZSB0aGUgcm91dGVyIHRvb2sgdGhlCiAgLy8vIHBheXdhbGwgYXdheSwgdGhlIHBheXdhbGwgaXMgaWRsZSBhZ2Fpbi4KICAvLy8KICAvLy8gV2hpbGUgdGhlIHBsYW5zIGxvYWQsIHRoZSBwYXl3YWxsIHRha2VzIG5vIGNhbGwsIHNvIHRoYXQgbm8gcGxhbiBjb21lcwogIC8vLyBpbiB0byBiZSBib3VnaHQgd2hpbGUgYSByZXN0b3JlIGlzIG9uIGl0cyB3YXkuCiAgZmluYWwgUGF5d2FsbEFjdGlvbj8gYnVzeTsKCiAgLy8vIFdoeSB0aGUgbGFzdCBjYWxsIGZhaWxlZCwgb3IgYG51bGxgIGlmIGl0IGRpZCBub3QuCiAgZmluYWwgUHVyY2hhc2VzRmFpbHVyZT8gZmFpbHVyZTsKCiAgLy8vIFdoYXQgdGhlIGxhc3QgY2FsbCB0aGF0IGRpZCBub3QgZmFpbCB0ZWxscyB0aGUgdXNlciwgb3IgYG51bGxgLgogIGZpbmFsIFBheXdhbGxOb3RpY2U/IG5vdGljZTsKCiAgLy8vIFdoZXRoZXIgdGhlIHBsYW5zIGFyZSBsb2FkaW5nLgogIGJvb2wgZ2V0IGxvYWRpbmcgPT4gcGxhbnMgPT0gbnVsbCAmJiBsb2FkRmFpbHVyZSA9PSBudWxsOwoKICAvLy8gVGhlIHN0YXRlIHdpdGggW3BsYW5dIHNlbGVjdGVkLCB3aXRoIG5vdGhpbmcgb24gaXRzIHdheSBhbmQgbm90aGluZyB0bwogIC8vLyB0ZWxsLgogIFBheXdhbGxTdGF0ZSBzZWxlY3RpbmcoUGxhbiBwbGFuKSA9PgogICAgICBQYXl3YWxsU3RhdGUocGxhbnM6IHBsYW5zLCBsb2FkRmFpbHVyZTogbG9hZEZhaWx1cmUsIHNlbGVjdGVkOiBwbGFuKTsKCiAgLy8vIFRoZSBzdGF0ZSB3aGlsZSBbYWN0aW9uXSBpcyBvbiBpdHMgd2F5LiBUaGUgcGxhbnMsIG9yIHdoeSB0aGV5IGRpZCBub3QKICAvLy8gbG9hZCwgc3RheSBhcyB0aGV5IGFyZS4KICBQYXl3YWxsU3RhdGUgYnVzeVdpdGgoUGF5d2FsbEFjdGlvbiBhY3Rpb24pID0+IFBheXdhbGxTdGF0ZSgKICAgIHBsYW5zOiBwbGFucywKICAgIGxvYWRGYWlsdXJlOiBsb2FkRmFpbHVyZSwKICAgIHNlbGVjdGVkOiBzZWxlY3RlZCwKICAgIGJ1c3k6IGFjdGlvbiwKICApOwoKICAvLy8gVGhlIHN0YXRlIHdpdGggbm90aGluZyBvbiBpdHMgd2F5LCB3aGljaCB0ZWxscyBvZiBbZmFpbHVyZV0gb3IKICAvLy8gW25vdGljZV0sIGlmIGFueS4gVGhlIHBsYW5zLCBvciB3aHkgdGhleSBkaWQgbm90IGxvYWQsIHN0YXkgYXMgdGhleQogIC8vLyBhcmUuCiAgUGF5d2FsbFN0YXRlIGlkbGUoe1B1cmNoYXNlc0ZhaWx1cmU/IGZhaWx1cmUsIFBheXdhbGxOb3RpY2U/IG5vdGljZX0pID0+CiAgICAgIFBheXdhbGxTdGF0ZSgKICAgICAgICBwbGFuczogcGxhbnMsCiAgICAgICAgbG9hZEZhaWx1cmU6IGxvYWRGYWlsdXJlLAogICAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZCwKICAgICAgICBmYWlsdXJlOiBmYWlsdXJlLAogICAgICAgIG5vdGljZTogbm90aWNlLAogICAgICApOwoKICBAb3ZlcnJpZGUKICBib29sIG9wZXJhdG9yID09KE9iamVjdCBvdGhlcikgPT4KICAgICAgb3RoZXIgaXMgUGF5d2FsbFN0YXRlICYmCiAgICAgIG90aGVyLnBsYW5zID09IHBsYW5zICYmCiAgICAgIG90aGVyLmxvYWRGYWlsdXJlID09IGxvYWRGYWlsdXJlICYmCiAgICAgIG90aGVyLnNlbGVjdGVkID09IHNlbGVjdGVkICYmCiAgICAgIG90aGVyLmJ1c3kgPT0gYnVzeSAmJgogICAgICBvdGhlci5mYWlsdXJlID09IGZhaWx1cmUgJiYKICAgICAgb3RoZXIubm90aWNlID09IG5vdGljZTsKCiAgQG92ZXJyaWRlCiAgaW50IGdldCBoYXNoQ29kZSA9PgogICAgICBPYmplY3QuaGFzaChwbGFucywgbG9hZEZhaWx1cmUsIHNlbGVjdGVkLCBidXN5LCBmYWlsdXJlLCBub3RpY2UpOwp9CgovLy8gSG93IG9mdGVuIGEgcGxhbiBpcyBiaWxsZWQsIGZvciB0aGUgcGVyaW9kcyB0aGF0IHRoZSBwYXl3YWxsIGhhcyB3b3JkcwovLy8gZm9yOiB0aG9zZSB0aGF0IHRoZSBzdG9yZXMgb2ZmZXIuCmVudW0gUGxhblRlcm0gewogIC8vLyBFdmVyeSB3ZWVrLgogIHdlZWssCgogIC8vLyBFdmVyeSBtb250aC4KICBtb250aCwKCiAgLy8vIEV2ZXJ5IDIgbW9udGhzLgogIHR3b01vbnRocywKCiAgLy8vIEV2ZXJ5IDMgbW9udGhzLgogIHRocmVlTW9udGhzLAoKICAvLy8gRXZlcnkgNiBtb250aHMuCiAgc2l4TW9udGhzLAoKICAvLy8gRXZlcnkgeWVhci4KICB5ZWFyLAp9CgovLy8gVGhlIHRlcm0gb2YgW3BlcmlvZF0sIG9yIGBudWxsYCBmb3IgYSBwZXJpb2QgdGhhdCB0aGUgcGF5d2FsbCBoYXMgbm8KLy8vIHdvcmRzIGZvci4gU2V2ZW4gZGF5cyBhcmUgYSB3ZWVrLCBhbmQgdHdlbHZlIG1vbnRocyBhIHllYXIuClBsYW5UZXJtPyB0ZXJtT2YoQmlsbGluZ1BlcmlvZCBwZXJpb2QpID0+IHN3aXRjaCAoKHBlcmlvZC51bml0LCBwZXJpb2QuY291bnQpKSB7CiAgKEJpbGxpbmdVbml0LmRheSwgNykgfHwgKEJpbGxpbmdVbml0LndlZWssIDEpID0+IFBsYW5UZXJtLndlZWssCiAgKEJpbGxpbmdVbml0Lm1vbnRoLCAxKSA9PiBQbGFuVGVybS5tb250aCwKICAoQmlsbGluZ1VuaXQubW9udGgsIDIpID0+IFBsYW5UZXJtLnR3b01vbnRocywKICAoQmlsbGluZ1VuaXQubW9udGgsIDMpID0+IFBsYW5UZXJtLnRocmVlTW9udGhzLAogIChCaWxsaW5nVW5pdC5tb250aCwgNikgPT4gUGxhblRlcm0uc2l4TW9udGhzLAogIChCaWxsaW5nVW5pdC5tb250aCwgMTIpIHx8IChCaWxsaW5nVW5pdC55ZWFyLCAxKSA9PiBQbGFuVGVybS55ZWFyLAogIF8gPT4gbnVsbCwKfTsKCi8vLyBIb3cgbG9uZyBhbiBpbnRybyBvZmZlciBsYXN0cywgZm9yIHRoZSBsZW5ndGhzIHRoYXQgdGhlIHBheXdhbGwgaGFzCi8vLyB3b3JkcyBmb3I6IHRob3NlIG9mIHRoZSBmcmVlIHRyaWFscyBvZiB0aGUgc3RvcmVzLgplbnVtIE9mZmVyTGVuZ3RoIHsKICAvLy8gMyBkYXlzLgogIHRocmVlRGF5cywKCiAgLy8vIDEgd2Vlay4KICBvbmVXZWVrLAoKICAvLy8gMiB3ZWVrcy4KICB0d29XZWVrcywKCiAgLy8vIDEgbW9udGguCiAgb25lTW9udGgsCgogIC8vLyAyIG1vbnRocy4KICB0d29Nb250aHMsCgogIC8vLyAzIG1vbnRocy4KICB0aHJlZU1vbnRocywKCiAgLy8vIDYgbW9udGhzLgogIHNpeE1vbnRocywKCiAgLy8vIDEgeWVhci4KICBvbmVZZWFyLAp9CgovLy8gSG93IGxvbmcgW29mZmVyXSBsYXN0cyBpbiBhbGwsIGl0cyBwZXJpb2QgdGltZXMgaXRzIGN5Y2xlcywgb3IgYG51bGxgCi8vLyBmb3IgYSBsZW5ndGggdGhhdCB0aGUgcGF5d2FsbCBoYXMgbm8gd29yZHMgZm9yLiBTZXZlbiBkYXlzIGFyZSBhIHdlZWssCi8vLyBmb3VydGVlbiBkYXlzIHR3byB3ZWVrcywgYW5kIHR3ZWx2ZSBtb250aHMgYSB5ZWFyLgpPZmZlckxlbmd0aD8gbGVuZ3RoT2YoSW50cm9PZmZlciBvZmZlcikgPT4KICAgIHN3aXRjaCAoKG9mZmVyLnBlcmlvZC51bml0LCBvZmZlci5wZXJpb2QuY291bnQgKiBvZmZlci5jeWNsZXMpKSB7CiAgICAgIChCaWxsaW5nVW5pdC5kYXksIDMpID0+IE9mZmVyTGVuZ3RoLnRocmVlRGF5cywKICAgICAgKEJpbGxpbmdVbml0LmRheSwgNykgfHwgKEJpbGxpbmdVbml0LndlZWssIDEpID0+IE9mZmVyTGVuZ3RoLm9uZVdlZWssCiAgICAgIChCaWxsaW5nVW5pdC5kYXksIDE0KSB8fCAoQmlsbGluZ1VuaXQud2VlaywgMikgPT4gT2ZmZXJMZW5ndGgudHdvV2Vla3MsCiAgICAgIChCaWxsaW5nVW5pdC5tb250aCwgMSkgPT4gT2ZmZXJMZW5ndGgub25lTW9udGgsCiAgICAgIChCaWxsaW5nVW5pdC5tb250aCwgMikgPT4gT2ZmZXJMZW5ndGgudHdvTW9udGhzLAogICAgICAoQmlsbGluZ1VuaXQubW9udGgsIDMpID0+IE9mZmVyTGVuZ3RoLnRocmVlTW9udGhzLAogICAgICAoQmlsbGluZ1VuaXQubW9udGgsIDYpID0+IE9mZmVyTGVuZ3RoLnNpeE1vbnRocywKICAgICAgKEJpbGxpbmdVbml0Lm1vbnRoLCAxMikgfHwgKEJpbGxpbmdVbml0LnllYXIsIDEpID0+IE9mZmVyTGVuZ3RoLm9uZVllYXIsCiAgICAgIF8gPT4gbnVsbCwKICAgIH07CgovLy8gVGhlIHBsYW4gb2YgW3BsYW5zXSB0aGF0IHRoZSBwYXl3YWxsIHNlbGVjdHMgd2hlbiBpdCBzaG93cyB0aGVtOiB0aGUKLy8vIGZpcnN0IHRoYXQgcmVuZXdzIGV2ZXJ5IHllYXIsIG9yIGVsc2UgdGhlIGZpcnN0IHBsYW4uClBsYW4/IHByZXNlbGVjdGVkUGxhbihMaXN0PFBsYW4+IHBsYW5zKSB7CiAgZm9yIChmaW5hbCBwbGFuIGluIHBsYW5zKSB7CiAgICBpZiAoX3llYXJseShwbGFuKSkgcmV0dXJuIHBsYW47CiAgfQogIHJldHVybiBwbGFucy5pc0VtcHR5ID8gbnVsbCA6IHBsYW5zLmZpcnN0Owp9CgovLy8gV2hldGhlciBbcGxhbl0gaXMgdGhlIGJlc3QgdmFsdWUgb2YgW3BsYW5zXTogYSBwbGFuIHRoYXQgcmVuZXdzIGV2ZXJ5Ci8vLyB5ZWFyIGFuZCBjb3N0cyBsZXNzIHRoYW4gdHdlbHZlIHRpbWVzIGEgcGxhbiBvZiBbcGxhbnNdIHRoYXQgcmVuZXdzCi8vLyBldmVyeSBtb250aCwgaW4gdGhlIHNhbWUgY3VycmVuY3kuCi8vLwovLy8gVGhlIHBheXdhbGwgc2F5cyBzbyBvbiB0aGUgcGxhbiwgYW5kIG5ldmVyIHNob3dzIGEgeWVhcmx5IHBsYW4gYnkgd2hhdAovLy8gaXQgY29zdHMgYSBtb250aCwgd2hpY2ggR29vZ2xlIFBsYXkgZG9lcyBub3QgYWxsb3cuCmJvb2wgaXNCZXN0VmFsdWUoUGxhbiBwbGFuLCBMaXN0PFBsYW4+IHBsYW5zKSB7CiAgaWYgKCFfeWVhcmx5KHBsYW4pKSByZXR1cm4gZmFsc2U7CiAgZm9yIChmaW5hbCBvdGhlciBpbiBwbGFucykgewogICAgZmluYWwgbW9udGhseSA9IHN3aXRjaCAob3RoZXIucGVyaW9kKSB7CiAgICAgIGZpbmFsIHBlcmlvZD8gPT4gdGVybU9mKHBlcmlvZCkgPT0gUGxhblRlcm0ubW9udGgsCiAgICAgIG51bGwgPT4gZmFsc2UsCiAgICB9OwogICAgaWYgKG1vbnRobHkgJiYKICAgICAgICBvdGhlci5jdXJyZW5jeUNvZGUgPT0gcGxhbi5jdXJyZW5jeUNvZGUgJiYKICAgICAgICBwbGFuLmFtb3VudCA8IG90aGVyLmFtb3VudCAqIDEyKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KICByZXR1cm4gZmFsc2U7Cn0KCi8vLyBXaGV0aGVyIFtwbGFuXSByZW5ld3MgZXZlcnkgeWVhci4KYm9vbCBfeWVhcmx5KFBsYW4gcGxhbikgPT4gc3dpdGNoIChwbGFuLnBlcmlvZCkgewogIGZpbmFsIHBlcmlvZD8gPT4gdGVybU9mKHBlcmlvZCkgPT0gUGxhblRlcm0ueWVhciwKICBudWxsID0+IGZhbHNlLAp9Owo=",
      "type": "text"
    },
    {
      "path": "lib/features/paywall/paywall_texts.dart",
      "data":
          "aW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvZm91bmRhdGlvbi5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvd2lkZ2V0cy5kYXJ0JzsKCmltcG9ydCAnLi4vLi4vY29yZS9wdXJjaGFzZXMvYXBwX3B1cmNoYXNlcy5kYXJ0JzsKaW1wb3J0ICdwYXl3YWxsX3N0YXRlLmRhcnQnOwoKLy8gVGhlIHRleHRzIG9mIHRoZSBwYXl3YWxsIHRoYXQgZGVwZW5kIG9uIGEgcGxhbi4gQSB0ZXh0IG9mIHRoZSBhcHAgaGFzIG5vCi8vIHBhcmFtZXRlcnMsIHNvIHRoZXNlIHB1dCB0aGUgdGV4dHMgb2YgY2xvc2VkIHNldHMgdG9nZXRoZXIgd2l0aCB0aGUKLy8gcHJpY2VzIHRoYXQgdGhlIHN0b3JlIGdpdmVzOiB0aGUgbmFtZSBhbmQgdGhlIHN1ZmZpeCBvZiB0aGUgcHJpY2UgZm9yCi8vIGVhY2ggdGVybSBvZiBhIHBsYW4sIGFuZCB0aGUgbGVuZ3RoIG9mIGVhY2ggaW50cm8gb2ZmZXIgdGhhdCB0aGUgc3RvcmVzCi8vIGhhdmUuIEEgdGVybSBvciBhIGxlbmd0aCBvdXRzaWRlIHRob3NlIHNldHMgZ2V0cyBhIHRleHQgd2l0aG91dCBpdC4KCi8vLyBUaGUgbmFtZSBvZiBbcGxhbl0gb24gdGhlIHBheXdhbGw6IHRoZSBuYW1lIG9mIGl0cyB0ZXJtLCBgTGlmZXRpbWVgIGZvcgovLy8gYSBwbGFuIHBhaWQgb25jZSwgb3IgdGhlIHRpdGxlIG9mIGl0cyBwcm9kdWN0IGluIHRoZSBzdG9yZSBmb3IgYSB0ZXJtCi8vLyB0aGF0IHRoZSBwYXl3YWxsIGhhcyBubyBuYW1lIGZvci4KU3RyaW5nIHBsYW5OYW1lT2YoQnVpbGRDb250ZXh0IGNvbnRleHQsIFBsYW4gcGxhbikgPT4gc3dpdGNoIChwbGFuLnBlcmlvZCkgewogIG51bGwgPT4ge3t7dGV4dF9wbGFuX2xpZmV0aW1lfX19LAogIGZpbmFsIHBlcmlvZCA9PiB0ZXJtTmFtZU9mKGNvbnRleHQsIHBlcmlvZCkgPz8gcGxhbi50aXRsZSwKfTsKCi8vLyBUaGUgbmFtZSBvZiB0aGUgcGxhbiBvZiBbcGVyaW9kXSwgc3VjaCBhcyBgTW9udGhseWAsIG9yIGBudWxsYCBmb3IgYQovLy8gcGVyaW9kIHRoYXQgdGhlIHBheXdhbGwgaGFzIG5vIG5hbWUgZm9yLgpTdHJpbmc/IHRlcm1OYW1lT2YoQnVpbGRDb250ZXh0IGNvbnRleHQsIEJpbGxpbmdQZXJpb2QgcGVyaW9kKSA9PgogICAgc3dpdGNoICh0ZXJtT2YocGVyaW9kKSkgewogICAgICBQbGFuVGVybS53ZWVrID0+IHt7e3RleHRfcGxhbl93ZWVrbHl9fX0sCiAgICAgIFBsYW5UZXJtLm1vbnRoID0+IHt7e3RleHRfcGxhbl9tb250aGx5fX19LAogICAgICBQbGFuVGVybS50d29Nb250aHMgPT4ge3t7dGV4dF9wbGFuX3R3b19tb250aHN9fX0sCiAgICAgIFBsYW5UZXJtLnRocmVlTW9udGhzID0+IHt7e3RleHRfcGxhbl90aHJlZV9tb250aHN9fX0sCiAgICAgIFBsYW5UZXJtLnNpeE1vbnRocyA9PiB7e3t0ZXh0X3BsYW5fc2l4X21vbnRoc319fSwKICAgICAgUGxhblRlcm0ueWVhciA9PiB7e3t0ZXh0X3BsYW5feWVhcmx5fX19LAogICAgICBudWxsID0+IG51bGwsCiAgICB9OwoKLy8vIFdoYXQgZm9sbG93cyB0aGUgcHJpY2Ugb2YgYSBwbGFuIG9mIFtwZXJpb2RdLCBzdWNoIGFzIGAvIG1vbnRoYCwgb3IKLy8vIGBvbmNlYCBmb3IgYSBwbGFuIHBhaWQgb25jZSwgb3IgYG51bGxgIGZvciBhIHBlcmlvZCB0aGF0IHRoZSBwYXl3YWxsIGhhcwovLy8gbm8gd29yZHMgZm9yLgpTdHJpbmc/IHByaWNlU3VmZml4T2YoQnVpbGRDb250ZXh0IGNvbnRleHQsIEJpbGxpbmdQZXJpb2Q/IHBlcmlvZCkgPT4KICAgIHN3aXRjaCAocGVyaW9kKSB7CiAgICAgIG51bGwgPT4ge3t7dGV4dF9vbmNlfX19LAogICAgICBmaW5hbCBwZXJpb2QgPT4gc3dpdGNoICh0ZXJtT2YocGVyaW9kKSkgewogICAgICAgIFBsYW5UZXJtLndlZWsgPT4ge3t7dGV4dF9wZXJfd2Vla319fSwKICAgICAgICBQbGFuVGVybS5tb250aCA9PiB7e3t0ZXh0X3Blcl9tb250aH19fSwKICAgICAgICBQbGFuVGVybS50d29Nb250aHMgPT4ge3t7dGV4dF9wZXJfdHdvX21vbnRoc319fSwKICAgICAgICBQbGFuVGVybS50aHJlZU1vbnRocyA9PiB7e3t0ZXh0X3Blcl90aHJlZV9tb250aHN9fX0sCiAgICAgICAgUGxhblRlcm0uc2l4TW9udGhzID0+IHt7e3RleHRfcGVyX3NpeF9tb250aHN9fX0sCiAgICAgICAgUGxhblRlcm0ueWVhciA9PiB7e3t0ZXh0X3Blcl95ZWFyfX19LAogICAgICAgIG51bGwgPT4gbnVsbCwKICAgICAgfSwKICAgIH07CgovLy8gVGhlIHByaWNlIG9mIFtwbGFuXSB3aXRoIHdoYXQgZm9sbG93cyBpdCwgc3VjaCBhcyBgJDQuOTkgLyBtb250aGAsIHdpdGgKLy8vIG5vLWJyZWFrIHNwYWNlcywgc28gdGhhdCBhIGxpbmUgbmV2ZXIgYnJlYWtzIGluc2lkZSBpdC4KU3RyaW5nIHByaWNlT2YoQnVpbGRDb250ZXh0IGNvbnRleHQsIFBsYW4gcGxhbikgPT4gWwogIHBsYW4ucHJpY2UsCiAgP3ByaWNlU3VmZml4T2YoY29udGV4dCwgcGxhbi5wZXJpb2QpLApdLmpvaW4oJyAnKS5yZXBsYWNlQWxsKCcgJywgX25vQnJlYWtTcGFjZSk7CgovLy8gVGhlIG5vLWJyZWFrIHNwYWNlLCB3aGljaCBrZWVwcyB0aGUgd29yZHMgb24gZWFjaCBzaWRlIG9mIGl0IG9uIG9uZSBsaW5lLgpjb25zdCBTdHJpbmcgX25vQnJlYWtTcGFjZSA9ICdcdTAwQTAnOwoKLy8vIEhvdyBsb25nIGFuIGludHJvIG9mZmVyIG9mIFtsZW5ndGhdIGxhc3RzLCBzdWNoIGFzIGAxIHdlZWtgLgpTdHJpbmcgbGVuZ3RoVGV4dE9mKEJ1aWxkQ29udGV4dCBjb250ZXh0LCBPZmZlckxlbmd0aCBsZW5ndGgpID0+CiAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICBPZmZlckxlbmd0aC50aHJlZURheXMgPT4ge3t7dGV4dF90aHJlZV9kYXlzfX19LAogICAgICBPZmZlckxlbmd0aC5vbmVXZWVrID0+IHt7e3RleHRfb25lX3dlZWt9fX0sCiAgICAgIE9mZmVyTGVuZ3RoLnR3b1dlZWtzID0+IHt7e3RleHRfdHdvX3dlZWtzfX19LAogICAgICBPZmZlckxlbmd0aC5vbmVNb250aCA9PiB7e3t0ZXh0X29uZV9tb250aH19fSwKICAgICAgT2ZmZXJMZW5ndGgudHdvTW9udGhzID0+IHt7e3RleHRfdHdvX21vbnRoc319fSwKICAgICAgT2ZmZXJMZW5ndGgudGhyZWVNb250aHMgPT4ge3t7dGV4dF90aHJlZV9tb250aHN9fX0sCiAgICAgIE9mZmVyTGVuZ3RoLnNpeE1vbnRocyA9PiB7e3t0ZXh0X3NpeF9tb250aHN9fX0sCiAgICAgIE9mZmVyTGVuZ3RoLm9uZVllYXIgPT4ge3t7dGV4dF9vbmVfeWVhcn19fSwKICAgIH07CgovLy8gV2hhdCBbb2ZmZXJdIGdpdmVzLCBhcyB0aGUgY2FyZCBvZiBpdHMgcGxhbiBzaG93cyBpdDogYDEgd2VlayBmcmVlYCBmb3IKLy8vIGEgZnJlZSB0cmlhbCwgYCQxLjk5IGZvciAzIG1vbnRoc2AgZm9yIGEgbG93ZXIgcHJpY2UsIG9yIHdpdGggdGhlCi8vLyBzdWZmaXggb2YgaXRzIHBlcmlvZCwgYCQwLjk5IC8gbW9udGggZm9yIDMgbW9udGhzYCwgZm9yIGEgbG93ZXIgcHJpY2Ugb2YKLy8vIHNldmVyYWwgcGVyaW9kcy4gRm9yIGEgbGVuZ3RoIHRoYXQgdGhlIHBheXdhbGwgaGFzIG5vIHdvcmRzIGZvciwgaXQgaXMKLy8vIGBGcmVlIHRyaWFsYCBvciBgSW50cm9kdWN0b3J5IHByaWNlYC4KU3RyaW5nIG9mZmVyVGV4dE9mKEJ1aWxkQ29udGV4dCBjb250ZXh0LCBJbnRyb09mZmVyIG9mZmVyKSB7CiAgZmluYWwgbGVuZ3RoID0gc3dpdGNoIChsZW5ndGhPZihvZmZlcikpIHsKICAgIGZpbmFsIGxlbmd0aD8gPT4gbGVuZ3RoVGV4dE9mKGNvbnRleHQsIGxlbmd0aCksCiAgICBudWxsID0+IG51bGwsCiAgfTsKICBpZiAob2ZmZXIuaXNGcmVlKSB7CiAgICBmaW5hbCBmcmVlID0ge3t7dGV4dF9mcmVlfX19OwogICAgcmV0dXJuIGxlbmd0aCA9PSBudWxsID8ge3t7dGV4dF9mcmVlX3RyaWFsfX19IDogJyRsZW5ndGggJGZyZWUnOwogIH0KICBmaW5hbCBzdWZmaXggPSBvZmZlci5jeWNsZXMgPiAxCiAgICAgID8gcHJpY2VTdWZmaXhPZihjb250ZXh0LCBvZmZlci5wZXJpb2QpCiAgICAgIDogbnVsbDsKICBpZiAobGVuZ3RoID09IG51bGwgfHwgKG9mZmVyLmN5Y2xlcyA+IDEgJiYgc3VmZml4ID09IG51bGwpKSB7CiAgICByZXR1cm4ge3t7dGV4dF9pbnRyb19wcmljZX19fTsKICB9CiAgcmV0dXJuIFsKICAgIG9mZmVyLnByaWNlLAogICAgP3N1ZmZpeCwKICAgIHt7e3RleHRfZm9yX2xlbmd0aH19fSwKICAgIGxlbmd0aCwKICBdLmpvaW4oJyAnKTsKfQoKLy8vIFdoYXQgW3BsYW5dIGNvc3RzIGFmdGVyIGl0cyBpbnRybyBvZmZlciwgYXMgdGhlIHBheXdhbGwgc2F5cyByaWdodAovLy8gYmVsb3cgaXRzIGJ1dHRvbiwgc3VjaCBhcyBgMSB3ZWVrIGZyZWUsIHRoZW4gJDI5Ljk5IC8geWVhcmAsIG9yIGBudWxsYAovLy8gZm9yIGEgcGxhbiB3aXRob3V0IGFuIGludHJvIG9mZmVyLgpTdHJpbmc/IGFmdGVyT2ZmZXJUZXh0T2YoQnVpbGRDb250ZXh0IGNvbnRleHQsIFBsYW4gcGxhbikgewogIGZpbmFsIG9mZmVyID0gcGxhbi5pbnRyb09mZmVyOwogIGlmIChvZmZlciA9PSBudWxsKSByZXR1cm4gbnVsbDsKICBmaW5hbCB0aGVuID0ge3t7dGV4dF90aGVufX19OwogIHJldHVybiAnJHtvZmZlclRleHRPZihjb250ZXh0LCBvZmZlcil9LCAkdGhlbiAke3ByaWNlT2YoY29udGV4dCwgcGxhbil9JzsKfQoKLy8vIFRoZSBsYWJlbCBvZiB0aGUgYnV0dG9uIHRoYXQgYnV5cyBbcGxhbl06IGBTdGFydCBmcmVlIHRyaWFsYCBmb3IgYSBwbGFuCi8vLyB3aXRoIGEgZnJlZSB0cmlhbCwgYEJ1eWAgZm9yIGEgcGxhbiBwYWlkIG9uY2UsIGFuZCBgU3Vic2NyaWJlYCBmb3IgYW55Ci8vLyBvdGhlciBwbGFuIGFuZCB3aGlsZSB0aGVyZSBpcyBub25lLgpTdHJpbmcgcHVyY2hhc2VMYWJlbE9mKEJ1aWxkQ29udGV4dCBjb250ZXh0LCBQbGFuPyBwbGFuKSA9PiBzd2l0Y2ggKHBsYW4pIHsKICBQbGFuKGludHJvT2ZmZXI6IEludHJvT2ZmZXIoaXNGcmVlOiB0cnVlKSkgPT4ge3t7dGV4dF9zdGFydF90cmlhbH19fSwKICBQbGFuKHBlcmlvZDogbnVsbCkgPT4ge3t7dGV4dF9idXl9fX0sCiAgXyA9PiB7e3t0ZXh0X3N1YnNjcmliZX19fSwKfTsKCi8vLyBXaGF0IHRoZSB1c2VyIGFncmVlcyB0byBieSBidXlpbmcgW3BsYW5dLCBiZWxvdyB0aGUgYnV0dG9uOiB0aGF0IGEKLy8vIHBsYW4gcGFpZCBvbmNlIGlzIG5vIHN1YnNjcmlwdGlvbiwgb3IgdGhhdCB0aGUgcGxhbiByZW5ld3MgdW50aWwgdGhlCi8vLyB1c2VyIGNhbmNlbHMgaXQgaW4gdGhlIHN0b3JlIG9mIHRoZSBwbGF0Zm9ybSwgd2l0aCB3aGF0IHRoZSB1c2VyIHBheXMKLy8vIGFmdGVyIGFuIGludHJvIG9mZmVyLgpTdHJpbmcgdGVybXNUZXh0T2YoQnVpbGRDb250ZXh0IGNvbnRleHQsIFBsYW4gcGxhbikgewogIGlmIChwbGFuLnBlcmlvZCA9PSBudWxsKSByZXR1cm4ge3t7dGV4dF90ZXJtc19saWZldGltZX19fTsKICBmaW5hbCBzdG9yZSA9IHN3aXRjaCAoZGVmYXVsdFRhcmdldFBsYXRmb3JtKSB7CiAgICBUYXJnZXRQbGF0Zm9ybS5pT1MgfHwgVGFyZ2V0UGxhdGZvcm0ubWFjT1MgPT4ge3t7dGV4dF90ZXJtc19hcHBsZX19fSwKICAgIF8gPT4ge3t7dGV4dF90ZXJtc19nb29nbGV9fX0sCiAgfTsKICBmaW5hbCBvZmZlciA9IHN3aXRjaCAocGxhbi5pbnRyb09mZmVyKSB7CiAgICBudWxsID0+IG51bGwsCiAgICBJbnRyb09mZmVyKGlzRnJlZTogdHJ1ZSkgPT4ge3t7dGV4dF90ZXJtc190cmlhbH19fSwKICAgIEludHJvT2ZmZXIoKSA9PiB7e3t0ZXh0X3Rlcm1zX2ludHJvfX19LAogIH07CiAgcmV0dXJuIFtzdG9yZSwgP29mZmVyXS5qb2luKCcgJyk7Cn0KCi8vLyBUaGUgdGV4dCBvZiB0aGUgYXBwIGZvciBbcmVhc29uXSwgdGhlIHJlYXNvbiBvZiBhIGZhaWx1cmUgb2YgcHVyY2hhc2VzLgovLy8KLy8vIEl0IGhhcyBhIHRleHQgZm9yIGV2ZXJ5IHJlYXNvbjogYSByZWFzb24gdGhhdCB0aGUgYXBwIGdldHMgbGF0ZXIgaGFzCi8vLyBub25lIGhlcmUsIGFuZCB0aGUgYXBwIGRvZXMgbm90IGNvbXBpbGUgdW50aWwgaXQgaGFzLgpTdHJpbmcgZmFpbHVyZVRleHRPZihCdWlsZENvbnRleHQgY29udGV4dCwgUHVyY2hhc2VzRmFpbHVyZVJlYXNvbiByZWFzb24pID0+CiAgICBzd2l0Y2ggKHJlYXNvbikgewogICAgICBQdXJjaGFzZXNGYWlsdXJlUmVhc29uLm5ldHdvcmsgPT4ge3t7dGV4dF9mYWlsdXJlX25ldHdvcmt9fX0sCiAgICAgIFB1cmNoYXNlc0ZhaWx1cmVSZWFzb24ucGVuZGluZyA9PiB7e3t0ZXh0X3BlbmRpbmdfbm90aWNlfX19LAogICAgICBQdXJjaGFzZXNGYWlsdXJlUmVhc29uLmFscmVhZHlPd25lZCA9PiB7e3t0ZXh0X2ZhaWx1cmVfb3duZWR9fX0sCiAgICAgIFB1cmNoYXNlc0ZhaWx1cmVSZWFzb24ubm90QWxsb3dlZCA9PiB7e3t0ZXh0X2ZhaWx1cmVfbm90X2FsbG93ZWR9fX0sCiAgICAgIFB1cmNoYXNlc0ZhaWx1cmVSZWFzb24udW5hdmFpbGFibGUgPT4ge3t7dGV4dF9mYWlsdXJlX3VuYXZhaWxhYmxlfX19LAogICAgICBQdXJjaGFzZXNGYWlsdXJlUmVhc29uLnN0b3JlUHJvYmxlbSA9PiB7e3t0ZXh0X2ZhaWx1cmVfc3RvcmV9fX0sCiAgICAgIFB1cmNoYXNlc0ZhaWx1cmVSZWFzb24ubm90Q29uZmlndXJlZCA9PiB7e3t0ZXh0X2ZhaWx1cmVfbm90X3NldF91cH19fSwKICAgICAgUHVyY2hhc2VzRmFpbHVyZVJlYXNvbi51bmtub3duID0+IHt7e3RleHRfZmFpbHVyZV91bmtub3dufX19LAogICAgfTsKCi8vLyBUaGUgdGV4dCBvZiB0aGUgYXBwIGZvciBbbm90aWNlXS4KU3RyaW5nIG5vdGljZVRleHRPZihCdWlsZENvbnRleHQgY29udGV4dCwgUGF5d2FsbE5vdGljZSBub3RpY2UpID0+CiAgICBzd2l0Y2ggKG5vdGljZSkgewogICAgICBQYXl3YWxsTm90aWNlLnBlbmRpbmcgPT4ge3t7dGV4dF9wZW5kaW5nX25vdGljZX19fSwKICAgICAgUGF5d2FsbE5vdGljZS5ub3RoaW5nVG9SZXN0b3JlID0+IHt7e3RleHRfbm90aGluZ190b19yZXN0b3JlfX19LAogICAgfTsK",
      "type": "text"
    },
    {
      "path": "lib/features/paywall/paywall_view.dart",
      "data":
          "aW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvbWF0ZXJpYWwuZGFydCc7CgppbXBvcnQgJy4uLy4uL2NvcmUvcHVyY2hhc2VzL2FwcF9wdXJjaGFzZXMuZGFydCc7CmltcG9ydCAncGF5d2FsbF9jYXJkLmRhcnQnOwppbXBvcnQgJ3BheXdhbGxfbGlua3MuZGFydCc7CmltcG9ydCAncGF5d2FsbF9zdGF0ZS5kYXJ0JzsKaW1wb3J0ICdwYXl3YWxsX3RleHRzLmRhcnQnOwppbXBvcnQgJ3BheXdhbGxfd2lkZ2V0cy5kYXJ0JzsKCi8vLyBXaGF0IHRoZSBwYXl3YWxsIHNob3dzOiB0aGUgY2FyZCBvZiBwcmVtaXVtIGFjY2Vzcywgd2hhdCBpdCBnaXZlcywgYQovLy8gY2FyZCBmb3IgZWFjaCBwbGFuIG9mIHRoZSBjdXJyZW50IG9mZmVyLCB0aGUgYnV0dG9uIHRoYXQgYnV5cyB0aGUKLy8vIHNlbGVjdGVkIHBsYW4gd2l0aCB3aGF0IHRoZSBwbGFuIGNvc3RzIGFmdGVyIGl0cyBpbnRybyBvZmZlciBhbmQgdGhlCi8vLyB0ZXJtcyBvZiB0aGUgc3RvcmUsIGFuZCB0aGUgbGlua3MgdGhhdCByZXN0b3JlIHB1cmNoYXNlcyBhbmQgbGVhZCB0byB0aGUKLy8vIHRlcm1zIG9mIHVzZSBhbmQgdGhlIHByaXZhY3kgcG9saWN5LiBJdHMgY2xvc2UgYnV0dG9uIGlzIGF0IHRoZSB0b3AsCi8vLyBvdXRzaWRlIHdoYXQgc2Nyb2xscywgd2hlbmV2ZXIgdGhlcmUgaXMgYSBwYWdlIGJlbG93IHRvIGdvIGJhY2sgdG8uCi8vLwovLy8gSXQga2VlcHMgbm90aGluZyBvZiB0aGUgY2FsbHMgdGhlbXNlbHZlczogdGhlIHNjcmVlbiBnaXZlcyBpdCB0aGUgc3RhdGUKLy8vIG9mIHRoZSBwYXl3YWxsIGFuZCB0YWtlcyB3aGF0IHRoZSB1c2VyIGFza3MgZm9yLiBTbyBpdCBpcyB0aGUgc2FtZQovLy8gd2hpY2hldmVyIHdheSB0aGUgYXBwIG1hbmFnZXMgc3RhdGUuIEl0IG5ldmVyIGNsb3NlcyBpdHNlbGYgYWZ0ZXIgYQovLy8gcHVyY2hhc2Ugb3IgYSByZXN0b3JlOiB0aGUgcm91dGVyIGNsb3NlcyBpdCBvbmNlIHRoZSB1c2VyIGhhcyBwcmVtaXVtCi8vLyBhY2Nlc3MuCmNsYXNzIFBheXdhbGxWaWV3IGV4dGVuZHMgU3RhdGVmdWxXaWRnZXQgewogIC8vLyBDcmVhdGVzIHRoZSB2aWV3LgogIGNvbnN0IFBheXdhbGxWaWV3KHsKICAgIHJlcXVpcmVkIHRoaXMuc3RhdGUsCiAgICByZXF1aXJlZCB0aGlzLm9uU2VsZWN0LAogICAgcmVxdWlyZWQgdGhpcy5vblB1cmNoYXNlLAogICAgcmVxdWlyZWQgdGhpcy5vblJlc3RvcmUsCiAgICByZXF1aXJlZCB0aGlzLm9uUmV0cnksCiAgICByZXF1aXJlZCB0aGlzLm9uT3BlbkxpbmssCiAgICBzdXBlci5rZXksCiAgfSk7CgogIC8vLyBUaGUgc3RhdGUgb2YgdGhlIHBheXdhbGwuCiAgZmluYWwgUGF5d2FsbFN0YXRlIHN0YXRlOwoKICAvLy8gU2VsZWN0cyBhIHBsYW4uCiAgZmluYWwgdm9pZCBGdW5jdGlvbihQbGFuIHBsYW4pIG9uU2VsZWN0OwoKICAvLy8gQnV5cyB0aGUgc2VsZWN0ZWQgcGxhbi4KICBmaW5hbCBWb2lkQ2FsbGJhY2sgb25QdXJjaGFzZTsKCiAgLy8vIFJlc3RvcmVzIHdoYXQgdGhlIHN0b3JlIGFjY291bnQgb2YgdGhlIHVzZXIgYm91Z2h0LgogIGZpbmFsIFZvaWRDYWxsYmFjayBvblJlc3RvcmU7CgogIC8vLyBMb2FkcyB0aGUgcGxhbnMgYWdhaW4sIGFmdGVyIHRoZXkgZGlkIG5vdCBsb2FkLgogIGZpbmFsIFZvaWRDYWxsYmFjayBvblJldHJ5OwoKICAvLy8gT3BlbnMgYSBsaW5rIG9mIHRoZSBwYXl3YWxsIG91dHNpZGUgdGhlIGFwcC4KICBmaW5hbCB2b2lkIEZ1bmN0aW9uKFVyaSB1cmwpIG9uT3Blbkxpbms7CgogIEBvdmVycmlkZQogIFN0YXRlPFBheXdhbGxWaWV3PiBjcmVhdGVTdGF0ZSgpID0+IF9QYXl3YWxsVmlld1N0YXRlKCk7Cn0KCmNsYXNzIF9QYXl3YWxsVmlld1N0YXRlIGV4dGVuZHMgU3RhdGU8UGF5d2FsbFZpZXc+CiAgICB3aXRoIFRpY2tlclByb3ZpZGVyU3RhdGVNaXhpbiB7CiAgLy8vIExldHMgdGhlIHBhcnRzIG9mIHRoZSBwYXl3YWxsIHJpc2UgaW4gb25lIGFmdGVyIGFub3RoZXIsIG9uY2UuCiAgbGF0ZSBmaW5hbCBBbmltYXRpb25Db250cm9sbGVyIF9lbnRyYW5jZSA9IEFuaW1hdGlvbkNvbnRyb2xsZXIoCiAgICB2c3luYzogdGhpcywKICAgIGR1cmF0aW9uOiBjb25zdCBEdXJhdGlvbihtaWxsaXNlY29uZHM6IDE0MDApLAogICk7CgogIC8vLyBMZXRzIHRoZSBjYXJkcyBvZiB0aGUgcGxhbnMgY29tZSBpbiBvbmUgYWZ0ZXIgYW5vdGhlciBvbmNlIHRoZXkgYXJlCiAgLy8vIHRoZXJlLgogIGxhdGUgZmluYWwgQW5pbWF0aW9uQ29udHJvbGxlciBfcGxhbnNJbiA9IEFuaW1hdGlvbkNvbnRyb2xsZXIoCiAgICB2c3luYzogdGhpcywKICAgIGR1cmF0aW9uOiBjb25zdCBEdXJhdGlvbihtaWxsaXNlY29uZHM6IDcwMCksCiAgKTsKCiAgdmFyIF9zdGFydGVkID0gZmFsc2U7CgogIEBvdmVycmlkZQogIHZvaWQgZGlkQ2hhbmdlRGVwZW5kZW5jaWVzKCkgewogICAgc3VwZXIuZGlkQ2hhbmdlRGVwZW5kZW5jaWVzKCk7CiAgICBpZiAoX3N0YXJ0ZWQpIHJldHVybjsKICAgIF9zdGFydGVkID0gdHJ1ZTsKICAgIC8vIEFuIGFwcCB0aGF0IGFza3MgZm9yIGxlc3MgbW90aW9uIHNob3dzIHRoZSBwYXl3YWxsIGF0IG9uY2UuCiAgICBpZiAoTWVkaWFRdWVyeS5kaXNhYmxlQW5pbWF0aW9uc09mKGNvbnRleHQpKSB7CiAgICAgIF9lbnRyYW5jZS52YWx1ZSA9IDE7CiAgICAgIF9wbGFuc0luLnZhbHVlID0gMTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIFRoZSBlbnRyYW5jZSBzdGFydHMgd2hlbiB0aGUgcGF5d2FsbCBpcyBmaXJzdCBidWlsdC4gQSB3aWRnZXQgdGVzdAogICAgICAvLyB0aGF0IHN0YXJ0cyB0aGUgYXBwIGluIHJlYWwgdGltZSwgYXMgd2l0aCB0ZXN0ZXIucnVuQXN5bmMoKSwgZG9lcwogICAgICAvLyBzbyBvbmNlIGluIGl0cyBmaWxlOiB3aGVuIGEgc2Vjb25kIHRlc3Qgb2YgdGhlIGZpbGUgc3RhcnRzIHRoZSBhcHAKICAgICAgLy8gYWdhaW4sIHRoZSB0aW1lIG9mIHRoaXMgYW5pbWF0aW9uIHJ1bnMgYmFja3dhcmRzLCBhbmQgRmx1dHRlcgogICAgICAvLyBmYWlscyBhbiBhc3NlcnRpb24uCiAgICAgIF9lbnRyYW5jZS5mb3J3YXJkKCk7CiAgICAgIGlmICh3aWRnZXQuc3RhdGUucGxhbnMgIT0gbnVsbCkgX3BsYW5zSW4udmFsdWUgPSAxOwogICAgfQogIH0KCiAgQG92ZXJyaWRlCiAgdm9pZCBkaWRVcGRhdGVXaWRnZXQoUGF5d2FsbFZpZXcgb2xkV2lkZ2V0KSB7CiAgICBzdXBlci5kaWRVcGRhdGVXaWRnZXQob2xkV2lkZ2V0KTsKICAgIGlmIChvbGRXaWRnZXQuc3RhdGUucGxhbnMgPT0gbnVsbCAmJiB3aWRnZXQuc3RhdGUucGxhbnMgIT0gbnVsbCkgewogICAgICAvLyBBbiBhcHAgdGhhdCBhc2tzIGZvciBsZXNzIG1vdGlvbiBzaG93cyB0aGUgcGxhbnMgYXQgb25jZS4KICAgICAgaWYgKE1lZGlhUXVlcnkuZGlzYWJsZUFuaW1hdGlvbnNPZihjb250ZXh0KSkgewogICAgICAgIF9wbGFuc0luLnZhbHVlID0gMTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfcGxhbnNJbi5mb3J3YXJkKGZyb206IDApOwogICAgICB9CiAgICB9CiAgfQoKICBAb3ZlcnJpZGUKICB2b2lkIGRpc3Bvc2UoKSB7CiAgICBfZW50cmFuY2UuZGlzcG9zZSgpOwogICAgX3BsYW5zSW4uZGlzcG9zZSgpOwogICAgc3VwZXIuZGlzcG9zZSgpOwogIH0KCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICBmaW5hbCB0aGVtZSA9IFRoZW1lLm9mKGNvbnRleHQpOwogICAgZmluYWwgY29sb3JzID0gdGhlbWUuY29sb3JTY2hlbWU7CiAgICBmaW5hbCBzdGF0ZSA9IHdpZGdldC5zdGF0ZTsKICAgIGZpbmFsIGlkbGUgPSBzdGF0ZS5idXN5ID09IG51bGw7CiAgICBmaW5hbCBzZWxlY3RlZCA9IHN0YXRlLnNlbGVjdGVkOwogICAgLy8gV2hldGhlciBhIHBhZ2UgYmVsb3cgdGhpcyBvbmUgaXMgdGhlcmUgdG8gZ28gYmFjayB0by4KICAgIGZpbmFsIGNhbkNsb3NlID0gTW9kYWxSb3V0ZS5vZihjb250ZXh0KT8uaW1wbGllc0FwcEJhckRpc21pc3NhbCA/PyBmYWxzZTsKICAgIGZpbmFsIGZhaWx1cmUgPSBzdGF0ZS5mYWlsdXJlOwogICAgZmluYWwgbm90aWNlID0gc3RhdGUubm90aWNlOwogICAgZmluYWwgdGVybXMgPSBwYXl3YWxsVGVybXNVcmwoKTsKICAgIGZpbmFsIHByaXZhY3kgPSBwYXl3YWxsUHJpdmFjeVVybCgpOwogICAgZmluYWwgYWZ0ZXJPZmZlciA9IHNlbGVjdGVkID09IG51bGwKICAgICAgICA/IG51bGwKICAgICAgICA6IGFmdGVyT2ZmZXJUZXh0T2YoY29udGV4dCwgc2VsZWN0ZWQpOwogICAgZmluYWwgaW5zZXQgPSBNZWRpYVF1ZXJ5LnBhZGRpbmdPZihjb250ZXh0KS5ib3R0b207CiAgICAvLyBPbiBhIHBob25lIHdpdGggcm9vbSBmb3IgaXQsIHRoZSBidXR0b24gc3RheXMgaW4gc2lnaHQgYXQgdGhlIGJvdHRvbQogICAgLy8gd2hpbGUgdGhlIHJlc3Qgc2Nyb2xscy4gT24gYSBzbWFsbCBwaG9uZSwgb3Igd2l0aCBhIGxhcmdlIHRleHQgc2l6ZSwKICAgIC8vIGl0IHNjcm9sbHMgd2l0aCB0aGUgcmVzdCwgc28gdGhhdCB0aGUgcGxhbnMgaGF2ZSByb29tLgogICAgZmluYWwgcGlubmVkID0KICAgICAgICBNZWRpYVF1ZXJ5LnNpemVPZihjb250ZXh0KS5oZWlnaHQgPj0gNjQwICYmCiAgICAgICAgTWVkaWFRdWVyeS50ZXh0U2NhbGVyT2YoY29udGV4dCkuc2NhbGUoMTYpIDw9IDI0OwogICAgLy8gV2hhdCB0aGUgbGFzdCBjYWxsIGVuZGVkIHdpdGgsIHN1Y2ggYXMgYSByZXN0b3JlIHRoYXQgZm91bmQgbm90aGluZy4KICAgIGZpbmFsIG1lc3NhZ2UgPSBQYXl3YWxsTWVzc2FnZSgKICAgICAgdGV4dDogZmFpbHVyZSAhPSBudWxsCiAgICAgICAgICA/IGZhaWx1cmVUZXh0T2YoY29udGV4dCwgZmFpbHVyZS5yZWFzb24pCiAgICAgICAgICA6IG5vdGljZSAhPSBudWxsCiAgICAgICAgICA/IG5vdGljZVRleHRPZihjb250ZXh0LCBub3RpY2UpCiAgICAgICAgICA6IG51bGwsCiAgICAgIGZhaWxlZDogZmFpbHVyZSAhPSBudWxsLAogICAgICBoaW50OiBmYWlsdXJlPy5kZXZlbG9wZXJIaW50LAogICAgKTsKICAgIC8vIFdoYXQgYnV5czogdGhlIG1lc3NhZ2UsIHRoZSBidXR0b24gYW5kIHdoYXQgdGhlIHNlbGVjdGVkIHBsYW4gY29zdHMKICAgIC8vIGFmdGVyIGl0cyBpbnRybyBvZmZlci4gV2hpbGUgdGhlIHBsYW5zIGRpZCBub3QgbG9hZCwgdGhlcmUgaXMgbm90aGluZwogICAgLy8gdG8gYnV5LCBhbmQgdGhlIG1lc3NhZ2UgaXMgYWJvdmUgdGhlIGxpbmtzLgogICAgZmluYWwgcHVyY2hhc2UgPSBzdGF0ZS5sb2FkRmFpbHVyZSAhPSBudWxsCiAgICAgICAgPyBudWxsCiAgICAgICAgOiBDb2x1bW4oCiAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0cmV0Y2gsCiAgICAgICAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgICAgICAgbWVzc2FnZSwKICAgICAgICAgICAgICBQdXJjaGFzZUJ1dHRvbigKICAgICAgICAgICAgICAgIGxhYmVsOiBwdXJjaGFzZUxhYmVsT2YoY29udGV4dCwgc2VsZWN0ZWQpLAogICAgICAgICAgICAgICAgYnVzeTogc3RhdGUuYnVzeSA9PSBQYXl3YWxsQWN0aW9uLnB1cmNoYXNlLAogICAgICAgICAgICAgICAgb25QcmVzc2VkOiBpZGxlICYmIHNlbGVjdGVkICE9IG51bGwgPyB3aWRnZXQub25QdXJjaGFzZSA6IG51bGwsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBpZiAoYWZ0ZXJPZmZlciAhPSBudWxsKSAuLi5bCiAgICAgICAgICAgICAgICBjb25zdCBTaXplZEJveChoZWlnaHQ6IDEwKSwKICAgICAgICAgICAgICAgIFBheXdhbGxXb3JkcygKICAgICAgICAgICAgICAgICAgYWZ0ZXJPZmZlciwKICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBUZXh0QWxpZ24uY2VudGVyLAogICAgICAgICAgICAgICAgICBzdHlsZTogdGhlbWUudGV4dFRoZW1lLmJvZHlNZWRpdW0/LmNvcHlXaXRoKAogICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb2xvcnMub25TdXJmYWNlLAogICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IEZvbnRXZWlnaHQudzUwMCwKICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICk7CiAgICAvLyBXaGF0IHRoZSB1c2VyIGFncmVlcyB0bywgYW5kIHRoZSBsaW5rcy4KICAgIGZpbmFsIGRldGFpbHMgPSBDb2x1bW4oCiAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0cmV0Y2gsCiAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgaWYgKHB1cmNoYXNlID09IG51bGwpIG1lc3NhZ2UsCiAgICAgICAgaWYgKHNlbGVjdGVkICE9IG51bGwgJiYgc3RhdGUubG9hZEZhaWx1cmUgPT0gbnVsbCkgLi4uWwogICAgICAgICAgUGF5d2FsbFdvcmRzKAogICAgICAgICAgICB0ZXJtc1RleHRPZihjb250ZXh0LCBzZWxlY3RlZCksCiAgICAgICAgICAgIHRleHRBbGlnbjogVGV4dEFsaWduLmNlbnRlciwKICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS5ib2R5U21hbGw/LmNvcHlXaXRoKAogICAgICAgICAgICAgIGNvbG9yOiBjb2xvcnMub25TdXJmYWNlVmFyaWFudCwKICAgICAgICAgICAgKSwKICAgICAgICAgICksCiAgICAgICAgICBjb25zdCBTaXplZEJveChoZWlnaHQ6IDEyKSwKICAgICAgICBdLAogICAgICAgIF9MaW5rcygKICAgICAgICAgIGxpbmtzOiBbCiAgICAgICAgICAgIC8vIFdoaWxlIHRoZSBwbGFucyBsb2FkLCB0aGVyZSBpcyBubyByZXN0b3JlIGVpdGhlciwgc28gdGhhdCBubwogICAgICAgICAgICAvLyBwbGFuIGNvbWVzIGluIHRvIGJlIGJvdWdodCB3aGlsZSBvbmUgaXMgb24gaXRzIHdheS4KICAgICAgICAgICAgUGF5d2FsbExpbmsoCiAgICAgICAgICAgICAgbGFiZWw6IHt7e3RleHRfcmVzdG9yZX19fSwKICAgICAgICAgICAgICBidXN5OiBzdGF0ZS5idXN5ID09IFBheXdhbGxBY3Rpb24ucmVzdG9yZSwKICAgICAgICAgICAgICBvblByZXNzZWQ6IGlkbGUgJiYgIXN0YXRlLmxvYWRpbmcgPyB3aWRnZXQub25SZXN0b3JlIDogbnVsbCwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgaWYgKHRlcm1zICE9IG51bGwpCiAgICAgICAgICAgICAgUGF5d2FsbExpbmsoCiAgICAgICAgICAgICAgICBsYWJlbDoge3t7dGV4dF90ZXJtc319fSwKICAgICAgICAgICAgICAgIG9uUHJlc3NlZDogKCkgPT4gd2lkZ2V0Lm9uT3BlbkxpbmsodGVybXMpLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIGlmIChwcml2YWN5ICE9IG51bGwpCiAgICAgICAgICAgICAgUGF5d2FsbExpbmsoCiAgICAgICAgICAgICAgICBsYWJlbDoge3t7dGV4dF9wcml2YWN5fX19LAogICAgICAgICAgICAgICAgb25QcmVzc2VkOiAoKSA9PiB3aWRnZXQub25PcGVuTGluayhwcml2YWN5KSwKICAgICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICApLAogICAgICBdLAogICAgKTsKICAgIHJldHVybiBTY2FmZm9sZCgKICAgICAgYm9keTogU2FmZUFyZWEoCiAgICAgICAgYm90dG9tOiBmYWxzZSwKICAgICAgICBjaGlsZDogQ29sdW1uKAogICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgLy8gVGhlIHdheSBvdXQgc3RheXMgaW4gc2lnaHQgb24gYW55IHBob25lLCBvdXRzaWRlIHdoYXQKICAgICAgICAgICAgLy8gc2Nyb2xscy4KICAgICAgICAgICAgU2l6ZWRCb3goCiAgICAgICAgICAgICAgaGVpZ2h0OiA1MiwKICAgICAgICAgICAgICBjaGlsZDogQWxpZ24oCiAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IEFsaWdubWVudERpcmVjdGlvbmFsLmNlbnRlclN0YXJ0LAogICAgICAgICAgICAgICAgY2hpbGQ6IGNhbkNsb3NlCiAgICAgICAgICAgICAgICAgICAgPyBQYWRkaW5nKAogICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBjb25zdCBFZGdlSW5zZXRzRGlyZWN0aW9uYWwub25seShzdGFydDogOCksCiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkOiBJY29uQnV0dG9uKAogICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHt7e3RleHRfY2xvc2V9fX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogY29uc3QgSWNvbihJY29ucy5jbG9zZV9yb3VuZGVkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBvblByZXNzZWQ6ICgpID0+IE5hdmlnYXRvci5tYXliZVBvcChjb250ZXh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICA6IG51bGwsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgRXhwYW5kZWQoCiAgICAgICAgICAgICAgY2hpbGQ6IFNpbmdsZUNoaWxkU2Nyb2xsVmlldygKICAgICAgICAgICAgICAgIC8vIFdpdGhvdXQgdGhlIGJ1dHRvbiBiZWxvdyBpdCwgdGhlIHBheXdhbGwgc2Nyb2xscyB1bmRlcgogICAgICAgICAgICAgICAgLy8gd2hhdCBjb3ZlcnMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLCBzdWNoIGFzIHRoZSBiYXIgb2YKICAgICAgICAgICAgICAgIC8vIHRoZSBob21lIGdlc3R1cmUsIGFuZCBlbmRzIGFib3ZlIGl0LgogICAgICAgICAgICAgICAgcGFkZGluZzogRWRnZUluc2V0cy5mcm9tTFRSQigKICAgICAgICAgICAgICAgICAgMjAsCiAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgIDIwLAogICAgICAgICAgICAgICAgICBwaW5uZWQgJiYgcHVyY2hhc2UgIT0gbnVsbCA/IDI0IDogMzIgKyBpbnNldCwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBjaGlsZDogX1Bob25lKAogICAgICAgICAgICAgICAgICBjaGlsZDogQ29sdW1uKAogICAgICAgICAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0cmV0Y2gsCiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICAgICAgICAgIFJpc2UoCiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogX2VudHJhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IFByZW1pdW1DYXJkKAogICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogX2VudHJhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHByZW1pdW06IHt7e3RleHRfcHJlbWl1bX19fSwKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaXplZEJveChoZWlnaHQ6IDI0KSwKICAgICAgICAgICAgICAgICAgICAgIFJpc2UoCiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogX2VudHJhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IF9CZW5lZml0cygKICAgICAgICAgICAgICAgICAgICAgICAgICBiZW5lZml0czogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAge3t7dGV4dF9iZW5lZml0X2FsbH19fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7e3RleHRfYmVuZWZpdF9uZXd9fX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3t0ZXh0X2JlbmVmaXRfc3VwcG9ydH19fSwKICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogMjQpLAogICAgICAgICAgICAgICAgICAgICAgUmlzZSgKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBfZW50cmFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLAogICAgICAgICAgICAgICAgICAgICAgICBjaGlsZDogX3BsYW5zT2YoY29udGV4dCwgc3RhdGUpLAogICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogMTYpLAogICAgICAgICAgICAgICAgICAgICAgaWYgKCFwaW5uZWQgJiYgcHVyY2hhc2UgIT0gbnVsbCkgLi4uWwogICAgICAgICAgICAgICAgICAgICAgICBSaXNlKGFuaW1hdGlvbjogX2VudHJhbmNlLCBvcmRlcjogMywgY2hpbGQ6IHB1cmNoYXNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiAxMiksCiAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgUmlzZShhbmltYXRpb246IF9lbnRyYW5jZSwgb3JkZXI6IDQsIGNoaWxkOiBkZXRhaWxzKSwKICAgICAgICAgICAgICAgICAgICAgIERldmVsb3Blck5vdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIGhpbnQ6IHN0YXRlLmxvYWRGYWlsdXJlPy5kZXZlbG9wZXJIaW50LAogICAgICAgICAgICAgICAgICAgICAgICBrZXlzOiBtaXNzaW5nUGF5d2FsbEtleXMoKSwKICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgaWYgKHBpbm5lZCAmJiBwdXJjaGFzZSAhPSBudWxsKQogICAgICAgICAgICAgIFJpc2UoCiAgICAgICAgICAgICAgICBhbmltYXRpb246IF9lbnRyYW5jZSwKICAgICAgICAgICAgICAgIG9yZGVyOiAzLAogICAgICAgICAgICAgICAgY2hpbGQ6IERlY29yYXRlZEJveCgKICAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbjogQm94RGVjb3JhdGlvbigKICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3JzLnN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBCb3JkZXIoCiAgICAgICAgICAgICAgICAgICAgICB0b3A6IEJvcmRlclNpZGUoY29sb3I6IGNvbG9ycy5vdXRsaW5lVmFyaWFudCksCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgY2hpbGQ6IFBhZGRpbmcoCiAgICAgICAgICAgICAgICAgICAgLy8gQWJvdmUgd2hhdCBjb3ZlcnMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLgogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IEVkZ2VJbnNldHMuZnJvbUxUUkIoMjAsIDEyLCAyMCwgMTIgKyBpbnNldCksCiAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IF9QaG9uZShjaGlsZDogcHVyY2hhc2UpLAogICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICApLAogICAgICApLAogICAgKTsKICB9CgogIC8vLyBUaGUgcGxhbnMgb2YgW3N0YXRlXTogZ3JleSBjYXJkcyB3aGlsZSB0aGV5IGxvYWQsIGEgY2FyZCBmb3IgZWFjaCBvZgogIC8vLyB0aGVtLCBvciB3aGF0IHRoZSBwYXl3YWxsIHNheXMgd2hlbiB0aGV5IGRpZCBub3QgbG9hZCwgd2l0aCB0aGUgYnV0dG9uCiAgLy8vIHRoYXQgbG9hZHMgdGhlbSBhZ2Fpbi4KICBXaWRnZXQgX3BsYW5zT2YoQnVpbGRDb250ZXh0IGNvbnRleHQsIFBheXdhbGxTdGF0ZSBzdGF0ZSkgewogICAgZmluYWwgcGxhbnMgPSBzdGF0ZS5wbGFuczsKICAgIGZpbmFsIFdpZGdldCBzaG93bjsKICAgIGlmIChwbGFucyAhPSBudWxsKSB7CiAgICAgIHNob3duID0gQ29sdW1uKAogICAgICAgIGtleTogY29uc3QgVmFsdWVLZXkoJ3BsYW5zJyksCiAgICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBDcm9zc0F4aXNBbGlnbm1lbnQuc3RyZXRjaCwKICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgZm9yIChmaW5hbCAoaW5kZXgsIHBsYW4pIGluIHBsYW5zLmluZGV4ZWQpIC4uLlsKICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiAxMiksCiAgICAgICAgICAgIFJpc2UoCiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBfcGxhbnNJbiwKICAgICAgICAgICAgICBvcmRlcjogaW5kZXgsCiAgICAgICAgICAgICAgY2hpbGQ6IFBsYW5DYXJkKAogICAgICAgICAgICAgICAgbmFtZTogcGxhbk5hbWVPZihjb250ZXh0LCBwbGFuKSwKICAgICAgICAgICAgICAgIHByaWNlOiBwbGFuLnByaWNlLAogICAgICAgICAgICAgICAgc3VmZml4OiBwcmljZVN1ZmZpeE9mKGNvbnRleHQsIHBsYW4ucGVyaW9kKSwKICAgICAgICAgICAgICAgIG9mZmVyOiBzd2l0Y2ggKHBsYW4uaW50cm9PZmZlcikgewogICAgICAgICAgICAgICAgICBmaW5hbCBvZmZlcj8gPT4gb2ZmZXJUZXh0T2YoY29udGV4dCwgb2ZmZXIpLAogICAgICAgICAgICAgICAgICBudWxsID0+IG51bGwsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmFkZ2U6IGlzQmVzdFZhbHVlKHBsYW4sIHBsYW5zKSA/IHt7e3RleHRfYmVzdF92YWx1ZX19fSA6IG51bGwsCiAgICAgICAgICAgICAgICBzZWxlY3RlZDogcGxhbiA9PSBzdGF0ZS5zZWxlY3RlZCwKICAgICAgICAgICAgICAgIG9uVGFwOiBzdGF0ZS5idXN5ID09IG51bGwgPyAoKSA9PiB3aWRnZXQub25TZWxlY3QocGxhbikgOiBudWxsLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgIF0sCiAgICAgICk7CiAgICB9IGVsc2UgaWYgKHN0YXRlLmxvYWRGYWlsdXJlICE9IG51bGwpIHsKICAgICAgc2hvd24gPSBfVW5hdmFpbGFibGUoCiAgICAgICAga2V5OiBjb25zdCBWYWx1ZUtleSgndW5hdmFpbGFibGUnKSwKICAgICAgICBvblJldHJ5OiB3aWRnZXQub25SZXRyeSwKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIHNob3duID0gY29uc3QgQ29sdW1uKAogICAgICAgIGtleTogVmFsdWVLZXkoJ2xvYWRpbmcnKSwKICAgICAgICBjcm9zc0F4aXNBbGlnbm1lbnQ6IENyb3NzQXhpc0FsaWdubWVudC5zdHJldGNoLAogICAgICAgIGNoaWxkcmVuOiBbUGxhblNrZWxldG9uKCksIFNpemVkQm94KGhlaWdodDogMTIpLCBQbGFuU2tlbGV0b24oKV0sCiAgICAgICk7CiAgICB9CiAgICBpZiAoTWVkaWFRdWVyeS5kaXNhYmxlQW5pbWF0aW9uc09mKGNvbnRleHQpKSByZXR1cm4gc2hvd247CiAgICByZXR1cm4gQW5pbWF0ZWRTd2l0Y2hlcigKICAgICAgZHVyYXRpb246IER1cmF0aW9ucy5tZWRpdW0yLAogICAgICAvLyBUaGUgcGxhbnMgdGhhdCBjb21lIGluIGFuZCB0aGUgc2tlbGV0b24gdGhhdCBsZWF2ZXMgYXJlIGFzIHdpZGUKICAgICAgLy8gYXMgdGhlIHBheXdhbGwuCiAgICAgIGxheW91dEJ1aWxkZXI6IChjdXJyZW50LCBwcmV2aW91cykgPT4gU3RhY2soCiAgICAgICAgYWxpZ25tZW50OiBBbGlnbm1lbnQudG9wQ2VudGVyLAogICAgICAgIGZpdDogU3RhY2tGaXQucGFzc3Rocm91Z2gsCiAgICAgICAgY2hpbGRyZW46IFsuLi5wcmV2aW91cywgP2N1cnJlbnRdLAogICAgICApLAogICAgICBjaGlsZDogc2hvd24sCiAgICApOwogIH0KfQoKLy8vIFtjaGlsZF0gaW4gdGhlIG1pZGRsZSBvZiB0aGUgc2NyZWVuLCBubyB3aWRlciB0aGFuIGEgcGhvbmUuCmNsYXNzIF9QaG9uZSBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgY29uc3QgX1Bob25lKHtyZXF1aXJlZCB0aGlzLmNoaWxkfSk7CgogIGZpbmFsIFdpZGdldCBjaGlsZDsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSA9PiBDZW50ZXIoCiAgICBjaGlsZDogQ29uc3RyYWluZWRCb3goCiAgICAgIGNvbnN0cmFpbnRzOiBjb25zdCBCb3hDb25zdHJhaW50cyhtYXhXaWR0aDogNDgwKSwKICAgICAgY2hpbGQ6IGNoaWxkLAogICAgKSwKICApOwp9CgovLy8gV2hhdCBwcmVtaXVtIGFjY2VzcyBnaXZlcywgb25lIGxpbmUgYmVsb3cgdGhlIG90aGVyLCBlYWNoIHdpdGggYSBjaGVjawovLy8gaW4gdGhlIGFjY2VudCBvZiB0aGUgdGhlbWUgb2YgdGhlIGFwcC4KY2xhc3MgX0JlbmVmaXRzIGV4dGVuZHMgU3RhdGVsZXNzV2lkZ2V0IHsKICBjb25zdCBfQmVuZWZpdHMoe3JlcXVpcmVkIHRoaXMuYmVuZWZpdHN9KTsKCiAgZmluYWwgTGlzdDxTdHJpbmc+IGJlbmVmaXRzOwoKICBAb3ZlcnJpZGUKICBXaWRnZXQgYnVpbGQoQnVpbGRDb250ZXh0IGNvbnRleHQpIHsKICAgIGZpbmFsIHRoZW1lID0gVGhlbWUub2YoY29udGV4dCk7CiAgICBmaW5hbCBjb2xvcnMgPSB0aGVtZS5jb2xvclNjaGVtZTsKICAgIHJldHVybiBDb2x1bW4oCiAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0cmV0Y2gsCiAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgZm9yIChmaW5hbCAoaW5kZXgsIGJlbmVmaXQpIGluIGJlbmVmaXRzLmluZGV4ZWQpIC4uLlsKICAgICAgICAgIGlmIChpbmRleCA+IDApIGNvbnN0IFNpemVkQm94KGhlaWdodDogMTIpLAogICAgICAgICAgUm93KAogICAgICAgICAgICBjcm9zc0F4aXNBbGlnbm1lbnQ6IENyb3NzQXhpc0FsaWdubWVudC5zdGFydCwKICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICBDb250YWluZXIoCiAgICAgICAgICAgICAgICB3aWR0aDogMjQsCiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0LAogICAgICAgICAgICAgICAgZGVjb3JhdGlvbjogQm94RGVjb3JhdGlvbigKICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9ycy5zZWNvbmRhcnlDb250YWluZXIsCiAgICAgICAgICAgICAgICAgIHNoYXBlOiBCb3hTaGFwZS5jaXJjbGUsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgY2hpbGQ6IEljb24oCiAgICAgICAgICAgICAgICAgIEljb25zLmNoZWNrX3JvdW5kZWQsCiAgICAgICAgICAgICAgICAgIHNpemU6IDE2LAogICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3JzLm9uU2Vjb25kYXJ5Q29udGFpbmVyLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KHdpZHRoOiAxMiksCiAgICAgICAgICAgICAgLy8gV2l0aCBhIGxhcmdlIHRleHQgc2l6ZSwgYSBsb25nIHdvcmQgZ2V0cyBzbWFsbGVyIHJhdGhlcgogICAgICAgICAgICAgIC8vIHRoYW4gYnJlYWsuCiAgICAgICAgICAgICAgRXhwYW5kZWQoCiAgICAgICAgICAgICAgICBjaGlsZDogUGF5d2FsbFdvcmRzKGJlbmVmaXQsIHN0eWxlOiB0aGVtZS50ZXh0VGhlbWUuYm9keUxhcmdlKSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICBdLAogICAgICBdLAogICAgKTsKICB9Cn0KCi8vLyBXaGF0IHRoZSBwYXl3YWxsIHNob3dzIGluIHRoZSBwbGFjZSBvZiB0aGUgcGxhbnMgd2hlbiB0aGV5IGRpZCBub3QKLy8vIGxvYWQ6IHRoYXQgdGhleSBhcmUgbm90IGF2YWlsYWJsZSwgYW5kIHRoZSBidXR0b24gdGhhdCBsb2FkcyB0aGVtCi8vLyBhZ2Fpbi4KY2xhc3MgX1VuYXZhaWxhYmxlIGV4dGVuZHMgU3RhdGVsZXNzV2lkZ2V0IHsKICBjb25zdCBfVW5hdmFpbGFibGUoe3JlcXVpcmVkIHRoaXMub25SZXRyeSwgc3VwZXIua2V5fSk7CgogIGZpbmFsIFZvaWRDYWxsYmFjayBvblJldHJ5OwoKICBAb3ZlcnJpZGUKICBXaWRnZXQgYnVpbGQoQnVpbGRDb250ZXh0IGNvbnRleHQpIHsKICAgIGZpbmFsIHRoZW1lID0gVGhlbWUub2YoY29udGV4dCk7CiAgICBmaW5hbCBjb2xvcnMgPSB0aGVtZS5jb2xvclNjaGVtZTsKICAgIC8vIEFzIHdpZGUgYXMgdGhlIHBsYW5zIHdvdWxkIGJlLgogICAgcmV0dXJuIENhcmQoCiAgICAgIGNoaWxkOiBQYWRkaW5nKAogICAgICAgIHBhZGRpbmc6IGNvbnN0IEVkZ2VJbnNldHMuYWxsKDIwKSwKICAgICAgICBjaGlsZDogQ29sdW1uKAogICAgICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBDcm9zc0F4aXNBbGlnbm1lbnQuc3RyZXRjaCwKICAgICAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgICAgIEljb24oCiAgICAgICAgICAgICAgSWNvbnMuY2xvdWRfb2ZmX3JvdW5kZWQsCiAgICAgICAgICAgICAgc2l6ZTogMzIsCiAgICAgICAgICAgICAgY29sb3I6IGNvbG9ycy5vblN1cmZhY2VWYXJpYW50LAogICAgICAgICAgICApLAogICAgICAgICAgICBjb25zdCBTaXplZEJveChoZWlnaHQ6IDEyKSwKICAgICAgICAgICAgU2VtYW50aWNzKAogICAgICAgICAgICAgIGxpdmVSZWdpb246IHRydWUsCiAgICAgICAgICAgICAgY2hpbGQ6IFRleHQoCiAgICAgICAgICAgICAgICB7e3t0ZXh0X3BsYW5zX3VuYXZhaWxhYmxlfX19LAogICAgICAgICAgICAgICAgdGV4dEFsaWduOiBUZXh0QWxpZ24uY2VudGVyLAogICAgICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS5ib2R5TGFyZ2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiAxMiksCiAgICAgICAgICAgIFRleHRCdXR0b24uaWNvbigKICAgICAgICAgICAgICBvblByZXNzZWQ6IG9uUmV0cnksCiAgICAgICAgICAgICAgaWNvbjogY29uc3QgSWNvbihJY29ucy5yZWZyZXNoX3JvdW5kZWQpLAogICAgICAgICAgICAgIGxhYmVsOiBQYXl3YWxsV29yZHMoCiAgICAgICAgICAgICAgICB7e3t0ZXh0X3RyeV9hZ2Fpbn19fSwKICAgICAgICAgICAgICAgIHRleHRBbGlnbjogVGV4dEFsaWduLmNlbnRlciwKICAgICAgICAgICAgICApLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICApLAogICAgICApLAogICAgKTsKICB9Cn0KCi8vLyBUaGUgbGlua3MgYmVsb3cgdGhlIGJ1dHRvbiBvZiB0aGUgcGF5d2FsbCwgc2lkZSBieSBzaWRlIHdpdGggYSBkb3QKLy8vIGJldHdlZW4gdGhlbSwgb24gbW9yZSBsaW5lcyB3aGVyZSB0aGV5IGRvIG5vdCBmaXQgb25lLgpjbGFzcyBfTGlua3MgZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIGNvbnN0IF9MaW5rcyh7cmVxdWlyZWQgdGhpcy5saW5rc30pOwoKICBmaW5hbCBMaXN0PFdpZGdldD4gbGlua3M7CgogIEBvdmVycmlkZQogIFdpZGdldCBidWlsZChCdWlsZENvbnRleHQgY29udGV4dCkgewogICAgZmluYWwgY29sb3JzID0gVGhlbWUub2YoY29udGV4dCkuY29sb3JTY2hlbWU7CiAgICByZXR1cm4gV3JhcCgKICAgICAgYWxpZ25tZW50OiBXcmFwQWxpZ25tZW50LmNlbnRlciwKICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBXcmFwQ3Jvc3NBbGlnbm1lbnQuY2VudGVyLAogICAgICBjaGlsZHJlbjogWwogICAgICAgIGZvciAoZmluYWwgKGluZGV4LCBsaW5rKSBpbiBsaW5rcy5pbmRleGVkKSAuLi5bCiAgICAgICAgICBpZiAoaW5kZXggPiAwKQogICAgICAgICAgICBFeGNsdWRlU2VtYW50aWNzKAogICAgICAgICAgICAgIGNoaWxkOiBUZXh0KCfCtycsIHN0eWxlOiBUZXh0U3R5bGUoY29sb3I6IGNvbG9ycy5vdXRsaW5lKSksCiAgICAgICAgICAgICksCiAgICAgICAgICBsaW5rLAogICAgICAgIF0sCiAgICAgIF0sCiAgICApOwogIH0KfQo=",
      "type": "text"
    },
    {
      "path": "lib/features/paywall/paywall_widgets.dart",
      "data":
          "aW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvZm91bmRhdGlvbi5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvbWF0ZXJpYWwuZGFydCc7CmltcG9ydCAncGFja2FnZTpmbHV0dGVyL3NlcnZpY2VzLmRhcnQnOwoKLy8vIFRoZSBmb250IG9mIGEga2V5IG9mIGAuZW52YCBhbmQgb2YgYSBoaW50IGZvciB0aGUgZGV2ZWxvcGVyOiB0aGUKLy8vIG1vbm9zcGFjZWQgZm9udCBvZiB0aGUgZGV2aWNlLCB3aG9zZSBuYW1lIGRpZmZlcnMgYmV0d2VlbiB0aGUKLy8vIHBsYXRmb3Jtcy4KY29uc3QgbW9ub3NwYWNlID0gVGV4dFN0eWxlKAogIGZvbnRGYW1pbHk6ICdtb25vc3BhY2UnLAogIGZvbnRGYW1pbHlGYWxsYmFjazogWydNZW5sbycsICdDb3VyaWVyJ10sCik7CgovLy8gVGhlIHdoaXRlIHNwYWNlIGF0IHdoaWNoIGEgbGluZSBvZiB0ZXh0IG1heSBicmVhazogZXZlcnkgd2hpdGUgc3BhY2UgYnV0Ci8vLyB0aGUgbm8tYnJlYWsgc3BhY2VzLgpmaW5hbCBSZWdFeHAgX2JyZWFrcyA9IFJlZ0V4cChyJ1teXFNcdTAwQTBcdTIwMDdcdTIwMkZdKycpOwoKLy8vIEEgdGV4dCB0aGF0IGtlZXBzIGl0cyB3b3JkcyB3aG9sZTogaXQgYnJlYWtzIGJldHdlZW4gaXRzIHdvcmRzIGFuZCBuZXZlcgovLy8gaW5zaWRlIG9uZS4KLy8vCi8vLyBBIHdvcmQgaXMgd2hhdCBzdGFuZHMgYmV0d2VlbiB0d28gc3BhY2VzIGF0IHdoaWNoIGEgbGluZSBtYXkgYnJlYWssIHN1Y2gKLy8vIGFzIGEgc3BhY2UsIGEgdGFiIG9yIGEgbGluZSBicmVhay4gQSBuby1icmVhayBzcGFjZSBrZWVwcyB0aGUgd29yZHMgb24KLy8vIGVhY2ggc2lkZSBvZiBpdCB0b2dldGhlciwgYXMgaW4gYSBwcmljZSB0aGF0IHRoZSBzdG9yZSBnaXZlcy4KLy8vCi8vLyBJdCBncm93cyB3aXRoIHRoZSB0ZXh0IHNpemUgb2YgdGhlIGRldmljZSwgYnkgW21heFNjYWxlRmFjdG9yXSBhdCBtb3N0LgovLy8gV2hlcmUgaXRzIGxvbmdlc3Qgd29yZCB3b3VsZCBzdGlsbCBub3QgZml0IHRoZSB3aWR0aCB0aGF0IHRoZSB0ZXh0IGhhcywKLy8vIGFzIG9uIGEgbmFycm93IHBob25lIHdpdGggYSBsYXJnZSB0ZXh0IHNpemUsIHRoZSB0ZXh0IGlzIGFzIGxhcmdlIGFzCi8vLyB0aGF0IHdvcmQgYWxsb3dzLgpjbGFzcyBQYXl3YWxsV29yZHMgZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIC8vLyBDcmVhdGVzIHRoZSB0ZXh0LgogIGNvbnN0IFBheXdhbGxXb3JkcygKICAgIHRoaXMudGV4dCwgewogICAgdGhpcy5zdHlsZSwKICAgIHRoaXMudGV4dEFsaWduLAogICAgdGhpcy5tYXhTY2FsZUZhY3RvciA9IGRvdWJsZS5pbmZpbml0eSwKICAgIHN1cGVyLmtleSwKICB9KTsKCiAgLy8vIFRoZSB0ZXh0LgogIGZpbmFsIFN0cmluZyB0ZXh0OwoKICAvLy8gVGhlIHN0eWxlIG9mIHRoZSB0ZXh0LCBvdmVyIHRoYXQgb2YgdGhlIHRleHQgYXJvdW5kIGl0LiBXaXRoIG5vbmUsCiAgLy8vIHRoZSB0ZXh0IGlzIGFzIHRoZSB0ZXh0IGFyb3VuZCBpdCwgYXMgdGhlIGxhYmVsIG9mIGEgYnV0dG9uIGlzIGluIHRoZQogIC8vLyBzdHlsZSB0aGF0IHRoZSB0aGVtZSBvZiB0aGUgYXBwIGdpdmVzIHRoZSBidXR0b24uCiAgZmluYWwgVGV4dFN0eWxlPyBzdHlsZTsKCiAgLy8vIEhvdyB0aGUgbGluZXMgb2YgdGhlIHRleHQgYXJlIGFsaWduZWQuCiAgZmluYWwgVGV4dEFsaWduPyB0ZXh0QWxpZ247CgogIC8vLyBCeSBob3cgbXVjaCB0aGUgdGV4dCBncm93cyBhdCBtb3N0IHdpdGggdGhlIHRleHQgc2l6ZSBvZiB0aGUgZGV2aWNlLgogIGZpbmFsIGRvdWJsZSBtYXhTY2FsZUZhY3RvcjsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICAvLyBUaGUgc3R5bGUgaW4gd2hpY2ggYSBUZXh0IHBhaW50czogb3ZlciB0aGF0IG9mIHRoZSB0ZXh0IGFyb3VuZCBpdCwKICAgIC8vIGFuZCBib2xkIGZvciBhIHVzZXIgd2hvIGFza3MgZm9yIGJvbGQgdGV4dC4KICAgIHZhciBzdHlsZSA9IERlZmF1bHRUZXh0U3R5bGUub2YoY29udGV4dCkuc3R5bGUubWVyZ2UodGhpcy5zdHlsZSk7CiAgICBpZiAoTWVkaWFRdWVyeS5ib2xkVGV4dE9mKGNvbnRleHQpKSB7CiAgICAgIHN0eWxlID0gc3R5bGUubWVyZ2UoY29uc3QgVGV4dFN0eWxlKGZvbnRXZWlnaHQ6IEZvbnRXZWlnaHQuYm9sZCkpOwogICAgfQogICAgZmluYWwgc2NhbGVyID0gTWVkaWFRdWVyeS50ZXh0U2NhbGVyT2YoCiAgICAgIGNvbnRleHQsCiAgICApLmNsYW1wKG1heFNjYWxlRmFjdG9yOiBtYXhTY2FsZUZhY3Rvcik7CiAgICByZXR1cm4gTGF5b3V0QnVpbGRlcigKICAgICAgYnVpbGRlcjogKGNvbnRleHQsIGNvbnN0cmFpbnRzKSB7CiAgICAgICAgZmluYWwgcm9vbSA9IGNvbnN0cmFpbnRzLm1heFdpZHRoOwogICAgICAgIGZpbmFsIHBhaW50ZXIgPSBUZXh0UGFpbnRlcigKICAgICAgICAgIHRleHREaXJlY3Rpb246IERpcmVjdGlvbmFsaXR5Lm9mKGNvbnRleHQpLAogICAgICAgICAgdGV4dFNjYWxlcjogc2NhbGVyLAogICAgICAgICAgbWF4TGluZXM6IDEsCiAgICAgICAgKTsKICAgICAgICAvLyBIb3cgd2lkZSB0aGUgbG9uZ2VzdCB3b3JkIGlzIGluIGEgZm9udCBvZiBbc2l6ZV0uCiAgICAgICAgZG91YmxlIHdpZGVzdEF0KGRvdWJsZSBzaXplKSB7CiAgICAgICAgICB2YXIgd2lkZXN0ID0gMC4wOwogICAgICAgICAgZm9yIChmaW5hbCB3b3JkIGluIHRleHQuc3BsaXQoX2JyZWFrcykpIHsKICAgICAgICAgICAgcGFpbnRlcgogICAgICAgICAgICAgIC4udGV4dCA9IFRleHRTcGFuKAogICAgICAgICAgICAgICAgdGV4dDogd29yZCwKICAgICAgICAgICAgICAgIHN0eWxlOiBzdHlsZS5jb3B5V2l0aChmb250U2l6ZTogc2l6ZSksCiAgICAgICAgICAgICAgKQogICAgICAgICAgICAgIC4ubGF5b3V0KCk7CiAgICAgICAgICAgIGlmIChwYWludGVyLndpZHRoID4gd2lkZXN0KSB3aWRlc3QgPSBwYWludGVyLndpZHRoOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHdpZGVzdDsKICAgICAgICB9CgogICAgICAgIC8vIFRoZSBzaXplIG9mIGEgdGV4dCBvZiBGbHV0dGVyIHdob3NlIHN0eWxlIGdpdmVzIG5vbmUuCiAgICAgICAgdmFyIHNpemUgPSBzdHlsZS5mb250U2l6ZSA/PyAxNDsKICAgICAgICB2YXIgd2lkZXN0ID0gd2lkZXN0QXQoc2l6ZSk7CiAgICAgICAgLy8gSW4gYSBmZXcgc3RlcHM6IHRoZSB0ZXh0IHNpemUgb2YgYSBkZXZpY2UgbWF5IGdyb3cgYSBzbWFsbCBmb250CiAgICAgICAgLy8gYnkgbW9yZSB0aGFuIGEgbGFyZ2Ugb25lLgogICAgICAgIGZvciAodmFyIHN0ZXAgPSAwOyBzdGVwIDwgNCAmJiB3aWRlc3QgPiByb29tICYmIHJvb20gPiAwOyBzdGVwKyspIHsKICAgICAgICAgIC8vIEEgbGl0dGxlIHNtYWxsZXIgdGhhbiB0aGUgd2lkdGggYWxsb3dzLCBzbyB0aGF0IHRoZSByb3VuZGluZyBvZgogICAgICAgICAgLy8gdGhlIGxheW91dCBicmVha3Mgbm8gd29yZC4KICAgICAgICAgIHNpemUgKj0gcm9vbSAvIHdpZGVzdCAqIDAuOTg7CiAgICAgICAgICB3aWRlc3QgPSB3aWRlc3RBdChzaXplKTsKICAgICAgICB9CiAgICAgICAgcGFpbnRlci5kaXNwb3NlKCk7CiAgICAgICAgcmV0dXJuIFRleHQoCiAgICAgICAgICB0ZXh0LAogICAgICAgICAgc3R5bGU6IHN0eWxlLmNvcHlXaXRoKGZvbnRTaXplOiBzaXplKSwKICAgICAgICAgIHRleHRBbGlnbjogdGV4dEFsaWduLAogICAgICAgICAgdGV4dFNjYWxlcjogc2NhbGVyLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0KfQoKLy8vIExldHMgW2NoaWxkXSBmYWRlIGluIGFuZCByaXNlIHdoaWxlIFthbmltYXRpb25dIHJ1bnMsIGxhdGVyIGZvciBhIGhpZ2hlcgovLy8gW29yZGVyXS4KY2xhc3MgUmlzZSBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgLy8vIENyZWF0ZXMgdGhlIHBhcnQgW29yZGVyXSBvZiBhbiBlbnRyYW5jZS4KICBjb25zdCBSaXNlKHsKICAgIHJlcXVpcmVkIHRoaXMuYW5pbWF0aW9uLAogICAgcmVxdWlyZWQgdGhpcy5vcmRlciwKICAgIHJlcXVpcmVkIHRoaXMuY2hpbGQsCiAgICBzdXBlci5rZXksCiAgfSk7CgogIC8vLyBUaGUgZW50cmFuY2UsIGZyb20gMCB0byAxLgogIGZpbmFsIEFuaW1hdGlvbjxkb3VibGU+IGFuaW1hdGlvbjsKCiAgLy8vIFRoZSBwbGFjZSBvZiBbY2hpbGRdIGluIHRoZSBlbnRyYW5jZTogYSBwYXJ0IG9mIGEgaGlnaGVyIG9yZGVyIGNvbWVzCiAgLy8vIGluIGxhdGVyLgogIGZpbmFsIGludCBvcmRlcjsKCiAgLy8vIFdoYXQgY29tZXMgaW4uCiAgZmluYWwgV2lkZ2V0IGNoaWxkOwoKICBAb3ZlcnJpZGUKICBXaWRnZXQgYnVpbGQoQnVpbGRDb250ZXh0IGNvbnRleHQpIHsKICAgIGZpbmFsIHN0YXJ0ID0gKG9yZGVyICogMC4wOCkuY2xhbXAoMC4wLCAwLjUpOwogICAgZmluYWwgY3VydmUgPSBJbnRlcnZhbCgKICAgICAgc3RhcnQsCiAgICAgIHN0YXJ0ICsgMC41LAogICAgICBjdXJ2ZTogRWFzaW5nLmVtcGhhc2l6ZWREZWNlbGVyYXRlLAogICAgKTsKICAgIHJldHVybiBBbmltYXRlZEJ1aWxkZXIoCiAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uLAogICAgICBidWlsZGVyOiAoY29udGV4dCwgY2hpbGQpIHsKICAgICAgICBmaW5hbCBzaG93biA9IGN1cnZlLnRyYW5zZm9ybShhbmltYXRpb24udmFsdWUpOwogICAgICAgIHJldHVybiBPcGFjaXR5KAogICAgICAgICAgb3BhY2l0eTogc2hvd24sCiAgICAgICAgICBjaGlsZDogVHJhbnNmb3JtLnRyYW5zbGF0ZSgKICAgICAgICAgICAgb2Zmc2V0OiBPZmZzZXQoMCwgKDEgLSBzaG93bikgKiAxOCksCiAgICAgICAgICAgIGNoaWxkOiBjaGlsZCwKICAgICAgICAgICksCiAgICAgICAgKTsKICAgICAgfSwKICAgICAgY2hpbGQ6IGNoaWxkLAogICAgKTsKICB9Cn0KCi8vLyBXaGV0aGVyIGEgYnV0dG9uIHdob3NlIGNhbGwgaXMgb24gaXRzIHdheSBzcGlucy4gSW4gYW4gYXBwIHRoYXQgYXNrcyBmb3IKLy8vIGxlc3MgbW90aW9uLCBub3RoaW5nIHNwaW5zOiB0aGUgYnV0dG9uIGlzIGRpc2FibGVkIGFuZCBrZWVwcyBpdHMgbGFiZWwuCmJvb2wgX3NwaW5zKEJ1aWxkQ29udGV4dCBjb250ZXh0LCB7cmVxdWlyZWQgYm9vbCBidXN5fSkgPT4KICAgIGJ1c3kgJiYgIU1lZGlhUXVlcnkuZGlzYWJsZUFuaW1hdGlvbnNPZihjb250ZXh0KTsKCi8vLyBXaGF0IGEgdGFwIG9uIGEgYnV0dG9uIGRvZXMgd2hpbGUgaXRzIGNhbGwgbWF5IGJlIG9uIGl0cyB3YXk6IGEgYnV0dG9uCi8vLyB0aGF0IHNwaW5zIGtlZXBzIGl0cyBjb2xvdXIgYW5kIGRvZXMgbm90aGluZywgYW5kIG9uZSB0aGF0IGlzIGJ1c3kKLy8vIHdpdGhvdXQgc3Bpbm5pbmcgdGFrZXMgbm8gdGFwLgpWb2lkQ2FsbGJhY2s/IF93aGlsZUJ1c3koCiAgVm9pZENhbGxiYWNrPyBvblByZXNzZWQsIHsKICByZXF1aXJlZCBib29sIGJ1c3ksCiAgcmVxdWlyZWQgYm9vbCBzcGlucywKfSkgewogIGlmICghYnVzeSkgcmV0dXJuIG9uUHJlc3NlZDsKICByZXR1cm4gc3BpbnMgPyAoKSB7fSA6IG51bGw7Cn0KCi8vLyBUaGUgbGFiZWwgb2YgYSBidXR0b24sIG9yIHdoYXQgc3BpbnMgaW4gaXRzIHBsYWNlIHdoaWxlIHRoZSBjYWxsIG9mIHRoZQovLy8gYnV0dG9uIGlzIG9uIGl0cyB3YXkuIEEgbmV3IGxhYmVsIGZhZGVzIGluIHdoZXJlIHRoZSBvbGQgb25lIHdhcy4KY2xhc3MgX0J1c3lMYWJlbCBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgY29uc3QgX0J1c3lMYWJlbCh0aGlzLmxhYmVsLCB7cmVxdWlyZWQgdGhpcy5zcGlucywgdGhpcy5zcGlubmVyU2l6ZSA9IDIyfSk7CgogIGZpbmFsIFN0cmluZyBsYWJlbDsKICBmaW5hbCBib29sIHNwaW5zOwogIGZpbmFsIGRvdWJsZSBzcGlubmVyU2l6ZTsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICBmaW5hbCB0ZXh0ID0gUGF5d2FsbFdvcmRzKAogICAgICBsYWJlbCwKICAgICAga2V5OiBWYWx1ZUtleShsYWJlbCksCiAgICAgIHRleHRBbGlnbjogVGV4dEFsaWduLmNlbnRlciwKICAgICk7CiAgICByZXR1cm4gU3RhY2soCiAgICAgIGFsaWdubWVudDogQWxpZ25tZW50LmNlbnRlciwKICAgICAgY2hpbGRyZW46IFsKICAgICAgICAvLyBUaGUgbGFiZWwga2VlcHMgaXRzIHBsYWNlLCBzbyB0aGF0IHRoZSBidXR0b24ga2VlcHMgaXRzIHNpemUuCiAgICAgICAgVmlzaWJpbGl0eS5tYWludGFpbigKICAgICAgICAgIHZpc2libGU6ICFzcGlucywKICAgICAgICAgIGNoaWxkOiBNZWRpYVF1ZXJ5LmRpc2FibGVBbmltYXRpb25zT2YoY29udGV4dCkKICAgICAgICAgICAgICA/IHRleHQKICAgICAgICAgICAgICA6IEFuaW1hdGVkU3dpdGNoZXIoZHVyYXRpb246IER1cmF0aW9ucy5zaG9ydDQsIGNoaWxkOiB0ZXh0KSwKICAgICAgICApLAogICAgICAgIGlmIChzcGlucykKICAgICAgICAgIC8vIEluIHRoZSBjb2xvdXIgdGhhdCB0aGUgYnV0dG9uIGdpdmVzIGl0cyBsYWJlbC4KICAgICAgICAgIFNpemVkQm94LnNxdWFyZSgKICAgICAgICAgICAgZGltZW5zaW9uOiBzcGlubmVyU2l6ZSwKICAgICAgICAgICAgY2hpbGQ6IENpcmN1bGFyUHJvZ3Jlc3NJbmRpY2F0b3IoCiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIuNSwKICAgICAgICAgICAgICBjb2xvcjogRGVmYXVsdFRleHRTdHlsZS5vZihjb250ZXh0KS5zdHlsZS5jb2xvciwKICAgICAgICAgICAgKSwKICAgICAgICAgICksCiAgICAgIF0sCiAgICApOwogIH0KfQoKLy8vIFRoZSBidXR0b24gb2YgdGhlIHBheXdhbGwgdGhhdCBidXlzIHRoZSBzZWxlY3RlZCBwbGFuLCBhcyB3aWRlIGFzIHRoZQovLy8gcGF5d2FsbC4gV2hpbGUgdGhlIHB1cmNoYXNlIGlzIG9uIGl0cyB3YXksIGl0IHNob3dzIHRoYXQgaXQgaXMgW2J1c3ldCi8vLyBhbmQgZG9lcyBub3RoaW5nLgovLy8KLy8vIEl0IHNwaW5zIGZvciBhcyBsb25nIGFzIHRoZSBwdXJjaGFzZSB0YWtlcywgYW5kIGFmdGVyIGEgcHVyY2hhc2UgdGhhdAovLy8gZ2F2ZSBwcmVtaXVtIGFjY2VzcyB1bnRpbCB0aGUgcm91dGVyIGNsb3NlcyB0aGUgcGF5d2FsbC4gU28gYSB3aWRnZXQKLy8vIHRlc3QgdGhhdCB3YWl0cyBmb3IgdGhlIHBheXdhbGwgd2l0aCBgcHVtcEFuZFNldHRsZSgpYCByZXR1cm5zIG9ubHkgb25jZQovLy8gaXQgaXMgY2xvc2VkOiB1bnRpbCB0aGVuLCBzdWNoIGEgdGVzdCBwdW1wcyBmcmFtZXMgb25lIGF0IGEgdGltZS4KY2xhc3MgUHVyY2hhc2VCdXR0b24gZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIC8vLyBDcmVhdGVzIHRoZSBidXR0b24uCiAgY29uc3QgUHVyY2hhc2VCdXR0b24oewogICAgcmVxdWlyZWQgdGhpcy5sYWJlbCwKICAgIHJlcXVpcmVkIHRoaXMuYnVzeSwKICAgIHJlcXVpcmVkIHRoaXMub25QcmVzc2VkLAogICAgc3VwZXIua2V5LAogIH0pOwoKICAvLy8gVGhlIHRleHQgb2YgdGhlIGJ1dHRvbiwgd2hpY2gga2VlcHMgaXRzIHdvcmRzIHdob2xlLgogIGZpbmFsIFN0cmluZyBsYWJlbDsKCiAgLy8vIFdoZXRoZXIgdGhlIHB1cmNoYXNlIGlzIG9uIGl0cyB3YXkuCiAgZmluYWwgYm9vbCBidXN5OwoKICAvLy8gQnV5cyB0aGUgc2VsZWN0ZWQgcGxhbiwgb3IgYG51bGxgIHdoaWxlIHRoZSBidXR0b24gdGFrZXMgbm8gdGFwLCBhcwogIC8vLyB3aGlsZSB0aGUgcGxhbnMgbG9hZCBvciBhIHJlc3RvcmUgaXMgb24gaXRzIHdheS4KICBmaW5hbCBWb2lkQ2FsbGJhY2s/IG9uUHJlc3NlZDsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICBmaW5hbCBzcGlucyA9IF9zcGlucyhjb250ZXh0LCBidXN5OiBidXN5KTsKICAgIHJldHVybiBGaWxsZWRCdXR0b24oCiAgICAgIG9uUHJlc3NlZDogX3doaWxlQnVzeShvblByZXNzZWQsIGJ1c3k6IGJ1c3ksIHNwaW5zOiBzcGlucyksCiAgICAgIGNoaWxkOiBfQnVzeUxhYmVsKGxhYmVsLCBzcGluczogc3BpbnMpLAogICAgKTsKICB9Cn0KCi8vLyBBIGxpbmsgb2YgdGhlIHBheXdhbGwgYmVsb3cgaXRzIGJ1dHRvbiwgc3VjaCBhcyB0aGUgb25lIHRoYXQgcmVzdG9yZXMKLy8vIHB1cmNoYXNlczogYSBzbWFsbCB0ZXh0IGJ1dHRvbiBvZiB0aGUgdGhlbWUgb2YgdGhlIGFwcC4gV2hpbGUgaXRzIGNhbGwKLy8vIGlzIG9uIGl0cyB3YXksIGl0IHNob3dzIHRoYXQgaXQgaXMgW2J1c3ldIGFuZCBkb2VzIG5vdGhpbmcuCmNsYXNzIFBheXdhbGxMaW5rIGV4dGVuZHMgU3RhdGVsZXNzV2lkZ2V0IHsKICAvLy8gQ3JlYXRlcyB0aGUgbGluay4KICBjb25zdCBQYXl3YWxsTGluayh7CiAgICByZXF1aXJlZCB0aGlzLmxhYmVsLAogICAgcmVxdWlyZWQgdGhpcy5vblByZXNzZWQsCiAgICB0aGlzLmJ1c3kgPSBmYWxzZSwKICAgIHN1cGVyLmtleSwKICB9KTsKCiAgLy8vIFRoZSB0ZXh0IG9mIHRoZSBsaW5rLgogIGZpbmFsIFN0cmluZyBsYWJlbDsKCiAgLy8vIFdoZXRoZXIgdGhlIGNhbGwgb2YgdGhlIGxpbmsgaXMgb24gaXRzIHdheS4KICBmaW5hbCBib29sIGJ1c3k7CgogIC8vLyBXaGF0IHRoZSBsaW5rIGRvZXMsIG9yIGBudWxsYCB3aGlsZSBpdCB0YWtlcyBubyB0YXAuCiAgZmluYWwgVm9pZENhbGxiYWNrPyBvblByZXNzZWQ7CgogIEBvdmVycmlkZQogIFdpZGdldCBidWlsZChCdWlsZENvbnRleHQgY29udGV4dCkgewogICAgZmluYWwgc3BpbnMgPSBfc3BpbnMoY29udGV4dCwgYnVzeTogYnVzeSk7CiAgICByZXR1cm4gVGV4dEJ1dHRvbigKICAgICAgc3R5bGU6IFRleHRCdXR0b24uc3R5bGVGcm9tKAogICAgICAgIHRleHRTdHlsZTogVGhlbWUub2YoY29udGV4dCkudGV4dFRoZW1lLmxhYmVsTGFyZ2UsCiAgICAgICAgcGFkZGluZzogY29uc3QgRWRnZUluc2V0cy5zeW1tZXRyaWMoaG9yaXpvbnRhbDogOCksCiAgICAgICAgbWluaW11bVNpemU6IGNvbnN0IFNpemUoNDgsIDQwKSwKICAgICAgKSwKICAgICAgb25QcmVzc2VkOiBfd2hpbGVCdXN5KG9uUHJlc3NlZCwgYnVzeTogYnVzeSwgc3BpbnM6IHNwaW5zKSwKICAgICAgY2hpbGQ6IF9CdXN5TGFiZWwobGFiZWwsIHNwaW5zOiBzcGlucywgc3Bpbm5lclNpemU6IDE2KSwKICAgICk7CiAgfQp9CgovLy8gVGhlIGNhcmQgb2YgYSBwbGFuIG9uIHRoZSBwYXl3YWxsOiBhIHJhZGlvIGRvdCwgdGhlIFtuYW1lXSBvZiB0aGUgcGxhbiwKLy8vIGl0cyBbcHJpY2VdLCB0aGUgbW9zdCBwcm9taW5lbnQgdGV4dCBvZiB0aGUgY2FyZCwgd2l0aCB3aGF0IGZvbGxvd3MgaXQsCi8vLyBhbmQgd2hhdCBpdHMgaW50cm8gb2ZmZXIgZ2l2ZXMsIGlmIGl0IGhhcyBvbmUuCi8vLwovLy8gVGhlIHNlbGVjdGVkIGNhcmQgaGFzIGEgYm9yZGVyIGFuZCBhIHRpbnQgaW4gdGhlIGFjY2VudCBvZiB0aGUgdGhlbWUgb2YKLy8vIHRoZSBhcHAsIGBjb2xvclNjaGVtZS5zZWNvbmRhcnlgLCBhbmQgdGhlIG90aGVycyBhIGhhaXJsaW5lLiBBIHNjcmVlbgovLy8gcmVhZGVyIHJlYWRzIGEgY2FyZCBhcyBvbmUgYnV0dG9uIG9mIGEgZ3JvdXAgb2Ygd2hpY2ggb25lIGlzIHNlbGVjdGVkLgpjbGFzcyBQbGFuQ2FyZCBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgLy8vIENyZWF0ZXMgdGhlIGNhcmQuCiAgY29uc3QgUGxhbkNhcmQoewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wcmljZSwKICAgIHJlcXVpcmVkIHRoaXMuc3VmZml4LAogICAgcmVxdWlyZWQgdGhpcy5vZmZlciwKICAgIHJlcXVpcmVkIHRoaXMuYmFkZ2UsCiAgICByZXF1aXJlZCB0aGlzLnNlbGVjdGVkLAogICAgcmVxdWlyZWQgdGhpcy5vblRhcCwKICAgIHN1cGVyLmtleSwKICB9KTsKCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBwbGFuLgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8gVGhlIHByaWNlIG9mIHRoZSBwbGFuIGFzIHRoZSBzdG9yZSBnaXZlcyBpdC4KICBmaW5hbCBTdHJpbmcgcHJpY2U7CgogIC8vLyBXaGF0IGZvbGxvd3MgdGhlIHByaWNlLCBzdWNoIGFzIGAvIG1vbnRoYCwgb3IgYG51bGxgLgogIGZpbmFsIFN0cmluZz8gc3VmZml4OwoKICAvLy8gV2hhdCB0aGUgaW50cm8gb2ZmZXIgb2YgdGhlIHBsYW4gZ2l2ZXMsIG9yIGBudWxsYCBmb3IgYSBwbGFuIHdpdGhvdXQKICAvLy8gb25lLgogIGZpbmFsIFN0cmluZz8gb2ZmZXI7CgogIC8vLyBUaGUgdGV4dCBvZiB0aGUgYmFkZ2Ugb2YgdGhlIHBsYW4sIHN1Y2ggYXMgYEJlc3QgdmFsdWVgLCBvciBgbnVsbGAuCiAgZmluYWwgU3RyaW5nPyBiYWRnZTsKCiAgLy8vIFdoZXRoZXIgdGhlIHBsYW4gaXMgdGhlIHNlbGVjdGVkIG9uZS4KICBmaW5hbCBib29sIHNlbGVjdGVkOwoKICAvLy8gU2VsZWN0cyB0aGUgcGxhbiwgb3IgYG51bGxgIHdoaWxlIHRoZSBjYXJkIHRha2VzIG5vIHRhcC4KICBmaW5hbCBWb2lkQ2FsbGJhY2s/IG9uVGFwOwoKICBAb3ZlcnJpZGUKICBXaWRnZXQgYnVpbGQoQnVpbGRDb250ZXh0IGNvbnRleHQpIHsKICAgIGZpbmFsIHRoZW1lID0gVGhlbWUub2YoY29udGV4dCk7CiAgICBmaW5hbCBjb2xvcnMgPSB0aGVtZS5jb2xvclNjaGVtZTsKICAgIGZpbmFsIGFjY2VudCA9IGNvbG9ycy5zZWNvbmRhcnk7CiAgICBmaW5hbCBkdXJhdGlvbiA9IE1lZGlhUXVlcnkuZGlzYWJsZUFuaW1hdGlvbnNPZihjb250ZXh0KQogICAgICAgID8gRHVyYXRpb24uemVybwogICAgICAgIDogRHVyYXRpb25zLnNob3J0NDsKICAgIGZpbmFsIGJhZGdlID0gdGhpcy5iYWRnZTsKICAgIGZpbmFsIG9mZmVyID0gdGhpcy5vZmZlcjsKICAgIGZpbmFsIHJhZGl1cyA9IEJvcmRlclJhZGl1cy5jaXJjdWxhcigyMCk7CiAgICByZXR1cm4gU2VtYW50aWNzKAogICAgICBjb250YWluZXI6IHRydWUsCiAgICAgIGJ1dHRvbjogdHJ1ZSwKICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkLAogICAgICBpbk11dHVhbGx5RXhjbHVzaXZlR3JvdXA6IHRydWUsCiAgICAgIGxhYmVsOiBbbmFtZSwgW3ByaWNlLCA/c3VmZml4XS5qb2luKCcgJyksID9vZmZlciwgP2JhZGdlXS5qb2luKCcsICcpLAogICAgICBvblRhcDogb25UYXAsCiAgICAgIGV4Y2x1ZGVTZW1hbnRpY3M6IHRydWUsCiAgICAgIGNoaWxkOiBBbmltYXRlZENvbnRhaW5lcigKICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sCiAgICAgICAgY3VydmU6IEVhc2luZy5zdGFuZGFyZCwKICAgICAgICBkZWNvcmF0aW9uOiBCb3hEZWNvcmF0aW9uKAogICAgICAgICAgY29sb3I6IHNlbGVjdGVkCiAgICAgICAgICAgICAgPyBDb2xvci5hbHBoYUJsZW5kKGFjY2VudC53aXRoVmFsdWVzKGFscGhhOiAwLjA4KSwgY29sb3JzLnN1cmZhY2UpCiAgICAgICAgICAgICAgOiBjb2xvcnMuc3VyZmFjZUNvbnRhaW5lckxvdywKICAgICAgICAgIGJvcmRlclJhZGl1czogcmFkaXVzLAogICAgICAgICAgYm9yZGVyOiBCb3JkZXIuYWxsKAogICAgICAgICAgICBjb2xvcjogc2VsZWN0ZWQgPyBhY2NlbnQgOiBjb2xvcnMub3V0bGluZVZhcmlhbnQsCiAgICAgICAgICAgIHdpZHRoOiBzZWxlY3RlZCA/IDIgOiAxLAogICAgICAgICAgKSwKICAgICAgICApLAogICAgICAgIGNoaWxkOiBNYXRlcmlhbCgKICAgICAgICAgIHR5cGU6IE1hdGVyaWFsVHlwZS50cmFuc3BhcmVuY3ksCiAgICAgICAgICBjaGlsZDogSW5rV2VsbCgKICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiByYWRpdXMsCiAgICAgICAgICAgIG9uVGFwOiBvblRhcCwKICAgICAgICAgICAgY2hpbGQ6IFBhZGRpbmcoCiAgICAgICAgICAgICAgLy8gVGhlIGJvcmRlciBvZiBhIHNlbGVjdGVkIGNhcmQgaXMgd2lkZXIsIGFuZCB0aGUgY29udGVudCBvZgogICAgICAgICAgICAgIC8vIHRoZSBjYXJkIHN0YXlzIHdoZXJlIGl0IGlzLgogICAgICAgICAgICAgIHBhZGRpbmc6IEVkZ2VJbnNldHMuYWxsKHNlbGVjdGVkID8gMTUgOiAxNiksCiAgICAgICAgICAgICAgY2hpbGQ6IFJvdygKICAgICAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0YXJ0LAogICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICAgICAgUGFkZGluZygKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBjb25zdCBFZGdlSW5zZXRzLm9ubHkodG9wOiAyKSwKICAgICAgICAgICAgICAgICAgICBjaGlsZDogX1JhZGlvRG90KHNlbGVjdGVkOiBzZWxlY3RlZCwgZHVyYXRpb246IGR1cmF0aW9uKSwKICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3god2lkdGg6IDE0KSwKICAgICAgICAgICAgICAgICAgRXhwYW5kZWQoCiAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IENvbHVtbigKICAgICAgICAgICAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGJhZGdlIGZvbGxvd3MgdGhlIG5hbWUsIGFuZCBnb2VzIGJlbG93IGl0CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIGJvdGggZG8gbm90IGZpdCBvbmUgbGluZS4KICAgICAgICAgICAgICAgICAgICAgICAgV3JhcCgKICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nOiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgIHJ1blNwYWNpbmc6IDYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBXcmFwQ3Jvc3NBbGlnbm1lbnQuY2VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBsYXJnZXIgdGhhbiB0aGUgcHJpY2UsIHdoaWNoIGdyb3dzIG9ubHkgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbGYgdG9vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF5d2FsbFdvcmRzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogdGhlbWUudGV4dFRoZW1lLnRpdGxlTWVkaXVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTY2FsZUZhY3RvcjogMS41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgID9zd2l0Y2ggKGJhZGdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGJhZGdlPyA9PiBQaWxsKGJhZGdlLCBzdHJvbmc6IHRydWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID0+IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogNCksCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwcmljZSBncm93cyBvbmx5IGJ5IGhhbGYgd2l0aCB0aGUgdGV4dCBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBkZXZpY2UsIHNvIHRoYXQgaXQga2VlcHMgdG8gaXRzIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhUXVlcnkud2l0aENsYW1wZWRUZXh0U2NhbGluZygKICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTY2FsZUZhY3RvcjogMS41LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkOiBUZXh0LnJpY2goCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0U3BhbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0U3BhbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHByaWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS5oZWFkbGluZVNtYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5jb3B5V2l0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IEZvbnRXZWlnaHQudzYwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGZWF0dXJlczogY29uc3QgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb250RmVhdHVyZS50YWJ1bGFyRmlndXJlcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHByaWNlIGFuZCB3aGF0IGZvbGxvd3MgaXQgc3RheSBvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uZSBsaW5lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWZmaXggY2FzZSBmaW5hbCBzdWZmaXg/KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFNwYW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICdcdTAwQTAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtzdWZmaXgucmVwbGFjZUFsbCgnICcsICdcdTAwQTAnKX0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogdGhlbWUudGV4dFRoZW1lLmJvZHlNZWRpdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uY29weVdpdGgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb2xvcnMub25TdXJmYWNlVmFyaWFudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICBpZiAob2ZmZXIgIT0gbnVsbCkgLi4uWwogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogMTApLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBpbGwob2ZmZXIpLAogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICApLAogICAgICAgICAgKSwKICAgICAgICApLAogICAgICApLAogICAgKTsKICB9Cn0KCi8vLyBUaGUgZG90IG9mIGEgW1BsYW5DYXJkXSB0aGF0IHRlbGxzIHdoZXRoZXIgdGhlIHBsYW4gaXMgc2VsZWN0ZWQ6IGEgcmluZwovLy8gaW4gdGhlIGFjY2VudCBvZiB0aGUgdGhlbWUgd2l0aCBhIGRvdCBpbnNpZGUgZm9yIHRoZSBzZWxlY3RlZCBwbGFuLCBhbmQKLy8vIGEgcmluZyBvZiB0aGUgb3V0bGluZSBmb3IgdGhlIG90aGVycy4KY2xhc3MgX1JhZGlvRG90IGV4dGVuZHMgU3RhdGVsZXNzV2lkZ2V0IHsKICBjb25zdCBfUmFkaW9Eb3Qoe3JlcXVpcmVkIHRoaXMuc2VsZWN0ZWQsIHJlcXVpcmVkIHRoaXMuZHVyYXRpb259KTsKCiAgZmluYWwgYm9vbCBzZWxlY3RlZDsKICBmaW5hbCBEdXJhdGlvbiBkdXJhdGlvbjsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICBmaW5hbCBjb2xvcnMgPSBUaGVtZS5vZihjb250ZXh0KS5jb2xvclNjaGVtZTsKICAgIHJldHVybiBBbmltYXRlZENvbnRhaW5lcigKICAgICAgZHVyYXRpb246IGR1cmF0aW9uLAogICAgICB3aWR0aDogMjIsCiAgICAgIGhlaWdodDogMjIsCiAgICAgIGRlY29yYXRpb246IEJveERlY29yYXRpb24oCiAgICAgICAgc2hhcGU6IEJveFNoYXBlLmNpcmNsZSwKICAgICAgICBjb2xvcjogc2VsZWN0ZWQgPyBjb2xvcnMuc2Vjb25kYXJ5IDogQ29sb3JzLnRyYW5zcGFyZW50LAogICAgICAgIGJvcmRlcjogQm9yZGVyLmFsbCgKICAgICAgICAgIGNvbG9yOiBzZWxlY3RlZCA/IGNvbG9ycy5zZWNvbmRhcnkgOiBjb2xvcnMub3V0bGluZSwKICAgICAgICAgIHdpZHRoOiAxLjUsCiAgICAgICAgKSwKICAgICAgKSwKICAgICAgY2hpbGQ6IENlbnRlcigKICAgICAgICBjaGlsZDogQW5pbWF0ZWRDb250YWluZXIoCiAgICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sCiAgICAgICAgICB3aWR0aDogc2VsZWN0ZWQgPyA4IDogMCwKICAgICAgICAgIGhlaWdodDogc2VsZWN0ZWQgPyA4IDogMCwKICAgICAgICAgIGRlY29yYXRpb246IEJveERlY29yYXRpb24oCiAgICAgICAgICAgIHNoYXBlOiBCb3hTaGFwZS5jaXJjbGUsCiAgICAgICAgICAgIGNvbG9yOiBjb2xvcnMub25TZWNvbmRhcnksCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApOwogIH0KfQoKLy8vIEEgc2hvcnQgdGV4dCBpbiBhIHBpbGwsIHN1Y2ggYXMgd2hhdCBhbiBpbnRybyBvZmZlciBnaXZlczogaW4gdGhlCi8vLyBjb250YWluZXIgY29sb3VyIG9mIHRoZSBhY2NlbnQsIG9yIHdpdGggW3N0cm9uZ10gaW4gdGhlIGFjY2VudCBpdHNlbGYuCmNsYXNzIFBpbGwgZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIC8vLyBDcmVhdGVzIHRoZSBwaWxsIG9mIFt0ZXh0XS4KICBjb25zdCBQaWxsKHRoaXMudGV4dCwge3RoaXMuc3Ryb25nID0gZmFsc2UsIHN1cGVyLmtleX0pOwoKICAvLy8gVGhlIHRleHQgb2YgdGhlIHBpbGwuCiAgZmluYWwgU3RyaW5nIHRleHQ7CgogIC8vLyBXaGV0aGVyIHRoZSBwaWxsIGlzIGluIHRoZSBhY2NlbnQgb2YgdGhlIHRoZW1lIHJhdGhlciB0aGFuIGluIGl0cwogIC8vLyBjb250YWluZXIgY29sb3VyLgogIGZpbmFsIGJvb2wgc3Ryb25nOwoKICBAb3ZlcnJpZGUKICBXaWRnZXQgYnVpbGQoQnVpbGRDb250ZXh0IGNvbnRleHQpIHsKICAgIGZpbmFsIHRoZW1lID0gVGhlbWUub2YoY29udGV4dCk7CiAgICBmaW5hbCBjb2xvcnMgPSB0aGVtZS5jb2xvclNjaGVtZTsKICAgIHJldHVybiBEZWNvcmF0ZWRCb3goCiAgICAgIGRlY29yYXRpb246IEJveERlY29yYXRpb24oCiAgICAgICAgY29sb3I6IHN0cm9uZyA/IGNvbG9ycy5zZWNvbmRhcnkgOiBjb2xvcnMuc2Vjb25kYXJ5Q29udGFpbmVyLAogICAgICAgIGJvcmRlclJhZGl1czogQm9yZGVyUmFkaXVzLmNpcmN1bGFyKDk5OSksCiAgICAgICksCiAgICAgIGNoaWxkOiBQYWRkaW5nKAogICAgICAgIHBhZGRpbmc6IGNvbnN0IEVkZ2VJbnNldHMuc3ltbWV0cmljKGhvcml6b250YWw6IDEwLCB2ZXJ0aWNhbDogNCksCiAgICAgICAgLy8gQSBsYWJlbCwgd2hpY2ggZ3Jvd3Mgb25seSBieSBoYWxmIHdpdGggdGhlIHRleHQgc2l6ZSBvZiB0aGUKICAgICAgICAvLyBkZXZpY2UuCiAgICAgICAgY2hpbGQ6IE1lZGlhUXVlcnkud2l0aENsYW1wZWRUZXh0U2NhbGluZygKICAgICAgICAgIG1heFNjYWxlRmFjdG9yOiAxLjUsCiAgICAgICAgICBjaGlsZDogVGV4dCgKICAgICAgICAgICAgdGV4dCwKICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS5sYWJlbE1lZGl1bT8uY29weVdpdGgoCiAgICAgICAgICAgICAgY29sb3I6IHN0cm9uZyA/IGNvbG9ycy5vblNlY29uZGFyeSA6IGNvbG9ycy5vblNlY29uZGFyeUNvbnRhaW5lciwKICAgICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0Lnc2MDAsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApOwogIH0KfQoKLy8vIFdoYXQgdGhlIHBheXdhbGwgc2hvd3MgaW4gdGhlIHBsYWNlIG9mIGEgcGxhbiB3aGlsZSB0aGUgcGxhbnMgbG9hZDogYQovLy8gY2FyZCBvZiB0aGUgc2l6ZSBvZiBhIHBsYW4gd2l0aCBncmV5IGJhcnMsIHdoaWNoIGRvZXMgbm90IG1vdmUsIHNvIHRoYXQKLy8vIHRoZSBwYXl3YWxsIHNldHRsZXMuCmNsYXNzIFBsYW5Ta2VsZXRvbiBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgLy8vIENyZWF0ZXMgdGhlIHNrZWxldG9uLgogIGNvbnN0IFBsYW5Ta2VsZXRvbih7c3VwZXIua2V5fSk7CgogIEBvdmVycmlkZQogIFdpZGdldCBidWlsZChCdWlsZENvbnRleHQgY29udGV4dCkgewogICAgZmluYWwgY29sb3JzID0gVGhlbWUub2YoY29udGV4dCkuY29sb3JTY2hlbWU7CiAgICBXaWRnZXQgYmFyKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkgPT4gQ29udGFpbmVyKAogICAgICB3aWR0aDogd2lkdGgsCiAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICBkZWNvcmF0aW9uOiBCb3hEZWNvcmF0aW9uKAogICAgICAgIGNvbG9yOiBjb2xvcnMuc3VyZmFjZUNvbnRhaW5lckhpZ2hlc3QsCiAgICAgICAgYm9yZGVyUmFkaXVzOiBCb3JkZXJSYWRpdXMuY2lyY3VsYXIoNiksCiAgICAgICksCiAgICApOwogICAgcmV0dXJuIEV4Y2x1ZGVTZW1hbnRpY3MoCiAgICAgIGNoaWxkOiBDb250YWluZXIoCiAgICAgICAgcGFkZGluZzogY29uc3QgRWRnZUluc2V0cy5hbGwoMTYpLAogICAgICAgIGRlY29yYXRpb246IEJveERlY29yYXRpb24oCiAgICAgICAgICBjb2xvcjogY29sb3JzLnN1cmZhY2VDb250YWluZXJMb3csCiAgICAgICAgICBib3JkZXJSYWRpdXM6IEJvcmRlclJhZGl1cy5jaXJjdWxhcigyMCksCiAgICAgICAgICBib3JkZXI6IEJvcmRlci5hbGwoY29sb3I6IGNvbG9ycy5vdXRsaW5lVmFyaWFudCksCiAgICAgICAgKSwKICAgICAgICBjaGlsZDogUm93KAogICAgICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBDcm9zc0F4aXNBbGlnbm1lbnQuc3RhcnQsCiAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICBDb250YWluZXIoCiAgICAgICAgICAgICAgd2lkdGg6IDIyLAogICAgICAgICAgICAgIGhlaWdodDogMjIsCiAgICAgICAgICAgICAgZGVjb3JhdGlvbjogQm94RGVjb3JhdGlvbigKICAgICAgICAgICAgICAgIHNoYXBlOiBCb3hTaGFwZS5jaXJjbGUsCiAgICAgICAgICAgICAgICBib3JkZXI6IEJvcmRlci5hbGwoY29sb3I6IGNvbG9ycy5vdXRsaW5lVmFyaWFudCwgd2lkdGg6IDEuNSksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3god2lkdGg6IDE0KSwKICAgICAgICAgICAgQ29sdW1uKAogICAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0YXJ0LAogICAgICAgICAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgICAgICAgICBjb25zdCBTaXplZEJveChoZWlnaHQ6IDMpLAogICAgICAgICAgICAgICAgYmFyKDk2LCAxNCksCiAgICAgICAgICAgICAgICBjb25zdCBTaXplZEJveChoZWlnaHQ6IDEyKSwKICAgICAgICAgICAgICAgIGJhcigxNDAsIDIyKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICApLAogICAgICApLAogICAgKTsKICB9Cn0KCi8vLyBUaGUgbWVzc2FnZSBvZiB0aGUgcGF5d2FsbCBhZnRlciBhIGNhbGw6IHdoeSBpdCBmYWlsZWQsIG9yIHdoYXQgaXQgdGVsbHMKLy8vIHRoZSB1c2VyLCBvciBub3RoaW5nIHdoaWxlIGJvdGggYXJlIGBudWxsYC4gSXQgdGFrZXMgaXRzIHBsYWNlIHNtb290aGx5LAovLy8gYW5kIGEgc2NyZWVuIHJlYWRlciBhbm5vdW5jZXMgaXQgd2hlbiBpdCBhcHBlYXJzLgovLy8KLy8vIEluIGRlYnVnIG1vZGUgaXQgYWxzbyBzaG93cyB3aGF0IHRoZSBwcm92aWRlciBvZiBwdXJjaGFzZXMgc2F5cyB0byB0aGUKLy8vIGRldmVsb3BlciBvZiB0aGUgYXBwIGFib3V0IGEgZmFpbHVyZSwgd2hpY2ggaXMgbm8gdGV4dCBmb3IgYSB1c2VyLgpjbGFzcyBQYXl3YWxsTWVzc2FnZSBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgLy8vIENyZWF0ZXMgdGhlIG1lc3NhZ2UuCiAgY29uc3QgUGF5d2FsbE1lc3NhZ2Uoe3JlcXVpcmVkIHRoaXMudGV4dCwgcmVxdWlyZWQgdGhpcy5mYWlsZWQsIHRoaXMuaGludCwKICAgICAgc3VwZXIua2V5fSk7CgogIC8vLyBUaGUgdGV4dCBvZiB0aGUgbWVzc2FnZSBmb3IgdGhlIHVzZXIsIG9yIGBudWxsYCBmb3Igbm9uZS4KICBmaW5hbCBTdHJpbmc/IHRleHQ7CgogIC8vLyBXaGV0aGVyIHRoZSBtZXNzYWdlIHRlbGxzIG9mIGEgZmFpbHVyZSwgaW4gdGhlIGNvbG91cnMgdGhhdCB0aGUgdGhlbWUKICAvLy8gaGFzIGZvciBhbiBlcnJvciwgcmF0aGVyIHRoYW4gb2YgYSBub3RpY2UuCiAgZmluYWwgYm9vbCBmYWlsZWQ7CgogIC8vLyBXaGF0IHRoZSBwcm92aWRlciBvZiBwdXJjaGFzZXMgc2F5cyB0byB0aGUgZGV2ZWxvcGVyIG9mIHRoZSBhcHAuCiAgZmluYWwgU3RyaW5nPyBoaW50OwoKICBAb3ZlcnJpZGUKICBXaWRnZXQgYnVpbGQoQnVpbGRDb250ZXh0IGNvbnRleHQpIHsKICAgIGZpbmFsIHRleHQgPSB0aGlzLnRleHQ7CiAgICBmaW5hbCBtZXNzYWdlID0gdGV4dCA9PSBudWxsCiAgICAgICAgPyBjb25zdCBTaXplZEJveCh3aWR0aDogZG91YmxlLmluZmluaXR5KQogICAgICAgIDogUGFkZGluZygKICAgICAgICAgICAgcGFkZGluZzogY29uc3QgRWRnZUluc2V0cy5vbmx5KGJvdHRvbTogMTYpLAogICAgICAgICAgICBjaGlsZDogX01lc3NhZ2VDYXJkKHRleHQ6IHRleHQsIGZhaWxlZDogZmFpbGVkLCBoaW50OiBoaW50KSwKICAgICAgICAgICk7CiAgICAvLyBBbiBhcHAgdGhhdCBhc2tzIGZvciBsZXNzIG1vdGlvbiBzaG93cyB0aGUgbWVzc2FnZSBhdCBvbmNlLiBJdCBkb2VzCiAgICAvLyBzbyB3aXRob3V0IGFuIEFuaW1hdGVkU2l6ZTogb25lIHdpdGggYSBkdXJhdGlvbiBvZiB6ZXJvIGZhaWxzIGFuCiAgICAvLyBhc3NlcnRpb24gb2YgRmx1dHRlciB3aGVuIHRoZSBzaXplIG9mIGl0cyBjaGlsZCBjaGFuZ2VzLgogICAgaWYgKE1lZGlhUXVlcnkuZGlzYWJsZUFuaW1hdGlvbnNPZihjb250ZXh0KSkgcmV0dXJuIG1lc3NhZ2U7CiAgICByZXR1cm4gQW5pbWF0ZWRTaXplKAogICAgICBkdXJhdGlvbjogRHVyYXRpb25zLnNob3J0NCwKICAgICAgY3VydmU6IEVhc2luZy5lbXBoYXNpemVkRGVjZWxlcmF0ZSwKICAgICAgYWxpZ25tZW50OiBBbGlnbm1lbnQudG9wQ2VudGVyLAogICAgICBjaGlsZDogbWVzc2FnZSwKICAgICk7CiAgfQp9CgovLy8gVGhlIGJveCBvZiBhIFtQYXl3YWxsTWVzc2FnZV06IGEgY2FyZCBpbiBhIHRpbnQgb2YgdGhlIGNvbG91ciB0aGF0IHRoZQovLy8gdGhlbWUgaGFzIGZvciBhbiBlcnJvciwgb3Igb2YgaXRzIGFjY2VudCBmb3IgYSBub3RpY2UuCmNsYXNzIF9NZXNzYWdlQ2FyZCBleHRlbmRzIFN0YXRlbGVzc1dpZGdldCB7CiAgY29uc3QgX01lc3NhZ2VDYXJkKHsKICAgIHJlcXVpcmVkIHRoaXMudGV4dCwKICAgIHJlcXVpcmVkIHRoaXMuZmFpbGVkLAogICAgcmVxdWlyZWQgdGhpcy5oaW50LAogIH0pOwoKICBmaW5hbCBTdHJpbmcgdGV4dDsKICBmaW5hbCBib29sIGZhaWxlZDsKICBmaW5hbCBTdHJpbmc/IGhpbnQ7CgogIEBvdmVycmlkZQogIFdpZGdldCBidWlsZChCdWlsZENvbnRleHQgY29udGV4dCkgewogICAgZmluYWwgdGhlbWUgPSBUaGVtZS5vZihjb250ZXh0KTsKICAgIGZpbmFsIGNvbG9ycyA9IHRoZW1lLmNvbG9yU2NoZW1lOwogICAgZmluYWwgdG9uZSA9IGZhaWxlZCA/IGNvbG9ycy5lcnJvciA6IGNvbG9ycy5zZWNvbmRhcnk7CiAgICBmaW5hbCBoaW50ID0ga0RlYnVnTW9kZSA/IHRoaXMuaGludCA6IG51bGw7CiAgICByZXR1cm4gU2VtYW50aWNzKAogICAgICBjb250YWluZXI6IHRydWUsCiAgICAgIGxpdmVSZWdpb246IHRydWUsCiAgICAgIGNoaWxkOiBDYXJkLm91dGxpbmVkKAogICAgICAgIG1hcmdpbjogRWRnZUluc2V0cy56ZXJvLAogICAgICAgIGNvbG9yOiBDb2xvci5hbHBoYUJsZW5kKHRvbmUud2l0aFZhbHVlcyhhbHBoYTogMC4wOCksIGNvbG9ycy5zdXJmYWNlKSwKICAgICAgICBjaGlsZDogUGFkZGluZygKICAgICAgICAgIHBhZGRpbmc6IGNvbnN0IEVkZ2VJbnNldHMuYWxsKDE0KSwKICAgICAgICAgIGNoaWxkOiBSb3coCiAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0YXJ0LAogICAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICAgIEljb24oCiAgICAgICAgICAgICAgICBmYWlsZWQgPyBJY29ucy5lcnJvcl9vdXRsaW5lX3JvdW5kZWQgOiBJY29ucy5pbmZvX291dGxpbmVfcm91bmRlZCwKICAgICAgICAgICAgICAgIC8vIFRoZSBpY29uIGdyb3dzIHdpdGggdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHRleHQgbmV4dCB0byBpdC4KICAgICAgICAgICAgICAgIHNpemU6IE1lZGlhUXVlcnkudGV4dFNjYWxlck9mKGNvbnRleHQpLnNjYWxlKDIwKSwKICAgICAgICAgICAgICAgIGNvbG9yOiB0b25lLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3god2lkdGg6IDEwKSwKICAgICAgICAgICAgICBFeHBhbmRlZCgKICAgICAgICAgICAgICAgIGNoaWxkOiBDb2x1bW4oCiAgICAgICAgICAgICAgICAgIGNyb3NzQXhpc0FsaWdubWVudDogQ3Jvc3NBeGlzQWxpZ25tZW50LnN0YXJ0LAogICAgICAgICAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICAgICAgICAgIFRleHQoCiAgICAgICAgICAgICAgICAgICAgICB0ZXh0LAogICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS5ib2R5TWVkaXVtPy5jb3B5V2l0aCgKICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9ycy5vblN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgaWYgKGhpbnQgIT0gbnVsbCkgLi4uWwogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiA2KSwKICAgICAgICAgICAgICAgICAgICAgIC8vIEFzIGEgcGF0aCwgaXQgaXMgbm90IG11Y2ggbGFyZ2VyIHRoYW4gdXN1YWwuCiAgICAgICAgICAgICAgICAgICAgICBNZWRpYVF1ZXJ5LndpdGhDbGFtcGVkVGV4dFNjYWxpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFNjYWxlRmFjdG9yOiAxLjUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkOiBUZXh0KAogICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IG1vbm9zcGFjZS5jb3B5V2l0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb2xvcnMub25TdXJmYWNlVmFyaWFudCwKICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApLAogICAgICApLAogICAgKTsKICB9Cn0KCi8vLyBBIG5vdGUgZm9yIHRoZSBkZXZlbG9wZXIgb2YgdGhlIGFwcCwgd2hpY2ggb25seSBhIGRlYnVnIGJ1aWxkIHNob3dzLCBpbgovLy8gRW5nbGlzaDogd2hhdCB0aGUgcHJvdmlkZXIgb2YgcHVyY2hhc2VzIHNheXMgaXMgbWlzc2luZywgYW5kIHRoZSBrZXlzIG9mCi8vLyBgLmVudmAgdGhhdCB0aGUgcGF5d2FsbCBjYW5ub3QgbGluayB0bywgZWFjaCBvZiB3aGljaCBhIHRhcCBjb3BpZXMuCmNsYXNzIERldmVsb3Blck5vdGUgZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIC8vLyBDcmVhdGVzIHRoZSBub3RlLCB3aGljaCBzaG93cyBub3RoaW5nIHdpdGhvdXQgYSBbaGludF0gYW5kIFtrZXlzXS4KICBjb25zdCBEZXZlbG9wZXJOb3RlKHtyZXF1aXJlZCB0aGlzLmhpbnQsIHJlcXVpcmVkIHRoaXMua2V5cywgc3VwZXIua2V5fSk7CgogIC8vLyBXaGF0IHRoZSBwcm92aWRlciBvZiBwdXJjaGFzZXMgc2F5cyB0byB0aGUgZGV2ZWxvcGVyIG9mIHRoZSBhcHAsIHN1Y2gKICAvLy8gYXMgdGhlIGtleSB0aGF0IGl0IGxhY2tzLCBvciBgbnVsbGAuCiAgZmluYWwgU3RyaW5nPyBoaW50OwoKICAvLy8gVGhlIGtleXMgb2YgYC5lbnZgIHdob3NlIHZhbHVlcyB0aGUgcGF5d2FsbCBjYW5ub3QgbGluayB0by4KICBmaW5hbCBMaXN0PFN0cmluZz4ga2V5czsKCiAgLy8vIENvcGllcyBba2V5XSBhbmQgc2F5cyBzby4KICBGdXR1cmU8dm9pZD4gX2NvcHkoQnVpbGRDb250ZXh0IGNvbnRleHQsIFN0cmluZyBrZXkpIGFzeW5jIHsKICAgIGZpbmFsIG1lc3NlbmdlciA9IFNjYWZmb2xkTWVzc2VuZ2VyLm9mKGNvbnRleHQpOwogICAgYXdhaXQgQ2xpcGJvYXJkLnNldERhdGEoQ2xpcGJvYXJkRGF0YSh0ZXh0OiBrZXkpKTsKICAgIG1lc3NlbmdlcgogICAgICAuLmhpZGVDdXJyZW50U25hY2tCYXIoKQogICAgICAuLnNob3dTbmFja0JhcihTbmFja0Jhcihjb250ZW50OiBUZXh0KCdDb3BpZWQ6ICRrZXknKSkpOwogIH0KCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICBmaW5hbCBoaW50ID0gdGhpcy5oaW50OwogICAgaWYgKCFrRGVidWdNb2RlIHx8IChoaW50ID09IG51bGwgJiYga2V5cy5pc0VtcHR5KSkgewogICAgICByZXR1cm4gY29uc3QgU2l6ZWRCb3guc2hyaW5rKCk7CiAgICB9CiAgICBmaW5hbCB0aGVtZSA9IFRoZW1lLm9mKGNvbnRleHQpOwogICAgZmluYWwgY29sb3JzID0gdGhlbWUuY29sb3JTY2hlbWU7CiAgICBmaW5hbCBzbWFsbCA9IHRoZW1lLnRleHRUaGVtZS5ib2R5U21hbGw/LmNvcHlXaXRoKAogICAgICBjb2xvcjogY29sb3JzLm9uU3VyZmFjZVZhcmlhbnQsCiAgICApOwogICAgcmV0dXJuIENvbnRhaW5lcigKICAgICAgbWFyZ2luOiBjb25zdCBFZGdlSW5zZXRzLm9ubHkodG9wOiAyNCksCiAgICAgIHBhZGRpbmc6IGNvbnN0IEVkZ2VJbnNldHMuYWxsKDE2KSwKICAgICAgZGVjb3JhdGlvbjogQm94RGVjb3JhdGlvbigKICAgICAgICBjb2xvcjogY29sb3JzLnN1cmZhY2VDb250YWluZXIsCiAgICAgICAgYm9yZGVyUmFkaXVzOiBCb3JkZXJSYWRpdXMuY2lyY3VsYXIoMTYpLAogICAgICAgIGJvcmRlcjogQm9yZGVyLmFsbChjb2xvcjogY29sb3JzLm91dGxpbmVWYXJpYW50KSwKICAgICAgKSwKICAgICAgY2hpbGQ6IENvbHVtbigKICAgICAgICBjcm9zc0F4aXNBbGlnbm1lbnQ6IENyb3NzQXhpc0FsaWdubWVudC5zdGFydCwKICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgUm93KAogICAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICAgIEljb24oSWNvbnMuY29kZV9yb3VuZGVkLCBzaXplOiAxOCwgY29sb3I6IGNvbG9ycy5vblN1cmZhY2VWYXJpYW50KSwKICAgICAgICAgICAgICBjb25zdCBTaXplZEJveCh3aWR0aDogOCksCiAgICAgICAgICAgICAgRXhwYW5kZWQoCiAgICAgICAgICAgICAgICBjaGlsZDogVGV4dCgKICAgICAgICAgICAgICAgICAgJ0ZvciB0aGUgZGV2ZWxvcGVyJywKICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS50aXRsZVNtYWxsLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICAgIGlmIChoaW50ICE9IG51bGwpIC4uLlsKICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiAxMCksCiAgICAgICAgICAgIFRleHQoJ1B1cmNoYXNlcyBhcmUgbm90IHNldCB1cCB5ZXQ6Jywgc3R5bGU6IHNtYWxsKSwKICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiA0KSwKICAgICAgICAgICAgTWVkaWFRdWVyeS53aXRoQ2xhbXBlZFRleHRTY2FsaW5nKAogICAgICAgICAgICAgIG1heFNjYWxlRmFjdG9yOiAxLjUsCiAgICAgICAgICAgICAgY2hpbGQ6IFRleHQoCiAgICAgICAgICAgICAgICBoaW50LAogICAgICAgICAgICAgICAgc3R5bGU6IG1vbm9zcGFjZS5jb3B5V2l0aCgKICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDEyLAogICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3JzLm9uU3VyZmFjZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBpZiAoa2V5cy5pc05vdEVtcHR5KSAuLi5bCiAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogMTApLAogICAgICAgICAgICBUZXh0KAogICAgICAgICAgICAgICdGaWxsIGluIHRoZXNlIHZhbHVlcyBpbiAuZW52LCBzbyB0aGF0IHRoZSBwYXl3YWxsIGxpbmtzIHRvICcKICAgICAgICAgICAgICAneW91ciBwYWdlczonLAogICAgICAgICAgICAgIHN0eWxlOiBzbWFsbCwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiA4KSwKICAgICAgICAgICAgV3JhcCgKICAgICAgICAgICAgICBzcGFjaW5nOiA4LAogICAgICAgICAgICAgIHJ1blNwYWNpbmc6IDgsCiAgICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICAgIGZvciAoZmluYWwga2V5IGluIGtleXMpCiAgICAgICAgICAgICAgICAgIFNlbWFudGljcygKICAgICAgICAgICAgICAgICAgICBidXR0b246IHRydWUsCiAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IE1hdGVyaWFsKAogICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9ycy5zdXJmYWNlQ29udGFpbmVySGlnaCwKICAgICAgICAgICAgICAgICAgICAgIHNoYXBlOiBSb3VuZGVkUmVjdGFuZ2xlQm9yZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IEJvcmRlclJhZGl1cy5jaXJjdWxhcigxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIHNpZGU6IEJvcmRlclNpZGUoY29sb3I6IGNvbG9ycy5vdXRsaW5lVmFyaWFudCksCiAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgY2xpcEJlaGF2aW9yOiBDbGlwLmFudGlBbGlhcywKICAgICAgICAgICAgICAgICAgICAgIGNoaWxkOiBJbmtXZWxsKAogICAgICAgICAgICAgICAgICAgICAgICBvblRhcDogKCkgPT4gX2NvcHkoY29udGV4dCwga2V5KSwKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IFBhZGRpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogY29uc3QgRWRnZUluc2V0cy5zeW1tZXRyaWMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IFJvdygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5BeGlzU2l6ZTogTWFpbkF4aXNTaXplLm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsZXhpYmxlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEga2V5IGdyb3dzIG9ubHkgYnkgaGFsZiwgc28gdGhhdCBpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtlZXBzIHRvIGEgbGluZSBvZiBpdHMgb3duLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkOiBNZWRpYVF1ZXJ5LndpdGhDbGFtcGVkVGV4dFNjYWxpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTY2FsZUZhY3RvcjogMS41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IFRleHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IG1vbm9zcGFjZS5jb3B5V2l0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9ycy5vblN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KHdpZHRoOiA2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWNvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJY29ucy5jb3B5X3JvdW5kZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogMTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9ycy5vblN1cmZhY2VWYXJpYW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiAxMCksCiAgICAgICAgICBUZXh0KCdPbmx5IGEgZGVidWcgYnVpbGQgc2hvd3MgdGhpcyBub3RlLicsIHN0eWxlOiBzbWFsbCksCiAgICAgICAgXSwKICAgICAgKSwKICAgICk7CiAgfQp9Cg==",
      "type": "text"
    },
    {
      "path": "lib/features/paywall/subscription_view.dart",
      "data":
          "aW1wb3J0ICdwYWNrYWdlOmZsdXR0ZXIvbWF0ZXJpYWwuZGFydCc7CgppbXBvcnQgJy4uLy4uL2NvcmUvcHVyY2hhc2VzL2FwcF9wdXJjaGFzZXMuZGFydCc7CmltcG9ydCAncGF5d2FsbF9jYXJkLmRhcnQnOwppbXBvcnQgJ3BheXdhbGxfdGV4dHMuZGFydCc7CmltcG9ydCAncGF5d2FsbF93aWRnZXRzLmRhcnQnOwoKLy8vIFdoYXQgdGhlIHNjcmVlbiBvZiB0aGUgc3Vic2NyaXB0aW9uIHNob3dzIHRvIGEgdXNlciB3aXRoIHByZW1pdW0gYWNjZXNzOgovLy8gdGhlIGNhcmQgb2YgcHJlbWl1bSBhY2Nlc3MsIHVubG9ja2VkLCB0aGUgcGxhbiwgd2hlbiBpdCByZW5ld3Mgb3IgZW5kcywKLy8vIG9yIHRoYXQgaXQgaXMgZm9yIGdvb2QsIGFuZCB0aGUgYnV0dG9uIHRvIHRoZSBwYWdlIG9mIHRoZSBzdG9yZSB3aGVyZQovLy8gdGhlIHVzZXIgbWFuYWdlcyB0aGUgcGxhbiwgd2hlbiB0aGUgc3RvcmUgaGFzIG9uZS4KLy8vCi8vLyBJdCBrZWVwcyBub3RoaW5nIG9mIHRoZSBhY2Nlc3MgaXRzZWxmOiB0aGUgc2NyZWVuIGdpdmVzIGl0IHRoZSBhY2Nlc3Mgb2YKLy8vIHRoZSB1c2VyIGFuZCB0YWtlcyB3aGF0IHRoZSB1c2VyIGFza3MgZm9yLiBTbyBpdCBpcyB0aGUgc2FtZSB3aGljaGV2ZXIKLy8vIHdheSB0aGUgYXBwIG1hbmFnZXMgc3RhdGUuIFdoZW4gdGhlIGFjY2VzcyBlbmRzLCB0aGUgcm91dGVyIGNsb3NlcyB0aGUKLy8vIHNjcmVlbjsgdW50aWwgdGhlbiB0aGUgdmlldyBzaG93cyB0aGUgYWNjZXNzIHRoYXQgdGhlIHVzZXIgaGFkLgpjbGFzcyBTdWJzY3JpcHRpb25WaWV3IGV4dGVuZHMgU3RhdGVmdWxXaWRnZXQgewogIC8vLyBDcmVhdGVzIHRoZSB2aWV3LgogIGNvbnN0IFN1YnNjcmlwdGlvblZpZXcoewogICAgcmVxdWlyZWQgdGhpcy5hY2Nlc3MsCiAgICByZXF1aXJlZCB0aGlzLm9uTWFuYWdlLAogICAgc3VwZXIua2V5LAogIH0pOwoKICAvLy8gVGhlIGFjY2VzcyBvZiB0aGUgdXNlci4KICBmaW5hbCBBcHBBY2Nlc3MgYWNjZXNzOwoKICAvLy8gT3BlbnMgdGhlIHBhZ2Ugb2YgdGhlIHN0b3JlIHdoZXJlIHRoZSB1c2VyIG1hbmFnZXMgdGhlIHBsYW4uCiAgZmluYWwgdm9pZCBGdW5jdGlvbihVcmkgdXJsKSBvbk1hbmFnZTsKCiAgQG92ZXJyaWRlCiAgU3RhdGU8U3Vic2NyaXB0aW9uVmlldz4gY3JlYXRlU3RhdGUoKSA9PiBfU3Vic2NyaXB0aW9uVmlld1N0YXRlKCk7Cn0KCmNsYXNzIF9TdWJzY3JpcHRpb25WaWV3U3RhdGUgZXh0ZW5kcyBTdGF0ZTxTdWJzY3JpcHRpb25WaWV3PgogICAgd2l0aCBTaW5nbGVUaWNrZXJQcm92aWRlclN0YXRlTWl4aW4gewogIC8vLyBMZXRzIHRoZSBwYXJ0cyBvZiB0aGUgc2NyZWVuIHJpc2UgaW4gb25lIGFmdGVyIGFub3RoZXIsIG9uY2UuCiAgbGF0ZSBmaW5hbCBBbmltYXRpb25Db250cm9sbGVyIF9lbnRyYW5jZSA9IEFuaW1hdGlvbkNvbnRyb2xsZXIoCiAgICB2c3luYzogdGhpcywKICAgIGR1cmF0aW9uOiBjb25zdCBEdXJhdGlvbihtaWxsaXNlY29uZHM6IDE0MDApLAogICk7CgogIHZhciBfc3RhcnRlZCA9IGZhbHNlOwoKICAvLy8gVGhlIGFjY2VzcyB0aGF0IHRoZSBzY3JlZW4gc2hvd3M6IHRoYXQgb2YgdGhlIHVzZXIsIGFsc28gb25jZSBpdAogIC8vLyBlbmRlZCwgc2luY2UgdGhlIHNjcmVlbiBzaG93cyB1bnRpbCB0aGUgcm91dGVyIGNsb3NlcyBpdC4KICBsYXRlIFByZW1pdW1BY2Nlc3M/IF9zaG93biA9IHN3aXRjaCAod2lkZ2V0LmFjY2VzcykgewogICAgZmluYWwgUHJlbWl1bUFjY2VzcyBhY2Nlc3MgPT4gYWNjZXNzLAogICAgTm9BY2Nlc3MoKSA9PiBudWxsLAogIH07CgogIEBvdmVycmlkZQogIHZvaWQgZGlkQ2hhbmdlRGVwZW5kZW5jaWVzKCkgewogICAgc3VwZXIuZGlkQ2hhbmdlRGVwZW5kZW5jaWVzKCk7CiAgICBpZiAoX3N0YXJ0ZWQpIHJldHVybjsKICAgIF9zdGFydGVkID0gdHJ1ZTsKICAgIC8vIEFuIGFwcCB0aGF0IGFza3MgZm9yIGxlc3MgbW90aW9uIHNob3dzIHRoZSBzY3JlZW4gYXQgb25jZS4KICAgIGlmIChNZWRpYVF1ZXJ5LmRpc2FibGVBbmltYXRpb25zT2YoY29udGV4dCkpIHsKICAgICAgX2VudHJhbmNlLnZhbHVlID0gMTsKICAgIH0gZWxzZSB7CiAgICAgIF9lbnRyYW5jZS5mb3J3YXJkKCk7CiAgICB9CiAgfQoKICBAb3ZlcnJpZGUKICB2b2lkIGRpZFVwZGF0ZVdpZGdldChTdWJzY3JpcHRpb25WaWV3IG9sZFdpZGdldCkgewogICAgc3VwZXIuZGlkVXBkYXRlV2lkZ2V0KG9sZFdpZGdldCk7CiAgICBpZiAod2lkZ2V0LmFjY2VzcyBjYXNlIGZpbmFsIFByZW1pdW1BY2Nlc3MgYWNjZXNzKSBfc2hvd24gPSBhY2Nlc3M7CiAgfQoKICBAb3ZlcnJpZGUKICB2b2lkIGRpc3Bvc2UoKSB7CiAgICBfZW50cmFuY2UuZGlzcG9zZSgpOwogICAgc3VwZXIuZGlzcG9zZSgpOwogIH0KCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICBmaW5hbCB0aGVtZSA9IFRoZW1lLm9mKGNvbnRleHQpOwogICAgZmluYWwgY29sb3JzID0gdGhlbWUuY29sb3JTY2hlbWU7CiAgICBmaW5hbCBhY2Nlc3MgPSBfc2hvd247CiAgICAvLyBXaGV0aGVyIGEgcGFnZSBiZWxvdyB0aGlzIG9uZSBpcyB0aGVyZSB0byBnbyBiYWNrIHRvLgogICAgZmluYWwgYmFjayA9IE1vZGFsUm91dGUub2YoY29udGV4dCk/LmltcGxpZXNBcHBCYXJEaXNtaXNzYWwgPz8gZmFsc2U7CiAgICBmaW5hbCBtYW5hZ2VVcmwgPSBhY2Nlc3M/Lm1hbmFnZVVybDsKICAgIHJldHVybiBTY2FmZm9sZCgKICAgICAgYXBwQmFyOiBiYWNrID8gQXBwQmFyKCkgOiBudWxsLAogICAgICBib2R5OiBTYWZlQXJlYSgKICAgICAgICBib3R0b206IGZhbHNlLAogICAgICAgIGNoaWxkOiBTaW5nbGVDaGlsZFNjcm9sbFZpZXcoCiAgICAgICAgICAvLyBUaGUgc2NyZWVuIHNjcm9sbHMgdW5kZXIgd2hhdCBjb3ZlcnMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLAogICAgICAgICAgLy8gc3VjaCBhcyB0aGUgYmFyIG9mIHRoZSBob21lIGdlc3R1cmUsIGFuZCBlbmRzIGFib3ZlIGl0LgogICAgICAgICAgcGFkZGluZzogRWRnZUluc2V0cy5mcm9tTFRSQigKICAgICAgICAgICAgMjAsCiAgICAgICAgICAgIGJhY2sgPyA4IDogMjQsCiAgICAgICAgICAgIDIwLAogICAgICAgICAgICAzMiArIE1lZGlhUXVlcnkucGFkZGluZ09mKGNvbnRleHQpLmJvdHRvbSwKICAgICAgICAgICksCiAgICAgICAgICBjaGlsZDogQ2VudGVyKAogICAgICAgICAgICBjaGlsZDogQ29uc3RyYWluZWRCb3goCiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGNvbnN0IEJveENvbnN0cmFpbnRzKG1heFdpZHRoOiA0ODApLAogICAgICAgICAgICAgIGNoaWxkOiBDb2x1bW4oCiAgICAgICAgICAgICAgICBjcm9zc0F4aXNBbGlnbm1lbnQ6IENyb3NzQXhpc0FsaWdubWVudC5zdHJldGNoLAogICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICAgICAgUmlzZSgKICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IF9lbnRyYW5jZSwKICAgICAgICAgICAgICAgICAgICBvcmRlcjogMCwKICAgICAgICAgICAgICAgICAgICBjaGlsZDogQ29sdW1uKAogICAgICAgICAgICAgICAgICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBDcm9zc0F4aXNBbGlnbm1lbnQuc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICAgICAgICAgICAgICBTZW1hbnRpY3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB0aXRsZSBpcyBsYXJnZSBhbHJlYWR5LCBzbyBpdCBncm93cyBvbmx5IGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFsZiB3aXRoIHRoZSB0ZXh0IHNpemUgb2YgdGhlIGRldmljZS4KICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZDogUGF5d2FsbFdvcmRzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAge3t7dGV4dF9zdWJzY3JpcHRpb25fdGl0bGV9fX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogdGhlbWUudGV4dFRoZW1lLmhlYWRsaW5lTGFyZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTY2FsZUZhY3RvcjogMS41LAogICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogOCksCiAgICAgICAgICAgICAgICAgICAgICAgIFRleHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAge3t7dGV4dF9zdWJzY3JpcHRpb25faW50cm99fX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS5ib2R5TGFyZ2U/LmNvcHlXaXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9ycy5vblN1cmZhY2VWYXJpYW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogMjQpLAogICAgICAgICAgICAgICAgICBSaXNlKAogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogX2VudHJhbmNlLAogICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLAogICAgICAgICAgICAgICAgICAgIGNoaWxkOiBQcmVtaXVtQ2FyZCgKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogX2VudHJhbmNlLAogICAgICAgICAgICAgICAgICAgICAgcHJlbWl1bToge3t7dGV4dF9wcmVtaXVtfX19LAogICAgICAgICAgICAgICAgICAgICAgYmFkZ2U6IHt7e3RleHRfdW5sb2NrZWR9fX0sCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgaWYgKGFjY2VzcyAhPSBudWxsKSAuLi5bCiAgICAgICAgICAgICAgICAgICAgY29uc3QgU2l6ZWRCb3goaGVpZ2h0OiAyNCksCiAgICAgICAgICAgICAgICAgICAgUmlzZSgKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogX2VudHJhbmNlLAogICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDIsCiAgICAgICAgICAgICAgICAgICAgICBjaGlsZDogX0RldGFpbHMoYWNjZXNzOiBhY2Nlc3MpLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgIGlmIChtYW5hZ2VVcmwgIT0gbnVsbCkgLi4uWwogICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogMjQpLAogICAgICAgICAgICAgICAgICAgIFJpc2UoCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IF9lbnRyYW5jZSwKICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzLAogICAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IENvbHVtbigKICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBDcm9zc0F4aXNBbGlnbm1lbnQuc3RyZXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxsZWRCdXR0b24udG9uYWxJY29uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QcmVzc2VkOiAoKSA9PiB3aWRnZXQub25NYW5hZ2UobWFuYWdlVXJsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGNvbnN0IEljb24oSWNvbnMub3Blbl9pbl9uZXdfcm91bmRlZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogUGF5d2FsbFdvcmRzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3t0ZXh0X21hbmFnZX19fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBUZXh0QWxpZ24uY2VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpemVkQm94KGhlaWdodDogMTApLAogICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3t0ZXh0X21hbmFnZV9oaW50fX19LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBUZXh0QWxpZ24uY2VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS5ib2R5U21hbGw/LmNvcHlXaXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3JzLm9uU3VyZmFjZVZhcmlhbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApOwogIH0KfQoKLy8vIFRoZSBwbGFuIG9mIFthY2Nlc3NdIGFuZCB3aGVuIGl0IHJlbmV3cyBvciBlbmRzLCBvciB0aGF0IGl0IGlzIGZvcgovLy8gZ29vZCwgb25lIGJlbG93IHRoZSBvdGhlciBvbiBhIGNhcmQsIHdpdGggYSBsaW5lIGJldHdlZW4gdGhlbS4KY2xhc3MgX0RldGFpbHMgZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIGNvbnN0IF9EZXRhaWxzKHtyZXF1aXJlZCB0aGlzLmFjY2Vzc30pOwoKICBmaW5hbCBQcmVtaXVtQWNjZXNzIGFjY2VzczsKCiAgQG92ZXJyaWRlCiAgV2lkZ2V0IGJ1aWxkKEJ1aWxkQ29udGV4dCBjb250ZXh0KSB7CiAgICBmaW5hbCBwZXJpb2QgPSBhY2Nlc3MucGVyaW9kOwogICAgZmluYWwgcGxhbiA9IHBlcmlvZCA9PSBudWxsID8gbnVsbCA6IHRlcm1OYW1lT2YoY29udGV4dCwgcGVyaW9kKTsKICAgIGZpbmFsIGV4cGlyZXNBdCA9IGFjY2Vzcy5leHBpcmVzQXQ7CiAgICBmaW5hbCByb3dzID0gWwogICAgICBpZiAocGxhbiAhPSBudWxsKQogICAgICAgIF9Sb3coCiAgICAgICAgICBpY29uOiBJY29ucy53b3Jrc3BhY2VfcHJlbWl1bV9vdXRsaW5lZCwKICAgICAgICAgIGxhYmVsOiB7e3t0ZXh0X3BsYW5fbGFiZWx9fX0sCiAgICAgICAgICB2YWx1ZTogcGxhbiwKICAgICAgICApLAogICAgICBpZiAoZXhwaXJlc0F0ID09IG51bGwpCiAgICAgICAgX1JvdyhpY29uOiBJY29ucy5hbGxfaW5jbHVzaXZlX3JvdW5kZWQsIGxhYmVsOiB7e3t0ZXh0X2xpZmV0aW1lX2FjY2Vzc319fSkKICAgICAgZWxzZQogICAgICAgIF9Sb3coCiAgICAgICAgICBpY29uOiBhY2Nlc3MuaW5UcmlhbAogICAgICAgICAgICAgID8gSWNvbnMuaG91cmdsYXNzX2JvdHRvbV9yb3VuZGVkCiAgICAgICAgICAgICAgOiBhY2Nlc3MucmVuZXdzCiAgICAgICAgICAgICAgPyBJY29ucy5hdXRvcmVuZXdfcm91bmRlZAogICAgICAgICAgICAgIDogSWNvbnMuZXZlbnRfYnVzeV9vdXRsaW5lZCwKICAgICAgICAgIGxhYmVsOiBhY2Nlc3MuaW5UcmlhbAogICAgICAgICAgICAgID8ge3t7dGV4dF90cmlhbF9lbmRzX29ufX19CiAgICAgICAgICAgICAgOiBhY2Nlc3MucmVuZXdzCiAgICAgICAgICAgICAgPyB7e3t0ZXh0X3JlbmV3c19vbn19fQogICAgICAgICAgICAgIDoge3t7dGV4dF9lbmRzX29ufX19LAogICAgICAgICAgdmFsdWU6IE1hdGVyaWFsTG9jYWxpemF0aW9ucy5vZigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICkuZm9ybWF0U2hvcnREYXRlKGV4cGlyZXNBdC50b0xvY2FsKCkpLAogICAgICAgICksCiAgICBdOwogICAgcmV0dXJuIENhcmQoCiAgICAgIGNsaXBCZWhhdmlvcjogQ2xpcC5hbnRpQWxpYXMsCiAgICAgIGNoaWxkOiBDb2x1bW4oCiAgICAgICAgY3Jvc3NBeGlzQWxpZ25tZW50OiBDcm9zc0F4aXNBbGlnbm1lbnQuc3RyZXRjaCwKICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgZm9yIChmaW5hbCAoaW5kZXgsIHJvdykgaW4gcm93cy5pbmRleGVkKSAuLi5bCiAgICAgICAgICAgIGlmIChpbmRleCA+IDApIGNvbnN0IERpdmlkZXIoaGVpZ2h0OiAxLCBpbmRlbnQ6IDU2KSwKICAgICAgICAgICAgcm93LAogICAgICAgICAgXSwKICAgICAgICBdLAogICAgICApLAogICAgKTsKICB9Cn0KCi8vLyBBIHJvdyBvZiB0aGUgY2FyZCBvZiB0aGUgc3Vic2NyaXB0aW9uOiBpdHMgW2ljb25dLCBpdHMgW2xhYmVsXSBhbmQgaXRzCi8vLyBbdmFsdWVdLCBpZiBpdCBoYXMgb25lLiBBIHNjcmVlbiByZWFkZXIgcmVhZHMgaXQgYXMgb25lIGxpbmUuCmNsYXNzIF9Sb3cgZXh0ZW5kcyBTdGF0ZWxlc3NXaWRnZXQgewogIGNvbnN0IF9Sb3coe3JlcXVpcmVkIHRoaXMuaWNvbiwgcmVxdWlyZWQgdGhpcy5sYWJlbCwgdGhpcy52YWx1ZX0pOwoKICBmaW5hbCBJY29uRGF0YSBpY29uOwogIGZpbmFsIFN0cmluZyBsYWJlbDsKICBmaW5hbCBTdHJpbmc/IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBXaWRnZXQgYnVpbGQoQnVpbGRDb250ZXh0IGNvbnRleHQpIHsKICAgIGZpbmFsIHRoZW1lID0gVGhlbWUub2YoY29udGV4dCk7CiAgICBmaW5hbCB2YWx1ZSA9IHRoaXMudmFsdWU7CiAgICByZXR1cm4gTWVyZ2VTZW1hbnRpY3MoCiAgICAgIGNoaWxkOiBMaXN0VGlsZSgKICAgICAgICBsZWFkaW5nOiBJY29uKGljb24pLAogICAgICAgIHRpdGxlOiBUZXh0KGxhYmVsKSwKICAgICAgICAvLyBCZWxvdyB0aGUgbGFiZWwsIHdoZXJlIGEgbG9uZyB2YWx1ZSBoYXMgdGhlIHdpZHRoIG9mIHRoZSByb3cuCiAgICAgICAgc3VidGl0bGU6IHZhbHVlID09IG51bGwKICAgICAgICAgICAgPyBudWxsCiAgICAgICAgICAgIDogVGV4dCgKICAgICAgICAgICAgICAgIHZhbHVlLAogICAgICAgICAgICAgICAgc3R5bGU6IHRoZW1lLnRleHRUaGVtZS5ib2R5TGFyZ2U/LmNvcHlXaXRoKAogICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0Lnc2MDAsCiAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5jb2xvclNjaGVtZS5vblN1cmZhY2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICksCiAgICAgICksCiAgICApOwogIH0KfQo=",
      "type": "text"
    }
  ],
  "hooks": [],
  "name": "paywall",
  "description":
      "The look of the paywall of an SMF app: the views of the paywall and of the subscription, their widgets, the card in the colours of Say My Frame, the texts that depend on a plan, the links of the paywall, the values of its state, and the function of the guard of the routes.",
  "version": "0.1.0+1",
  "environment": {"mason": "^0.1.1"},
  "vars": {}
});