-
Notifications
You must be signed in to change notification settings - Fork 97
/
contract.php
473 lines (392 loc) · 95.7 KB
/
contract.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
<?php /* ##########################
[client_email]
[dev_email]
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABcAAAAHMCAYAAADyPguKAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFwKADAAQAAAABAAABzAAAAACnbWaJAABAAElEQVR4AezdCZwcZZn48fftnkwSLhkQIQEVERBv8QJvxIVdXE8w6O5y5JiuniQERWXxhPFWZOVMpqt6kiAguwZvWP9eK6io7KqLtwteK0oCuhIEIclkut//WzOZZI5+j+qu6q6e+bUfnO56nvf6dubot956SwgeCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACc11AznUAxo9A0wIrhg8QPaOvFfXC4UKqB3U9oYjKf2m6PgoigAACCCCAAAIIIIAAAggggAACCCCAQKoCTICnyklls14gCBcJJb4vpFhsHatULxHhwDetOQQRQAABBBBAAAEEEEAAAQQQQAABBBBAIFMBJsAz5aXyWSNQrqwQSg4nHs/iLUUxOFhPXI4CCCCAAAIIIIAAAggggAACCCCAAAIIINCyQE/LNVABArNZYMmmXtG3dYde9d3cY/Oimi7Iiabm9CiFAAIIIIAAAggggAACCCCAAAIIIIBASwKFlkpTGIHZLLByXd/Y5HerYwzC21utgvII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gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIT/DwTlJRd/jn0vAAAAAElFTkSuQmCC
95.76.252.101
December 29, 2022 at 8:43:03 PM GMT+2
-120
[dev_name]
[client_name]
###################################
1. The 2nd and 3rd lines above are the emails read by this PHP script from itself (used below as $lines[1] and $lines[2] respectively).
2. The 4th line ($lines[3] below) is the data for $DEV_SIGNATURE.
3. The $CLIENT_SIGNATURE is received by this script from itself when second person signs the contract.
*/
$phpName = basename($_SERVER['PHP_SELF']) ? basename($_SERVER['PHP_SELF']) : 'index.php';
$fileName = substr($phpName , 0, -4);
$htmlName = $fileName.'.html';
// If the filename is (or starts with) "test" or "demo" the PHP file won't delete itself, nor will it redirect to the HTML contract (when one exists)
if ( substr($fileName,0,4) == 'test' || substr($fileName,0,4) == 'demo' ) {
$selfDelete = 0;
}
else {
$selfDelete = 1;
}
$lines = file(__FILE__);
$clientEmail = format($lines[1]);
$devEmail = format($lines[2]);
$DEV_SIGNATURE = format($lines[3]);
$devIP = format($lines[4]);
$devTimestamp = format($lines[5]);
$devTimeOffset = format($lines[6]);
$devName = format($lines[7]);
$clientName = format($lines[8]);
// Trim and ignore [placeholders]
function format($text) {
$text = trim($text);
$firstChar = substr($text, 0, 1);
$lastChar = substr($text, -1, 1);
if ($firstChar == '[' && $lastChar == ']')
return '';
else
return $text;
}
// Gets the current file URL and replaces the .php extension with .html
function getHtmlUrl() {
$url = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] : 'https://'.$_SERVER["SERVER_NAME"];
$url .= ( $_SERVER["SERVER_PORT"] !== 80 ) ? ":".$_SERVER["SERVER_PORT"] : "";
$url .= $_SERVER["REQUEST_URI"];
$url = substr($url,0,-4) . '.html';
return $url;
}
/**
The HTML code (and some PHP) is kept in PHP variables like $CONTRACT_HTML, $FOOTER, $CONTRACT_SIGNED_PHP, and $CLIENT_DATE_IP_COMPILED.
**/
// This gets executed when Client signs;
// the functions are used in $CLIENT_DATE_IP_PHP
$CONTRACT_SIGNED_PHP = '
$phpName = basename($_SERVER["PHP_SELF"]) ? basename($_SERVER["PHP_SELF"]) : "index.php";
$fileName = substr($phpName , 0, -4);
$htmlName = $fileName.".html";
$pdfName = $fileName.".pdf";
// Function to get the client IP address
function get_client_ip_env() {
$ipaddress = "";
if (getenv("HTTP_CLIENT_IP"))
$ipaddress = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ipaddress = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("HTTP_X_FORWARDED"))
$ipaddress = getenv("HTTP_X_FORWARDED");
else if(getenv("HTTP_FORWARDED_FOR"))
$ipaddress = getenv("HTTP_FORWARDED_FOR");
else if(getenv("HTTP_FORWARDED"))
$ipaddress = getenv("HTTP_FORWARDED");
else if(getenv("REMOTE_ADDR"))
$ipaddress = getenv("REMOTE_ADDR");
else
$ipaddress = "UNKNOWN";
return $ipaddress;
}
// Function to get the client date converted to the same GMT as the dev date
function get_client_date($receivedOffset) {
//$receivedOffset comes negative and in minutes, eg: -120 for GMT+2
$offset = -1 * $receivedOffset / 60; // GMT offset
$is_DST = FALSE; // observing daylight savings?
$timezone_name = timezone_name_from_abbr("", $offset * 3600, $is_DST);
date_default_timezone_set($timezone_name);
return date("F j, Y") ." at ". date("g:i:s A") ." GMT" . sprintf("%+d", $offset);
}
?>';
$CONTRACT_HTML='
<h1>Contract of work</h1><p>This Contract is made and entered into as of the date set forth below by and between <strong> Alice Williams </strong> (hereinafter referred to as "Developer") and <strong> Bob Smith </strong> (hereinafter referred to as "Client").</p><h2>I. Agreement of parties</h2><p>Client hereby hires Developer to rebuild the current website <strong> bobswebsite.com, </strong> for the estimated total price of <strong> $PRICE. </strong> Developer agrees to provide quality service and to answer to Client\'s requests in a timely manner.</p><p>The payment plan is outlined in section VII of this contract.</p><h2>II. TERM</h2><p>This contract shall commence upon the first payment, as outlined in the payment plan and shall remain effective until the services are completed and delivered.</p><h2>III. Legal matters and copyrights</h2><p>Client hereby guarantees to Developer that any elements of text, graphics, photos, trademarks or other artwork that Client provides for inclusion in the website are either owned by them or that they have the permission to use them.</p><p>Upon receipt of the final payment, the following copyright assignment shall automatically occur:</p><ol><li>Client will own the graphics, virtual elements, text content, photographs, and other data provided, unless someone else owns them.</li><li>Developer owns the HTML markup, CSS and other code and they license it to Client for use on only this project. Developer can reserve the right to display, with Client\'s consent, the work as part of the portfolio.</li></ol><h2>IV. Modifications</h2><p>This contract may be modified by the parties in writing. All notices under this contract must be transmitted in writing by email and will only be effective upon confirmation of receipt.</p><h2>V. Termination</h2><p>Either party may terminate this contract at any time, effective immediately upon notice or mutual agreement.</p><p>In the event of termination, Developer shall be compensated for services performed through the date of termination in one of the following amounts, whichever is greater, together with any additional costs incurred trough and up to the date of cancellation:</p><ol><li class="ql-indent-1">any advanced payment,</li><li class="ql-indent-1">a prorated portion of the fees due, or</li><li class="ql-indent-1">hourly fees for work performed by Developer at the time of the termination.</li></ol><h2>VI. Force majeure</h2><p>Developer shall not be deemed in breach of this contract if they are unable to complete the services or any portion of them due to fire, earthquake, war, labor dispute, illness, internet breaches, or any other technical issues that are beyond their control. In the event of a <em> force majeure, </em> Developer shall give notice to Client of their inability to perform or of any delay in completing the services and shall propose revisions to the schedule for completion.</p><h2>VII. Payment plan</h2><p>Payments shall be made as follows:</p><ul><li>50% of total estimated fee will be required to commence work, after this contract has been approved and signed by both parties.</li><li>50% upon project closure.</li></ul><p>Any extra time required outside the project services mentioned in section I of this contract, will be billed at a rate of <strong> $FEE </strong> per hour.</p>
';
$DEV_SIGNATURE = '<img id="dev_signature" src="' . $DEV_SIGNATURE . '" >';
$CLIENT_SIGNATURE = isset($_POST['client_signature']) ? $_POST['client_signature'] : null;
if (substr( $CLIENT_SIGNATURE, 0, 22 ) === 'data:image/png;base64,') {
$CLIENT_SIGNATURE = '<img id="hk" src="' . htmlspecialchars($CLIENT_SIGNATURE) . '" >';
} else {
$CLIENT_SIGNATURE = null;
}
/**
The HTML code (and some PHP) is kept in PHP variables like $CONTRACT_HTML, $FOOTER, $CONTRACT_SIGNED_PHP, and $CLIENT_DATE_IP_COMPILED.
**/
function headerWithTitle($title) {
return '<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>' . $title . '</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta name="robots" content="noindex">
<link rel="preconnect" href="https://cdn.skypack.dev">
<link rel="preconnect" href="https://fonts.gstatic.com">
<link rel="preconnect" href="https://fonts.googleapis.com">
<style>@import url(https://fonts.googleapis.com/css?family=Libre+Baskerville:400,700,400italic) ;@import url(https://fonts.googleapis.com/css?family=Arapey) ;@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wdth,wght@75,600;100,400;100,600;100,700;100,800) ;@layer reset, accessibility, animated-entrances, forms;@layer from-quill-editor, from-quill-editor-overrides;@layer utility;@layer signatures, buttons;@layer modal;@layer contract-typography;@layer reset{@media print{.noprint{display:none!important}}}@layer reset{*,:after,:before{box-sizing:border-box}body,figure,h1,h2,h3,h4,h5,p,picture{margin:0}h1,h2,h3,h4,h5,h6{font-weight:400}img,picture{display:block;height:auto;max-width:100%}button,input,select,textarea{font:inherit}}@layer colors{:root{--clr-light-hsl:20 80% 98%;--clr-dark-hsl:200 20% 25%;--clr-darker-hsl:200 59% 22%;--clr-primary-hsl:200 75% 30%;--clr-danger-hsl:20 100% 30%;--clr-success-hsl:165 75% 30%;--clr-warning-hsl:36 100% 30%;--clr-blue-500:#136086;--clr-blue-600:#105070;--clr-blue-700:#0d4059;--clr-red-500:#863913;--clr-red-600:#703010;--clr-red-700:#59260d;--clr-green-500:#138669;--clr-green-600:#107058;--clr-green-700:#0d5946;--clr-brown-500:#865813;--clr-brown-600:#704910;--clr-brown-700:#593b0d;--clr-blue-desaturated-500:#395360;--clr-blue-desaturated-600:#263740;--clr-blue-desaturated-700:#131c20;--clr-red-desaturated-500:#604639;--clr-red-desaturated-600:#402f26;--clr-red-desaturated-700:#201713;--clr-green-desaturated-500:#396056;--clr-green-desaturated-600:#264039;--clr-green-desaturated-700:#13201d;--clr-brown-desaturated-500:#605039;--clr-brown-desaturated-600:#403626;--clr-brown-desaturated-700:#201b13}}@layer from-quill-editor{.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-increment:list-0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}}@layer from-quill-editor-overrides{.ql-editor{padding-block:1.5rem;padding-inline:2rem;padding-inline:clamp(.5rem,2.5vw,3rem);padding-inline:clamp(20px,5vw,35px)}.ql-editor>:where(:not(:first-child)){margin-block-start:var(--flow-space,1.5rem)}.ql-editor :where(ul,ol)>:where(:not(:first-child)){margin-block-start:.25rem}.ql-editor :is(ol,ul){padding:0}.ql-editor>p+:is(ul,ol){margin-block-start:.25rem}}@layer accessibility{:where(:focus-visible){outline:3px solid #000;outline-offset:3px}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.skip-to-content{background-color:hsl(var(--clr-darker-hsl));border-radius:8px;color:hsl(var(--clr-light-hsl));display:block;left:0;margin-inline:auto;margin:0 auto!important;max-width:max-content;opacity:0;outline-offset:1px;padding:.5em 1em;position:fixed;right:0;text-decoration:none;top:1.5rem;transform:translateY(calc(-100% - 5rem - 1px));transition:transform .25s ease-in;z-index:9999}.skip-to-content:hover{background-color:hsl(var(--clr-light-hsl));color:hsl(var(--clr-darker-hsl))}.skip-to-content:focus{opacity:1;transform:translateY(0)}}@layer accessibility{@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:auto!important}.animate{animation:none!important}}}@layer buttons{.button,.ql-html-buttonCancel,.ql-html-buttonOk{align-items:center;appearance:none;-webkit-appearance:none;-moz-appearance:none;background:var(--clr-500);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-family:Open Sans,sans-serif;font-size:16px;font-weight:400;gap:0;justify-content:center;letter-spacing:.025em;line-height:26px;margin:0;max-width:max-content;overflow:hidden;padding:10px 35px;padding-inline:clamp(20px,5vw,35px);padding-inline:clamp(20px,2vw,35px);text-decoration:none;transition:outline .4s cubic-bezier(.22,1,.36,1);-webkit-user-select:none;user-select:none}.button:hover:not([disabled]),.ql-html-buttonCancel:hover:not([disabled]),.ql-html-buttonOk:hover:not([disabled]){background:var(--clr-600)}.button:active:not([disabled]),.ql-html-buttonCancel:active:not([disabled]),.ql-html-buttonOk:active:not([disabled]){background:var(--clr-700);transform:translate(2px 3px);transform:scale(.975);transition:transform .3s cubic-bezier(.22,1,.36,1),outline .4s cubic-bezier(.22,1,.36,1),background-color .2s linear}.button[disabled],.ql-html-buttonCancel[disabled],.ql-html-buttonOk[disabled]{cursor:default;filter:grayscale(.75) contrast(.75) brightness(.96);transition:all .4s cubic-bezier(.22,1,.36,1)}.button.icon-button{gap:0;padding:0;place-self:center}.button.icon-button>*{align-items:center;align-items:space-evenly;display:inline-flex;display:flex;gap:.5ex;height:100%;justify-content:center;padding:10px 35px;padding-inline:clamp(20px,2.5vw,35px);padding-inline:clamp(20px,min(2.5vw,1.5em),35px)}.button.icon-button .icon{background-color:transparent;background-color:rgba(0,0,0,.16);font-size:1.5em;padding-inline:clamp(20px,min(2.5vw,1.5em),24px)}.button.icon-button .icon.small-padding{padding-inline:10px}.button,.ql-html-buttonCancel,.ql-html-buttonOk{--clr-500:var(--clr-blue-desaturated-500);--clr-600:var(--clr-blue-desaturated-600);--clr-700:var(--clr-blue-desaturated-700)}.button.primary,.ql-html-buttonOk{--clr-500:var(--clr-blue-500);--clr-600:var(--clr-blue-600);--clr-700:var(--clr-blue-700)}.button.danger{--clr-500:var(--clr-red-500);--clr-600:var(--clr-red-600);--clr-700:var(--clr-red-700)}.button.success{--clr-500:var(--clr-green-desaturated-500);--clr-600:var(--clr-green-desaturated-600);--clr-700:var(--clr-green-desaturated-700)}.button.warning,.ql-html-buttonCancel{--clr-500:var(--clr-red-desaturated-500);--clr-600:var(--clr-red-desaturated-600);--clr-700:var(--clr-red-desaturated-700)}.invert-colors .button{background:var(--clr-600);border:1px solid hsla(0,0%,100%,.1);filter:invert(1) hue-rotate(180deg);outline-color:#fff}.invert-colors .button:hover:not([disabled]){background:var(--clr-700)}.invert-colors .button:active:not([disabled]){background:var(--clr-500)}.invert-colors .button[disabled]{cursor:default;filter:grayscale(.75) contrast(.75) brightness(.96) invert(1) hue-rotate(180deg)}.invert-colors .button>*{background-color:rgba(0,0,0,.16)}.invert-colors .button .icon{background-color:transparent;border-inline-start:1px solid hsla(0,0%,100%,.05)}}@layer utility{.flexi{align-items:center;display:flex;flex-wrap:wrap;gap:clamp(20px,5vw,35px);justify-content:flex-start}.flow>:where(:not(:first-child)){margin-block-start:var(--flow-space,1em)}.hidden{display:none!important}@media (max-width:30em){.hide-small{display:none!important}}@media (max-width:50em){.hide-medium{display:none!important}}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.border-top{border-top:1px solid hsl(var(--clr-primary-hsl)/.25);margin-block-start:2rem;padding-block-start:2.5rem}.margin-top{margin-block-start:3rem}.d-block{display:blok}}@layer forms{:where(input:is([type=text],[type=email],[type=password]),textarea){appearance:none;background-color:hsl(var(--clr-light-hsl)/.6);border:1.5px solid hsl(var(--clr-dark-hsl)/.5);border-radius:.25rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);color:hsl(var(--clr-dark-hsl)/1);font-size:1rem;mix-blend-mode:luminosity;outline-offset:0;outline-width:1.5px;padding-block:.35rem;padding-inline:.75rem;position:relative;transition:all .3s cubic-bezier(.22,1,.36,1)}:where(input:is([type=text],[type=email],[type=password]),textarea):focus{background-color:hsl(var(--clr-light-hsl)/1);border:1.5px solid hsl(var(--clr-darker-hsl)/.8);color:hsl(var(--clr-darker-hsl)/1)}:where(input:is([type=text],[type=email],[type=password]),textarea)::placeholder{color:hsl(var(--clr-dark-hsl)/.75)}:where(input:is([type=text],[type=email],[type=password]),textarea):focus::placeholder{color:hsl(var(--clr-dark-hsl)/.75)}label{color:var(--clr-blue-desaturated-700);font-weight:600;letter-spacing:-.0175em}label:has(svg){align-items:center;column-gap:.25em;display:flex;justify-content:center}label:has(svg) svg{color:var(--clr-blue-700);height:1.5rem;width:1.5rem}}@layer contract-typography{:root{--step--2:clamp(0.56rem,calc(0.8rem - 0.51vw),0.69rem);--step--1:clamp(0.75rem,calc(0.9rem - 0.32vw),0.83rem);--step-0:clamp(1.00rem,1rem,1.00rem);--step-1:clamp(1.20rem,calc(1.1rem + 0.51vw),1.33rem);--step-2:clamp(1.44rem,calc(1.18rem + 1.3vw),1.78rem);--step-3:clamp(1.73rem,calc(1.23rem + 2.47vw),2.37rem);--step-4:clamp(2.07rem,calc(1.24rem + 4.18vw),3.16rem);--step-5:clamp(2.49rem,calc(1.16rem + 6.63vw),4.21rem)}#content{background:#fff;margin:2rem 2rem 6rem;margin-inline:0;margin-inline:auto;max-width:calc(100% - 2rem);max-width:100%;padding:0 2em;padding-inline:2rem;width:clamp(10rem,60rem,80rem);width:52em;width:210mm}#content,#main{font-family:Libre Baskerville,serif;font-size:var(--step-0);line-height:1.5;line-height:1.75}h2,h3,h4,h5,h6{margin-block-start:1.75em}h1{border-style:solid;border-width:3px 0 1px;font-family:Arapey,serif;font-size:var(--step-2);font-weight:400;letter-spacing:.15em;margin-block-end:2.5rem;margin-block-start:1rem;padding:.5em 0;position:relative;text-align:center}h1,h2{line-height:1.2em;text-transform:uppercase}h2{font-family:Open Sans Condensed,sans-serif;font-family:Open Sans,sans-serif;font-size:var(--step-1);font-variation-settings:"wdth" 75;font-weight:600;letter-spacing:.025em}h3,h4,h5,h6{font-weight:700}}@layer signatures{.compiled-signatures{display:flex;flex-wrap:wrap;gap:2rem;justify-content:space-around}.compiled-signature{align-items:start;display:grid;font-size:.75em;max-width:min(50%,330px);max-width:clamp(calc(50% - 2rem),348px,100%);min-width:300px;min-width:200px}.compiled-signature img{background:#fff;border:1px solid rgba(3,33,48,.25);margin-block:.15rem}#dev_signature,#hk{display:block;max-width:min(333px,100%);max-width:min(370px,100%)}#dev_signature[src=null]{display:none}.date-ip{font-family:Open Sans Condensed,sans-serif;font-family:Open Sans,sans-serif;font-size:1.2em;font-variation-settings:"wdth" 75;font-weight:400;letter-spacing:.025em;line-height:1.2em}#ui-unsigned{margin:0}#ui-signed{clear:both}#content>:not(#ui-unsigned,#dev_signature){transition:opacity .3s ease-out}#signature-container{display:grid;gap:1.5rem;place-items:start}@media (min-width:40rem){#signature-container{place-items:end}}#canvas-container{aspect-ratio:188/58.66;background:#fff;isolation:isolate;max-width:100%;position:relative;transition:max-width .4s cubic-bezier(.22,1,.36,1),margin .6s ease-in-out;-webkit-user-select:none;user-select:none;width:100%}#canvas-container:before{border-bottom:2px solid #61594f;content:"";display:block;height:0;inset:70% 7.5% 0 7.5%;opacity:.95;pointer-events:none;position:absolute;z-index:-1}}@layer signatures{@media (max-width:40em){#canvas-container{aspect-ratio:200/80}}}@layer signatures{#generator-signature-pad,#signature-pad{border:2px dashed rgba(3,33,48,.75);box-shadow:inset 0 0 5px 1px #ddd;height:100%;left:0;position:absolute;top:0;width:100%}#signature-controls{align-items:flex-start;display:flex;flex-direction:row;gap:1.5rem;justify-content:center;width:100%}.loading-signed{align-items:center;justify-content:center}@media (min-width:40rem){.loading-signed{justify-content:center}}.loading-signed:not(.hidden){display:flex}.to-go{opacity:1;transform:none;transition:all .2s cubic-bezier(.26,.53,.74,1.48),scale 1s ease-out}.to-go.gone{opacity:0;transform:translateY(-20px)}#canvas-container.just-signed{max-width:333px}@media (min-width:40rem){#canvas-container.just-signed{margin-top:calc(-330px - 2rem)}}#canvas-container.just-signed #signature-pad{border:1px dashed rgba(3,33,48,.25);box-shadow:inset 0 0 2px 1px hsla(0,0%,87%,.25)}#canvas-container.just-signed:before{opacity:0}}@layer modal{.modal{--shadow-color:200 3% 15%;--shadow-strength:5%;--shadow-6:0 -1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 3px 2px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 7px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 12px 10px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 22px 18px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 41px 33px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 6%)),0 100px 80px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));border:3px solid hsl(var(--shadow-color));border-radius:1.5rem;box-shadow:var(--shadow-6);margin-block-start:auto;max-width:calc(100% - 1rem);padding:0;position:fixed;z-index:999}.modal::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-image:linear-gradient(132deg,rgba(31,39,41,.6),rgba(35,41,47,.6));cursor:pointer}.close-button{border-radius:50%;height:32px;margin:1rem 0 0;max-width:32px;padding:0;position:relative;vertical-align:top;width:32px}.close-button:active{background-color:#000;transition:none}.close-button:before{height:2px;width:50%}.close-button:after{height:50%;width:2px}.close-button:after,.close-button:before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.qr-code-container{display:grid;gap:1rem;justify-items:end;margin-block-end:3.5rem;margin-inline:1rem}#generator-qr-code,#qr-code{display:block;image-rendering:pixelated;margin:auto;max-width:90%;width:min(500px,90vw)}}@layer animated-entrances{@media (prefers-reduced-motion:reduce){.animate{animation:none!important}}}@layer animated-entrances{.delay-1{animation-delay:.6s}.delay-2{animation-delay:.7s}.delay-3{animation-delay:.8s}.delay-4{animation-delay:.9s}.delay-5{animation-delay:1s}.delay-6{animation-delay:1.1s}.delay-7{animation-delay:1.2s}.delay-8{animation-delay:1.3s}.delay-9{animation-delay:1.4s}.delay-10{animation-delay:1.5s}.delay-11{animation-delay:1.6s}.delay-12{animation-delay:1.7s}.delay-13{animation-delay:1.8s}.delay-14{animation-delay:1.9s}.delay-15{animation-delay:2s}.delay-16{animation-delay:2.1s}:where(.animate){animation-delay:.5s;animation-duration:.75s;animation-fill-mode:backwards;animation-name:animate-fade;animation-timing-function:cubic-bezier(.26,.53,.74,1.48)}:where(.animate).fade{animation-name:animate-fade;animation-timing-function:ease}:where(.animate).pop{animation-name:animate-pop}:where(.animate).blur{animation-name:animate-blur;animation-timing-function:ease}:where(.animate).glow{animation-name:animate-glow;animation-timing-function:ease}:where(.animate).grow{animation-name:animate-grow}:where(.animate).splat{animation-name:animate-splat}:where(.animate).roll{animation-name:animate-roll}:where(.animate).flip{animation-name:animate-flip;perspective:1000px;transform-style:preserve-3d}:where(.animate).spin{animation-name:animate-spin;perspective:1000px;transform-style:preserve-3d}:where(.animate).slide{animation-name:animate-slide}:where(.animate).drop{animation-name:animate-drop;animation-timing-function:cubic-bezier(.77,.14,.91,1.25)}:where(.animate).drop-up{animation-name:animate-drop-up;animation-timing-function:cubic-bezier(.77,.14,.91,1.25)}}@layer animated-entrances{@media screen{@keyframes animate-fade{0%{opacity:0}to{opacity:1}}@keyframes animate-pop{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes animate-blur{0%{filter:blur(15px);opacity:0}to{filter:blur(0);opacity:1}}@keyframes animate-glow{0%{filter:brightness(3) saturate(3);opacity:0;transform:scale(.8)}to{filter:brightness(1) saturate(1);opacity:1;transform:scale(1)}}@keyframes animate-grow{0%{opacity:0;transform:scaleY(0);visibility:hidden}to{opacity:1;transform:scale(1)}}@keyframes animate-splat{0%{opacity:0;transform:scale(0) rotate(20deg) translateY(-30px)}70%{opacity:1;transform:scale(1.1) rotate(15deg)}85%{opacity:1;transform:scale(1.1) rotate(15deg) translateY(-10px)}to{opacity:1;transform:scale(1) rotate(0) translate(0)}}@keyframes animate-roll{0%{opacity:0;transform:scale(0) rotate(1turn)}to{opacity:1;transform:scale(1) rotate(0deg)}}@keyframes animate-flip{0%{opacity:0;transform:rotateX(-120deg) scale(.9)}to{opacity:1;transform:rotateX(0deg) scale(1)}}@keyframes animate-spin{0%{opacity:0;transform:rotateY(-120deg) scale(.9)}to{opacity:1;transform:rotateY(0deg) scale(1)}}@keyframes animate-slide{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translate(0)}}@keyframes animate-drop{0%{opacity:0;transform:translateY(-300px) scale(.9,1.1)}95%{opacity:1;transform:translate(0) scale(.9,1.1)}96%{opacity:1;transform:translate(10px) scale(1.2,.9)}97%{opacity:1;transform:translate(-10px) scale(1.2,.9)}98%{opacity:1;transform:translate(5px) scale(1.1,.9)}99%{opacity:1;transform:translate(-5px) scale(1.1,.9)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes animate-drop-up{0%{opacity:0;transform:translateY(300px) scale(.9,1.1)}95%{opacity:1;transform:translate(0) scale(.9,1.1)}96%{opacity:1;transform:translate(-10px) scale(1.2,.9)}97%{opacity:1;transform:translate(10px) scale(1.2,.9)}98%{opacity:1;transform:translate(-5px) scale(1.1,.9)}99%{opacity:1;transform:translate(5px) scale(1.1,.9)}to{opacity:1;transform:translate(0) scale(1)}}}}details{--clr-500:var(--clr-blue-500);--clr-600:var(--clr-blue-600);--clr-700:var(--clr-blue-700);--clr-500-desaturated:var(--clr-blue-desaturated-500);--clr-600-desaturated:var(--clr-blue-desaturated-600);--clr-700-desaturated:var(--clr-blue-desaturated-700);max-height:1.5em;overflow:hidden;transition:all .4s ease-in-out}details[open]{max-height:90vh}details[open] summary{padding-block-end:.5em}details.danger{--clr-primary-hsl:var(--clr-danger-hsl);--clr-500:var(--clr-red-500);--clr-600:var(--clr-red-600);--clr-700:var(--clr-red-700);--clr-500-desaturated:var(--clr-red-desaturated-500);--clr-600-desaturated:var(--clr-red-desaturated-600);--clr-700-desaturated:var(--clr-red-desaturated-700)}details.success{--clr-primary-hsl:var(--clr-success-hsl);--clr-500:var(--clr-green-500);--clr-600:var(--clr-green-600);--clr-700:var(--clr-green-700);--clr-500-desaturated:var(--clr-green-desaturated-500);--clr-600-desaturated:var(--clr-green-desaturated-600);--clr-700-desaturated:var(--clr-green-desaturated-700)}details.warning{--clr-primary-hsl:var(--clr-warning-hsl);--clr-500:var(--clr-brown-500);--clr-600:var(--clr-brown-600);--clr-700:var(--clr-brown-700);--clr-500-desaturated:var(--clr-brown-desaturated-500);--clr-600-desaturated:var(--clr-brown-desaturated-600);--clr-700-desaturated:var(--clr-brown-desaturated-700)}details>summary{color:var(--clr-500);cursor:pointer;font-family:inherit;font-size:16px;font-weight:700;letter-spacing:-.025em;line-height:26px;max-width:min-content;transition:outline .4s cubic-bezier(.22,1,.36,1);-webkit-user-select:auto;user-select:auto;white-space:nowrap}details>summary:hover{background:none;color:var(--clr-700)}details>summary:focus-visible{border-radius:8px;color:#000;outline:none;text-decoration:underline;text-decoration-thickness:2;text-underline-position:under}details>summary:focus-visible::marker{color:inherit}details>summary::marker{color:var(--clr-600-desaturated);color:hsl(var(--clr-primary-hsl)/.8)}details>summary:hover::marker{color:inherit}details>summary:active{transform:scale(.975);transition:transform .3s cubic-bezier(.22,1,.36,1),outline .4s cubic-bezier(.22,1,.36,1),background-color .2s linear}details>:nth-child(2):last-child{background:hsl(var(--clr-primary-hsl)/.1);border:1.5px solid hsl(var(--clr-primary-hsl)/.075);border-radius:8px;gap:1rem;justify-content:flex-start;padding:.75rem 1rem 1rem;position:relative}details>:nth-child(2):last-child label{color:var(--clr-700-desaturated);font-weight:600;letter-spacing:-.0175em}details>:nth-child(2):last-child>p:last-child:not([class]){color:var(--clr-500-desaturated)}</style>
</head>
<body>
<div id="content" class="ql-editor">
';
}
if($CLIENT_SIGNATURE==null) {
/**
⌛ Waiting for Client to sign: include signature elements and javascript
**/
$HEADER = headerWithTitle('Unsigned Contract');
$FOOTER = '
<div id="ui-unsigned">
<form method="post" class="noprint" id="signature_form">
<div id="signature-container">
<div id="canvas-container">
<canvas id="signature-pad" class="signature-pad" width="188" height="58.66"></canvas>
</div>
</div>
<div class="animate slide">
<div class="no-print margin-top invert-colors flexi | to-go | animate slide">
<button id="reset" title="Clear Signature" type="button" class="icon-button button warning">
<span class="hide-medium">Clear</span>
<span class="icon">
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" height="1em"
width="1em" xmlns="http://www.w3.org/2000/svg">
<path d="M20.454,19.028h-7.01l6.62-6.63a2.935,2.935,0,0,0,.87-2.09,2.844,2.844,0,0,0-.87-2.05l-3.42-3.44a2.93,2.93,0,0,0-4.13.01L3.934,13.4a2.946,2.946,0,0,0,0,4.14l1.48,1.49H3.554a.5.5,0,0,0,0,1h16.9A.5.5,0,0,0,20.454,19.028Zm-7.24-13.5a1.956,1.956,0,0,1,2.73,0l3.42,3.44a1.868,1.868,0,0,1,.57,1.35,1.93,1.93,0,0,1-.57,1.37l-5.64,5.64-6.15-6.16Zm-1.19,13.5h-5.2l-2.18-2.2a1.931,1.931,0,0,1,0-2.72l2.23-2.23,6.15,6.15Z"></path>
</svg>
</span>
</button>
<button id="show-modal-qr" type="button" class="open-button | icon-button button">
<span class="hide-small">Sign on mobile</span>
<span class="icon">
<svg stroke="currentColor" fill="currentColor" stroke-width="0" version="1.1" viewBox="0 0 16 16" height="1em"
width="1em" xmlns="http://www.w3.org/2000/svg">
<path d="M5 1h-4v4h4v-4zM6 0v0 6h-6v-6h6zM2 2h2v2h-2zM15 1h-4v4h4v-4zM16 0v0 6h-6v-6h6zM12 2h2v2h-2zM5 11h-4v4h4v-4zM6 10v0 6h-6v-6h6zM2 12h2v2h-2zM7 0h1v1h-1zM8 1h1v1h-1zM7 2h1v1h-1zM8 3h1v1h-1zM7 4h1v1h-1zM8 5h1v1h-1zM7 6h1v1h-1zM7 8h1v1h-1zM8 9h1v1h-1zM7 10h1v1h-1zM8 11h1v1h-1zM7 12h1v1h-1zM8 13h1v1h-1zM7 14h1v1h-1zM8 15h1v1h-1zM15 8h1v1h-1zM1 8h1v1h-1zM2 7h1v1h-1zM0 7h1v1h-1zM4 7h1v1h-1zM5 8h1v1h-1zM6 7h1v1h-1zM9 8h1v1h-1zM10 7h1v1h-1zM11 8h1v1h-1zM12 7h1v1h-1zM13 8h1v1h-1zM14 7h1v1h-1zM15 10h1v1h-1zM9 10h1v1h-1zM10 9h1v1h-1zM11 10h1v1h-1zM13 10h1v1h-1zM14 9h1v1h-1zM15 12h1v1h-1zM9 12h1v1h-1zM10 11h1v1h-1zM12 11h1v1h-1zM13 12h1v1h-1zM14 11h1v1h-1zM15 14h1v1h-1zM10 13h1v1h-1zM11 14h1v1h-1zM12 13h1v1h-1zM13 14h1v1h-1zM10 15h1v1h-1zM12 15h1v1h-1zM14 15h1v1h-1z">
</path>
</svg>
</span>
</button>
<button id="submit-btn" disabled
style="margin-inline-start: auto;"
type="submit" class="icon-button button success">
<span>Sign</span>
<span class="icon">
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" height="1em"
width="1em" xmlns="http://www.w3.org/2000/svg">
<path fill="none" stroke-width="2" d="M2,12 L22,12 M13,3 L22,12 L13,21"></path>
</svg>
</span>
</button>
</div>
</div>
<div class="flow" style="max-width: 330px; margin-inline-start: auto;">
<h2 class="margin-top loading-signed hidden | animate slide" style="color: var(--clr-green-500); font-weight: 700;">Saving contract…</h2>
<small class="loading-signed hidden | animate slide delay-16"
style="font-family: \'Open Sans\'; font-weight: 600; color: var(--clr-blue-700);">
This shouldn\'t take more than a minute.
</small>
</div>
<input type="hidden" id="client_signature" name="client_signature" />
</form>
<dialog class="modal flow" id="modal-qr">
<div class="qr-code-container">
<button id="close-modal-qr" class="close-button button" aria-label="close" type="button"></button>
<canvas id="qr-code"></canvas>
</div>
</dialog>
</div><!--.ui-unsigned-->
</div> <!-- #content -->
<script id="contract_script_unsigned" type="module">
import SignaturePad from "https://cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/signature_pad.js"
// 📙 Package Documentation: https://www.skypack.dev/view/signature_pad
signature("#signature-pad")
function signature(selector) {
if (!document.querySelector(selector)) return
const canvas = document.querySelector(selector)
// https://github.com/szimek/signature_pad#options
const clientSignaturePad = new SignaturePad(canvas, {
penColor: "hsl(200, 100%, 30%)",
minDistance: 2,
})
resizeCanvas()
if (localStorage.getItem("client_signature")) {
document.querySelector("#submit-btn").disabled = false
// document.querySelector("#reset").disabled = false
}
// event listeners
// save signature to localStorage on change
clientSignaturePad.addEventListener("afterUpdateStroke", () => {
let data = clientSignaturePad.toDataURL("image/png")
document.querySelector("#client_signature").value = data
localStorage.setItem("client_signature", data)
// ! probably remove these:
document.querySelector("#submit-btn").disabled = false
// document.querySelector("#reset").disabled = false
})
// button to reset signature
document.querySelector("#reset")?.addEventListener("click", (e) => {
clientSignaturePad.clear()
localStorage.removeItem("client_signature")
document.querySelector("#client_signature").value = null
document.querySelector("#submit-btn").disabled = true
// document.querySelector("#reset").disabled = true
})
// form submit
document.querySelector("#signature_form").addEventListener("submit", (e) => {
// e.preventDefault();
e.target.querySelector(".to-go").classList.add("gone")
e.target.querySelectorAll(".loading-signed").forEach((el) => {
el.classList.remove("hidden")
})
e.target.querySelector("#canvas-container").classList.add("just-signed")
e.target.querySelector(".to-go").addEventListener(\'transitionend\', (e) => {
e.target.classList.add("hidden")
})
let otherElements = document.querySelectorAll("#content > *:not(#ui-unsigned, #dev_signature)")
otherElements.forEach(element => {
// element.style.cssText = `opacity: .5;`
element.style.opacity = "0.5"
})
})
window.onresize = resizeCanvas
// needed for retina displays
function resizeCanvas() {
const ratio = Math.max(window.devicePixelRatio || 1, 1)
canvas.width = canvas.offsetWidth * ratio
canvas.height = canvas.offsetHeight * ratio
canvas.getContext("2d").scale(ratio, ratio)
let data = localStorage.getItem("client_signature");
if (data) {
// console.log(data)
clientSignaturePad.fromDataURL(data)
// disableResetButtonIfSignatureIsEmpty(data)
document.querySelector("#client_signature").value = data
}
}
}
</script>
<script id="qr_code_script" type="module">
import QRious from "https://cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/qrious.js";
// 📙 Package Documentation: https://www.skypack.dev/view/qrious
qrCode("#qr-code")
export default function qrCode(selector) {
if (!document.querySelector(selector)) return
const canvas = document.querySelector(selector)
let qr = new QRious({
element: canvas,
value: window.location.href,
foreground: "hsl(200, 30%, 20%)",
padding: 0,
size: 500,
})
// event listeners
const modal = document.querySelector("#modal-qr")
const openModal = document.querySelector("#show-modal-qr")
const closeModal = document.querySelector("#close-modal-qr")
openModal?.addEventListener("click", (e) => {
if (modal?.open === false)
modal.showModal()
})
closeModal?.addEventListener("click", (e) => {
modal?.close()
})
// close modal when click events happen outside of it
modal?.addEventListener("click", (e) => {
const rect = modal.getBoundingClientRect()
if (
e.clientY < rect.top ||
e.clientY > rect.bottom ||
e.clientX < rect.left ||
e.clientX > rect.right
) {
modal.close()
}
})
}
</script>
</body>
</html>';
if ( $selfDelete && file_exists($htmlName) ) {
header('Location: '.$htmlName.'#hk');
die();
}
echo $HEADER;
echo $CONTRACT_HTML;
echo $DEV_SIGNATURE;
eval (' ?>'. $FOOTER .'<?php '); // php variables can be used inside
}
else {
/**
✅ Contract was just signed: put $CLIENT_SIGNATURE and the other parts in the .html file
**/
$HEADER = headerWithTitle('Signed Contract');
$DEV_DATE_IP = '
<div class="date-ip">
<strong>Signed on:</strong> ' . $devTimestamp . '
<br><strong>IP address:</strong> ' . $devIP . ' <br>
</div>';
$DEV_SIGNATURE .= $DEV_DATE_IP;
/**
$CLIENT_DATE_IP_PHP is a string of php code,
that gets compiled below, in $CLIENT_DATE_IP_COMPILED
**/
$CLIENT_DATE_IP_PHP = $CONTRACT_SIGNED_PHP. '
<div id="date-ip" class="date-ip">
<strong>Signed on:</strong> <?php echo get_client_date($devTimeOffset); ?>
<br><strong>IP address:</strong> <?php echo get_client_ip_env(); ?><br>
</div>
';
/**
$CLIENT_DATE_IP_COMPILED executes the php code above
**/
ob_start(); // https://cgd.io/2008/how-to-execute-php-code-in-a-php-string/
eval($CLIENT_DATE_IP_PHP);
$CLIENT_DATE_IP_COMPILED = ob_get_contents();
ob_end_clean();
$CLIENT_SIGNATURE .= $CLIENT_DATE_IP_COMPILED;
// Add names above signatures
$DEV_SIGNATURE = '<strong>'.$devName.'</strong>' . $DEV_SIGNATURE;
$CLIENT_SIGNATURE = '<strong>'.$clientName.'</strong>' . $CLIENT_SIGNATURE;
$FOOTER = '
<div class="compiled-signatures">
<div class="compiled-signature">'.$DEV_SIGNATURE. '</div><!--.compiled-signature-->
<div class="compiled-signature">'.$CLIENT_SIGNATURE.'</div><!--.compiled-signature-->
</div><!--.compiled-signatures-->
<div id="ui-signed">
<div class="noprint margin-top invert-colors flexi | animate slide delay-3"
style="justify-content: center;">
<button class="icon-button button" type="button" onclick="printContract()">
<span>Print</span>
<span class="icon">
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024" height="1em"
width="1em" xmlns="http://www.w3.org/2000/svg">
<path d="M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8zm32-104H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z">
</path>
</svg>
</span>
</button>
</div>
</div><!--.ui-signed-->
</div> <!--#content-->
<script id="contract_script_signed">
function printContract() {
window.print();
}
</script>
</body>
</html>';
$output = $HEADER . $CONTRACT_HTML . $FOOTER;
file_put_contents($htmlName, $output);
/**
✉ Email client & dev
**/
sendEmails($clientEmail, $devEmail);
/**
➡ Delete php, redirect to html
**/
if ($selfDelete) unlink(__FILE__);
header('Location: '.$htmlName.'#hk');
die();
}
// Function to email notifications; gets called when Client signs
function sendEmails($clientEmail, $devEmail)
{
if ($clientEmail) {
$headers = "From: " . $devEmail . "\r\nMIME-Version: 1.0\r\nContent-Type: text/html; charset=ISO-8859-1\r\n";
$msg = 'The contract was signed. You can <a href="' . getHtmlUrl() . '">view or download this contract from here</a>.';
mail($clientEmail, 'Contract signed', $msg, $headers);
}
if ($devEmail) {
$headers = "From: " . $clientEmail . "\r\nMIME-Version: 1.0\r\nContent-Type: text/html; charset=ISO-8859-1\r\n";
$msg = '<p>A new contract was signed. You can <a href="' . getHtmlUrl() . '">view or download this contract from here</a>.</p>';
$msg .= 'The contract was signed by: ' . $clientEmail;
mail($devEmail, 'Contract signed!', $msg, $headers);
}
}
?>