@defoai/ads-client 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/index.cjs +2914 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +2226 -0
  4. package/dist/index.d.ts +2061 -12
  5. package/dist/index.js +2892 -198
  6. package/dist/index.js.map +1 -0
  7. package/package.json +10 -7
  8. package/dist/generated/apis/AdAssetsApi.d.ts +0 -140
  9. package/dist/generated/apis/AdAssetsApi.js +0 -173
  10. package/dist/generated/apis/AdGroupsApi.d.ts +0 -165
  11. package/dist/generated/apis/AdGroupsApi.js +0 -205
  12. package/dist/generated/apis/AdsApi.d.ts +0 -160
  13. package/dist/generated/apis/AdsApi.js +0 -200
  14. package/dist/generated/apis/AssetsApi.d.ts +0 -162
  15. package/dist/generated/apis/AssetsApi.js +0 -203
  16. package/dist/generated/apis/CampaignAssetsApi.d.ts +0 -136
  17. package/dist/generated/apis/CampaignAssetsApi.js +0 -167
  18. package/dist/generated/apis/CampaignsApi.d.ts +0 -169
  19. package/dist/generated/apis/CampaignsApi.js +0 -206
  20. package/dist/generated/apis/KeywordsApi.d.ts +0 -160
  21. package/dist/generated/apis/KeywordsApi.js +0 -200
  22. package/dist/generated/apis/MediaApi.d.ts +0 -50
  23. package/dist/generated/apis/MediaApi.js +0 -51
  24. package/dist/generated/apis/MetaApi.d.ts +0 -86
  25. package/dist/generated/apis/MetaApi.js +0 -104
  26. package/dist/generated/apis/ReportsApi.d.ts +0 -50
  27. package/dist/generated/apis/ReportsApi.js +0 -51
  28. package/dist/generated/apis/SitesApi.d.ts +0 -163
  29. package/dist/generated/apis/SitesApi.js +0 -202
  30. package/dist/generated/apis/SyncApi.d.ts +0 -199
  31. package/dist/generated/apis/SyncApi.js +0 -241
  32. package/dist/generated/apis/index.d.ts +0 -12
  33. package/dist/generated/apis/index.js +0 -14
  34. package/dist/generated/index.d.ts +0 -3
  35. package/dist/generated/index.js +0 -5
  36. package/dist/generated/models/AdAssetCreate.d.ts +0 -83
  37. package/dist/generated/models/AdAssetCreate.js +0 -76
  38. package/dist/generated/models/AdCreate.d.ts +0 -147
  39. package/dist/generated/models/AdCreate.js +0 -97
  40. package/dist/generated/models/AdGroupAudience.d.ts +0 -44
  41. package/dist/generated/models/AdGroupAudience.js +0 -49
  42. package/dist/generated/models/AdGroupCreate.d.ts +0 -104
  43. package/dist/generated/models/AdGroupCreate.js +0 -74
  44. package/dist/generated/models/AdGroupUpdate.d.ts +0 -104
  45. package/dist/generated/models/AdGroupUpdate.js +0 -70
  46. package/dist/generated/models/AdUpdate.d.ts +0 -147
  47. package/dist/generated/models/AdUpdate.js +0 -85
  48. package/dist/generated/models/AssetCreate.d.ts +0 -117
  49. package/dist/generated/models/AssetCreate.js +0 -80
  50. package/dist/generated/models/AssetUpdate.d.ts +0 -79
  51. package/dist/generated/models/AssetUpdate.js +0 -61
  52. package/dist/generated/models/BiddingStrategy.d.ts +0 -70
  53. package/dist/generated/models/BiddingStrategy.js +0 -62
  54. package/dist/generated/models/CampaignAdScheduleField.d.ts +0 -12
  55. package/dist/generated/models/CampaignAdScheduleField.js +0 -4
  56. package/dist/generated/models/CampaignAssetCreate.d.ts +0 -57
  57. package/dist/generated/models/CampaignAssetCreate.js +0 -63
  58. package/dist/generated/models/CampaignCreate.d.ts +0 -161
  59. package/dist/generated/models/CampaignCreate.js +0 -102
  60. package/dist/generated/models/CampaignTargeting.d.ts +0 -50
  61. package/dist/generated/models/CampaignTargeting.js +0 -47
  62. package/dist/generated/models/CampaignUpdate.d.ts +0 -161
  63. package/dist/generated/models/CampaignUpdate.js +0 -98
  64. package/dist/generated/models/CampaignsListCursorParameter.d.ts +0 -26
  65. package/dist/generated/models/CampaignsListCursorParameter.js +0 -31
  66. package/dist/generated/models/ErrorEnvelope.d.ts +0 -33
  67. package/dist/generated/models/ErrorEnvelope.js +0 -44
  68. package/dist/generated/models/ErrorEnvelopeError.d.ts +0 -44
  69. package/dist/generated/models/ErrorEnvelopeError.js +0 -49
  70. package/dist/generated/models/KeywordCreate.d.ts +0 -86
  71. package/dist/generated/models/KeywordCreate.js +0 -73
  72. package/dist/generated/models/KeywordUpdate.d.ts +0 -86
  73. package/dist/generated/models/KeywordUpdate.js +0 -69
  74. package/dist/generated/models/Location.d.ts +0 -61
  75. package/dist/generated/models/Location.js +0 -61
  76. package/dist/generated/models/NegativeKeywordEntry.d.ts +0 -47
  77. package/dist/generated/models/NegativeKeywordEntry.js +0 -55
  78. package/dist/generated/models/ScheduleWindow.d.ts +0 -95
  79. package/dist/generated/models/ScheduleWindow.js +0 -87
  80. package/dist/generated/models/SiteCreate.d.ts +0 -99
  81. package/dist/generated/models/SiteCreate.js +0 -78
  82. package/dist/generated/models/SiteCreateSeoKeywords.d.ts +0 -11
  83. package/dist/generated/models/SiteCreateSeoKeywords.js +0 -12
  84. package/dist/generated/models/SiteCreateTargetGroups.d.ts +0 -11
  85. package/dist/generated/models/SiteCreateTargetGroups.js +0 -12
  86. package/dist/generated/models/SiteLinkEntry.d.ts +0 -50
  87. package/dist/generated/models/SiteLinkEntry.js +0 -47
  88. package/dist/generated/models/SiteUpdate.d.ts +0 -99
  89. package/dist/generated/models/SiteUpdate.js +0 -74
  90. package/dist/generated/models/Sitelink.d.ts +0 -64
  91. package/dist/generated/models/Sitelink.js +0 -51
  92. package/dist/generated/models/StructuredSchedule.d.ts +0 -39
  93. package/dist/generated/models/StructuredSchedule.js +0 -46
  94. package/dist/generated/models/StructuredSnippet.d.ts +0 -38
  95. package/dist/generated/models/StructuredSnippet.js +0 -47
  96. package/dist/generated/models/SuccessEnvelope.d.ts +0 -39
  97. package/dist/generated/models/SuccessEnvelope.js +0 -46
  98. package/dist/generated/models/SuccessEnvelopeMeta.d.ts +0 -39
  99. package/dist/generated/models/SuccessEnvelopeMeta.js +0 -44
  100. package/dist/generated/models/SuccessEnvelopeMetaNextCursor.d.ts +0 -26
  101. package/dist/generated/models/SuccessEnvelopeMetaNextCursor.js +0 -31
  102. package/dist/generated/models/SyncCampaignDetail.d.ts +0 -88
  103. package/dist/generated/models/SyncCampaignDetail.js +0 -71
  104. package/dist/generated/models/SyncPlan.d.ts +0 -35
  105. package/dist/generated/models/SyncPlan.js +0 -43
  106. package/dist/generated/models/SyncPlanPlatformsValue.d.ts +0 -33
  107. package/dist/generated/models/SyncPlanPlatformsValue.js +0 -42
  108. package/dist/generated/models/SyncPlanPlatformsValueTotals.d.ts +0 -44
  109. package/dist/generated/models/SyncPlanPlatformsValueTotals.js +0 -45
  110. package/dist/generated/models/SyncProgress.d.ts +0 -57
  111. package/dist/generated/models/SyncProgress.js +0 -50
  112. package/dist/generated/models/SyncRecord.d.ts +0 -103
  113. package/dist/generated/models/SyncRecord.js +0 -73
  114. package/dist/generated/models/SyncRecordErrorsInner.d.ts +0 -38
  115. package/dist/generated/models/SyncRecordErrorsInner.js +0 -43
  116. package/dist/generated/models/SyncTotals.d.ts +0 -68
  117. package/dist/generated/models/SyncTotals.js +0 -53
  118. package/dist/generated/models/SyncTriggerRequest.d.ts +0 -39
  119. package/dist/generated/models/SyncTriggerRequest.js +0 -44
  120. package/dist/generated/models/SyncTriggerRequestOptions.d.ts +0 -56
  121. package/dist/generated/models/SyncTriggerRequestOptions.js +0 -49
  122. package/dist/generated/models/SyncTriggerResponse.d.ts +0 -59
  123. package/dist/generated/models/SyncTriggerResponse.js +0 -55
  124. package/dist/generated/models/SyncUnlinkRequest.d.ts +0 -44
  125. package/dist/generated/models/SyncUnlinkRequest.js +0 -47
  126. package/dist/generated/models/index.d.ts +0 -45
  127. package/dist/generated/models/index.js +0 -47
  128. package/dist/generated/runtime.d.ts +0 -182
  129. package/dist/generated/runtime.js +0 -318
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generated/runtime.ts","../src/generated/models/AdAssetCreate.ts","../src/generated/models/Sitelink.ts","../src/generated/models/StructuredSnippet.ts","../src/generated/models/AdCreate.ts","../src/generated/models/AdGroupAudience.ts","../src/generated/models/AdGroupCreate.ts","../src/generated/models/AdGroupUpdate.ts","../src/generated/models/AdUpdate.ts","../src/generated/models/AssetCreate.ts","../src/generated/models/AssetUpdate.ts","../src/generated/models/BiddingStrategy.ts","../src/generated/models/CampaignAdScheduleField.ts","../src/generated/models/CampaignAssetCreate.ts","../src/generated/models/CampaignTargeting.ts","../src/generated/models/NegativeKeywordEntry.ts","../src/generated/models/Location.ts","../src/generated/models/CampaignCreate.ts","../src/generated/models/CampaignUpdate.ts","../src/generated/models/KeywordCreate.ts","../src/generated/models/KeywordUpdate.ts","../src/generated/models/SiteLinkEntry.ts","../src/generated/models/SiteCreateSeoKeywords.ts","../src/generated/models/SiteCreateTargetGroups.ts","../src/generated/models/SiteCreate.ts","../src/generated/models/SiteUpdate.ts","../src/generated/models/SuccessEnvelopeMetaNextCursor.ts","../src/generated/models/SuccessEnvelopeMeta.ts","../src/generated/models/SuccessEnvelope.ts","../src/generated/models/SyncTriggerRequestOptions.ts","../src/generated/models/SyncTriggerRequest.ts","../src/generated/models/SyncUnlinkRequest.ts","../src/generated/apis/AdAssetsApi.ts","../src/generated/apis/AdGroupsApi.ts","../src/generated/apis/AdsApi.ts","../src/generated/apis/AssetsApi.ts","../src/generated/apis/CampaignAssetsApi.ts","../src/generated/apis/CampaignsApi.ts","../src/generated/apis/KeywordsApi.ts","../src/generated/apis/MediaApi.ts","../src/generated/apis/MetaApi.ts","../src/generated/apis/ReportsApi.ts","../src/generated/apis/SitesApi.ts","../src/generated/apis/SyncApi.ts","../src/index.ts"],"names":[],"mappings":";AAeO,IAAM,SAAA,GAAY,4BAAA,CAA6B,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAejE,IAAM,gBAAN,MAAoB;AAAA,EACvB,WAAA,CAAoB,aAAA,GAAyC,EAAC,EAAG;AAA7C,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AAAA,EAA8C;AAAA,EAElE,IAAI,OAAO,aAAA,EAA8B;AACrC,IAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AAAA,EACzB;AAAA,EAEA,IAAI,QAAA,GAAmB;AACnB,IAAA,OAAO,KAAK,aAAA,CAAc,QAAA,IAAY,IAAA,GAAO,IAAA,CAAK,cAAc,QAAA,GAAW,SAAA;AAAA,EAC/E;AAAA,EAEA,IAAI,QAAA,GAAiC;AACjC,IAAA,OAAO,KAAK,aAAA,CAAc,QAAA;AAAA,EAC9B;AAAA,EAEA,IAAI,UAAA,GAA2B;AAC3B,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,UAAA,IAAc,EAAC;AAAA,EAC7C;AAAA,EAEA,IAAI,oBAAA,GAAsD;AACtD,IAAA,OAAO,IAAA,CAAK,cAAc,oBAAA,IAAwB,WAAA;AAAA,EACtD;AAAA,EAEA,IAAI,QAAA,GAA+B;AAC/B,IAAA,OAAO,KAAK,aAAA,CAAc,QAAA;AAAA,EAC9B;AAAA,EAEA,IAAI,QAAA,GAA+B;AAC/B,IAAA,OAAO,KAAK,aAAA,CAAc,QAAA;AAAA,EAC9B;AAAA,EAEA,IAAI,MAAA,GAAmE;AACnE,IAAA,MAAM,MAAA,GAAS,KAAK,aAAA,CAAc,MAAA;AAClC,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,OAAO,OAAO,MAAA,KAAW,UAAA,GAAa,MAAA,GAAS,MAAM,MAAA;AAAA,IACzD;AACA,IAAA,OAAO,MAAA;AAAA,EACX;AAAA,EAEA,IAAI,WAAA,GAA4F;AAC5F,IAAA,MAAM,WAAA,GAAc,KAAK,aAAA,CAAc,WAAA;AACvC,IAAA,IAAI,WAAA,EAAa;AACb,MAAA,OAAO,OAAO,WAAA,KAAgB,UAAA,GAAa,WAAA,GAAc,YAAY,WAAA;AAAA,IACzE;AACA,IAAA,OAAO,MAAA;AAAA,EACX;AAAA,EAEA,IAAI,OAAA,GAAmC;AACnC,IAAA,OAAO,KAAK,aAAA,CAAc,OAAA;AAAA,EAC9B;AAAA,EAEA,IAAI,WAAA,GAA8C;AAC9C,IAAA,OAAO,KAAK,aAAA,CAAc,WAAA;AAAA,EAC9B;AACJ,CAAA;AAEO,IAAM,aAAA,GAAgB,IAAI,aAAA,EAAc;AAKxC,IAAM,QAAA,GAAN,MAAM,QAAA,CAAQ;AAAA,EAKjB,WAAA,CAAsB,gBAAgB,aAAA,EAAe;AAA/B,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AAiGtB,IAAA,IAAA,CAAQ,QAAA,GAAW,OAAO,GAAA,EAAa,IAAA,KAAsB;AACzD,MAAA,IAAI,WAAA,GAAc,EAAE,GAAA,EAAK,IAAA,EAAK;AAC9B,MAAA,KAAA,MAAW,UAAA,IAAc,KAAK,UAAA,EAAY;AACtC,QAAA,IAAI,WAAW,GAAA,EAAK;AAChB,UAAA,WAAA,GAAc,MAAM,WAAW,GAAA,CAAI;AAAA,YAC/B,OAAO,IAAA,CAAK,QAAA;AAAA,YACZ,GAAG;AAAA,WACN,CAAA,IAAK,WAAA;AAAA,QACV;AAAA,MACJ;AACA,MAAA,IAAI,QAAA,GAAiC,MAAA;AACrC,MAAA,IAAI;AACA,QAAA,QAAA,GAAW,MAAA,CAAO,KAAK,aAAA,CAAc,QAAA,IAAY,OAAO,WAAA,CAAY,GAAA,EAAK,YAAY,IAAI,CAAA;AAAA,MAC7F,SAAS,CAAA,EAAG;AACR,QAAA,KAAA,MAAW,UAAA,IAAc,KAAK,UAAA,EAAY;AACtC,UAAA,IAAI,WAAW,OAAA,EAAS;AACpB,YAAA,QAAA,GAAW,MAAM,WAAW,OAAA,CAAQ;AAAA,cAChC,OAAO,IAAA,CAAK,QAAA;AAAA,cACZ,KAAK,WAAA,CAAY,GAAA;AAAA,cACjB,MAAM,WAAA,CAAY,IAAA;AAAA,cAClB,KAAA,EAAO,CAAA;AAAA,cACP,QAAA,EAAU,QAAA,GAAW,QAAA,CAAS,KAAA,EAAM,GAAI;AAAA,aAC3C,CAAA,IAAK,QAAA;AAAA,UACV;AAAA,QACJ;AACA,QAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,UAAA,IAAI,aAAa,KAAA,EAAO;AACtB,YAAA,MAAM,IAAI,UAAA,CAAW,CAAA,EAAG,gFAAgF,CAAA;AAAA,UAC1G,CAAA,MAAO;AACL,YAAA,MAAM,CAAA;AAAA,UACR;AAAA,QACF;AAAA,MACJ;AACA,MAAA,KAAA,MAAW,UAAA,IAAc,KAAK,UAAA,EAAY;AACtC,QAAA,IAAI,WAAW,IAAA,EAAM;AACjB,UAAA,QAAA,GAAW,MAAM,WAAW,IAAA,CAAK;AAAA,YAC7B,OAAO,IAAA,CAAK,QAAA;AAAA,YACZ,KAAK,WAAA,CAAY,GAAA;AAAA,YACjB,MAAM,WAAA,CAAY,IAAA;AAAA,YAClB,QAAA,EAAU,SAAS,KAAA;AAAM,WAC5B,CAAA,IAAK,QAAA;AAAA,QACV;AAAA,MACJ;AACA,MAAA,OAAO,QAAA;AAAA,IACX,CAAA;AA5II,IAAA,IAAA,CAAK,aAAa,aAAA,CAAc,UAAA;AAAA,EACpC;AAAA,EAEA,kBAA8C,WAAA,EAA2B;AACrE,IAAA,MAAM,IAAA,GAAO,KAAK,KAAA,EAAS;AAC3B,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,GAAG,WAAW,CAAA;AACvD,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEA,qBAAiD,cAAA,EAA0C;AACvF,IAAA,MAAM,cAAc,cAAA,CAAe,GAAA,CAAI,CAAC,GAAA,MAAS,EAAE,KAAI,CAAE,CAAA;AACzD,IAAA,OAAO,IAAA,CAAK,cAAA,CAAkB,GAAG,WAAW,CAAA;AAAA,EAChD;AAAA,EAEA,sBAAkD,eAAA,EAA4C;AAC1F,IAAA,MAAM,cAAc,eAAA,CAAgB,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,MAAK,CAAE,CAAA;AAC5D,IAAA,OAAO,IAAA,CAAK,cAAA,CAAkB,GAAG,WAAW,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYU,WAAW,IAAA,EAA0C;AAC3D,IAAA,IAAI,CAAC,IAAA,EAAM;AACP,MAAA,OAAO,KAAA;AAAA,IACX;AACA,IAAA,OAAO,QAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AAAA,EACtC;AAAA,EAEA,MAAgB,OAAA,CAAQ,OAAA,EAAsB,aAAA,EAAuE;AACjH,IAAA,MAAM,EAAE,KAAK,IAAA,EAAK,GAAI,MAAM,IAAA,CAAK,iBAAA,CAAkB,SAAS,aAAa,CAAA;AACzE,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,KAAK,IAAI,CAAA;AAC9C,IAAA,IAAI,aAAa,QAAA,CAAS,MAAA,IAAU,GAAA,IAAO,QAAA,CAAS,SAAS,GAAA,CAAA,EAAM;AAC/D,MAAA,OAAO,QAAA;AAAA,IACX;AACA,IAAA,MAAM,IAAI,aAAA,CAAc,QAAA,EAAU,iCAAiC,CAAA;AAAA,EACvE;AAAA,EAEA,MAAc,iBAAA,CAAkB,OAAA,EAAsB,aAAA,EAAoD;AACtG,IAAA,IAAI,GAAA,GAAM,IAAA,CAAK,aAAA,CAAc,QAAA,GAAW,OAAA,CAAQ,IAAA;AAChD,IAAA,IAAI,OAAA,CAAQ,UAAU,MAAA,IAAa,MAAA,CAAO,KAAK,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AAIxE,MAAA,GAAA,IAAO,GAAA,GAAM,IAAA,CAAK,aAAA,CAAc,oBAAA,CAAqB,QAAQ,KAAK,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,OAAA,GAAU,OAAO,MAAA,CAAO,IAAI,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,OAAA,CAAQ,OAAO,CAAA;AAC7E,IAAA,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,CAAQ,SAAO,OAAA,CAAQ,GAAG,CAAA,KAAM,MAAA,GAAY,OAAO,OAAA,CAAQ,GAAG,CAAA,GAAI,EAAE,CAAA;AAEzF,IAAA,MAAM,cAAA,GACF,OAAO,aAAA,KAAkB,UAAA,GACnB,gBACA,YAAY,aAAA;AAEtB,IAAA,MAAM,UAAA,GAAa;AAAA,MACf,QAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,OAAA;AAAA,MACA,MAAM,OAAA,CAAQ,IAAA;AAAA,MACd,WAAA,EAAa,KAAK,aAAA,CAAc;AAAA,KACpC;AAEA,IAAA,MAAM,cAAA,GAA8B;AAAA,MAChC,GAAG,UAAA;AAAA,MACH,GAAI,MAAM,cAAA,CAAe;AAAA,QACrB,IAAA,EAAM,UAAA;AAAA,QACN;AAAA,OACH;AAAA,KACL;AAEA,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,UAAA,CAAW,cAAA,CAAe,IAAI,CAAA,IAC1B,cAAA,CAAe,gBAAgB,eAAA,IAChC,MAAA,CAAO,cAAA,CAAe,IAAI,CAAA,EAAG;AAClC,MAAA,IAAA,GAAO,cAAA,CAAe,IAAA;AAAA,IACxB,WAAW,IAAA,CAAK,UAAA,CAAW,OAAA,CAAQ,cAAc,CAAC,CAAA,EAAG;AACnD,MAAA,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,IAAI,CAAA;AAAA,IAC3C,CAAA,MAAO;AACL,MAAA,IAAA,GAAO,cAAA,CAAe,IAAA;AAAA,IACxB;AAEA,IAAA,MAAM,IAAA,GAAoB;AAAA,MACtB,GAAG,cAAA;AAAA,MACH;AAAA,KACJ;AAEA,IAAA,OAAO,EAAE,KAAK,IAAA,EAAK;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAoDQ,KAAA,GAAqC;AACzC,IAAA,MAAM,cAAc,IAAA,CAAK,WAAA;AACzB,IAAA,MAAM,IAAA,GAAO,IAAI,WAAA,CAAY,IAAA,CAAK,aAAa,CAAA;AAC/C,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,UAAA,CAAW,KAAA,EAAM;AACxC,IAAA,OAAO,IAAA;AAAA,EACX;AACJ,CAAA;AA9Ja,QAAA,CAEe,SAAA,GAAY,IAAI,MAAA,CAAO,8DAAA,EAAqE,GAAG,CAAA;AAFpH,IAAM,OAAA,GAAN,QAAA;AAgKP,SAAS,OAAO,KAAA,EAA2B;AACvC,EAAA,OAAO,OAAO,IAAA,KAAS,WAAA,IAAe,KAAA,YAAiB,IAAA;AAC3D;AAEA,SAAS,WAAW,KAAA,EAA+B;AAC/C,EAAA,OAAO,OAAO,QAAA,KAAa,WAAA,IAAe,KAAA,YAAiB,QAAA;AAC/D;AAEO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAErC,WAAA,CAAmB,UAAoB,GAAA,EAAc;AACjD,IAAA,KAAA,CAAM,GAAG,CAAA;AADM,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AADnB,IAAA,IAAA,CAAS,IAAA,GAAwB,eAAA;AAAA,EAGjC;AACJ,CAAA;AAEO,IAAM,UAAA,GAAN,cAAyB,KAAA,CAAM;AAAA,EAElC,WAAA,CAAmB,OAAc,GAAA,EAAc;AAC3C,IAAA,KAAA,CAAM,GAAG,CAAA;AADM,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AADnB,IAAA,IAAA,CAAS,IAAA,GAAqB,YAAA;AAAA,EAG9B;AACJ,CAAA;AAEO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAErC,WAAA,CAAmB,OAAe,GAAA,EAAc;AAC5C,IAAA,KAAA,CAAM,GAAG,CAAA;AADM,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AADnB,IAAA,IAAA,CAAS,IAAA,GAAwB,eAAA;AAAA,EAGjC;AACJ,CAAA;AAkCO,SAAS,WAAA,CAAY,MAAA,EAAmB,MAAA,GAAiB,EAAA,EAAY;AACxE,EAAA,OAAO,MAAA,CAAO,KAAK,MAAM,CAAA,CACpB,IAAI,CAAA,GAAA,KAAO,oBAAA,CAAqB,KAAK,MAAA,CAAO,GAAG,GAAG,MAAM,CAAC,EACzD,MAAA,CAAO,CAAA,IAAA,KAAQ,KAAK,MAAA,GAAS,CAAC,CAAA,CAC9B,IAAA,CAAK,GAAG,CAAA;AACjB;AAEA,SAAS,oBAAA,CAAqB,GAAA,EAAa,KAAA,EAAmJ,SAAA,GAAoB,EAAA,EAAY;AAC1N,EAAA,MAAM,UAAU,SAAA,IAAa,SAAA,CAAU,MAAA,GAAS,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAA,GAAM,GAAA,CAAA;AAC7D,EAAA,IAAI,iBAAiB,KAAA,EAAO;AACxB,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,GAAA,CAAI,CAAA,WAAA,KAAe,mBAAmB,MAAA,CAAO,WAAW,CAAC,CAAC,EAC9E,IAAA,CAAK,CAAA,CAAA,EAAI,kBAAA,CAAmB,OAAO,CAAC,CAAA,CAAA,CAAG,CAAA;AAC5C,IAAA,OAAO,CAAA,EAAG,kBAAA,CAAmB,OAAO,CAAC,IAAI,UAAU,CAAA,CAAA;AAAA,EACvD;AACA,EAAA,IAAI,iBAAiB,GAAA,EAAK;AACtB,IAAA,MAAM,YAAA,GAAe,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA;AACrC,IAAA,OAAO,oBAAA,CAAqB,GAAA,EAAK,YAAA,EAAc,SAAS,CAAA;AAAA,EAC5D;AACA,EAAA,IAAI,iBAAiB,IAAA,EAAM;AACvB,IAAA,OAAO,CAAA,EAAG,mBAAmB,OAAO,CAAC,IAAI,kBAAA,CAAmB,KAAA,CAAM,WAAA,EAAa,CAAC,CAAA,CAAA;AAAA,EACpF;AACA,EAAA,IAAI,iBAAiB,MAAA,EAAQ;AACzB,IAAA,OAAO,WAAA,CAAY,OAAoB,OAAO,CAAA;AAAA,EAClD;AACA,EAAA,OAAO,CAAA,EAAG,mBAAmB,OAAO,CAAC,IAAI,kBAAA,CAAmB,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA,CAAA;AAC9E;AA+DO,IAAM,kBAAN,MAAyB;AAAA,EAC5B,WAAA,CAAmB,GAAA,EAAuB,WAAA,GAAsC,CAAC,cAAmB,SAAA,EAAW;AAA5F,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAAuB,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AAAA,EAAsE;AAAA,EAEhH,MAAM,KAAA,GAAoB;AACtB,IAAA,OAAO,KAAK,WAAA,CAAY,MAAM,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAAA,EACjD;AACJ,CAAA;;;ACrSO,SAAS,oBAAoB,IAAA,EAA0B;AAC1D,EAAA,OAAO,wBAAA,CAAyB,MAAM,KAAK,CAAA;AAC/C;AAEO,SAAS,wBAAA,CAAyB,KAAA,EAA8B,mBAAA,GAA+B,KAAA,EAAY;AAC9G,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,IACtB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,SAAA,EAAW,MAAM,SAAS,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,MAAM;AAAA,GACxB;AACJ;;;AC9CO,SAAS,eAAe,IAAA,EAAqB;AAChD,EAAA,OAAO,mBAAA,CAAoB,MAAM,KAAK,CAAA;AAC1C;AAEO,SAAS,mBAAA,CAAoB,KAAA,EAAyB,mBAAA,GAA+B,KAAA,EAAY;AACpG,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,IAClB,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,qBAAA,EAAuB,MAAM,qBAAqB;AAAA,GACtD;AACJ;;;AC5CO,SAAS,wBAAwB,IAAA,EAA8B;AAClE,EAAA,OAAO,4BAAA,CAA6B,MAAM,KAAK,CAAA;AACnD;AAEO,SAAS,4BAAA,CAA6B,KAAA,EAAkC,mBAAA,GAA+B,KAAA,EAAY;AACtH,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,QAAA,EAAU,MAAM,QAAQ;AAAA,GAC5B;AACJ;;;ACiIO,SAAS,eAAe,IAAA,EAAqB;AAChD,EAAA,OAAO,mBAAA,CAAoB,MAAM,KAAK,CAAA;AAC1C;AAEO,SAAS,mBAAA,CAAoB,KAAA,EAAyB,mBAAA,GAA+B,KAAA,EAAY;AACpG,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,eAAA,EAAiB,MAAM,eAAe,CAAA;AAAA,IACtC,eAAA,EAAiB,MAAM,eAAe,CAAA;AAAA,IACtC,eAAA,EAAiB,MAAM,eAAe,CAAA;AAAA,IACtC,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IAClC,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,IACtB,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,IACtB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,WAAA,EAAa,KAAA,CAAM,WAAW,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,WAAW,CAAA,CAAiB,GAAA,CAAI,cAAc,CAAA;AAAA,IAC5G,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,oBAAA,EAAsB,KAAA,CAAM,oBAAoB,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,oBAAoB,CAAA,CAAiB,GAAA,CAAI,uBAAuB,CAAA;AAAA,IAChJ,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,gBAAA,EAAkB,MAAM,gBAAgB,CAAA;AAAA,IACxC,qBAAA,EAAuB,MAAM,qBAAqB;AAAA,GACtD;AACJ;;;ACtKO,SAAS,sBAAsB,IAAA,EAA4B;AAC9D,EAAA,OAAO,0BAAA,CAA2B,MAAM,KAAK,CAAA;AACjD;AAEO,SAAS,0BAAA,CAA2B,KAAA,EAAgC,mBAAA,GAA+B,KAAA,EAAY;AAClH,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,IAAA,EAAM,MAAM,IAAI,CAAA;AAAA,IAChB,eAAA,EAAiB,MAAM,eAAe;AAAA,GAC1C;AACJ;;;AC6DO,SAAS,oBAAoB,IAAA,EAA0B;AAC1D,EAAA,OAAO,wBAAA,CAAyB,MAAM,KAAK,CAAA;AAC/C;AAEO,SAAS,wBAAA,CAAyB,KAAA,EAA8B,mBAAA,GAA+B,KAAA,EAAY;AAC9G,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,IAClB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,WAAA,EAAa,KAAA,CAAM,WAAW,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,WAAW,CAAA,CAAiB,GAAA,CAAI,qBAAqB,CAAA;AAAA,IACnH,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,gBAAA,EAAkB,MAAM,gBAAgB,CAAA;AAAA,IACxC,qBAAA,EAAuB,MAAM,qBAAqB;AAAA,GACtD;AACJ;;;ACzBO,SAAS,oBAAoB,IAAA,EAA0B;AAC1D,EAAA,OAAO,wBAAA,CAAyB,MAAM,KAAK,CAAA;AAC/C;AAEO,SAAS,wBAAA,CAAyB,KAAA,EAA8B,mBAAA,GAA+B,KAAA,EAAY;AAC9G,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,IAClB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,WAAA,EAAa,KAAA,CAAM,WAAW,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,WAAW,CAAA,CAAiB,GAAA,CAAI,qBAAqB,CAAA;AAAA,IACnH,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,gBAAA,EAAkB,MAAM,gBAAgB,CAAA;AAAA,IACxC,qBAAA,EAAuB,MAAM,qBAAqB;AAAA,GACtD;AACJ;;;ACiCO,SAAS,eAAe,IAAA,EAAqB;AAChD,EAAA,OAAO,mBAAA,CAAoB,MAAM,KAAK,CAAA;AAC1C;AAEO,SAAS,mBAAA,CAAoB,KAAA,EAAyB,mBAAA,GAA+B,KAAA,EAAY;AACpG,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,eAAA,EAAiB,MAAM,eAAe,CAAA;AAAA,IACtC,eAAA,EAAiB,MAAM,eAAe,CAAA;AAAA,IACtC,eAAA,EAAiB,MAAM,eAAe,CAAA;AAAA,IACtC,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IAClC,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,IACtB,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,IACtB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,WAAA,EAAa,KAAA,CAAM,WAAW,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,WAAW,CAAA,CAAiB,GAAA,CAAI,cAAc,CAAA;AAAA,IAC5G,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,oBAAA,EAAsB,KAAA,CAAM,oBAAoB,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,oBAAoB,CAAA,CAAiB,GAAA,CAAI,uBAAuB,CAAA;AAAA,IAChJ,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,gBAAA,EAAkB,MAAM,gBAAgB,CAAA;AAAA,IACxC,qBAAA,EAAuB,MAAM,qBAAqB;AAAA,GACtD;AACJ;;;AC7EO,SAAS,kBAAkB,IAAA,EAAwB;AACtD,EAAA,OAAO,sBAAA,CAAuB,MAAM,KAAK,CAAA;AAC7C;AAEO,SAAS,sBAAA,CAAuB,KAAA,EAA4B,mBAAA,GAA+B,KAAA,EAAY;AAC1G,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,IAClB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,gBAAA,EAAkB,MAAM,gBAAgB,CAAA;AAAA,IACxC,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IAClC,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,IACtB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,SAAA,EAAW,MAAM,SAAS,CAAA;AAAA,IAC1B,UAAA,EAAY,MAAM,UAAU;AAAA,GAChC;AACJ;;;ACrEO,SAAS,kBAAkB,IAAA,EAAwB;AACtD,EAAA,OAAO,sBAAA,CAAuB,MAAM,KAAK,CAAA;AAC7C;AAEO,SAAS,sBAAA,CAAuB,KAAA,EAA4B,mBAAA,GAA+B,KAAA,EAAY;AAC1G,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,SAAA,EAAW,MAAM,SAAS,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,IACtB,QAAA,EAAU,MAAM,QAAQ;AAAA,GAC5B;AACJ;;;AC5BO,SAAS,sBAAsB,IAAA,EAA4B;AAC9D,EAAA,OAAO,0BAAA,CAA2B,MAAM,KAAK,CAAA;AACjD;AAEO,SAAS,0BAAA,CAA2B,KAAA,EAAgC,mBAAA,GAA+B,KAAA,EAAY;AAClH,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,uBAAA,EAAyB,MAAM,uBAAuB,CAAA;AAAA,IACtD,kBAAA,EAAoB,MAAM,kBAAkB;AAAA,GAChD;AACJ;;;AClGO,SAAS,8BAA8B,KAAA,EAA6C;AAAE,EAAA,OAAO,KAAA;AAAO;;;ACqEpG,SAAS,0BAA0B,IAAA,EAAgC;AACtE,EAAA,OAAO,8BAAA,CAA+B,MAAM,KAAK,CAAA;AACrD;AAEO,SAAS,8BAAA,CAA+B,KAAA,EAAoC,mBAAA,GAA+B,KAAA,EAAY;AAC1H,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,SAAA,EAAW,MAAM,SAAS,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,MAAM;AAAA,GACxB;AACJ;;;AC3BO,SAAS,wBAAwB,IAAA,EAA8B;AAClE,EAAA,OAAO,4BAAA,CAA6B,MAAM,KAAK,CAAA;AACnD;AAEO,SAAS,4BAAA,CAA6B,KAAA,EAAkC,mBAAA,GAA+B,KAAA,EAAY;AACtH,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,SAAA,EAAW,MAAM,SAAS,CAAA;AAAA,IAC1B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,UAAA,EAAY,MAAM,UAAU;AAAA,GAChC;AACJ;;;AChBO,SAAS,2BAA2B,IAAA,EAAiC;AACxE,EAAA,OAAO,+BAAA,CAAgC,MAAM,KAAK,CAAA;AACtD;AAEO,SAAS,+BAAA,CAAgC,KAAA,EAAqC,mBAAA,GAA+B,KAAA,EAAY;AAC5H,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,WAAA,EAAa,MAAM,WAAW;AAAA,GAClC;AACJ;;;ACEO,SAAS,eAAe,IAAA,EAAqB;AAChD,EAAA,OAAO,mBAAA,CAAoB,MAAM,KAAK,CAAA;AAC1C;AAEO,SAAS,mBAAA,CAAoB,KAAA,EAAyB,mBAAA,GAA+B,KAAA,EAAY;AACpG,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IAClC,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,aAAA,EAAe,MAAM,aAAa;AAAA,GACtC;AACJ;;;ACgIO,SAAS,qBAAqB,IAAA,EAA2B;AAC5D,EAAA,OAAO,yBAAA,CAA0B,MAAM,KAAK,CAAA;AAChD;AAEO,SAAS,yBAAA,CAA0B,KAAA,EAA+B,mBAAA,GAA+B,KAAA,EAAY;AAChH,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,iBAAA,EAAmB,KAAA,CAAM,iBAAiB,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,iBAAiB,CAAA,CAAiB,GAAA,CAAI,cAAc,CAAA;AAAA,IAC9H,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,YAAA,EAAc,6BAAA,CAA8B,KAAA,CAAM,YAAY,CAAC,CAAA;AAAA,IAC/D,iBAAA,EAAmB,qBAAA,CAAsB,KAAA,CAAM,iBAAiB,CAAC,CAAA;AAAA,IACjE,WAAA,EAAa,uBAAA,CAAwB,KAAA,CAAM,WAAW,CAAC,CAAA;AAAA,IACvD,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,gBAAA,EAAkB,MAAM,gBAAgB,CAAA;AAAA,IACxC,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,kBAAA,EAAoB,KAAA,CAAM,kBAAkB,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,kBAAkB,CAAA,CAAiB,GAAA,CAAI,0BAA0B;AAAA,GACjJ;AACJ;;;AChCO,SAAS,qBAAqB,IAAA,EAA2B;AAC5D,EAAA,OAAO,yBAAA,CAA0B,MAAM,KAAK,CAAA;AAChD;AAEO,SAAS,yBAAA,CAA0B,KAAA,EAA+B,mBAAA,GAA+B,KAAA,EAAY;AAChH,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,iBAAA,EAAmB,KAAA,CAAM,iBAAiB,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,iBAAiB,CAAA,CAAiB,GAAA,CAAI,cAAc,CAAA;AAAA,IAC9H,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,YAAA,EAAc,6BAAA,CAA8B,KAAA,CAAM,YAAY,CAAC,CAAA;AAAA,IAC/D,iBAAA,EAAmB,qBAAA,CAAsB,KAAA,CAAM,iBAAiB,CAAC,CAAA;AAAA,IACjE,WAAA,EAAa,uBAAA,CAAwB,KAAA,CAAM,WAAW,CAAC,CAAA;AAAA,IACvD,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,gBAAA,EAAkB,MAAM,gBAAgB,CAAA;AAAA,IACxC,qBAAA,EAAuB,MAAM,qBAAqB,CAAA;AAAA,IAClD,kBAAA,EAAoB,KAAA,CAAM,kBAAkB,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,kBAAkB,CAAA,CAAiB,GAAA,CAAI,0BAA0B;AAAA,GACjJ;AACJ;;;AC/IO,SAAS,oBAAoB,IAAA,EAA0B;AAC1D,EAAA,OAAO,wBAAA,CAAyB,MAAM,KAAK,CAAA;AAC/C;AAEO,SAAS,wBAAA,CAAyB,KAAA,EAA8B,mBAAA,GAA+B,KAAA,EAAY;AAC9G,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,QAAA,EAAU,MAAM,QAAQ;AAAA,GAC5B;AACJ;;;ACrBO,SAAS,oBAAoB,IAAA,EAA0B;AAC1D,EAAA,OAAO,wBAAA,CAAyB,MAAM,KAAK,CAAA;AAC/C;AAEO,SAAS,wBAAA,CAAyB,KAAA,EAA8B,mBAAA,GAA+B,KAAA,EAAY;AAC9G,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,QAAA,EAAU,MAAM,QAAQ;AAAA,GAC5B;AACJ;;;AC9DO,SAAS,oBAAoB,IAAA,EAA0B;AAC1D,EAAA,OAAO,wBAAA,CAAyB,MAAM,KAAK,CAAA;AAC/C;AAEO,SAAS,wBAAA,CAAyB,KAAA,EAA8B,mBAAA,GAA+B,KAAA,EAAY;AAC9G,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,IAClB,cAAA,EAAgB,MAAM,cAAc,CAAA;AAAA,IACpC,cAAA,EAAgB,MAAM,cAAc;AAAA,GACxC;AACJ;;;ACzEO,SAAS,4BAA4B,KAAA,EAA2C;AAAE,EAAA,OAAO,KAAA;AAAO;;;ACAhG,SAAS,6BAA6B,KAAA,EAA4C;AAAE,EAAA,OAAO,KAAA;AAAO;;;ACwIlG,SAAS,iBAAiB,IAAA,EAAuB;AACpD,EAAA,OAAO,qBAAA,CAAsB,MAAM,KAAK,CAAA;AAC5C;AAEO,SAAS,qBAAA,CAAsB,KAAA,EAA2B,mBAAA,GAA+B,KAAA,EAAY;AACxG,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,IAClB,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IAClC,aAAA,EAAe,2BAAA,CAA4B,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,IAC/D,cAAA,EAAgB,4BAAA,CAA6B,KAAA,CAAM,cAAc,CAAC,CAAA;AAAA,IAClE,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,SAAA,EAAW,MAAM,SAAS,CAAA;AAAA,IAC1B,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,WAAA,EAAa,KAAA,CAAM,WAAW,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,WAAW,CAAA,CAAiB,GAAA,CAAI,mBAAmB;AAAA,GACrH;AACJ;;;ACvBO,SAAS,iBAAiB,IAAA,EAAuB;AACpD,EAAA,OAAO,qBAAA,CAAsB,MAAM,KAAK,CAAA;AAC5C;AAEO,SAAS,qBAAA,CAAsB,KAAA,EAA2B,mBAAA,GAA+B,KAAA,EAAY;AACxG,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,MAAM,MAAM,CAAA;AAAA,IACpB,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,IAClB,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IAClC,aAAA,EAAe,2BAAA,CAA4B,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,IAC/D,cAAA,EAAgB,4BAAA,CAA6B,KAAA,CAAM,cAAc,CAAC,CAAA;AAAA,IAClE,QAAA,EAAU,MAAM,QAAQ,CAAA;AAAA,IACxB,SAAA,EAAW,MAAM,SAAS,CAAA;AAAA,IAC1B,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,WAAA,EAAa,KAAA,CAAM,WAAW,CAAA,IAAK,IAAA,GAAO,SAAc,KAAA,CAAM,WAAW,CAAA,CAAiB,GAAA,CAAI,mBAAmB;AAAA,GACrH;AACJ;;;AC3IO,SAAS,sCAAsC,IAAA,EAA0C;AAC5F,EAAA,OAAO,0CAAA,CAA2C,IAAW,CAAA;AACjE;AAEO,SAAS,0CAAA,CAA2C,MAAW,mBAAA,EAA6D;AAC/H,EAAA,OAAO,IAAA;AACX;;;ACcO,SAAS,4BAA4B,IAAA,EAAgC;AACxE,EAAA,OAAO,gCAAA,CAAiC,IAAW,CAAA;AACvD;AAEO,SAAS,gCAAA,CAAiC,MAAW,mBAAA,EAAmD;AAC3G,EAAA,IAAI,QAAQ,IAAA,EAAM;AACd,IAAA,OAAO,IAAA;AAAA,EACX;AACA,EAAA,OAAO;AAAA,IAEH,YAAA,EAAc,KAAK,YAAY,CAAA,IAAK,OAAO,MAAA,GAAY,qCAAA,CAAsC,IAAA,CAAK,YAAY,CAAC,CAAA;AAAA,IAC/G,SAAS,IAAA,CAAK,OAAO,KAAK,IAAA,GAAO,MAAA,GAAY,KAAK,OAAO;AAAA,GAC7D;AACJ;;;ACZO,SAAS,wBAAwB,IAAA,EAA4B;AAChE,EAAA,OAAO,4BAAA,CAA6B,IAAW,CAAA;AACnD;AAEO,SAAS,4BAAA,CAA6B,MAAW,mBAAA,EAA+C;AACnG,EAAA,IAAI,QAAQ,IAAA,EAAM;AACd,IAAA,OAAO,IAAA;AAAA,EACX;AACA,EAAA,OAAO;AAAA,IAEH,MAAA,EAAQ,KAAK,MAAM,CAAA;AAAA,IACnB,MAAA,EAAQ,KAAK,MAAM,CAAA,IAAK,OAAO,MAAA,GAAY,2BAAA,CAA4B,IAAA,CAAK,MAAM,CAAC;AAAA,GACvF;AACJ;;;ACcO,SAAS,gCAAgC,IAAA,EAAsC;AAClF,EAAA,OAAO,oCAAA,CAAqC,MAAM,KAAK,CAAA;AAC3D;AAEO,SAAS,oCAAA,CAAqC,KAAA,EAA0C,mBAAA,GAA+B,KAAA,EAAY;AACtI,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,iBAAA,EAAmB,MAAM,iBAAiB,CAAA;AAAA,IAC1C,iBAAA,EAAmB,MAAM,iBAAiB,CAAA;AAAA,IAC1C,YAAA,EAAc,MAAM,YAAY,CAAA;AAAA,IAChC,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,IACtB,aAAA,EAAe,MAAM,aAAa;AAAA,GACtC;AACJ;;;AC9BO,SAAS,yBAAyB,IAAA,EAA+B;AACpE,EAAA,OAAO,6BAAA,CAA8B,MAAM,KAAK,CAAA;AACpD;AAEO,SAAS,6BAAA,CAA8B,KAAA,EAAmC,mBAAA,GAA+B,KAAA,EAAY;AACxH,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,WAAA,EAAa,MAAM,WAAW,CAAA;AAAA,IAC9B,SAAA,EAAW,+BAAA,CAAgC,KAAA,CAAM,SAAS,CAAC;AAAA,GAC/D;AACJ;;;ACdO,SAAS,wBAAwB,IAAA,EAA8B;AAClE,EAAA,OAAO,4BAAA,CAA6B,MAAM,KAAK,CAAA;AACnD;AAEO,SAAS,4BAAA,CAA6B,KAAA,EAAkC,mBAAA,GAA+B,KAAA,EAAY;AACtH,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IAEH,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,IAC5B,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IAClC,cAAA,EAAgB,MAAM,cAAc;AAAA,GACxC;AACJ;;;AC2DO,IAAM,WAAA,GAAN,cAAkC,OAAA,CAAwC;AAAA;AAAA;AAAA;AAAA,EAK7E,MAAM,iBAAA,CAAkB,iBAAA,EAA0C,aAAA,EAA2G;AACzK,IAAA,IAAI,iBAAA,CAAkB,eAAe,CAAA,IAAK,IAAA,EAAM;AAC5C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,eAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,iBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,mBAAA,CAAoB,iBAAA,CAAkB,eAAe,CAAC;AAAA,OAC7D,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAA0C,aAAA,EAAsF;AACjJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,aAAa,CAAA;AAC9E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAA,CAAkB,iBAAA,EAA0C,aAAA,EAA2G;AACzK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,sBAAA,CAAA,CAAyB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAA0C,aAAA,EAAsF;AACjJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,aAAa,CAAA;AAC9E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAAuC,aAAA,EAA2G;AACnK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,UAAU,CAAC,CAAA;AAExD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,sBAAA,CAAA,CAAyB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY,iBAAA,EAAuC,aAAA,EAAsF;AAC3I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,cAAA,CAAe,mBAAmB,aAAa,CAAA;AAC3E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CAAgB,iBAAA,EAAwC,aAAA,EAA2G;AACrK,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,IAAI,iBAAA,CAAkB,MAAM,CAAA,IAAK,IAAA,EAAM;AACnC,MAAA,eAAA,CAAgB,MAAM,CAAA,GAAI,iBAAA,CAAkB,MAAM,CAAA;AAAA,IACtD;AAEA,IAAA,IAAI,iBAAA,CAAkB,WAAW,CAAA,IAAK,IAAA,EAAM;AACxC,MAAA,eAAA,CAAgB,WAAW,CAAA,GAAI,iBAAA,CAAkB,WAAW,CAAA;AAAA,IAChE;AAEA,IAAA,IAAI,iBAAA,CAAkB,YAAY,CAAA,IAAK,IAAA,EAAM;AACzC,MAAA,eAAA,CAAgB,YAAY,CAAA,GAAI,iBAAA,CAAkB,YAAY,CAAA;AAAA,IAClE;AAEA,IAAA,IAAI,iBAAA,CAAkB,MAAM,CAAA,IAAK,IAAA,EAAM;AACnC,MAAA,eAAA,CAAgB,MAAM,CAAA,GAAI,iBAAA,CAAkB,MAAM,CAAA;AAAA,IACtD;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,UAAU,CAAC,CAAA;AAExD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,iBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,GAAyC,IAAI,aAAA,EAAsF;AAClJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,mBAAmB,aAAa,CAAA;AAC5E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;ACrLO,IAAM,WAAA,GAAN,cAAkC,OAAA,CAAwC;AAAA;AAAA;AAAA;AAAA,EAK7E,MAAM,iBAAA,CAAkB,iBAAA,EAA0C,aAAA,EAA2G;AACzK,IAAA,IAAI,iBAAA,CAAkB,eAAe,CAAA,IAAK,IAAA,EAAM;AAC5C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,eAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,iBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,mBAAA,CAAoB,iBAAA,CAAkB,eAAe,CAAC;AAAA,OAC7D,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAA0C,aAAA,EAAsF;AACjJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,aAAa,CAAA;AAC9E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAA,CAAkB,iBAAA,EAA0C,aAAA,EAA2G;AACzK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,SAAS,CAAA,IAAK,IAAA,EAAM;AACtC,MAAA,eAAA,CAAgB,SAAS,CAAA,GAAI,iBAAA,CAAkB,SAAS,CAAA;AAAA,IAC5D;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,sBAAA,CAAA,CAAyB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAA,CAAe,iBAAA,EAA0C,aAAA,EAAsF;AACjJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,aAAa,CAAA;AAC9E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAAuC,aAAA,EAA2G;AACnK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,UAAU,CAAC,CAAA;AAExD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,sBAAA,CAAA,CAAyB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY,iBAAA,EAAuC,aAAA,EAAsF;AAC3I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,cAAA,CAAe,mBAAmB,aAAa,CAAA;AAC3E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CAAgB,iBAAA,EAAwC,aAAA,EAA2G;AACrK,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,UAAU,CAAC,CAAA;AAExD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,iBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,GAAyC,IAAI,aAAA,EAAsF;AAClJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,mBAAmB,aAAa,CAAA;AAC5E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAA,CAAkB,iBAAA,EAA0C,aAAA,EAA2G;AACzK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,IAAI,iBAAA,CAAkB,eAAe,CAAA,IAAK,IAAA,EAAM;AAC5C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,eAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,sBAAA,CAAA,CAAyB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,mBAAA,CAAoB,iBAAA,CAAkB,eAAe,CAAC;AAAA,OAC7D,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAA0C,aAAA,EAAsF;AACjJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,aAAa,CAAA;AAC9E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;AC1PO,IAAM,MAAA,GAAN,cAA6B,OAAA,CAAmC;AAAA;AAAA;AAAA;AAAA,EAKnE,MAAM,YAAA,CAAa,iBAAA,EAAqC,aAAA,EAA2G;AAC/J,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,UAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,WAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,cAAA,CAAe,iBAAA,CAAkB,UAAU,CAAC;AAAA,OACnD,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,CAAU,iBAAA,EAAqC,aAAA,EAAsF;AACvI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,mBAAmB,aAAa,CAAA;AACzE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,EAAqC,aAAA,EAA2G;AAC/J,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,gBAAA,CAAA,CAAmB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACjG,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,CAAU,iBAAA,EAAqC,aAAA,EAAsF;AACvI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,mBAAmB,aAAa,CAAA;AACzE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,CAAU,iBAAA,EAAkC,aAAA,EAA2G;AACzJ,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,UAAU,CAAC,CAAA;AAExD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,gBAAA,CAAA,CAAmB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACjG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CAAO,iBAAA,EAAkC,aAAA,EAAsF;AACjI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,SAAA,CAAU,mBAAmB,aAAa,CAAA;AACtE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,CAAW,iBAAA,EAAmC,aAAA,EAA2G;AAC3J,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,UAAU,CAAC,CAAA;AAExD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,WAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAA,CAAQ,iBAAA,GAAoC,IAAI,aAAA,EAAsF;AACxI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,UAAA,CAAW,mBAAmB,aAAa,CAAA;AACvE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,EAAqC,aAAA,EAA2G;AAC/J,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,UAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,gBAAA,CAAA,CAAmB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACjG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,cAAA,CAAe,iBAAA,CAAkB,UAAU,CAAC;AAAA,OACnD,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,CAAU,iBAAA,EAAqC,aAAA,EAAsF;AACvI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,mBAAmB,aAAa,CAAA;AACzE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;AC/OO,IAAM,SAAA,GAAN,cAAgC,OAAA,CAAsC;AAAA;AAAA;AAAA;AAAA,EAKzE,MAAM,eAAA,CAAgB,iBAAA,EAAwC,aAAA,EAA2G;AACrK,IAAA,IAAI,iBAAA,CAAkB,aAAa,CAAA,IAAK,IAAA,EAAM;AAC1C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,aAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,cAAc,CAAC,CAAA;AAE5D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,cAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,iBAAA,CAAkB,iBAAA,CAAkB,aAAa,CAAC;AAAA,OACzD,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,EAAwC,aAAA,EAAsF;AAC7I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,mBAAmB,aAAa,CAAA;AAC5E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CAAgB,iBAAA,EAAwC,aAAA,EAA2G;AACrK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,cAAc,CAAC,CAAA;AAE5D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,mBAAA,CAAA,CAAsB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACpG,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,EAAwC,aAAA,EAAsF;AAC7I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,mBAAmB,aAAa,CAAA;AAC5E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,EAAqC,aAAA,EAA2G;AAC/J,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA;AAE3D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,mBAAA,CAAA,CAAsB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACpG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,CAAU,iBAAA,EAAqC,aAAA,EAAsF;AACvI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,mBAAmB,aAAa,CAAA;AACzE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAA,CAAc,iBAAA,EAAsC,aAAA,EAA2G;AACjK,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,IAAI,iBAAA,CAAkB,MAAM,CAAA,IAAK,IAAA,EAAM;AACnC,MAAA,eAAA,CAAgB,MAAM,CAAA,GAAI,iBAAA,CAAkB,MAAM,CAAA;AAAA,IACtD;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA;AAE3D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,cAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,CAAW,iBAAA,GAAuC,IAAI,aAAA,EAAsF;AAC9I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,aAAA,CAAc,mBAAmB,aAAa,CAAA;AAC1E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CAAgB,iBAAA,EAAwC,aAAA,EAA2G;AACrK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,IAAI,iBAAA,CAAkB,aAAa,CAAA,IAAK,IAAA,EAAM;AAC1C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,aAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,cAAc,CAAC,CAAA;AAE5D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,mBAAA,CAAA,CAAsB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACpG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,iBAAA,CAAkB,iBAAA,CAAkB,aAAa,CAAC;AAAA,OACzD,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,EAAwC,aAAA,EAAsF;AAC7I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,mBAAmB,aAAa,CAAA;AAC5E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;AC7QO,IAAM,iBAAA,GAAN,cAAwC,OAAA,CAA8C;AAAA;AAAA;AAAA;AAAA,EAKzF,MAAM,uBAAA,CAAwB,iBAAA,EAAgD,aAAA,EAA2G;AACrL,IAAA,IAAI,iBAAA,CAAkB,qBAAqB,CAAA,IAAK,IAAA,EAAM;AAClD,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,qBAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,cAAc,CAAC,CAAA;AAE5D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,uBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,yBAAA,CAA0B,iBAAA,CAAkB,qBAAqB,CAAC;AAAA,OACzE,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAA,CAAqB,iBAAA,EAAgD,aAAA,EAAsF;AAC7J,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,uBAAA,CAAwB,mBAAmB,aAAa,CAAA;AACpF,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,uBAAA,CAAwB,iBAAA,EAAgD,aAAA,EAA2G;AACrL,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,cAAc,CAAC,CAAA;AAE5D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,4BAAA,CAAA,CAA+B,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7G,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAA,CAAqB,iBAAA,EAAgD,aAAA,EAAsF;AAC7J,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,uBAAA,CAAwB,mBAAmB,aAAa,CAAA;AACpF,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAA,CAAqB,iBAAA,EAA6C,aAAA,EAA2G;AAC/K,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA;AAE3D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,4BAAA,CAAA,CAA+B,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7G,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAA,CAAkB,iBAAA,EAA6C,aAAA,EAAsF;AACvJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,oBAAA,CAAqB,mBAAmB,aAAa,CAAA;AACjF,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,qBAAA,CAAsB,iBAAA,EAA8C,aAAA,EAA2G;AACjL,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,IAAI,iBAAA,CAAkB,YAAY,CAAA,IAAK,IAAA,EAAM;AACzC,MAAA,eAAA,CAAgB,YAAY,CAAA,GAAI,iBAAA,CAAkB,YAAY,CAAA;AAAA,IAClE;AAEA,IAAA,IAAI,iBAAA,CAAkB,SAAS,CAAA,IAAK,IAAA,EAAM;AACtC,MAAA,eAAA,CAAgB,SAAS,CAAA,GAAI,iBAAA,CAAkB,SAAS,CAAA;AAAA,IAC5D;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA;AAE3D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,uBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAA,CAAmB,iBAAA,GAA+C,IAAI,aAAA,EAAsF;AAC9J,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,qBAAA,CAAsB,mBAAmB,aAAa,CAAA;AAClF,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;ACzKO,IAAM,YAAA,GAAN,cAAmC,OAAA,CAAyC;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/E,MAAM,kBAAA,CAAmB,iBAAA,EAA2C,aAAA,EAA2G;AAC3K,IAAA,IAAI,iBAAA,CAAkB,gBAAgB,CAAA,IAAK,IAAA,EAAM;AAC7C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,gBAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,iBAAiB,CAAC,CAAA;AAE/D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,iBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,oBAAA,CAAqB,iBAAA,CAAkB,gBAAgB,CAAC;AAAA,OAC/D,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAA,CAAgB,iBAAA,EAA2C,aAAA,EAAsF;AACnJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,kBAAA,CAAmB,mBAAmB,aAAa,CAAA;AAC/E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAA,CAAmB,iBAAA,EAA2C,aAAA,EAA2G;AAC3K,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,iBAAiB,CAAC,CAAA;AAE/D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,sBAAA,CAAA,CAAyB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CAAgB,iBAAA,EAA2C,aAAA,EAAsF;AACnJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,kBAAA,CAAmB,mBAAmB,aAAa,CAAA;AAC/E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAA,CAAgB,iBAAA,EAAwC,aAAA,EAA2G;AACrK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,gBAAgB,CAAC,CAAA;AAE9D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,sBAAA,CAAA,CAAyB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAA,CAAa,iBAAA,EAAwC,aAAA,EAAsF;AAC7I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,mBAAmB,aAAa,CAAA;AAC5E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAA,CAAiB,iBAAA,EAAyC,aAAA,EAA2G;AACvK,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,gBAAgB,CAAC,CAAA;AAE9D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,iBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAA,CAAc,iBAAA,GAA0C,IAAI,aAAA,EAAsF;AACpJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,gBAAA,CAAiB,mBAAmB,aAAa,CAAA;AAC7E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAA,CAAmB,iBAAA,EAA2C,aAAA,EAA2G;AAC3K,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,IAAI,iBAAA,CAAkB,gBAAgB,CAAA,IAAK,IAAA,EAAM;AAC7C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,gBAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,iBAAiB,CAAC,CAAA;AAE/D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,sBAAA,CAAA,CAAyB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,oBAAA,CAAqB,iBAAA,CAAkB,gBAAgB,CAAC;AAAA,OAC/D,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAA,CAAgB,iBAAA,EAA2C,aAAA,EAAsF;AACnJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,kBAAA,CAAmB,mBAAmB,aAAa,CAAA;AAC/E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;AC1PO,IAAM,WAAA,GAAN,cAAkC,OAAA,CAAwC;AAAA;AAAA;AAAA;AAAA,EAK7E,MAAM,iBAAA,CAAkB,iBAAA,EAA0C,aAAA,EAA2G;AACzK,IAAA,IAAI,iBAAA,CAAkB,eAAe,CAAA,IAAK,IAAA,EAAM;AAC5C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,eAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,gBAAgB,CAAC,CAAA;AAE9D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,gBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,mBAAA,CAAoB,iBAAA,CAAkB,eAAe,CAAC;AAAA,OAC7D,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAA0C,aAAA,EAAsF;AACjJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,aAAa,CAAA;AAC9E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAA,CAAkB,iBAAA,EAA0C,aAAA,EAA2G;AACzK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,gBAAgB,CAAC,CAAA;AAE9D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,qBAAA,CAAA,CAAwB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACtG,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAA0C,aAAA,EAAsF;AACjJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,aAAa,CAAA;AAC9E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAAuC,aAAA,EAA2G;AACnK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,eAAe,CAAC,CAAA;AAE7D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,qBAAA,CAAA,CAAwB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACtG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY,iBAAA,EAAuC,aAAA,EAAsF;AAC3I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,cAAA,CAAe,mBAAmB,aAAa,CAAA;AAC3E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CAAgB,iBAAA,EAAwC,aAAA,EAA2G;AACrK,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,eAAe,CAAC,CAAA;AAE7D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,gBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,GAAyC,IAAI,aAAA,EAAsF;AAClJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,mBAAmB,aAAa,CAAA;AAC5E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAA,CAAkB,iBAAA,EAA0C,aAAA,EAA2G;AACzK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,IAAI,iBAAA,CAAkB,eAAe,CAAA,IAAK,IAAA,EAAM;AAC5C,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,eAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,gBAAgB,CAAC,CAAA;AAE9D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,qBAAA,CAAA,CAAwB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACtG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,mBAAA,CAAoB,iBAAA,CAAkB,eAAe,CAAC;AAAA,OAC7D,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAA0C,aAAA,EAAsF;AACjJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,aAAa,CAAA;AAC9E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;ACpVO,IAAM,QAAA,GAAN,cAA+B,OAAA,CAAqC;AAAA;AAAA;AAAA;AAAA,EAKvE,MAAM,cAAA,CAAe,iBAAA,EAAuC,aAAA,EAA2G;AACnK,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,UAAA,EAAY,EAAE,CAAA;AAE9C,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,oBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY,iBAAA,GAAwC,IAAI,aAAA,EAAsF;AAChJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,cAAA,CAAe,mBAAmB,aAAa,CAAA;AAC3E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;ACjBO,IAAM,OAAA,GAAN,cAA8B,OAAA,CAAoC;AAAA;AAAA;AAAA;AAAA,EAKrE,MAAM,SAAS,aAAA,EAA2G;AACtH,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,UAAA,EAAY,EAAE,CAAA;AAE9C,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,UAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAM,aAAA,EAAsF;AAC9F,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,aAAA,EAA2G;AAC3H,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,UAAA,EAAY,EAAE,CAAA;AAE9C,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,oBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,aAAA,EAAsF;AACnG,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,aAAA,CAAc,aAAa,CAAA;AACvD,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,aAAA,EAA2G;AAC3H,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,UAAA,EAAY,EAAE,CAAA;AAE9C,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,cAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,aAAA,EAAsF;AACnG,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,aAAA,CAAc,aAAa,CAAA;AACvD,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;AC/HO,IAAM,UAAA,GAAN,cAAiC,OAAA,CAAuC;AAAA;AAAA;AAAA;AAAA,EAK3E,MAAM,eAAA,CAAgB,iBAAA,EAAwC,aAAA,EAA2G;AACrK,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,cAAc,CAAC,CAAA;AAE5D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,qBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,GAAyC,IAAI,aAAA,EAAsF;AAClJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,mBAAmB,aAAa,CAAA;AAC5E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;AC4DO,IAAM,QAAA,GAAN,cAA+B,OAAA,CAAqC;AAAA;AAAA;AAAA;AAAA,EAKvE,MAAM,cAAA,CAAe,iBAAA,EAAuC,aAAA,EAA2G;AACnK,IAAA,IAAI,iBAAA,CAAkB,YAAY,CAAA,IAAK,IAAA,EAAM;AACzC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,YAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA;AAE3D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,aAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,gBAAA,CAAiB,iBAAA,CAAkB,YAAY,CAAC;AAAA,OACvD,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY,iBAAA,EAAuC,aAAA,EAAsF;AAC3I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,cAAA,CAAe,mBAAmB,aAAa,CAAA;AAC3E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAA,CAAe,iBAAA,EAAuC,aAAA,EAA2G;AACnK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA;AAE3D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,kBAAA,CAAA,CAAqB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACnG,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAA,CAAY,iBAAA,EAAuC,aAAA,EAAsF;AAC3I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,cAAA,CAAe,mBAAmB,aAAa,CAAA;AAC3E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY,iBAAA,EAAoC,aAAA,EAA2G;AAC7J,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,YAAY,CAAC,CAAA;AAE1D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,kBAAA,CAAA,CAAqB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACnG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CAAS,iBAAA,EAAoC,aAAA,EAAsF;AACrI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,WAAA,CAAY,mBAAmB,aAAa,CAAA;AACxE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,iBAAA,EAAqC,aAAA,EAA2G;AAC/J,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,YAAY,CAAC,CAAA;AAE1D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,aAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,CAAU,iBAAA,GAAsC,IAAI,aAAA,EAAsF;AAC5I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,mBAAmB,aAAa,CAAA;AACzE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,CAAe,iBAAA,EAAuC,aAAA,EAA2G;AACnK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,IAAI,iBAAA,CAAkB,YAAY,CAAA,IAAK,IAAA,EAAM;AACzC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,YAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA;AAE3D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,kBAAA,CAAA,CAAqB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACnG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,gBAAA,CAAiB,iBAAA,CAAkB,YAAY,CAAC;AAAA,OACvD,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY,iBAAA,EAAuC,aAAA,EAAsF;AAC3I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,cAAA,CAAe,mBAAmB,aAAa,CAAA;AAC3E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;AC5NO,IAAM,OAAA,GAAN,cAA8B,OAAA,CAAoC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrE,MAAM,aAAA,CAAc,iBAAA,EAAsC,aAAA,EAA2G;AACjK,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,YAAY,CAAC,CAAA;AAE1D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,wBAAA,CAAA,CAA2B,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACzG,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAA,CAAW,iBAAA,EAAsC,aAAA,EAAsF;AACzI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,aAAA,CAAc,mBAAmB,aAAa,CAAA;AAC1E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAA,CAAW,iBAAA,EAAmC,aAAA,EAA2G;AAC3J,IAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,IAAK,IAAA,EAAM;AACjC,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,IAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,iBAAA,CAAA,CAAoB,OAAA,CAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA,EAAK,kBAAA,CAAmB,MAAA,CAAO,iBAAA,CAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MAClG,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAA,CAAQ,iBAAA,EAAmC,aAAA,EAAsF;AACnI,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,UAAA,CAAW,mBAAmB,aAAa,CAAA;AACvE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY,iBAAA,EAAoC,aAAA,EAA2G;AAC7J,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,IAAK,IAAA,EAAM;AACpC,MAAA,eAAA,CAAgB,OAAO,CAAA,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,IAAK,IAAA,EAAM;AACrC,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,YAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CAAS,iBAAA,GAAqC,IAAI,aAAA,EAAsF;AAC1I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,WAAA,CAAY,mBAAmB,aAAa,CAAA;AACxE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAA,CAAY,iBAAA,EAAoC,aAAA,EAA2G;AAC7J,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,IAAI,iBAAA,CAAkB,WAAW,CAAA,IAAK,IAAA,EAAM;AACxC,MAAA,eAAA,CAAgB,WAAW,CAAA,GAAI,iBAAA,CAAkB,WAAW,CAAA;AAAA,IAChE;AAEA,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,iBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACR,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAA,CAAS,iBAAA,GAAqC,IAAI,aAAA,EAAsF;AAC1I,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,WAAA,CAAY,mBAAmB,aAAa,CAAA;AACxE,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAA,CAAe,iBAAA,EAAgD,aAAA,EAA2G;AAC5K,IAAA,IAAI,iBAAA,CAAkB,oBAAoB,CAAA,IAAK,IAAA,EAAM;AACjD,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,oBAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,YAAY,CAAC,CAAA;AAE1D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,YAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,wBAAA,CAAyB,iBAAA,CAAkB,oBAAoB,CAAC;AAAA,OACvE,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAA,CAAY,iBAAA,EAAgD,aAAA,EAAsF;AACpJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,cAAA,CAAe,mBAAmB,aAAa,CAAA;AAC3E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAA,CAAc,iBAAA,EAA+C,aAAA,EAA2G;AAC1K,IAAA,IAAI,iBAAA,CAAkB,mBAAmB,CAAA,IAAK,IAAA,EAAM;AAChD,MAAA,MAAM,IAAY,aAAA;AAAA,QACd,mBAAA;AAAA,QACA;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,MAAM,kBAAuB,EAAC;AAE9B,IAAA,MAAM,mBAAwC,EAAC;AAE/C,IAAA,gBAAA,CAAiB,cAAc,CAAA,GAAI,kBAAA;AAEnC,IAAA,IAAI,iBAAA,CAAkB,UAAU,CAAA,IAAK,IAAA,EAAM;AACvC,MAAA,gBAAA,CAAiB,YAAY,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,UAAU,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,aAAA,CAAc,WAAA,EAAa;AACtD,MAAA,MAAM,KAAA,GAAQ,KAAK,aAAA,CAAc,WAAA;AACjC,MAAA,MAAM,cAAc,MAAM,KAAA,CAAM,UAAA,EAAY,CAAC,YAAY,CAAC,CAAA;AAE1D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,gBAAA,CAAiB,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,MAC7D;AAAA,IACJ;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ;AAAA,MAChC,IAAA,EAAM,CAAA,mBAAA,CAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,eAAA;AAAA,MACP,IAAA,EAAM,uBAAA,CAAwB,iBAAA,CAAkB,mBAAmB,CAAC;AAAA,OACrE,aAAa,CAAA;AAEhB,IAAA,OAAO,IAAY,eAAA,CAAgB,QAAA,EAAU,CAAC,SAAA,KAAc,uBAAA,CAAwB,SAAS,CAAC,CAAA;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAA,CAAW,iBAAA,EAA+C,aAAA,EAAsF;AAClJ,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,aAAA,CAAc,mBAAmB,aAAa,CAAA;AAC1E,IAAA,OAAO,MAAM,SAAS,KAAA,EAAM;AAAA,EAChC;AAEJ,CAAA;;;ACnbO,IAAM,mBAAA,GAAsB;AAC5B,IAAM,gBAAA,GAAmB;AAiBzB,IAAM,YAAA,GAAN,cAA2B,KAAA,CAAM;AAAA,EAIpC,WAAA,CAAY,MAAA,EAAgB,IAAA,EAA0B,OAAA,EAAiB,OAAA,EAAmB;AACtF,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,cAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACnB;AACJ;AAC2C,IAAM,SAAA,GAAN,cAAwB,YAAA,CAAa;AAAA,EAArC,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAAuC,IAAA,IAAA,CAAS,IAAA,GAAO,WAAA;AAAA,EAAA;AAAa;AACvC,IAAM,cAAA,GAAN,cAA6B,YAAA,CAAa;AAAA,EAA1C,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAA4C,IAAA,IAAA,CAAS,IAAA,GAAO,gBAAA;AAAA,EAAA;AAAkB;AACtF,IAAM,aAAA,GAAN,cAA4B,YAAA,CAAa;AAAA,EAAzC,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAA2C,IAAA,IAAA,CAAS,IAAA,GAAO,eAAA;AAAA,EAAA;AAAiB;AAC/C,IAAM,aAAA,GAAN,cAA4B,YAAA,CAAa;AAAA,EAAzC,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAA2C,IAAA,IAAA,CAAS,IAAA,GAAO,eAAA;AAAA,EAAA;AAAiB;AAC3F,IAAM,cAAA,GAAN,cAA6B,YAAA,CAAa;AAAA,EAA1C,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAA4C,IAAA,IAAA,CAAS,IAAA,GAAO,gBAAA;AAAA,EAAA;AAAkB;AAE5J,SAAS,YAAA,CAAa,MAAA,EAAgB,IAAA,EAA0B,OAAA,EAAiB,OAAA,EAAiC;AAC9G,EAAA,MAAM,GAAA,GAAM,OAAA,IAAW,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAA;AACrC,EAAA,QAAQ,MAAA;AAAQ,IACZ,KAAK,GAAA;AAAK,MAAA,OAAO,IAAI,SAAA,CAAU,MAAA,EAAQ,IAAA,EAAM,KAAK,OAAO,CAAA;AAAA,IACzD,KAAK,GAAA;AAAK,MAAA,OAAO,IAAI,cAAA,CAAe,MAAA,EAAQ,IAAA,EAAM,KAAK,OAAO,CAAA;AAAA,IAC9D,KAAK,GAAA;AAAK,MAAA,OAAO,IAAI,aAAA,CAAc,MAAA,EAAQ,IAAA,EAAM,KAAK,OAAO,CAAA;AAAA,IAC7D,KAAK,GAAA;AAAK,MAAA,OAAO,IAAI,aAAA,CAAc,MAAA,EAAQ,IAAA,EAAM,KAAK,OAAO,CAAA;AAAA,IAC7D,KAAK,GAAA;AAAK,MAAA,OAAO,IAAI,cAAA,CAAe,MAAA,EAAQ,IAAA,EAAM,KAAK,OAAO,CAAA;AAAA,IAC9D;AAAS,MAAA,OAAO,IAAI,YAAA,CAAa,MAAA,EAAQ,IAAA,EAAM,KAAK,OAAO,CAAA;AAAA;AAEnE;AAGA,SAAS,aAAA,CAAc,WAAyB,UAAA,EAAkC;AAC9E,EAAA,OAAO,OAAO,OAAY,IAAA,KAAkC;AACxD,IAAA,MAAM,MAAA,GAAA,CAAU,IAAA,EAAM,MAAA,IAAU,KAAA,EAAO,WAAA,EAAY;AACnD,IAAA,MAAM,UAAA,GAAa,MAAA,KAAW,KAAA,IAAS,MAAA,KAAW,SAAS,MAAA,KAAW,QAAA;AACtE,IAAA,IAAI,OAAA,GAAU,CAAA;AAEd,IAAA,OAAO,IAAA,EAAM;AACT,MAAA,MAAM,GAAA,GAAM,MAAM,SAAA,CAAU,KAAA,EAAO,IAAI,CAAA;AACvC,MAAA,MAAM,YAAY,GAAA,CAAI,MAAA,KAAW,GAAA,IAAQ,GAAA,CAAI,UAAU,GAAA,IAAO,UAAA;AAC9D,MAAA,IAAI,CAAC,SAAA,IAAa,OAAA,IAAW,UAAA,EAAY,OAAO,GAAA;AAChD,MAAA,MAAM,UAAA,GAAa,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,aAAa,CAAA;AAChD,MAAA,MAAM,MAAA,GAAS,UAAA,GACT,MAAA,CAAO,UAAU,CAAA,GAAI,GAAA,GACrB,IAAA,CAAK,GAAA,CAAI,CAAA,IAAK,OAAA,GAAU,GAAA,EAAK,GAAI,CAAA;AACvC,MAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,GAAI,MAAA,GAAS,GAAI,CAAC,CAAA;AAC/E,MAAA,OAAA,IAAW,CAAA;AAAA,IACf;AAAA,EACJ,CAAA;AACJ;AAIA,IAAM,eAAA,GAA8B;AAAA,EAChC,IAAA,EAAM,OAAO,EAAE,QAAA,EAAS,KAAM;AAC1B,IAAA,IAAI,QAAA,CAAS,UAAU,GAAA,EAAK;AACxB,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,UAAU,QAAA,CAAS,UAAA;AACvB,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI;AACA,QAAA,MAAM,IAAA,GAAY,MAAM,QAAA,CAAS,KAAA,GAAQ,IAAA,EAAK;AAC9C,QAAA,IAAA,GAAO,MAAM,KAAA,EAAO,IAAA;AACpB,QAAA,OAAA,GAAU,IAAA,EAAM,OAAO,OAAA,IAAW,OAAA;AAClC,QAAA,OAAA,GAAU,MAAM,KAAA,EAAO,OAAA;AAAA,MAC3B,CAAA,CAAA,MAAQ;AAAA,MAA4B;AACpC,MAAA,MAAM,YAAA,CAAa,QAAA,CAAS,MAAA,EAAQ,IAAA,EAAM,SAAS,OAAO,CAAA;AAAA,IAC9D;AACA,IAAA,OAAO,QAAA;AAAA,EACX;AACJ,CAAA;AAOA,IAAM,IAAA,GAAO,CAAC,GAAA,KAAa,GAAA,EAAK,IAAA;AAIhC,SAAS,YAAA,CAAmB,GAAA,EAAU,MAAA,EAAgB,SAAA,EAAmB,SAAA,EAAmB;AACxF,EAAA,OAAO;AAAA;AAAA,IAEH,MAAM,CAAC,MAAA,GAAqB,EAAC,KAAsB,IAAI,CAAA,EAAG,MAAM,CAAA,IAAA,CAAM,CAAA,CAAE,EAAE,GAAG,MAAA,EAAQ,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA;AAAA,IAEhG,OAAO,OAAA,CAAQ,MAAA,GAAqB,EAAC,EAAwB;AACzD,MAAA,IAAI,SAAS,MAAA,CAAO,MAAA;AACpB,MAAA,GAAG;AACC,QAAA,MAAM,GAAA,GAAM,MAAM,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,IAAA,CAAM,CAAA,CAAE,EAAE,GAAG,MAAA,EAAQ,MAAA,EAAQ,CAAA;AAC5D,QAAA,KAAA,MAAW,IAAA,IAAQ,GAAA,CAAI,IAAA,IAAQ,IAAI,MAAM,IAAA;AACzC,QAAA,MAAA,GAAS,GAAA,CAAI,MAAM,UAAA,IAAc,MAAA;AAAA,MACrC,CAAA,QAAS,MAAA;AAAA,IACb,CAAA;AAAA;AAAA,IAEA,GAAA,EAAK,CAAC,EAAA,KAA6B,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,GAAA,CAAK,CAAA,CAAE,EAAE,EAAA,EAAI,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA;AAAA,IAExE,QAAQ,CAAC,IAAA,KAA0B,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAA,CAAE,EAAE,CAAC,SAAS,GAAG,IAAA,EAAM,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA;AAAA,IAE1F,QAAQ,CAAC,EAAA,EAAY,SAA0B,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAA,CAAE,EAAE,EAAA,EAAI,CAAC,SAAS,GAAG,MAAM,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA;AAAA,IAE1G,MAAA,EAAQ,CAAC,EAAA,KAA6B,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAA,CAAE,EAAE,EAAA,EAAI,CAAA,CAAE,KAAK,IAAI;AAAA,GAClF;AACJ;AAGO,IAAM,UAAN,MAAc;AAAA,EAKjB,YAAY,OAAA,EAAyB;AACjC,IAAA,IAAI,CAAC,OAAA,EAAS,KAAA,EAAO,MAAM,IAAI,MAAM,qEAAgE,CAAA;AACrG,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,IAAS,UAAA,CAAW,KAAA;AAC9C,IAAA,IAAI,CAAC,SAAA,EAAW,MAAM,IAAI,MAAM,sEAAiE,CAAA;AAEjG,IAAA,MAAM,MAAA,GAAS,IAAI,aAAA,CAAc;AAAA,MAC7B,QAAA,EAAU,QAAQ,OAAA,IAAW,mBAAA;AAAA,MAC7B,aAAa,OAAA,CAAQ,KAAA;AAAA;AAAA,MACrB,OAAA,EAAS,QAAQ,KAAA,GAAQ,EAAE,cAAc,OAAA,CAAQ,KAAA,KAAU,EAAC;AAAA,MAC5D,QAAA,EAAU,aAAA,CAAc,SAAA,EAAW,OAAA,CAAQ,cAAc,CAAC,CAAA;AAAA,MAC1D,UAAA,EAAY,CAAC,eAAe;AAAA,KAC/B,CAAA;AAED,IAAA,IAAA,CAAK,SAAA,GAAY,aAA6C,IAAI,YAAA,CAAa,MAAM,CAAA,EAAG,WAAA,EAAa,kBAAkB,gBAAgB,CAAA;AACvI,IAAA,IAAA,CAAK,QAAA,GAAW,aAA2C,IAAI,WAAA,CAAY,MAAM,CAAA,EAAG,UAAA,EAAY,iBAAiB,eAAe,CAAA;AAChI,IAAA,IAAA,CAAK,GAAA,GAAM,aAAiC,IAAI,MAAA,CAAO,MAAM,CAAA,EAAG,KAAA,EAAO,YAAY,UAAU,CAAA;AAC7F,IAAA,IAAA,CAAK,QAAA,GAAW,aAA2C,IAAI,WAAA,CAAY,MAAM,CAAA,EAAG,UAAA,EAAY,iBAAiB,eAAe,CAAA;AAChI,IAAA,IAAA,CAAK,KAAA,GAAQ,aAAqC,IAAI,QAAA,CAAS,MAAM,CAAA,EAAG,OAAA,EAAS,cAAc,YAAY,CAAA;AAC3G,IAAA,IAAA,CAAK,MAAA,GAAS,aAAuC,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG,QAAA,EAAU,eAAe,aAAa,CAAA;AAGlH,IAAA,MAAM,iBAAA,GAAoB,IAAI,iBAAA,CAAkB,MAAM,CAAA;AACtD,IAAA,IAAA,CAAK,cAAA,GAAiB;AAAA,MAClB,IAAA,EAAM,CAAC,CAAA,GAA4D,EAAC,KAAM,kBAAkB,kBAAA,CAAmB,CAAQ,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MAClI,GAAA,EAAK,CAAC,EAAA,KAAe,iBAAA,CAAkB,iBAAA,CAAkB,EAAE,EAAA,EAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MAC1E,MAAA,EAAQ,CAAC,IAAA,KAA8B,iBAAA,CAAkB,oBAAA,CAAqB,EAAE,mBAAA,EAAqB,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MACtH,MAAA,EAAQ,CAAC,EAAA,KAAe,iBAAA,CAAkB,oBAAA,CAAqB,EAAE,EAAA,EAAI,CAAA,CAAE,IAAA,CAAK,IAAI;AAAA,KACpF;AACA,IAAA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAY,MAAM,CAAA;AAC1C,IAAA,IAAA,CAAK,QAAA,GAAW;AAAA,MACZ,IAAA,EAAM,CAAC,CAAA,GAA4F,EAAC,KAAM,YAAY,YAAA,CAAa,CAAQ,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MACtJ,GAAA,EAAK,CAAC,EAAA,KAAe,WAAA,CAAY,WAAA,CAAY,EAAE,EAAA,EAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MAC9D,MAAA,EAAQ,CAAC,IAAA,KAAwB,WAAA,CAAY,cAAA,CAAe,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MAC9F,MAAA,EAAQ,CAAC,EAAA,KAAe,WAAA,CAAY,cAAA,CAAe,EAAE,EAAA,EAAI,CAAA,CAAE,IAAA,CAAK,IAAI;AAAA,KACxE;AAEA,IAAA,MAAM,QAAA,GAAW,IAAI,QAAA,CAAS,MAAM,CAAA;AACpC,IAAA,IAAA,CAAK,KAAA,GAAQ,EAAE,MAAA,EAAQ,MAAM,SAAS,WAAA,EAAY,CAAE,IAAA,CAAK,IAAI,CAAA,EAAE;AAE/D,IAAA,MAAM,UAAA,GAAa,IAAI,UAAA,CAAW,MAAM,CAAA;AACxC,IAAA,IAAA,CAAK,OAAA,GAAU;AAAA;AAAA,MAEX,KAAA,EAAO,CAAC,MAAA,GAA8B,EAAC,KAAM,WAAW,YAAA,CAAa,MAAa,CAAA,CAAE,IAAA,CAAK,IAAI;AAAA,KACjG;AAEA,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,MAAM,CAAA;AAClC,IAAA,IAAA,CAAK,IAAA,GAAO;AAAA;AAAA,MAER,OAAA,EAAS,CAAC,IAAA,GAA2B,EAAC,KAAM,OAAA,CAAQ,WAAA,CAAY,EAAE,kBAAA,EAAoB,IAAA,EAAM,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,MACvG,IAAA,EAAM,CAAC,CAAA,GAAgB,EAAC,KAAM,QAAQ,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA;AAAA,MAE3D,IAAA,EAAM,CAAC,CAAA,GAA4B,EAAC,KAAM,QAAQ,QAAA,CAAS,CAAQ,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MAC9E,GAAA,EAAK,CAAC,EAAA,KAAe,OAAA,CAAQ,OAAA,CAAQ,EAAE,EAAA,EAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MACtD,MAAA,EAAQ,CAAC,EAAA,KAAe,OAAA,CAAQ,UAAA,CAAW,EAAE,EAAA,EAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA;AAAA,MAE5D,MAAA,EAAQ,CAAC,IAAA,KAA4B,OAAA,CAAQ,UAAA,CAAW,EAAE,iBAAA,EAAmB,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,IAAI;AAAA,KAClG;AAEA,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,MAAM,CAAA;AAClC,IAAA,IAAA,CAAK,IAAA,GAAO;AAAA;AAAA,MAER,IAAI,MAAM,OAAA,CAAQ,KAAA,EAAM,CAAE,KAAK,IAAI,CAAA;AAAA;AAAA,MAEnC,QAAQ,MAAM,OAAA,CAAQ,UAAA,EAAW,CAAE,KAAK,IAAI;AAAA,KAChD;AAAA,EACJ;AACJ;AAEA,IAAO,aAAA,GAAQ","file":"index.js","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"https://api.ads.defoai.com\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * Bind an asset to an ad (scope=AD, adId required) or ad group (scope=AD_GROUP, adGroupId required). campaignId is derived from the ad/ad group when omitted.\n * @export\n * @interface AdAssetCreate\n */\nexport interface AdAssetCreate {\n /**\n * \n * @type {string}\n * @memberof AdAssetCreate\n */\n scope: AdAssetCreateScopeEnum;\n /**\n * Required when scope=AD.\n * @type {string}\n * @memberof AdAssetCreate\n */\n adId?: string;\n /**\n * Required when scope=AD_GROUP.\n * @type {string}\n * @memberof AdAssetCreate\n */\n adGroupId?: string;\n /**\n * Optional; derived from the ad/ad group when omitted.\n * @type {string}\n * @memberof AdAssetCreate\n */\n campaignId?: string;\n /**\n * \n * @type {string}\n * @memberof AdAssetCreate\n */\n assetId: string;\n /**\n * \n * @type {string}\n * @memberof AdAssetCreate\n */\n role: AdAssetCreateRoleEnum;\n}\n\n\n/**\n * @export\n */\nexport const AdAssetCreateScopeEnum = {\n AD: 'AD',\n AD_GROUP: 'AD_GROUP'\n} as const;\nexport type AdAssetCreateScopeEnum = typeof AdAssetCreateScopeEnum[keyof typeof AdAssetCreateScopeEnum];\n\n/**\n * @export\n */\nexport const AdAssetCreateRoleEnum = {\n MARKETING_IMAGE: 'MARKETING_IMAGE',\n SQUARE_MARKETING_IMAGE: 'SQUARE_MARKETING_IMAGE',\n PORTRAIT_MARKETING_IMAGE: 'PORTRAIT_MARKETING_IMAGE',\n LOGO: 'LOGO',\n LANDSCAPE_LOGO: 'LANDSCAPE_LOGO',\n YOUTUBE_VIDEO: 'YOUTUBE_VIDEO',\n VIDEO: 'VIDEO'\n} as const;\nexport type AdAssetCreateRoleEnum = typeof AdAssetCreateRoleEnum[keyof typeof AdAssetCreateRoleEnum];\n\n\n/**\n * Check if a given object implements the AdAssetCreate interface.\n */\nexport function instanceOfAdAssetCreate(value: object): value is AdAssetCreate {\n if (!('scope' in value) || value['scope'] === undefined) return false;\n if (!('assetId' in value) || value['assetId'] === undefined) return false;\n if (!('role' in value) || value['role'] === undefined) return false;\n return true;\n}\n\nexport function AdAssetCreateFromJSON(json: any): AdAssetCreate {\n return AdAssetCreateFromJSONTyped(json, false);\n}\n\nexport function AdAssetCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdAssetCreate {\n if (json == null) {\n return json;\n }\n return {\n \n 'scope': json['scope'],\n 'adId': json['adId'] == null ? undefined : json['adId'],\n 'adGroupId': json['adGroupId'] == null ? undefined : json['adGroupId'],\n 'campaignId': json['campaignId'] == null ? undefined : json['campaignId'],\n 'assetId': json['assetId'],\n 'role': json['role'],\n };\n}\n\nexport function AdAssetCreateToJSON(json: any): AdAssetCreate {\n return AdAssetCreateToJSONTyped(json, false);\n}\n\nexport function AdAssetCreateToJSONTyped(value?: AdAssetCreate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'scope': value['scope'],\n 'adId': value['adId'],\n 'adGroupId': value['adGroupId'],\n 'campaignId': value['campaignId'],\n 'assetId': value['assetId'],\n 'role': value['role'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Sitelink\n */\nexport interface Sitelink {\n /**\n * \n * @type {string}\n * @memberof Sitelink\n */\n text?: string;\n /**\n * \n * @type {string}\n * @memberof Sitelink\n */\n url?: string;\n /**\n * \n * @type {string}\n * @memberof Sitelink\n */\n description1?: string;\n /**\n * \n * @type {string}\n * @memberof Sitelink\n */\n description2?: string;\n /**\n * \n * @type {string}\n * @memberof Sitelink\n */\n trackingUrlTemplate?: string;\n /**\n * \n * @type {{ [key: string]: string; }}\n * @memberof Sitelink\n */\n urlCustomParameters?: { [key: string]: string; };\n}\n\n/**\n * Check if a given object implements the Sitelink interface.\n */\nexport function instanceOfSitelink(value: object): value is Sitelink {\n return true;\n}\n\nexport function SitelinkFromJSON(json: any): Sitelink {\n return SitelinkFromJSONTyped(json, false);\n}\n\nexport function SitelinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): Sitelink {\n if (json == null) {\n return json;\n }\n return {\n \n 'text': json['text'] == null ? undefined : json['text'],\n 'url': json['url'] == null ? undefined : json['url'],\n 'description1': json['description1'] == null ? undefined : json['description1'],\n 'description2': json['description2'] == null ? undefined : json['description2'],\n 'trackingUrlTemplate': json['trackingUrlTemplate'] == null ? undefined : json['trackingUrlTemplate'],\n 'urlCustomParameters': json['urlCustomParameters'] == null ? undefined : json['urlCustomParameters'],\n };\n}\n\nexport function SitelinkToJSON(json: any): Sitelink {\n return SitelinkToJSONTyped(json, false);\n}\n\nexport function SitelinkToJSONTyped(value?: Sitelink | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'text': value['text'],\n 'url': value['url'],\n 'description1': value['description1'],\n 'description2': value['description2'],\n 'trackingUrlTemplate': value['trackingUrlTemplate'],\n 'urlCustomParameters': value['urlCustomParameters'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface StructuredSnippet\n */\nexport interface StructuredSnippet {\n /**\n * \n * @type {string}\n * @memberof StructuredSnippet\n */\n header: string;\n /**\n * \n * @type {Array<string>}\n * @memberof StructuredSnippet\n */\n values: Array<string>;\n}\n\n/**\n * Check if a given object implements the StructuredSnippet interface.\n */\nexport function instanceOfStructuredSnippet(value: object): value is StructuredSnippet {\n if (!('header' in value) || value['header'] === undefined) return false;\n if (!('values' in value) || value['values'] === undefined) return false;\n return true;\n}\n\nexport function StructuredSnippetFromJSON(json: any): StructuredSnippet {\n return StructuredSnippetFromJSONTyped(json, false);\n}\n\nexport function StructuredSnippetFromJSONTyped(json: any, ignoreDiscriminator: boolean): StructuredSnippet {\n if (json == null) {\n return json;\n }\n return {\n \n 'header': json['header'],\n 'values': json['values'],\n };\n}\n\nexport function StructuredSnippetToJSON(json: any): StructuredSnippet {\n return StructuredSnippetToJSONTyped(json, false);\n}\n\nexport function StructuredSnippetToJSONTyped(value?: StructuredSnippet | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'header': value['header'],\n 'values': value['values'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Sitelink } from './Sitelink';\nimport {\n SitelinkFromJSON,\n SitelinkFromJSONTyped,\n SitelinkToJSON,\n SitelinkToJSONTyped,\n} from './Sitelink';\nimport type { StructuredSnippet } from './StructuredSnippet';\nimport {\n StructuredSnippetFromJSON,\n StructuredSnippetFromJSONTyped,\n StructuredSnippetToJSON,\n StructuredSnippetToJSONTyped,\n} from './StructuredSnippet';\n\n/**\n * \n * @export\n * @interface AdCreate\n */\nexport interface AdCreate {\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n adGroupId: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n campaignId: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n headlinePart1: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n headlinePart2: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n headlinePart3?: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n description: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n description2?: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n finalUrl: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n path1?: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n path2?: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n status?: AdCreateStatusEnum;\n /**\n * \n * @type {Array<Sitelink>}\n * @memberof AdCreate\n */\n sitelinks?: Array<Sitelink>;\n /**\n * \n * @type {Array<string>}\n * @memberof AdCreate\n */\n callouts?: Array<string>;\n /**\n * \n * @type {Array<StructuredSnippet>}\n * @memberof AdCreate\n */\n structuredSnippets?: Array<StructuredSnippet>;\n /**\n * \n * @type {Array<string>}\n * @memberof AdCreate\n */\n customLabels?: Array<string>;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n trackingUrlTemplate?: string;\n /**\n * \n * @type {string}\n * @memberof AdCreate\n */\n finalUrlSuffix?: string;\n /**\n * \n * @type {{ [key: string]: string; }}\n * @memberof AdCreate\n */\n urlCustomParameters?: { [key: string]: string; };\n}\n\n\n/**\n * @export\n */\nexport const AdCreateStatusEnum = {\n ENABLED: 'ENABLED',\n PAUSED: 'PAUSED',\n REMOVED: 'REMOVED'\n} as const;\nexport type AdCreateStatusEnum = typeof AdCreateStatusEnum[keyof typeof AdCreateStatusEnum];\n\n\n/**\n * Check if a given object implements the AdCreate interface.\n */\nexport function instanceOfAdCreate(value: object): value is AdCreate {\n if (!('adGroupId' in value) || value['adGroupId'] === undefined) return false;\n if (!('campaignId' in value) || value['campaignId'] === undefined) return false;\n if (!('headlinePart1' in value) || value['headlinePart1'] === undefined) return false;\n if (!('headlinePart2' in value) || value['headlinePart2'] === undefined) return false;\n if (!('description' in value) || value['description'] === undefined) return false;\n if (!('finalUrl' in value) || value['finalUrl'] === undefined) return false;\n return true;\n}\n\nexport function AdCreateFromJSON(json: any): AdCreate {\n return AdCreateFromJSONTyped(json, false);\n}\n\nexport function AdCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdCreate {\n if (json == null) {\n return json;\n }\n return {\n \n 'adGroupId': json['adGroupId'],\n 'campaignId': json['campaignId'],\n 'headlinePart1': json['headlinePart1'],\n 'headlinePart2': json['headlinePart2'],\n 'headlinePart3': json['headlinePart3'] == null ? undefined : json['headlinePart3'],\n 'description': json['description'],\n 'description2': json['description2'] == null ? undefined : json['description2'],\n 'finalUrl': json['finalUrl'],\n 'path1': json['path1'] == null ? undefined : json['path1'],\n 'path2': json['path2'] == null ? undefined : json['path2'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'sitelinks': json['sitelinks'] == null ? undefined : ((json['sitelinks'] as Array<any>).map(SitelinkFromJSON)),\n 'callouts': json['callouts'] == null ? undefined : json['callouts'],\n 'structuredSnippets': json['structuredSnippets'] == null ? undefined : ((json['structuredSnippets'] as Array<any>).map(StructuredSnippetFromJSON)),\n 'customLabels': json['customLabels'] == null ? undefined : json['customLabels'],\n 'trackingUrlTemplate': json['trackingUrlTemplate'] == null ? undefined : json['trackingUrlTemplate'],\n 'finalUrlSuffix': json['finalUrlSuffix'] == null ? undefined : json['finalUrlSuffix'],\n 'urlCustomParameters': json['urlCustomParameters'] == null ? undefined : json['urlCustomParameters'],\n };\n}\n\nexport function AdCreateToJSON(json: any): AdCreate {\n return AdCreateToJSONTyped(json, false);\n}\n\nexport function AdCreateToJSONTyped(value?: AdCreate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'adGroupId': value['adGroupId'],\n 'campaignId': value['campaignId'],\n 'headlinePart1': value['headlinePart1'],\n 'headlinePart2': value['headlinePart2'],\n 'headlinePart3': value['headlinePart3'],\n 'description': value['description'],\n 'description2': value['description2'],\n 'finalUrl': value['finalUrl'],\n 'path1': value['path1'],\n 'path2': value['path2'],\n 'status': value['status'],\n 'sitelinks': value['sitelinks'] == null ? undefined : ((value['sitelinks'] as Array<any>).map(SitelinkToJSON)),\n 'callouts': value['callouts'],\n 'structuredSnippets': value['structuredSnippets'] == null ? undefined : ((value['structuredSnippets'] as Array<any>).map(StructuredSnippetToJSON)),\n 'customLabels': value['customLabels'],\n 'trackingUrlTemplate': value['trackingUrlTemplate'],\n 'finalUrlSuffix': value['finalUrlSuffix'],\n 'urlCustomParameters': value['urlCustomParameters'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AdGroupAudience\n */\nexport interface AdGroupAudience {\n /**\n * \n * @type {string}\n * @memberof AdGroupAudience\n */\n type: string;\n /**\n * \n * @type {string}\n * @memberof AdGroupAudience\n */\n id: string;\n /**\n * \n * @type {number}\n * @memberof AdGroupAudience\n */\n bidAdjustment?: number;\n}\n\n/**\n * Check if a given object implements the AdGroupAudience interface.\n */\nexport function instanceOfAdGroupAudience(value: object): value is AdGroupAudience {\n if (!('type' in value) || value['type'] === undefined) return false;\n if (!('id' in value) || value['id'] === undefined) return false;\n return true;\n}\n\nexport function AdGroupAudienceFromJSON(json: any): AdGroupAudience {\n return AdGroupAudienceFromJSONTyped(json, false);\n}\n\nexport function AdGroupAudienceFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdGroupAudience {\n if (json == null) {\n return json;\n }\n return {\n \n 'type': json['type'],\n 'id': json['id'],\n 'bidAdjustment': json['bidAdjustment'] == null ? undefined : json['bidAdjustment'],\n };\n}\n\nexport function AdGroupAudienceToJSON(json: any): AdGroupAudience {\n return AdGroupAudienceToJSONTyped(json, false);\n}\n\nexport function AdGroupAudienceToJSONTyped(value?: AdGroupAudience | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'type': value['type'],\n 'id': value['id'],\n 'bidAdjustment': value['bidAdjustment'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { AdGroupAudience } from './AdGroupAudience';\nimport {\n AdGroupAudienceFromJSON,\n AdGroupAudienceFromJSONTyped,\n AdGroupAudienceToJSON,\n AdGroupAudienceToJSONTyped,\n} from './AdGroupAudience';\n\n/**\n * \n * @export\n * @interface AdGroupCreate\n */\nexport interface AdGroupCreate {\n /**\n * \n * @type {string}\n * @memberof AdGroupCreate\n */\n campaignId: string;\n /**\n * \n * @type {string}\n * @memberof AdGroupCreate\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof AdGroupCreate\n */\n status?: AdGroupCreateStatusEnum;\n /**\n * \n * @type {string}\n * @memberof AdGroupCreate\n */\n type?: string;\n /**\n * \n * @type {number}\n * @memberof AdGroupCreate\n */\n cpc?: number;\n /**\n * \n * @type {number}\n * @memberof AdGroupCreate\n */\n cpcBid?: number;\n /**\n * \n * @type {Array<AdGroupAudience>}\n * @memberof AdGroupCreate\n */\n audiences?: Array<AdGroupAudience>;\n /**\n * \n * @type {Array<string>}\n * @memberof AdGroupCreate\n */\n customLabels?: Array<string>;\n /**\n * \n * @type {string}\n * @memberof AdGroupCreate\n */\n trackingUrlTemplate?: string;\n /**\n * \n * @type {string}\n * @memberof AdGroupCreate\n */\n finalUrlSuffix?: string;\n /**\n * \n * @type {{ [key: string]: string; }}\n * @memberof AdGroupCreate\n */\n urlCustomParameters?: { [key: string]: string; };\n}\n\n\n/**\n * @export\n */\nexport const AdGroupCreateStatusEnum = {\n ENABLED: 'ENABLED',\n PAUSED: 'PAUSED',\n REMOVED: 'REMOVED'\n} as const;\nexport type AdGroupCreateStatusEnum = typeof AdGroupCreateStatusEnum[keyof typeof AdGroupCreateStatusEnum];\n\n\n/**\n * Check if a given object implements the AdGroupCreate interface.\n */\nexport function instanceOfAdGroupCreate(value: object): value is AdGroupCreate {\n if (!('campaignId' in value) || value['campaignId'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n return true;\n}\n\nexport function AdGroupCreateFromJSON(json: any): AdGroupCreate {\n return AdGroupCreateFromJSONTyped(json, false);\n}\n\nexport function AdGroupCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdGroupCreate {\n if (json == null) {\n return json;\n }\n return {\n \n 'campaignId': json['campaignId'],\n 'name': json['name'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'type': json['type'] == null ? undefined : json['type'],\n 'cpc': json['cpc'] == null ? undefined : json['cpc'],\n 'cpcBid': json['cpcBid'] == null ? undefined : json['cpcBid'],\n 'audiences': json['audiences'] == null ? undefined : ((json['audiences'] as Array<any>).map(AdGroupAudienceFromJSON)),\n 'customLabels': json['customLabels'] == null ? undefined : json['customLabels'],\n 'trackingUrlTemplate': json['trackingUrlTemplate'] == null ? undefined : json['trackingUrlTemplate'],\n 'finalUrlSuffix': json['finalUrlSuffix'] == null ? undefined : json['finalUrlSuffix'],\n 'urlCustomParameters': json['urlCustomParameters'] == null ? undefined : json['urlCustomParameters'],\n };\n}\n\nexport function AdGroupCreateToJSON(json: any): AdGroupCreate {\n return AdGroupCreateToJSONTyped(json, false);\n}\n\nexport function AdGroupCreateToJSONTyped(value?: AdGroupCreate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'campaignId': value['campaignId'],\n 'name': value['name'],\n 'status': value['status'],\n 'type': value['type'],\n 'cpc': value['cpc'],\n 'cpcBid': value['cpcBid'],\n 'audiences': value['audiences'] == null ? undefined : ((value['audiences'] as Array<any>).map(AdGroupAudienceToJSON)),\n 'customLabels': value['customLabels'],\n 'trackingUrlTemplate': value['trackingUrlTemplate'],\n 'finalUrlSuffix': value['finalUrlSuffix'],\n 'urlCustomParameters': value['urlCustomParameters'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { AdGroupAudience } from './AdGroupAudience';\nimport {\n AdGroupAudienceFromJSON,\n AdGroupAudienceFromJSONTyped,\n AdGroupAudienceToJSON,\n AdGroupAudienceToJSONTyped,\n} from './AdGroupAudience';\n\n/**\n * Partial AdGroup. Omitted fields are unchanged.\n * @export\n * @interface AdGroupUpdate\n */\nexport interface AdGroupUpdate {\n /**\n * \n * @type {string}\n * @memberof AdGroupUpdate\n */\n campaignId?: string;\n /**\n * \n * @type {string}\n * @memberof AdGroupUpdate\n */\n name?: string;\n /**\n * \n * @type {string}\n * @memberof AdGroupUpdate\n */\n status?: AdGroupUpdateStatusEnum;\n /**\n * \n * @type {string}\n * @memberof AdGroupUpdate\n */\n type?: string;\n /**\n * \n * @type {number}\n * @memberof AdGroupUpdate\n */\n cpc?: number;\n /**\n * \n * @type {number}\n * @memberof AdGroupUpdate\n */\n cpcBid?: number;\n /**\n * \n * @type {Array<AdGroupAudience>}\n * @memberof AdGroupUpdate\n */\n audiences?: Array<AdGroupAudience>;\n /**\n * \n * @type {Array<string>}\n * @memberof AdGroupUpdate\n */\n customLabels?: Array<string>;\n /**\n * \n * @type {string}\n * @memberof AdGroupUpdate\n */\n trackingUrlTemplate?: string;\n /**\n * \n * @type {string}\n * @memberof AdGroupUpdate\n */\n finalUrlSuffix?: string;\n /**\n * \n * @type {{ [key: string]: string; }}\n * @memberof AdGroupUpdate\n */\n urlCustomParameters?: { [key: string]: string; };\n}\n\n\n/**\n * @export\n */\nexport const AdGroupUpdateStatusEnum = {\n ENABLED: 'ENABLED',\n PAUSED: 'PAUSED',\n REMOVED: 'REMOVED'\n} as const;\nexport type AdGroupUpdateStatusEnum = typeof AdGroupUpdateStatusEnum[keyof typeof AdGroupUpdateStatusEnum];\n\n\n/**\n * Check if a given object implements the AdGroupUpdate interface.\n */\nexport function instanceOfAdGroupUpdate(value: object): value is AdGroupUpdate {\n return true;\n}\n\nexport function AdGroupUpdateFromJSON(json: any): AdGroupUpdate {\n return AdGroupUpdateFromJSONTyped(json, false);\n}\n\nexport function AdGroupUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdGroupUpdate {\n if (json == null) {\n return json;\n }\n return {\n \n 'campaignId': json['campaignId'] == null ? undefined : json['campaignId'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'type': json['type'] == null ? undefined : json['type'],\n 'cpc': json['cpc'] == null ? undefined : json['cpc'],\n 'cpcBid': json['cpcBid'] == null ? undefined : json['cpcBid'],\n 'audiences': json['audiences'] == null ? undefined : ((json['audiences'] as Array<any>).map(AdGroupAudienceFromJSON)),\n 'customLabels': json['customLabels'] == null ? undefined : json['customLabels'],\n 'trackingUrlTemplate': json['trackingUrlTemplate'] == null ? undefined : json['trackingUrlTemplate'],\n 'finalUrlSuffix': json['finalUrlSuffix'] == null ? undefined : json['finalUrlSuffix'],\n 'urlCustomParameters': json['urlCustomParameters'] == null ? undefined : json['urlCustomParameters'],\n };\n}\n\nexport function AdGroupUpdateToJSON(json: any): AdGroupUpdate {\n return AdGroupUpdateToJSONTyped(json, false);\n}\n\nexport function AdGroupUpdateToJSONTyped(value?: AdGroupUpdate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'campaignId': value['campaignId'],\n 'name': value['name'],\n 'status': value['status'],\n 'type': value['type'],\n 'cpc': value['cpc'],\n 'cpcBid': value['cpcBid'],\n 'audiences': value['audiences'] == null ? undefined : ((value['audiences'] as Array<any>).map(AdGroupAudienceToJSON)),\n 'customLabels': value['customLabels'],\n 'trackingUrlTemplate': value['trackingUrlTemplate'],\n 'finalUrlSuffix': value['finalUrlSuffix'],\n 'urlCustomParameters': value['urlCustomParameters'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Sitelink } from './Sitelink';\nimport {\n SitelinkFromJSON,\n SitelinkFromJSONTyped,\n SitelinkToJSON,\n SitelinkToJSONTyped,\n} from './Sitelink';\nimport type { StructuredSnippet } from './StructuredSnippet';\nimport {\n StructuredSnippetFromJSON,\n StructuredSnippetFromJSONTyped,\n StructuredSnippetToJSON,\n StructuredSnippetToJSONTyped,\n} from './StructuredSnippet';\n\n/**\n * Partial Ad. Omitted fields are unchanged.\n * @export\n * @interface AdUpdate\n */\nexport interface AdUpdate {\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n adGroupId?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n campaignId?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n headlinePart1?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n headlinePart2?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n headlinePart3?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n description?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n description2?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n finalUrl?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n path1?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n path2?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n status?: AdUpdateStatusEnum;\n /**\n * \n * @type {Array<Sitelink>}\n * @memberof AdUpdate\n */\n sitelinks?: Array<Sitelink>;\n /**\n * \n * @type {Array<string>}\n * @memberof AdUpdate\n */\n callouts?: Array<string>;\n /**\n * \n * @type {Array<StructuredSnippet>}\n * @memberof AdUpdate\n */\n structuredSnippets?: Array<StructuredSnippet>;\n /**\n * \n * @type {Array<string>}\n * @memberof AdUpdate\n */\n customLabels?: Array<string>;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n trackingUrlTemplate?: string;\n /**\n * \n * @type {string}\n * @memberof AdUpdate\n */\n finalUrlSuffix?: string;\n /**\n * \n * @type {{ [key: string]: string; }}\n * @memberof AdUpdate\n */\n urlCustomParameters?: { [key: string]: string; };\n}\n\n\n/**\n * @export\n */\nexport const AdUpdateStatusEnum = {\n ENABLED: 'ENABLED',\n PAUSED: 'PAUSED',\n REMOVED: 'REMOVED'\n} as const;\nexport type AdUpdateStatusEnum = typeof AdUpdateStatusEnum[keyof typeof AdUpdateStatusEnum];\n\n\n/**\n * Check if a given object implements the AdUpdate interface.\n */\nexport function instanceOfAdUpdate(value: object): value is AdUpdate {\n return true;\n}\n\nexport function AdUpdateFromJSON(json: any): AdUpdate {\n return AdUpdateFromJSONTyped(json, false);\n}\n\nexport function AdUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdUpdate {\n if (json == null) {\n return json;\n }\n return {\n \n 'adGroupId': json['adGroupId'] == null ? undefined : json['adGroupId'],\n 'campaignId': json['campaignId'] == null ? undefined : json['campaignId'],\n 'headlinePart1': json['headlinePart1'] == null ? undefined : json['headlinePart1'],\n 'headlinePart2': json['headlinePart2'] == null ? undefined : json['headlinePart2'],\n 'headlinePart3': json['headlinePart3'] == null ? undefined : json['headlinePart3'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'description2': json['description2'] == null ? undefined : json['description2'],\n 'finalUrl': json['finalUrl'] == null ? undefined : json['finalUrl'],\n 'path1': json['path1'] == null ? undefined : json['path1'],\n 'path2': json['path2'] == null ? undefined : json['path2'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'sitelinks': json['sitelinks'] == null ? undefined : ((json['sitelinks'] as Array<any>).map(SitelinkFromJSON)),\n 'callouts': json['callouts'] == null ? undefined : json['callouts'],\n 'structuredSnippets': json['structuredSnippets'] == null ? undefined : ((json['structuredSnippets'] as Array<any>).map(StructuredSnippetFromJSON)),\n 'customLabels': json['customLabels'] == null ? undefined : json['customLabels'],\n 'trackingUrlTemplate': json['trackingUrlTemplate'] == null ? undefined : json['trackingUrlTemplate'],\n 'finalUrlSuffix': json['finalUrlSuffix'] == null ? undefined : json['finalUrlSuffix'],\n 'urlCustomParameters': json['urlCustomParameters'] == null ? undefined : json['urlCustomParameters'],\n };\n}\n\nexport function AdUpdateToJSON(json: any): AdUpdate {\n return AdUpdateToJSONTyped(json, false);\n}\n\nexport function AdUpdateToJSONTyped(value?: AdUpdate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'adGroupId': value['adGroupId'],\n 'campaignId': value['campaignId'],\n 'headlinePart1': value['headlinePart1'],\n 'headlinePart2': value['headlinePart2'],\n 'headlinePart3': value['headlinePart3'],\n 'description': value['description'],\n 'description2': value['description2'],\n 'finalUrl': value['finalUrl'],\n 'path1': value['path1'],\n 'path2': value['path2'],\n 'status': value['status'],\n 'sitelinks': value['sitelinks'] == null ? undefined : ((value['sitelinks'] as Array<any>).map(SitelinkToJSON)),\n 'callouts': value['callouts'],\n 'structuredSnippets': value['structuredSnippets'] == null ? undefined : ((value['structuredSnippets'] as Array<any>).map(StructuredSnippetToJSON)),\n 'customLabels': value['customLabels'],\n 'trackingUrlTemplate': value['trackingUrlTemplate'],\n 'finalUrlSuffix': value['finalUrlSuffix'],\n 'urlCustomParameters': value['urlCustomParameters'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * URL-by-reference asset creation. The asset is stored as a pointer to the remote URL and is marked READY immediately. Platform syncs fetch the bytes lazily.\n * @export\n * @interface AssetCreate\n */\nexport interface AssetCreate {\n /**\n * Public http(s) URL.\n * @type {string}\n * @memberof AssetCreate\n */\n url: string;\n /**\n * Defaults to the URL filename.\n * @type {string}\n * @memberof AssetCreate\n */\n name?: string;\n /**\n * \n * @type {string}\n * @memberof AssetCreate\n */\n type?: AssetCreateTypeEnum;\n /**\n * Generic media bucket. Defaults from `type` when omitted (IMAGE for IMAGE/LOGO, VIDEO for VIDEO).\n * @type {string}\n * @memberof AssetCreate\n */\n mediaType?: AssetCreateMediaTypeEnum;\n /**\n * YouTube video id for VIDEO assets (no hosting/transcoding; referenced by id).\n * @type {string}\n * @memberof AssetCreate\n */\n youtubeVideoId?: string;\n /**\n * MIME type. Inferred from the URL when absent.\n * @type {string}\n * @memberof AssetCreate\n */\n contentType?: string;\n /**\n * \n * @type {number}\n * @memberof AssetCreate\n */\n sizeBytes?: number;\n /**\n * \n * @type {number}\n * @memberof AssetCreate\n */\n width?: number;\n /**\n * \n * @type {number}\n * @memberof AssetCreate\n */\n height?: number;\n /**\n * \n * @type {Array<string>}\n * @memberof AssetCreate\n */\n tags?: Array<string>;\n /**\n * \n * @type {string}\n * @memberof AssetCreate\n */\n altText?: string;\n /**\n * \n * @type {{ [key: string]: any; }}\n * @memberof AssetCreate\n */\n metadata?: { [key: string]: any; };\n}\n\n\n/**\n * @export\n */\nexport const AssetCreateTypeEnum = {\n IMAGE: 'IMAGE',\n LOGO: 'LOGO',\n VIDEO: 'VIDEO'\n} as const;\nexport type AssetCreateTypeEnum = typeof AssetCreateTypeEnum[keyof typeof AssetCreateTypeEnum];\n\n/**\n * @export\n */\nexport const AssetCreateMediaTypeEnum = {\n IMAGE: 'IMAGE',\n VIDEO: 'VIDEO'\n} as const;\nexport type AssetCreateMediaTypeEnum = typeof AssetCreateMediaTypeEnum[keyof typeof AssetCreateMediaTypeEnum];\n\n\n/**\n * Check if a given object implements the AssetCreate interface.\n */\nexport function instanceOfAssetCreate(value: object): value is AssetCreate {\n if (!('url' in value) || value['url'] === undefined) return false;\n return true;\n}\n\nexport function AssetCreateFromJSON(json: any): AssetCreate {\n return AssetCreateFromJSONTyped(json, false);\n}\n\nexport function AssetCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AssetCreate {\n if (json == null) {\n return json;\n }\n return {\n \n 'url': json['url'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'type': json['type'] == null ? undefined : json['type'],\n 'mediaType': json['mediaType'] == null ? undefined : json['mediaType'],\n 'youtubeVideoId': json['youtubeVideoId'] == null ? undefined : json['youtubeVideoId'],\n 'contentType': json['contentType'] == null ? undefined : json['contentType'],\n 'sizeBytes': json['sizeBytes'] == null ? undefined : json['sizeBytes'],\n 'width': json['width'] == null ? undefined : json['width'],\n 'height': json['height'] == null ? undefined : json['height'],\n 'tags': json['tags'] == null ? undefined : json['tags'],\n 'altText': json['altText'] == null ? undefined : json['altText'],\n 'metadata': json['metadata'] == null ? undefined : json['metadata'],\n };\n}\n\nexport function AssetCreateToJSON(json: any): AssetCreate {\n return AssetCreateToJSONTyped(json, false);\n}\n\nexport function AssetCreateToJSONTyped(value?: AssetCreate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'url': value['url'],\n 'name': value['name'],\n 'type': value['type'],\n 'mediaType': value['mediaType'],\n 'youtubeVideoId': value['youtubeVideoId'],\n 'contentType': value['contentType'],\n 'sizeBytes': value['sizeBytes'],\n 'width': value['width'],\n 'height': value['height'],\n 'tags': value['tags'],\n 'altText': value['altText'],\n 'metadata': value['metadata'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * Partial Asset. Only the curated fields below are accepted; identity fields (id, url, contentType, sizeBytes, source) are immutable post-creation.\n * @export\n * @interface AssetUpdate\n */\nexport interface AssetUpdate {\n /**\n * \n * @type {string}\n * @memberof AssetUpdate\n */\n name?: string;\n /**\n * \n * @type {string}\n * @memberof AssetUpdate\n */\n altText?: string;\n /**\n * \n * @type {Array<string>}\n * @memberof AssetUpdate\n */\n tags?: Array<string>;\n /**\n * \n * @type {{ [key: string]: any; }}\n * @memberof AssetUpdate\n */\n metadata?: { [key: string]: any; };\n /**\n * \n * @type {string}\n * @memberof AssetUpdate\n */\n status?: AssetUpdateStatusEnum;\n /**\n * \n * @type {number}\n * @memberof AssetUpdate\n */\n width?: number;\n /**\n * \n * @type {number}\n * @memberof AssetUpdate\n */\n height?: number;\n}\n\n\n/**\n * @export\n */\nexport const AssetUpdateStatusEnum = {\n PROCESSING: 'PROCESSING',\n READY: 'READY',\n FAILED: 'FAILED'\n} as const;\nexport type AssetUpdateStatusEnum = typeof AssetUpdateStatusEnum[keyof typeof AssetUpdateStatusEnum];\n\n\n/**\n * Check if a given object implements the AssetUpdate interface.\n */\nexport function instanceOfAssetUpdate(value: object): value is AssetUpdate {\n return true;\n}\n\nexport function AssetUpdateFromJSON(json: any): AssetUpdate {\n return AssetUpdateFromJSONTyped(json, false);\n}\n\nexport function AssetUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AssetUpdate {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'] == null ? undefined : json['name'],\n 'altText': json['altText'] == null ? undefined : json['altText'],\n 'tags': json['tags'] == null ? undefined : json['tags'],\n 'metadata': json['metadata'] == null ? undefined : json['metadata'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'width': json['width'] == null ? undefined : json['width'],\n 'height': json['height'] == null ? undefined : json['height'],\n };\n}\n\nexport function AssetUpdateToJSON(json: any): AssetUpdate {\n return AssetUpdateToJSONTyped(json, false);\n}\n\nexport function AssetUpdateToJSONTyped(value?: AssetUpdate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'altText': value['altText'],\n 'tags': value['tags'],\n 'metadata': value['metadata'],\n 'status': value['status'],\n 'width': value['width'],\n 'height': value['height'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BiddingStrategy\n */\nexport interface BiddingStrategy {\n /**\n * \n * @type {string}\n * @memberof BiddingStrategy\n */\n type?: BiddingStrategyTypeEnum;\n /**\n * \n * @type {number}\n * @memberof BiddingStrategy\n */\n targetCpa?: number;\n /**\n * \n * @type {number}\n * @memberof BiddingStrategy\n */\n targetRoas?: number;\n /**\n * \n * @type {number}\n * @memberof BiddingStrategy\n */\n targetImpressionShare?: number;\n /**\n * \n * @type {number}\n * @memberof BiddingStrategy\n */\n maxCpcBidCeiling?: number;\n}\n\n\n/**\n * @export\n */\nexport const BiddingStrategyTypeEnum = {\n MANUAL_CPC: 'MANUAL_CPC',\n ENHANCED_CPC: 'ENHANCED_CPC',\n MAXIMIZE_CLICKS: 'MAXIMIZE_CLICKS',\n MAXIMIZE_CONVERSIONS: 'MAXIMIZE_CONVERSIONS',\n MAXIMIZE_CONVERSION_VALUE: 'MAXIMIZE_CONVERSION_VALUE',\n TARGET_CPA: 'TARGET_CPA',\n TARGET_ROAS: 'TARGET_ROAS',\n TARGET_IMPRESSION_SHARE: 'TARGET_IMPRESSION_SHARE'\n} as const;\nexport type BiddingStrategyTypeEnum = typeof BiddingStrategyTypeEnum[keyof typeof BiddingStrategyTypeEnum];\n\n\n/**\n * Check if a given object implements the BiddingStrategy interface.\n */\nexport function instanceOfBiddingStrategy(value: object): value is BiddingStrategy {\n return true;\n}\n\nexport function BiddingStrategyFromJSON(json: any): BiddingStrategy {\n return BiddingStrategyFromJSONTyped(json, false);\n}\n\nexport function BiddingStrategyFromJSONTyped(json: any, ignoreDiscriminator: boolean): BiddingStrategy {\n if (json == null) {\n return json;\n }\n return {\n \n 'type': json['type'] == null ? undefined : json['type'],\n 'targetCpa': json['targetCpa'] == null ? undefined : json['targetCpa'],\n 'targetRoas': json['targetRoas'] == null ? undefined : json['targetRoas'],\n 'targetImpressionShare': json['targetImpressionShare'] == null ? undefined : json['targetImpressionShare'],\n 'maxCpcBidCeiling': json['maxCpcBidCeiling'] == null ? undefined : json['maxCpcBidCeiling'],\n };\n}\n\nexport function BiddingStrategyToJSON(json: any): BiddingStrategy {\n return BiddingStrategyToJSONTyped(json, false);\n}\n\nexport function BiddingStrategyToJSONTyped(value?: BiddingStrategy | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'type': value['type'],\n 'targetCpa': value['targetCpa'],\n 'targetRoas': value['targetRoas'],\n 'targetImpressionShare': value['targetImpressionShare'],\n 'maxCpcBidCeiling': value['maxCpcBidCeiling'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Patched by scripts/patch-generated.mjs (US-ADS-267).\n * OpenAPI Generator emits broken codecs for oneOf schemas that mix a primitive\n * with an object/array. The union type is correct; these identity codecs replace\n * the broken generated ones (the values are plain JSON — no (de)serialization).\n */\nimport type { StructuredSchedule } from './StructuredSchedule';\n\nexport type CampaignAdScheduleField = StructuredSchedule | string;\n\nexport function CampaignAdScheduleFieldFromJSON(json: any): CampaignAdScheduleField { return json; }\nexport function CampaignAdScheduleFieldFromJSONTyped(json: any, _ignoreDiscriminator: boolean): CampaignAdScheduleField { return json; }\nexport function CampaignAdScheduleFieldToJSON(value?: CampaignAdScheduleField | null): any { return value; }\nexport function CampaignAdScheduleFieldToJSONTyped(value?: CampaignAdScheduleField | null, _ignoreDiscriminator: boolean = false): any { return value; }\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CampaignAssetCreate\n */\nexport interface CampaignAssetCreate {\n /**\n * \n * @type {string}\n * @memberof CampaignAssetCreate\n */\n campaignId: string;\n /**\n * \n * @type {string}\n * @memberof CampaignAssetCreate\n */\n assetId: string;\n /**\n * \n * @type {string}\n * @memberof CampaignAssetCreate\n */\n role: CampaignAssetCreateRoleEnum;\n}\n\n\n/**\n * @export\n */\nexport const CampaignAssetCreateRoleEnum = {\n MARKETING_IMAGE: 'MARKETING_IMAGE',\n SQUARE_MARKETING_IMAGE: 'SQUARE_MARKETING_IMAGE',\n PORTRAIT_MARKETING_IMAGE: 'PORTRAIT_MARKETING_IMAGE',\n LOGO: 'LOGO',\n LANDSCAPE_LOGO: 'LANDSCAPE_LOGO',\n YOUTUBE_VIDEO: 'YOUTUBE_VIDEO',\n VIDEO: 'VIDEO'\n} as const;\nexport type CampaignAssetCreateRoleEnum = typeof CampaignAssetCreateRoleEnum[keyof typeof CampaignAssetCreateRoleEnum];\n\n\n/**\n * Check if a given object implements the CampaignAssetCreate interface.\n */\nexport function instanceOfCampaignAssetCreate(value: object): value is CampaignAssetCreate {\n if (!('campaignId' in value) || value['campaignId'] === undefined) return false;\n if (!('assetId' in value) || value['assetId'] === undefined) return false;\n if (!('role' in value) || value['role'] === undefined) return false;\n return true;\n}\n\nexport function CampaignAssetCreateFromJSON(json: any): CampaignAssetCreate {\n return CampaignAssetCreateFromJSONTyped(json, false);\n}\n\nexport function CampaignAssetCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): CampaignAssetCreate {\n if (json == null) {\n return json;\n }\n return {\n \n 'campaignId': json['campaignId'],\n 'assetId': json['assetId'],\n 'role': json['role'],\n };\n}\n\nexport function CampaignAssetCreateToJSON(json: any): CampaignAssetCreate {\n return CampaignAssetCreateToJSONTyped(json, false);\n}\n\nexport function CampaignAssetCreateToJSONTyped(value?: CampaignAssetCreate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'campaignId': value['campaignId'],\n 'assetId': value['assetId'],\n 'role': value['role'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * US-ADS-132 structured targeting (schedule, devices, radius, LinkedIn).\n * @export\n * @interface CampaignTargeting\n */\nexport interface CampaignTargeting {\n /**\n * \n * @type {Array<object>}\n * @memberof CampaignTargeting\n */\n schedule?: Array<object>;\n /**\n * \n * @type {object}\n * @memberof CampaignTargeting\n */\n devices?: object;\n /**\n * \n * @type {object}\n * @memberof CampaignTargeting\n */\n radius?: object;\n /**\n * \n * @type {object}\n * @memberof CampaignTargeting\n */\n linkedin?: object;\n}\n\n/**\n * Check if a given object implements the CampaignTargeting interface.\n */\nexport function instanceOfCampaignTargeting(value: object): value is CampaignTargeting {\n return true;\n}\n\nexport function CampaignTargetingFromJSON(json: any): CampaignTargeting {\n return CampaignTargetingFromJSONTyped(json, false);\n}\n\nexport function CampaignTargetingFromJSONTyped(json: any, ignoreDiscriminator: boolean): CampaignTargeting {\n if (json == null) {\n return json;\n }\n return {\n \n 'schedule': json['schedule'] == null ? undefined : json['schedule'],\n 'devices': json['devices'] == null ? undefined : json['devices'],\n 'radius': json['radius'] == null ? undefined : json['radius'],\n 'linkedin': json['linkedin'] == null ? undefined : json['linkedin'],\n };\n}\n\nexport function CampaignTargetingToJSON(json: any): CampaignTargeting {\n return CampaignTargetingToJSONTyped(json, false);\n}\n\nexport function CampaignTargetingToJSONTyped(value?: CampaignTargeting | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'schedule': value['schedule'],\n 'devices': value['devices'],\n 'radius': value['radius'],\n 'linkedin': value['linkedin'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface NegativeKeywordEntry\n */\nexport interface NegativeKeywordEntry {\n /**\n * \n * @type {string}\n * @memberof NegativeKeywordEntry\n */\n text: string;\n /**\n * \n * @type {string}\n * @memberof NegativeKeywordEntry\n */\n matchType: NegativeKeywordEntryMatchTypeEnum;\n}\n\n\n/**\n * @export\n */\nexport const NegativeKeywordEntryMatchTypeEnum = {\n EXACT: 'EXACT',\n PHRASE: 'PHRASE',\n BROAD: 'BROAD'\n} as const;\nexport type NegativeKeywordEntryMatchTypeEnum = typeof NegativeKeywordEntryMatchTypeEnum[keyof typeof NegativeKeywordEntryMatchTypeEnum];\n\n\n/**\n * Check if a given object implements the NegativeKeywordEntry interface.\n */\nexport function instanceOfNegativeKeywordEntry(value: object): value is NegativeKeywordEntry {\n if (!('text' in value) || value['text'] === undefined) return false;\n if (!('matchType' in value) || value['matchType'] === undefined) return false;\n return true;\n}\n\nexport function NegativeKeywordEntryFromJSON(json: any): NegativeKeywordEntry {\n return NegativeKeywordEntryFromJSONTyped(json, false);\n}\n\nexport function NegativeKeywordEntryFromJSONTyped(json: any, ignoreDiscriminator: boolean): NegativeKeywordEntry {\n if (json == null) {\n return json;\n }\n return {\n \n 'text': json['text'],\n 'matchType': json['matchType'],\n };\n}\n\nexport function NegativeKeywordEntryToJSON(json: any): NegativeKeywordEntry {\n return NegativeKeywordEntryToJSONTyped(json, false);\n}\n\nexport function NegativeKeywordEntryToJSONTyped(value?: NegativeKeywordEntry | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'text': value['text'],\n 'matchType': value['matchType'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Location\n */\nexport interface Location {\n /**\n * Google Ads geo target constant ID.\n * @type {string}\n * @memberof Location\n */\n criterionId?: string | null;\n /**\n * \n * @type {string}\n * @memberof Location\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof Location\n */\n type: LocationTypeEnum;\n /**\n * ISO country code; null for GLOBAL.\n * @type {string}\n * @memberof Location\n */\n countryCode?: string | null;\n}\n\n\n/**\n * @export\n */\nexport const LocationTypeEnum = {\n COUNTRY: 'COUNTRY',\n CITY: 'CITY',\n REGION: 'REGION',\n METRO: 'METRO',\n GLOBAL: 'GLOBAL'\n} as const;\nexport type LocationTypeEnum = typeof LocationTypeEnum[keyof typeof LocationTypeEnum];\n\n\n/**\n * Check if a given object implements the Location interface.\n */\nexport function instanceOfLocation(value: object): value is Location {\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n return true;\n}\n\nexport function LocationFromJSON(json: any): Location {\n return LocationFromJSONTyped(json, false);\n}\n\nexport function LocationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Location {\n if (json == null) {\n return json;\n }\n return {\n \n 'criterionId': json['criterionId'] == null ? undefined : json['criterionId'],\n 'name': json['name'],\n 'type': json['type'],\n 'countryCode': json['countryCode'] == null ? undefined : json['countryCode'],\n };\n}\n\nexport function LocationToJSON(json: any): Location {\n return LocationToJSONTyped(json, false);\n}\n\nexport function LocationToJSONTyped(value?: Location | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'criterionId': value['criterionId'],\n 'name': value['name'],\n 'type': value['type'],\n 'countryCode': value['countryCode'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { CampaignAdScheduleField } from './CampaignAdScheduleField';\nimport {\n CampaignAdScheduleFieldFromJSON,\n CampaignAdScheduleFieldFromJSONTyped,\n CampaignAdScheduleFieldToJSON,\n CampaignAdScheduleFieldToJSONTyped,\n} from './CampaignAdScheduleField';\nimport type { BiddingStrategy } from './BiddingStrategy';\nimport {\n BiddingStrategyFromJSON,\n BiddingStrategyFromJSONTyped,\n BiddingStrategyToJSON,\n BiddingStrategyToJSONTyped,\n} from './BiddingStrategy';\nimport type { CampaignTargeting } from './CampaignTargeting';\nimport {\n CampaignTargetingFromJSON,\n CampaignTargetingFromJSONTyped,\n CampaignTargetingToJSON,\n CampaignTargetingToJSONTyped,\n} from './CampaignTargeting';\nimport type { NegativeKeywordEntry } from './NegativeKeywordEntry';\nimport {\n NegativeKeywordEntryFromJSON,\n NegativeKeywordEntryFromJSONTyped,\n NegativeKeywordEntryToJSON,\n NegativeKeywordEntryToJSONTyped,\n} from './NegativeKeywordEntry';\nimport type { Location } from './Location';\nimport {\n LocationFromJSON,\n LocationFromJSONTyped,\n LocationToJSON,\n LocationToJSONTyped,\n} from './Location';\n\n/**\n * \n * @export\n * @interface CampaignCreate\n */\nexport interface CampaignCreate {\n /**\n * \n * @type {string}\n * @memberof CampaignCreate\n */\n name: string;\n /**\n * \n * @type {number}\n * @memberof CampaignCreate\n */\n budget: number;\n /**\n * ISO 4217 (USD, EUR, …).\n * @type {string}\n * @memberof CampaignCreate\n */\n currency?: string;\n /**\n * \n * @type {string}\n * @memberof CampaignCreate\n */\n status?: CampaignCreateStatusEnum;\n /**\n * \n * @type {string}\n * @memberof CampaignCreate\n */\n type?: CampaignCreateTypeEnum;\n /**\n * \n * @type {string}\n * @memberof CampaignCreate\n */\n networks?: string;\n /**\n * \n * @type {string}\n * @memberof CampaignCreate\n */\n languages?: string;\n /**\n * String ID link to a Site.\n * @type {string}\n * @memberof CampaignCreate\n */\n siteId?: string;\n /**\n * Free-form goal text consumed by AI.\n * @type {string}\n * @memberof CampaignCreate\n */\n goal?: string;\n /**\n * \n * @type {Array<Location>}\n * @memberof CampaignCreate\n */\n targetLocations?: Array<Location>;\n /**\n * \n * @type {Array<string>}\n * @memberof CampaignCreate\n */\n customLabels?: Array<string>;\n /**\n * \n * @type {CampaignAdScheduleField}\n * @memberof CampaignCreate\n */\n adSchedule?: CampaignAdScheduleField;\n /**\n * \n * @type {BiddingStrategy}\n * @memberof CampaignCreate\n */\n biddingStrategy?: BiddingStrategy;\n /**\n * \n * @type {CampaignTargeting}\n * @memberof CampaignCreate\n */\n targeting?: CampaignTargeting;\n /**\n * \n * @type {string}\n * @memberof CampaignCreate\n */\n trackingUrlTemplate?: string;\n /**\n * \n * @type {string}\n * @memberof CampaignCreate\n */\n finalUrlSuffix?: string;\n /**\n * \n * @type {{ [key: string]: string; }}\n * @memberof CampaignCreate\n */\n urlCustomParameters?: { [key: string]: string; };\n /**\n * \n * @type {Array<NegativeKeywordEntry>}\n * @memberof CampaignCreate\n */\n negativeKeywords?: Array<NegativeKeywordEntry>;\n}\n\n\n/**\n * @export\n */\nexport const CampaignCreateStatusEnum = {\n ENABLED: 'ENABLED',\n PAUSED: 'PAUSED',\n REMOVED: 'REMOVED'\n} as const;\nexport type CampaignCreateStatusEnum = typeof CampaignCreateStatusEnum[keyof typeof CampaignCreateStatusEnum];\n\n/**\n * @export\n */\nexport const CampaignCreateTypeEnum = {\n SEARCH: 'SEARCH',\n DISPLAY: 'DISPLAY',\n VIDEO: 'VIDEO',\n SHOPPING: 'SHOPPING',\n PERFORMANCE_MAX: 'PERFORMANCE_MAX'\n} as const;\nexport type CampaignCreateTypeEnum = typeof CampaignCreateTypeEnum[keyof typeof CampaignCreateTypeEnum];\n\n\n/**\n * Check if a given object implements the CampaignCreate interface.\n */\nexport function instanceOfCampaignCreate(value: object): value is CampaignCreate {\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('budget' in value) || value['budget'] === undefined) return false;\n return true;\n}\n\nexport function CampaignCreateFromJSON(json: any): CampaignCreate {\n return CampaignCreateFromJSONTyped(json, false);\n}\n\nexport function CampaignCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): CampaignCreate {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'],\n 'budget': json['budget'],\n 'currency': json['currency'] == null ? undefined : json['currency'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'type': json['type'] == null ? undefined : json['type'],\n 'networks': json['networks'] == null ? undefined : json['networks'],\n 'languages': json['languages'] == null ? undefined : json['languages'],\n 'siteId': json['siteId'] == null ? undefined : json['siteId'],\n 'goal': json['goal'] == null ? undefined : json['goal'],\n 'targetLocations': json['targetLocations'] == null ? undefined : ((json['targetLocations'] as Array<any>).map(LocationFromJSON)),\n 'customLabels': json['customLabels'] == null ? undefined : json['customLabels'],\n 'adSchedule': json['adSchedule'] == null ? undefined : CampaignAdScheduleFieldFromJSON(json['adSchedule']),\n 'biddingStrategy': json['biddingStrategy'] == null ? undefined : BiddingStrategyFromJSON(json['biddingStrategy']),\n 'targeting': json['targeting'] == null ? undefined : CampaignTargetingFromJSON(json['targeting']),\n 'trackingUrlTemplate': json['trackingUrlTemplate'] == null ? undefined : json['trackingUrlTemplate'],\n 'finalUrlSuffix': json['finalUrlSuffix'] == null ? undefined : json['finalUrlSuffix'],\n 'urlCustomParameters': json['urlCustomParameters'] == null ? undefined : json['urlCustomParameters'],\n 'negativeKeywords': json['negativeKeywords'] == null ? undefined : ((json['negativeKeywords'] as Array<any>).map(NegativeKeywordEntryFromJSON)),\n };\n}\n\nexport function CampaignCreateToJSON(json: any): CampaignCreate {\n return CampaignCreateToJSONTyped(json, false);\n}\n\nexport function CampaignCreateToJSONTyped(value?: CampaignCreate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'budget': value['budget'],\n 'currency': value['currency'],\n 'status': value['status'],\n 'type': value['type'],\n 'networks': value['networks'],\n 'languages': value['languages'],\n 'siteId': value['siteId'],\n 'goal': value['goal'],\n 'targetLocations': value['targetLocations'] == null ? undefined : ((value['targetLocations'] as Array<any>).map(LocationToJSON)),\n 'customLabels': value['customLabels'],\n 'adSchedule': CampaignAdScheduleFieldToJSON(value['adSchedule']),\n 'biddingStrategy': BiddingStrategyToJSON(value['biddingStrategy']),\n 'targeting': CampaignTargetingToJSON(value['targeting']),\n 'trackingUrlTemplate': value['trackingUrlTemplate'],\n 'finalUrlSuffix': value['finalUrlSuffix'],\n 'urlCustomParameters': value['urlCustomParameters'],\n 'negativeKeywords': value['negativeKeywords'] == null ? undefined : ((value['negativeKeywords'] as Array<any>).map(NegativeKeywordEntryToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { CampaignAdScheduleField } from './CampaignAdScheduleField';\nimport {\n CampaignAdScheduleFieldFromJSON,\n CampaignAdScheduleFieldFromJSONTyped,\n CampaignAdScheduleFieldToJSON,\n CampaignAdScheduleFieldToJSONTyped,\n} from './CampaignAdScheduleField';\nimport type { BiddingStrategy } from './BiddingStrategy';\nimport {\n BiddingStrategyFromJSON,\n BiddingStrategyFromJSONTyped,\n BiddingStrategyToJSON,\n BiddingStrategyToJSONTyped,\n} from './BiddingStrategy';\nimport type { CampaignTargeting } from './CampaignTargeting';\nimport {\n CampaignTargetingFromJSON,\n CampaignTargetingFromJSONTyped,\n CampaignTargetingToJSON,\n CampaignTargetingToJSONTyped,\n} from './CampaignTargeting';\nimport type { NegativeKeywordEntry } from './NegativeKeywordEntry';\nimport {\n NegativeKeywordEntryFromJSON,\n NegativeKeywordEntryFromJSONTyped,\n NegativeKeywordEntryToJSON,\n NegativeKeywordEntryToJSONTyped,\n} from './NegativeKeywordEntry';\nimport type { Location } from './Location';\nimport {\n LocationFromJSON,\n LocationFromJSONTyped,\n LocationToJSON,\n LocationToJSONTyped,\n} from './Location';\n\n/**\n * Partial Campaign — any subset of CampaignCreate fields. Omitted fields are unchanged.\n * @export\n * @interface CampaignUpdate\n */\nexport interface CampaignUpdate {\n /**\n * \n * @type {string}\n * @memberof CampaignUpdate\n */\n name?: string;\n /**\n * \n * @type {number}\n * @memberof CampaignUpdate\n */\n budget?: number;\n /**\n * ISO 4217 (USD, EUR, …).\n * @type {string}\n * @memberof CampaignUpdate\n */\n currency?: string;\n /**\n * \n * @type {string}\n * @memberof CampaignUpdate\n */\n status?: CampaignUpdateStatusEnum;\n /**\n * \n * @type {string}\n * @memberof CampaignUpdate\n */\n type?: CampaignUpdateTypeEnum;\n /**\n * \n * @type {string}\n * @memberof CampaignUpdate\n */\n networks?: string;\n /**\n * \n * @type {string}\n * @memberof CampaignUpdate\n */\n languages?: string;\n /**\n * String ID link to a Site.\n * @type {string}\n * @memberof CampaignUpdate\n */\n siteId?: string;\n /**\n * Free-form goal text consumed by AI.\n * @type {string}\n * @memberof CampaignUpdate\n */\n goal?: string;\n /**\n * \n * @type {Array<Location>}\n * @memberof CampaignUpdate\n */\n targetLocations?: Array<Location>;\n /**\n * \n * @type {Array<string>}\n * @memberof CampaignUpdate\n */\n customLabels?: Array<string>;\n /**\n * \n * @type {CampaignAdScheduleField}\n * @memberof CampaignUpdate\n */\n adSchedule?: CampaignAdScheduleField;\n /**\n * \n * @type {BiddingStrategy}\n * @memberof CampaignUpdate\n */\n biddingStrategy?: BiddingStrategy;\n /**\n * \n * @type {CampaignTargeting}\n * @memberof CampaignUpdate\n */\n targeting?: CampaignTargeting;\n /**\n * \n * @type {string}\n * @memberof CampaignUpdate\n */\n trackingUrlTemplate?: string;\n /**\n * \n * @type {string}\n * @memberof CampaignUpdate\n */\n finalUrlSuffix?: string;\n /**\n * \n * @type {{ [key: string]: string; }}\n * @memberof CampaignUpdate\n */\n urlCustomParameters?: { [key: string]: string; };\n /**\n * \n * @type {Array<NegativeKeywordEntry>}\n * @memberof CampaignUpdate\n */\n negativeKeywords?: Array<NegativeKeywordEntry>;\n}\n\n\n/**\n * @export\n */\nexport const CampaignUpdateStatusEnum = {\n ENABLED: 'ENABLED',\n PAUSED: 'PAUSED',\n REMOVED: 'REMOVED'\n} as const;\nexport type CampaignUpdateStatusEnum = typeof CampaignUpdateStatusEnum[keyof typeof CampaignUpdateStatusEnum];\n\n/**\n * @export\n */\nexport const CampaignUpdateTypeEnum = {\n SEARCH: 'SEARCH',\n DISPLAY: 'DISPLAY',\n VIDEO: 'VIDEO',\n SHOPPING: 'SHOPPING',\n PERFORMANCE_MAX: 'PERFORMANCE_MAX'\n} as const;\nexport type CampaignUpdateTypeEnum = typeof CampaignUpdateTypeEnum[keyof typeof CampaignUpdateTypeEnum];\n\n\n/**\n * Check if a given object implements the CampaignUpdate interface.\n */\nexport function instanceOfCampaignUpdate(value: object): value is CampaignUpdate {\n return true;\n}\n\nexport function CampaignUpdateFromJSON(json: any): CampaignUpdate {\n return CampaignUpdateFromJSONTyped(json, false);\n}\n\nexport function CampaignUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): CampaignUpdate {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'] == null ? undefined : json['name'],\n 'budget': json['budget'] == null ? undefined : json['budget'],\n 'currency': json['currency'] == null ? undefined : json['currency'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'type': json['type'] == null ? undefined : json['type'],\n 'networks': json['networks'] == null ? undefined : json['networks'],\n 'languages': json['languages'] == null ? undefined : json['languages'],\n 'siteId': json['siteId'] == null ? undefined : json['siteId'],\n 'goal': json['goal'] == null ? undefined : json['goal'],\n 'targetLocations': json['targetLocations'] == null ? undefined : ((json['targetLocations'] as Array<any>).map(LocationFromJSON)),\n 'customLabels': json['customLabels'] == null ? undefined : json['customLabels'],\n 'adSchedule': json['adSchedule'] == null ? undefined : CampaignAdScheduleFieldFromJSON(json['adSchedule']),\n 'biddingStrategy': json['biddingStrategy'] == null ? undefined : BiddingStrategyFromJSON(json['biddingStrategy']),\n 'targeting': json['targeting'] == null ? undefined : CampaignTargetingFromJSON(json['targeting']),\n 'trackingUrlTemplate': json['trackingUrlTemplate'] == null ? undefined : json['trackingUrlTemplate'],\n 'finalUrlSuffix': json['finalUrlSuffix'] == null ? undefined : json['finalUrlSuffix'],\n 'urlCustomParameters': json['urlCustomParameters'] == null ? undefined : json['urlCustomParameters'],\n 'negativeKeywords': json['negativeKeywords'] == null ? undefined : ((json['negativeKeywords'] as Array<any>).map(NegativeKeywordEntryFromJSON)),\n };\n}\n\nexport function CampaignUpdateToJSON(json: any): CampaignUpdate {\n return CampaignUpdateToJSONTyped(json, false);\n}\n\nexport function CampaignUpdateToJSONTyped(value?: CampaignUpdate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'budget': value['budget'],\n 'currency': value['currency'],\n 'status': value['status'],\n 'type': value['type'],\n 'networks': value['networks'],\n 'languages': value['languages'],\n 'siteId': value['siteId'],\n 'goal': value['goal'],\n 'targetLocations': value['targetLocations'] == null ? undefined : ((value['targetLocations'] as Array<any>).map(LocationToJSON)),\n 'customLabels': value['customLabels'],\n 'adSchedule': CampaignAdScheduleFieldToJSON(value['adSchedule']),\n 'biddingStrategy': BiddingStrategyToJSON(value['biddingStrategy']),\n 'targeting': CampaignTargetingToJSON(value['targeting']),\n 'trackingUrlTemplate': value['trackingUrlTemplate'],\n 'finalUrlSuffix': value['finalUrlSuffix'],\n 'urlCustomParameters': value['urlCustomParameters'],\n 'negativeKeywords': value['negativeKeywords'] == null ? undefined : ((value['negativeKeywords'] as Array<any>).map(NegativeKeywordEntryToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface KeywordCreate\n */\nexport interface KeywordCreate {\n /**\n * \n * @type {string}\n * @memberof KeywordCreate\n */\n adGroupId: string;\n /**\n * Optional denormalisation.\n * @type {string}\n * @memberof KeywordCreate\n */\n campaignId?: string;\n /**\n * \n * @type {string}\n * @memberof KeywordCreate\n */\n text: string;\n /**\n * \n * @type {string}\n * @memberof KeywordCreate\n */\n matchType?: KeywordCreateMatchTypeEnum;\n /**\n * \n * @type {string}\n * @memberof KeywordCreate\n */\n status?: KeywordCreateStatusEnum;\n /**\n * \n * @type {boolean}\n * @memberof KeywordCreate\n */\n isNegative?: boolean;\n /**\n * \n * @type {number}\n * @memberof KeywordCreate\n */\n cpcBid?: number | null;\n}\n\n\n/**\n * @export\n */\nexport const KeywordCreateMatchTypeEnum = {\n BROAD: 'BROAD',\n PHRASE: 'PHRASE',\n EXACT: 'EXACT'\n} as const;\nexport type KeywordCreateMatchTypeEnum = typeof KeywordCreateMatchTypeEnum[keyof typeof KeywordCreateMatchTypeEnum];\n\n/**\n * @export\n */\nexport const KeywordCreateStatusEnum = {\n ENABLED: 'ENABLED',\n PAUSED: 'PAUSED',\n REMOVED: 'REMOVED'\n} as const;\nexport type KeywordCreateStatusEnum = typeof KeywordCreateStatusEnum[keyof typeof KeywordCreateStatusEnum];\n\n\n/**\n * Check if a given object implements the KeywordCreate interface.\n */\nexport function instanceOfKeywordCreate(value: object): value is KeywordCreate {\n if (!('adGroupId' in value) || value['adGroupId'] === undefined) return false;\n if (!('text' in value) || value['text'] === undefined) return false;\n return true;\n}\n\nexport function KeywordCreateFromJSON(json: any): KeywordCreate {\n return KeywordCreateFromJSONTyped(json, false);\n}\n\nexport function KeywordCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): KeywordCreate {\n if (json == null) {\n return json;\n }\n return {\n \n 'adGroupId': json['adGroupId'],\n 'campaignId': json['campaignId'] == null ? undefined : json['campaignId'],\n 'text': json['text'],\n 'matchType': json['matchType'] == null ? undefined : json['matchType'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'isNegative': json['isNegative'] == null ? undefined : json['isNegative'],\n 'cpcBid': json['cpcBid'] == null ? undefined : json['cpcBid'],\n };\n}\n\nexport function KeywordCreateToJSON(json: any): KeywordCreate {\n return KeywordCreateToJSONTyped(json, false);\n}\n\nexport function KeywordCreateToJSONTyped(value?: KeywordCreate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'adGroupId': value['adGroupId'],\n 'campaignId': value['campaignId'],\n 'text': value['text'],\n 'matchType': value['matchType'],\n 'status': value['status'],\n 'isNegative': value['isNegative'],\n 'cpcBid': value['cpcBid'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * Partial Keyword. Omitted fields are unchanged.\n * @export\n * @interface KeywordUpdate\n */\nexport interface KeywordUpdate {\n /**\n * \n * @type {string}\n * @memberof KeywordUpdate\n */\n adGroupId?: string;\n /**\n * Optional denormalisation.\n * @type {string}\n * @memberof KeywordUpdate\n */\n campaignId?: string;\n /**\n * \n * @type {string}\n * @memberof KeywordUpdate\n */\n text?: string;\n /**\n * \n * @type {string}\n * @memberof KeywordUpdate\n */\n matchType?: KeywordUpdateMatchTypeEnum;\n /**\n * \n * @type {string}\n * @memberof KeywordUpdate\n */\n status?: KeywordUpdateStatusEnum;\n /**\n * \n * @type {boolean}\n * @memberof KeywordUpdate\n */\n isNegative?: boolean;\n /**\n * \n * @type {number}\n * @memberof KeywordUpdate\n */\n cpcBid?: number | null;\n}\n\n\n/**\n * @export\n */\nexport const KeywordUpdateMatchTypeEnum = {\n BROAD: 'BROAD',\n PHRASE: 'PHRASE',\n EXACT: 'EXACT'\n} as const;\nexport type KeywordUpdateMatchTypeEnum = typeof KeywordUpdateMatchTypeEnum[keyof typeof KeywordUpdateMatchTypeEnum];\n\n/**\n * @export\n */\nexport const KeywordUpdateStatusEnum = {\n ENABLED: 'ENABLED',\n PAUSED: 'PAUSED',\n REMOVED: 'REMOVED'\n} as const;\nexport type KeywordUpdateStatusEnum = typeof KeywordUpdateStatusEnum[keyof typeof KeywordUpdateStatusEnum];\n\n\n/**\n * Check if a given object implements the KeywordUpdate interface.\n */\nexport function instanceOfKeywordUpdate(value: object): value is KeywordUpdate {\n return true;\n}\n\nexport function KeywordUpdateFromJSON(json: any): KeywordUpdate {\n return KeywordUpdateFromJSONTyped(json, false);\n}\n\nexport function KeywordUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): KeywordUpdate {\n if (json == null) {\n return json;\n }\n return {\n \n 'adGroupId': json['adGroupId'] == null ? undefined : json['adGroupId'],\n 'campaignId': json['campaignId'] == null ? undefined : json['campaignId'],\n 'text': json['text'] == null ? undefined : json['text'],\n 'matchType': json['matchType'] == null ? undefined : json['matchType'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'isNegative': json['isNegative'] == null ? undefined : json['isNegative'],\n 'cpcBid': json['cpcBid'] == null ? undefined : json['cpcBid'],\n };\n}\n\nexport function KeywordUpdateToJSON(json: any): KeywordUpdate {\n return KeywordUpdateToJSONTyped(json, false);\n}\n\nexport function KeywordUpdateToJSONTyped(value?: KeywordUpdate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'adGroupId': value['adGroupId'],\n 'campaignId': value['campaignId'],\n 'text': value['text'],\n 'matchType': value['matchType'],\n 'status': value['status'],\n 'isNegative': value['isNegative'],\n 'cpcBid': value['cpcBid'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SiteLinkEntry\n */\nexport interface SiteLinkEntry {\n /**\n * \n * @type {string}\n * @memberof SiteLinkEntry\n */\n text?: string;\n /**\n * \n * @type {string}\n * @memberof SiteLinkEntry\n */\n url?: string;\n /**\n * \n * @type {string}\n * @memberof SiteLinkEntry\n */\n description1?: string;\n /**\n * \n * @type {string}\n * @memberof SiteLinkEntry\n */\n description2?: string;\n}\n\n/**\n * Check if a given object implements the SiteLinkEntry interface.\n */\nexport function instanceOfSiteLinkEntry(value: object): value is SiteLinkEntry {\n return true;\n}\n\nexport function SiteLinkEntryFromJSON(json: any): SiteLinkEntry {\n return SiteLinkEntryFromJSONTyped(json, false);\n}\n\nexport function SiteLinkEntryFromJSONTyped(json: any, ignoreDiscriminator: boolean): SiteLinkEntry {\n if (json == null) {\n return json;\n }\n return {\n \n 'text': json['text'] == null ? undefined : json['text'],\n 'url': json['url'] == null ? undefined : json['url'],\n 'description1': json['description1'] == null ? undefined : json['description1'],\n 'description2': json['description2'] == null ? undefined : json['description2'],\n };\n}\n\nexport function SiteLinkEntryToJSON(json: any): SiteLinkEntry {\n return SiteLinkEntryToJSONTyped(json, false);\n}\n\nexport function SiteLinkEntryToJSONTyped(value?: SiteLinkEntry | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'text': value['text'],\n 'url': value['url'],\n 'description1': value['description1'],\n 'description2': value['description2'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Patched by scripts/patch-generated.mjs (US-ADS-267).\n * OpenAPI Generator emits broken codecs for oneOf schemas that mix a primitive\n * with an object/array. The union type is correct; these identity codecs replace\n * the broken generated ones (the values are plain JSON — no (de)serialization).\n */\n\n\nexport type SiteCreateSeoKeywords = Array<string> | string;\n\nexport function SiteCreateSeoKeywordsFromJSON(json: any): SiteCreateSeoKeywords { return json; }\nexport function SiteCreateSeoKeywordsFromJSONTyped(json: any, _ignoreDiscriminator: boolean): SiteCreateSeoKeywords { return json; }\nexport function SiteCreateSeoKeywordsToJSON(value?: SiteCreateSeoKeywords | null): any { return value; }\nexport function SiteCreateSeoKeywordsToJSONTyped(value?: SiteCreateSeoKeywords | null, _ignoreDiscriminator: boolean = false): any { return value; }\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Patched by scripts/patch-generated.mjs (US-ADS-267).\n * OpenAPI Generator emits broken codecs for oneOf schemas that mix a primitive\n * with an object/array. The union type is correct; these identity codecs replace\n * the broken generated ones (the values are plain JSON — no (de)serialization).\n */\n\n\nexport type SiteCreateTargetGroups = Array<string> | string;\n\nexport function SiteCreateTargetGroupsFromJSON(json: any): SiteCreateTargetGroups { return json; }\nexport function SiteCreateTargetGroupsFromJSONTyped(json: any, _ignoreDiscriminator: boolean): SiteCreateTargetGroups { return json; }\nexport function SiteCreateTargetGroupsToJSON(value?: SiteCreateTargetGroups | null): any { return value; }\nexport function SiteCreateTargetGroupsToJSONTyped(value?: SiteCreateTargetGroups | null, _ignoreDiscriminator: boolean = false): any { return value; }\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SiteLinkEntry } from './SiteLinkEntry';\nimport {\n SiteLinkEntryFromJSON,\n SiteLinkEntryFromJSONTyped,\n SiteLinkEntryToJSON,\n SiteLinkEntryToJSONTyped,\n} from './SiteLinkEntry';\nimport type { SiteCreateSeoKeywords } from './SiteCreateSeoKeywords';\nimport {\n SiteCreateSeoKeywordsFromJSON,\n SiteCreateSeoKeywordsFromJSONTyped,\n SiteCreateSeoKeywordsToJSON,\n SiteCreateSeoKeywordsToJSONTyped,\n} from './SiteCreateSeoKeywords';\nimport type { SiteCreateTargetGroups } from './SiteCreateTargetGroups';\nimport {\n SiteCreateTargetGroupsFromJSON,\n SiteCreateTargetGroupsFromJSONTyped,\n SiteCreateTargetGroupsToJSON,\n SiteCreateTargetGroupsToJSONTyped,\n} from './SiteCreateTargetGroups';\n\n/**\n * \n * @export\n * @interface SiteCreate\n */\nexport interface SiteCreate {\n /**\n * \n * @type {string}\n * @memberof SiteCreate\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof SiteCreate\n */\n url: string;\n /**\n * \n * @type {string}\n * @memberof SiteCreate\n */\n description?: string;\n /**\n * \n * @type {SiteCreateSeoKeywords}\n * @memberof SiteCreate\n */\n seoKeywords?: SiteCreateSeoKeywords;\n /**\n * \n * @type {SiteCreateTargetGroups}\n * @memberof SiteCreate\n */\n targetGroups?: SiteCreateTargetGroups;\n /**\n * \n * @type {string}\n * @memberof SiteCreate\n */\n status?: SiteCreateStatusEnum;\n /**\n * \n * @type {string}\n * @memberof SiteCreate\n */\n logoUrl?: string | null;\n /**\n * \n * @type {string}\n * @memberof SiteCreate\n */\n logoSource?: SiteCreateLogoSourceEnum | null;\n /**\n * \n * @type {Array<SiteLinkEntry>}\n * @memberof SiteCreate\n */\n siteLinks?: Array<SiteLinkEntry>;\n}\n\n\n/**\n * @export\n */\nexport const SiteCreateStatusEnum = {\n ENABLED: 'ENABLED',\n REMOVED: 'REMOVED'\n} as const;\nexport type SiteCreateStatusEnum = typeof SiteCreateStatusEnum[keyof typeof SiteCreateStatusEnum];\n\n/**\n * @export\n */\nexport const SiteCreateLogoSourceEnum = {\n auto_detected: 'auto-detected',\n uploaded: 'uploaded'\n} as const;\nexport type SiteCreateLogoSourceEnum = typeof SiteCreateLogoSourceEnum[keyof typeof SiteCreateLogoSourceEnum];\n\n\n/**\n * Check if a given object implements the SiteCreate interface.\n */\nexport function instanceOfSiteCreate(value: object): value is SiteCreate {\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('url' in value) || value['url'] === undefined) return false;\n return true;\n}\n\nexport function SiteCreateFromJSON(json: any): SiteCreate {\n return SiteCreateFromJSONTyped(json, false);\n}\n\nexport function SiteCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): SiteCreate {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'],\n 'url': json['url'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'seoKeywords': json['seoKeywords'] == null ? undefined : SiteCreateSeoKeywordsFromJSON(json['seoKeywords']),\n 'targetGroups': json['targetGroups'] == null ? undefined : SiteCreateTargetGroupsFromJSON(json['targetGroups']),\n 'status': json['status'] == null ? undefined : json['status'],\n 'logoUrl': json['logoUrl'] == null ? undefined : json['logoUrl'],\n 'logoSource': json['logoSource'] == null ? undefined : json['logoSource'],\n 'siteLinks': json['siteLinks'] == null ? undefined : ((json['siteLinks'] as Array<any>).map(SiteLinkEntryFromJSON)),\n };\n}\n\nexport function SiteCreateToJSON(json: any): SiteCreate {\n return SiteCreateToJSONTyped(json, false);\n}\n\nexport function SiteCreateToJSONTyped(value?: SiteCreate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'url': value['url'],\n 'description': value['description'],\n 'seoKeywords': SiteCreateSeoKeywordsToJSON(value['seoKeywords']),\n 'targetGroups': SiteCreateTargetGroupsToJSON(value['targetGroups']),\n 'status': value['status'],\n 'logoUrl': value['logoUrl'],\n 'logoSource': value['logoSource'],\n 'siteLinks': value['siteLinks'] == null ? undefined : ((value['siteLinks'] as Array<any>).map(SiteLinkEntryToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SiteLinkEntry } from './SiteLinkEntry';\nimport {\n SiteLinkEntryFromJSON,\n SiteLinkEntryFromJSONTyped,\n SiteLinkEntryToJSON,\n SiteLinkEntryToJSONTyped,\n} from './SiteLinkEntry';\nimport type { SiteCreateSeoKeywords } from './SiteCreateSeoKeywords';\nimport {\n SiteCreateSeoKeywordsFromJSON,\n SiteCreateSeoKeywordsFromJSONTyped,\n SiteCreateSeoKeywordsToJSON,\n SiteCreateSeoKeywordsToJSONTyped,\n} from './SiteCreateSeoKeywords';\nimport type { SiteCreateTargetGroups } from './SiteCreateTargetGroups';\nimport {\n SiteCreateTargetGroupsFromJSON,\n SiteCreateTargetGroupsFromJSONTyped,\n SiteCreateTargetGroupsToJSON,\n SiteCreateTargetGroupsToJSONTyped,\n} from './SiteCreateTargetGroups';\n\n/**\n * Partial Site. Omitted fields are unchanged.\n * @export\n * @interface SiteUpdate\n */\nexport interface SiteUpdate {\n /**\n * \n * @type {string}\n * @memberof SiteUpdate\n */\n name?: string;\n /**\n * \n * @type {string}\n * @memberof SiteUpdate\n */\n url?: string;\n /**\n * \n * @type {string}\n * @memberof SiteUpdate\n */\n description?: string;\n /**\n * \n * @type {SiteCreateSeoKeywords}\n * @memberof SiteUpdate\n */\n seoKeywords?: SiteCreateSeoKeywords;\n /**\n * \n * @type {SiteCreateTargetGroups}\n * @memberof SiteUpdate\n */\n targetGroups?: SiteCreateTargetGroups;\n /**\n * \n * @type {string}\n * @memberof SiteUpdate\n */\n status?: SiteUpdateStatusEnum;\n /**\n * \n * @type {string}\n * @memberof SiteUpdate\n */\n logoUrl?: string | null;\n /**\n * \n * @type {string}\n * @memberof SiteUpdate\n */\n logoSource?: SiteUpdateLogoSourceEnum | null;\n /**\n * \n * @type {Array<SiteLinkEntry>}\n * @memberof SiteUpdate\n */\n siteLinks?: Array<SiteLinkEntry>;\n}\n\n\n/**\n * @export\n */\nexport const SiteUpdateStatusEnum = {\n ENABLED: 'ENABLED',\n REMOVED: 'REMOVED'\n} as const;\nexport type SiteUpdateStatusEnum = typeof SiteUpdateStatusEnum[keyof typeof SiteUpdateStatusEnum];\n\n/**\n * @export\n */\nexport const SiteUpdateLogoSourceEnum = {\n auto_detected: 'auto-detected',\n uploaded: 'uploaded'\n} as const;\nexport type SiteUpdateLogoSourceEnum = typeof SiteUpdateLogoSourceEnum[keyof typeof SiteUpdateLogoSourceEnum];\n\n\n/**\n * Check if a given object implements the SiteUpdate interface.\n */\nexport function instanceOfSiteUpdate(value: object): value is SiteUpdate {\n return true;\n}\n\nexport function SiteUpdateFromJSON(json: any): SiteUpdate {\n return SiteUpdateFromJSONTyped(json, false);\n}\n\nexport function SiteUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): SiteUpdate {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'] == null ? undefined : json['name'],\n 'url': json['url'] == null ? undefined : json['url'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'seoKeywords': json['seoKeywords'] == null ? undefined : SiteCreateSeoKeywordsFromJSON(json['seoKeywords']),\n 'targetGroups': json['targetGroups'] == null ? undefined : SiteCreateTargetGroupsFromJSON(json['targetGroups']),\n 'status': json['status'] == null ? undefined : json['status'],\n 'logoUrl': json['logoUrl'] == null ? undefined : json['logoUrl'],\n 'logoSource': json['logoSource'] == null ? undefined : json['logoSource'],\n 'siteLinks': json['siteLinks'] == null ? undefined : ((json['siteLinks'] as Array<any>).map(SiteLinkEntryFromJSON)),\n };\n}\n\nexport function SiteUpdateToJSON(json: any): SiteUpdate {\n return SiteUpdateToJSONTyped(json, false);\n}\n\nexport function SiteUpdateToJSONTyped(value?: SiteUpdate | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'url': value['url'],\n 'description': value['description'],\n 'seoKeywords': SiteCreateSeoKeywordsToJSON(value['seoKeywords']),\n 'targetGroups': SiteCreateTargetGroupsToJSON(value['targetGroups']),\n 'status': value['status'],\n 'logoUrl': value['logoUrl'],\n 'logoSource': value['logoSource'],\n 'siteLinks': value['siteLinks'] == null ? undefined : ((value['siteLinks'] as Array<any>).map(SiteLinkEntryToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SuccessEnvelopeMetaNextCursor\n */\nexport interface SuccessEnvelopeMetaNextCursor {\n}\n\n/**\n * Check if a given object implements the SuccessEnvelopeMetaNextCursor interface.\n */\nexport function instanceOfSuccessEnvelopeMetaNextCursor(value: object): value is SuccessEnvelopeMetaNextCursor {\n return true;\n}\n\nexport function SuccessEnvelopeMetaNextCursorFromJSON(json: any): SuccessEnvelopeMetaNextCursor {\n return SuccessEnvelopeMetaNextCursorFromJSONTyped(json, false);\n}\n\nexport function SuccessEnvelopeMetaNextCursorFromJSONTyped(json: any, ignoreDiscriminator: boolean): SuccessEnvelopeMetaNextCursor {\n return json;\n}\n\nexport function SuccessEnvelopeMetaNextCursorToJSON(json: any): SuccessEnvelopeMetaNextCursor {\n return SuccessEnvelopeMetaNextCursorToJSONTyped(json, false);\n}\n\nexport function SuccessEnvelopeMetaNextCursorToJSONTyped(value?: SuccessEnvelopeMetaNextCursor | null, ignoreDiscriminator: boolean = false): any {\n return value;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SuccessEnvelopeMetaNextCursor } from './SuccessEnvelopeMetaNextCursor';\nimport {\n SuccessEnvelopeMetaNextCursorFromJSON,\n SuccessEnvelopeMetaNextCursorFromJSONTyped,\n SuccessEnvelopeMetaNextCursorToJSON,\n SuccessEnvelopeMetaNextCursorToJSONTyped,\n} from './SuccessEnvelopeMetaNextCursor';\n\n/**\n * \n * @export\n * @interface SuccessEnvelopeMeta\n */\nexport interface SuccessEnvelopeMeta {\n /**\n * \n * @type {SuccessEnvelopeMetaNextCursor}\n * @memberof SuccessEnvelopeMeta\n */\n nextCursor?: SuccessEnvelopeMetaNextCursor | null;\n /**\n * \n * @type {number}\n * @memberof SuccessEnvelopeMeta\n */\n total?: number;\n}\n\n/**\n * Check if a given object implements the SuccessEnvelopeMeta interface.\n */\nexport function instanceOfSuccessEnvelopeMeta(value: object): value is SuccessEnvelopeMeta {\n return true;\n}\n\nexport function SuccessEnvelopeMetaFromJSON(json: any): SuccessEnvelopeMeta {\n return SuccessEnvelopeMetaFromJSONTyped(json, false);\n}\n\nexport function SuccessEnvelopeMetaFromJSONTyped(json: any, ignoreDiscriminator: boolean): SuccessEnvelopeMeta {\n if (json == null) {\n return json;\n }\n return {\n \n 'nextCursor': json['nextCursor'] == null ? undefined : SuccessEnvelopeMetaNextCursorFromJSON(json['nextCursor']),\n 'total': json['total'] == null ? undefined : json['total'],\n };\n}\n\nexport function SuccessEnvelopeMetaToJSON(json: any): SuccessEnvelopeMeta {\n return SuccessEnvelopeMetaToJSONTyped(json, false);\n}\n\nexport function SuccessEnvelopeMetaToJSONTyped(value?: SuccessEnvelopeMeta | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'nextCursor': SuccessEnvelopeMetaNextCursorToJSON(value['nextCursor']),\n 'total': value['total'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SuccessEnvelopeMeta } from './SuccessEnvelopeMeta';\nimport {\n SuccessEnvelopeMetaFromJSON,\n SuccessEnvelopeMetaFromJSONTyped,\n SuccessEnvelopeMetaToJSON,\n SuccessEnvelopeMetaToJSONTyped,\n} from './SuccessEnvelopeMeta';\n\n/**\n * \n * @export\n * @interface SuccessEnvelope\n */\nexport interface SuccessEnvelope {\n /**\n * \n * @type {any}\n * @memberof SuccessEnvelope\n */\n data: any | null;\n /**\n * \n * @type {SuccessEnvelopeMeta}\n * @memberof SuccessEnvelope\n */\n meta?: SuccessEnvelopeMeta;\n}\n\n/**\n * Check if a given object implements the SuccessEnvelope interface.\n */\nexport function instanceOfSuccessEnvelope(value: object): value is SuccessEnvelope {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function SuccessEnvelopeFromJSON(json: any): SuccessEnvelope {\n return SuccessEnvelopeFromJSONTyped(json, false);\n}\n\nexport function SuccessEnvelopeFromJSONTyped(json: any, ignoreDiscriminator: boolean): SuccessEnvelope {\n if (json == null) {\n return json;\n }\n return {\n \n 'data': json['data'],\n 'meta': json['meta'] == null ? undefined : SuccessEnvelopeMetaFromJSON(json['meta']),\n };\n}\n\nexport function SuccessEnvelopeToJSON(json: any): SuccessEnvelope {\n return SuccessEnvelopeToJSONTyped(json, false);\n}\n\nexport function SuccessEnvelopeToJSONTyped(value?: SuccessEnvelope | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'data': value['data'],\n 'meta': SuccessEnvelopeMetaToJSON(value['meta']),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * Per-entity-type toggles + force controls.\n * @export\n * @interface SyncTriggerRequestOptions\n */\nexport interface SyncTriggerRequestOptions {\n /**\n * \n * @type {boolean}\n * @memberof SyncTriggerRequestOptions\n */\n includeAdGroups?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof SyncTriggerRequestOptions\n */\n includeKeywords?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof SyncTriggerRequestOptions\n */\n includeAds?: boolean;\n /**\n * Re-export linked campaigns even when change-detection sees no change — re-runs the full tree + targeting/extensions/labels. Use to repair campaigns synced before a fix. Applies to campaigns whose remote still exists; for campaigns deleted in the ad platform, unlink then sync to recreate.\n * @type {boolean}\n * @memberof SyncTriggerRequestOptions\n */\n force?: boolean;\n /**\n * Restrict `force` to these campaign ids. Omit to force the whole Space.\n * @type {Array<string>}\n * @memberof SyncTriggerRequestOptions\n */\n campaignIds?: Array<string>;\n}\n\n/**\n * Check if a given object implements the SyncTriggerRequestOptions interface.\n */\nexport function instanceOfSyncTriggerRequestOptions(value: object): value is SyncTriggerRequestOptions {\n return true;\n}\n\nexport function SyncTriggerRequestOptionsFromJSON(json: any): SyncTriggerRequestOptions {\n return SyncTriggerRequestOptionsFromJSONTyped(json, false);\n}\n\nexport function SyncTriggerRequestOptionsFromJSONTyped(json: any, ignoreDiscriminator: boolean): SyncTriggerRequestOptions {\n if (json == null) {\n return json;\n }\n return {\n \n 'includeAdGroups': json['includeAdGroups'] == null ? undefined : json['includeAdGroups'],\n 'includeKeywords': json['includeKeywords'] == null ? undefined : json['includeKeywords'],\n 'includeAds': json['includeAds'] == null ? undefined : json['includeAds'],\n 'force': json['force'] == null ? undefined : json['force'],\n 'campaignIds': json['campaignIds'] == null ? undefined : json['campaignIds'],\n };\n}\n\nexport function SyncTriggerRequestOptionsToJSON(json: any): SyncTriggerRequestOptions {\n return SyncTriggerRequestOptionsToJSONTyped(json, false);\n}\n\nexport function SyncTriggerRequestOptionsToJSONTyped(value?: SyncTriggerRequestOptions | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'includeAdGroups': value['includeAdGroups'],\n 'includeKeywords': value['includeKeywords'],\n 'includeAds': value['includeAds'],\n 'force': value['force'],\n 'campaignIds': value['campaignIds'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SyncTriggerRequestOptions } from './SyncTriggerRequestOptions';\nimport {\n SyncTriggerRequestOptionsFromJSON,\n SyncTriggerRequestOptionsFromJSONTyped,\n SyncTriggerRequestOptionsToJSON,\n SyncTriggerRequestOptionsToJSONTyped,\n} from './SyncTriggerRequestOptions';\n\n/**\n * All fields optional. Omit `platforms` to sync every connected platform.\n * @export\n * @interface SyncTriggerRequest\n */\nexport interface SyncTriggerRequest {\n /**\n * Platform ids to sync (e.g. [\"google-ads\"]). Defaults to all connected.\n * @type {Array<string>}\n * @memberof SyncTriggerRequest\n */\n platforms?: Array<string>;\n /**\n * \n * @type {SyncTriggerRequestOptions}\n * @memberof SyncTriggerRequest\n */\n options?: SyncTriggerRequestOptions;\n}\n\n/**\n * Check if a given object implements the SyncTriggerRequest interface.\n */\nexport function instanceOfSyncTriggerRequest(value: object): value is SyncTriggerRequest {\n return true;\n}\n\nexport function SyncTriggerRequestFromJSON(json: any): SyncTriggerRequest {\n return SyncTriggerRequestFromJSONTyped(json, false);\n}\n\nexport function SyncTriggerRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): SyncTriggerRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'platforms': json['platforms'] == null ? undefined : json['platforms'],\n 'options': json['options'] == null ? undefined : SyncTriggerRequestOptionsFromJSON(json['options']),\n };\n}\n\nexport function SyncTriggerRequestToJSON(json: any): SyncTriggerRequest {\n return SyncTriggerRequestToJSONTyped(json, false);\n}\n\nexport function SyncTriggerRequestToJSONTyped(value?: SyncTriggerRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'platforms': value['platforms'],\n 'options': SyncTriggerRequestOptionsToJSON(value['options']),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * Clear a platform link from the active Space's campaigns, keeping the local campaigns. After unlinking, a subsequent sync re-creates them on the platform.\n * @export\n * @interface SyncUnlinkRequest\n */\nexport interface SyncUnlinkRequest {\n /**\n * Platform id, e.g. \"microsoft-ads\".\n * @type {string}\n * @memberof SyncUnlinkRequest\n */\n platform: string;\n /**\n * Campaigns to unlink. Omit to unlink every campaign linked to the platform.\n * @type {Array<string>}\n * @memberof SyncUnlinkRequest\n */\n campaignIds?: Array<string>;\n /**\n * Also remove the campaign on the ad platform (already-removed counts as success). When false, only the local link is cleared and the remote is untouched.\n * @type {boolean}\n * @memberof SyncUnlinkRequest\n */\n deleteRemote?: boolean;\n}\n\n/**\n * Check if a given object implements the SyncUnlinkRequest interface.\n */\nexport function instanceOfSyncUnlinkRequest(value: object): value is SyncUnlinkRequest {\n if (!('platform' in value) || value['platform'] === undefined) return false;\n return true;\n}\n\nexport function SyncUnlinkRequestFromJSON(json: any): SyncUnlinkRequest {\n return SyncUnlinkRequestFromJSONTyped(json, false);\n}\n\nexport function SyncUnlinkRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): SyncUnlinkRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'platform': json['platform'],\n 'campaignIds': json['campaignIds'] == null ? undefined : json['campaignIds'],\n 'deleteRemote': json['deleteRemote'] == null ? undefined : json['deleteRemote'],\n };\n}\n\nexport function SyncUnlinkRequestToJSON(json: any): SyncUnlinkRequest {\n return SyncUnlinkRequestToJSONTyped(json, false);\n}\n\nexport function SyncUnlinkRequestToJSONTyped(value?: SyncUnlinkRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'platform': value['platform'],\n 'campaignIds': value['campaignIds'],\n 'deleteRemote': value['deleteRemote'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AdAssetCreate,\n CampaignsListCursorParameter,\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n AdAssetCreateFromJSON,\n AdAssetCreateToJSON,\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface AdAssetsCreateRequest {\n adAssetCreate: AdAssetCreate;\n xSpaceId?: string;\n}\n\nexport interface AdAssetsDeleteRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface AdAssetsGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface AdAssetsListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n adId?: string;\n adGroupId?: string;\n campaignId?: string;\n role?: string;\n xSpaceId?: string;\n}\n\n/**\n * AdAssetsApi - interface\n * \n * @export\n * @interface AdAssetsApiInterface\n */\nexport interface AdAssetsApiInterface {\n /**\n * \n * @summary Bind an asset to an ad or ad group with a role\n * @param {AdAssetCreate} adAssetCreate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdAssetsApiInterface\n */\n adAssetsCreateRaw(requestParameters: AdAssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Bind an asset to an ad or ad group with a role\n */\n adAssetsCreate(requestParameters: AdAssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Remove an ad-asset binding\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdAssetsApiInterface\n */\n adAssetsDeleteRaw(requestParameters: AdAssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Remove an ad-asset binding\n */\n adAssetsDelete(requestParameters: AdAssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Get ad-asset binding\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdAssetsApiInterface\n */\n adAssetsGetRaw(requestParameters: AdAssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Get ad-asset binding\n */\n adAssetsGet(requestParameters: AdAssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List ad / ad-group asset bindings (filter by adId/adGroupId/campaignId)\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [adId] Restrict to bindings for a specific ad.\n * @param {string} [adGroupId] Restrict to bindings for a specific ad group.\n * @param {string} [campaignId] All ad/ad-group bindings across a campaign.\n * @param {string} [role] Filter by asset role.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdAssetsApiInterface\n */\n adAssetsListRaw(requestParameters: AdAssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List ad / ad-group asset bindings (filter by adId/adGroupId/campaignId)\n */\n adAssetsList(requestParameters: AdAssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class AdAssetsApi extends runtime.BaseAPI implements AdAssetsApiInterface {\n\n /**\n * Bind an asset to an ad or ad group with a role\n */\n async adAssetsCreateRaw(requestParameters: AdAssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['adAssetCreate'] == null) {\n throw new runtime.RequiredError(\n 'adAssetCreate',\n 'Required parameter \"adAssetCreate\" was null or undefined when calling adAssetsCreate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-assets`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AdAssetCreateToJSON(requestParameters['adAssetCreate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Bind an asset to an ad or ad group with a role\n */\n async adAssetsCreate(requestParameters: AdAssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adAssetsCreateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Remove an ad-asset binding\n */\n async adAssetsDeleteRaw(requestParameters: AdAssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling adAssetsDelete().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-assets/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Remove an ad-asset binding\n */\n async adAssetsDelete(requestParameters: AdAssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adAssetsDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Get ad-asset binding\n */\n async adAssetsGetRaw(requestParameters: AdAssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling adAssetsGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-assets/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Get ad-asset binding\n */\n async adAssetsGet(requestParameters: AdAssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adAssetsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List ad / ad-group asset bindings (filter by adId/adGroupId/campaignId)\n */\n async adAssetsListRaw(requestParameters: AdAssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['adId'] != null) {\n queryParameters['adId'] = requestParameters['adId'];\n }\n\n if (requestParameters['adGroupId'] != null) {\n queryParameters['adGroupId'] = requestParameters['adGroupId'];\n }\n\n if (requestParameters['campaignId'] != null) {\n queryParameters['campaignId'] = requestParameters['campaignId'];\n }\n\n if (requestParameters['role'] != null) {\n queryParameters['role'] = requestParameters['role'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-assets`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List ad / ad-group asset bindings (filter by adId/adGroupId/campaignId)\n */\n async adAssetsList(requestParameters: AdAssetsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adAssetsListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AdGroupCreate,\n AdGroupUpdate,\n CampaignsListCursorParameter,\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n AdGroupCreateFromJSON,\n AdGroupCreateToJSON,\n AdGroupUpdateFromJSON,\n AdGroupUpdateToJSON,\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface AdGroupsCreateRequest {\n adGroupCreate: AdGroupCreate;\n xSpaceId?: string;\n}\n\nexport interface AdGroupsDeleteRequest {\n id: string;\n cascade?: boolean;\n xSpaceId?: string;\n}\n\nexport interface AdGroupsGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface AdGroupsListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n xSpaceId?: string;\n}\n\nexport interface AdGroupsUpdateRequest {\n id: string;\n adGroupUpdate: AdGroupUpdate;\n xSpaceId?: string;\n}\n\n/**\n * AdGroupsApi - interface\n * \n * @export\n * @interface AdGroupsApiInterface\n */\nexport interface AdGroupsApiInterface {\n /**\n * \n * @summary Create ad group\n * @param {AdGroupCreate} adGroupCreate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdGroupsApiInterface\n */\n adGroupsCreateRaw(requestParameters: AdGroupsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Create ad group\n */\n adGroupsCreate(requestParameters: AdGroupsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * Returns 409 CONFLICT with `details: { ads, keywords }` when the ad group still has dependent ads or keywords. Pass `?cascade=true` to delete them in the same request.\n * @summary Delete ad group\n * @param {string} id \n * @param {boolean} [cascade] Set to &#x60;true&#x60; to delete dependent ads and keywords along with the ad group.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdGroupsApiInterface\n */\n adGroupsDeleteRaw(requestParameters: AdGroupsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Returns 409 CONFLICT with `details: { ads, keywords }` when the ad group still has dependent ads or keywords. Pass `?cascade=true` to delete them in the same request.\n * Delete ad group\n */\n adGroupsDelete(requestParameters: AdGroupsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Get ad group\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdGroupsApiInterface\n */\n adGroupsGetRaw(requestParameters: AdGroupsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Get ad group\n */\n adGroupsGet(requestParameters: AdGroupsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List ad groups\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdGroupsApiInterface\n */\n adGroupsListRaw(requestParameters: AdGroupsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List ad groups\n */\n adGroupsList(requestParameters: AdGroupsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Update ad group\n * @param {string} id \n * @param {AdGroupUpdate} adGroupUpdate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdGroupsApiInterface\n */\n adGroupsUpdateRaw(requestParameters: AdGroupsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Update ad group\n */\n adGroupsUpdate(requestParameters: AdGroupsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class AdGroupsApi extends runtime.BaseAPI implements AdGroupsApiInterface {\n\n /**\n * Create ad group\n */\n async adGroupsCreateRaw(requestParameters: AdGroupsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['adGroupCreate'] == null) {\n throw new runtime.RequiredError(\n 'adGroupCreate',\n 'Required parameter \"adGroupCreate\" was null or undefined when calling adGroupsCreate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-groups`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AdGroupCreateToJSON(requestParameters['adGroupCreate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Create ad group\n */\n async adGroupsCreate(requestParameters: AdGroupsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adGroupsCreateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns 409 CONFLICT with `details: { ads, keywords }` when the ad group still has dependent ads or keywords. Pass `?cascade=true` to delete them in the same request.\n * Delete ad group\n */\n async adGroupsDeleteRaw(requestParameters: AdGroupsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling adGroupsDelete().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cascade'] != null) {\n queryParameters['cascade'] = requestParameters['cascade'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-groups/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Returns 409 CONFLICT with `details: { ads, keywords }` when the ad group still has dependent ads or keywords. Pass `?cascade=true` to delete them in the same request.\n * Delete ad group\n */\n async adGroupsDelete(requestParameters: AdGroupsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adGroupsDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Get ad group\n */\n async adGroupsGetRaw(requestParameters: AdGroupsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling adGroupsGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-groups/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Get ad group\n */\n async adGroupsGet(requestParameters: AdGroupsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adGroupsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List ad groups\n */\n async adGroupsListRaw(requestParameters: AdGroupsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-groups`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List ad groups\n */\n async adGroupsList(requestParameters: AdGroupsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adGroupsListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Update ad group\n */\n async adGroupsUpdateRaw(requestParameters: AdGroupsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling adGroupsUpdate().'\n );\n }\n\n if (requestParameters['adGroupUpdate'] == null) {\n throw new runtime.RequiredError(\n 'adGroupUpdate',\n 'Required parameter \"adGroupUpdate\" was null or undefined when calling adGroupsUpdate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ad-groups/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: AdGroupUpdateToJSON(requestParameters['adGroupUpdate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Update ad group\n */\n async adGroupsUpdate(requestParameters: AdGroupsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adGroupsUpdateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AdCreate,\n AdUpdate,\n CampaignsListCursorParameter,\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n AdCreateFromJSON,\n AdCreateToJSON,\n AdUpdateFromJSON,\n AdUpdateToJSON,\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface AdsCreateRequest {\n adCreate: AdCreate;\n xSpaceId?: string;\n}\n\nexport interface AdsDeleteRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface AdsGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface AdsListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n xSpaceId?: string;\n}\n\nexport interface AdsUpdateRequest {\n id: string;\n adUpdate: AdUpdate;\n xSpaceId?: string;\n}\n\n/**\n * AdsApi - interface\n * \n * @export\n * @interface AdsApiInterface\n */\nexport interface AdsApiInterface {\n /**\n * \n * @summary Create ad\n * @param {AdCreate} adCreate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdsApiInterface\n */\n adsCreateRaw(requestParameters: AdsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Create ad\n */\n adsCreate(requestParameters: AdsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Delete ad\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdsApiInterface\n */\n adsDeleteRaw(requestParameters: AdsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Delete ad\n */\n adsDelete(requestParameters: AdsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Get ad\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdsApiInterface\n */\n adsGetRaw(requestParameters: AdsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Get ad\n */\n adsGet(requestParameters: AdsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List ads\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdsApiInterface\n */\n adsListRaw(requestParameters: AdsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List ads\n */\n adsList(requestParameters: AdsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Update ad (used by partial-resync flows)\n * @param {string} id \n * @param {AdUpdate} adUpdate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AdsApiInterface\n */\n adsUpdateRaw(requestParameters: AdsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Update ad (used by partial-resync flows)\n */\n adsUpdate(requestParameters: AdsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class AdsApi extends runtime.BaseAPI implements AdsApiInterface {\n\n /**\n * Create ad\n */\n async adsCreateRaw(requestParameters: AdsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['adCreate'] == null) {\n throw new runtime.RequiredError(\n 'adCreate',\n 'Required parameter \"adCreate\" was null or undefined when calling adsCreate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ads`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AdCreateToJSON(requestParameters['adCreate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Create ad\n */\n async adsCreate(requestParameters: AdsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adsCreateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Delete ad\n */\n async adsDeleteRaw(requestParameters: AdsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling adsDelete().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ads/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Delete ad\n */\n async adsDelete(requestParameters: AdsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adsDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Get ad\n */\n async adsGetRaw(requestParameters: AdsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling adsGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ads/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Get ad\n */\n async adsGet(requestParameters: AdsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List ads\n */\n async adsListRaw(requestParameters: AdsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ads`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List ads\n */\n async adsList(requestParameters: AdsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adsListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Update ad (used by partial-resync flows)\n */\n async adsUpdateRaw(requestParameters: AdsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling adsUpdate().'\n );\n }\n\n if (requestParameters['adUpdate'] == null) {\n throw new runtime.RequiredError(\n 'adUpdate',\n 'Required parameter \"adUpdate\" was null or undefined when calling adsUpdate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"ads:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/ads/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: AdUpdateToJSON(requestParameters['adUpdate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Update ad (used by partial-resync flows)\n */\n async adsUpdate(requestParameters: AdsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.adsUpdateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AssetCreate,\n AssetUpdate,\n CampaignsListCursorParameter,\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n AssetCreateFromJSON,\n AssetCreateToJSON,\n AssetUpdateFromJSON,\n AssetUpdateToJSON,\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface AssetsCreateRequest {\n assetCreate: AssetCreate;\n xSpaceId?: string;\n}\n\nexport interface AssetsDeleteRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface AssetsGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface AssetsListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n type?: string;\n xSpaceId?: string;\n}\n\nexport interface AssetsUpdateRequest {\n id: string;\n assetUpdate: AssetUpdate;\n xSpaceId?: string;\n}\n\n/**\n * AssetsApi - interface\n * \n * @export\n * @interface AssetsApiInterface\n */\nexport interface AssetsApiInterface {\n /**\n * \n * @summary Create asset (URL-by-reference)\n * @param {AssetCreate} assetCreate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AssetsApiInterface\n */\n assetsCreateRaw(requestParameters: AssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Create asset (URL-by-reference)\n */\n assetsCreate(requestParameters: AssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Delete asset\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AssetsApiInterface\n */\n assetsDeleteRaw(requestParameters: AssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Delete asset\n */\n assetsDelete(requestParameters: AssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Get asset\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AssetsApiInterface\n */\n assetsGetRaw(requestParameters: AssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Get asset\n */\n assetsGet(requestParameters: AssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List assets\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [type] Filter by asset type (e.g. IMAGE, LOGO, VIDEO).\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AssetsApiInterface\n */\n assetsListRaw(requestParameters: AssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List assets\n */\n assetsList(requestParameters: AssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Update asset (partial: name, altText, tags, metadata, status, width, height)\n * @param {string} id \n * @param {AssetUpdate} assetUpdate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AssetsApiInterface\n */\n assetsUpdateRaw(requestParameters: AssetsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Update asset (partial: name, altText, tags, metadata, status, width, height)\n */\n assetsUpdate(requestParameters: AssetsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class AssetsApi extends runtime.BaseAPI implements AssetsApiInterface {\n\n /**\n * Create asset (URL-by-reference)\n */\n async assetsCreateRaw(requestParameters: AssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['assetCreate'] == null) {\n throw new runtime.RequiredError(\n 'assetCreate',\n 'Required parameter \"assetCreate\" was null or undefined when calling assetsCreate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/assets`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AssetCreateToJSON(requestParameters['assetCreate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Create asset (URL-by-reference)\n */\n async assetsCreate(requestParameters: AssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.assetsCreateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Delete asset\n */\n async assetsDeleteRaw(requestParameters: AssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling assetsDelete().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/assets/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Delete asset\n */\n async assetsDelete(requestParameters: AssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.assetsDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Get asset\n */\n async assetsGetRaw(requestParameters: AssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling assetsGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/assets/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Get asset\n */\n async assetsGet(requestParameters: AssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.assetsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List assets\n */\n async assetsListRaw(requestParameters: AssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/assets`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List assets\n */\n async assetsList(requestParameters: AssetsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.assetsListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Update asset (partial: name, altText, tags, metadata, status, width, height)\n */\n async assetsUpdateRaw(requestParameters: AssetsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling assetsUpdate().'\n );\n }\n\n if (requestParameters['assetUpdate'] == null) {\n throw new runtime.RequiredError(\n 'assetUpdate',\n 'Required parameter \"assetUpdate\" was null or undefined when calling assetsUpdate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/assets/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: AssetUpdateToJSON(requestParameters['assetUpdate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Update asset (partial: name, altText, tags, metadata, status, width, height)\n */\n async assetsUpdate(requestParameters: AssetsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.assetsUpdateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n CampaignAssetCreate,\n CampaignsListCursorParameter,\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n CampaignAssetCreateFromJSON,\n CampaignAssetCreateToJSON,\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface CampaignAssetsCreateRequest {\n campaignAssetCreate: CampaignAssetCreate;\n xSpaceId?: string;\n}\n\nexport interface CampaignAssetsDeleteRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface CampaignAssetsGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface CampaignAssetsListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n campaignId?: string;\n assetId?: string;\n xSpaceId?: string;\n}\n\n/**\n * CampaignAssetsApi - interface\n * \n * @export\n * @interface CampaignAssetsApiInterface\n */\nexport interface CampaignAssetsApiInterface {\n /**\n * \n * @summary Bind an asset to a campaign with a role\n * @param {CampaignAssetCreate} campaignAssetCreate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignAssetsApiInterface\n */\n campaignAssetsCreateRaw(requestParameters: CampaignAssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Bind an asset to a campaign with a role\n */\n campaignAssetsCreate(requestParameters: CampaignAssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Remove a campaign-asset binding\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignAssetsApiInterface\n */\n campaignAssetsDeleteRaw(requestParameters: CampaignAssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Remove a campaign-asset binding\n */\n campaignAssetsDelete(requestParameters: CampaignAssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Get campaign-asset binding\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignAssetsApiInterface\n */\n campaignAssetsGetRaw(requestParameters: CampaignAssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Get campaign-asset binding\n */\n campaignAssetsGet(requestParameters: CampaignAssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List campaign-asset bindings (filter by campaignId/assetId)\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [campaignId] Restrict to bindings for a specific campaign.\n * @param {string} [assetId] Restrict to bindings for a specific asset.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignAssetsApiInterface\n */\n campaignAssetsListRaw(requestParameters: CampaignAssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List campaign-asset bindings (filter by campaignId/assetId)\n */\n campaignAssetsList(requestParameters: CampaignAssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class CampaignAssetsApi extends runtime.BaseAPI implements CampaignAssetsApiInterface {\n\n /**\n * Bind an asset to a campaign with a role\n */\n async campaignAssetsCreateRaw(requestParameters: CampaignAssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['campaignAssetCreate'] == null) {\n throw new runtime.RequiredError(\n 'campaignAssetCreate',\n 'Required parameter \"campaignAssetCreate\" was null or undefined when calling campaignAssetsCreate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaign-assets`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CampaignAssetCreateToJSON(requestParameters['campaignAssetCreate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Bind an asset to a campaign with a role\n */\n async campaignAssetsCreate(requestParameters: CampaignAssetsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignAssetsCreateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Remove a campaign-asset binding\n */\n async campaignAssetsDeleteRaw(requestParameters: CampaignAssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling campaignAssetsDelete().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaign-assets/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Remove a campaign-asset binding\n */\n async campaignAssetsDelete(requestParameters: CampaignAssetsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignAssetsDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Get campaign-asset binding\n */\n async campaignAssetsGetRaw(requestParameters: CampaignAssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling campaignAssetsGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaign-assets/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Get campaign-asset binding\n */\n async campaignAssetsGet(requestParameters: CampaignAssetsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignAssetsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List campaign-asset bindings (filter by campaignId/assetId)\n */\n async campaignAssetsListRaw(requestParameters: CampaignAssetsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['campaignId'] != null) {\n queryParameters['campaignId'] = requestParameters['campaignId'];\n }\n\n if (requestParameters['assetId'] != null) {\n queryParameters['assetId'] = requestParameters['assetId'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"assets:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaign-assets`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List campaign-asset bindings (filter by campaignId/assetId)\n */\n async campaignAssetsList(requestParameters: CampaignAssetsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignAssetsListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n CampaignCreate,\n CampaignUpdate,\n CampaignsListCursorParameter,\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n CampaignCreateFromJSON,\n CampaignCreateToJSON,\n CampaignUpdateFromJSON,\n CampaignUpdateToJSON,\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface CampaignsCreateRequest {\n campaignCreate: CampaignCreate;\n xSpaceId?: string;\n}\n\nexport interface CampaignsDeleteRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface CampaignsGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface CampaignsListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n xSpaceId?: string;\n}\n\nexport interface CampaignsUpdateRequest {\n id: string;\n campaignUpdate: CampaignUpdate;\n xSpaceId?: string;\n}\n\n/**\n * CampaignsApi - interface\n * \n * @export\n * @interface CampaignsApiInterface\n */\nexport interface CampaignsApiInterface {\n /**\n * Body accepts a Campaign object. The `adSchedule` field (US-ADS-133) follows the CampaignAdScheduleField shape — see components.schemas.\n * @summary Create campaign\n * @param {CampaignCreate} campaignCreate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignsApiInterface\n */\n campaignsCreateRaw(requestParameters: CampaignsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Body accepts a Campaign object. The `adSchedule` field (US-ADS-133) follows the CampaignAdScheduleField shape — see components.schemas.\n * Create campaign\n */\n campaignsCreate(requestParameters: CampaignsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Delete campaign\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignsApiInterface\n */\n campaignsDeleteRaw(requestParameters: CampaignsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Delete campaign\n */\n campaignsDelete(requestParameters: CampaignsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * Response carries both `adSchedule` (legacy enum echo when set as such) and `adScheduleStructured` (canonical StructuredSchedule).\n * @summary Get campaign\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignsApiInterface\n */\n campaignsGetRaw(requestParameters: CampaignsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Response carries both `adSchedule` (legacy enum echo when set as such) and `adScheduleStructured` (canonical StructuredSchedule).\n * Get campaign\n */\n campaignsGet(requestParameters: CampaignsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List campaigns\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignsApiInterface\n */\n campaignsListRaw(requestParameters: CampaignsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List campaigns\n */\n campaignsList(requestParameters: CampaignsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * Body fields are merged into the existing campaign. `adSchedule` can be the legacy enum or a StructuredSchedule; the canonical form is recomputed each write.\n * @summary Update campaign\n * @param {string} id \n * @param {CampaignUpdate} campaignUpdate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CampaignsApiInterface\n */\n campaignsUpdateRaw(requestParameters: CampaignsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Body fields are merged into the existing campaign. `adSchedule` can be the legacy enum or a StructuredSchedule; the canonical form is recomputed each write.\n * Update campaign\n */\n campaignsUpdate(requestParameters: CampaignsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class CampaignsApi extends runtime.BaseAPI implements CampaignsApiInterface {\n\n /**\n * Body accepts a Campaign object. The `adSchedule` field (US-ADS-133) follows the CampaignAdScheduleField shape — see components.schemas.\n * Create campaign\n */\n async campaignsCreateRaw(requestParameters: CampaignsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['campaignCreate'] == null) {\n throw new runtime.RequiredError(\n 'campaignCreate',\n 'Required parameter \"campaignCreate\" was null or undefined when calling campaignsCreate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"campaigns:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaigns`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CampaignCreateToJSON(requestParameters['campaignCreate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Body accepts a Campaign object. The `adSchedule` field (US-ADS-133) follows the CampaignAdScheduleField shape — see components.schemas.\n * Create campaign\n */\n async campaignsCreate(requestParameters: CampaignsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignsCreateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Delete campaign\n */\n async campaignsDeleteRaw(requestParameters: CampaignsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling campaignsDelete().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"campaigns:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaigns/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Delete campaign\n */\n async campaignsDelete(requestParameters: CampaignsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignsDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Response carries both `adSchedule` (legacy enum echo when set as such) and `adScheduleStructured` (canonical StructuredSchedule).\n * Get campaign\n */\n async campaignsGetRaw(requestParameters: CampaignsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling campaignsGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"campaigns:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaigns/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Response carries both `adSchedule` (legacy enum echo when set as such) and `adScheduleStructured` (canonical StructuredSchedule).\n * Get campaign\n */\n async campaignsGet(requestParameters: CampaignsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List campaigns\n */\n async campaignsListRaw(requestParameters: CampaignsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"campaigns:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaigns`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List campaigns\n */\n async campaignsList(requestParameters: CampaignsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignsListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Body fields are merged into the existing campaign. `adSchedule` can be the legacy enum or a StructuredSchedule; the canonical form is recomputed each write.\n * Update campaign\n */\n async campaignsUpdateRaw(requestParameters: CampaignsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling campaignsUpdate().'\n );\n }\n\n if (requestParameters['campaignUpdate'] == null) {\n throw new runtime.RequiredError(\n 'campaignUpdate',\n 'Required parameter \"campaignUpdate\" was null or undefined when calling campaignsUpdate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"campaigns:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/campaigns/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: CampaignUpdateToJSON(requestParameters['campaignUpdate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Body fields are merged into the existing campaign. `adSchedule` can be the legacy enum or a StructuredSchedule; the canonical form is recomputed each write.\n * Update campaign\n */\n async campaignsUpdate(requestParameters: CampaignsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.campaignsUpdateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n CampaignsListCursorParameter,\n ErrorEnvelope,\n KeywordCreate,\n KeywordUpdate,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n KeywordCreateFromJSON,\n KeywordCreateToJSON,\n KeywordUpdateFromJSON,\n KeywordUpdateToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface KeywordsCreateRequest {\n keywordCreate: KeywordCreate;\n xSpaceId?: string;\n}\n\nexport interface KeywordsDeleteRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface KeywordsGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface KeywordsListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n xSpaceId?: string;\n}\n\nexport interface KeywordsUpdateRequest {\n id: string;\n keywordUpdate: KeywordUpdate;\n xSpaceId?: string;\n}\n\n/**\n * KeywordsApi - interface\n * \n * @export\n * @interface KeywordsApiInterface\n */\nexport interface KeywordsApiInterface {\n /**\n * \n * @summary Create keyword\n * @param {KeywordCreate} keywordCreate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof KeywordsApiInterface\n */\n keywordsCreateRaw(requestParameters: KeywordsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Create keyword\n */\n keywordsCreate(requestParameters: KeywordsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Delete keyword\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof KeywordsApiInterface\n */\n keywordsDeleteRaw(requestParameters: KeywordsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Delete keyword\n */\n keywordsDelete(requestParameters: KeywordsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Get keyword\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof KeywordsApiInterface\n */\n keywordsGetRaw(requestParameters: KeywordsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Get keyword\n */\n keywordsGet(requestParameters: KeywordsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List keywords\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof KeywordsApiInterface\n */\n keywordsListRaw(requestParameters: KeywordsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List keywords\n */\n keywordsList(requestParameters: KeywordsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Update keyword\n * @param {string} id \n * @param {KeywordUpdate} keywordUpdate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof KeywordsApiInterface\n */\n keywordsUpdateRaw(requestParameters: KeywordsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Update keyword\n */\n keywordsUpdate(requestParameters: KeywordsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class KeywordsApi extends runtime.BaseAPI implements KeywordsApiInterface {\n\n /**\n * Create keyword\n */\n async keywordsCreateRaw(requestParameters: KeywordsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['keywordCreate'] == null) {\n throw new runtime.RequiredError(\n 'keywordCreate',\n 'Required parameter \"keywordCreate\" was null or undefined when calling keywordsCreate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"keywords:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/keywords`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: KeywordCreateToJSON(requestParameters['keywordCreate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Create keyword\n */\n async keywordsCreate(requestParameters: KeywordsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.keywordsCreateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Delete keyword\n */\n async keywordsDeleteRaw(requestParameters: KeywordsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling keywordsDelete().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"keywords:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/keywords/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Delete keyword\n */\n async keywordsDelete(requestParameters: KeywordsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.keywordsDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Get keyword\n */\n async keywordsGetRaw(requestParameters: KeywordsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling keywordsGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"keywords:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/keywords/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Get keyword\n */\n async keywordsGet(requestParameters: KeywordsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.keywordsGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List keywords\n */\n async keywordsListRaw(requestParameters: KeywordsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"keywords:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/keywords`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List keywords\n */\n async keywordsList(requestParameters: KeywordsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.keywordsListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Update keyword\n */\n async keywordsUpdateRaw(requestParameters: KeywordsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling keywordsUpdate().'\n );\n }\n\n if (requestParameters['keywordUpdate'] == null) {\n throw new runtime.RequiredError(\n 'keywordUpdate',\n 'Required parameter \"keywordUpdate\" was null or undefined when calling keywordsUpdate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"keywords:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/keywords/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: KeywordUpdateToJSON(requestParameters['keywordUpdate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Update keyword\n */\n async keywordsUpdate(requestParameters: KeywordsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.keywordsUpdateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface MediaMatrixRequest {\n xSpaceId?: string;\n}\n\n/**\n * MediaApi - interface\n * \n * @export\n * @interface MediaApiInterface\n */\nexport interface MediaApiInterface {\n /**\n * \n * @summary Media requirements matrix (per platform/campaign type: required & optional roles, scope, ad format). Versioned so consumers can detect drift.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof MediaApiInterface\n */\n mediaMatrixRaw(requestParameters: MediaMatrixRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Media requirements matrix (per platform/campaign type: required & optional roles, scope, ad format). Versioned so consumers can detect drift.\n */\n mediaMatrix(requestParameters: MediaMatrixRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class MediaApi extends runtime.BaseAPI implements MediaApiInterface {\n\n /**\n * Media requirements matrix (per platform/campaign type: required & optional roles, scope, ad format). Versioned so consumers can detect drift.\n */\n async mediaMatrixRaw(requestParameters: MediaMatrixRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/media/matrix`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Media requirements matrix (per platform/campaign type: required & optional roles, scope, ad format). Versioned so consumers can detect drift.\n */\n async mediaMatrix(requestParameters: MediaMatrixRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.mediaMatrixRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\n/**\n * MetaApi - interface\n * \n * @export\n * @interface MetaApiInterface\n */\nexport interface MetaApiInterface {\n /**\n * \n * @summary Introspect the authenticated API token\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof MetaApiInterface\n */\n meGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Introspect the authenticated API token\n */\n meGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary OpenAPI specification for this API\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof MetaApiInterface\n */\n openapiGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * OpenAPI specification for this API\n */\n openapiGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List Spaces the token owner is a member of\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof MetaApiInterface\n */\n spacesListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List Spaces the token owner is a member of\n */\n spacesList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class MetaApi extends runtime.BaseAPI implements MetaApiInterface {\n\n /**\n * Introspect the authenticated API token\n */\n async meGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/me`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Introspect the authenticated API token\n */\n async meGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.meGetRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * OpenAPI specification for this API\n */\n async openapiGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/openapi.json`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * OpenAPI specification for this API\n */\n async openapiGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.openapiGetRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * List Spaces the token owner is a member of\n */\n async spacesListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/spaces`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List Spaces the token owner is a member of\n */\n async spacesList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.spacesListRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ErrorEnvelope,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface ReportsStatsRequest {\n xSpaceId?: string;\n}\n\n/**\n * ReportsApi - interface\n * \n * @export\n * @interface ReportsApiInterface\n */\nexport interface ReportsApiInterface {\n /**\n * \n * @summary Account-wide stats\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ReportsApiInterface\n */\n reportsStatsRaw(requestParameters: ReportsStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Account-wide stats\n */\n reportsStats(requestParameters: ReportsStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class ReportsApi extends runtime.BaseAPI implements ReportsApiInterface {\n\n /**\n * Account-wide stats\n */\n async reportsStatsRaw(requestParameters: ReportsStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"reports:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/reports/stats`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Account-wide stats\n */\n async reportsStats(requestParameters: ReportsStatsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.reportsStatsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n CampaignsListCursorParameter,\n ErrorEnvelope,\n SiteCreate,\n SiteUpdate,\n SuccessEnvelope,\n} from '../models/index';\nimport {\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SiteCreateFromJSON,\n SiteCreateToJSON,\n SiteUpdateFromJSON,\n SiteUpdateToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n} from '../models/index';\n\nexport interface SitesCreateRequest {\n siteCreate: SiteCreate;\n xSpaceId?: string;\n}\n\nexport interface SitesDeleteRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface SitesGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface SitesListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n xSpaceId?: string;\n}\n\nexport interface SitesUpdateRequest {\n id: string;\n siteUpdate: SiteUpdate;\n xSpaceId?: string;\n}\n\n/**\n * SitesApi - interface\n * \n * @export\n * @interface SitesApiInterface\n */\nexport interface SitesApiInterface {\n /**\n * \n * @summary Create site\n * @param {SiteCreate} siteCreate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SitesApiInterface\n */\n sitesCreateRaw(requestParameters: SitesCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Create site\n */\n sitesCreate(requestParameters: SitesCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * Returns 409 CONFLICT with `details: { campaigns }` when one or more campaigns still reference the site. Delete or reassign those campaigns first; no cascade is offered.\n * @summary Delete site\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SitesApiInterface\n */\n sitesDeleteRaw(requestParameters: SitesDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Returns 409 CONFLICT with `details: { campaigns }` when one or more campaigns still reference the site. Delete or reassign those campaigns first; no cascade is offered.\n * Delete site\n */\n sitesDelete(requestParameters: SitesDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Get site\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SitesApiInterface\n */\n sitesGetRaw(requestParameters: SitesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Get site\n */\n sitesGet(requestParameters: SitesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List sites\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SitesApiInterface\n */\n sitesListRaw(requestParameters: SitesListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List sites\n */\n sitesList(requestParameters: SitesListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary Update site\n * @param {string} id \n * @param {SiteUpdate} siteUpdate \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SitesApiInterface\n */\n sitesUpdateRaw(requestParameters: SitesUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Update site\n */\n sitesUpdate(requestParameters: SitesUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class SitesApi extends runtime.BaseAPI implements SitesApiInterface {\n\n /**\n * Create site\n */\n async sitesCreateRaw(requestParameters: SitesCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['siteCreate'] == null) {\n throw new runtime.RequiredError(\n 'siteCreate',\n 'Required parameter \"siteCreate\" was null or undefined when calling sitesCreate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sites:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sites`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SiteCreateToJSON(requestParameters['siteCreate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Create site\n */\n async sitesCreate(requestParameters: SitesCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.sitesCreateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns 409 CONFLICT with `details: { campaigns }` when one or more campaigns still reference the site. Delete or reassign those campaigns first; no cascade is offered.\n * Delete site\n */\n async sitesDeleteRaw(requestParameters: SitesDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling sitesDelete().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sites:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sites/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Returns 409 CONFLICT with `details: { campaigns }` when one or more campaigns still reference the site. Delete or reassign those campaigns first; no cascade is offered.\n * Delete site\n */\n async sitesDelete(requestParameters: SitesDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.sitesDeleteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Get site\n */\n async sitesGetRaw(requestParameters: SitesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling sitesGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sites:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sites/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Get site\n */\n async sitesGet(requestParameters: SitesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.sitesGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List sites\n */\n async sitesListRaw(requestParameters: SitesListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sites:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sites`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List sites\n */\n async sitesList(requestParameters: SitesListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.sitesListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Update site\n */\n async sitesUpdateRaw(requestParameters: SitesUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling sitesUpdate().'\n );\n }\n\n if (requestParameters['siteUpdate'] == null) {\n throw new runtime.RequiredError(\n 'siteUpdate',\n 'Required parameter \"siteUpdate\" was null or undefined when calling sitesUpdate().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sites:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sites/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'PUT',\n headers: headerParameters,\n query: queryParameters,\n body: SiteUpdateToJSON(requestParameters['siteUpdate']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Update site\n */\n async sitesUpdate(requestParameters: SitesUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.sitesUpdateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Defo Ads Public API\n * Stable public API for managing campaigns, ads, keywords, and sites.\n *\n * The version of the OpenAPI document: 1.4.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n CampaignsListCursorParameter,\n ErrorEnvelope,\n SuccessEnvelope,\n SyncTriggerRequest,\n SyncUnlinkRequest,\n} from '../models/index';\nimport {\n CampaignsListCursorParameterFromJSON,\n CampaignsListCursorParameterToJSON,\n ErrorEnvelopeFromJSON,\n ErrorEnvelopeToJSON,\n SuccessEnvelopeFromJSON,\n SuccessEnvelopeToJSON,\n SyncTriggerRequestFromJSON,\n SyncTriggerRequestToJSON,\n SyncUnlinkRequestFromJSON,\n SyncUnlinkRequestToJSON,\n} from '../models/index';\n\nexport interface SyncCancelRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface SyncGetRequest {\n id: string;\n xSpaceId?: string;\n}\n\nexport interface SyncListRequest {\n limit?: number;\n cursor?: CampaignsListCursorParameter;\n xSpaceId?: string;\n}\n\nexport interface SyncPlanRequest {\n platforms?: string;\n xSpaceId?: string;\n}\n\nexport interface SyncTriggerOperationRequest {\n syncTriggerRequest: SyncTriggerRequest;\n xSpaceId?: string;\n}\n\nexport interface SyncUnlinkOperationRequest {\n syncUnlinkRequest: SyncUnlinkRequest;\n xSpaceId?: string;\n}\n\n/**\n * SyncApi - interface\n * \n * @export\n * @interface SyncApiInterface\n */\nexport interface SyncApiInterface {\n /**\n * Cancellation takes effect at the next campaign boundary.\n * @summary Request cancellation of a running sync\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SyncApiInterface\n */\n syncCancelRaw(requestParameters: SyncCancelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Cancellation takes effect at the next campaign boundary.\n * Request cancellation of a running sync\n */\n syncCancel(requestParameters: SyncCancelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\\'s Space.\n * @summary Get a sync record (status, progress, totals, errors)\n * @param {string} id \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SyncApiInterface\n */\n syncGetRaw(requestParameters: SyncGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\\'s Space.\n * Get a sync record (status, progress, totals, errors)\n */\n syncGet(requestParameters: SyncGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * \n * @summary List recent syncs for the active Space\n * @param {number} [limit] Maximum items to return. Default 50, max 200.\n * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SyncApiInterface\n */\n syncListRaw(requestParameters: SyncListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * List recent syncs for the active Space\n */\n syncList(requestParameters: SyncListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * Computes the import/export/remove plan for the active Space without executing.\n * @summary Preview what a sync would do (dry run)\n * @param {string} [platforms] Comma-separated platform ids (e.g. &#x60;google-ads,microsoft-ads&#x60;). Defaults to all connected platforms.\n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SyncApiInterface\n */\n syncPlanRaw(requestParameters: SyncPlanRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Computes the import/export/remove plan for the active Space without executing.\n * Preview what a sync would do (dry run)\n */\n syncPlan(requestParameters: SyncPlanRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * Pushes the active Space\\'s campaign tree to the connected ad platforms (and imports remote changes). Asynchronous: returns a `syncId` immediately with status `started` (or `nothing_to_sync`). Poll `GET /api/v1/sync/{id}` for progress and errors. Returns 409 CONFLICT (details: { activeSyncId, startedAt }) if a sync is already running in this Space. The platform connection used is account-wide; the campaigns synced are the active Space\\'s.\n * @summary Trigger a sync for the active Space\n * @param {SyncTriggerRequest} syncTriggerRequest \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SyncApiInterface\n */\n syncTriggerRaw(requestParameters: SyncTriggerOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Pushes the active Space\\'s campaign tree to the connected ad platforms (and imports remote changes). Asynchronous: returns a `syncId` immediately with status `started` (or `nothing_to_sync`). Poll `GET /api/v1/sync/{id}` for progress and errors. Returns 409 CONFLICT (details: { activeSyncId, startedAt }) if a sync is already running in this Space. The platform connection used is account-wide; the campaigns synced are the active Space\\'s.\n * Trigger a sync for the active Space\n */\n syncTrigger(requestParameters: SyncTriggerOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n /**\n * Clears the platform link (and optionally removes the remote campaign) while keeping the local campaign. Returns a per-id result map; already-unlinked ids report `not_linked`. Unlink then sync to re-create campaigns cleanly on the platform.\n * @summary Unlink the active Space\\'s campaigns from a platform\n * @param {SyncUnlinkRequest} syncUnlinkRequest \n * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof SyncApiInterface\n */\n syncUnlinkRaw(requestParameters: SyncUnlinkOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;\n\n /**\n * Clears the platform link (and optionally removes the remote campaign) while keeping the local campaign. Returns a per-id result map; already-unlinked ids report `not_linked`. Unlink then sync to re-create campaigns cleanly on the platform.\n * Unlink the active Space\\'s campaigns from a platform\n */\n syncUnlink(requestParameters: SyncUnlinkOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;\n\n}\n\n/**\n * \n */\nexport class SyncApi extends runtime.BaseAPI implements SyncApiInterface {\n\n /**\n * Cancellation takes effect at the next campaign boundary.\n * Request cancellation of a running sync\n */\n async syncCancelRaw(requestParameters: SyncCancelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling syncCancel().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sync:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sync/{id}/cancel`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Cancellation takes effect at the next campaign boundary.\n * Request cancellation of a running sync\n */\n async syncCancel(requestParameters: SyncCancelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.syncCancelRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\\'s Space.\n * Get a sync record (status, progress, totals, errors)\n */\n async syncGetRaw(requestParameters: SyncGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling syncGet().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sync:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sync/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id']))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\\'s Space.\n * Get a sync record (status, progress, totals, errors)\n */\n async syncGet(requestParameters: SyncGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.syncGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * List recent syncs for the active Space\n */\n async syncListRaw(requestParameters: SyncListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sync:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sync`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * List recent syncs for the active Space\n */\n async syncList(requestParameters: SyncListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.syncListRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Computes the import/export/remove plan for the active Space without executing.\n * Preview what a sync would do (dry run)\n */\n async syncPlanRaw(requestParameters: SyncPlanRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n const queryParameters: any = {};\n\n if (requestParameters['platforms'] != null) {\n queryParameters['platforms'] = requestParameters['platforms'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sync:read\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sync/plan`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Computes the import/export/remove plan for the active Space without executing.\n * Preview what a sync would do (dry run)\n */\n async syncPlan(requestParameters: SyncPlanRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.syncPlanRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Pushes the active Space\\'s campaign tree to the connected ad platforms (and imports remote changes). Asynchronous: returns a `syncId` immediately with status `started` (or `nothing_to_sync`). Poll `GET /api/v1/sync/{id}` for progress and errors. Returns 409 CONFLICT (details: { activeSyncId, startedAt }) if a sync is already running in this Space. The platform connection used is account-wide; the campaigns synced are the active Space\\'s.\n * Trigger a sync for the active Space\n */\n async syncTriggerRaw(requestParameters: SyncTriggerOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['syncTriggerRequest'] == null) {\n throw new runtime.RequiredError(\n 'syncTriggerRequest',\n 'Required parameter \"syncTriggerRequest\" was null or undefined when calling syncTrigger().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sync:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sync`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SyncTriggerRequestToJSON(requestParameters['syncTriggerRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Pushes the active Space\\'s campaign tree to the connected ad platforms (and imports remote changes). Asynchronous: returns a `syncId` immediately with status `started` (or `nothing_to_sync`). Poll `GET /api/v1/sync/{id}` for progress and errors. Returns 409 CONFLICT (details: { activeSyncId, startedAt }) if a sync is already running in this Space. The platform connection used is account-wide; the campaigns synced are the active Space\\'s.\n * Trigger a sync for the active Space\n */\n async syncTrigger(requestParameters: SyncTriggerOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.syncTriggerRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Clears the platform link (and optionally removes the remote campaign) while keeping the local campaign. Returns a per-id result map; already-unlinked ids report `not_linked`. Unlink then sync to re-create campaigns cleanly on the platform.\n * Unlink the active Space\\'s campaigns from a platform\n */\n async syncUnlinkRaw(requestParameters: SyncUnlinkOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {\n if (requestParameters['syncUnlinkRequest'] == null) {\n throw new runtime.RequiredError(\n 'syncUnlinkRequest',\n 'Required parameter \"syncUnlinkRequest\" was null or undefined when calling syncUnlink().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xSpaceId'] != null) {\n headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"ApiToken\", [\"sync:write\"]);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const response = await this.request({\n path: `/api/v1/sync/unlink`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SyncUnlinkRequestToJSON(requestParameters['syncUnlinkRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));\n }\n\n /**\n * Clears the platform link (and optionally removes the remote campaign) while keeping the local campaign. Returns a per-id result map; already-unlinked ids report `not_linked`. Unlink then sync to re-create campaigns cleanly on the platform.\n * Unlink the active Space\\'s campaigns from a platform\n */\n async syncUnlink(requestParameters: SyncUnlinkOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {\n const response = await this.syncUnlinkRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","// Defo Ads — official TypeScript SDK (US-ADS-267).\n//\n// A thin, hand-written façade over the OpenAPI-generated core (./generated). It\n// gives you the ergonomic surface — `new DefoAds({ token }).campaigns.list()` —\n// with bearer auth, a default Space header, cursor auto-pagination, retry-on-429\n// (honoring Retry-After) and typed errors, while the generated core (regenerated\n// from the spec on every release) does the wire work and stays byte-true to the\n// API contract.\n//\n// Quick start:\n// import { DefoAds } from '@defoai/ads-client';\n// const defo = new DefoAds({ token: process.env.DEFOADS_TOKEN!, space: 'spc_…' });\n// const campaigns = await defo.campaigns.list(); // first page\n// for await (const c of defo.campaigns.listAll()) { … } // every page\n// const created = await defo.campaigns.create({ name: 'Launch', budget: 50 });\n\nimport {\n Configuration,\n CampaignsApi, AdGroupsApi, AdsApi, KeywordsApi, SitesApi, AssetsApi,\n CampaignAssetsApi, AdAssetsApi, MediaApi, ReportsApi, SyncApi, MetaApi,\n type Middleware,\n type CampaignCreate, type CampaignUpdate,\n type AdGroupCreate, type AdGroupUpdate,\n type AdCreate, type AdUpdate,\n type KeywordCreate, type KeywordUpdate,\n type SiteCreate, type SiteUpdate,\n type AssetCreate, type AssetUpdate,\n type CampaignAssetCreate, type AdAssetCreate,\n type SyncTriggerRequest, type SyncUnlinkRequest,\n} from './generated';\n\n/** The production base URL. Override via `baseUrl` (e.g. for staging). */\nexport const PRODUCTION_BASE_URL = 'https://api.ads.defoai.com';\nexport const STAGING_BASE_URL = 'https://api-ads-staging.defoai.com';\n\nexport interface DefoAdsOptions {\n /** A Defo Ads personal access token (`dads_…`). Required. */\n token: string;\n /** Default Space id (`spc_…`) sent as `X-Space-Id` on every call. Omit to use your Personal Space. */\n space?: string;\n /** Base URL. Defaults to production. Use {@link STAGING_BASE_URL} for staging. */\n baseUrl?: string;\n /** Max automatic retries on 429 / 5xx. Default 3. */\n maxRetries?: number;\n /** Inject a fetch implementation (handy for tests / non-global-fetch runtimes). */\n fetch?: typeof fetch;\n}\n\n// ---- Typed errors -------------------------------------------------------------\n/** Base error for any non-2xx response; carries the API's `{ code, message, details }`. */\nexport class DefoAdsError extends Error {\n readonly status: number;\n readonly code?: string;\n readonly details?: unknown;\n constructor(status: number, code: string | undefined, message: string, details?: unknown) {\n super(message);\n this.name = 'DefoAdsError';\n this.status = status;\n this.code = code;\n this.details = details;\n }\n}\n/** 401 — missing/invalid token. */ export class AuthError extends DefoAdsError { override name = 'AuthError'; }\n/** 403 — token lacks the required scope or Space membership. */ export class ForbiddenError extends DefoAdsError { override name = 'ForbiddenError'; }\n/** 404 — resource not found (or outside your Space). */ export class NotFoundError extends DefoAdsError { override name = 'NotFoundError'; }\n/** 409 — conflict (e.g. delete blocked by dependents, or a sync already running). */ export class ConflictError extends DefoAdsError { override name = 'ConflictError'; }\n/** 429 — rate limited. The SDK already retried up to `maxRetries`. */ export class RateLimitError extends DefoAdsError { override name = 'RateLimitError'; }\n\nfunction toTypedError(status: number, code: string | undefined, message: string, details?: unknown): DefoAdsError {\n const msg = message || `HTTP ${status}`;\n switch (status) {\n case 401: return new AuthError(status, code, msg, details);\n case 403: return new ForbiddenError(status, code, msg, details);\n case 404: return new NotFoundError(status, code, msg, details);\n case 409: return new ConflictError(status, code, msg, details);\n case 429: return new RateLimitError(status, code, msg, details);\n default: return new DefoAdsError(status, code, msg, details);\n }\n}\n\n// ---- fetch with retry/backoff (honors Retry-After) ---------------------------\nfunction retryingFetch(baseFetch: typeof fetch, maxRetries: number): typeof fetch {\n return async (input: any, init?: any): Promise<Response> => {\n const method = (init?.method || 'GET').toUpperCase();\n const idempotent = method === 'GET' || method === 'PUT' || method === 'DELETE';\n let attempt = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const res = await baseFetch(input, init);\n const retryable = res.status === 429 || (res.status >= 500 && idempotent);\n if (!retryable || attempt >= maxRetries) return res;\n const retryAfter = res.headers.get('retry-after');\n const waitMs = retryAfter\n ? Number(retryAfter) * 1000\n : Math.min(2 ** attempt * 500, 8000);\n await new Promise((r) => setTimeout(r, Number.isFinite(waitMs) ? waitMs : 1000));\n attempt += 1;\n }\n };\n}\n\n// Throw a typed error on any 4xx/5xx, parsing the `ErrorEnvelope`, BEFORE the\n// generated core raises its generic ResponseError.\nconst errorMiddleware: Middleware = {\n post: async ({ response }) => {\n if (response.status >= 400) {\n let code: string | undefined;\n let message = response.statusText;\n let details: unknown;\n try {\n const body: any = await response.clone().json();\n code = body?.error?.code;\n message = body?.error?.message ?? message;\n details = body?.error?.details;\n } catch { /* non-JSON error body */ }\n throw toTypedError(response.status, code, message, details);\n }\n return response;\n },\n};\n\n// ---- generic resource factory ------------------------------------------------\n// Every generated method takes a single request-params object and returns a\n// SuccessEnvelope `{ data, meta }`; the façade unwraps `.data` and threads the\n// default Space + cursor pagination. Input bodies stay fully typed (C/U); list\n// responses are arrays (the envelope's `data` is contract-untyped today).\nconst data = (env: any) => env?.data;\n\ninterface ListParams { limit?: number; cursor?: string | number }\n\nfunction crudResource<C, U>(api: any, prefix: string, createKey: string, updateKey: string) {\n return {\n /** List one page (default 50, max 200). */\n list: (params: ListParams = {}): Promise<any[]> => api[`${prefix}List`]({ ...params }).then(data),\n /** Async-iterate EVERY item across all pages (follows `meta.nextCursor`). */\n async *listAll(params: ListParams = {}): AsyncGenerator<any> {\n let cursor = params.cursor;\n do {\n const env = await api[`${prefix}List`]({ ...params, cursor });\n for (const item of env.data ?? []) yield item;\n cursor = env.meta?.nextCursor ?? undefined;\n } while (cursor);\n },\n /** Fetch one by id. */\n get: (id: string): Promise<any> => api[`${prefix}Get`]({ id }).then(data),\n /** Create. */\n create: (body: C): Promise<any> => api[`${prefix}Create`]({ [createKey]: body }).then(data),\n /** Partial update by id. */\n update: (id: string, body: U): Promise<any> => api[`${prefix}Update`]({ id, [updateKey]: body }).then(data),\n /** Delete by id. */\n delete: (id: string): Promise<any> => api[`${prefix}Delete`]({ id }).then(data),\n };\n}\n\n/** The Defo Ads client. Construct once, reuse everywhere. */\nexport class DefoAds {\n readonly campaigns; readonly adGroups; readonly ads; readonly keywords;\n readonly sites; readonly assets; readonly campaignAssets; readonly adAssets;\n readonly media; readonly reports; readonly sync; readonly meta;\n\n constructor(options: DefoAdsOptions) {\n if (!options?.token) throw new Error('DefoAds: `token` is required (a dads_… personal access token).');\n const baseFetch = options.fetch ?? globalThis.fetch;\n if (!baseFetch) throw new Error('DefoAds: no global fetch — pass `fetch` in options (Node < 18).');\n\n const config = new Configuration({\n basePath: options.baseUrl ?? PRODUCTION_BASE_URL,\n accessToken: options.token, // → Authorization: Bearer <token>\n headers: options.space ? { 'X-Space-Id': options.space } : {},\n fetchApi: retryingFetch(baseFetch, options.maxRetries ?? 3),\n middleware: [errorMiddleware],\n });\n\n this.campaigns = crudResource<CampaignCreate, CampaignUpdate>(new CampaignsApi(config), 'campaigns', 'campaignCreate', 'campaignUpdate');\n this.adGroups = crudResource<AdGroupCreate, AdGroupUpdate>(new AdGroupsApi(config), 'adGroups', 'adGroupCreate', 'adGroupUpdate');\n this.ads = crudResource<AdCreate, AdUpdate>(new AdsApi(config), 'ads', 'adCreate', 'adUpdate');\n this.keywords = crudResource<KeywordCreate, KeywordUpdate>(new KeywordsApi(config), 'keywords', 'keywordCreate', 'keywordUpdate');\n this.sites = crudResource<SiteCreate, SiteUpdate>(new SitesApi(config), 'sites', 'siteCreate', 'siteUpdate');\n this.assets = crudResource<AssetCreate, AssetUpdate>(new AssetsApi(config), 'assets', 'assetCreate', 'assetUpdate');\n\n // Binding-only resources (no full CRUD).\n const campaignAssetsApi = new CampaignAssetsApi(config);\n this.campaignAssets = {\n list: (p: ListParams & { campaignId?: string; assetId?: string } = {}) => campaignAssetsApi.campaignAssetsList(p as any).then(data),\n get: (id: string) => campaignAssetsApi.campaignAssetsGet({ id }).then(data),\n create: (body: CampaignAssetCreate) => campaignAssetsApi.campaignAssetsCreate({ campaignAssetCreate: body }).then(data),\n delete: (id: string) => campaignAssetsApi.campaignAssetsDelete({ id }).then(data),\n };\n const adAssetsApi = new AdAssetsApi(config);\n this.adAssets = {\n list: (p: ListParams & { adId?: string; adGroupId?: string; campaignId?: string; role?: string } = {}) => adAssetsApi.adAssetsList(p as any).then(data),\n get: (id: string) => adAssetsApi.adAssetsGet({ id }).then(data),\n create: (body: AdAssetCreate) => adAssetsApi.adAssetsCreate({ adAssetCreate: body }).then(data),\n delete: (id: string) => adAssetsApi.adAssetsDelete({ id }).then(data),\n };\n\n const mediaApi = new MediaApi(config);\n this.media = { matrix: () => mediaApi.mediaMatrix().then(data) };\n\n const reportsApi = new ReportsApi(config);\n this.reports = {\n /** Performance stats; see the reference for `date_range`, `group_by`, `metrics`, etc. */\n stats: (params: Record<string, any> = {}) => reportsApi.reportsStats(params as any).then(data),\n };\n\n const syncApi = new SyncApi(config);\n this.sync = {\n /** Trigger a sync for the active Space (async — poll `get(syncId)`). */\n trigger: (body: SyncTriggerRequest = {}) => syncApi.syncTrigger({ syncTriggerRequest: body }).then(data),\n list: (p: ListParams = {}) => syncApi.syncList(p).then(data),\n /** Dry-run plan (import/export/remove) without executing. */\n plan: (p: { platforms?: string } = {}) => syncApi.syncPlan(p as any).then(data),\n get: (id: string) => syncApi.syncGet({ id }).then(data),\n cancel: (id: string) => syncApi.syncCancel({ id }).then(data),\n /** Unlink campaigns from a platform (keeps the local campaign). */\n unlink: (body: SyncUnlinkRequest) => syncApi.syncUnlink({ syncUnlinkRequest: body }).then(data),\n };\n\n const metaApi = new MetaApi(config);\n this.meta = {\n /** Introspect the authenticated token. */\n me: () => metaApi.meGet().then(data),\n /** List Spaces the token can access. */\n spaces: () => metaApi.spacesList().then(data),\n };\n }\n}\n\nexport default DefoAds;\n"]}