@things-factory/sales-base 4.3.0 → 4.4.0-alpha.0

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 (173) hide show
  1. package/dist-server/constants/attachment-type.js +1 -2
  2. package/dist-server/constants/attachment-type.js.map +1 -1
  3. package/dist-server/constants/index.js +5 -2
  4. package/dist-server/constants/index.js.map +1 -1
  5. package/dist-server/constants/order.js +3 -12
  6. package/dist-server/constants/order.js.map +1 -1
  7. package/dist-server/controllers/ecommerce/index.js +5 -1
  8. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  9. package/dist-server/controllers/index.js +5 -1
  10. package/dist-server/controllers/index.js.map +1 -1
  11. package/dist-server/errors/index.js +5 -1
  12. package/dist-server/errors/index.js.map +1 -1
  13. package/dist-server/errors/validation-error.js +5 -1
  14. package/dist-server/errors/validation-error.js.map +1 -1
  15. package/dist-server/index.js +5 -1
  16. package/dist-server/index.js.map +1 -1
  17. package/dist-server/service/arrival-notice/index.js +5 -1
  18. package/dist-server/service/arrival-notice/index.js.map +1 -1
  19. package/dist-server/service/claim/index.js +5 -1
  20. package/dist-server/service/claim/index.js.map +1 -1
  21. package/dist-server/service/claim-detail/index.js +5 -1
  22. package/dist-server/service/claim-detail/index.js.map +1 -1
  23. package/dist-server/service/claim-order/index.js +5 -1
  24. package/dist-server/service/claim-order/index.js.map +1 -1
  25. package/dist-server/service/collection-order/index.js +5 -1
  26. package/dist-server/service/collection-order/index.js.map +1 -1
  27. package/dist-server/service/delivery-order/index.js +5 -1
  28. package/dist-server/service/delivery-order/index.js.map +1 -1
  29. package/dist-server/service/goods-receival-note/index.js +5 -1
  30. package/dist-server/service/goods-receival-note/index.js.map +1 -1
  31. package/dist-server/service/index.js +24 -48
  32. package/dist-server/service/index.js.map +1 -1
  33. package/dist-server/service/inventory-check/index.js +5 -1
  34. package/dist-server/service/inventory-check/index.js.map +1 -1
  35. package/dist-server/service/invoice/index.js +5 -1
  36. package/dist-server/service/invoice/index.js.map +1 -1
  37. package/dist-server/service/invoice-product/index.js +5 -1
  38. package/dist-server/service/invoice-product/index.js.map +1 -1
  39. package/dist-server/service/job-sheet/index.js +5 -1
  40. package/dist-server/service/job-sheet/index.js.map +1 -1
  41. package/dist-server/service/order-inventory/index.js +5 -1
  42. package/dist-server/service/order-inventory/index.js.map +1 -1
  43. package/dist-server/service/order-inventory/order-inventory-query.js +1 -38
  44. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  45. package/dist-server/service/order-inventory/order-inventory-types.js +1 -9
  46. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  47. package/dist-server/service/order-inventory/order-inventory.js +1 -5
  48. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  49. package/dist-server/service/order-product/index.js +5 -1
  50. package/dist-server/service/order-product/index.js.map +1 -1
  51. package/dist-server/service/order-product/order-product-types.js +13 -13
  52. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  53. package/dist-server/service/order-product/order-product.js +4 -39
  54. package/dist-server/service/order-product/order-product.js.map +1 -1
  55. package/dist-server/service/order-vas/index.js +5 -1
  56. package/dist-server/service/order-vas/index.js.map +1 -1
  57. package/dist-server/service/others/index.js +5 -1
  58. package/dist-server/service/others/index.js.map +1 -1
  59. package/dist-server/service/others/other-query.js +2 -37
  60. package/dist-server/service/others/other-query.js.map +1 -1
  61. package/dist-server/service/purchase-order/index.js +5 -1
  62. package/dist-server/service/purchase-order/index.js.map +1 -1
  63. package/dist-server/service/purchase-order-other-charge/index.js +5 -1
  64. package/dist-server/service/purchase-order-other-charge/index.js.map +1 -1
  65. package/dist-server/service/release-good/index.js +5 -1
  66. package/dist-server/service/release-good/index.js.map +1 -1
  67. package/dist-server/service/release-good/release-good-mutation.js +1 -23
  68. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  69. package/dist-server/service/release-good/release-good-query.js +2 -28
  70. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  71. package/dist-server/service/release-good/release-good.js +12 -32
  72. package/dist-server/service/release-good/release-good.js.map +1 -1
  73. package/dist-server/service/retail-replenishment-order/index.js +5 -1
  74. package/dist-server/service/retail-replenishment-order/index.js.map +1 -1
  75. package/dist-server/service/return-order/index.js +5 -1
  76. package/dist-server/service/return-order/index.js.map +1 -1
  77. package/dist-server/service/reverse-kitting-order/index.js +5 -1
  78. package/dist-server/service/reverse-kitting-order/index.js.map +1 -1
  79. package/dist-server/service/reverse-kitting-order-inventory/index.js +5 -1
  80. package/dist-server/service/reverse-kitting-order-inventory/index.js.map +1 -1
  81. package/dist-server/service/shipping-order/index.js +5 -1
  82. package/dist-server/service/shipping-order/index.js.map +1 -1
  83. package/dist-server/service/transfer-order/index.js +5 -1
  84. package/dist-server/service/transfer-order/index.js.map +1 -1
  85. package/dist-server/service/vas/index.js +5 -1
  86. package/dist-server/service/vas/index.js.map +1 -1
  87. package/dist-server/service/vas-order/index.js +5 -1
  88. package/dist-server/service/vas-order/index.js.map +1 -1
  89. package/dist-server/utils/index.js +5 -1
  90. package/dist-server/utils/index.js.map +1 -1
  91. package/dist-server/utils/inventory-util.js +99 -258
  92. package/dist-server/utils/inventory-util.js.map +1 -1
  93. package/dist-server/utils/order-no-generator.js +0 -7
  94. package/dist-server/utils/order-no-generator.js.map +1 -1
  95. package/package.json +13 -13
  96. package/server/constants/attachment-type.ts +1 -2
  97. package/server/constants/index.ts +0 -1
  98. package/server/constants/order.ts +2 -12
  99. package/server/service/index.ts +21 -51
  100. package/server/service/order-inventory/order-inventory-query.ts +2 -40
  101. package/server/service/order-inventory/order-inventory-types.ts +0 -6
  102. package/server/service/order-inventory/order-inventory.ts +5 -5
  103. package/server/service/order-product/order-product-types.ts +3 -5
  104. package/server/service/order-product/order-product.ts +3 -30
  105. package/server/service/others/other-query.ts +8 -43
  106. package/server/service/release-good/release-good-mutation.ts +2 -24
  107. package/server/service/release-good/release-good-query.ts +30 -57
  108. package/server/service/release-good/release-good.ts +9 -28
  109. package/server/utils/inventory-util.ts +106 -287
  110. package/server/utils/order-no-generator.ts +48 -42
  111. package/dist-server/constants/release-good.js +0 -9
  112. package/dist-server/constants/release-good.js.map +0 -1
  113. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +0 -501
  114. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +0 -1
  115. package/dist-server/service/draft-release-good/draft-release-good-query.js +0 -289
  116. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +0 -1
  117. package/dist-server/service/draft-release-good/draft-release-good-type.js +0 -364
  118. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +0 -1
  119. package/dist-server/service/draft-release-good/draft-release-good.js +0 -321
  120. package/dist-server/service/draft-release-good/draft-release-good.js.map +0 -1
  121. package/dist-server/service/draft-release-good/index.js +0 -21
  122. package/dist-server/service/draft-release-good/index.js.map +0 -1
  123. package/dist-server/service/order-tote/index.js +0 -21
  124. package/dist-server/service/order-tote/index.js.map +0 -1
  125. package/dist-server/service/order-tote/order-tote-mutation.js +0 -56
  126. package/dist-server/service/order-tote/order-tote-mutation.js.map +0 -1
  127. package/dist-server/service/order-tote/order-tote-query.js +0 -123
  128. package/dist-server/service/order-tote/order-tote-query.js.map +0 -1
  129. package/dist-server/service/order-tote/order-tote-types.js +0 -79
  130. package/dist-server/service/order-tote/order-tote-types.js.map +0 -1
  131. package/dist-server/service/order-tote/order-tote.js +0 -91
  132. package/dist-server/service/order-tote/order-tote.js.map +0 -1
  133. package/dist-server/service/order-tote-item/index.js +0 -21
  134. package/dist-server/service/order-tote-item/index.js.map +0 -1
  135. package/dist-server/service/order-tote-item/order-tote-item-mutation.js +0 -56
  136. package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +0 -1
  137. package/dist-server/service/order-tote-item/order-tote-item-query.js +0 -100
  138. package/dist-server/service/order-tote-item/order-tote-item-query.js.map +0 -1
  139. package/dist-server/service/order-tote-item/order-tote-item-types.js +0 -91
  140. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +0 -1
  141. package/dist-server/service/order-tote-item/order-tote-item.js +0 -104
  142. package/dist-server/service/order-tote-item/order-tote-item.js.map +0 -1
  143. package/dist-server/service/order-tote-seal/index.js +0 -21
  144. package/dist-server/service/order-tote-seal/index.js.map +0 -1
  145. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +0 -56
  146. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +0 -1
  147. package/dist-server/service/order-tote-seal/order-tote-seal-query.js +0 -97
  148. package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +0 -1
  149. package/dist-server/service/order-tote-seal/order-tote-seal-types.js +0 -71
  150. package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +0 -1
  151. package/dist-server/service/order-tote-seal/order-tote-seal.js +0 -71
  152. package/dist-server/service/order-tote-seal/order-tote-seal.js.map +0 -1
  153. package/server/constants/release-good.ts +0 -6
  154. package/server/service/draft-release-good/draft-release-good-mutation.ts +0 -671
  155. package/server/service/draft-release-good/draft-release-good-query.ts +0 -314
  156. package/server/service/draft-release-good/draft-release-good-type.ts +0 -261
  157. package/server/service/draft-release-good/draft-release-good.ts +0 -270
  158. package/server/service/draft-release-good/index.ts +0 -9
  159. package/server/service/order-tote/index.ts +0 -9
  160. package/server/service/order-tote/order-tote-mutation.ts +0 -30
  161. package/server/service/order-tote/order-tote-query.ts +0 -114
  162. package/server/service/order-tote/order-tote-types.ts +0 -47
  163. package/server/service/order-tote/order-tote.ts +0 -62
  164. package/server/service/order-tote-item/index.ts +0 -9
  165. package/server/service/order-tote-item/order-tote-item-mutation.ts +0 -30
  166. package/server/service/order-tote-item/order-tote-item-query.ts +0 -88
  167. package/server/service/order-tote-item/order-tote-item-types.ts +0 -56
  168. package/server/service/order-tote-item/order-tote-item.ts +0 -72
  169. package/server/service/order-tote-seal/index.ts +0 -9
  170. package/server/service/order-tote-seal/order-tote-seal-mutation.ts +0 -30
  171. package/server/service/order-tote-seal/order-tote-seal-query.ts +0 -60
  172. package/server/service/order-tote-seal/order-tote-seal-types.ts +0 -41
  173. package/server/service/order-tote-seal/order-tote-seal.ts +0 -46
@@ -1,501 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.upsertDraftReleaseGoodProducts = exports.updateDraftReleaseGoodFunction = exports.createDraftReleaseGoodFunction = exports.upsertDraftReleaseGoodFunction = exports.DraftReleaseGoodMutation = void 0;
16
- const graphql_upload_1 = require("graphql-upload");
17
- const type_graphql_1 = require("type-graphql");
18
- const typeorm_1 = require("typeorm");
19
- const attachment_base_1 = require("@things-factory/attachment-base");
20
- const utils_1 = require("../../utils");
21
- const biz_base_1 = require("@things-factory/biz-base");
22
- const id_rule_base_1 = require("@things-factory/id-rule-base");
23
- const product_base_1 = require("@things-factory/product-base");
24
- const setting_base_1 = require("@things-factory/setting-base");
25
- // import { Location } from '@things-factory/warehouse-base'
26
- const __1 = require("../");
27
- const constants_1 = require("../../constants");
28
- const utils_2 = require("../../utils");
29
- const order_product_types_1 = require("../order-product/order-product-types");
30
- const shipping_order_1 = require("../shipping-order/shipping-order");
31
- const shipping_order_types_1 = require("../shipping-order/shipping-order-types");
32
- // import {
33
- // checkArrivedNoticeFunction,
34
- // confirmArrivalNoticeFunction,
35
- // generateArrivalNoticeFunction,
36
- // receiveArrivalNoticeFunction
37
- // } from '../arrival-notice/arrival-notice-mutation'
38
- const draft_release_good_query_1 = require("./draft-release-good-query");
39
- const release_good_query_1 = require("../release-good/release-good-query");
40
- const release_good_mutation_1 = require("../release-good/release-good-mutation");
41
- const errors_1 = require("../../errors");
42
- let DraftReleaseGoodMutation = class DraftReleaseGoodMutation {
43
- async upsertDraftReleaseGood(context, draftReleaseGood, orderProducts, files, shippingOrder) {
44
- try {
45
- const { tx } = context.state;
46
- const createdDraftReleaseGood = await upsertDraftReleaseGoodFunction(null, draftReleaseGood, orderProducts, shippingOrder, files, context, tx);
47
- return createdDraftReleaseGood;
48
- }
49
- catch (error) {
50
- throw error;
51
- }
52
- }
53
- async createDraftReleaseGood(draftReleaseGood, context) {
54
- const { domain, user, tx } = context.state;
55
- let drg = await tx.getRepository(__1.DraftReleaseGood).save(Object.assign(Object.assign({}, draftReleaseGood), { domain, status: 'INSUFFICIENT', creator: user, updater: user }));
56
- // add order products
57
- return drg;
58
- }
59
- async updateDraftReleaseGood(id, patch, context) {
60
- const { domain, user, tx } = context.state;
61
- const repository = tx.getRepository(__1.DraftReleaseGood);
62
- const draftReleaseGood = await repository.findOne({
63
- where: { domain, id }
64
- });
65
- return await repository.save(Object.assign(Object.assign(Object.assign({}, draftReleaseGood), patch), { updater: user }));
66
- }
67
- async updateMultipleDraftReleaseGood(patches, context) {
68
- const { domain, user, tx } = context.state;
69
- let results = [];
70
- const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
71
- const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
72
- const draftReleaseGoodRepo = tx.getRepository(__1.DraftReleaseGood);
73
- if (_createRecords.length > 0) {
74
- for (let i = 0; i < _createRecords.length; i++) {
75
- const newRecord = _createRecords[i];
76
- const result = await draftReleaseGoodRepo.save(Object.assign(Object.assign({}, newRecord), { domain, creator: user, updater: user }));
77
- results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
78
- }
79
- }
80
- if (_updateRecords.length > 0) {
81
- for (let i = 0; i < _updateRecords.length; i++) {
82
- const newRecord = _updateRecords[i];
83
- const draftReleaseGood = await draftReleaseGoodRepo.findOne(newRecord.id);
84
- const result = await draftReleaseGoodRepo.save(Object.assign(Object.assign(Object.assign({}, draftReleaseGood), newRecord), { updater: user }));
85
- results.push(Object.assign(Object.assign({}, result), { cuFlag: 'M' }));
86
- }
87
- }
88
- return results;
89
- }
90
- async deleteDraftReleaseGood(id, context) {
91
- const { domain, tx } = context.state;
92
- await tx.getRepository(__1.DraftReleaseGood).delete({ domain, id });
93
- return true;
94
- }
95
- async deleteDraftReleaseGoods(ids, context) {
96
- const { domain, tx } = context.state;
97
- await tx.getRepository(__1.DraftReleaseGood).delete({
98
- domain,
99
- id: (0, typeorm_1.In)(ids)
100
- });
101
- return true;
102
- }
103
- async generateReleaseGoodsFromDraft(context, ids) {
104
- var _a;
105
- const { domain, user, tx } = context.state;
106
- const updatableDraftOrders = await tx.getRepository(__1.DraftReleaseGood).find({
107
- where: {
108
- domain,
109
- id: (0, typeorm_1.In)(ids),
110
- status: constants_1.DRAFT_RELEASE_ORDER_STATUS.DRAFT
111
- },
112
- relations: [
113
- 'orderProducts',
114
- 'orderProducts.product',
115
- 'orderProducts.productBundle',
116
- 'shippingOrder',
117
- 'bizplace',
118
- 'domain',
119
- 'creator',
120
- 'updater'
121
- ]
122
- });
123
- if (updatableDraftOrders.length > 0) {
124
- let createdReleaseGoods = [];
125
- const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
126
- const roNoSetting = await settingRepo.findOne({
127
- where: {
128
- domain,
129
- name: constants_1.ORDER_NUMBER_SETTING_KEY.RO_NUMBER_RULE
130
- }
131
- });
132
- for (let index = 0; index < updatableDraftOrders.length; index++) {
133
- const draftOrder = updatableDraftOrders[index];
134
- let foundPermittedBizplace;
135
- let companyBizplace;
136
- if ((_a = draftOrder === null || draftOrder === void 0 ? void 0 : draftOrder.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
137
- foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(draftOrder.bizplace.id, {
138
- relations: ['company', 'company.domain']
139
- });
140
- const companyDomain = foundPermittedBizplace.company.domain;
141
- companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
142
- }
143
- else {
144
- return false;
145
- }
146
- const bizplaces = [foundPermittedBizplace, companyBizplace];
147
- let productInventory = await utils_1.InventoryUtil.bizplaceProductInventory(bizplaces, {
148
- filters: [{
149
- name: 'productId',
150
- operator: 'in',
151
- value: [
152
- ...draftOrder.orderProducts.filter(itm => itm === null || itm === void 0 ? void 0 : itm.product).map(itm => { return itm.product.id; }),
153
- ...draftOrder.orderProducts.filter(itm => itm === null || itm === void 0 ? void 0 : itm.productBundle).map(itm => { return itm.productBundle.id; })
154
- ]
155
- }]
156
- }, context, tx);
157
- draftOrder.orderProducts = draftOrder.orderProducts.map(itm => {
158
- let foundProductInv = productInventory.items.find(i => { var _a, _b; return (i.productId == ((_a = itm === null || itm === void 0 ? void 0 : itm.product) === null || _a === void 0 ? void 0 : _a.id) || i.productId == ((_b = itm === null || itm === void 0 ? void 0 : itm.productBundle) === null || _b === void 0 ? void 0 : _b.id)) && i.packingType == itm.packingType && i.packingSize == itm.packingSize && i.uom == itm.uom && itm.releaseQty <= i.remainQty; });
159
- return Object.assign(Object.assign({}, itm), { status: foundProductInv ? 'suffice' : 'insufficient' });
160
- });
161
- let insufficient = draftOrder.orderProducts.find(op => op.status == 'insufficient');
162
- if (!insufficient) {
163
- //create RO
164
- let releaseGood = Object.assign({}, draftOrder);
165
- delete releaseGood.id;
166
- delete releaseGood.name;
167
- delete releaseGood.createdAt;
168
- delete releaseGood.createdBy;
169
- delete releaseGood.updatedAt;
170
- delete releaseGood.updatedBy;
171
- let orderInventories = [];
172
- for (let index = 0; index < draftOrder.orderProducts.length; index++) {
173
- const itm = draftOrder.orderProducts[index];
174
- let data = [];
175
- if (itm.productBundle) {
176
- let bundle = await tx.getRepository(product_base_1.ProductBundle).findOne({ where: { id: itm.productBundle.id }, relations: ['productBundleSettings', 'productBundleSettings.productDetail', 'productBundleSettings.product',] });
177
- for (let index2 = 0; index2 < bundle.productBundleSettings.length; index2++) {
178
- const objProductBundleSetting = bundle.productBundleSettings[index2];
179
- data.push({
180
- sku: objProductBundleSetting.product.sku,
181
- packing_type: objProductBundleSetting.productDetail.packingType,
182
- packing_size: objProductBundleSetting.productDetail.packingSize,
183
- uom: objProductBundleSetting.productDetail.uom,
184
- release_qty: objProductBundleSetting.bundleQty * itm.releaseQty,
185
- assignedQty: undefined,
186
- assignedUomValue: undefined,
187
- releaseUomValue: undefined
188
- });
189
- }
190
- }
191
- else {
192
- data = [{
193
- sku: itm.product.sku,
194
- packing_type: itm.packingType,
195
- packing_size: itm.packingSize,
196
- uom: itm.uom,
197
- release_qty: itm.releaseQty,
198
- assignedQty: undefined,
199
- assignedUomValue: undefined,
200
- releaseUomValue: undefined
201
- }];
202
- }
203
- data.forEach(data => {
204
- let existingOI = orderInventories.find(itm => itm.sku == data.sku &&
205
- itm.packing_type == data.packing_type &&
206
- itm.packing_size == data.packing_size &&
207
- itm.uom == data.uom);
208
- if (existingOI) {
209
- existingOI.release_qty = existingOI.release_qty + data.release_qty;
210
- }
211
- else {
212
- orderInventories.push(data);
213
- }
214
- });
215
- }
216
- try {
217
- await (0, typeorm_1.getConnection)().transaction(async (childTx) => {
218
- let availableItems = await (0, release_good_query_1.bulkReleaseGoodsAvailableItemsFunction)(orderInventories, draftOrder.bizplace.id, context, childTx);
219
- if (availableItems.some(item => !item.release_qty || item.release_qty > item.assignedQty))
220
- throw new errors_1.ValidationError(Object.assign(Object.assign({}, errors_1.ValidationError.ERROR_CODES.INSUFFICIENT_STOCK), { detail: { data: JSON.stringify(availableItems) } }));
221
- // update orderInventories if availableItems are valid
222
- releaseGood.orderInventories = availableItems.map(itm => {
223
- return Object.assign(Object.assign({}, itm), { releaseQty: itm.release_qty });
224
- });
225
- let createdReleaseGood = await (0, release_good_mutation_1.bulkGenerateReleaseGood)(releaseGood, releaseGood.bizplace.id, roNoSetting, domain, user, childTx);
226
- await childTx
227
- .getRepository(__1.DraftReleaseGood)
228
- .update({ id: draftOrder.id }, { releaseGood: createdReleaseGood, status: constants_1.DRAFT_RELEASE_ORDER_STATUS.SUBMITTED });
229
- createdReleaseGood = await (0, release_good_mutation_1.confirmReleaseGood)(createdReleaseGood.name, context, childTx);
230
- });
231
- }
232
- catch (error) {
233
- console.error(error);
234
- }
235
- }
236
- }
237
- }
238
- return true;
239
- }
240
- };
241
- __decorate([
242
- (0, type_graphql_1.Directive)('@privilege(category: "order_customer", privilege: "mutation")'),
243
- (0, type_graphql_1.Directive)('@transaction'),
244
- (0, type_graphql_1.Mutation)(returns => __1.DraftReleaseGood),
245
- __param(0, (0, type_graphql_1.Ctx)()),
246
- __param(1, (0, type_graphql_1.Arg)('draftReleaseGood', type => __1.DraftReleaseGoodPatch)),
247
- __param(2, (0, type_graphql_1.Arg)('orderProducts', type => [order_product_types_1.OrderProductPatch])),
248
- __param(3, (0, type_graphql_1.Arg)('files', type => [graphql_upload_1.GraphQLUpload], { nullable: true })),
249
- __param(4, (0, type_graphql_1.Arg)('shippingOrder', type => shipping_order_types_1.ShippingOrderPatch, { nullable: true })),
250
- __metadata("design:type", Function),
251
- __metadata("design:paramtypes", [Object, __1.DraftReleaseGoodPatch, Array, Array, shipping_order_types_1.ShippingOrderPatch]),
252
- __metadata("design:returntype", Promise)
253
- ], DraftReleaseGoodMutation.prototype, "upsertDraftReleaseGood", null);
254
- __decorate([
255
- (0, type_graphql_1.Directive)('@transaction'),
256
- (0, type_graphql_1.Mutation)(returns => __1.DraftReleaseGood, { description: 'To create new DraftReleaseGood' }),
257
- __param(0, (0, type_graphql_1.Arg)('draftReleaseGood', type => __1.NewDraftReleaseGood, { nullable: true })),
258
- __param(1, (0, type_graphql_1.Ctx)()),
259
- __metadata("design:type", Function),
260
- __metadata("design:paramtypes", [__1.NewDraftReleaseGood, Object]),
261
- __metadata("design:returntype", Promise)
262
- ], DraftReleaseGoodMutation.prototype, "createDraftReleaseGood", null);
263
- __decorate([
264
- (0, type_graphql_1.Directive)('@transaction'),
265
- (0, type_graphql_1.Mutation)(returns => __1.DraftReleaseGood, { description: 'To modify DraftReleaseGood information' }),
266
- __param(0, (0, type_graphql_1.Arg)('id')),
267
- __param(1, (0, type_graphql_1.Arg)('patch', type => __1.DraftReleaseGoodPatch)),
268
- __param(2, (0, type_graphql_1.Ctx)()),
269
- __metadata("design:type", Function),
270
- __metadata("design:paramtypes", [String, __1.DraftReleaseGoodPatch, Object]),
271
- __metadata("design:returntype", Promise)
272
- ], DraftReleaseGoodMutation.prototype, "updateDraftReleaseGood", null);
273
- __decorate([
274
- (0, type_graphql_1.Directive)('@transaction'),
275
- (0, type_graphql_1.Mutation)(returns => [__1.DraftReleaseGood], { description: "To modify multiple DraftReleaseGoods' information" }),
276
- __param(0, (0, type_graphql_1.Arg)('patches', type => [__1.DraftReleaseGoodPatch])),
277
- __param(1, (0, type_graphql_1.Ctx)()),
278
- __metadata("design:type", Function),
279
- __metadata("design:paramtypes", [Array, Object]),
280
- __metadata("design:returntype", Promise)
281
- ], DraftReleaseGoodMutation.prototype, "updateMultipleDraftReleaseGood", null);
282
- __decorate([
283
- (0, type_graphql_1.Directive)('@transaction'),
284
- (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete DraftReleaseGood' }),
285
- __param(0, (0, type_graphql_1.Arg)('id')),
286
- __param(1, (0, type_graphql_1.Ctx)()),
287
- __metadata("design:type", Function),
288
- __metadata("design:paramtypes", [String, Object]),
289
- __metadata("design:returntype", Promise)
290
- ], DraftReleaseGoodMutation.prototype, "deleteDraftReleaseGood", null);
291
- __decorate([
292
- (0, type_graphql_1.Directive)('@transaction'),
293
- (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete multiple draftReleaseGoods' }),
294
- __param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
295
- __param(1, (0, type_graphql_1.Ctx)()),
296
- __metadata("design:type", Function),
297
- __metadata("design:paramtypes", [Array, Object]),
298
- __metadata("design:returntype", Promise)
299
- ], DraftReleaseGoodMutation.prototype, "deleteDraftReleaseGoods", null);
300
- __decorate([
301
- (0, type_graphql_1.Directive)('@privilege(category: "order_customer", privilege: "mutation")'),
302
- (0, type_graphql_1.Directive)('@transaction'),
303
- (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To generate Release Goods from Draft' }),
304
- __param(0, (0, type_graphql_1.Ctx)()),
305
- __param(1, (0, type_graphql_1.Arg)('ids', type => [String])),
306
- __metadata("design:type", Function),
307
- __metadata("design:paramtypes", [Object, Array]),
308
- __metadata("design:returntype", Promise)
309
- ], DraftReleaseGoodMutation.prototype, "generateReleaseGoodsFromDraft", null);
310
- DraftReleaseGoodMutation = __decorate([
311
- (0, type_graphql_1.Resolver)(__1.DraftReleaseGood)
312
- ], DraftReleaseGoodMutation);
313
- exports.DraftReleaseGoodMutation = DraftReleaseGoodMutation;
314
- async function upsertDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx) {
315
- if (!draftReleaseGood.id) {
316
- draftReleaseGood = await createDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx);
317
- }
318
- else {
319
- draftReleaseGood = await updateDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx);
320
- }
321
- return draftReleaseGood;
322
- }
323
- exports.upsertDraftReleaseGoodFunction = upsertDraftReleaseGoodFunction;
324
- async function createDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx) {
325
- var _a;
326
- const { domain, user } = context.state;
327
- let myBizplace;
328
- let orderNo = '';
329
- let arrError = [];
330
- const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
331
- if ((_a = draftReleaseGood === null || draftReleaseGood === void 0 ? void 0 : draftReleaseGood.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
332
- const permittedBizplaces = await (0, biz_base_1.getPermittedBizplaces)(domain, user);
333
- let foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == draftReleaseGood.bizplace.id);
334
- if (!foundPermittedBizplace)
335
- throw new Error(`This user does not permitted for this company`);
336
- draftReleaseGood.bizplace = foundPermittedBizplace;
337
- }
338
- else {
339
- arrError.push(`No bizplace was selected`);
340
- }
341
- if (arrError.length > 0) {
342
- throw new Error(arrError.join(', '));
343
- }
344
- // // find DRO number rule setting
345
- const droNoSetting = await settingRepo.findOne({
346
- where: {
347
- domain,
348
- name: constants_1.ORDER_NUMBER_SETTING_KEY.PO_NUMBER_RULE
349
- }
350
- });
351
- if (droNoSetting) {
352
- orderNo = await (0, id_rule_base_1.generateId)({ domain, type: constants_1.ORDER_NUMBER_RULE_TYPE.DRO_NUMBER, seed: {} });
353
- }
354
- else {
355
- orderNo = utils_2.OrderNoGenerator.draftReleaseGood();
356
- }
357
- // // 1. Create draft release good
358
- const createdDraftReleaseGood = await tx.getRepository(__1.DraftReleaseGood).save(Object.assign(Object.assign({}, draftReleaseGood), { name: orderNo, status: constants_1.DRAFT_RELEASE_ORDER_STATUS.DRAFT, domain, creator: user, updater: user }));
359
- // // 2. Create draft release good product
360
- await upsertDraftReleaseGoodProducts(domain, draftReleaseGood.bizplace, createdDraftReleaseGood, orderProducts, user, tx);
361
- // // 3. Create Attachments
362
- if (files === null || files === void 0 ? void 0 : files.length) {
363
- const attachments = files.map(attachment => {
364
- return {
365
- file: attachment,
366
- refBy: createdDraftReleaseGood.id,
367
- category: constants_1.ATTACHMENT_TYPE.DGRN
368
- };
369
- });
370
- await (0, attachment_base_1.createAttachments)(_, { attachments }, context);
371
- }
372
- return createdDraftReleaseGood;
373
- }
374
- exports.createDraftReleaseGoodFunction = createDraftReleaseGoodFunction;
375
- async function updateDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx) {
376
- var _a;
377
- const { domain, user } = context.state;
378
- let existingDraftReleaseGood = await (0, draft_release_good_query_1.getDraftReleaseGoodFunction)(_, draftReleaseGood.name, context, tx);
379
- if ((_a = draftReleaseGood === null || draftReleaseGood === void 0 ? void 0 : draftReleaseGood.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
380
- const permittedBizplaces = await (0, biz_base_1.getPermittedBizplaces)(domain, user);
381
- let foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == draftReleaseGood.bizplace.id);
382
- if (!foundPermittedBizplace)
383
- throw new Error(`This user does not permitted for this company`);
384
- draftReleaseGood.bizplace = foundPermittedBizplace;
385
- }
386
- if (shippingOrder) {
387
- // case to update existing shippingOrder
388
- if (existingDraftReleaseGood.shippingOrder) {
389
- await tx.getRepository(shipping_order_1.ShippingOrder).update(existingDraftReleaseGood.shippingOrder.id, shippingOrder);
390
- }
391
- else {
392
- let newShippingOrder = await tx.getRepository(shipping_order_1.ShippingOrder).save(Object.assign(Object.assign({}, shippingOrder), { name: utils_2.OrderNoGenerator.shippingOrder(), domain, bizplace: draftReleaseGood.bizplace, status: constants_1.ORDER_STATUS.PENDING, creator: user, updater: user }));
393
- draftReleaseGood.shippingOrder = newShippingOrder;
394
- }
395
- }
396
- else {
397
- // case to delete existing shippingOrder
398
- if (existingDraftReleaseGood.shippingOrder) {
399
- await tx.getRepository(shipping_order_1.ShippingOrder).delete(existingDraftReleaseGood.shippingOrder);
400
- }
401
- }
402
- // // 1. Update draft release good
403
- const updateDraftReleaseGood = await tx.getRepository(__1.DraftReleaseGood).save(Object.assign(Object.assign(Object.assign({}, existingDraftReleaseGood), draftReleaseGood), { domain, creator: user, updater: user }));
404
- // // 2. Update draft release good product
405
- await upsertDraftReleaseGoodProducts(domain, draftReleaseGood.bizplace, draftReleaseGood, orderProducts, user, tx);
406
- // // 3. Remove Purchase Order Attachment
407
- const foundAttachments = await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).find({
408
- where: {
409
- domain,
410
- refBy: draftReleaseGood.id,
411
- category: constants_1.ATTACHMENT_TYPE.DGRN
412
- }
413
- });
414
- // // 4. Remove All Attachment
415
- if (foundAttachments === null || foundAttachments === void 0 ? void 0 : foundAttachments.length) {
416
- await (0, attachment_base_1.deleteAttachmentsByRef)(_, { refBys: foundAttachments.map(file => file.refBy) }, context);
417
- }
418
- // // 5. Add New Attachment
419
- if ((files === null || files === void 0 ? void 0 : files.length) > 0) {
420
- const attachments = files.map(attachment => {
421
- return {
422
- file: attachment,
423
- refBy: updateDraftReleaseGood.id,
424
- category: constants_1.ATTACHMENT_TYPE.DGRN
425
- };
426
- });
427
- await (0, attachment_base_1.createAttachments)(_, { attachments }, context);
428
- }
429
- return existingDraftReleaseGood;
430
- }
431
- exports.updateDraftReleaseGoodFunction = updateDraftReleaseGoodFunction;
432
- async function upsertDraftReleaseGoodProducts(domain, bizplace, draftReleaseGood, orderProductsPatch, user, tx) {
433
- try {
434
- let orderProducts = [];
435
- const draftReleaseGoodRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.DraftReleaseGood)) || (0, typeorm_1.getRepository)(__1.DraftReleaseGood);
436
- const bizplaceRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(biz_base_1.Bizplace)) || (0, typeorm_1.getRepository)(biz_base_1.Bizplace);
437
- const orderProductRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.OrderProduct)) || (0, typeorm_1.getRepository)(__1.OrderProduct);
438
- const productRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(product_base_1.Product)) || (0, typeorm_1.getRepository)(product_base_1.Product);
439
- const productBundleRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(product_base_1.ProductBundle)) || (0, typeorm_1.getRepository)(product_base_1.ProductBundle);
440
- draftReleaseGood = await draftReleaseGoodRepo.findOne({
441
- where: { id: draftReleaseGood.id },
442
- relations: ['orderProducts', 'orderProducts.product', 'orderProducts.productBundle', 'orderProducts.creator', 'orderProducts.updater']
443
- });
444
- // Remove all existing order products that do not exist in current input
445
- let removeOP = draftReleaseGood.orderProducts.filter(existingOP => orderProductsPatch.filter(inOP => inOP.id == existingOP.id).length == 0);
446
- // removeOP.forEach(async op => {
447
- // await orderProductRepo.delete(op)
448
- // })
449
- if (removeOP.length > 0)
450
- await orderProductRepo.delete(removeOP.map(itm => itm.id));
451
- bizplace = await bizplaceRepo.findOne(bizplace.id, {
452
- relations: ['domain', 'company', 'company.domain']
453
- });
454
- orderProducts = await Promise.all(orderProductsPatch.map(async (op) => {
455
- var _a;
456
- if (!(op === null || op === void 0 ? void 0 : op.id))
457
- delete op.id;
458
- const customerCompanyDomain = bizplace.company.domain;
459
- let product = null;
460
- let productBundle = null;
461
- let existingOP = draftReleaseGood.orderProducts.find(existOP => existOP.id == op.id);
462
- let updatePatch = Object.assign(Object.assign(Object.assign({}, existingOP), op), { domain, batchId: '', packQty: 0, actualPackQty: 0, palletQty: 0, actualPalletQty: 0, bizplace: bizplace, name: (op === null || op === void 0 ? void 0 : op.id) ? op.name : utils_2.OrderNoGenerator.orderProduct(), draftReleaseGood: draftReleaseGood, status: draftReleaseGood.status, creator: (op === null || op === void 0 ? void 0 : op.id) ? op.creator : user, updater: user });
463
- if ((_a = op === null || op === void 0 ? void 0 : op.product) === null || _a === void 0 ? void 0 : _a.id) {
464
- product = await productRepo.findOne({
465
- where: { domain: customerCompanyDomain, id: op.product.id }
466
- });
467
- updatePatch['product'] = product || undefined;
468
- if (!product) {
469
- productBundle = await productBundleRepo.findOne({
470
- where: { domain: customerCompanyDomain, id: op.product.id }
471
- });
472
- updatePatch['productBundle'] = productBundle || undefined;
473
- }
474
- if (!product && !productBundle)
475
- throw new Error(`product not found`);
476
- }
477
- else {
478
- if (existingOP) {
479
- product = existingOP.product;
480
- productBundle = existingOP.productBundle;
481
- updatePatch['product'] = existingOP.product || undefined;
482
- updatePatch['productBundle'] = existingOP.productBundle || undefined;
483
- }
484
- }
485
- updatePatch['packingType'] = (op === null || op === void 0 ? void 0 : op.packingType)
486
- ? op.packingType
487
- : (product === null || product === void 0 ? void 0 : product.packingType)
488
- ? product.packingType
489
- : productBundle.packingType;
490
- updatePatch['uom'] = (op === null || op === void 0 ? void 0 : op.uom) ? op.uom : (product === null || product === void 0 ? void 0 : product.primaryUnit) ? product.primaryUnit : 'UNIT';
491
- updatePatch['uomValue'] = (op === null || op === void 0 ? void 0 : op.uomValue) ? op.uomValue : (product === null || product === void 0 ? void 0 : product.primaryValue) ? product.primaryValue : 0;
492
- return updatePatch;
493
- }));
494
- await orderProductRepo.save(orderProducts);
495
- }
496
- catch (error) {
497
- throw error;
498
- }
499
- }
500
- exports.upsertDraftReleaseGoodProducts = upsertDraftReleaseGoodProducts;
501
- //# sourceMappingURL=draft-release-good-mutation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"draft-release-good-mutation.js","sourceRoot":"","sources":["../../../server/service/draft-release-good/draft-release-good-mutation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAA0D;AAC1D,+CAAsE;AACtE,qCAAqF;AAErF,qEAAuG;AAEvG,uCAA2C;AAC3C,uDAAiH;AACjH,+DAAyD;AACzD,+DAAqE;AACrE,+DAAsD;AAGtD,4DAA4D;AAC5D,2BAAgG;AAChG,+CAMwB;AACxB,uCAA8C;AAC9C,8EAAwE;AACxE,qEAAgE;AAChE,iFAA2E;AAC3E,WAAW;AACX,gCAAgC;AAChC,kCAAkC;AAClC,mCAAmC;AACnC,iCAAiC;AACjC,qDAAqD;AACrD,yEAAwE;AAExE,2EAA2F;AAC3F,iFAAmG;AACnG,yCAA8C;AAG9C,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAInC,KAAK,CAAC,sBAAsB,CACnB,OAAY,EACqC,gBAAuC,EAC5C,aAAkC,EAC1B,KAAoB,EACT,aAAkC;QAExG,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;YACnD,MAAM,uBAAuB,GAAqB,MAAM,8BAA8B,CACpF,IAAI,EACJ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,KAAK,EACL,OAAO,EACP,EAAE,CACH,CAAA;YAED,OAAO,uBAAuB,CAAA;SAC/B;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAID,KAAK,CAAC,sBAAsB,CACgD,gBAAqC,EACxG,OAAY;QAEnB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAgB,CAAC,CAAC,IAAI,iCAClD,gBAAgB,KACnB,MAAM,EACN,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;QAEF,qBAAqB;QAErB,OAAO,GAAG,CAAA;IACZ,CAAC;IAID,KAAK,CAAC,sBAAsB,CACf,EAAU,EACwB,KAA4B,EAClE,OAAY;QAEnB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oBAAgB,CAAC,CAAA;QACrD,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAChD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SACtB,CAAC,CAAA;QAEF,OAAO,MAAM,UAAU,CAAC,IAAI,+CACvB,gBAAgB,GAChB,KAAK,KACR,OAAO,EAAE,IAAI,IACb,CAAA;IACJ,CAAC;IAID,KAAK,CAAC,8BAA8B,CACe,OAAgC,EAC1E,OAAY;QAEnB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,IAAI,OAAO,GAAG,EAAE,CAAA;QAChB,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;QACzF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;QACzF,MAAM,oBAAoB,GAAG,EAAE,CAAC,aAAa,CAAC,oBAAgB,CAAC,CAAA;QAE/D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;gBAEnC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,iCACzC,SAAS,KACZ,MAAM,EACN,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;gBAEF,OAAO,CAAC,IAAI,iCAAM,MAAM,KAAE,MAAM,EAAE,GAAG,IAAG,CAAA;aACzC;SACF;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;gBACnC,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;gBAEzE,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,+CACzC,gBAAgB,GAChB,SAAS,KACZ,OAAO,EAAE,IAAI,IACb,CAAA;gBAEF,OAAO,CAAC,IAAI,iCAAM,MAAM,KAAE,MAAM,EAAE,GAAG,IAAG,CAAA;aACzC;SACF;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAID,KAAK,CAAC,sBAAsB,CAAY,EAAU,EAAS,OAAY;QACrE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEpC,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAA;IACb,CAAC;IAID,KAAK,CAAC,uBAAuB,CAA+B,GAAa,EAAS,OAAY;QAC5F,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEpC,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAgB,CAAC,CAAC,MAAM,CAAC;YAC9C,MAAM;YACN,EAAE,EAAE,IAAA,YAAE,EAAC,GAAG,CAAC;SACZ,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAKD,KAAK,CAAC,6BAA6B,CAC1B,OAAY,EACW,GAAa;;QAI3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,MAAM,oBAAoB,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAgB,CAAC,CAAC,IAAI,CAAC;YACzE,KAAK,EAAE;gBACL,MAAM;gBACN,EAAE,EAAE,IAAA,YAAE,EAAC,GAAG,CAAC;gBACX,MAAM,EAAE,sCAA0B,CAAC,KAAK;aACzC;YACD,SAAS,EAAE;gBACT,eAAe;gBACf,uBAAuB;gBACvB,6BAA6B;gBAC7B,eAAe;gBACf,UAAU;gBACV,QAAQ;gBACR,SAAS;gBACT,SAAS;aACV;SACF,CAAC,CAAA;QACF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;YAEnC,IAAI,mBAAmB,GAAkB,EAAE,CAAA;YAC3C,MAAM,WAAW,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,sBAAO,CAAC,KAAI,IAAA,uBAAa,EAAC,sBAAO,CAAC,CAAA;YAE7F,MAAM,WAAW,GAAY,MAAM,WAAW,CAAC,OAAO,CAAC;gBACrD,KAAK,EAAE;oBACL,MAAM;oBACN,IAAI,EAAE,oCAAwB,CAAC,cAAc;iBAC9C;aACF,CAAC,CAAA;YAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChE,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAE/C,IAAI,sBAAgC,CAAA;gBACpC,IAAI,eAAyB,CAAA;gBAE7B,IAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,0CAAE,EAAE,EAAE;oBAC5B,sBAAsB,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE;wBACxF,SAAS,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;qBACzC,CAAC,CAAA;oBACF,MAAM,aAAa,GAAW,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAA;oBACnE,eAAe,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;iBACjG;qBAAM;oBACL,OAAO,KAAK,CAAA;iBACb;gBAED,MAAM,SAAS,GAAe,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAA;gBAEvE,IAAI,gBAAgB,GAAG,MAAM,qBAAa,CAAC,wBAAwB,CAAC,SAAS,EAAE;oBAC7E,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,WAAW;4BACjB,QAAQ,EAAE,IAAI;4BACd,KAAK,EAAE;gCACL,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,CAAA,CAAC,CAAC,CAAC;gCAC7F,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,aAAa,CAAC,EAAE,CAAA,CAAC,CAAC,CAAC;6BAC1G;yBACF,CAAC;iBACH,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;gBAGf,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC5D,IAAI,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,eAAC,OAAA,CAAC,CAAC,CAAC,SAAS,KAAI,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,0CAAE,EAAE,CAAA,IAAI,CAAC,CAAC,SAAS,KAAI,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,aAAa,0CAAE,EAAE,CAAA,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAA,EAAA,CAAC,CAAA;oBAC/P,uCAAY,GAAG,KAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,IAAE;gBACzE,CAAC,CAAC,CAAA;gBAEF,IAAI,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,cAAc,CAAC,CAAA;gBAEnF,IAAI,CAAC,YAAY,EAAE;oBACjB,WAAW;oBACX,IAAI,WAAW,qBAAQ,UAAU,CAAE,CAAA;oBACnC,OAAO,WAAW,CAAC,EAAE,CAAA;oBACrB,OAAO,WAAW,CAAC,IAAI,CAAA;oBACvB,OAAO,WAAW,CAAC,SAAS,CAAA;oBAC5B,OAAO,WAAW,CAAC,SAAS,CAAA;oBAC5B,OAAO,WAAW,CAAC,SAAS,CAAA;oBAC5B,OAAO,WAAW,CAAC,SAAS,CAAA;oBAE5B,IAAI,gBAAgB,GAAG,EAAE,CAAA;oBAEzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACpE,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC5C,IAAI,IAAI,GAAG,EAAE,CAAA;wBACb,IAAI,GAAG,CAAC,aAAa,EAAE;4BACrB,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,4BAAa,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,uBAAuB,EAAE,qCAAqC,EAAE,+BAA+B,EAAE,EAAE,CAAC,CAAA;4BAElN,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gCAC3E,MAAM,uBAAuB,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gCACrE,IAAI,CAAC,IAAI,CAAC;oCACR,GAAG,EAAE,uBAAuB,CAAC,OAAO,CAAC,GAAG;oCACxC,YAAY,EAAE,uBAAuB,CAAC,aAAa,CAAC,WAAW;oCAC/D,YAAY,EAAE,uBAAuB,CAAC,aAAa,CAAC,WAAW;oCAC/D,GAAG,EAAE,uBAAuB,CAAC,aAAa,CAAC,GAAG;oCAC9C,WAAW,EAAE,uBAAuB,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU;oCAC/D,WAAW,EAAE,SAAS;oCACtB,gBAAgB,EAAE,SAAS;oCAC3B,eAAe,EAAE,SAAS;iCAC3B,CAAC,CAAA;6BACH;yBACF;6BAAM;4BACL,IAAI,GAAG,CAAC;oCACN,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG;oCACpB,YAAY,EAAE,GAAG,CAAC,WAAW;oCAC7B,YAAY,EAAE,GAAG,CAAC,WAAW;oCAC7B,GAAG,EAAE,GAAG,CAAC,GAAG;oCACZ,WAAW,EAAE,GAAG,CAAC,UAAU;oCAC3B,WAAW,EAAE,SAAS;oCACtB,gBAAgB,EAAE,SAAS;oCAC3B,eAAe,EAAE,SAAS;iCAC3B,CAAC,CAAA;yBACH;wBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAClB,IAAI,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC3C,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;gCACnB,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;gCACrC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;gCACrC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CACpB,CAAA;4BAED,IAAI,UAAU,EAAE;gCACd,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;6BACnE;iCAAM;gCACL,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;6BAC5B;wBACH,CAAC,CAAC,CAAC;qBACJ;oBACD,IAAI;wBACF,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;4BAEjE,IAAI,cAAc,GAAU,MAAM,IAAA,2DAAsC,EACtE,gBAAgB,EAChB,UAAU,CAAC,QAAQ,CAAC,EAAE,EACtB,OAAO,EACP,OAAO,CACR,CAAA;4BAED,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gCACvF,MAAM,IAAI,wBAAe,iCACpB,wBAAe,CAAC,WAAW,CAAC,kBAAkB,KACjD,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,IAChD,CAAA;4BAEJ,sDAAsD;4BACtD,WAAW,CAAC,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gCACtD,uCACK,GAAG,KACN,UAAU,EAAE,GAAG,CAAC,WAAW,IAC5B;4BACH,CAAC,CAAC,CAAA;4BAEF,IAAI,kBAAkB,GAAgB,MAAM,IAAA,+CAAuB,EACjE,WAAW,EACX,WAAW,CAAC,QAAQ,CAAC,EAAE,EACvB,WAAW,EACX,MAAM,EACN,IAAI,EACJ,OAAO,CACR,CAAA;4BAED,MAAM,OAAO;iCACV,aAAa,CAAC,oBAAgB,CAAC;iCAC/B,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,sCAA0B,CAAC,SAAS,EAAE,CAAC,CAAA;4BAEnH,kBAAkB,GAAG,MAAM,IAAA,0CAAkB,EAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;wBAE1F,CAAC,CAAC,CAAA;qBACH;oBAAC,OAAO,KAAK,EAAE;wBACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;qBACrB;iBACF;aAEF;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAjUC;IAHC,IAAA,wBAAS,EAAC,+DAA+D,CAAC;IAC1E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,oBAAgB,CAAC;IAEnC,WAAA,IAAA,kBAAG,GAAE,CAAA;IACL,WAAA,IAAA,kBAAG,EAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,yBAAqB,CAAC,CAAA;IACtD,WAAA,IAAA,kBAAG,EAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,uCAAiB,CAAC,CAAC,CAAA;IACjD,WAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,8BAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,WAAA,IAAA,kBAAG,EAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,yCAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;6CAHK,yBAAqB,gBAGT,yCAAkB;;sEAkBzG;AAID;IAFC,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,oBAAgB,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IAEtF,WAAA,IAAA,kBAAG,EAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,uBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACxE,WAAA,IAAA,kBAAG,GAAE,CAAA;;qCADsF,uBAAmB;;sEAgBhH;AAID;IAFC,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,oBAAgB,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;IAE9F,WAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IACT,WAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,yBAAqB,CAAC,CAAA;IAC3C,WAAA,IAAA,kBAAG,GAAE,CAAA;;6CAD8C,yBAAqB;;sEAe1E;AAID;IAFC,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,oBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,mDAAmD,EAAE,CAAC;IAE3G,WAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,yBAAqB,CAAC,CAAC,CAAA;IAC/C,WAAA,IAAA,kBAAG,GAAE,CAAA;;;;8EAwCP;AAID;IAFC,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC9C,WAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,kBAAG,GAAE,CAAA;;;;sEAKzD;AAID;IAFC,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;IACvD,WAAA,IAAA,kBAAG,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAAiB,WAAA,IAAA,kBAAG,GAAE,CAAA;;;;uEAShF;AAKD;IAHC,IAAA,wBAAS,EAAC,+DAA+D,CAAC;IAC1E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;IAEnF,WAAA,IAAA,kBAAG,GAAE,CAAA;IACL,WAAA,IAAA,kBAAG,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;;;;6EAoL9B;AApUU,wBAAwB;IADpC,IAAA,uBAAQ,EAAC,oBAAgB,CAAC;GACd,wBAAwB,CAqUpC;AArUY,4DAAwB;AAuU9B,KAAK,UAAU,8BAA8B,CAClD,CAAM,EACN,gBAAqB,EACrB,aAAkC,EAClC,aAAkB,EAClB,KAAmB,EACnB,OAAY,EACZ,EAAkB;IAElB,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE;QACxB,gBAAgB,GAAG,MAAM,8BAA8B,CACrD,CAAC,EACD,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,KAAK,EACL,OAAO,EACP,EAAE,CACH,CAAA;KACF;SAAM;QACL,gBAAgB,GAAG,MAAM,8BAA8B,CACrD,CAAC,EACD,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,KAAK,EACL,OAAO,EACP,EAAE,CACH,CAAA;KACF;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAhCD,wEAgCC;AAEM,KAAK,UAAU,8BAA8B,CAClD,CAAM,EACN,gBAAqB,EACrB,aAAkC,EAClC,aAAkB,EAClB,KAAmB,EACnB,OAAY,EACZ,EAAkB;;IAElB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAmC,OAAO,CAAC,KAAK,CAAA;IAEtE,IAAI,UAAoB,CAAA;IACxB,IAAI,OAAO,GAAW,EAAE,CAAA;IACxB,IAAI,QAAQ,GAAa,EAAE,CAAA;IAE3B,MAAM,WAAW,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,sBAAO,CAAC,KAAI,IAAA,uBAAa,EAAC,sBAAO,CAAC,CAAA;IAE7F,IAAI,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,QAAQ,0CAAE,EAAE,EAAE;QAClC,MAAM,kBAAkB,GAAe,MAAM,IAAA,gCAAqB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAChF,IAAI,sBAAsB,GAAa,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE7G,IAAI,CAAC,sBAAsB;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAE7F,gBAAgB,CAAC,QAAQ,GAAG,sBAAsB,CAAA;KACnD;SAAM;QACL,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;KAC1C;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;KACrC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAAY,MAAM,WAAW,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,MAAM;YACN,IAAI,EAAE,oCAAwB,CAAC,cAAc;SAC9C;KACF,CAAC,CAAA;IAEF,IAAI,YAAY,EAAE;QAChB,OAAO,GAAG,MAAM,IAAA,yBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;KAC1F;SAAM;QACL,OAAO,GAAG,wBAAgB,CAAC,gBAAgB,EAAE,CAAA;KAC9C;IAED,kCAAkC;IAClC,MAAM,uBAAuB,GAAqB,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAgB,CAAC,CAAC,IAAI,iCAC1F,gBAAgB,KACnB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,sCAA0B,CAAC,KAAK,EACxC,MAAM,EACN,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,0CAA0C;IAC1C,MAAM,8BAA8B,CAClC,MAAM,EACN,gBAAgB,CAAC,QAAQ,EACzB,uBAAuB,EACvB,aAAa,EACb,IAAI,EACJ,EAAE,CACH,CAAA;IAED,2BAA2B;IAC3B,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;QACjB,MAAM,WAAW,GAAiB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACvD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,uBAAuB,CAAC,EAAE;gBACjC,QAAQ,EAAE,2BAAe,CAAC,IAAI;aAC/B,CAAA;QACH,CAAC,CAAC,CAAA;QACF,MAAM,IAAA,mCAAiB,EAAC,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,CAAA;KACrD;IAED,OAAO,uBAAuB,CAAA;AAChC,CAAC;AA/ED,wEA+EC;AAEM,KAAK,UAAU,8BAA8B,CAClD,CAAM,EACN,gBAAqB,EACrB,aAAkC,EAClC,aAAkB,EAClB,KAAmB,EACnB,OAAY,EACZ,EAAkB;;IAElB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAmC,OAAO,CAAC,KAAK,CAAA;IAEtE,IAAI,wBAAwB,GAAQ,MAAM,IAAA,sDAA2B,EAAC,CAAC,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;IAE5G,IAAI,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,QAAQ,0CAAE,EAAE,EAAE;QAClC,MAAM,kBAAkB,GAAe,MAAM,IAAA,gCAAqB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAChF,IAAI,sBAAsB,GAAa,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE7G,IAAI,CAAC,sBAAsB;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAE7F,gBAAgB,CAAC,QAAQ,GAAG,sBAAsB,CAAA;KACnD;IAED,IAAI,aAAa,EAAE;QACjB,wCAAwC;QACxC,IAAI,wBAAwB,CAAC,aAAa,EAAE;YAC1C,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;SACvG;aAAM;YACL,IAAI,gBAAgB,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,iCAC3E,aAAa,KAChB,IAAI,EAAE,wBAAgB,CAAC,aAAa,EAAE,EACtC,MAAM,EACN,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EACnC,MAAM,EAAE,wBAAY,CAAC,OAAO,EAC5B,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;YACF,gBAAgB,CAAC,aAAa,GAAG,gBAAgB,CAAA;SAClD;KACF;SAAM;QACL,wCAAwC;QACxC,IAAI,wBAAwB,CAAC,aAAa,EAAE;YAC1C,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAA;SACrF;KACF;IAED,kCAAkC;IAClC,MAAM,sBAAsB,GAAqB,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAgB,CAAC,CAAC,IAAI,+CACzF,wBAAwB,GACxB,gBAAgB,KACnB,MAAM,EACN,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,0CAA0C;IAC1C,MAAM,8BAA8B,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;IAElH,yCAAyC;IACzC,MAAM,gBAAgB,GAAiB,MAAM,IAAA,uBAAa,EAAC,4BAAU,CAAC,CAAC,IAAI,CAAC;QAC1E,KAAK,EAAE;YACL,MAAM;YACN,KAAK,EAAE,gBAAgB,CAAC,EAAE;YAC1B,QAAQ,EAAE,2BAAe,CAAC,IAAI;SAC/B;KACF,CAAC,CAAA;IAEF,8BAA8B;IAC9B,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,EAAE;QAC5B,MAAM,IAAA,wCAAsB,EAAC,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;KAC/F;IAED,2BAA2B;IAC3B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,IAAG,CAAC,EAAE;QACrB,MAAM,WAAW,GAAiB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACvD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,sBAAsB,CAAC,EAAE;gBAChC,QAAQ,EAAE,2BAAe,CAAC,IAAI;aAC/B,CAAA;QACH,CAAC,CAAC,CAAA;QACF,MAAM,IAAA,mCAAiB,EAAC,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,CAAA;KACrD;IAED,OAAO,wBAAwB,CAAA;AACjC,CAAC;AApFD,wEAoFC;AAEM,KAAK,UAAU,8BAA8B,CAClD,MAAc,EACd,QAAkB,EAClB,gBAAkC,EAClC,kBAAuC,EACvC,IAAU,EACV,EAAkB;IAElB,IAAI;QACF,IAAI,aAAa,GAAmB,EAAE,CAAA;QAEtC,MAAM,oBAAoB,GACxB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,oBAAgB,CAAC,KAAI,IAAA,uBAAa,EAAC,oBAAgB,CAAC,CAAA;QACxE,MAAM,YAAY,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,mBAAQ,CAAC,KAAI,IAAA,uBAAa,EAAC,mBAAQ,CAAC,CAAA;QAChG,MAAM,gBAAgB,GAA6B,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,gBAAY,CAAC,KAAI,IAAA,uBAAa,EAAC,gBAAY,CAAC,CAAA;QACjH,MAAM,WAAW,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,sBAAO,CAAC,KAAI,IAAA,uBAAa,EAAC,sBAAO,CAAC,CAAA;QAC7F,MAAM,iBAAiB,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,4BAAa,CAAC,KAAI,IAAA,uBAAa,EAAC,4BAAa,CAAC,CAAA;QAE/G,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC;YACpD,KAAK,EAAE,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE;YAClC,SAAS,EAAE,CAAC,eAAe,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;SACvI,CAAC,CAAA;QAEF,wEAAwE;QACxE,IAAI,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAClD,UAAU,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CACtF,CAAA;QACD,iCAAiC;QACjC,sCAAsC;QACtC,KAAK;QAEL,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnF,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjD,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC;SACnD,CAAC,CAAA;QAEF,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAO,EAAE,EAAE;;YACvC,IAAI,CAAC,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,EAAE,CAAA;gBAAE,OAAO,EAAE,CAAC,EAAE,CAAA;YAEzB,MAAM,qBAAqB,GAAW,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAA;YAC7D,IAAI,OAAO,GAAY,IAAI,CAAA;YAC3B,IAAI,aAAa,GAAkB,IAAI,CAAA;YACvC,IAAI,UAAU,GAAG,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;YAEpF,IAAI,WAAW,iDACV,UAAU,GACV,EAAE,KACL,MAAM,EACN,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,CAAC,EAChB,SAAS,EAAE,CAAC,EACZ,eAAe,EAAE,CAAC,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAgB,CAAC,YAAY,EAAE,EACxD,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAC/B,OAAO,EAAE,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EACnC,OAAO,EAAE,IAAI,GACd,CAAA;YAED,IAAI,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,0CAAE,EAAE,EAAE;gBACnB,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC;oBAClC,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;iBAC5D,CAAC,CAAA;gBACF,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,IAAI,SAAS,CAAA;gBAE7C,IAAI,CAAC,OAAO,EAAE;oBACZ,aAAa,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;qBAC5D,CAAC,CAAA;oBACF,WAAW,CAAC,eAAe,CAAC,GAAG,aAAa,IAAI,SAAS,CAAA;iBAC1D;gBAED,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;aACrE;iBAAM;gBACL,IAAI,UAAU,EAAE;oBACd,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;oBAC5B,aAAa,GAAG,UAAU,CAAC,aAAa,CAAA;oBACxC,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,OAAO,IAAI,SAAS,CAAA;oBACxD,WAAW,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,aAAa,IAAI,SAAS,CAAA;iBACrE;aACF;YAGD,WAAW,CAAC,aAAa,CAAC,GAAG,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,WAAW;gBAC1C,CAAC,CAAC,EAAE,CAAC,WAAW;gBAChB,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;oBACpB,CAAC,CAAC,OAAO,CAAC,WAAW;oBACrB,CAAC,CAAC,aAAa,CAAC,WAAW,CAAA;YAC/B,WAAW,CAAC,KAAK,CAAC,GAAG,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,GAAG,EAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAA;YAC3F,WAAW,CAAC,UAAU,CAAC,GAAG,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,QAAQ,EAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;YAEvG,OAAO,WAAW,CAAA;QACpB,CAAC,CAAC,CACH,CAAA;QAED,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;KAC3C;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,KAAK,CAAA;KACZ;AACH,CAAC;AAvGD,wEAuGC"}