@legenki/print2medusa 0.8.2 → 0.9.2
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.
- package/.medusa/server/src/admin/index.js +158 -2
- package/.medusa/server/src/admin/index.mjs +159 -3
- package/.medusa/server/src/api/admin/printful/bundles/route.js +79 -0
- package/.medusa/server/src/api/admin/printful/design/route.js +38 -0
- package/.medusa/server/src/api/admin/printful/prompts/route.js +55 -0
- package/.medusa/server/src/utils/bundle.js +243 -0
- package/.medusa/server/src/utils/design.js +438 -0
- package/.medusa/server/src/utils/printful-client.js +23 -1
- package/.medusa/server/src/utils/prompt.js +423 -0
- package/.medusa/server/src/workflows/apply-order-status.js +16 -5
- package/.medusa/server/src/workflows/create-printful-order.js +20 -3
- package/.medusa/server/src/workflows/sync-products.js +68 -1
- package/README.md +91 -0
- package/package.json +1 -1
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROMPT_STYLES = void 0;
|
|
4
|
+
exports.hexLightness = hexLightness;
|
|
5
|
+
exports.buildMockupPrompt = buildMockupPrompt;
|
|
6
|
+
exports.buildProductPrompts = buildProductPrompts;
|
|
7
|
+
exports.PROMPT_STYLES = [
|
|
8
|
+
{
|
|
9
|
+
id: "editorial",
|
|
10
|
+
label: "Editorial",
|
|
11
|
+
apparel: "editorial fashion photograph, natural window light, soft shadows, " +
|
|
12
|
+
"muted neutral backdrop, relaxed candid pose, shot on 50mm at f/2",
|
|
13
|
+
printMedia: "editorial interior photograph, natural window light, soft shadows, " +
|
|
14
|
+
"calm minimal room, shot on 35mm",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: "studio",
|
|
18
|
+
label: "Studio",
|
|
19
|
+
apparel: "clean studio photograph, even softbox lighting, seamless light grey " +
|
|
20
|
+
"backdrop, straight-on framing, sharp product focus",
|
|
21
|
+
printMedia: "clean studio photograph, even softbox lighting, seamless light grey " +
|
|
22
|
+
"backdrop, straight-on framing",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: "street",
|
|
26
|
+
label: "Street",
|
|
27
|
+
apparel: "street style photograph, overcast daylight, urban background slightly " +
|
|
28
|
+
"out of focus, walking mid-stride, shot on 35mm",
|
|
29
|
+
printMedia: "lifestyle photograph, daylight, lived-in interior, slight angle",
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
/**
|
|
33
|
+
* Where a design sits, said the way a photographer would rather than the way
|
|
34
|
+
* an API does. `embroidery_front` is a field name; "the front panel" is an
|
|
35
|
+
* instruction.
|
|
36
|
+
*/
|
|
37
|
+
const PLACEMENT_PHRASE = {
|
|
38
|
+
front: "on the chest",
|
|
39
|
+
back: "across the back",
|
|
40
|
+
embroidery_front: "on the front panel",
|
|
41
|
+
embroidery_back: "on the back panel",
|
|
42
|
+
front_dtf: "on the chest",
|
|
43
|
+
back_dtf: "across the back",
|
|
44
|
+
default: "",
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Products where `front` does not mean a chest.
|
|
48
|
+
*
|
|
49
|
+
* One API placement name covers different physical places: `front` is the
|
|
50
|
+
* chest of a tee and the outward face of a tote. A bag has no chest, and the
|
|
51
|
+
* phrase sends the image somewhere the product is not.
|
|
52
|
+
*/
|
|
53
|
+
const PLACEMENT_OVERRIDES = {
|
|
54
|
+
// Eco tote
|
|
55
|
+
"367": {
|
|
56
|
+
front: "on the front panel of the bag",
|
|
57
|
+
back: "on the back panel of the bag",
|
|
58
|
+
front_dtf: "on the front panel of the bag",
|
|
59
|
+
back_dtf: "on the back panel of the bag",
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* What the technique means for how the design looks.
|
|
64
|
+
*
|
|
65
|
+
* The distinction is load-bearing rather than decorative. A cap supporting
|
|
66
|
+
* only `EMBROIDERY` has no printed version — asking for a print produces an
|
|
67
|
+
* image of a product that cannot be ordered.
|
|
68
|
+
*/
|
|
69
|
+
const TECHNIQUE_PHRASE = {
|
|
70
|
+
DTG: "the artwork printed directly into the fabric, matte and slightly absorbed by the weave",
|
|
71
|
+
DTFILM: "the artwork applied as a transfer, sitting just above the fabric with a clean edge",
|
|
72
|
+
EMBROIDERY: "the artwork stitched in thread, raised off the surface with visible stitch texture",
|
|
73
|
+
DIGITAL: "the artwork printed with crisp edges and full colour",
|
|
74
|
+
};
|
|
75
|
+
const WEAR = {
|
|
76
|
+
"71": {
|
|
77
|
+
noun: "unisex t-shirt",
|
|
78
|
+
verb: "wearing",
|
|
79
|
+
framing: "full garment visible",
|
|
80
|
+
},
|
|
81
|
+
"380": {
|
|
82
|
+
noun: "unisex pullover hoodie",
|
|
83
|
+
verb: "wearing",
|
|
84
|
+
framing: "full garment visible",
|
|
85
|
+
},
|
|
86
|
+
"206": {
|
|
87
|
+
noun: "structured dad cap",
|
|
88
|
+
verb: "wearing",
|
|
89
|
+
framing: "head and shoulders, cap front clearly readable",
|
|
90
|
+
},
|
|
91
|
+
"367": {
|
|
92
|
+
noun: "canvas tote bag",
|
|
93
|
+
verb: "carrying",
|
|
94
|
+
framing: "bag held at the side or over the shoulder, front panel visible",
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
const DEFAULT_WEAR = {
|
|
98
|
+
noun: "garment",
|
|
99
|
+
verb: "wearing",
|
|
100
|
+
framing: "full garment visible",
|
|
101
|
+
};
|
|
102
|
+
/** Print-media nouns, which are never worn. */
|
|
103
|
+
const PRINT_NOUN = {
|
|
104
|
+
"1": "matte paper poster",
|
|
105
|
+
"2": "framed matte poster",
|
|
106
|
+
"358": "die-cut vinyl sticker",
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* How light a hex colour is, `0` (black) to `1` (white), or nothing.
|
|
110
|
+
*
|
|
111
|
+
* Uses the Rec. 709 luma weights rather than a plain channel average, because
|
|
112
|
+
* the eye is not equally sensitive to the three channels: `#00ff00` and
|
|
113
|
+
* `#0000ff` average identically and look nothing alike. Aqua `#008db5` is a
|
|
114
|
+
* mid tone by luma and a dark one by naive average, and it is the tee's most
|
|
115
|
+
* common colour.
|
|
116
|
+
*
|
|
117
|
+
* Returns `undefined` on anything it cannot parse — never `0`. Absence has to
|
|
118
|
+
* stay distinguishable from black, exactly as it does in `normalizeHex`: a
|
|
119
|
+
* malformed value falling through to `0` would silently be styled as a dark
|
|
120
|
+
* garment.
|
|
121
|
+
*/
|
|
122
|
+
function hexLightness(raw) {
|
|
123
|
+
const value = raw?.trim();
|
|
124
|
+
if (!value) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const body = value.startsWith("#") ? value.slice(1) : value;
|
|
128
|
+
if (!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$/.test(body)) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
const full = body.length === 3
|
|
132
|
+
? body
|
|
133
|
+
.split("")
|
|
134
|
+
.map((c) => c + c)
|
|
135
|
+
.join("")
|
|
136
|
+
: body;
|
|
137
|
+
const r = parseInt(full.slice(0, 2), 16);
|
|
138
|
+
const g = parseInt(full.slice(2, 4), 16);
|
|
139
|
+
const b = parseInt(full.slice(4, 6), 16);
|
|
140
|
+
return (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* What else the model wears, keyed by how light the garment is.
|
|
144
|
+
*
|
|
145
|
+
* **A table, not colour theory.** A merchant can read this file and predict
|
|
146
|
+
* what a new colour will produce, which an inferred palette would not allow.
|
|
147
|
+
* Tuning it is editing four strings.
|
|
148
|
+
*
|
|
149
|
+
* The bands, and why they fall where they do:
|
|
150
|
+
*
|
|
151
|
+
* - **`< 0.22` dark** — black, navy, forest. The reference look (Bershka, H&M)
|
|
152
|
+
* puts these against light denim and off-white, so the garment stays the
|
|
153
|
+
* lightest-contrast object in frame and the artwork keeps its edge.
|
|
154
|
+
* - **`0.22 – 0.55` mid** — Aqua `#008db5` sits at 0.44, as do heather greys
|
|
155
|
+
* and most of the tee's saturated colours. A mid tone reads against either
|
|
156
|
+
* extreme, so it gets neutral denim, which is what an actual lookbook does.
|
|
157
|
+
* - **`> 0.55` light** — white, cream, Oyster `#edcea5` at 0.82. These need a
|
|
158
|
+
* darker layer or the model dissolves into the backdrop; every style preset
|
|
159
|
+
* here specifies a light or neutral background.
|
|
160
|
+
*
|
|
161
|
+
* Two thresholds rather than more: each extra band is another wording an
|
|
162
|
+
* admin has to hold in their head, and the returned image barely distinguishes
|
|
163
|
+
* them.
|
|
164
|
+
*/
|
|
165
|
+
const PAIRING_BANDS = [
|
|
166
|
+
{
|
|
167
|
+
below: 0.22,
|
|
168
|
+
wears: "light washed denim and off-white sneakers",
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
below: 0.55,
|
|
172
|
+
wears: "neutral straight-leg denim and plain white sneakers",
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
below: Infinity,
|
|
176
|
+
wears: "dark charcoal trousers and a deep indigo overshirt",
|
|
177
|
+
},
|
|
178
|
+
];
|
|
179
|
+
/**
|
|
180
|
+
* Products that get no styling clause, and why each one.
|
|
181
|
+
*
|
|
182
|
+
* - **Print media** never reaches this code — a poster is not styled with
|
|
183
|
+
* jeans, and its branch returns before pairing is considered.
|
|
184
|
+
* - **The cap (206)** is worn, so it is not excluded for being unwearable. It
|
|
185
|
+
* is excluded because the styling clause exists to dress the model *around*
|
|
186
|
+
* the garment carrying the design, and a hat is the accessory to an outfit
|
|
187
|
+
* rather than the outfit. Naming trousers next to a cap makes the trousers
|
|
188
|
+
* compete with the thing being photographed, and the cap's framing is
|
|
189
|
+
* already "head and shoulders" — the trousers are not even in shot.
|
|
190
|
+
* - **The tote (367)** is carried, not worn. Same reasoning: it is the
|
|
191
|
+
* accessory, and "A model carrying a tote, styled with denim" describes an
|
|
192
|
+
* outfit the prompt is not otherwise specifying.
|
|
193
|
+
*/
|
|
194
|
+
const NO_PAIRING_PRODUCTS = new Set(["206", "367"]);
|
|
195
|
+
/**
|
|
196
|
+
* The styling clause, or nothing.
|
|
197
|
+
*
|
|
198
|
+
* Nothing is the answer whenever the base colour is unknown. Choosing a
|
|
199
|
+
* companion for a colour Printful did not report is the same class of mistake
|
|
200
|
+
* as guessing the material: it puts an unverified claim into a prompt where
|
|
201
|
+
* nothing marks it as invented.
|
|
202
|
+
*/
|
|
203
|
+
function pairingClause(design) {
|
|
204
|
+
if (design.catalogProductId &&
|
|
205
|
+
NO_PAIRING_PRODUCTS.has(design.catalogProductId)) {
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
const lightness = hexLightness(design.colorHex);
|
|
209
|
+
if (lightness === undefined) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
const band = PAIRING_BANDS.find((b) => lightness < b.below);
|
|
213
|
+
return band ? `styled with ${band.wears}` : undefined;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* "an Aqua", not "a Aqua". A prompt is read by a language model, and the
|
|
217
|
+
* mismatched article is the tell that a template assembled it.
|
|
218
|
+
*/
|
|
219
|
+
const article = (word) => /^[aeiou]/i.test(word.trim()) ? "an" : "a";
|
|
220
|
+
/** Joins the parts that exist, so an absent fact leaves no trace. */
|
|
221
|
+
const sentence = (parts) => parts
|
|
222
|
+
.map((p) => p?.trim())
|
|
223
|
+
.filter((p) => Boolean(p))
|
|
224
|
+
.join(", ");
|
|
225
|
+
const styleSpec = (style) => exports.PROMPT_STYLES.find((s) => s.id === style) ?? exports.PROMPT_STYLES[0];
|
|
226
|
+
/**
|
|
227
|
+
* Build one prompt for one product, colour and placement.
|
|
228
|
+
*
|
|
229
|
+
* Every clause is dropped rather than defaulted when the parameter is absent.
|
|
230
|
+
* A prompt is a description of a real product; a placeholder in it is a claim
|
|
231
|
+
* Printful never made, and the resulting image would sell something that does
|
|
232
|
+
* not exist.
|
|
233
|
+
*/
|
|
234
|
+
function buildMockupPrompt(input) {
|
|
235
|
+
const { design, placement, artwork } = input;
|
|
236
|
+
const spec = styleSpec(input.style);
|
|
237
|
+
const wear = (design.catalogProductId && WEAR[design.catalogProductId]) || DEFAULT_WEAR;
|
|
238
|
+
const noun = design.productClass === "print_media"
|
|
239
|
+
? ((design.catalogProductId && PRINT_NOUN[design.catalogProductId]) ??
|
|
240
|
+
"print")
|
|
241
|
+
: wear.noun;
|
|
242
|
+
const technique = design.technique
|
|
243
|
+
? TECHNIQUE_PHRASE[design.technique.toUpperCase()]
|
|
244
|
+
: undefined;
|
|
245
|
+
const overrides = design.catalogProductId
|
|
246
|
+
? PLACEMENT_OVERRIDES[design.catalogProductId]
|
|
247
|
+
: undefined;
|
|
248
|
+
const where = overrides?.[placement] ?? PLACEMENT_PHRASE[placement] ?? "";
|
|
249
|
+
const artworkClause = artwork
|
|
250
|
+
? `the artwork ${where ? `${where}: ` : "showing: "}${artwork}`
|
|
251
|
+
: where
|
|
252
|
+
? `the design placed ${where}`
|
|
253
|
+
: undefined;
|
|
254
|
+
if (design.productClass === "print_media") {
|
|
255
|
+
// No model, no fabric, no base colour — a print's variables are its size
|
|
256
|
+
// and how it hangs. `size` is this variant's real dimensions; the
|
|
257
|
+
// product's `dimensions` table lists every size offered and would name one
|
|
258
|
+
// the customer is not buying.
|
|
259
|
+
return {
|
|
260
|
+
text: sentence([
|
|
261
|
+
`${article(noun).replace(/^a/, "A")} ${noun}${design.size ? ` measuring ${design.size}` : ""}`,
|
|
262
|
+
artworkClause,
|
|
263
|
+
technique,
|
|
264
|
+
"hanging on a plain wall in a bright interior",
|
|
265
|
+
spec.printMedia,
|
|
266
|
+
"photorealistic, high detail",
|
|
267
|
+
]),
|
|
268
|
+
label: design.size ?? "print",
|
|
269
|
+
placement,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
const colour = design.color
|
|
273
|
+
? `${design.color}${design.colorHex ? ` (${design.colorHex})` : ""}`
|
|
274
|
+
: undefined;
|
|
275
|
+
// The article agrees with whatever word actually follows it — the colour
|
|
276
|
+
// when there is one, the noun otherwise.
|
|
277
|
+
const subject = `${colour ? `${colour} ` : ""}${noun}`;
|
|
278
|
+
return {
|
|
279
|
+
text: sentence([
|
|
280
|
+
`A model ${wear.verb} ${article(subject)} ${subject}`,
|
|
281
|
+
design.material ? `made of ${design.material}` : undefined,
|
|
282
|
+
artworkClause,
|
|
283
|
+
technique,
|
|
284
|
+
// After the technique and before the scene: the outfit is context for
|
|
285
|
+
// the garment, not a competing subject. Dropped entirely when the base
|
|
286
|
+
// colour is unknown.
|
|
287
|
+
pairingClause(design),
|
|
288
|
+
spec.apparel,
|
|
289
|
+
"photorealistic, high detail",
|
|
290
|
+
wear.framing,
|
|
291
|
+
]),
|
|
292
|
+
label: design.color ?? noun,
|
|
293
|
+
placement,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* How many mockups one product is worth.
|
|
298
|
+
*
|
|
299
|
+
* The store shoots 4–5 per product, so that is the ceiling. Not a knob: it is
|
|
300
|
+
* the number that makes the panel readable, and a route that answered with 84
|
|
301
|
+
* would be answering a question nobody asked.
|
|
302
|
+
*/
|
|
303
|
+
const MAX_PROMPTS_PER_PRODUCT = 5;
|
|
304
|
+
/**
|
|
305
|
+
* Pick which colours to build prompts for.
|
|
306
|
+
*
|
|
307
|
+
* The tee carries 84 colours and the store sells three or four of them. The
|
|
308
|
+
* useful selection is not "the first five Printful listed" — that ordering is
|
|
309
|
+
* the catalog's, and its first five are frequently near-identical greys, which
|
|
310
|
+
* is the same mockup rendered five times.
|
|
311
|
+
*
|
|
312
|
+
* So the pick is **spread across the lightness range**: sort by luma, then take
|
|
313
|
+
* evenly spaced entries including both ends. The store is deciding which
|
|
314
|
+
* colourway to shoot, and what it needs to see is the extremes and the middle —
|
|
315
|
+
* the darkest, the lightest, and the tones between. It is also stable: the same
|
|
316
|
+
* catalog produces the same five prompts every time the page is opened, so a
|
|
317
|
+
* prompt an admin copied yesterday is still there today.
|
|
318
|
+
*
|
|
319
|
+
* Colours with no hex sort last rather than being dropped. They still make a
|
|
320
|
+
* valid prompt — one without a styling clause — and dropping them would hide a
|
|
321
|
+
* colourway the store actually sells.
|
|
322
|
+
*/
|
|
323
|
+
function pickColors(colors, limit) {
|
|
324
|
+
if (colors.length <= limit) {
|
|
325
|
+
return colors;
|
|
326
|
+
}
|
|
327
|
+
const sorted = [...colors].sort((a, b) => {
|
|
328
|
+
const la = hexLightness(a.hex);
|
|
329
|
+
const lb = hexLightness(b.hex);
|
|
330
|
+
if (la === undefined && lb === undefined) {
|
|
331
|
+
return 0;
|
|
332
|
+
}
|
|
333
|
+
// Unknown lightness cannot be placed on the scale, so it goes to the end
|
|
334
|
+
// rather than being treated as black.
|
|
335
|
+
if (la === undefined) {
|
|
336
|
+
return 1;
|
|
337
|
+
}
|
|
338
|
+
if (lb === undefined) {
|
|
339
|
+
return -1;
|
|
340
|
+
}
|
|
341
|
+
return la - lb;
|
|
342
|
+
});
|
|
343
|
+
// Evenly spaced across the sorted range, both ends included.
|
|
344
|
+
const step = (sorted.length - 1) / (limit - 1);
|
|
345
|
+
const picked = [];
|
|
346
|
+
const seen = new Set();
|
|
347
|
+
for (let i = 0; i < limit; i++) {
|
|
348
|
+
const index = Math.round(i * step);
|
|
349
|
+
if (!seen.has(index)) {
|
|
350
|
+
seen.add(index);
|
|
351
|
+
picked.push(sorted[index]);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return picked;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Every prompt worth showing for one product.
|
|
358
|
+
*
|
|
359
|
+
* Built from the summary the design route already produces, so this costs no
|
|
360
|
+
* Printful call — the sync paid for the catalog lookups once.
|
|
361
|
+
*
|
|
362
|
+
* The axis that varies is whatever actually varies on the product: colour for
|
|
363
|
+
* apparel and embroidery, physical size for print media, which has no base
|
|
364
|
+
* colour by construction. Placement is the product's first core placement
|
|
365
|
+
* rather than every placement it offers — the tee exposes 17, and a page
|
|
366
|
+
* listing front, back, both sleeves and four DTF variants for each of five
|
|
367
|
+
* colours is 85 prompts nobody reads. The core placement is where the design
|
|
368
|
+
* goes; the rest are available, not intended.
|
|
369
|
+
*
|
|
370
|
+
* Returns an empty list when the product has no placement at all, which is the
|
|
371
|
+
* honest answer for a product whose design has nowhere to sit.
|
|
372
|
+
*/
|
|
373
|
+
function buildProductPrompts(input) {
|
|
374
|
+
const { design, style, artwork } = input;
|
|
375
|
+
const limit = Math.max(1, input.limit ?? MAX_PROMPTS_PER_PRODUCT);
|
|
376
|
+
const placement = design.core_placements[0] ?? design.placements[0];
|
|
377
|
+
if (!placement) {
|
|
378
|
+
return [];
|
|
379
|
+
}
|
|
380
|
+
/** The product-level facts, identical on every variant. */
|
|
381
|
+
const base = {
|
|
382
|
+
productClass: design.product_class,
|
|
383
|
+
...(design.technique ? { technique: design.technique } : {}),
|
|
384
|
+
techniques: design.techniques,
|
|
385
|
+
corePlacements: design.core_placements,
|
|
386
|
+
placements: design.placements,
|
|
387
|
+
...(design.material ? { material: design.material } : {}),
|
|
388
|
+
...(design.brand ? { brand: design.brand } : {}),
|
|
389
|
+
...(design.model ? { model: design.model } : {}),
|
|
390
|
+
...(design.dimensions ? { dimensions: design.dimensions } : {}),
|
|
391
|
+
// What lets the prompt name the product — "unisex t-shirt" rather than
|
|
392
|
+
// the "garment" fallback, and what selects its wear verb and framing.
|
|
393
|
+
...(design.catalog_product_id
|
|
394
|
+
? { catalogProductId: design.catalog_product_id }
|
|
395
|
+
: {}),
|
|
396
|
+
};
|
|
397
|
+
if (design.product_class === "print_media") {
|
|
398
|
+
// Size is the axis. The first few sizes rather than a spread: unlike
|
|
399
|
+
// colour, sizes arrive in a meaningful order and the small ones are what
|
|
400
|
+
// a store leads with.
|
|
401
|
+
const sizes = design.sizes.slice(0, limit);
|
|
402
|
+
const chosen = sizes.length > 0 ? sizes : [undefined];
|
|
403
|
+
return chosen.map((size) => buildMockupPrompt({
|
|
404
|
+
design: { ...base, ...(size ? { size } : {}) },
|
|
405
|
+
placement,
|
|
406
|
+
style,
|
|
407
|
+
artwork,
|
|
408
|
+
}));
|
|
409
|
+
}
|
|
410
|
+
const colors = pickColors(design.colors, limit);
|
|
411
|
+
const chosen = colors.length > 0 ? colors : [{ name: undefined, hex: undefined }];
|
|
412
|
+
return chosen.map((color) => buildMockupPrompt({
|
|
413
|
+
design: {
|
|
414
|
+
...base,
|
|
415
|
+
...(color.name ? { color: color.name } : {}),
|
|
416
|
+
...(color.hex ? { colorHex: color.hex } : {}),
|
|
417
|
+
},
|
|
418
|
+
placement,
|
|
419
|
+
style,
|
|
420
|
+
artwork,
|
|
421
|
+
}));
|
|
422
|
+
}
|
|
423
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Byb21wdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErS0Esb0NBMEJDO0FBNEhELDhDQXNFQztBQStGRCxrREE2REM7QUF6Z0JZLFFBQUEsYUFBYSxHQUErQjtJQUN2RDtRQUNFLEVBQUUsRUFBRSxXQUFXO1FBQ2YsS0FBSyxFQUFFLFdBQVc7UUFDbEIsT0FBTyxFQUNMLG9FQUFvRTtZQUNwRSxrRUFBa0U7UUFDcEUsVUFBVSxFQUNSLHFFQUFxRTtZQUNyRSxpQ0FBaUM7S0FDcEM7SUFDRDtRQUNFLEVBQUUsRUFBRSxRQUFRO1FBQ1osS0FBSyxFQUFFLFFBQVE7UUFDZixPQUFPLEVBQ0wsc0VBQXNFO1lBQ3RFLG9EQUFvRDtRQUN0RCxVQUFVLEVBQ1Isc0VBQXNFO1lBQ3RFLCtCQUErQjtLQUNsQztJQUNEO1FBQ0UsRUFBRSxFQUFFLFFBQVE7UUFDWixLQUFLLEVBQUUsUUFBUTtRQUNmLE9BQU8sRUFDTCx3RUFBd0U7WUFDeEUsZ0RBQWdEO1FBQ2xELFVBQVUsRUFDUixpRUFBaUU7S0FDcEU7Q0FDTyxDQUFBO0FBRVY7Ozs7R0FJRztBQUNILE1BQU0sZ0JBQWdCLEdBQTJCO0lBQy9DLEtBQUssRUFBRSxjQUFjO0lBQ3JCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsZ0JBQWdCLEVBQUUsb0JBQW9CO0lBQ3RDLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsU0FBUyxFQUFFLGNBQWM7SUFDekIsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixPQUFPLEVBQUUsRUFBRTtDQUNaLENBQUE7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLG1CQUFtQixHQUEyQztJQUNsRSxXQUFXO0lBQ1gsS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLCtCQUErQjtRQUN0QyxJQUFJLEVBQUUsOEJBQThCO1FBQ3BDLFNBQVMsRUFBRSwrQkFBK0I7UUFDMUMsUUFBUSxFQUFFLDhC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SyxDQUFDLENBQUE7SUFDL0MsTUFBTSxNQUFNLEdBQ1YsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFFcEUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDMUIsaUJBQWlCLENBQUM7UUFDaEIsTUFBTSxFQUFFO1lBQ04sR0FBRyxJQUFJO1lBQ1AsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM5QztRQUNELFNBQVM7UUFDVCxLQUFLO1FBQ0wsT0FBTztLQUNSLENBQUMsQ0FDSCxDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -7,6 +7,7 @@ const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
|
7
7
|
const printful_1 = require("../modules/printful");
|
|
8
8
|
const service_1 = require("../modules/printful/service");
|
|
9
9
|
const order_state_1 = require("../utils/order-state");
|
|
10
|
+
const bundle_1 = require("../utils/bundle");
|
|
10
11
|
/** Fulfillment metadata key that ties a Medusa fulfillment to a Printful parcel. */
|
|
11
12
|
const SHIPMENT_ID_KEY = "printful_shipment_id";
|
|
12
13
|
const applyStep = (0, workflows_sdk_1.createStep)("apply-printful-order-status", async (input, { container }) => {
|
|
@@ -104,10 +105,17 @@ const applyStep = (0, workflows_sdk_1.createStep)("apply-printful-order-status",
|
|
|
104
105
|
// line item id. create-printful-order.ts stamps external_id with the
|
|
105
106
|
// Medusa line item id on every item it sends, so this map joins a parcel's
|
|
106
107
|
// contents back to Medusa line items.
|
|
108
|
+
//
|
|
109
|
+
// Bundle members carry a synthetic external_id instead, since several
|
|
110
|
+
// items descend from one Medusa line and Printful needs them distinct.
|
|
111
|
+
// `medusaLineIdFor` resolves those back to the bundle line the customer
|
|
112
|
+
// actually bought — the only line Medusa can fulfil. Taking the id
|
|
113
|
+
// verbatim would match no line, clamp every parcel to zero, and leave
|
|
114
|
+
// the order permanently unshipped.
|
|
107
115
|
const printfulItemToMedusaItem = new Map();
|
|
108
116
|
for (const pfItem of pfOrder.items ?? []) {
|
|
109
117
|
if (pfItem.external_id) {
|
|
110
|
-
printfulItemToMedusaItem.set(Number(pfItem.id), pfItem.external_id);
|
|
118
|
+
printfulItemToMedusaItem.set(Number(pfItem.id), (0, bundle_1.medusaLineIdFor)(pfItem.external_id));
|
|
111
119
|
}
|
|
112
120
|
}
|
|
113
121
|
// Remaining unfulfilled quantity per Medusa line item. Decremented as we
|
|
@@ -140,16 +148,19 @@ const applyStep = (0, workflows_sdk_1.createStep)("apply-printful-order-status",
|
|
|
140
148
|
? [{ id: medusaId, quantity: Number(pi.quantity) }]
|
|
141
149
|
: [];
|
|
142
150
|
});
|
|
143
|
-
|
|
151
|
+
// Merged by line id: several bundle members in one parcel all resolve
|
|
152
|
+
// to the same Medusa line, and two entries for one line in a single
|
|
153
|
+
// fulfillment is not something Medusa expects.
|
|
154
|
+
const clamped = new Map();
|
|
144
155
|
for (const req of requested) {
|
|
145
156
|
const open = remaining.get(req.id) ?? 0;
|
|
146
157
|
const quantity = Math.min(req.quantity, open);
|
|
147
158
|
if (quantity > 0) {
|
|
148
|
-
clamped.
|
|
159
|
+
clamped.set(req.id, (clamped.get(req.id) ?? 0) + quantity);
|
|
149
160
|
remaining.set(req.id, open - quantity);
|
|
150
161
|
}
|
|
151
162
|
}
|
|
152
|
-
return clamped;
|
|
163
|
+
return [...clamped].map(([id, quantity]) => ({ id, quantity }));
|
|
153
164
|
};
|
|
154
165
|
let created = 0;
|
|
155
166
|
const skipped = [];
|
|
@@ -241,4 +252,4 @@ exports.applyOrderStatusWorkflow = (0, workflows_sdk_1.createWorkflow)("apply-pr
|
|
|
241
252
|
return new workflows_sdk_1.WorkflowResponse(applyStep(input));
|
|
242
253
|
});
|
|
243
254
|
exports.default = exports.applyOrderStatusWorkflow;
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktb3JkZXItc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9hcHBseS1vcmRlci1zdGF0dXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUE4RTtBQUM5RSw0REFHb0M7QUFDcEMsa0RBQXFEO0FBRXJELHlEQUdvQztBQUNwQyxzREFBNEQ7QUFhNUQsb0ZBQW9GO0FBQ3BGLE1BQU0sZUFBZSxHQUFHLHNCQUFzQixDQUFBO0FBRTlDLE1BQU0sU0FBUyxHQUFHLElBQUEsMEJBQVUsRUFDMUIsNkJBQTZCLEVBQzdCLEtBQUssRUFBRSxLQUE0QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNwRCxNQUFNLFFBQVEsR0FBMEIsU0FBUyxDQUFDLE9BQU8sQ0FBQywwQkFBZSxDQUFDLENBQUE7SUFDMUUsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDcEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVoRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxRQUFRLENBQUMseUJBQXlCLENBQUM7UUFDdkQsRUFBRSxFQUFFLEtBQUssQ0FBQyxZQUFZO0tBQ3ZCLENBQUMsQ0FBQTtJQUNGLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUMzQyxPQUFPLElBQUksNEJBQVksQ0FBYztZQUNuQyxNQUFNLEVBQUUsV0FBVztZQUNuQixNQUFNLEVBQUUsbUJBQW1CO1lBQzNCLGlCQUFpQixFQUFFLENBQUM7U0FDckIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHdFQUF3RTtJQUN4RSwrREFBK0Q7SUFDL0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFL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
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktb3JkZXItc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9hcHBseS1vcmRlci1zdGF0dXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUE4RTtBQUM5RSw0REFHb0M7QUFDcEMsa0RBQXFEO0FBRXJELHlEQUdvQztBQUNwQyxzREFBNEQ7QUFDNUQsNENBQWlEO0FBYWpELG9GQUFvRjtBQUNwRixNQUFNLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQTtBQUU5QyxNQUFNLFNBQVMsR0FBRyxJQUFBLDBCQUFVLEVBQzFCLDZCQUE2QixFQUM3QixLQUFLLEVBQUUsS0FBNEIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDcEQsTUFBTSxRQUFRLEdBQTBCLFNBQVMsQ0FBQyxPQUFPLENBQUMsMEJBQWUsQ0FBQyxDQUFBO0lBQzFFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFaEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sUUFBUSxDQUFDLHlCQUF5QixDQUFDO1FBQ3ZELEVBQUUsRUFBRSxLQUFLLENBQUMsWUFBWTtLQUN2QixDQUFDLENBQUE7SUFDRixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDM0MsT0FBTyxJQUFJLDRCQUFZLENBQWM7WUFDbkMsTUFBTSxFQUFFLFdBQVc7WUFDbkIsTUFBTSxFQUFFLG1CQUFtQjtZQUMzQixpQkFBaUIsRUFBRSxDQUFDO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsK0RBQStEO0lBQy9ELE1BQU0sUUFBUSxH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
|
|
@@ -7,6 +7,7 @@ const printful_1 = require("../modules/printful");
|
|
|
7
7
|
const mappers_1 = require("../utils/mappers");
|
|
8
8
|
const costs_1 = require("../utils/costs");
|
|
9
9
|
const shipping_rates_1 = require("../utils/shipping-rates");
|
|
10
|
+
const bundle_1 = require("../utils/bundle");
|
|
10
11
|
const createPrintfulOrderStep = (0, workflows_sdk_1.createStep)("printful-create-order", async (input, { container }) => {
|
|
11
12
|
const printful = container.resolve(printful_1.PRINTFUL_MODULE);
|
|
12
13
|
const orderModule = container.resolve(utils_1.Modules.ORDER);
|
|
@@ -29,7 +30,23 @@ const createPrintfulOrderStep = (0, workflows_sdk_1.createStep)("printful-create
|
|
|
29
30
|
});
|
|
30
31
|
const items = [];
|
|
31
32
|
const unresolved = [];
|
|
32
|
-
|
|
33
|
+
// A bundle is one Medusa line standing for several Printful products, and
|
|
34
|
+
// the loop below resolves one line to one item. Left unexpanded, a
|
|
35
|
+
// three-item bundle would ship a single thing — or, since a bundle variant
|
|
36
|
+
// has no Printful link of its own, be skipped as `no_printful_items` and
|
|
37
|
+
// ship nothing at all.
|
|
38
|
+
//
|
|
39
|
+
// Composition comes from each line's own metadata, written when the
|
|
40
|
+
// customer bought. A merchant editing the bundle afterwards must not
|
|
41
|
+
// change what an already-placed order ships.
|
|
42
|
+
const lines = (0, bundle_1.expandOrderLines)((order.items ?? []).map((item) => ({
|
|
43
|
+
id: item.id,
|
|
44
|
+
variant_id: item.variant_id,
|
|
45
|
+
title: item.title,
|
|
46
|
+
quantity: Number(item.quantity),
|
|
47
|
+
metadata: (item.metadata ?? {}),
|
|
48
|
+
})));
|
|
49
|
+
for (const item of lines) {
|
|
33
50
|
const variantId = item.variant_id;
|
|
34
51
|
if (!variantId) {
|
|
35
52
|
unresolved.push(item.id);
|
|
@@ -53,7 +70,7 @@ const createPrintfulOrderStep = (0, workflows_sdk_1.createStep)("printful-create
|
|
|
53
70
|
items.push({
|
|
54
71
|
sync_variant_id: Number(syncVariantId),
|
|
55
72
|
quantity: Number(item.quantity),
|
|
56
|
-
name: item.title,
|
|
73
|
+
name: item.title ?? undefined,
|
|
57
74
|
external_id: item.id,
|
|
58
75
|
});
|
|
59
76
|
}
|
|
@@ -164,4 +181,4 @@ exports.createPrintfulOrderWorkflow = (0, workflows_sdk_1.createWorkflow)("print
|
|
|
164
181
|
return new workflows_sdk_1.WorkflowResponse(result);
|
|
165
182
|
});
|
|
166
183
|
exports.default = exports.createPrintfulOrderWorkflow;
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByaW50ZnVsLW9yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jcmVhdGUtcHJpbnRmdWwtb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUE4RTtBQUM5RSxrREFBcUQ7QUFPckQsOENBQW1EO0FBQ25ELDBDQUF5RDtBQUN6RCw0REFBNkQ7QUFDN0QsNENBQWtEO0FBa0JsRCxNQUFNLHVCQUF1QixHQUFHLElBQUEsMEJBQVUsRUFDeEMsdUJBQXVCLEVBQ3ZCLEtBQUssRUFBRSxLQUErQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN2RCxNQUFNLFFBQVEsR0FBMEIsU0FBUyxDQUFDLE9BQU8sQ0FBQywwQkFBZSxDQUFDLENBQUE7SUFDMUUsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDcEQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsRSxNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUV6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdELElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixPQUFPLElBQUksNEJBQVksQ0FBZTtZQUNwQyxPQUFPLEVBQUUsSUFBSTtZQUNiLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGlCQUFpQjtTQUM5QyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDNUQsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSx1REFBdUQ7UUFDdkQsU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDO0tBQzdELENBQUMsQ0FBQTtJQUVGLE1BQU0sS0FBSyxHQUE2QixFQUFFLENBQUE7SUFDMUMsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFBO0lBRS9CLDBFQUEwRTtJQUMxRSxtRUFBbUU7SUFDbkUsMkVBQTJFO0lBQzNFLHlFQUF5RTtJQUN6RSx1QkFBdUI7SUFDdkIsRUFBRTtJQUNGLG9FQUFvRTtJQUNwRSxxRUFBcUU7SUFDckUsNkNBQTZDO0lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUEseUJBQWdCLEVBQzVCLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQ1gsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1FBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQTRCO0tBQzNELENBQUMsQ0FBQyxDQUNKLENBQUE7SUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUE7UUFDakMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDeEIsU0FBUTtRQUNWLENBQUM7UUFFRCxJQUFJLGFBQWlDLENBQUE7UUFFckMsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDaEUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULGFBQWEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUE7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUE0QixDQUFBO1lBQzdELElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ2xDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7WUFDdkQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUN0QyxTQUFRO1FBQ1YsQ0FBQztRQUVELEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxlQUFlLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUN0QyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUztZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUU7U0FDckIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLDRCQUFZLENBQWU7WUFDcEMsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsbUJBQW1CO1NBQzVCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksS0FBSyxDQUNiLFNBQVMsS0FBSyxDQUFDLFFBQVEsNEJBQTRCLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDM0UsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUE7SUFDbkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxRQUFRLDBCQUEwQixDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMzRCxNQUFNLFNBQVMsR0FBc0I7UUFDbkMsSUFBSSxFQUNGLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDM0QsVUFBVTtRQUNaLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUU7UUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUztRQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3JCLFVBQVUsRUFBRSxJQUFBLDBCQUFnQixFQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDO1FBQ3hELFlBQVksRUFBRSxXQUFXO1FBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7UUFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUztRQUM5QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTO0tBQ2hDLENBQUE7SUFFRCw0RUFBNEU7SUFDNUUsMkVBQTJFO0lBQzNFLHNFQUFzRTtJQUN0RSx5Q0FBeUM7SUFDekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNyRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLElBQUksNEJBQVksQ0FBZTtZQUNwQyxPQUFPLEVBQUUsSUFBSTtZQUNiLE1BQU0sRUFBRSxnQkFBZ0I7U0FDekIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELDBFQUEwRTtJQUMxRSwyRUFBMkU7SUFDM0Usa0VBQWtFO0lBQ2xFLE1BQU0sUUFBUSxHQUFHLElBQUEsb0NBQW1CLEVBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFFNUQsTUFBTSxPQUFPLEdBQTZCO1FBQ3hDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNyQixTQUFTO1FBQ1QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pDLEtBQUs7UUFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixLQUFLLEtBQUs7S0FDNUMsQ0FBQTtJQUVELElBQUksT0FBTyxDQUFBO0lBQ1gsSUFBSSxDQUFDO1FBQ0gsT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsMkNBQTJDO1FBQzNDLE1BQU0sUUFBUSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNqRCxNQUFNLEdBQUcsQ0FBQTtJQUNYLENBQUM7SUFFRCxNQUFNLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQztRQUN0QyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDWixpQkFBaUIsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxTQUFTO0tBQ3BDLENBQUMsQ0FBQTtJQUVGLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsMEVBQTBFO0lBQzFFLGlFQUFpRTtJQUNqRSxFQUFFO0lBQ0YsMkVBQTJFO0lBQzNFLHNFQUFzRTtJQUN0RSwwRUFBMEU7SUFDMUUsMEVBQTBFO0lBQzFFLHdDQUF3QztJQUN4QyxNQUFNLGFBQWEsR0FBRyxJQUFBLGdDQUF3QixFQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZELElBQUksQ0FBQztRQUNILGlFQUFpRTtRQUNqRSx3RUFBd0U7UUFDeEUsdUVBQXVFO1FBQ3ZFLHlFQUF5RTtRQUN6RSx5RUFBeUU7UUFDekUsK0NBQStDO1FBQy9DLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFELGdFQUFnRTtZQUNoRSwwQ0FBMEM7WUFDMUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQy9ELE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7YUFDM0IsQ0FBQyxDQUFBO1lBQ0YsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQzdDLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFO2FBQzdELENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsS0FBSyxDQUNWLGtCQUFrQixPQUFPLENBQUMsRUFBRSxxQ0FDMUIsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDakQsRUFBRSxDQUNILENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQWU7UUFDcEMsT0FBTyxFQUFFLEtBQUs7UUFDZCxpQkFBaUIsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUE7QUFFWSxRQUFBLDJCQUEyQixHQUFHLElBQUEsOEJBQWMsRUFDdkQsdUJBQXVCLEVBQ3ZCLENBQUMsS0FBK0IsRUFBRSxFQUFFO0lBQ2xDLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLG1DQUEyQixDQUFBIn0=
|