@famir/database 0.0.2 → 0.0.3
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/README.md +1 -2
- package/dist/database.error.js +1 -1
- package/dist/database.error.js.map +1 -1
- package/dist/database.functions.d.ts +16 -16
- package/dist/database.functions.js +8 -8
- package/dist/database.functions.js.map +1 -1
- package/dist/database.js.map +1 -1
- package/dist/database.keys.d.ts +1 -0
- package/dist/database.keys.js +3 -0
- package/dist/database.keys.js.map +1 -1
- package/dist/database.schemas.js +2 -2
- package/dist/database.schemas.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/base/index.js.map +1 -0
- package/dist/{repositories → modules}/base/redis-base.repository.d.ts +5 -3
- package/dist/{repositories → modules}/base/redis-base.repository.js +22 -18
- package/dist/modules/base/redis-base.repository.js.map +1 -0
- package/dist/{repositories → modules}/campaign/campaign.d.ts +2 -7
- package/dist/{repositories → modules}/campaign/campaign.functions.d.ts +4 -13
- package/dist/{repositories → modules}/campaign/campaign.functions.js +15 -28
- package/dist/modules/campaign/campaign.functions.js.map +1 -0
- package/dist/modules/campaign/campaign.js.map +1 -0
- package/dist/{models/campaign/campaign.d.ts → modules/campaign/campaign.models.d.ts} +3 -2
- package/dist/{models/campaign/campaign.js → modules/campaign/campaign.models.js} +6 -4
- package/dist/modules/campaign/campaign.models.js.map +1 -0
- package/dist/{repositories → modules}/campaign/campaign.schemas.d.ts +2 -2
- package/dist/{repositories → modules}/campaign/campaign.schemas.js +50 -43
- package/dist/modules/campaign/campaign.schemas.js.map +1 -0
- package/dist/{repositories → modules}/campaign/index.d.ts +1 -0
- package/dist/{repositories → modules}/campaign/index.js +1 -0
- package/dist/modules/campaign/index.js.map +1 -0
- package/dist/{repositories → modules}/campaign/redis-campaign.repository.d.ts +5 -6
- package/dist/{repositories → modules}/campaign/redis-campaign.repository.js +8 -25
- package/dist/modules/campaign/redis-campaign.repository.js.map +1 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/{repositories → modules}/lure/index.d.ts +1 -0
- package/dist/{repositories → modules}/lure/index.js +1 -0
- package/dist/modules/lure/index.js.map +1 -0
- package/dist/{repositories → modules}/lure/lure.d.ts +1 -1
- package/dist/{repositories → modules}/lure/lure.functions.js +10 -10
- package/dist/modules/lure/lure.functions.js.map +1 -0
- package/dist/modules/lure/lure.js.map +1 -0
- package/dist/{models/lure/lure.js → modules/lure/lure.models.js} +1 -1
- package/dist/modules/lure/lure.models.js.map +1 -0
- package/dist/{repositories → modules}/lure/lure.schemas.js +14 -14
- package/dist/modules/lure/lure.schemas.js.map +1 -0
- package/dist/{repositories → modules}/lure/redis-lure.repository.d.ts +3 -3
- package/dist/{repositories → modules}/lure/redis-lure.repository.js +4 -4
- package/dist/modules/lure/redis-lure.repository.js.map +1 -0
- package/dist/{repositories → modules}/message/index.d.ts +1 -0
- package/dist/{repositories → modules}/message/index.js +1 -0
- package/dist/modules/message/index.js.map +1 -0
- package/dist/{repositories → modules}/message/message.d.ts +3 -3
- package/dist/{repositories → modules}/message/message.functions.d.ts +2 -2
- package/dist/{repositories → modules}/message/message.functions.js +8 -8
- package/dist/modules/message/message.functions.js.map +1 -0
- package/dist/modules/message/message.js.map +1 -0
- package/dist/{models/message/message.d.ts → modules/message/message.models.d.ts} +4 -4
- package/dist/{models/message/message.js → modules/message/message.models.js} +6 -6
- package/dist/modules/message/message.models.js.map +1 -0
- package/dist/{repositories → modules}/message/message.schemas.js +45 -45
- package/dist/modules/message/message.schemas.js.map +1 -0
- package/dist/{repositories → modules}/message/redis-message.repository.d.ts +6 -5
- package/dist/{repositories → modules}/message/redis-message.repository.js +8 -8
- package/dist/modules/message/redis-message.repository.js.map +1 -0
- package/dist/{repositories → modules}/proxy/index.d.ts +1 -0
- package/dist/{repositories → modules}/proxy/index.js +1 -0
- package/dist/modules/proxy/index.js.map +1 -0
- package/dist/{repositories → modules}/proxy/proxy.d.ts +1 -1
- package/dist/{repositories → modules}/proxy/proxy.functions.js +9 -9
- package/dist/modules/proxy/proxy.functions.js.map +1 -0
- package/dist/modules/proxy/proxy.js.map +1 -0
- package/dist/{models/proxy/proxy.js → modules/proxy/proxy.models.js} +1 -1
- package/dist/modules/proxy/proxy.models.js.map +1 -0
- package/dist/{repositories → modules}/proxy/proxy.schemas.js +12 -12
- package/dist/modules/proxy/proxy.schemas.js.map +1 -0
- package/dist/{repositories → modules}/proxy/redis-proxy.repository.d.ts +3 -3
- package/dist/{repositories → modules}/proxy/redis-proxy.repository.js +4 -4
- package/dist/modules/proxy/redis-proxy.repository.js.map +1 -0
- package/dist/{repositories → modules}/redirector/index.d.ts +1 -0
- package/dist/{repositories → modules}/redirector/index.js +1 -0
- package/dist/modules/redirector/index.js.map +1 -0
- package/dist/{repositories → modules}/redirector/redirector.d.ts +3 -1
- package/dist/{repositories → modules}/redirector/redirector.functions.d.ts +13 -2
- package/dist/{repositories → modules}/redirector/redirector.functions.js +37 -11
- package/dist/modules/redirector/redirector.functions.js.map +1 -0
- package/dist/modules/redirector/redirector.js.map +1 -0
- package/dist/{models/redirector/redirector.d.ts → modules/redirector/redirector.models.d.ts} +5 -1
- package/dist/{models/redirector/redirector.js → modules/redirector/redirector.models.js} +10 -2
- package/dist/modules/redirector/redirector.models.js.map +1 -0
- package/dist/modules/redirector/redirector.schemas.d.ts +7 -0
- package/dist/modules/redirector/redirector.schemas.js +73 -0
- package/dist/modules/redirector/redirector.schemas.js.map +1 -0
- package/dist/{repositories → modules}/redirector/redis-redirector.repository.d.ts +5 -3
- package/dist/{repositories → modules}/redirector/redis-redirector.repository.js +25 -5
- package/dist/modules/redirector/redis-redirector.repository.js.map +1 -0
- package/dist/{repositories → modules}/session/index.d.ts +1 -0
- package/dist/{repositories → modules}/session/index.js +1 -0
- package/dist/modules/session/index.js.map +1 -0
- package/dist/{repositories → modules}/session/redis-session.repository.d.ts +3 -3
- package/dist/{repositories → modules}/session/redis-session.repository.js +7 -7
- package/dist/modules/session/redis-session.repository.js.map +1 -0
- package/dist/{repositories → modules}/session/session.d.ts +1 -1
- package/dist/{repositories → modules}/session/session.functions.js +6 -6
- package/dist/modules/session/session.functions.js.map +1 -0
- package/dist/modules/session/session.js.map +1 -0
- package/dist/{models/session/session.d.ts → modules/session/session.models.d.ts} +6 -0
- package/dist/{models/session/session.js → modules/session/session.models.js} +1 -1
- package/dist/modules/session/session.models.js.map +1 -0
- package/dist/modules/session/session.schemas.d.ts +4 -0
- package/dist/modules/session/session.schemas.js +59 -0
- package/dist/modules/session/session.schemas.js.map +1 -0
- package/dist/{repositories → modules}/target/index.d.ts +1 -0
- package/dist/{repositories → modules}/target/index.js +1 -0
- package/dist/modules/target/index.js.map +1 -0
- package/dist/{repositories → modules}/target/redis-target.repository.d.ts +3 -3
- package/dist/{repositories → modules}/target/redis-target.repository.js +8 -8
- package/dist/modules/target/redis-target.repository.js.map +1 -0
- package/dist/{repositories → modules}/target/target.d.ts +1 -1
- package/dist/{repositories → modules}/target/target.functions.d.ts +2 -2
- package/dist/{repositories → modules}/target/target.functions.js +17 -18
- package/dist/modules/target/target.functions.js.map +1 -0
- package/dist/modules/target/target.js.map +1 -0
- package/dist/{models/target/target.d.ts → modules/target/target.models.d.ts} +3 -3
- package/dist/{models/target/target.js → modules/target/target.models.js} +8 -8
- package/dist/modules/target/target.models.js.map +1 -0
- package/dist/{repositories → modules}/target/target.schemas.d.ts +1 -1
- package/dist/{repositories → modules}/target/target.schemas.js +61 -68
- package/dist/modules/target/target.schemas.js.map +1 -0
- package/dist/redis-database-connector.d.ts +1 -0
- package/dist/redis-database-connector.js +6 -4
- package/dist/redis-database-connector.js.map +1 -1
- package/dist/redis-database-manager.d.ts +4 -3
- package/dist/redis-database-manager.js +9 -7
- package/dist/redis-database-manager.js.map +1 -1
- package/dist/redis-functions.d.ts +1 -1
- package/dist/redis-functions.js +30 -1455
- package/dist/redis-functions.js.map +1 -1
- package/package.json +17 -13
- package/dist/models/campaign/campaign.js.map +0 -1
- package/dist/models/campaign/index.d.ts +0 -1
- package/dist/models/campaign/index.js +0 -2
- package/dist/models/campaign/index.js.map +0 -1
- package/dist/models/index.js.map +0 -1
- package/dist/models/lure/index.d.ts +0 -1
- package/dist/models/lure/index.js +0 -2
- package/dist/models/lure/index.js.map +0 -1
- package/dist/models/lure/lure.js.map +0 -1
- package/dist/models/message/index.d.ts +0 -1
- package/dist/models/message/index.js +0 -2
- package/dist/models/message/index.js.map +0 -1
- package/dist/models/message/message.js.map +0 -1
- package/dist/models/proxy/index.d.ts +0 -1
- package/dist/models/proxy/index.js +0 -2
- package/dist/models/proxy/index.js.map +0 -1
- package/dist/models/proxy/proxy.js.map +0 -1
- package/dist/models/redirector/index.d.ts +0 -1
- package/dist/models/redirector/index.js +0 -2
- package/dist/models/redirector/index.js.map +0 -1
- package/dist/models/redirector/redirector.js.map +0 -1
- package/dist/models/session/index.d.ts +0 -1
- package/dist/models/session/index.js +0 -2
- package/dist/models/session/index.js.map +0 -1
- package/dist/models/session/session.js.map +0 -1
- package/dist/models/target/index.d.ts +0 -1
- package/dist/models/target/index.js +0 -2
- package/dist/models/target/index.js.map +0 -1
- package/dist/models/target/target.js.map +0 -1
- package/dist/repositories/base/index.js.map +0 -1
- package/dist/repositories/base/redis-base.repository.js.map +0 -1
- package/dist/repositories/campaign/campaign.functions.js.map +0 -1
- package/dist/repositories/campaign/campaign.js.map +0 -1
- package/dist/repositories/campaign/campaign.schemas.js.map +0 -1
- package/dist/repositories/campaign/index.js.map +0 -1
- package/dist/repositories/campaign/redis-campaign.repository.js.map +0 -1
- package/dist/repositories/index.d.ts +0 -8
- package/dist/repositories/index.js +0 -9
- package/dist/repositories/index.js.map +0 -1
- package/dist/repositories/lure/index.js.map +0 -1
- package/dist/repositories/lure/lure.functions.js.map +0 -1
- package/dist/repositories/lure/lure.js.map +0 -1
- package/dist/repositories/lure/lure.schemas.js.map +0 -1
- package/dist/repositories/lure/redis-lure.repository.js.map +0 -1
- package/dist/repositories/message/index.js.map +0 -1
- package/dist/repositories/message/message.functions.js.map +0 -1
- package/dist/repositories/message/message.js.map +0 -1
- package/dist/repositories/message/message.schemas.js.map +0 -1
- package/dist/repositories/message/redis-message.repository.js.map +0 -1
- package/dist/repositories/proxy/index.js.map +0 -1
- package/dist/repositories/proxy/proxy.functions.js.map +0 -1
- package/dist/repositories/proxy/proxy.js.map +0 -1
- package/dist/repositories/proxy/proxy.schemas.js.map +0 -1
- package/dist/repositories/proxy/redis-proxy.repository.js.map +0 -1
- package/dist/repositories/redirector/index.js.map +0 -1
- package/dist/repositories/redirector/redirector.functions.js.map +0 -1
- package/dist/repositories/redirector/redirector.js.map +0 -1
- package/dist/repositories/redirector/redirector.schemas.d.ts +0 -3
- package/dist/repositories/redirector/redirector.schemas.js +0 -51
- package/dist/repositories/redirector/redirector.schemas.js.map +0 -1
- package/dist/repositories/redirector/redis-redirector.repository.js.map +0 -1
- package/dist/repositories/session/index.js.map +0 -1
- package/dist/repositories/session/redis-session.repository.js.map +0 -1
- package/dist/repositories/session/session.functions.js.map +0 -1
- package/dist/repositories/session/session.js.map +0 -1
- package/dist/repositories/session/session.schemas.d.ts +0 -2
- package/dist/repositories/session/session.schemas.js +0 -44
- package/dist/repositories/session/session.schemas.js.map +0 -1
- package/dist/repositories/target/index.js.map +0 -1
- package/dist/repositories/target/redis-target.repository.js.map +0 -1
- package/dist/repositories/target/target.functions.js.map +0 -1
- package/dist/repositories/target/target.js.map +0 -1
- package/dist/repositories/target/target.schemas.js.map +0 -1
- package/dist/{repositories → modules}/base/index.d.ts +0 -0
- package/dist/{repositories → modules}/base/index.js +0 -0
- package/dist/{repositories → modules}/campaign/campaign.js +0 -0
- package/dist/{models → modules}/index.d.ts +0 -0
- package/dist/{models → modules}/index.js +0 -0
- package/dist/{repositories → modules}/lure/lure.functions.d.ts +0 -0
- package/dist/{repositories → modules}/lure/lure.js +0 -0
- package/dist/{models/lure/lure.d.ts → modules/lure/lure.models.d.ts} +0 -0
- package/dist/{repositories → modules}/lure/lure.schemas.d.ts +1 -1
- package/dist/{repositories → modules}/message/message.js +0 -0
- package/dist/{repositories → modules}/message/message.schemas.d.ts +0 -0
- package/dist/{repositories → modules}/proxy/proxy.functions.d.ts +0 -0
- package/dist/{repositories → modules}/proxy/proxy.js +0 -0
- package/dist/{models/proxy/proxy.d.ts → modules/proxy/proxy.models.d.ts} +0 -0
- package/dist/{repositories → modules}/proxy/proxy.schemas.d.ts +1 -1
- /package/dist/{repositories → modules}/redirector/redirector.js +0 -0
- /package/dist/{repositories → modules}/session/session.functions.d.ts +0 -0
- /package/dist/{repositories → modules}/session/session.js +0 -0
- /package/dist/{repositories → modules}/target/target.js +0 -0
package/dist/redis-functions.js
CHANGED
|
@@ -1,1456 +1,31 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
bmN0aW9uIGNyZWF0ZV9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQgb3IgI2Fy
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
ZCA9IGFyZ3NbMV0sCiAgICBtaXJyb3JfZG9tYWluID0gYXJnc1syXSwKICAgIGRlc2NyaXB0aW9u
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
cmUgPSB0b251bWJlcihhcmdzWzhdKSwKICAgIG1lc3NhZ2VfZXhwaXJlID0gdG9udW1iZXIoYXJn
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAg
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
bC5taXJyb3JfZG9tYWluKSB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
|
|
32
|
-
J0NPTkZMSUNUIENhbXBhaWduIG1pcnJvcl9kb21haW4gYWxscmVhZHkgdGFrZW4nKQogIGVuZAoK
|
|
33
|
-
ICBpZiByZWRpcy5jYWxsKCdTSVNNRU1CRVInLCBjYW1wYWlnbl9zZXNzaW9uX2Nvb2tpZV9uYW1l
|
|
34
|
-
c19rZXksIG1vZGVsLnNlc3Npb25fY29va2llX25hbWUpIH49IDAgdGhlbgogICAgcmV0dXJuIHJl
|
|
35
|
-
ZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgQ2FtcGFpZ24gc2Vzc2lvbl9jb29raWVfbmFtZSBh
|
|
36
|
-
bGxyZWFkeSB0YWtlbicpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICBsb2NhbCBz
|
|
37
|
-
dG9yZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAgICB0YWJs
|
|
38
|
-
ZS5pbnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCB2YWx1ZSkKICBl
|
|
39
|
-
bmQKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIGNhbXBhaWduX2tleSwgdW5wYWNrKHN0b3JlKSkKCiAg
|
|
40
|
-
cmVkaXMuY2FsbCgnU0FERCcsIGNhbXBhaWduX21pcnJvcl9kb21haW5zX2tleSwgbW9kZWwubWly
|
|
41
|
-
cm9yX2RvbWFpbikKCiAgcmVkaXMuY2FsbCgnU0FERCcsIGNhbXBhaWduX3Nlc3Npb25fY29va2ll
|
|
42
|
-
X25hbWVzX2tleSwgbW9kZWwuc2Vzc2lvbl9jb29raWVfbmFtZSkKCiAgcmVkaXMuY2FsbCgnWkFE
|
|
43
|
-
RCcsIGNhbXBhaWduX2luZGV4X2tleSwgbW9kZWwuY3JlYXRlZF9hdCwgbW9kZWwuY2FtcGFpZ25f
|
|
44
|
-
aWQpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIENhbXBhaWduIGNyZWF0ZWQnKQpl
|
|
45
|
-
bmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2NyZWF0ZV9j
|
|
46
|
-
YW1wYWlnbicsCiAgY2FsbGJhY2sgPSBjcmVhdGVfY2FtcGFpZ24sCiAgZGVzY3JpcHRpb24gPSAn
|
|
47
|
-
Q3JlYXRlIGNhbXBhaWduJywKfSkKCi0tW1sKICBSZWFkIGNhbXBhaWduCi0tXV0KbG9jYWwgZnVu
|
|
48
|
-
Y3Rpb24gcmVhZF9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mg
|
|
49
|
-
fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
|
|
50
|
-
biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2Ft
|
|
51
|
-
cGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBh
|
|
52
|
-
aWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0eWx1YTogaWdu
|
|
53
|
-
b3JlCiAgbG9jYWwgdmFsdWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIGNhbXBhaWduX2tl
|
|
54
|
-
eSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAnbWlycm9yX2RvbWFpbicsCiAgICAnc2Vzc2lvbl9j
|
|
55
|
-
b3VudCcsCiAgICAnbWVzc2FnZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2
|
|
56
|
-
YWx1ZXMgfj0gNSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3Jt
|
|
57
|
-
IHZhbHVlcycpCiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAgY2FtcGFpZ25faWQgPSB2YWx1
|
|
58
|
-
ZXNbMV0sCiAgICBtaXJyb3JfZG9tYWluID0gdmFsdWVzWzJdLAogICAgaXNfbG9ja2VkID0gcmVk
|
|
59
|
-
aXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpLAogICAgc2Vzc2lvbl9jb3VudCA9
|
|
60
|
-
IHRvbnVtYmVyKHZhbHVlc1szXSksCiAgICBtZXNzYWdlX2NvdW50ID0gdG9udW1iZXIodmFsdWVz
|
|
61
|
-
WzRdKSwKICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAogIH0KCiAgZm9yIGZp
|
|
62
|
-
ZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAg
|
|
63
|
-
IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkK
|
|
64
|
-
ICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0
|
|
65
|
-
ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9jYW1wYWlnbicsCiAgY2FsbGJh
|
|
66
|
-
Y2sgPSByZWFkX2NhbXBhaWduLAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRlc2NyaXB0
|
|
67
|
-
aW9uID0gJ1JlYWQgY2FtcGFpZ24nLAp9KQoKLS1bWwogIFJlYWQgZnVsbCBjYW1wYWlnbgotLV1d
|
|
68
|
-
CmxvY2FsIGZ1bmN0aW9uIHJlYWRfZnVsbF9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlz
|
|
69
|
-
IH49IDYgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VS
|
|
70
|
-
UiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlz
|
|
71
|
-
WzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlfaW5k
|
|
72
|
-
ZXhfa2V5ID0ga2V5c1szXQogIGxvY2FsIHRhcmdldF9pbmRleF9rZXkgPSBrZXlzWzRdCiAgbG9j
|
|
73
|
-
YWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkgPSBrZXlzWzVdCiAgbG9jYWwgbHVyZV9pbmRleF9rZXkg
|
|
74
|
-
PSBrZXlzWzZdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0
|
|
75
|
-
aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0eWx1YTogaWdub3JlCiAgbG9jYWwgdmFs
|
|
76
|
-
dWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIGNhbXBhaWduX2tleSwKICAgICdjYW1wYWln
|
|
77
|
-
bl9pZCcsCiAgICAnbWlycm9yX2RvbWFpbicsCiAgICAnZGVzY3JpcHRpb24nLAogICAgJ2NyeXB0
|
|
78
|
-
X3NlY3JldCcsCiAgICAnbGFuZGluZ191cGdyYWRlX3BhdGgnLAogICAgJ3Nlc3Npb25fY29va2ll
|
|
79
|
-
X25hbWUnLAogICAgJ3Nlc3Npb25fZXhwaXJlJywKICAgICduZXdfc2Vzc2lvbl9leHBpcmUnLAog
|
|
80
|
-
ICAgJ21lc3NhZ2VfZXhwaXJlJywKICAgICdzZXNzaW9uX2NvdW50JywKICAgICdtZXNzYWdlX2Nv
|
|
81
|
-
dW50JywKICAgICdjcmVhdGVkX2F0JwogICkKCiAgaWYgI3ZhbHVlcyB+PSAxMiB0aGVuCiAgICBy
|
|
82
|
-
ZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIHZhbHVlcycpCiAgZW5kCgogIGxv
|
|
83
|
-
Y2FsIG1vZGVsID0gewogICAgY2FtcGFpZ25faWQgPSB2YWx1ZXNbMV0sCiAgICBtaXJyb3JfZG9t
|
|
84
|
-
YWluID0gdmFsdWVzWzJdLAogICAgZGVzY3JpcHRpb24gPSB2YWx1ZXNbM10sCiAgICBjcnlwdF9z
|
|
85
|
-
ZWNyZXQgPSB2YWx1ZXNbNF0sCiAgICBsYW5kaW5nX3VwZ3JhZGVfcGF0aCA9IHZhbHVlc1s1XSwK
|
|
86
|
-
ICAgIHNlc3Npb25fY29va2llX25hbWUgPSB2YWx1ZXNbNl0sCiAgICBzZXNzaW9uX2V4cGlyZSA9
|
|
87
|
-
IHRvbnVtYmVyKHZhbHVlc1s3XSksCiAgICBuZXdfc2Vzc2lvbl9leHBpcmUgPSB0b251bWJlcih2
|
|
88
|
-
YWx1ZXNbOF0pLAogICAgbWVzc2FnZV9leHBpcmUgPSB0b251bWJlcih2YWx1ZXNbOV0pLAogICAg
|
|
89
|
-
aXNfbG9ja2VkID0gcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpLAogICAg
|
|
90
|
-
cHJveHlfY291bnQgPSByZWRpcy5jYWxsKCdaQ0FSRCcsIHByb3h5X2luZGV4X2tleSksCiAgICB0
|
|
91
|
-
YXJnZXRfY291bnQgPSByZWRpcy5jYWxsKCdaQ0FSRCcsIHRhcmdldF9pbmRleF9rZXkpLAogICAg
|
|
92
|
-
cmVkaXJlY3Rvcl9jb3VudCA9IHJlZGlzLmNhbGwoJ1pDQVJEJywgcmVkaXJlY3Rvcl9pbmRleF9r
|
|
93
|
-
ZXkpLAogICAgbHVyZV9jb3VudCA9IHJlZGlzLmNhbGwoJ1pDQVJEJywgbHVyZV9pbmRleF9rZXkp
|
|
94
|
-
LAogICAgc2Vzc2lvbl9jb3VudCA9IHRvbnVtYmVyKHZhbHVlc1sxMF0pLAogICAgbWVzc2FnZV9j
|
|
95
|
-
b3VudCA9IHRvbnVtYmVyKHZhbHVlc1sxMV0pLAogICAgY3JlYXRlZF9hdCA9IHRvbnVtYmVyKHZh
|
|
96
|
-
bHVlc1sxMl0pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAg
|
|
97
|
-
IGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1h
|
|
98
|
-
bGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBt
|
|
99
|
-
b2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAn
|
|
100
|
-
cmVhZF9mdWxsX2NhbXBhaWduJywKICBjYWxsYmFjayA9IHJlYWRfZnVsbF9jYW1wYWlnbiwKICBm
|
|
101
|
-
bGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNjcmlwdGlvbiA9ICdSZWFkIGZ1bGwgY2FtcGFp
|
|
102
|
-
Z24nLAp9KQoKLS1bWwogIFJlYWQgY2FtcGFpZ24gbWlycm9yIGRvbWFpbnMKLS1dXQpsb2NhbCBm
|
|
103
|
-
dW5jdGlvbiByZWFkX2NhbXBhaWduX21pcnJvcl9kb21haW5zKGtleXMsIGFyZ3MpCiAgaWYgI2tl
|
|
104
|
-
eXMgfj0gMSBvciAjYXJncyB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgn
|
|
105
|
-
RVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX21pcnJvcl9k
|
|
106
|
-
b21haW5zX2tleSA9IGtleXNbMV0KCiAgcmV0dXJuIHJlZGlzLmNhbGwoJ1NNRU1CRVJTJywgY2Ft
|
|
107
|
-
cGFpZ25fbWlycm9yX2RvbWFpbnNfa2V5KQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsK
|
|
108
|
-
ICBmdW5jdGlvbl9uYW1lID0gJ3JlYWRfY2FtcGFpZ25fbWlycm9yX2RvbWFpbnMnLAogIGNhbGxi
|
|
109
|
-
YWNrID0gcmVhZF9jYW1wYWlnbl9taXJyb3JfZG9tYWlucywKICBmbGFncyA9IHsgJ25vLXdyaXRl
|
|
110
|
-
cycgfSwKICBkZXNjcmlwdGlvbiA9ICdSZWFkIGNhbXBhaWduIG1pcnJvciBkb21haW5zJywKfSkK
|
|
111
|
-
Ci0tW1sKICBSZWFkIGNhbXBhaWduIHNlc3Npb24gY29va2llIG5hbWVzCi0tXV0KbG9jYWwgZnVu
|
|
112
|
-
Y3Rpb24gcmVhZF9jYW1wYWlnbl9zZXNzaW9uX2Nvb2tpZV9uYW1lcyhrZXlzLCBhcmdzKQogIGlm
|
|
113
|
-
ICNrZXlzIH49IDEgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
|
|
114
|
-
bHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9zZXNz
|
|
115
|
-
aW9uX2Nvb2tpZV9uYW1lc19rZXkgPSBrZXlzWzFdCgogIHJldHVybiByZWRpcy5jYWxsKCdTTUVN
|
|
116
|
-
QkVSUycsIGNhbXBhaWduX3Nlc3Npb25fY29va2llX25hbWVzX2tleSkKZW5kCgpyZWRpcy5yZWdp
|
|
117
|
-
c3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX2NhbXBhaWduX3Nlc3Npb25f
|
|
118
|
-
Y29va2llX25hbWVzJywKICBjYWxsYmFjayA9IHJlYWRfY2FtcGFpZ25fc2Vzc2lvbl9jb29raWVf
|
|
119
|
-
bmFtZXMsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCBj
|
|
120
|
-
YW1wYWlnbiBzZXNzaW9uIGNvb2tpZSBuYW1lcycsCn0pCgotLVtbCiAgUmVhZCBjYW1wYWlnbiBp
|
|
121
|
-
bmRleAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfY2FtcGFpZ25faW5kZXgoa2V5cywgYXJncykK
|
|
122
|
-
ICBpZiAja2V5cyB+PSAxIG9yICNhcmdzIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9y
|
|
123
|
-
X3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25f
|
|
124
|
-
aW5kZXhfa2V5ID0ga2V5c1sxXQoKICByZXR1cm4gcmVkaXMuY2FsbCgnWlJBTkdFJywgY2FtcGFp
|
|
125
|
-
Z25faW5kZXhfa2V5LCAwLCAtMSkKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVu
|
|
126
|
-
Y3Rpb25fbmFtZSA9ICdyZWFkX2NhbXBhaWduX2luZGV4JywKICBjYWxsYmFjayA9IHJlYWRfY2Ft
|
|
127
|
-
cGFpZ25faW5kZXgsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAn
|
|
128
|
-
UmVhZCBjYW1wYWlnbiBpbmRleCcsCn0pCgotLVtbCiAgTG9jayBjYW1wYWlnbgotLV1dCmxvY2Fs
|
|
129
|
-
IGZ1bmN0aW9uIGxvY2tfY2FtcGFpZ24oa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNh
|
|
130
|
-
cmdzIH49IDIgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVu
|
|
131
|
-
Y3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2Fs
|
|
132
|
-
IGNhbXBhaWduX2xvY2tfa2V5ID0ga2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBj
|
|
133
|
-
YW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9U
|
|
134
|
-
X0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElT
|
|
135
|
-
VFMnLCBjYW1wYWlnbl9sb2NrX2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVz
|
|
136
|
-
X3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gYWxscmVhZHkgbG9ja2VkJykKICBlbmQKCiAgbG9j
|
|
137
|
-
YWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMV0sCiAgICBsb2NrX3RpbWVvdXQg
|
|
138
|
-
PSB0b251bWJlcihhcmdzWzJdKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rh
|
|
139
|
-
c2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
|
|
140
|
-
bHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgZmllbGQgPT0g
|
|
141
|
-
J2xvY2tfc2VjcmV0JyBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJy
|
|
142
|
-
b3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgZmll
|
|
143
|
-
bGQgPT0gJ2xvY2tfdGltZW91dCcgYW5kIHZhbHVlIDw9IDAgdGhlbgogICAgICByZXR1cm4gcmVk
|
|
144
|
-
aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5k
|
|
145
|
-
CgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdTRVQnLCBjYW1wYWlnbl9s
|
|
146
|
-
b2NrX2tleSwgc3Rhc2gubG9ja19zZWNyZXQsICdQWCcsIHN0YXNoLmxvY2tfdGltZW91dCkKCiAg
|
|
147
|
-
cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgQ2FtcGFpZ24gbG9ja2VkJykKZW5kCgpyZWRp
|
|
148
|
-
cy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdsb2NrX2NhbXBhaWduJywK
|
|
149
|
-
ICBjYWxsYmFjayA9IGxvY2tfY2FtcGFpZ24sCiAgZGVzY3JpcHRpb24gPSAnTG9jayBjYW1wYWln
|
|
150
|
-
bicsCn0pCgotLVtbCiAgVW5sb2NrIGNhbXBhaWduCi0tXV0KbG9jYWwgZnVuY3Rpb24gdW5sb2Nr
|
|
151
|
-
X2NhbXBhaWduKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMiBvciAjYXJncyB+PSAxIHRoZW4K
|
|
152
|
-
ICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAg
|
|
153
|
-
ZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWlnbl9sb2Nr
|
|
154
|
-
X2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+
|
|
155
|
-
PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWln
|
|
156
|
-
biBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25f
|
|
157
|
-
bG9ja19rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgQ2Ft
|
|
158
|
-
cGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNy
|
|
159
|
-
ZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNh
|
|
160
|
-
bXBhaWduX2xvY2tfa2V5KSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rhc2gp
|
|
161
|
-
IGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
|
|
162
|
-
J0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgKGZpZWxkID09ICds
|
|
163
|
-
b2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNyZXQnKSBhbmQgdmFsdWUgPT0g
|
|
164
|
-
JycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4n
|
|
165
|
-
IC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0g
|
|
166
|
-
c3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9S
|
|
167
|
-
QklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50
|
|
168
|
-
IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCBjYW1wYWlnbl9sb2NrX2tleSkKCiAg
|
|
169
|
-
cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgQ2FtcGFpZ24gdW5sb2NrZWQnKQplbmQKCnJl
|
|
170
|
-
ZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ3VubG9ja19jYW1wYWln
|
|
171
|
-
bicsCiAgY2FsbGJhY2sgPSB1bmxvY2tfY2FtcGFpZ24sCiAgZGVzY3JpcHRpb24gPSAnVW5sb2Nr
|
|
172
|
-
IGNhbXBhaWduJywKfSkKCi0tW1sKICBVcGRhdGUgY2FtcGFpZ24KLS1dXQpsb2NhbCBmdW5jdGlv
|
|
173
|
-
biB1cGRhdGVfY2FtcGFpZ24oa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNhcmdzIDwg
|
|
174
|
-
MSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1
|
|
175
|
-
c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFp
|
|
176
|
-
Z25fbG9ja19rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWdu
|
|
177
|
-
X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQg
|
|
178
|
-
Q2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNh
|
|
179
|
-
bXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
|
|
180
|
-
J0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7
|
|
181
|
-
CiAgICBsb2NrX3NlY3JldCA9IHRhYmxlLnJlbW92ZShhcmdzKSwKICAgIG9yaWdfbG9ja19zZWNy
|
|
182
|
-
ZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgfQoKICBmb3IgZmll
|
|
183
|
-
bGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAg
|
|
184
|
-
cmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAg
|
|
185
|
-
IGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xv
|
|
186
|
-
Y2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9y
|
|
187
|
-
X3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiAj
|
|
188
|
-
YXJncyAlIDIgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBPZGQg
|
|
189
|
-
bnVtYmVyIG9mIGFyZ3MnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHt9CgogIGZvciBpID0gMSwg
|
|
190
|
-
I2FyZ3MsIDIgZG8KICAgIGxvY2FsIGZpZWxkLCB2YWx1ZSA9IGFyZ3NbaV0sIGFyZ3NbaSArIDFd
|
|
191
|
-
CgogICAgaWYgbW9kZWxbZmllbGRdIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
|
|
192
|
-
KCdFUlIgRHVwbGljYXRlIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9
|
|
193
|
-
PSAnZGVzY3JpcHRpb24nIHRoZW4KICAgICAgbW9kZWwuZGVzY3JpcHRpb24gPSB2YWx1ZQogICAg
|
|
194
|
-
ZWxzZWlmIGZpZWxkID09ICdzZXNzaW9uX2V4cGlyZScgdGhlbgogICAgICBtb2RlbC5zZXNzaW9u
|
|
195
|
-
X2V4cGlyZSA9IHRvbnVtYmVyKHZhbHVlKQogICAgZWxzZWlmIGZpZWxkID09ICduZXdfc2Vzc2lv
|
|
196
|
-
bl9leHBpcmUnIHRoZW4KICAgICAgbW9kZWwubmV3X3Nlc3Npb25fZXhwaXJlID0gdG9udW1iZXIo
|
|
197
|
-
dmFsdWUpCiAgICBlbHNlaWYgZmllbGQgPT0gJ21lc3NhZ2VfZXhwaXJlJyB0aGVuCiAgICAgIG1v
|
|
198
|
-
ZGVsLm1lc3NhZ2VfZXhwaXJlID0gdG9udW1iZXIodmFsdWUpCiAgICBlbHNlCiAgICAgIHJldHVy
|
|
199
|
-
biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFVua25vd24gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVu
|
|
200
|
-
ZAogIGVuZAoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90
|
|
201
|
-
IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9k
|
|
202
|
-
ZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBuZXh0KG1vZGVsKSA9PSBuaWwgdGhl
|
|
203
|
-
bgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgTm90aGluZyB0byB1cGRhdGUnKQog
|
|
204
|
-
IGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxvY2tfc2VjcmV0IHRo
|
|
205
|
-
ZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBsb2Nr
|
|
206
|
-
X3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgbG9j
|
|
207
|
-
YWwgc3RvcmUgPSB7fQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAg
|
|
208
|
-
dGFibGUuaW5zZXJ0KHN0b3JlLCBmaWVsZCkKICAgIHRhYmxlLmluc2VydChzdG9yZSwgdmFsdWUp
|
|
209
|
-
CiAgZW5kCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCBjYW1wYWlnbl9rZXksIHVucGFjayhzdG9yZSkp
|
|
210
|
-
CgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIENhbXBhaWduIHVwZGF0ZWQnKQplbmQK
|
|
211
|
-
CnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ3VwZGF0ZV9jYW1w
|
|
212
|
-
YWlnbicsCiAgY2FsbGJhY2sgPSB1cGRhdGVfY2FtcGFpZ24sCiAgZGVzY3JpcHRpb24gPSAnVXBk
|
|
213
|
-
YXRlIGNhbXBhaWduJywKfSkKCi0tW1sKICBEZWxldGUgY2FtcGFpZ24KLS1dXQpsb2NhbCBmdW5j
|
|
214
|
-
dGlvbiBkZWxldGVfY2FtcGFpZ24oa2V5cywgYXJncykKICBpZiAja2V5cyB+PSA5IG9yICNhcmdz
|
|
215
|
-
IH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rp
|
|
216
|
-
b24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNh
|
|
217
|
-
bXBhaWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIGNhbXBhaWduX21pcnJvcl9kb21haW5z
|
|
218
|
-
X2tleSA9IGtleXNbM10KICBsb2NhbCBjYW1wYWlnbl9zZXNzaW9uX2Nvb2tpZV9uYW1lc19rZXkg
|
|
219
|
-
PSBrZXlzWzRdCiAgbG9jYWwgY2FtcGFpZ25faW5kZXhfa2V5ID0ga2V5c1s1XQogIGxvY2FsIHBy
|
|
220
|
-
b3h5X2luZGV4X2tleSA9IGtleXNbNl0KICBsb2NhbCB0YXJnZXRfaW5kZXhfa2V5ID0ga2V5c1s3
|
|
221
|
-
XQogIGxvY2FsIHJlZGlyZWN0b3JfaW5kZXhfa2V5ID0ga2V5c1s4XQogIGxvY2FsIGx1cmVfaW5k
|
|
222
|
-
ZXhfa2V5ID0ga2V5c1s5XQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkp
|
|
223
|
-
IH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBh
|
|
224
|
-
aWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWln
|
|
225
|
-
bl9sb2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JC
|
|
226
|
-
SURERU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAg
|
|
227
|
-
bG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwo
|
|
228
|
-
J0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIGNhbXBhaWduX2lkID0gcmVkaXMuY2FsbCgn
|
|
229
|
-
SEdFVCcsIGNhbXBhaWduX2tleSwgJ2NhbXBhaWduX2lkJyksCiAgICBtaXJyb3JfZG9tYWluID0g
|
|
230
|
-
cmVkaXMuY2FsbCgnSEdFVCcsIGNhbXBhaWduX2tleSwgJ21pcnJvcl9kb21haW4nKSwKICAgIHNl
|
|
231
|
-
c3Npb25fY29va2llX25hbWUgPSByZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnc2Vz
|
|
232
|
-
c2lvbl9jb29raWVfbmFtZScpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFz
|
|
233
|
-
aCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBs
|
|
234
|
-
eSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoCiAg
|
|
235
|
-
ICAgICAgZmllbGQgPT0gJ2xvY2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdvcmlnX2xv
|
|
236
|
-
Y2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdjYW1wYWlnbl9pZCcKICAgICAgICBvciBm
|
|
237
|
-
aWVsZCA9PSAnbWlycm9yX2RvbWFpbicKICAgICAgICBvciBmaWVsZCA9PSAnc2Vzc2lvbl9jb29r
|
|
238
|
-
aWVfbmFtZScKICAgICAgKSBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJl
|
|
239
|
-
ZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVu
|
|
240
|
-
ZAoKICBpZiByZWRpcy5jYWxsKCdaQ0FSRCcsIHByb3h5X2luZGV4X2tleSkgfj0gMCB0aGVuCiAg
|
|
241
|
-
ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gcHJveGllcyBl
|
|
242
|
-
eGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdaQ0FSRCcsIHRhcmdldF9pbmRleF9rZXkp
|
|
243
|
-
IH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBh
|
|
244
|
-
aWduIHRhcmdldHMgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnWkNBUkQnLCByZWRp
|
|
245
|
-
cmVjdG9yX2luZGV4X2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5
|
|
246
|
-
KCdGT1JCSURERU4gQ2FtcGFpZ24gcmVkaXJlY3RvcnMgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVk
|
|
247
|
-
aXMuY2FsbCgnWkNBUkQnLCBsdXJlX2luZGV4X2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVk
|
|
248
|
-
aXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbHVyZXMgZXhpc3RzJykKICBlbmQK
|
|
249
|
-
CiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAg
|
|
250
|
-
ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNy
|
|
251
|
-
ZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNh
|
|
252
|
-
bGwoJ0RFTCcsIGNhbXBhaWduX2tleSwgY2FtcGFpZ25fbG9ja19rZXkpCgogIHJlZGlzLmNhbGwo
|
|
253
|
-
J1NSRU0nLCBjYW1wYWlnbl9taXJyb3JfZG9tYWluc19rZXksIHN0YXNoLm1pcnJvcl9kb21haW4p
|
|
254
|
-
CgogIHJlZGlzLmNhbGwoJ1NSRU0nLCBjYW1wYWlnbl9zZXNzaW9uX2Nvb2tpZV9uYW1lc19rZXks
|
|
255
|
-
IHN0YXNoLnNlc3Npb25fY29va2llX25hbWUpCgogIHJlZGlzLmNhbGwoJ1pSRU0nLCBjYW1wYWln
|
|
256
|
-
bl9pbmRleF9rZXksIHN0YXNoLmNhbXBhaWduX2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3Jl
|
|
257
|
-
cGx5KCdPSyBDYW1wYWlnbiBkZWxldGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7
|
|
258
|
-
CiAgZnVuY3Rpb25fbmFtZSA9ICdkZWxldGVfY2FtcGFpZ24nLAogIGNhbGxiYWNrID0gZGVsZXRl
|
|
259
|
-
X2NhbXBhaWduLAogIGRlc2NyaXB0aW9uID0gJ0RlbGV0ZSBjYW1wYWlnbicsCn0pCg==`,
|
|
260
|
-
'2-proxy.lua',
|
|
261
|
-
`IyFsdWEgbmFtZT1wcm94eQoKLS1bWwogIENyZWF0ZSBwcm94eQotLV1dCmxvY2FsIGZ1bmN0aW9u
|
|
262
|
-
IGNyZWF0ZV9wcm94eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDUgb3IgI2FyZ3Mgfj0gNSB0
|
|
263
|
-
aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2Un
|
|
264
|
-
KQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25f
|
|
265
|
-
bG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5c1szXQogIGxvY2FsIHBy
|
|
266
|
-
b3h5X3VybHNfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHByb3h5X2luZGV4X2tleSA9IGtleXNbNV0K
|
|
267
|
-
CiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJl
|
|
268
|
-
dHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykK
|
|
269
|
-
ICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEg
|
|
270
|
-
dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5v
|
|
271
|
-
dCBsb2NrZWQnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBwcm94eV9rZXkpIH49
|
|
272
|
-
IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgUHJveHkgYWxs
|
|
273
|
-
cmVhZHkgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9
|
|
274
|
-
IGFyZ3NbNV0sCiAgICBvcmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2FtcGFp
|
|
275
|
-
Z25fbG9ja19rZXkpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8K
|
|
276
|
-
ICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJS
|
|
277
|
-
IFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmllbGQgPT0gJ2xvY2tf
|
|
278
|
-
c2VjcmV0JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcpIGFuZCB2YWx1ZSA9PSAnJyB0
|
|
279
|
-
aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4g
|
|
280
|
-
ZmllbGQpCiAgICBlbmQKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9pZCA9
|
|
281
|
-
IGFyZ3NbMV0sCiAgICBwcm94eV9pZCA9IGFyZ3NbMl0sCiAgICB1cmwgPSBhcmdzWzNdLAogICAg
|
|
282
|
-
aXNfZW5hYmxlZCA9IDAsCiAgICBtZXNzYWdlX2NvdW50ID0gMCwKICAgIGNyZWF0ZWRfYXQgPSBh
|
|
283
|
-
cmdzWzRdLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlm
|
|
284
|
-
IG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25n
|
|
285
|
-
IG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmllbGQgPT0gJ2NhbXBhaWduX2lk
|
|
286
|
-
JyBvciBmaWVsZCA9PSAncHJveHlfaWQnIG9yIGZpZWxkID09ICd1cmwnKSBhbmQgdmFsdWUgPT0g
|
|
287
|
-
JycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4n
|
|
288
|
-
IC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ1NJU01FTUJFUicsIHBy
|
|
289
|
-
b3h5X3VybHNfa2V5LCBtb2RlbC51cmwpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
|
|
290
|
-
c19yZXBseSgnQ09ORkxJQ1QgUHJveHkgdXJsIGFsbHJlYWR5IHRha2VuJykKICBlbmQKCiAgaWYg
|
|
291
|
-
c3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1
|
|
292
|
-
cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90
|
|
293
|
-
IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIGxvY2FsIHN0b3JlID0g
|
|
294
|
-
e30KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIHRhYmxlLmluc2Vy
|
|
295
|
-
dChzdG9yZSwgZmllbGQpCiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIHZhbHVlKQogIGVuZAoKICBy
|
|
296
|
-
ZWRpcy5jYWxsKCdIU0VUJywgcHJveHlfa2V5LCB1bnBhY2soc3RvcmUpKQoKICByZWRpcy5jYWxs
|
|
297
|
-
KCdTQUREJywgcHJveHlfdXJsc19rZXksIG1vZGVsLnVybCkKCiAgcmVkaXMuY2FsbCgnWkFERCcs
|
|
298
|
-
IHByb3h5X2luZGV4X2tleSwgbW9kZWwuY3JlYXRlZF9hdCwgbW9kZWwucHJveHlfaWQpCgogIHJl
|
|
299
|
-
dHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFByb3h5IGNyZWF0ZWQnKQplbmQKCnJlZGlzLnJl
|
|
300
|
-
Z2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2NyZWF0ZV9wcm94eScsCiAgY2Fs
|
|
301
|
-
bGJhY2sgPSBjcmVhdGVfcHJveHksCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIHByb3h5JywKfSkK
|
|
302
|
-
Ci0tW1sKICBSZWFkIHByb3h5Ci0tXV0KbG9jYWwgZnVuY3Rpb24gcmVhZF9wcm94eShrZXlzLCBh
|
|
303
|
-
cmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMu
|
|
304
|
-
ZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1w
|
|
305
|
-
YWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5c1syXQoKICBpZiByZWRp
|
|
306
|
-
cy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAog
|
|
307
|
-
IGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBwcm94eV9rZXkpIH49IDEgdGhlbgogICAg
|
|
308
|
-
cmV0dXJuIG5pbAogIGVuZAoKICAtLSBzdHlsdWE6IGlnbm9yZQogIGxvY2FsIHZhbHVlcyA9IHJl
|
|
309
|
-
ZGlzLmNhbGwoCiAgICAnSE1HRVQnLCBwcm94eV9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAg
|
|
310
|
-
J3Byb3h5X2lkJywKICAgICd1cmwnLAogICAgJ2lzX2VuYWJsZWQnLAogICAgJ21lc3NhZ2VfY291
|
|
311
|
-
bnQnLAogICAgJ2NyZWF0ZWRfYXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDYgdGhlbgogICAgcmV0
|
|
312
|
-
dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoKICBsb2Nh
|
|
313
|
-
bCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgcHJveHlfaWQgPSB2
|
|
314
|
-
YWx1ZXNbMl0sCiAgICB1cmwgPSB2YWx1ZXNbM10sCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIo
|
|
315
|
-
dmFsdWVzWzRdKSwKICAgIG1lc3NhZ2VfY291bnQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAogICAg
|
|
316
|
-
Y3JlYXRlZF9hdCA9IHRvbnVtYmVyKHZhbHVlc1s2XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVl
|
|
317
|
-
IGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJl
|
|
318
|
-
ZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAg
|
|
319
|
-
ZW5kCgogIHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlv
|
|
320
|
-
bih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX3Byb3h5JywKICBjYWxsYmFjayA9IHJlYWRfcHJv
|
|
321
|
-
eHksCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCBwcm94
|
|
322
|
-
eScsCn0pCgotLVtbCiAgUmVhZCBwcm94eSBpbmRleAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRf
|
|
323
|
-
cHJveHlfaW5kZXgoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNhcmdzIH49IDAgdGhl
|
|
324
|
-
bgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykK
|
|
325
|
-
ICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIHByb3h5X2luZGV4
|
|
326
|
-
X2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+
|
|
327
|
-
PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgcmV0dXJuIHJlZGlzLmNhbGwoJ1pSQU5H
|
|
328
|
-
RScsIHByb3h5X2luZGV4X2tleSwgMCwgLTEpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
|
|
329
|
-
ewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9wcm94eV9pbmRleCcsCiAgY2FsbGJhY2sgPSByZWFk
|
|
330
|
-
X3Byb3h5X2luZGV4LAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRlc2NyaXB0aW9uID0g
|
|
331
|
-
J1JlYWQgcHJveHkgaW5kZXgnLAp9KQoKLS1bWwogIEVuYWJsZSBwcm94eQotLV1dCmxvY2FsIGZ1
|
|
332
|
-
bmN0aW9uIGVuYWJsZV9wcm94eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQgb3IgI2FyZ3Mg
|
|
333
|
-
fj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
|
|
334
|
-
biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2Ft
|
|
335
|
-
cGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5c1szXQogIGxv
|
|
336
|
-
Y2FsIGVuYWJsZWRfcHJveHlfaW5kZXhfa2V5ID0ga2V5c1s0XQoKICBpZiByZWRpcy5jYWxsKCdF
|
|
337
|
-
WElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
|
|
338
|
-
ZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5j
|
|
339
|
-
YWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
|
|
340
|
-
aXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgog
|
|
341
|
-
IGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4g
|
|
342
|
-
cmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90IGV4aXN0cycpCiAgZW5kCgog
|
|
343
|
-
IGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2Nr
|
|
344
|
-
X3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIHByb3h5
|
|
345
|
-
X2lkID0gcmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwgJ3Byb3h5X2lkJyksCiAgICBpc19l
|
|
346
|
-
bmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwgJ2lzX2VuYWJs
|
|
347
|
-
ZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYg
|
|
348
|
-
bm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcg
|
|
349
|
-
c3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAgIChmaWVsZCA9PSAnbG9ja19z
|
|
350
|
-
ZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9PSAncHJveHlf
|
|
351
|
-
aWQnKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVy
|
|
352
|
-
cm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBp
|
|
353
|
-
ZiBzdGFzaC5pc19lbmFibGVkIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBs
|
|
354
|
-
eSgnT0sgUHJveHkgYWxscmVhZHkgZW5hYmxlZCcpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9j
|
|
355
|
-
a19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
|
|
356
|
-
c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5k
|
|
357
|
-
CgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdIU0VUJywgcHJveHlfa2V5
|
|
358
|
-
LCAnaXNfZW5hYmxlZCcsIDEpCgogIHJlZGlzLmNhbGwoJ1NBREQnLCBlbmFibGVkX3Byb3h5X2lu
|
|
359
|
-
ZGV4X2tleSwgc3Rhc2gucHJveHlfaWQpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09L
|
|
360
|
-
IFByb3h5IGVuYWJsZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlv
|
|
361
|
-
bl9uYW1lID0gJ2VuYWJsZV9wcm94eScsCiAgY2FsbGJhY2sgPSBlbmFibGVfcHJveHksCiAgZGVz
|
|
362
|
-
Y3JpcHRpb24gPSAnRW5hYmxlIHByb3h5JywKfSkKCi0tW1sKICBEaXNhYmxlIHByb3h5Ci0tXV0K
|
|
363
|
-
bG9jYWwgZnVuY3Rpb24gZGlzYWJsZV9wcm94eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQg
|
|
364
|
-
b3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
|
|
365
|
-
ZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAg
|
|
366
|
-
bG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5
|
|
367
|
-
c1szXQogIGxvY2FsIGVuYWJsZWRfcHJveHlfaW5kZXhfa2V5ID0ga2V5c1s0XQoKICBpZiByZWRp
|
|
368
|
-
cy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlz
|
|
369
|
-
LnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBp
|
|
370
|
-
ZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tleSkgfj0gMSB0aGVuCiAgICBy
|
|
371
|
-
ZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcp
|
|
372
|
-
CiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0gMSB0aGVuCiAg
|
|
373
|
-
ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90IGV4aXN0cycp
|
|
374
|
-
CiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAg
|
|
375
|
-
b3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwK
|
|
376
|
-
ICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwgJ3Byb3h5X2lkJyks
|
|
377
|
-
CiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwg
|
|
378
|
-
J2lzX2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBk
|
|
379
|
-
bwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
|
|
380
|
-
UlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAgIChmaWVsZCA9
|
|
381
|
-
PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9
|
|
382
|
-
PSAncHJveHlfaWQnKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJu
|
|
383
|
-
IHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAog
|
|
384
|
-
IGVuZAoKICBpZiBzdGFzaC5pc19lbmFibGVkID09IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0
|
|
385
|
-
YXR1c19yZXBseSgnT0sgUHJveHkgYWxscmVhZHkgZGlzYWJsZWQnKQogIGVuZAoKICBpZiBzdGFz
|
|
386
|
-
aC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiBy
|
|
387
|
-
ZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0
|
|
388
|
-
Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgcmVkaXMuY2FsbCgnSFNFVCcs
|
|
389
|
-
IHByb3h5X2tleSwgJ2lzX2VuYWJsZWQnLCAwKQoKICByZWRpcy5jYWxsKCdTUkVNJywgZW5hYmxl
|
|
390
|
-
ZF9wcm94eV9pbmRleF9rZXksIHN0YXNoLnByb3h5X2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVz
|
|
391
|
-
X3JlcGx5KCdPSyBQcm94eSBkaXNhYmxlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
|
|
392
|
-
ewogIGZ1bmN0aW9uX25hbWUgPSAnZGlzYWJsZV9wcm94eScsCiAgY2FsbGJhY2sgPSBkaXNhYmxl
|
|
393
|
-
X3Byb3h5LAogIGRlc2NyaXB0aW9uID0gJ0Rpc2FibGUgcHJveHknLAp9KQoKLS1bWwogIERlbGV0
|
|
394
|
-
ZSBwcm94eQotLV1dCmxvY2FsIGZ1bmN0aW9uIGRlbGV0ZV9wcm94eShrZXlzLCBhcmdzKQogIGlm
|
|
395
|
-
ICNrZXlzIH49IDUgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
|
|
396
|
-
bHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkg
|
|
397
|
-
PSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJv
|
|
398
|
-
eHlfa2V5ID0ga2V5c1szXQogIGxvY2FsIHByb3h5X3VybHNfa2V5ID0ga2V5c1s0XQogIGxvY2Fs
|
|
399
|
-
IHByb3h5X2luZGV4X2tleSA9IGtleXNbNV0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2Ft
|
|
400
|
-
cGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9G
|
|
401
|
-
T1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RT
|
|
402
|
-
JywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
|
|
403
|
-
ZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5vdCBsb2NrZWQnKQogIGVuZAoKICBpZiByZWRpcy5j
|
|
404
|
-
YWxsKCdFWElTVFMnLCBwcm94eV9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
|
|
405
|
-
c19yZXBseSgnTk9UX0ZPVU5EIFByb3h5IG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFz
|
|
406
|
-
aCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSBy
|
|
407
|
-
ZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgICBwcm94eV9pZCA9IHJlZGlz
|
|
408
|
-
LmNhbGwoJ0hHRVQnLCBwcm94eV9rZXksICdwcm94eV9pZCcpLAogICAgdXJsID0gcmVkaXMuY2Fs
|
|
409
|
-
bCgnSEdFVCcsIHByb3h5X2tleSwgJ3VybCcpLAogICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHJl
|
|
410
|
-
ZGlzLmNhbGwoJ0hHRVQnLCBwcm94eV9rZXksICdpc19lbmFibGVkJykpLAogIH0KCiAgZm9yIGZp
|
|
411
|
-
ZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAg
|
|
412
|
-
IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAg
|
|
413
|
-
ICBlbmQKCiAgICBpZgogICAgICAoCiAgICAgICAgZmllbGQgPT0gJ2xvY2tfc2VjcmV0JwogICAg
|
|
414
|
-
ICAgIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdw
|
|
415
|
-
cm94eV9pZCcKICAgICAgICBvciBmaWVsZCA9PSAndXJsJwogICAgICApIGFuZCB2YWx1ZSA9PSAn
|
|
416
|
-
JwogICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFz
|
|
417
|
-
aC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLmlzX2VuYWJsZWQgfj0gMCB0
|
|
418
|
-
aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gUHJveHkgbm90IGRp
|
|
419
|
-
c2FibGVkJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2Nr
|
|
420
|
-
X3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2Ft
|
|
421
|
-
cGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0
|
|
422
|
-
dXJuCgogIHJlZGlzLmNhbGwoJ0RFTCcsIHByb3h5X2tleSkKCiAgcmVkaXMuY2FsbCgnU1JFTScs
|
|
423
|
-
IHByb3h5X3VybHNfa2V5LCBzdGFzaC51cmwpCgogIHJlZGlzLmNhbGwoJ1pSRU0nLCBwcm94eV9p
|
|
424
|
-
bmRleF9rZXksIHN0YXNoLnByb3h5X2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdP
|
|
425
|
-
SyBQcm94eSBkZWxldGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rp
|
|
426
|
-
b25fbmFtZSA9ICdkZWxldGVfcHJveHknLAogIGNhbGxiYWNrID0gZGVsZXRlX3Byb3h5LAogIGRl
|
|
427
|
-
c2NyaXB0aW9uID0gJ0RlbGV0ZSBwcm94eScsCn0pCg==`,
|
|
428
|
-
'3-target.lua',
|
|
429
|
-
`IyFsdWEgbmFtZT10YXJnZXQKCi0tW1sKICBDcmVhdGUgdGFyZ2V0Ci0tXV0KbG9jYWwgZnVuY3Rp
|
|
430
|
-
b24gY3JlYXRlX3RhcmdldChrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDcgb3IgI2FyZ3Mgfj0g
|
|
431
|
-
MjMgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24g
|
|
432
|
-
dXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNhbXBh
|
|
433
|
-
aWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9rZXkgPSBrZXlzWzNdCiAgbG9j
|
|
434
|
-
YWwgdGFyZ2V0X2Rvbm9yc19rZXkgPSBrZXlzWzRdCiAgbG9jYWwgdGFyZ2V0X21pcnJvcnNfa2V5
|
|
435
|
-
ID0ga2V5c1s1XQogIGxvY2FsIHRhcmdldF9taXJyb3JfaG9zdHNfa2V5ID0ga2V5c1s2XQogIGxv
|
|
436
|
-
Y2FsIHRhcmdldF9pbmRleF9rZXkgPSBrZXlzWzddCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycs
|
|
437
|
-
IGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdO
|
|
438
|
-
T1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VY
|
|
439
|
-
SVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0
|
|
440
|
-
dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVk
|
|
441
|
-
aXMuY2FsbCgnRVhJU1RTJywgdGFyZ2V0X2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMu
|
|
442
|
-
c3RhdHVzX3JlcGx5KCdDT05GTElDVCBUYXJnZXQgYWxscmVhZHkgZXhpc3RzJykKICBlbmQKCiAg
|
|
443
|
-
bG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMjNdLAogICAgb3JpZ19sb2Nr
|
|
444
|
-
X3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIG1pcnJv
|
|
445
|
-
cl9kb21haW4gPSByZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbWlycm9yX2RvbWFp
|
|
446
|
-
bicpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5v
|
|
447
|
-
dCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0
|
|
448
|
-
YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoZmllbGQgPT0gJ2xvY2tfc2Vj
|
|
449
|
-
cmV0JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ21pcnJvcl9k
|
|
450
|
-
b21haW4nKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJlZGlz
|
|
451
|
-
LmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoK
|
|
452
|
-
ICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gYXJnc1sxXSwKICAgIHRhcmdldF9p
|
|
453
|
-
ZCA9IGFyZ3NbMl0sCiAgICBhY2Nlc3NfbGV2ZWwgPSBhcmdzWzNdLAogICAgZG9ub3Jfc2VjdXJl
|
|
454
|
-
ID0gdG9udW1iZXIoYXJnc1s0XSksCiAgICBkb25vcl9zdWIgPSBhcmdzWzVdLAogICAgZG9ub3Jf
|
|
455
|
-
ZG9tYWluID0gYXJnc1s2XSwKICAgIGRvbm9yX3BvcnQgPSBhcmdzWzddLAogICAgbWlycm9yX3Nl
|
|
456
|
-
Y3VyZSA9IHRvbnVtYmVyKGFyZ3NbOF0pLAogICAgbWlycm9yX3N1YiA9IGFyZ3NbOV0sCiAgICBt
|
|
457
|
-
aXJyb3JfcG9ydCA9IGFyZ3NbMTBdLAogICAgY29ubmVjdF90aW1lb3V0ID0gdG9udW1iZXIoYXJn
|
|
458
|
-
c1sxMV0pLAogICAgc2ltcGxlX3RpbWVvdXQgPSB0b251bWJlcihhcmdzWzEyXSksCiAgICBzdHJl
|
|
459
|
-
YW1fdGltZW91dCA9IHRvbnVtYmVyKGFyZ3NbMTNdKSwKICAgIGhlYWRlcnNfc2l6ZV9saW1pdCA9
|
|
460
|
-
IHRvbnVtYmVyKGFyZ3NbMTRdKSwKICAgIGJvZHlfc2l6ZV9saW1pdCA9IHRvbnVtYmVyKGFyZ3Nb
|
|
461
|
-
MTVdKSwKICAgIG1haW5fcGFnZSA9IGFyZ3NbMTZdLAogICAgbm90X2ZvdW5kX3BhZ2UgPSBhcmdz
|
|
462
|
-
WzE3XSwKICAgIGZhdmljb25faWNvID0gYXJnc1sxOF0sCiAgICByb2JvdHNfdHh0ID0gYXJnc1sx
|
|
463
|
-
OV0sCiAgICBzaXRlbWFwX3htbCA9IGFyZ3NbMjBdLAogICAgYWxsb3dfd2Vic29ja2V0cyA9IHRv
|
|
464
|
-
bnVtYmVyKGFyZ3NbMjFdKSwKICAgIGlzX2VuYWJsZWQgPSAwLAogICAgbWVzc2FnZV9jb3VudCA9
|
|
465
|
-
IDAsCiAgICBjcmVhdGVkX2F0ID0gdG9udW1iZXIoYXJnc1syMl0pLAogIH0KCiAgZm9yIGZpZWxk
|
|
466
|
-
LCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJl
|
|
467
|
-
dHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAgICBl
|
|
468
|
-
bmQKCiAgICBpZgogICAgICAoCiAgICAgICAgZmllbGQgPT0gJ2NhbXBhaWduX2lkJwogICAgICAg
|
|
469
|
-
IG9yIGZpZWxkID09ICd0YXJnZXRfaWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ2FjY2Vzc19sZXZl
|
|
470
|
-
bCcKICAgICAgICBvciBmaWVsZCA9PSAnZG9ub3Jfc3ViJwogICAgICAgIG9yIGZpZWxkID09ICdk
|
|
471
|
-
b25vcl9kb21haW4nCiAgICAgICAgb3IgZmllbGQgPT0gJ2Rvbm9yX3BvcnQnCiAgICAgICAgb3Ig
|
|
472
|
-
ZmllbGQgPT0gJ21pcnJvcl9zdWInCiAgICAgICAgb3IgZmllbGQgPT0gJ21pcnJvcl9wb3J0Jwog
|
|
473
|
-
ICAgICApIGFuZCB2YWx1ZSA9PSAnJwogICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
|
|
474
|
-
cmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIC0tIHN0
|
|
475
|
-
eWx1YTogaWdub3JlCiAgbG9jYWwgZG9ub3Jfc3RyID0gbW9kZWwuY2FtcGFpZ25faWQKICAgIC4u
|
|
476
|
-
ICdcdCcgLi4gbW9kZWwuZG9ub3Jfc3ViCiAgICAuLiAnXHQnIC4uIG1vZGVsLmRvbm9yX2RvbWFp
|
|
477
|
-
bgogICAgLi4gJ1x0JyAuLiBtb2RlbC5kb25vcl9wb3J0CgogIGlmIHJlZGlzLmNhbGwoJ1NJU01F
|
|
478
|
-
TUJFUicsIHRhcmdldF9kb25vcnNfa2V5LCBkb25vcl9zdHIpIH49IDAgdGhlbgogICAgcmV0dXJu
|
|
479
|
-
IHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgVGFyZ2V0IGRvbm9yIGFsbHJlYWR5IHRha2Vu
|
|
480
|
-
JykKICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBsb2NhbCBtaXJyb3Jfc3RyID0gbW9kZWwu
|
|
481
|
-
Y2FtcGFpZ25faWQKICAgIC4uICdcdCcgLi4gbW9kZWwubWlycm9yX3N1YgogICAgLi4gJ1x0JyAu
|
|
482
|
-
LiBtb2RlbC5taXJyb3JfcG9ydAoKICBpZiByZWRpcy5jYWxsKCdTSVNNRU1CRVInLCB0YXJnZXRf
|
|
483
|
-
bWlycm9yc19rZXksIG1pcnJvcl9zdHIpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
|
|
484
|
-
c19yZXBseSgnQ09ORkxJQ1QgVGFyZ2V0IG1pcnJvciBhbGxyZWFkeSB0YWtlbicpCiAgZW5kCgog
|
|
485
|
-
IGxvY2FsIG1pcnJvcl9ob3N0bmFtZSA9IG1vZGVsLm1pcnJvcl9zdWIgfj0gJy4nCiAgICAgIGFu
|
|
486
|
-
ZCAobW9kZWwubWlycm9yX3N1YiAuLiAnLicgLi4gc3Rhc2gubWlycm9yX2RvbWFpbikKICAgIG9y
|
|
487
|
-
IHN0YXNoLm1pcnJvcl9kb21haW4KICBsb2NhbCBtaXJyb3JfaG9zdCA9IG1pcnJvcl9ob3N0bmFt
|
|
488
|
-
ZSAuLiAnOicgLi4gbW9kZWwubWlycm9yX3BvcnQKCiAgaWYgcmVkaXMuY2FsbCgnSEVYSVNUUycs
|
|
489
|
-
IHRhcmdldF9taXJyb3JfaG9zdHNfa2V5LCBtaXJyb3JfaG9zdCkgfj0gMCB0aGVuCiAgICByZXR1
|
|
490
|
-
cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBUYXJnZXQgbWlycm9yIGhvc3QgYWxscmVhZHkgdGFr
|
|
491
|
-
ZW4nKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxvY2tfc2Vj
|
|
492
|
-
cmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWln
|
|
493
|
-
biBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4K
|
|
494
|
-
CiAgbG9jYWwgc3RvcmUgPSB7fQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBk
|
|
495
|
-
bwogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCBmaWVsZCkKICAgIHRhYmxlLmluc2VydChzdG9yZSwg
|
|
496
|
-
dmFsdWUpCiAgZW5kCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCB0YXJnZXRfa2V5LCB1bnBhY2soc3Rv
|
|
497
|
-
cmUpKQoKICByZWRpcy5jYWxsKCdTQUREJywgdGFyZ2V0X2Rvbm9yc19rZXksIGRvbm9yX3N0cikK
|
|
498
|
-
ICByZWRpcy5jYWxsKCdTQUREJywgdGFyZ2V0X21pcnJvcnNfa2V5LCBtaXJyb3Jfc3RyKQoKICBs
|
|
499
|
-
b2NhbCB0YXJnZXRfbGluayA9IG1vZGVsLmNhbXBhaWduX2lkIC4uICdcdCcgLi4gbW9kZWwudGFy
|
|
500
|
-
Z2V0X2lkCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHRhcmdldF9taXJyb3JfaG9zdHNfa2V5LCBtaXJy
|
|
501
|
-
b3JfaG9zdCwgdGFyZ2V0X2xpbmspCgogIHJlZGlzLmNhbGwoJ1pBREQnLCB0YXJnZXRfaW5kZXhf
|
|
502
|
-
a2V5LCBtb2RlbC5jcmVhdGVkX2F0LCBtb2RlbC50YXJnZXRfaWQpCgogIHJldHVybiByZWRpcy5z
|
|
503
|
-
dGF0dXNfcmVwbHkoJ09LIFRhcmdldCBjcmVhdGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5j
|
|
504
|
-
dGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdjcmVhdGVfdGFyZ2V0JywKICBjYWxsYmFjayA9IGNy
|
|
505
|
-
ZWF0ZV90YXJnZXQsCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIHRhcmdldCcsCn0pCgotLVtbCiAg
|
|
506
|
-
UmVhZCB0YXJnZXQKLS1dXQpsb2NhbCBmdW5jdGlvbiByZWFkX3RhcmdldChrZXlzLCBhcmdzKQog
|
|
507
|
-
IGlmICNrZXlzIH49IDMgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
|
|
508
|
-
cmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9r
|
|
509
|
-
ZXkgPSBrZXlzWzFdCiAgbG9jYWwgdGFyZ2V0X2tleSA9IGtleXNbMl0KICBsb2NhbCB0YXJnZXRf
|
|
510
|
-
bGFiZWxzX2tleSA9IGtleXNbM10KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25f
|
|
511
|
-
a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJ
|
|
512
|
-
U1RTJywgdGFyZ2V0X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0
|
|
513
|
-
eWx1YTogaWdub3JlCiAgbG9jYWwgdmFsdWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIHRh
|
|
514
|
-
cmdldF9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAgJ3RhcmdldF9pZCcsCiAgICAnYWNjZXNz
|
|
515
|
-
X2xldmVsJywKICAgICdkb25vcl9zZWN1cmUnLAogICAgJ2Rvbm9yX3N1YicsCiAgICAnZG9ub3Jf
|
|
516
|
-
ZG9tYWluJywKICAgICdkb25vcl9wb3J0JywKICAgICdtaXJyb3Jfc2VjdXJlJywKICAgICdtaXJy
|
|
517
|
-
b3Jfc3ViJywKICAgICdtaXJyb3JfcG9ydCcsCiAgICAnaXNfZW5hYmxlZCcsCiAgICAnbWVzc2Fn
|
|
518
|
-
ZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0gMTMgdGhlbgog
|
|
519
|
-
ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoK
|
|
520
|
-
ICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgdGFyZ2V0
|
|
521
|
-
X2lkID0gdmFsdWVzWzJdLAogICAgYWNjZXNzX2xldmVsID0gdmFsdWVzWzNdLAogICAgZG9ub3Jf
|
|
522
|
-
c2VjdXJlID0gdG9udW1iZXIodmFsdWVzWzRdKSwKICAgIGRvbm9yX3N1YiA9IHZhbHVlc1s1XSwK
|
|
523
|
-
ICAgIGRvbm9yX2RvbWFpbiA9IHZhbHVlc1s2XSwKICAgIGRvbm9yX3BvcnQgPSB2YWx1ZXNbN10s
|
|
524
|
-
CiAgICBtaXJyb3Jfc2VjdXJlID0gdG9udW1iZXIodmFsdWVzWzhdKSwKICAgIG1pcnJvcl9zdWIg
|
|
525
|
-
PSB2YWx1ZXNbOV0sCiAgICBtaXJyb3JfZG9tYWluID0gcmVkaXMuY2FsbCgnSEdFVCcsIGNhbXBh
|
|
526
|
-
aWduX2tleSwgJ21pcnJvcl9kb21haW4nKSwKICAgIG1pcnJvcl9wb3J0ID0gdmFsdWVzWzEwXSwK
|
|
527
|
-
ICAgIGxhYmVscyA9IHJlZGlzLmNhbGwoJ1NNRU1CRVJTJywgdGFyZ2V0X2xhYmVsc19rZXkpLAog
|
|
528
|
-
ICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHZhbHVlc1sxMV0pLAogICAgbWVzc2FnZV9jb3VudCA9
|
|
529
|
-
IHRvbnVtYmVyKHZhbHVlc1sxMl0pLAogICAgY3JlYXRlZF9hdCA9IHRvbnVtYmVyKHZhbHVlc1sx
|
|
530
|
-
M10pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5v
|
|
531
|
-
dCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0g
|
|
532
|
-
bW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9
|
|
533
|
-
CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF90
|
|
534
|
-
YXJnZXQnLAogIGNhbGxiYWNrID0gcmVhZF90YXJnZXQsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMn
|
|
535
|
-
IH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCB0YXJnZXQnLAp9KQoKLS1bWwogIFJlYWQgZnVsbCB0
|
|
536
|
-
YXJnZXQKLS1dXQpsb2NhbCBmdW5jdGlvbiByZWFkX2Z1bGxfdGFyZ2V0KGtleXMsIGFyZ3MpCiAg
|
|
537
|
-
aWYgI2tleXMgfj0gMyBvciAjYXJncyB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9y
|
|
538
|
-
ZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tl
|
|
539
|
-
eSA9IGtleXNbMV0KICBsb2NhbCB0YXJnZXRfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9s
|
|
540
|
-
YWJlbHNfa2V5ID0ga2V5c1szXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9r
|
|
541
|
-
ZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElT
|
|
542
|
-
VFMnLCB0YXJnZXRfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgLS0gc3R5
|
|
543
|
-
bHVhOiBpZ25vcmUKICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxsKAogICAgJ0hNR0VUJywgdGFy
|
|
544
|
-
Z2V0X2tleSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAndGFyZ2V0X2lkJywKICAgICdhY2Nlc3Nf
|
|
545
|
-
bGV2ZWwnLAogICAgJ2Rvbm9yX3NlY3VyZScsCiAgICAnZG9ub3Jfc3ViJywKICAgICdkb25vcl9k
|
|
546
|
-
b21haW4nLAogICAgJ2Rvbm9yX3BvcnQnLAogICAgJ21pcnJvcl9zZWN1cmUnLAogICAgJ21pcnJv
|
|
547
|
-
cl9zdWInLAogICAgJ21pcnJvcl9wb3J0JywKICAgICdjb25uZWN0X3RpbWVvdXQnLAogICAgJ3Np
|
|
548
|
-
bXBsZV90aW1lb3V0JywKICAgICdzdHJlYW1fdGltZW91dCcsCiAgICAnaGVhZGVyc19zaXplX2xp
|
|
549
|
-
bWl0JywKICAgICdib2R5X3NpemVfbGltaXQnLAogICAgJ21haW5fcGFnZScsCiAgICAnbm90X2Zv
|
|
550
|
-
dW5kX3BhZ2UnLAogICAgJ2Zhdmljb25faWNvJywKICAgICdyb2JvdHNfdHh0JywKICAgICdzaXRl
|
|
551
|
-
bWFwX3htbCcsCiAgICAnYWxsb3dfd2Vic29ja2V0cycsCiAgICAnaXNfZW5hYmxlZCcsCiAgICAn
|
|
552
|
-
bWVzc2FnZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0gMjQg
|
|
553
|
-
dGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQog
|
|
554
|
-
IGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAg
|
|
555
|
-
dGFyZ2V0X2lkID0gdmFsdWVzWzJdLAogICAgYWNjZXNzX2xldmVsID0gdmFsdWVzWzNdLAogICAg
|
|
556
|
-
ZG9ub3Jfc2VjdXJlID0gdG9udW1iZXIodmFsdWVzWzRdKSwKICAgIGRvbm9yX3N1YiA9IHZhbHVl
|
|
557
|
-
c1s1XSwKICAgIGRvbm9yX2RvbWFpbiA9IHZhbHVlc1s2XSwKICAgIGRvbm9yX3BvcnQgPSB2YWx1
|
|
558
|
-
ZXNbN10sCiAgICBtaXJyb3Jfc2VjdXJlID0gdG9udW1iZXIodmFsdWVzWzhdKSwKICAgIG1pcnJv
|
|
559
|
-
cl9zdWIgPSB2YWx1ZXNbOV0sCiAgICBtaXJyb3JfZG9tYWluID0gcmVkaXMuY2FsbCgnSEdFVCcs
|
|
560
|
-
IGNhbXBhaWduX2tleSwgJ21pcnJvcl9kb21haW4nKSwKICAgIG1pcnJvcl9wb3J0ID0gdmFsdWVz
|
|
561
|
-
WzEwXSwKICAgIGxhYmVscyA9IHJlZGlzLmNhbGwoJ1NNRU1CRVJTJywgdGFyZ2V0X2xhYmVsc19r
|
|
562
|
-
ZXkpLAogICAgY29ubmVjdF90aW1lb3V0ID0gdG9udW1iZXIodmFsdWVzWzExXSksCiAgICBzaW1w
|
|
563
|
-
bGVfdGltZW91dCA9IHRvbnVtYmVyKHZhbHVlc1sxMl0pLAogICAgc3RyZWFtX3RpbWVvdXQgPSB0
|
|
564
|
-
b251bWJlcih2YWx1ZXNbMTNdKSwKICAgIGhlYWRlcnNfc2l6ZV9saW1pdCA9IHRvbnVtYmVyKHZh
|
|
565
|
-
bHVlc1sxNF0pLAogICAgYm9keV9zaXplX2xpbWl0ID0gdG9udW1iZXIodmFsdWVzWzE1XSksCiAg
|
|
566
|
-
ICBtYWluX3BhZ2UgPSB2YWx1ZXNbMTZdLAogICAgbm90X2ZvdW5kX3BhZ2UgPSB2YWx1ZXNbMTdd
|
|
567
|
-
LAogICAgZmF2aWNvbl9pY28gPSB2YWx1ZXNbMThdLAogICAgcm9ib3RzX3R4dCA9IHZhbHVlc1sx
|
|
568
|
-
OV0sCiAgICBzaXRlbWFwX3htbCA9IHZhbHVlc1syMF0sCiAgICBhbGxvd193ZWJzb2NrZXRzID0g
|
|
569
|
-
dG9udW1iZXIodmFsdWVzWzIxXSksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIodmFsdWVzWzIy
|
|
570
|
-
XSksCiAgICBtZXNzYWdlX2NvdW50ID0gdG9udW1iZXIodmFsdWVzWzIzXSksCiAgICBjcmVhdGVk
|
|
571
|
-
X2F0ID0gdG9udW1iZXIodmFsdWVzWzI0XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBh
|
|
572
|
-
aXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVy
|
|
573
|
-
cm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgog
|
|
574
|
-
IHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAg
|
|
575
|
-
ZnVuY3Rpb25fbmFtZSA9ICdyZWFkX2Z1bGxfdGFyZ2V0JywKICBjYWxsYmFjayA9IHJlYWRfZnVs
|
|
576
|
-
bF90YXJnZXQsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVh
|
|
577
|
-
ZCBmdWxsIHRhcmdldCcsCn0pCgotLVtbCiAgRmluZCB0YXJnZXQgbGluawotLV1dCmxvY2FsIGZ1
|
|
578
|
-
bmN0aW9uIGZpbmRfdGFyZ2V0X2xpbmsoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAxIG9yICNh
|
|
579
|
-
cmdzIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVu
|
|
580
|
-
Y3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgdGFyZ2V0X21pcnJvcl9ob3N0c19rZXkgPSBrZXlz
|
|
581
|
-
WzFdCgogIGxvY2FsIG1pcnJvcl9ob3N0ID0gYXJnc1sxXQoKICBpZiBub3QgKG1pcnJvcl9ob3N0
|
|
582
|
-
IGFuZCBtaXJyb3JfaG9zdCB+PSAnJykgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
|
|
583
|
-
KCdFUlIgV3JvbmcgbWlycm9yX2hvc3QnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdIRVhJU1RT
|
|
584
|
-
JywgdGFyZ2V0X21pcnJvcl9ob3N0c19rZXksIG1pcnJvcl9ob3N0KSB+PSAxIHRoZW4KICAgIHJl
|
|
585
|
-
dHVybiBuaWwKICBlbmQKCiAgbG9jYWwgdGFyZ2V0X2xpbmsgPSByZWRpcy5jYWxsKCdIR0VUJywg
|
|
586
|
-
dGFyZ2V0X21pcnJvcl9ob3N0c19rZXksIG1pcnJvcl9ob3N0KQogIGxvY2FsIGNhbXBhaWduX2lk
|
|
587
|
-
LCB0YXJnZXRfaWQgPSBzdHJpbmcubWF0Y2godGFyZ2V0X2xpbmssICcoW15cdF0rKVx0KFteXHRd
|
|
588
|
-
KyknKQoKICBpZiBub3QgKGNhbXBhaWduX2lkIGFuZCBjYW1wYWlnbl9pZCB+PSAnJyBhbmQgdGFy
|
|
589
|
-
Z2V0X2lkIGFuZCB0YXJnZXRfaWQgfj0gJycpIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9y
|
|
590
|
-
ZXBseSgnRVJSIE1hbGZvcm0gdGFyZ2V0X2xpbmsnKQogIGVuZAoKICByZXR1cm4geyBjYW1wYWln
|
|
591
|
-
bl9pZCwgdGFyZ2V0X2lkIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rp
|
|
592
|
-
b25fbmFtZSA9ICdmaW5kX3RhcmdldF9saW5rJywKICBjYWxsYmFjayA9IGZpbmRfdGFyZ2V0X2xp
|
|
593
|
-
bmssCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnRmluZCB0YXJn
|
|
594
|
-
ZXQgbGluaycsCn0pCgotLVtbCiAgUmVhZCB0YXJnZXQgaW5kZXgKLS1dXQpsb2NhbCBmdW5jdGlv
|
|
595
|
-
biByZWFkX3RhcmdldF9pbmRleChrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mg
|
|
596
|
-
fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
|
|
597
|
-
biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgdGFy
|
|
598
|
-
Z2V0X2luZGV4X2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFp
|
|
599
|
-
Z25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgcmV0dXJuIHJlZGlzLmNh
|
|
600
|
-
bGwoJ1pSQU5HRScsIHRhcmdldF9pbmRleF9rZXksIDAsIC0xKQplbmQKCnJlZGlzLnJlZ2lzdGVy
|
|
601
|
-
X2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ3JlYWRfdGFyZ2V0X2luZGV4JywKICBjYWxs
|
|
602
|
-
YmFjayA9IHJlYWRfdGFyZ2V0X2luZGV4LAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRl
|
|
603
|
-
c2NyaXB0aW9uID0gJ1JlYWQgdGFyZ2V0IGluZGV4JywKfSkKCi0tW1sKICBVcGRhdGUgdGFyZ2V0
|
|
604
|
-
Ci0tXV0KbG9jYWwgZnVuY3Rpb24gdXBkYXRlX3RhcmdldChrZXlzLCBhcmdzKQogIGlmICNrZXlz
|
|
605
|
-
IH49IDMgb3IgI2FyZ3MgPCAxIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJS
|
|
606
|
-
IFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNb
|
|
607
|
-
MV0KICBsb2NhbCBjYW1wYWlnbl9sb2NrX2tleSA9IGtleXNbMl0KICBsb2NhbCB0YXJnZXRfa2V5
|
|
608
|
-
ID0ga2V5c1szXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEg
|
|
609
|
-
dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5v
|
|
610
|
-
dCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2Nr
|
|
611
|
-
X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4g
|
|
612
|
-
Q2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRh
|
|
613
|
-
cmdldF9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZP
|
|
614
|
-
VU5EIFRhcmdldCBub3QgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2Nr
|
|
615
|
-
X3NlY3JldCA9IHRhYmxlLnJlbW92ZShhcmdzKSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRp
|
|
616
|
-
cy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVl
|
|
617
|
-
IGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJl
|
|
618
|
-
ZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAg
|
|
619
|
-
IGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0
|
|
620
|
-
JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
|
|
621
|
-
UlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiAjYXJncyAlIDIg
|
|
622
|
-
fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBPZGQgbnVtYmVyIG9m
|
|
623
|
-
IGFyZ3MnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHt9CgogIGZvciBpID0gMSwgI2FyZ3MsIDIg
|
|
624
|
-
ZG8KICAgIGxvY2FsIGZpZWxkLCB2YWx1ZSA9IGFyZ3NbaV0sIGFyZ3NbaSArIDFdCgogICAgaWYg
|
|
625
|
-
bW9kZWxbZmllbGRdIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgRHVw
|
|
626
|
-
bGljYXRlIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9PSAnY29ubmVj
|
|
627
|
-
dF90aW1lb3V0JyB0aGVuCiAgICAgIG1vZGVsLmNvbm5lY3RfdGltZW91dCA9IHRvbnVtYmVyKHZh
|
|
628
|
-
bHVlKQogICAgZWxzZWlmIGZpZWxkID09ICdzaW1wbGVfdGltZW91dCcgdGhlbgogICAgICBtb2Rl
|
|
629
|
-
bC5zaW1wbGVfdGltZW91dCA9IHRvbnVtYmVyKHZhbHVlKQogICAgZWxzZWlmIGZpZWxkID09ICdz
|
|
630
|
-
dHJlYW1fdGltZW91dCcgdGhlbgogICAgICBtb2RlbC5zdHJlYW1fdGltZW91dCA9IHRvbnVtYmVy
|
|
631
|
-
KHZhbHVlKQogICAgZWxzZWlmIGZpZWxkID09ICdoZWFkZXJzX3NpemVfbGltaXQnIHRoZW4KICAg
|
|
632
|
-
ICAgbW9kZWwuaGVhZGVyc19zaXplX2xpbWl0ID0gdG9udW1iZXIodmFsdWUpCiAgICBlbHNlaWYg
|
|
633
|
-
ZmllbGQgPT0gJ2JvZHlfc2l6ZV9saW1pdCcgdGhlbgogICAgICBtb2RlbC5ib2R5X3NpemVfbGlt
|
|
634
|
-
aXQgPSB0b251bWJlcih2YWx1ZSkKICAgIGVsc2VpZiBmaWVsZCA9PSAnbWFpbl9wYWdlJyB0aGVu
|
|
635
|
-
CiAgICAgIG1vZGVsLm1haW5fcGFnZSA9IHZhbHVlCiAgICBlbHNlaWYgZmllbGQgPT0gJ25vdF9m
|
|
636
|
-
b3VuZF9wYWdlJyB0aGVuCiAgICAgIG1vZGVsLm5vdF9mb3VuZF9wYWdlID0gdmFsdWUKICAgIGVs
|
|
637
|
-
c2VpZiBmaWVsZCA9PSAnZmF2aWNvbl9pY28nIHRoZW4KICAgICAgbW9kZWwuZmF2aWNvbl9pY28g
|
|
638
|
-
PSB2YWx1ZQogICAgZWxzZWlmIGZpZWxkID09ICdyb2JvdHNfdHh0JyB0aGVuCiAgICAgIG1vZGVs
|
|
639
|
-
LnJvYm90c190eHQgPSB2YWx1ZQogICAgZWxzZWlmIGZpZWxkID09ICdzaXRlbWFwX3htbCcgdGhl
|
|
640
|
-
bgogICAgICBtb2RlbC5zaXRlbWFwX3htbCA9IHZhbHVlCiAgICBlbHNlaWYgZmllbGQgPT0gJ2Fs
|
|
641
|
-
bG93X3dlYnNvY2tldHMnIHRoZW4KICAgICAgbW9kZWwuYWxsb3dfd2Vic29ja2V0cyA9IHRvbnVt
|
|
642
|
-
YmVyKHZhbHVlKQogICAgZWxzZQogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBV
|
|
643
|
-
bmtub3duIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgZm9yIGZpZWxkLCB2YWx1
|
|
644
|
-
ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiBy
|
|
645
|
-
ZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKICBl
|
|
646
|
-
bmQKCiAgaWYgbmV4dChtb2RlbCkgPT0gbmlsIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNf
|
|
647
|
-
cmVwbHkoJ09LIE5vdGhpbmcgdG8gdXBkYXRlJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2Nr
|
|
648
|
-
X3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVz
|
|
649
|
-
X3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQK
|
|
650
|
-
CiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIGxvY2FsIHN0b3JlID0ge30KCiAgZm9yIGZpZWxk
|
|
651
|
-
LCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIHRhYmxlLmluc2VydChzdG9yZSwgZmllbGQp
|
|
652
|
-
CiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIHZhbHVlKQogIGVuZAoKICByZWRpcy5jYWxsKCdIU0VU
|
|
653
|
-
JywgdGFyZ2V0X2tleSwgdW5wYWNrKHN0b3JlKSkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBs
|
|
654
|
-
eSgnT0sgVGFyZ2V0IHVwZGF0ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBm
|
|
655
|
-
dW5jdGlvbl9uYW1lID0gJ3VwZGF0ZV90YXJnZXQnLAogIGNhbGxiYWNrID0gdXBkYXRlX3Rhcmdl
|
|
656
|
-
dCwKICBkZXNjcmlwdGlvbiA9ICdVcGRhdGUgdGFyZ2V0JywKfSkKCi0tW1sKICBFbmFibGUgdGFy
|
|
657
|
-
Z2V0Ci0tXV0KbG9jYWwgZnVuY3Rpb24gZW5hYmxlX3RhcmdldChrZXlzLCBhcmdzKQogIGlmICNr
|
|
658
|
-
ZXlzIH49IDMgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
|
|
659
|
-
J0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBr
|
|
660
|
-
ZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgdGFyZ2V0
|
|
661
|
-
X2tleSA9IGtleXNbM10KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+
|
|
662
|
-
PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWln
|
|
663
|
-
biBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25f
|
|
664
|
-
bG9ja19rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklE
|
|
665
|
-
REVOIENhbXBhaWduIG5vdCBsb2NrZWQnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMn
|
|
666
|
-
LCB0YXJnZXRfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05P
|
|
667
|
-
VF9GT1VORCBUYXJnZXQgbm90IGV4aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAg
|
|
668
|
-
bG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwo
|
|
669
|
-
J0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIGlzX2VuYWJsZWQgPSB0b251bWJlcihyZWRp
|
|
670
|
-
cy5jYWxsKCdIR0VUJywgdGFyZ2V0X2tleSwgJ2lzX2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmll
|
|
671
|
-
bGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAg
|
|
672
|
-
cmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAg
|
|
673
|
-
IGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xv
|
|
674
|
-
Y2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9y
|
|
675
|
-
X3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBz
|
|
676
|
-
dGFzaC5pc19lbmFibGVkIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgn
|
|
677
|
-
T0sgVGFyZ2V0IGFsbHJlYWR5IGVuYWJsZWQnKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tf
|
|
678
|
-
c2VjcmV0IH49IHN0YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNf
|
|
679
|
-
cmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoK
|
|
680
|
-
ICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHRhcmdldF9rZXks
|
|
681
|
-
ICdpc19lbmFibGVkJywgMSkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgVGFyZ2V0
|
|
682
|
-
IGVuYWJsZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1l
|
|
683
|
-
ID0gJ2VuYWJsZV90YXJnZXQnLAogIGNhbGxiYWNrID0gZW5hYmxlX3RhcmdldCwKICBkZXNjcmlw
|
|
684
|
-
dGlvbiA9ICdFbmFibGUgdGFyZ2V0JywKfSkKCi0tW1sKICBEaXNhYmxlIHRhcmdldAotLV1dCmxv
|
|
685
|
-
Y2FsIGZ1bmN0aW9uIGRpc2FibGVfdGFyZ2V0KGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMyBv
|
|
686
|
-
ciAjYXJncyB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25n
|
|
687
|
-
IGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBs
|
|
688
|
-
b2NhbCBjYW1wYWlnbl9sb2NrX2tleSA9IGtleXNbMl0KICBsb2NhbCB0YXJnZXRfa2V5ID0ga2V5
|
|
689
|
-
c1szXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgog
|
|
690
|
-
ICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlz
|
|
691
|
-
dHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tleSkg
|
|
692
|
-
fj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFp
|
|
693
|
-
Z24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRhcmdldF9r
|
|
694
|
-
ZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFRh
|
|
695
|
-
cmdldCBub3QgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3Jl
|
|
696
|
-
dCA9IGFyZ3NbMV0sCiAgICBvcmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2Ft
|
|
697
|
-
cGFpZ25fbG9ja19rZXkpLAogICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHJlZGlzLmNhbGwoJ0hH
|
|
698
|
-
RVQnLCB0YXJnZXRfa2V5LCAnaXNfZW5hYmxlZCcpKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUg
|
|
699
|
-
aW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVk
|
|
700
|
-
aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAg
|
|
701
|
-
aWYgKGZpZWxkID09ICdsb2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNyZXQn
|
|
702
|
-
KSBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VS
|
|
703
|
-
UiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLmlzX2Vu
|
|
704
|
-
YWJsZWQgPT0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBUYXJnZXQg
|
|
705
|
-
YWxscmVhZHkgZGlzYWJsZWQnKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49
|
|
706
|
-
IHN0YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZP
|
|
707
|
-
UkJJRERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2lu
|
|
708
|
-
dCBvZiBubyByZXR1cm4KCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHRhcmdldF9rZXksICdpc19lbmFi
|
|
709
|
-
bGVkJywgMCkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgVGFyZ2V0IGRpYWJsZWQn
|
|
710
|
-
KQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2Rpc2Fi
|
|
711
|
-
bGVfdGFyZ2V0JywKICBjYWxsYmFjayA9IGRpc2FibGVfdGFyZ2V0LAogIGRlc2NyaXB0aW9uID0g
|
|
712
|
-
J0Rpc2FibGUgdGFyZ2V0JywKfSkKCi0tW1sKICBBcHBlbmQgdGFyZ2V0IGxhYmVsCi0tXV0KbG9j
|
|
713
|
-
YWwgZnVuY3Rpb24gYXBwZW5kX3RhcmdldF9sYWJlbChrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49
|
|
714
|
-
IDQgb3IgI2FyZ3Mgfj0gMiB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBX
|
|
715
|
-
cm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFd
|
|
716
|
-
CiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgdGFyZ2V0X2tleSA9
|
|
717
|
-
IGtleXNbM10KICBsb2NhbCB0YXJnZXRfbGFiZWxzX2tleSA9IGtleXNbNF0KCiAgaWYgcmVkaXMu
|
|
718
|
-
Y2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5z
|
|
719
|
-
dGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYg
|
|
720
|
-
cmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEgdGhlbgogICAgcmV0
|
|
721
|
-
dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5vdCBsb2NrZWQnKQog
|
|
722
|
-
IGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCB0YXJnZXRfa2V5KSB+PSAxIHRoZW4KICAg
|
|
723
|
-
IHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBUYXJnZXQgbm90IGV4aXN0cycp
|
|
724
|
-
CiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbGFiZWwgPSBhcmdzWzFdLAogICAgbG9ja19z
|
|
725
|
-
ZWNyZXQgPSBhcmdzWzJdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcs
|
|
726
|
-
IGNhbXBhaWduX2xvY2tfa2V5KSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rh
|
|
727
|
-
c2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
|
|
728
|
-
bHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYKICAgICAgKGZp
|
|
729
|
-
ZWxkID09ICdsYWJlbCcgb3IgZmllbGQgPT0gJ2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9PSAnb3Jp
|
|
730
|
-
Z19sb2NrX3NlY3JldCcpIGFuZCB2YWx1ZSA9PSAnJwogICAgdGhlbgogICAgICByZXR1cm4gcmVk
|
|
731
|
-
aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5k
|
|
732
|
-
CgogIGlmIHJlZGlzLmNhbGwoJ1NJU01FTUJFUicsIHRhcmdldF9sYWJlbHNfa2V5LCBzdGFzaC5s
|
|
733
|
-
YWJlbCkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBUYXJnZXQg
|
|
734
|
-
bGFiZWwgYWxscmVhZHkgZXhpc3RzJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3Jl
|
|
735
|
-
dCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5
|
|
736
|
-
KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0g
|
|
737
|
-
UG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwoJ1NBREQnLCB0YXJnZXRfbGFiZWxzX2tl
|
|
738
|
-
eSwgc3Rhc2gubGFiZWwpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFRhcmdldCBs
|
|
739
|
-
YWJlbCBhcHBlbmRlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9u
|
|
740
|
-
X25hbWUgPSAnYXBwZW5kX3RhcmdldF9sYWJlbCcsCiAgY2FsbGJhY2sgPSBhcHBlbmRfdGFyZ2V0
|
|
741
|
-
X2xhYmVsLAogIGRlc2NyaXB0aW9uID0gJ0FwcGVuZCB0YXJnZXQgbGFiZWwnLAp9KQoKLS1bWwog
|
|
742
|
-
IFJlbW92ZSB0YXJnZXQgbGFiZWwKLS1dXQpsb2NhbCBmdW5jdGlvbiByZW1vdmVfdGFyZ2V0X2xh
|
|
743
|
-
YmVsKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gNCBvciAjYXJncyB+PSAyIHRoZW4KICAgIHJl
|
|
744
|
-
dHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgog
|
|
745
|
-
IGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWlnbl9sb2NrX2tleSA9
|
|
746
|
-
IGtleXNbMl0KICBsb2NhbCB0YXJnZXRfa2V5ID0ga2V5c1szXQogIGxvY2FsIHRhcmdldF9sYWJl
|
|
747
|
-
bHNfa2V5ID0ga2V5c1s0XQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkp
|
|
748
|
-
IH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBh
|
|
749
|
-
aWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWln
|
|
750
|
-
bl9sb2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JC
|
|
751
|
-
SURERU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
|
|
752
|
-
UycsIHRhcmdldF9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgn
|
|
753
|
-
Tk9UX0ZPVU5EIFRhcmdldCBub3QgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAg
|
|
754
|
-
ICBsYWJlbCA9IGFyZ3NbMV0sCiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMl0sCiAgICBvcmlnX2xv
|
|
755
|
-
Y2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2FtcGFpZ25fbG9ja19rZXkpLAogIH0KCiAg
|
|
756
|
-
Zm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVu
|
|
757
|
-
CiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmll
|
|
758
|
-
bGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoZmllbGQgPT0gJ2xhYmVsJyBvciBmaWVsZCA9PSAn
|
|
759
|
-
bG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09
|
|
760
|
-
ICcnCiAgICB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0
|
|
761
|
-
YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnU0lTTUVNQkVS
|
|
762
|
-
JywgdGFyZ2V0X2xhYmVsc19rZXksIHN0YXNoLmxhYmVsKSB+PSAxIHRoZW4KICAgIHJldHVybiBy
|
|
763
|
-
ZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFRhcmdldCBsYWJlbCBub3QgZXhpc3RzJykKICBlbmQKCiAg
|
|
764
|
-
aWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICBy
|
|
765
|
-
ZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQg
|
|
766
|
-
bm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwo
|
|
767
|
-
J1NSRU0nLCB0YXJnZXRfbGFiZWxzX2tleSwgc3Rhc2gubGFiZWwpCgogIHJldHVybiByZWRpcy5z
|
|
768
|
-
dGF0dXNfcmVwbHkoJ09LIFRhcmdldCBsYWJlbCByZW1vdmVkJykKZW5kCgpyZWRpcy5yZWdpc3Rl
|
|
769
|
-
cl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZW1vdmVfdGFyZ2V0X2xhYmVsJywKICBj
|
|
770
|
-
YWxsYmFjayA9IHJlbW92ZV90YXJnZXRfbGFiZWwsCiAgZGVzY3JpcHRpb24gPSAnUmVtb3ZlIHRh
|
|
771
|
-
cmdldCBsYWJlbCcsCn0pCgotLVtbCiAgRGVsZXRlIHRhcmdldAotLV1dCmxvY2FsIGZ1bmN0aW9u
|
|
772
|
-
IGRlbGV0ZV90YXJnZXQoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSA4IG9yICNhcmdzIH49IDEg
|
|
773
|
-
dGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNl
|
|
774
|
-
JykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNhbXBhaWdu
|
|
775
|
-
X2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9rZXkgPSBrZXlzWzNdCiAgbG9jYWwg
|
|
776
|
-
dGFyZ2V0X2xhYmVsc19rZXkgPSBrZXlzWzRdCiAgbG9jYWwgdGFyZ2V0X2Rvbm9yc19rZXkgPSBr
|
|
777
|
-
ZXlzWzVdCiAgbG9jYWwgdGFyZ2V0X21pcnJvcnNfa2V5ID0ga2V5c1s2XQogIGxvY2FsIHRhcmdl
|
|
778
|
-
dF9taXJyb3JfaG9zdHNfa2V5ID0ga2V5c1s3XQogIGxvY2FsIHRhcmdldF9pbmRleF9rZXkgPSBr
|
|
779
|
-
ZXlzWzhdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVu
|
|
780
|
-
CiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4
|
|
781
|
-
aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5
|
|
782
|
-
KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1w
|
|
783
|
-
YWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgdGFyZ2V0
|
|
784
|
-
X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQg
|
|
785
|
-
VGFyZ2V0IG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2Vj
|
|
786
|
-
cmV0ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBj
|
|
787
|
-
YW1wYWlnbl9sb2NrX2tleSksCiAgICBjYW1wYWlnbl9pZCA9IHJlZGlzLmNhbGwoJ0hHRVQnLCB0
|
|
788
|
-
YXJnZXRfa2V5LCAnY2FtcGFpZ25faWQnKSwKICAgIHRhcmdldF9pZCA9IHJlZGlzLmNhbGwoJ0hH
|
|
789
|
-
RVQnLCB0YXJnZXRfa2V5LCAndGFyZ2V0X2lkJyksCiAgICBkb25vcl9zdWIgPSByZWRpcy5jYWxs
|
|
790
|
-
KCdIR0VUJywgdGFyZ2V0X2tleSwgJ2Rvbm9yX3N1YicpLAogICAgZG9ub3JfZG9tYWluID0gcmVk
|
|
791
|
-
aXMuY2FsbCgnSEdFVCcsIHRhcmdldF9rZXksICdkb25vcl9kb21haW4nKSwKICAgIGRvbm9yX3Bv
|
|
792
|
-
cnQgPSByZWRpcy5jYWxsKCdIR0VUJywgdGFyZ2V0X2tleSwgJ2Rvbm9yX3BvcnQnKSwKICAgIG1p
|
|
793
|
-
cnJvcl9zdWIgPSByZWRpcy5jYWxsKCdIR0VUJywgdGFyZ2V0X2tleSwgJ21pcnJvcl9zdWInKSwK
|
|
794
|
-
ICAgIG1pcnJvcl9kb21haW4gPSByZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbWly
|
|
795
|
-
cm9yX2RvbWFpbicpLAogICAgbWlycm9yX3BvcnQgPSByZWRpcy5jYWxsKCdIR0VUJywgdGFyZ2V0
|
|
796
|
-
X2tleSwgJ21pcnJvcl9wb3J0JyksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2Fs
|
|
797
|
-
bCgnSEdFVCcsIHRhcmdldF9rZXksICdpc19lbmFibGVkJykpLAogIH0KCiAgZm9yIGZpZWxkLCB2
|
|
798
|
-
YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVy
|
|
799
|
-
biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQK
|
|
800
|
-
CiAgICBpZgogICAgICAoCiAgICAgICAgZmllbGQgPT0gJ2xvY2tfc2VjcmV0JwogICAgICAgIG9y
|
|
801
|
-
IGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdjYW1wYWln
|
|
802
|
-
bl9pZCcKICAgICAgICBvciBmaWVsZCA9PSAndGFyZ2V0X2lkJwogICAgICAgIG9yIGZpZWxkID09
|
|
803
|
-
ICdkb25vcl9zdWInCiAgICAgICAgb3IgZmllbGQgPT0gJ2Rvbm9yX2RvbWFpbicKICAgICAgICBv
|
|
804
|
-
ciBmaWVsZCA9PSAnZG9ub3JfcG9ydCcKICAgICAgICBvciBmaWVsZCA9PSAnbWlycm9yX3N1YicK
|
|
805
|
-
ICAgICAgICBvciBmaWVsZCA9PSAnbWlycm9yX2RvbWFpbicKICAgICAgICBvciBmaWVsZCA9PSAn
|
|
806
|
-
bWlycm9yX3BvcnQnCiAgICAgICkgYW5kIHZhbHVlID09ICcnCiAgICB0aGVuCiAgICAgIHJldHVy
|
|
807
|
-
biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQK
|
|
808
|
-
ICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBsb2NhbCBkb25vcl9zdHIgPSBzdGFzaC5jYW1w
|
|
809
|
-
YWlnbl9pZAogICAgLi4gJ1x0JyAuLiBzdGFzaC5kb25vcl9zdWIKICAgIC4uICdcdCcgLi4gc3Rh
|
|
810
|
-
c2guZG9ub3JfZG9tYWluCiAgICAuLiAnXHQnIC4uIHN0YXNoLmRvbm9yX3BvcnQKCiAgLS0gc3R5
|
|
811
|
-
bHVhOiBpZ25vcmUKICBsb2NhbCBtaXJyb3Jfc3RyID0gc3Rhc2guY2FtcGFpZ25faWQKICAgIC4u
|
|
812
|
-
ICdcdCcgLi4gc3Rhc2gubWlycm9yX3N1YgogICAgLi4gJ1x0JyAuLiBzdGFzaC5taXJyb3JfcG9y
|
|
813
|
-
dAoKICBsb2NhbCBtaXJyb3JfaG9zdG5hbWUgPSBzdGFzaC5taXJyb3Jfc3ViIH49ICcuJwogICAg
|
|
814
|
-
ICBhbmQgKHN0YXNoLm1pcnJvcl9zdWIgLi4gJy4nIC4uIHN0YXNoLm1pcnJvcl9kb21haW4pCiAg
|
|
815
|
-
ICBvciBzdGFzaC5taXJyb3JfZG9tYWluCiAgbG9jYWwgbWlycm9yX2hvc3QgPSBtaXJyb3JfaG9z
|
|
816
|
-
dG5hbWUgLi4gJzonIC4uIHN0YXNoLm1pcnJvcl9wb3J0CgogIGlmIHN0YXNoLmlzX2VuYWJsZWQg
|
|
817
|
-
fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gVGFyZ2V0
|
|
818
|
-
IG5vdCBkaXNhYmxlZCcpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0gc3Rh
|
|
819
|
-
c2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklE
|
|
820
|
-
REVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50IG9m
|
|
821
|
-
IG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCB0YXJnZXRfa2V5KQogIHJlZGlzLmNhbGwo
|
|
822
|
-
J0RFTCcsIHRhcmdldF9sYWJlbHNfa2V5KQoKICByZWRpcy5jYWxsKCdTUkVNJywgdGFyZ2V0X2Rv
|
|
823
|
-
bm9yc19rZXksIGRvbm9yX3N0cikKICByZWRpcy5jYWxsKCdTUkVNJywgdGFyZ2V0X21pcnJvcnNf
|
|
824
|
-
a2V5LCBtaXJyb3Jfc3RyKQoKICByZWRpcy5jYWxsKCdIREVMJywgdGFyZ2V0X21pcnJvcl9ob3N0
|
|
825
|
-
c19rZXksIG1pcnJvcl9ob3N0KQoKICByZWRpcy5jYWxsKCdaUkVNJywgdGFyZ2V0X2luZGV4X2tl
|
|
826
|
-
eSwgc3Rhc2gudGFyZ2V0X2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBUYXJn
|
|
827
|
-
ZXQgZGVsZXRlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25h
|
|
828
|
-
bWUgPSAnZGVsZXRlX3RhcmdldCcsCiAgY2FsbGJhY2sgPSBkZWxldGVfdGFyZ2V0LAogIGRlc2Ny
|
|
829
|
-
aXB0aW9uID0gJ0RlbGV0ZSB0YXJnZXQnLAp9KQo=`,
|
|
830
|
-
'4-redirector.lua',
|
|
831
|
-
`IyFsdWEgbmFtZT1yZWRpcmVjdG9yCgotLVtbCiAgQ3JlYXRlIHJlZGlyZWN0b3IKLS1dXQpsb2Nh
|
|
832
|
-
bCBmdW5jdGlvbiBjcmVhdGVfcmVkaXJlY3RvcihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQg
|
|
833
|
-
b3IgI2FyZ3Mgfj0gNSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
|
|
834
|
-
ZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAg
|
|
835
|
-
bG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcmVkaXJlY3Rvcl9rZXkg
|
|
836
|
-
PSBrZXlzWzNdCiAgbG9jYWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkgPSBrZXlzWzRdCgogIGlmIHJl
|
|
837
|
-
ZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
|
|
838
|
-
aXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgog
|
|
839
|
-
IGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAg
|
|
840
|
-
IHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2Vk
|
|
841
|
-
JykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgcmVkaXJlY3Rvcl9rZXkpIH49IDAg
|
|
842
|
-
dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgUmVkaXJlY3RvciBh
|
|
843
|
-
bGxyZWFkeSBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0
|
|
844
|
-
ID0gYXJnc1s1XSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1w
|
|
845
|
-
YWlnbl9sb2NrX2tleSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBk
|
|
846
|
-
bwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
|
|
847
|
-
UlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9j
|
|
848
|
-
a19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcn
|
|
849
|
-
IHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAu
|
|
850
|
-
LiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lk
|
|
851
|
-
ID0gYXJnc1sxXSwKICAgIHJlZGlyZWN0b3JfaWQgPSBhcmdzWzJdLAogICAgcGFnZSA9IGFyZ3Nb
|
|
852
|
-
M10sCiAgICBsdXJlX2NvdW50ID0gMCwKICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcihhcmdzWzRd
|
|
853
|
-
KSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAgICBpZiBub3Qg
|
|
854
|
-
dmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2Rl
|
|
855
|
-
bC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgKGZpZWxkID09ICdjYW1wYWlnbl9pZCcgb3Ig
|
|
856
|
-
ZmllbGQgPT0gJ3JlZGlyZWN0b3JfaWQnKSBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1
|
|
857
|
-
cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5k
|
|
858
|
-
CiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQg
|
|
859
|
-
dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxv
|
|
860
|
-
Y2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICBs
|
|
861
|
-
b2NhbCBzdG9yZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAg
|
|
862
|
-
ICB0YWJsZS5pbnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCB2YWx1
|
|
863
|
-
ZSkKICBlbmQKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHJlZGlyZWN0b3Jfa2V5LCB1bnBhY2soc3Rv
|
|
864
|
-
cmUpKQoKICByZWRpcy5jYWxsKCdaQUREJywgcmVkaXJlY3Rvcl9pbmRleF9rZXksIG1vZGVsLmNy
|
|
865
|
-
ZWF0ZWRfYXQsIG1vZGVsLnJlZGlyZWN0b3JfaWQpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVw
|
|
866
|
-
bHkoJ09LIFJlZGlyZWN0b3IgY3JlYXRlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
|
|
867
|
-
ewogIGZ1bmN0aW9uX25hbWUgPSAnY3JlYXRlX3JlZGlyZWN0b3InLAogIGNhbGxiYWNrID0gY3Jl
|
|
868
|
-
YXRlX3JlZGlyZWN0b3IsCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIHJlZGlyZWN0b3InLAp9KQoK
|
|
869
|
-
LS1bWwogIFJlYWQgcmVkaXJlY3RvcgotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfcmVkaXJlY3Rv
|
|
870
|
-
cihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1
|
|
871
|
-
cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBs
|
|
872
|
-
b2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgcmVkaXJlY3Rvcl9rZXkgPSBrZXlz
|
|
873
|
-
WzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAg
|
|
874
|
-
ICByZXR1cm4gbmlsCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHJlZGlyZWN0b3Jf
|
|
875
|
-
a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUK
|
|
876
|
-
ICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxsKAogICAgJ0hNR0VUJywgcmVkaXJlY3Rvcl9rZXks
|
|
877
|
-
CiAgICAnY2FtcGFpZ25faWQnLAogICAgJ3JlZGlyZWN0b3JfaWQnLAogICAgJ2x1cmVfY291bnQn
|
|
878
|
-
LAogICAgJ2NyZWF0ZWRfYXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDQgdGhlbgogICAgcmV0dXJu
|
|
879
|
-
IHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoKICBsb2NhbCBt
|
|
880
|
-
b2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgcmVkaXJlY3Rvcl9pZCA9
|
|
881
|
-
IHZhbHVlc1syXSwKICAgIGx1cmVfY291bnQgPSB0b251bWJlcih2YWx1ZXNbM10pLAogICAgY3Jl
|
|
882
|
-
YXRlZF9hdCA9IHRvbnVtYmVyKHZhbHVlc1s0XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGlu
|
|
883
|
-
IHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlz
|
|
884
|
-
LmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5k
|
|
885
|
-
CgogIHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7
|
|
886
|
-
CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX3JlZGlyZWN0b3InLAogIGNhbGxiYWNrID0gcmVhZF9y
|
|
887
|
-
ZWRpcmVjdG9yLAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRlc2NyaXB0aW9uID0gJ1Jl
|
|
888
|
-
YWQgcmVkaXJlY3RvcicsCn0pCgotLVtbCiAgUmVhZCBmdWxsIHJlZGlyZWN0b3IKLS1dXQpsb2Nh
|
|
889
|
-
bCBmdW5jdGlvbiByZWFkX2Z1bGxfcmVkaXJlY3RvcihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49
|
|
890
|
-
IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBX
|
|
891
|
-
cm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFd
|
|
892
|
-
CiAgbG9jYWwgcmVkaXJlY3Rvcl9rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
|
|
893
|
-
UycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIGlmIHJl
|
|
894
|
-
ZGlzLmNhbGwoJ0VYSVNUUycsIHJlZGlyZWN0b3Jfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBu
|
|
895
|
-
aWwKICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxs
|
|
896
|
-
KAogICAgJ0hNR0VUJywgcmVkaXJlY3Rvcl9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAgJ3Jl
|
|
897
|
-
ZGlyZWN0b3JfaWQnLAogICAgJ3BhZ2UnLAogICAgJ2x1cmVfY291bnQnLAogICAgJ2NyZWF0ZWRf
|
|
898
|
-
YXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDUgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3Jl
|
|
899
|
-
cGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNh
|
|
900
|
-
bXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgcmVkaXJlY3Rvcl9pZCA9IHZhbHVlc1syXSwKICAg
|
|
901
|
-
IHBhZ2UgPSB2YWx1ZXNbM10sCiAgICBsdXJlX2NvdW50ID0gdG9udW1iZXIodmFsdWVzWzRdKSwK
|
|
902
|
-
ICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAogIH0KCiAgZm9yIGZpZWxkLCB2
|
|
903
|
-
YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVy
|
|
904
|
-
biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVu
|
|
905
|
-
ZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVu
|
|
906
|
-
Y3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9mdWxsX3JlZGlyZWN0b3InLAogIGNhbGxi
|
|
907
|
-
YWNrID0gcmVhZF9mdWxsX3JlZGlyZWN0b3IsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAg
|
|
908
|
-
ZGVzY3JpcHRpb24gPSAnUmVhZCBmdWxsIHJlZGlyZWN0b3InLAp9KQoKLS1bWwogIFJlYWQgcmVk
|
|
909
|
-
aXJlY3RvciBpbmRleAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfcmVkaXJlY3Rvcl9pbmRleChr
|
|
910
|
-
ZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4g
|
|
911
|
-
cmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2Nh
|
|
912
|
-
bCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkgPSBr
|
|
913
|
-
ZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVu
|
|
914
|
-
CiAgICByZXR1cm4gbmlsCiAgZW5kCgogIHJldHVybiByZWRpcy5jYWxsKCdaUkFOR0UnLCByZWRp
|
|
915
|
-
cmVjdG9yX2luZGV4X2tleSwgMCwgLTEpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewog
|
|
916
|
-
IGZ1bmN0aW9uX25hbWUgPSAncmVhZF9yZWRpcmVjdG9yX2luZGV4JywKICBjYWxsYmFjayA9IHJl
|
|
917
|
-
YWRfcmVkaXJlY3Rvcl9pbmRleCwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNjcmlw
|
|
918
|
-
dGlvbiA9ICdSZWFkIHJlZGlyZWN0b3IgaW5kZXgnLAp9KQoKLS1bWwogIFVwZGF0ZSByZWRpcmVj
|
|
919
|
-
dG9yCi0tXV0KbG9jYWwgZnVuY3Rpb24gdXBkYXRlX3JlZGlyZWN0b3Ioa2V5cywgYXJncykKICBp
|
|
920
|
-
ZiAja2V5cyB+PSAzIG9yICNhcmdzIDwgMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
|
|
921
|
-
bHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkg
|
|
922
|
-
PSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcmVk
|
|
923
|
-
aXJlY3Rvcl9rZXkgPSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWdu
|
|
924
|
-
X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQg
|
|
925
|
-
Q2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNh
|
|
926
|
-
bXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
|
|
927
|
-
J0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgn
|
|
928
|
-
RVhJU1RTJywgcmVkaXJlY3Rvcl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
|
|
929
|
-
c19yZXBseSgnTk9UX0ZPVU5EIFJlZGlyZWN0b3Igbm90IGV4aXN0cycpCiAgZW5kCgogIGxvY2Fs
|
|
930
|
-
IHN0YXNoID0gewogICAgbG9ja19zZWNyZXQgPSB0YWJsZS5yZW1vdmUoYXJncyksCiAgICBvcmln
|
|
931
|
-
X2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2FtcGFpZ25fbG9ja19rZXkpLAogIH0K
|
|
932
|
-
CiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0
|
|
933
|
-
aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4g
|
|
934
|
-
ZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmllbGQgPT0gJ2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9
|
|
935
|
-
PSAnb3JpZ19sb2NrX3NlY3JldCcpIGFuZCB2YWx1ZSA9PSAnJyB0aGVuCiAgICAgIHJldHVybiBy
|
|
936
|
-
ZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBl
|
|
937
|
-
bmQKCiAgaWYgI2FyZ3MgJSAyIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
|
|
938
|
-
KCdFUlIgT2RkIG51bWJlciBvZiBhcmdzJykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7fQoKICBm
|
|
939
|
-
b3IgaSA9IDEsICNhcmdzLCAyIGRvCiAgICBsb2NhbCBmaWVsZCwgdmFsdWUgPSBhcmdzW2ldLCBh
|
|
940
|
-
cmdzW2kgKyAxXQoKICAgIGlmIG1vZGVsW2ZpZWxkXSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5l
|
|
941
|
-
cnJvcl9yZXBseSgnRVJSIER1cGxpY2F0ZSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAg
|
|
942
|
-
aWYgZmllbGQgPT0gJ3BhZ2UnIHRoZW4KICAgICAgbW9kZWwucGFnZSA9IHZhbHVlCiAgICBlbHNl
|
|
943
|
-
CiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFVua25vd24gbW9kZWwuJyAuLiBm
|
|
944
|
-
aWVsZCkKICAgIGVuZAogIGVuZAoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBk
|
|
945
|
-
bwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
|
|
946
|
-
UlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBuZXh0KG1vZGVs
|
|
947
|
-
KSA9PSBuaWwgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgTm90aGluZyB0
|
|
948
|
-
byB1cGRhdGUnKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxv
|
|
949
|
-
Y2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBD
|
|
950
|
-
YW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyBy
|
|
951
|
-
ZXR1cm4KCiAgbG9jYWwgc3RvcmUgPSB7fQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1v
|
|
952
|
-
ZGVsKSBkbwogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCBmaWVsZCkKICAgIHRhYmxlLmluc2VydChz
|
|
953
|
-
dG9yZSwgdmFsdWUpCiAgZW5kCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCByZWRpcmVjdG9yX2tleSwg
|
|
954
|
-
dW5wYWNrKHN0b3JlKSkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgUmVkaXJlY3Rv
|
|
955
|
-
ciB1cGRhdGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFt
|
|
956
|
-
ZSA9ICd1cGRhdGVfcmVkaXJlY3RvcicsCiAgY2FsbGJhY2sgPSB1cGRhdGVfcmVkaXJlY3RvciwK
|
|
957
|
-
ICBkZXNjcmlwdGlvbiA9ICdVcGRhdGUgcmVkaXJlY3RvcicsCn0pCgotLVtbCiAgRGVsZXRlIHJl
|
|
958
|
-
ZGlyZWN0b3IKLS1dXQpsb2NhbCBmdW5jdGlvbiBkZWxldGVfcmVkaXJlY3RvcihrZXlzLCBhcmdz
|
|
959
|
-
KQogIGlmICNrZXlzIH49IDQgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJy
|
|
960
|
-
b3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWln
|
|
961
|
-
bl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9j
|
|
962
|
-
YWwgcmVkaXJlY3Rvcl9rZXkgPSBrZXlzWzNdCiAgbG9jYWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkg
|
|
963
|
-
PSBrZXlzWzRdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0
|
|
964
|
-
aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgY2FtcGFpZ24gbm90
|
|
965
|
-
IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tf
|
|
966
|
-
a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBD
|
|
967
|
-
YW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgcmVk
|
|
968
|
-
aXJlY3Rvcl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9U
|
|
969
|
-
X0ZPVU5EIHJlZGlyZWN0b3Igbm90IGV4aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewog
|
|
970
|
-
ICAgbG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNh
|
|
971
|
-
bGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIHJlZGlyZWN0b3JfaWQgPSByZWRpcy5j
|
|
972
|
-
YWxsKCdIR0VUJywgcmVkaXJlY3Rvcl9rZXksICdyZWRpcmVjdG9yX2lkJyksCiAgICBsdXJlX2Nv
|
|
973
|
-
dW50ID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIHJlZGlyZWN0b3Jfa2V5LCAnbHVyZV9j
|
|
974
|
-
b3VudCcpKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBp
|
|
975
|
-
ZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
|
|
976
|
-
ZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYKICAgICAgKGZpZWxkID09ICdsb2Nr
|
|
977
|
-
X3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdyZWRp
|
|
978
|
-
cmVjdG9yX2lkJykKICAgICAgYW5kIHZhbHVlID09ICcnCiAgICB0aGVuCiAgICAgIHJldHVybiBy
|
|
979
|
-
ZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAg
|
|
980
|
-
ICBpZiBmaWVsZCA9PSAnbHVyZV9jb3VudCcgYW5kIHZhbHVlIDwgMCB0aGVuCiAgICAgIHJldHVy
|
|
981
|
-
biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQK
|
|
982
|
-
ICBlbmQKCiAgaWYgc3Rhc2gubHVyZV9jb3VudCA+IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0
|
|
983
|
-
YXR1c19yZXBseSgnRk9SQklEREVOIEx1cmVzIGV4aXN0cycpCiAgZW5kCgogIGlmIHN0YXNoLm9y
|
|
984
|
-
aWdfbG9ja19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlz
|
|
985
|
-
LnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcp
|
|
986
|
-
CiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCByZWRp
|
|
987
|
-
cmVjdG9yX2tleSkKCiAgcmVkaXMuY2FsbCgnWlJFTScsIHJlZGlyZWN0b3JfaW5kZXhfa2V5LCBz
|
|
988
|
-
dGFzaC5yZWRpcmVjdG9yX2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBSZWRp
|
|
989
|
-
cmVjdG9yIGRlbGV0ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlv
|
|
990
|
-
bl9uYW1lID0gJ2RlbGV0ZV9yZWRpcmVjdG9yJywKICBjYWxsYmFjayA9IGRlbGV0ZV9yZWRpcmVj
|
|
991
|
-
dG9yLAogIGRlc2NyaXB0aW9uID0gJ0RlbGV0ZSB0YXJnZXQnLAp9KQo=`,
|
|
992
|
-
'5-lure.lua',
|
|
993
|
-
`IyFsdWEgbmFtZT1sdXJlCgotLVtbCiAgQ3JlYXRlIGx1cmUKLS1dXQpsb2NhbCBmdW5jdGlvbiBj
|
|
994
|
-
cmVhdGVfbHVyZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDYgb3IgI2FyZ3Mgfj0gNiB0aGVu
|
|
995
|
-
CiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQog
|
|
996
|
-
IGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9j
|
|
997
|
-
a19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgbHVyZV9rZXkgPSBrZXlzWzNdCiAgbG9jYWwgbHVyZV9w
|
|
998
|
-
YXRoc19rZXkgPSBrZXlzWzRdCiAgbG9jYWwgbHVyZV9pbmRleF9rZXkgPSBrZXlzWzVdCiAgbG9j
|
|
999
|
-
YWwgcmVkaXJlY3Rvcl9rZXkgPSBrZXlzWzZdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNh
|
|
1000
|
-
bXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1Rf
|
|
1001
|
-
Rk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
|
|
1002
|
-
UycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNf
|
|
1003
|
-
cmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMu
|
|
1004
|
-
Y2FsbCgnRVhJU1RTJywgbHVyZV9rZXkpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
|
|
1005
|
-
c19yZXBseSgnQ09ORkxJQ1QgTHVyZSBhbGxyZWFkeSBleGlzdHMnKQogIGVuZAoKICBpZiByZWRp
|
|
1006
|
-
cy5jYWxsKCdFWElTVFMnLCByZWRpcmVjdG9yX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
|
|
1007
|
-
aXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUmVkaXJlY3RvciBub3QgZm91bmQnKQogIGVuZAoK
|
|
1008
|
-
ICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gYXJnc1s2XSwKICAgIG9yaWdfbG9j
|
|
1009
|
-
a19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgfQoKICBm
|
|
1010
|
-
b3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4K
|
|
1011
|
-
ICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVs
|
|
1012
|
-
ZCkKICAgIGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdv
|
|
1013
|
-
cmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlz
|
|
1014
|
-
LmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoK
|
|
1015
|
-
ICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gYXJnc1sxXSwKICAgIGx1cmVfaWQg
|
|
1016
|
-
PSBhcmdzWzJdLAogICAgcGF0aCA9IGFyZ3NbM10sCiAgICByZWRpcmVjdG9yX2lkID0gYXJnc1s0
|
|
1017
|
-
XSwKICAgIGlzX2VuYWJsZWQgPSAwLAogICAgc2Vzc2lvbl9jb3VudCA9IDAsCiAgICBjcmVhdGVk
|
|
1018
|
-
X2F0ID0gdG9udW1iZXIoYXJnc1s1XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJz
|
|
1019
|
-
KG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9y
|
|
1020
|
-
X3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAg
|
|
1021
|
-
IChmaWVsZCA9PSAnY2FtcGFpZ25faWQnIG9yIGZpZWxkID09ICdsdXJlX2lkJyBvciBmaWVsZCA9
|
|
1022
|
-
PSAncGF0aCcgb3IgZmllbGQgPT0gJ3JlZGlyZWN0b3JfaWQnKQogICAgICBhbmQgdmFsdWUgPT0g
|
|
1023
|
-
JycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9k
|
|
1024
|
-
ZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0
|
|
1025
|
-
IH49IHN0YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
|
|
1026
|
-
J0ZPUkJJRERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQ
|
|
1027
|
-
b2ludCBvZiBubyByZXR1cm4KCiAgbG9jYWwgc3RvcmUgPSB7fQoKICBmb3IgZmllbGQsIHZhbHVl
|
|
1028
|
-
IGluIHBhaXJzKG1vZGVsKSBkbwogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCBmaWVsZCkKICAgIHRh
|
|
1029
|
-
YmxlLmluc2VydChzdG9yZSwgdmFsdWUpCiAgZW5kCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCBsdXJl
|
|
1030
|
-
X2tleSwgdW5wYWNrKHN0b3JlKSkKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIGx1cmVfcGF0aHNfa2V5
|
|
1031
|
-
LCBtb2RlbC5wYXRoLCBtb2RlbC5sdXJlX2lkKQoKICByZWRpcy5jYWxsKCdaQUREJywgbHVyZV9p
|
|
1032
|
-
bmRleF9rZXksIG1vZGVsLmNyZWF0ZWRfYXQsIG1vZGVsLmx1cmVfaWQpCgogIHJlZGlzLmNhbGwo
|
|
1033
|
-
J0hJTkNSQlknLCByZWRpcmVjdG9yX2tleSwgJ2x1cmVfY291bnQnLCAxKQoKICByZXR1cm4gcmVk
|
|
1034
|
-
aXMuc3RhdHVzX3JlcGx5KCdPSyBMdXJlIGNyZWF0ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1
|
|
1035
|
-
bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2NyZWF0ZV9sdXJlJywKICBjYWxsYmFjayA9IGNy
|
|
1036
|
-
ZWF0ZV9sdXJlLAogIGRlc2NyaXB0aW9uID0gJ0NyZWF0ZSBsdXJlJywKfSkKCi0tW1sKICBSZWFk
|
|
1037
|
-
IGx1cmUKLS1dXQpsb2NhbCBmdW5jdGlvbiByZWFkX2x1cmUoa2V5cywgYXJncykKICBpZiAja2V5
|
|
1038
|
-
cyB+PSAyIG9yICNhcmdzIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
|
|
1039
|
-
UlIgV3JvbmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5
|
|
1040
|
-
c1sxXQogIGxvY2FsIGx1cmVfa2V5ID0ga2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMn
|
|
1041
|
-
LCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICBpZiByZWRp
|
|
1042
|
-
cy5jYWxsKCdFWElTVFMnLCBsdXJlX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5k
|
|
1043
|
-
CgogIC0tIHN0eWx1YTogaWdub3JlCiAgbG9jYWwgdmFsdWVzID0gIHJlZGlzLmNhbGwoCiAgICAn
|
|
1044
|
-
SE1HRVQnLCBsdXJlX2tleSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAnbHVyZV9pZCcsCiAgICAn
|
|
1045
|
-
cGF0aCcsCiAgICAncmVkaXJlY3Rvcl9pZCcsCiAgICAnaXNfZW5hYmxlZCcsCiAgICAnc2Vzc2lv
|
|
1046
|
-
bl9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0gNyB0aGVuCiAg
|
|
1047
|
-
ICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIHZhbHVlcycpCiAgZW5kCgog
|
|
1048
|
-
IGxvY2FsIG1vZGVsID0gewogICAgY2FtcGFpZ25faWQgPSB2YWx1ZXNbMV0sCiAgICBsdXJlX2lk
|
|
1049
|
-
ID0gdmFsdWVzWzJdLAogICAgcGF0aCA9IHZhbHVlc1szXSwKICAgIHJlZGlyZWN0b3JfaWQgPSB2
|
|
1050
|
-
YWx1ZXNbNF0sCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIodmFsdWVzWzVdKSwKICAgIHNlc3Np
|
|
1051
|
-
b25fY291bnQgPSB0b251bWJlcih2YWx1ZXNbNl0pLAogICAgY3JlYXRlZF9hdCA9IHRvbnVtYmVy
|
|
1052
|
-
KHZhbHVlc1s3XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwog
|
|
1053
|
-
ICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIg
|
|
1054
|
-
TWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIHJldHVybiB7IG1hcCA9
|
|
1055
|
-
IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9
|
|
1056
|
-
ICdyZWFkX2x1cmUnLAogIGNhbGxiYWNrID0gcmVhZF9sdXJlLAogIGZsYWdzID0geyAnbm8td3Jp
|
|
1057
|
-
dGVzJyB9LAogIGRlc2NyaXB0aW9uID0gJ1JlYWQgbHVyZScsCn0pCgotLVtbCiAgRmluZCBsdXJl
|
|
1058
|
-
IGlkCi0tXV0KbG9jYWwgZnVuY3Rpb24gZmluZF9sdXJlX2lkKGtleXMsIGFyZ3MpCiAgaWYgI2tl
|
|
1059
|
-
eXMgfj0gMiBvciAjYXJncyB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgn
|
|
1060
|
-
RVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtl
|
|
1061
|
-
eXNbMV0KICBsb2NhbCBsdXJlX3BhdGhzX2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgn
|
|
1062
|
-
RVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAg
|
|
1063
|
-
bG9jYWwgcGF0aCA9IGFyZ3NbMV0KCiAgaWYgbm90IChwYXRoIGFuZCBwYXRoIH49ICcnKSB0aGVu
|
|
1064
|
-
CiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBwYXRoJykKICBlbmQKCiAg
|
|
1065
|
-
aWYgcmVkaXMuY2FsbCgnSEVYSVNUUycsIGx1cmVfcGF0aHNfa2V5LCBwYXRoKSB+PSAxIHRoZW4K
|
|
1066
|
-
ICAgIHJldHVybiBuaWwKICBlbmQKCiAgbG9jYWwgbHVyZV9pZCA9IHJlZGlzLmNhbGwoJ0hHRVQn
|
|
1067
|
-
LCBsdXJlX3BhdGhzX2tleSwgcGF0aCkKCiAgaWYgbm90IChsdXJlX2lkIGFuZCBsdXJlX2lkIH49
|
|
1068
|
-
ICcnKSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIGx1cmVf
|
|
1069
|
-
aWQnKQogIGVuZAoKICByZXR1cm4gbHVyZV9pZAplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9u
|
|
1070
|
-
KHsKICBmdW5jdGlvbl9uYW1lID0gJ2ZpbmRfbHVyZV9pZCcsCiAgY2FsbGJhY2sgPSBmaW5kX2x1
|
|
1071
|
-
cmVfaWQsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnRmluZCBs
|
|
1072
|
-
dXJlIGlkJywKfSkKCi0tW1sKICBSZWFkIGx1cmUgaW5kZXgKLS1dXQpsb2NhbCBmdW5jdGlvbiBy
|
|
1073
|
-
ZWFkX2x1cmVfaW5kZXgoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNhcmdzIH49IDAg
|
|
1074
|
-
dGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNl
|
|
1075
|
-
JykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGx1cmVfaW5k
|
|
1076
|
-
ZXhfa2V5ID0ga2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkp
|
|
1077
|
-
IH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICByZXR1cm4gcmVkaXMuY2FsbCgnWlJB
|
|
1078
|
-
TkdFJywgbHVyZV9pbmRleF9rZXksIDAsIC0xKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9u
|
|
1079
|
-
KHsKICBmdW5jdGlvbl9uYW1lID0gJ3JlYWRfbHVyZV9pbmRleCcsCiAgY2FsbGJhY2sgPSByZWFk
|
|
1080
|
-
X2x1cmVfaW5kZXgsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAn
|
|
1081
|
-
UmVhZCBsdXJlIGluZGV4JywKfSkKCi0tW1sKICBFbmFibGUgbHVyZQotLV1dCmxvY2FsIGZ1bmN0
|
|
1082
|
-
aW9uIGVuYWJsZV9sdXJlKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMyBvciAjYXJncyB+PSAx
|
|
1083
|
-
IHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVz
|
|
1084
|
-
ZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWln
|
|
1085
|
-
bl9sb2NrX2tleSA9IGtleXNbMl0KICBsb2NhbCBsdXJlX2tleSA9IGtleXNbM10KCiAgaWYgcmVk
|
|
1086
|
-
aXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRp
|
|
1087
|
-
cy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQKCiAg
|
|
1088
|
-
aWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEgdGhlbgogICAg
|
|
1089
|
-
cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5vdCBsb2NrZWQn
|
|
1090
|
-
KQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBsdXJlX2tleSkgfj0gMSB0aGVuCiAg
|
|
1091
|
-
ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgTHVyZSBub3QgZXhpc3RzJykK
|
|
1092
|
-
ICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMV0sCiAgICBv
|
|
1093
|
-
cmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2FtcGFpZ25fbG9ja19rZXkpLAog
|
|
1094
|
-
ICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHJlZGlzLmNhbGwoJ0hHRVQnLCBsdXJlX2tleSwgJ2lz
|
|
1095
|
-
X2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwog
|
|
1096
|
-
ICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIg
|
|
1097
|
-
V3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19z
|
|
1098
|
-
ZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRo
|
|
1099
|
-
ZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBm
|
|
1100
|
-
aWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBzdGFzaC5pc19lbmFibGVkIH49IDAgdGhlbgogICAg
|
|
1101
|
-
cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgTHVyZSBhbGxyZWFkeSBlbmFibGVkJykKICBl
|
|
1102
|
-
bmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVu
|
|
1103
|
-
CiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19z
|
|
1104
|
-
ZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlz
|
|
1105
|
-
LmNhbGwoJ0hTRVQnLCBsdXJlX2tleSwgJ2lzX2VuYWJsZWQnLCAxKQoKICByZXR1cm4gcmVkaXMu
|
|
1106
|
-
c3RhdHVzX3JlcGx5KCdPSyBMdXJlIGVuYWJsZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0
|
|
1107
|
-
aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2VuYWJsZV9sdXJlJywKICBjYWxsYmFjayA9IGVuYWJs
|
|
1108
|
-
ZV9sdXJlLAogIGRlc2NyaXB0aW9uID0gJ0VuYWJsZSBsdXJlJywKfSkKCi0tW1sKICBEaXNhYmxl
|
|
1109
|
-
IGx1cmUKLS1dXQpsb2NhbCBmdW5jdGlvbiBkaXNhYmxlX2x1cmUoa2V5cywgYXJncykKICBpZiAj
|
|
1110
|
-
a2V5cyB+PSAzIG9yICNhcmdzIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
|
|
1111
|
-
KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0g
|
|
1112
|
-
a2V5c1sxXQogIGxvY2FsIGNhbXBhaWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIGx1cmVf
|
|
1113
|
-
a2V5ID0ga2V5c1szXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49
|
|
1114
|
-
IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWdu
|
|
1115
|
-
IG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9s
|
|
1116
|
-
b2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURE
|
|
1117
|
-
RU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycs
|
|
1118
|
-
IGx1cmVfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9G
|
|
1119
|
-
T1VORCBMdXJlIG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tf
|
|
1120
|
-
c2VjcmV0ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQn
|
|
1121
|
-
LCBjYW1wYWlnbl9sb2NrX2tleSksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2Fs
|
|
1122
|
-
bCgnSEdFVCcsIGx1cmVfa2V5LCAnaXNfZW5hYmxlZCcpKSwKICB9CgogIGZvciBmaWVsZCwgdmFs
|
|
1123
|
-
dWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4g
|
|
1124
|
-
cmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgog
|
|
1125
|
-
ICAgaWYgKGZpZWxkID09ICdsb2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNy
|
|
1126
|
-
ZXQnKSBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
|
|
1127
|
-
J0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLmlz
|
|
1128
|
-
X2VuYWJsZWQgPT0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBMdXJl
|
|
1129
|
-
IGFsbHJlYWR5IGRpc2FibGVkJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+
|
|
1130
|
-
PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdG
|
|
1131
|
-
T1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9p
|
|
1132
|
-
bnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCBsdXJlX2tleSwgJ2lzX2VuYWJs
|
|
1133
|
-
ZWQnLCAwKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBMdXJlIGRpc2FibGVkJykK
|
|
1134
|
-
ZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdkaXNhYmxl
|
|
1135
|
-
X2x1cmUnLAogIGNhbGxiYWNrID0gZGlzYWJsZV9sdXJlLAogIGRlc2NyaXB0aW9uID0gJ0Rpc2Fi
|
|
1136
|
-
bGUgbHVyZScsCn0pCgotLVtbCiAgRGVsZXRlIGx1cmUKLS1dXQpsb2NhbCBmdW5jdGlvbiBkZWxl
|
|
1137
|
-
dGVfbHVyZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDYgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAg
|
|
1138
|
-
ICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVu
|
|
1139
|
-
ZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19r
|
|
1140
|
-
ZXkgPSBrZXlzWzJdCiAgbG9jYWwgbHVyZV9rZXkgPSBrZXlzWzNdCiAgbG9jYWwgbHVyZV9wYXRo
|
|
1141
|
-
c19rZXkgPSBrZXlzWzRdCiAgbG9jYWwgbHVyZV9pbmRleF9rZXkgPSBrZXlzWzVdCiAgbG9jYWwg
|
|
1142
|
-
cmVkaXJlY3Rvcl9rZXkgPSBrZXlzWzZdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBh
|
|
1143
|
-
aWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9V
|
|
1144
|
-
TkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycs
|
|
1145
|
-
IGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVw
|
|
1146
|
-
bHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2Fs
|
|
1147
|
-
bCgnRVhJU1RTJywgbHVyZV9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
|
|
1148
|
-
ZXBseSgnTk9UX0ZPVU5EIEx1cmUgbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwo
|
|
1149
|
-
J0VYSVNUUycsIHJlZGlyZWN0b3Jfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0
|
|
1150
|
-
dXNfcmVwbHkoJ05PVF9GT1VORCBSZWRpcmVjdG9yIG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2Nh
|
|
1151
|
-
bCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNy
|
|
1152
|
-
ZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgICBsdXJlX2lkID0g
|
|
1153
|
-
cmVkaXMuY2FsbCgnSEdFVCcsIGx1cmVfa2V5LCAnbHVyZV9pZCcpLAogICAgcGF0aCA9IHJlZGlz
|
|
1154
|
-
LmNhbGwoJ0hHRVQnLCBsdXJlX2tleSwgJ3BhdGgnKSwKICAgIHJlZGlyZWN0b3JfaWQgPSByZWRp
|
|
1155
|
-
cy5jYWxsKCdIR0VUJywgbHVyZV9rZXksICdyZWRpcmVjdG9yX2lkJyksCiAgICBvcmlnX3JlZGly
|
|
1156
|
-
ZWN0b3JfaWQgPSByZWRpcy5jYWxsKCdIR0VUJywgcmVkaXJlY3Rvcl9rZXksICdyZWRpcmVjdG9y
|
|
1157
|
-
X2lkJyksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIGx1cmVf
|
|
1158
|
-
a2V5LCAnaXNfZW5hYmxlZCcpKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rh
|
|
1159
|
-
c2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
|
|
1160
|
-
bHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYKICAgICAgKAog
|
|
1161
|
-
ICAgICAgIGZpZWxkID09ICdsb2NrX3NlY3JldCcKICAgICAgICBvciBmaWVsZCA9PSAnb3JpZ19s
|
|
1162
|
-
b2NrX3NlY3JldCcKICAgICAgICBvciBmaWVsZCA9PSAnbHVyZV9pZCcKICAgICAgICBvciBmaWVs
|
|
1163
|
-
ZCA9PSAncGF0aCcKICAgICAgICBvciBmaWVsZCA9PSAncmVkaXJlY3Rvcl9pZCcKICAgICAgICBv
|
|
1164
|
-
ciBmaWVsZCA9PSAnb3JpZ19yZWRpcmVjdG9yX2lkJwogICAgICApIGFuZCB2YWx1ZSA9PSAnJwog
|
|
1165
|
-
ICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4n
|
|
1166
|
-
IC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfcmVkaXJlY3Rvcl9pZCB+
|
|
1167
|
-
PSBzdGFzaC5yZWRpcmVjdG9yX2lkIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
|
|
1168
|
-
J0ZPUkJJRERFTiBMdXJlIHJlZGlyZWN0b3Igbm90IG1hdGNoJykKICBlbmQKCiAgaWYgc3Rhc2gu
|
|
1169
|
-
aXNfZW5hYmxlZCB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJ
|
|
1170
|
-
RERFTiBMdXJlIG5vdCBkaXNhYmxlZCcpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNy
|
|
1171
|
-
ZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBs
|
|
1172
|
-
eSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0t
|
|
1173
|
-
IFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCBsdXJlX2tleSkKCiAgcmVk
|
|
1174
|
-
aXMuY2FsbCgnSERFTCcsIGx1cmVfcGF0aHNfa2V5LCBzdGFzaC5wYXRoKQoKICByZWRpcy5jYWxs
|
|
1175
|
-
KCdaUkVNJywgbHVyZV9pbmRleF9rZXksIHN0YXNoLmx1cmVfaWQpCgogIHJlZGlzLmNhbGwoJ0hJ
|
|
1176
|
-
TkNSQlknLCByZWRpcmVjdG9yX2tleSwgJ2x1cmVfY291bnQnLCAtMSkKCiAgcmV0dXJuIHJlZGlz
|
|
1177
|
-
LnN0YXR1c19yZXBseSgnT0sgTHVyZSBkZWxldGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5j
|
|
1178
|
-
dGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdkZWxldGVfbHVyZScsCiAgY2FsbGJhY2sgPSBkZWxl
|
|
1179
|
-
dGVfbHVyZSwKICBkZXNjcmlwdGlvbiA9ICdEZWxldGUgbHVyZScsCn0pCg==`,
|
|
1180
|
-
'6-session.lua',
|
|
1181
|
-
`IyFsdWEgbmFtZT1zZXNzaW9uCgotLVtbCiAgQ3JlYXRlIHNlc3Npb24KLS1dXQpsb2NhbCBmdW5j
|
|
1182
|
-
dGlvbiBjcmVhdGVfc2Vzc2lvbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDMgb3IgI2FyZ3Mg
|
|
1183
|
-
fj0gNCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
|
|
1184
|
-
biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgc2Vz
|
|
1185
|
-
c2lvbl9rZXkgPSBrZXlzWzJdCiAgbG9jYWwgZW5hYmxlZF9wcm94eV9pbmRleF9rZXkgPSBrZXlz
|
|
1186
|
-
WzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAg
|
|
1187
|
-
ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0
|
|
1188
|
-
cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHNlc3Npb25fa2V5KSB+PSAwIHRo
|
|
1189
|
-
ZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0NPTkZMSUNUIFNlc3Npb24gYWxscmVh
|
|
1190
|
-
ZHkgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBuZXdfc2Vzc2lvbl9leHBp
|
|
1191
|
-
cmUgPSB0b251bWJlcihyZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbmV3X3Nlc3Np
|
|
1192
|
-
b25fZXhwaXJlJykpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8K
|
|
1193
|
-
ICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJS
|
|
1194
|
-
IFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9PSAnbmV3X3Nl
|
|
1195
|
-
c3Npb25fZXhwaXJlJyBhbmQgdmFsdWUgPD0gMCB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJv
|
|
1196
|
-
cl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYg
|
|
1197
|
-
cmVkaXMuY2FsbCgnU0NBUkQnLCBlbmFibGVkX3Byb3h5X2luZGV4X2tleSkgPT0gMCB0aGVuCiAg
|
|
1198
|
-
ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgTm8gZW5hYmxlZCBwcm94aWVz
|
|
1199
|
-
IGZvdW5kJykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9pZCA9IGFyZ3Nb
|
|
1200
|
-
MV0sCiAgICBzZXNzaW9uX2lkID0gYXJnc1syXSwKICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgn
|
|
1201
|
-
U1JBTkRNRU1CRVInLCBlbmFibGVkX3Byb3h5X2luZGV4X2tleSksCiAgICBzZWNyZXQgPSBhcmdz
|
|
1202
|
-
WzNdLAogICAgaXNfdXBncmFkZWQgPSAwLAogICAgbWVzc2FnZV9jb3VudCA9IDAsCiAgICBjcmVh
|
|
1203
|
-
dGVkX2F0ID0gdG9udW1iZXIoYXJnc1s0XSksCiAgICBhdXRob3JpemVkX2F0ID0gdG9udW1iZXIo
|
|
1204
|
-
YXJnc1s0XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAg
|
|
1205
|
-
aWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jv
|
|
1206
|
-
bmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAgIChmaWVsZCA9PSAnY2Ft
|
|
1207
|
-
cGFpZ25faWQnIG9yIGZpZWxkID09ICdzZXNzaW9uX2lkJyBvciBmaWVsZCA9PSAncHJveHlfaWQn
|
|
1208
|
-
IG9yIGZpZWxkID09ICdzZWNyZXQnKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAg
|
|
1209
|
-
ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkK
|
|
1210
|
-
ICAgIGVuZAogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgbG9jYWwgc3RvcmUgPSB7
|
|
1211
|
-
fQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgdGFibGUuaW5zZXJ0
|
|
1212
|
-
KHN0b3JlLCBmaWVsZCkKICAgIHRhYmxlLmluc2VydChzdG9yZSwgdmFsdWUpCiAgZW5kCgogIHJl
|
|
1213
|
-
ZGlzLmNhbGwoJ0hTRVQnLCBzZXNzaW9uX2tleSwgdW5wYWNrKHN0b3JlKSkKCiAgcmVkaXMuY2Fs
|
|
1214
|
-
bCgnSElOQ1JCWScsIGNhbXBhaWduX2tleSwgJ3Nlc3Npb25fY291bnQnLCAxKQoKICByZWRpcy5j
|
|
1215
|
-
YWxsKCdQRVhQSVJFJywgc2Vzc2lvbl9rZXksIHN0YXNoLm5ld19zZXNzaW9uX2V4cGlyZSkKCiAg
|
|
1216
|
-
cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgU2Vzc2lvbiBjcmVhdGVkJykKZW5kCgpyZWRp
|
|
1217
|
-
cy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdjcmVhdGVfc2Vzc2lvbics
|
|
1218
|
-
CiAgY2FsbGJhY2sgPSBjcmVhdGVfc2Vzc2lvbiwKICBkZXNjcmlwdGlvbiA9ICdDcmVhdGUgc2Vz
|
|
1219
|
-
c2lvbicsCn0pCgotLVtbCiAgUmVhZCBzZXNzaW9uCi0tXV0KbG9jYWwgZnVuY3Rpb24gcmVhZF9z
|
|
1220
|
-
ZXNzaW9uKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMiBvciAjYXJncyB+PSAwIHRoZW4KICAg
|
|
1221
|
-
IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5k
|
|
1222
|
-
CgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBzZXNzaW9uX2tleSA9IGtl
|
|
1223
|
-
eXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4K
|
|
1224
|
-
ICAgIHJldHVybiBuaWwKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgc2Vzc2lvbl9r
|
|
1225
|
-
ZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICAtLSBzdHlsdWE6IGlnbm9yZQog
|
|
1226
|
-
IGxvY2FsIHZhbHVlcyA9IHJlZGlzLmNhbGwoCiAgICAnSE1HRVQnLCBzZXNzaW9uX2tleSwKICAg
|
|
1227
|
-
ICdjYW1wYWlnbl9pZCcsCiAgICAnc2Vzc2lvbl9pZCcsCiAgICAncHJveHlfaWQnLAogICAgJ3Nl
|
|
1228
|
-
Y3JldCcsCiAgICAnaXNfdXBncmFkZWQnLAogICAgJ21lc3NhZ2VfY291bnQnLAogICAgJ2NyZWF0
|
|
1229
|
-
ZWRfYXQnLAogICAgJ2F1dGhvcml6ZWRfYXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDggdGhlbgog
|
|
1230
|
-
ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoK
|
|
1231
|
-
ICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgc2Vzc2lv
|
|
1232
|
-
bl9pZCA9IHZhbHVlc1syXSwKICAgIHByb3h5X2lkID0gdmFsdWVzWzNdLAogICAgc2VjcmV0ID0g
|
|
1233
|
-
dmFsdWVzWzRdLAogICAgaXNfdXBncmFkZWQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAogICAgbWVz
|
|
1234
|
-
c2FnZV9jb3VudCA9IHRvbnVtYmVyKHZhbHVlc1s2XSksCiAgICBjcmVhdGVkX2F0ID0gdG9udW1i
|
|
1235
|
-
ZXIodmFsdWVzWzddKSwKICAgIGF1dGhvcml6ZWRfYXQgPSB0b251bWJlcih2YWx1ZXNbOF0pLAog
|
|
1236
|
-
IH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1
|
|
1237
|
-
ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwu
|
|
1238
|
-
JyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoK
|
|
1239
|
-
cmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9zZXNzaW9u
|
|
1240
|
-
JywKICBjYWxsYmFjayA9IHJlYWRfc2Vzc2lvbiwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwK
|
|
1241
|
-
ICBkZXNjcmlwdGlvbiA9ICdSZWFkIHNlc3Npb24nLAp9KQoKLS1bWwogIEF1dGggc2Vzc2lvbgot
|
|
1242
|
-
LV1dCmxvY2FsIGZ1bmN0aW9uIGF1dGhfc2Vzc2lvbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49
|
|
1243
|
-
IDMgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBX
|
|
1244
|
-
cm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFd
|
|
1245
|
-
CiAgbG9jYWwgc2Vzc2lvbl9rZXkgPSBrZXlzWzJdCiAgbG9jYWwgZW5hYmxlZF9wcm94eV9pbmRl
|
|
1246
|
-
eF9rZXkgPSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkg
|
|
1247
|
-
fj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFp
|
|
1248
|
-
Z24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHNlc3Npb25f
|
|
1249
|
-
a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBT
|
|
1250
|
-
ZXNzaW9uIG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGF1dGhvcml6
|
|
1251
|
-
ZWRfYXQgPSB0b251bWJlcihhcmdzWzFdKSwKICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgnSEdF
|
|
1252
|
-
VCcsIHNlc3Npb25fa2V5LCAncHJveHlfaWQnKSwKICAgIHNlc3Npb25fZXhwaXJlID0gdG9udW1i
|
|
1253
|
-
ZXIocmVkaXMuY2FsbCgnSEdFVCcsIGNhbXBhaWduX2tleSwgJ3Nlc3Npb25fZXhwaXJlJykpLAog
|
|
1254
|
-
IH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1
|
|
1255
|
-
ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicg
|
|
1256
|
-
Li4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9PSAncHJveHlfaWQnIGFuZCB2YWx1ZSA9
|
|
1257
|
-
PSAnJyB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNo
|
|
1258
|
-
LicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9PSAnc2Vzc2lvbl9leHBpcmUnIGFu
|
|
1259
|
-
ZCB2YWx1ZSA8PSAwIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jv
|
|
1260
|
-
bmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdTQ0FS
|
|
1261
|
-
RCcsIGVuYWJsZWRfcHJveHlfaW5kZXhfa2V5KSA9PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5z
|
|
1262
|
-
dGF0dXNfcmVwbHkoJ05PVF9GT1VORCBObyBlbmFibGVkIHByb3hpZXMgZm91bmQnKQogIGVuZAoK
|
|
1263
|
-
ICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgaWYgcmVkaXMuY2FsbCgnU0lTTUVNQkVSJywgZW5h
|
|
1264
|
-
YmxlZF9wcm94eV9pbmRleF9rZXksIHN0YXNoLnByb3h5X2lkKSA9PSAwIHRoZW4KICAgIGxvY2Fs
|
|
1265
|
-
IGVuYWJsZWRfcHJveHlfaWQgPSByZWRpcy5jYWxsKCdTUkFORE1FTUJFUicsIGVuYWJsZWRfcHJv
|
|
1266
|
-
eHlfaW5kZXhfa2V5KQoKICAgIGlmIG5vdCBlbmFibGVkX3Byb3h5X2lkIG9yIGVuYWJsZWRfcHJv
|
|
1267
|
-
eHlfaWQgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
|
|
1268
|
-
ZyBlbmFibGVkX3Byb3h5X2lkJykKICAgIGVuZAoKICAgIC0tIHN0eWx1YTogaWdub3JlCiAgICBy
|
|
1269
|
-
ZWRpcy5jYWxsKAogICAgICAnSFNFVCcsIHNlc3Npb25fa2V5LAogICAgICAncHJveHlfaWQnLCBl
|
|
1270
|
-
bmFibGVkX3Byb3h5X2lkLAogICAgICAnYXV0aG9yaXplZF9hdCcsIHN0YXNoLmF1dGhvcml6ZWRf
|
|
1271
|
-
YXQKICAgICkKICBlbHNlCiAgICByZWRpcy5jYWxsKCdIU0VUJywgc2Vzc2lvbl9rZXksICdhdXRo
|
|
1272
|
-
b3JpemVkX2F0Jywgc3Rhc2guYXV0aG9yaXplZF9hdCkKICBlbmQKCiAgcmVkaXMuY2FsbCgnUEVY
|
|
1273
|
-
UElSRScsIHNlc3Npb25fa2V5LCBzdGFzaC5zZXNzaW9uX2V4cGlyZSkKCiAgcmV0dXJuIHJlZGlz
|
|
1274
|
-
LnN0YXR1c19yZXBseSgnT0sgU2Vzc2lvbiBhdXRob3JpemVkJykKZW5kCgpyZWRpcy5yZWdpc3Rl
|
|
1275
|
-
cl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdhdXRoX3Nlc3Npb24nLAogIGNhbGxiYWNr
|
|
1276
|
-
ID0gYXV0aF9zZXNzaW9uLAogIGRlc2NyaXB0aW9uID0gJ0F1dGggc2Vzc2lvbicsCn0pCgotLVtb
|
|
1277
|
-
CiAgVXBncmFkZSBzZXNzaW9uCi0tXV0KbG9jYWwgZnVuY3Rpb24gdXBncmFkZV9zZXNzaW9uKGtl
|
|
1278
|
-
eXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMyBvciAjYXJncyB+PSAxIHRoZW4KICAgIHJldHVybiBy
|
|
1279
|
-
ZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2Fs
|
|
1280
|
-
IGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBsdXJlX2tleSA9IGtleXNbMl0KICBsb2Nh
|
|
1281
|
-
bCBzZXNzaW9uX2tleSA9IGtleXNbM10KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFp
|
|
1282
|
-
Z25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VO
|
|
1283
|
-
RCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywg
|
|
1284
|
-
bHVyZV9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZP
|
|
1285
|
-
VU5EIEx1cmUgbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHNl
|
|
1286
|
-
c3Npb25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJ
|
|
1287
|
-
RERFTiBTZXNzaW9uIG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIHNl
|
|
1288
|
-
Y3JldCA9IGFyZ3NbMV0sCiAgICBvcmlnX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0hHRVQnLCBzZXNz
|
|
1289
|
-
aW9uX2tleSwgJ3NlY3JldCcpLAogICAgaXNfdXBncmFkZWQgPSB0b251bWJlcihyZWRpcy5jYWxs
|
|
1290
|
-
KCdIR0VUJywgc2Vzc2lvbl9rZXksICdpc191cGdyYWRlZCcpKSwKICB9CgogIGZvciBmaWVsZCwg
|
|
1291
|
-
dmFsdWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1
|
|
1292
|
-
cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5k
|
|
1293
|
-
CgogICAgaWYgKGZpZWxkID09ICdzZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX3NlY3JldCcpIGFu
|
|
1294
|
-
ZCB2YWx1ZSA9PSAnJyB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdy
|
|
1295
|
-
b25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19zZWNy
|
|
1296
|
-
ZXQgfj0gc3Rhc2guc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZP
|
|
1297
|
-
UkJJRERFTiBTZXNzaW9uIHNlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICBpZiBzdGFzaC5pc191
|
|
1298
|
-
cGdyYWRlZCB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFNlc3Np
|
|
1299
|
-
b24gYWxscmVhZHkgdXBncmFkZWQnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAg
|
|
1300
|
-
cmVkaXMuY2FsbCgnSFNFVCcsIHNlc3Npb25fa2V5LCAnaXNfdXBncmFkZWQnLCAxKQoKICByZWRp
|
|
1301
|
-
cy5jYWxsKCdISU5DUkJZJywgbHVyZV9rZXksICdzZXNzaW9uX2NvdW50JywgMSkKCiAgcmV0dXJu
|
|
1302
|
-
IHJlZGlzLnN0YXR1c19yZXBseSgnT0sgU2Vzc2lvbiB1cGdyYWRlZCcpCmVuZAoKcmVkaXMucmVn
|
|
1303
|
-
aXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAndXBncmFkZV9zZXNzaW9uJywKICBj
|
|
1304
|
-
YWxsYmFjayA9IHVwZ3JhZGVfc2Vzc2lvbiwKICBkZXNjcmlwdGlvbiA9ICdVcGdyYWRlIHNlc3Np
|
|
1305
|
-
b24nLAp9KQo=`,
|
|
1306
|
-
'7-message.lua',
|
|
1307
|
-
`IyFsdWEgbmFtZT1tZXNzYWdlCgotLVtbCiAgQ3JlYXRlIG1lc3NhZ2UKLS1dXQpsb2NhbCBmdW5j
|
|
1308
|
-
dGlvbiBjcmVhdGVfbWVzc2FnZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDUgb3IgI2FyZ3Mg
|
|
1309
|
-
fj0gMjAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rp
|
|
1310
|
-
b24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIG1l
|
|
1311
|
-
c3NhZ2Vfa2V5ID0ga2V5c1syXQogIGxvY2FsIHByb3h5X2tleSA9IGtleXNbM10KICBsb2NhbCB0
|
|
1312
|
-
YXJnZXRfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHNlc3Npb25fa2V5ID0ga2V5c1s1XQoKICBpZiBy
|
|
1313
|
-
ZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJl
|
|
1314
|
-
ZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQogIGVuZAoK
|
|
1315
|
-
ICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBtZXNzYWdlX2tleSkgfj0gMCB0aGVuCiAgICByZXR1
|
|
1316
|
-
cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElDVCBNZXNzYWdlIGFsbHJlYWR5IGV4aXN0cycp
|
|
1317
|
-
CiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0gMSB0aGVuCiAg
|
|
1318
|
-
ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90IGV4aXN0cycp
|
|
1319
|
-
CiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRhcmdldF9rZXkpIH49IDEgdGhlbgog
|
|
1320
|
-
ICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFRhcmdldCBub3QgZXhpc3Rz
|
|
1321
|
-
JykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgc2Vzc2lvbl9rZXkpIH49IDEgdGhl
|
|
1322
|
-
bgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFNlc3Npb24gbm90IGV4
|
|
1323
|
-
aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbWVzc2FnZV9leHBpcmUgPSB0b251
|
|
1324
|
-
bWJlcihyZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbWVzc2FnZV9leHBpcmUnKSks
|
|
1325
|
-
CiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZh
|
|
1326
|
-
bHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2gu
|
|
1327
|
-
JyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIGZpZWxkID09ICdtZXNzYWdlX2V4cGlyZScgYW5k
|
|
1328
|
-
IHZhbHVlIDw9IDAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
|
|
1329
|
-
ZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAg
|
|
1330
|
-
Y2FtcGFpZ25faWQgPSBhcmdzWzFdLAogICAgbWVzc2FnZV9pZCA9IGFyZ3NbMl0sCiAgICBwcm94
|
|
1331
|
-
eV9pZCA9IGFyZ3NbM10sCiAgICB0YXJnZXRfaWQgPSBhcmdzWzRdLAogICAgc2Vzc2lvbl9pZCA9
|
|
1332
|
-
IGFyZ3NbNV0sCiAgICB0eXBlID0gYXJnc1s2XSwKICAgIG1ldGhvZCA9IGFyZ3NbN10sCiAgICB1
|
|
1333
|
-
cmwgPSBhcmdzWzhdLAogICAgcmVxdWVzdF9oZWFkZXJzID0gYXJnc1s5XSwKICAgIHJlcXVlc3Rf
|
|
1334
|
-
Ym9keSA9IGFyZ3NbMTBdLAogICAgc3RhdHVzID0gdG9udW1iZXIoYXJnc1sxMV0pLAogICAgcmVz
|
|
1335
|
-
cG9uc2VfaGVhZGVycyA9IGFyZ3NbMTJdLAogICAgcmVzcG9uc2VfYm9keSA9IGFyZ3NbMTNdLAog
|
|
1336
|
-
ICAgY29ubmVjdGlvbiA9IGFyZ3NbMTRdLAogICAgcGF5bG9hZCA9IGFyZ3NbMTVdLAogICAgZXJy
|
|
1337
|
-
b3JzID0gYXJnc1sxNl0sCiAgICBwcm9jZXNzb3IgPSBhcmdzWzE3XSwKICAgIHN0YXJ0X3RpbWUg
|
|
1338
|
-
PSB0b251bWJlcihhcmdzWzE4XSksCiAgICBmaW5pc2hfdGltZSA9IHRvbnVtYmVyKGFyZ3NbMTld
|
|
1339
|
-
KSwKICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcihhcmdzWzIwXSksCiAgfQoKICBmb3IgZmllbGQs
|
|
1340
|
-
IHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0
|
|
1341
|
-
dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVu
|
|
1342
|
-
ZAoKICAgIGlmCiAgICAgICgKICAgICAgICBmaWVsZCA9PSAnY2FtcGFpZ25faWQnCiAgICAgICAg
|
|
1343
|
-
b3IgZmllbGQgPT0gJ21lc3NhZ2VfaWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ3Byb3h5X2lkJwog
|
|
1344
|
-
ICAgICAgIG9yIGZpZWxkID09ICd0YXJnZXRfaWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ3Nlc3Np
|
|
1345
|
-
b25faWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ3R5cGUnCiAgICAgICAgb3IgZmllbGQgPT0gJ21l
|
|
1346
|
-
dGhvZCcKICAgICAgICBvciBmaWVsZCA9PSAndXJsJwogICAgICApIGFuZCB2YWx1ZSA9PSAnJwog
|
|
1347
|
-
ICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4n
|
|
1348
|
-
IC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICBsb2Nh
|
|
1349
|
-
bCBzdG9yZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAgICB0
|
|
1350
|
-
YWJsZS5pbnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCB2YWx1ZSkK
|
|
1351
|
-
ICBlbmQKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIG1lc3NhZ2Vfa2V5LCB1bnBhY2soc3RvcmUpKQoK
|
|
1352
|
-
ICByZWRpcy5jYWxsKCdISU5DUkJZJywgY2FtcGFpZ25fa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEp
|
|
1353
|
-
CiAgcmVkaXMuY2FsbCgnSElOQ1JCWScsIHByb3h5X2tleSwgJ21lc3NhZ2VfY291bnQnLCAxKQog
|
|
1354
|
-
IHJlZGlzLmNhbGwoJ0hJTkNSQlknLCB0YXJnZXRfa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCiAg
|
|
1355
|
-
cmVkaXMuY2FsbCgnSElOQ1JCWScsIHNlc3Npb25fa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCgog
|
|
1356
|
-
IHJlZGlzLmNhbGwoJ1BFWFBJUkUnLCBtZXNzYWdlX2tleSwgc3Rhc2gubWVzc2FnZV9leHBpcmUp
|
|
1357
|
-
CgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIE1lc3NhZ2UgY3JlYXRlZCcpCmVuZAoK
|
|
1358
|
-
cmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAnY3JlYXRlX21lc3Nh
|
|
1359
|
-
Z2UnLAogIGNhbGxiYWNrID0gY3JlYXRlX21lc3NhZ2UsCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRl
|
|
1360
|
-
IG1lc3NhZ2UnLAp9KQoKLS1bWwogIENyZWF0ZSBkdW1teSBtZXNzYWdlCi0tXV0KbG9jYWwgZnVu
|
|
1361
|
-
Y3Rpb24gY3JlYXRlX2R1bW15X21lc3NhZ2Uoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSA1IG9y
|
|
1362
|
-
ICNhcmdzIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcg
|
|
1363
|
-
ZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxv
|
|
1364
|
-
Y2FsIG1lc3NhZ2Vfa2V5ID0ga2V5c1syXQogIGxvY2FsIHByb3h5X2tleSA9IGtleXNbM10KICBs
|
|
1365
|
-
b2NhbCB0YXJnZXRfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHNlc3Npb25fa2V5ID0ga2V5c1s1XQoK
|
|
1366
|
-
ICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0
|
|
1367
|
-
dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQog
|
|
1368
|
-
IGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBtZXNzYWdlX2tleSkgfj0gMCB0aGVuCiAg
|
|
1369
|
-
ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElDVCBNZXNzYWdlIGFsbHJlYWR5IGV4
|
|
1370
|
-
aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0gMSB0
|
|
1371
|
-
aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90IGV4
|
|
1372
|
-
aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRhcmdldF9rZXkpIH49IDEg
|
|
1373
|
-
dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFRhcmdldCBub3Qg
|
|
1374
|
-
ZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgc2Vzc2lvbl9rZXkpIH49
|
|
1375
|
-
IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFNlc3Npb24g
|
|
1376
|
-
bm90IGV4aXN0cycpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxs
|
|
1377
|
-
KCdISU5DUkJZJywgY2FtcGFpZ25fa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCiAgcmVkaXMuY2Fs
|
|
1378
|
-
bCgnSElOQ1JCWScsIHByb3h5X2tleSwgJ21lc3NhZ2VfY291bnQnLCAxKQogIHJlZGlzLmNhbGwo
|
|
1379
|
-
J0hJTkNSQlknLCB0YXJnZXRfa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCiAgcmVkaXMuY2FsbCgn
|
|
1380
|
-
SElOQ1JCWScsIHNlc3Npb25fa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCgogIHJldHVybiByZWRp
|
|
1381
|
-
cy5zdGF0dXNfcmVwbHkoJ09LIER1bW15IG1lc3NhZ2UgY3JlYXRlZCcpCmVuZAoKcmVkaXMucmVn
|
|
1382
|
-
aXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAnY3JlYXRlX2R1bW15X21lc3NhZ2Un
|
|
1383
|
-
LAogIGNhbGxiYWNrID0gY3JlYXRlX2R1bW15X21lc3NhZ2UsCiAgZGVzY3JpcHRpb24gPSAnQ3Jl
|
|
1384
|
-
YXRlIGR1bW15IG1lc3NhZ2UnLAp9KQoKLS1bWwogIFJlYWQgbWVzc2FnZQotLV1dCmxvY2FsIGZ1
|
|
1385
|
-
bmN0aW9uIHJlYWRfbWVzc2FnZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mg
|
|
1386
|
-
fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
|
|
1387
|
-
biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgbWVz
|
|
1388
|
-
c2FnZV9rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tl
|
|
1389
|
-
eSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
|
|
1390
|
-
UycsIG1lc3NhZ2Vfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgLS0gc3R5
|
|
1391
|
-
bHVhOiBpZ25vcmUKICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxsKAogICAgJ0hNR0VUJywgbWVz
|
|
1392
|
-
c2FnZV9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAgJ21lc3NhZ2VfaWQnLAogICAgJ3Byb3h5
|
|
1393
|
-
X2lkJywKICAgICd0YXJnZXRfaWQnLAogICAgJ3Nlc3Npb25faWQnLAogICAgJ3R5cGUnLAogICAg
|
|
1394
|
-
J21ldGhvZCcsCiAgICAndXJsJywKICAgICdzdGF0dXMnLAogICAgJ3Byb2Nlc3NvcicsCiAgICAn
|
|
1395
|
-
c3RhcnRfdGltZScsCiAgICAnZmluaXNoX3RpbWUnLAogICAgJ2NyZWF0ZWRfYXQnCiAgKQoKICBp
|
|
1396
|
-
ZiAjdmFsdWVzIH49IDEzIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1h
|
|
1397
|
-
bGZvcm0gdmFsdWVzJykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9pZCA9
|
|
1398
|
-
IHZhbHVlc1sxXSwKICAgIG1lc3NhZ2VfaWQgPSB2YWx1ZXNbMl0sCiAgICBwcm94eV9pZCA9IHZh
|
|
1399
|
-
bHVlc1szXSwKICAgIHRhcmdldF9pZCA9IHZhbHVlc1s0XSwKICAgIHNlc3Npb25faWQgPSB2YWx1
|
|
1400
|
-
ZXNbNV0sCiAgICB0eXBlID0gdmFsdWVzWzZdLAogICAgbWV0aG9kID0gdmFsdWVzWzddLAogICAg
|
|
1401
|
-
dXJsID0gdmFsdWVzWzhdLAogICAgc3RhdHVzID0gdG9udW1iZXIodmFsdWVzWzldKSwKICAgIHBy
|
|
1402
|
-
b2Nlc3NvciA9IHZhbHVlc1sxMF0sCiAgICBzdGFydF90aW1lID0gdG9udW1iZXIodmFsdWVzWzEx
|
|
1403
|
-
XSksCiAgICBmaW5pc2hfdGltZSA9IHRvbnVtYmVyKHZhbHVlc1sxMl0pLAogICAgY3JlYXRlZF9h
|
|
1404
|
-
dCA9IHRvbnVtYmVyKHZhbHVlc1sxM10pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWly
|
|
1405
|
-
cyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJv
|
|
1406
|
-
cl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBy
|
|
1407
|
-
ZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1
|
|
1408
|
-
bmN0aW9uX25hbWUgPSAncmVhZF9tZXNzYWdlJywKICBjYWxsYmFjayA9IHJlYWRfbWVzc2FnZSwK
|
|
1409
|
-
ICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNjcmlwdGlvbiA9ICdSZWFkIG1lc3NhZ2Un
|
|
1410
|
-
LAp9KQoKLS1bWwogIFJlYWQgZnVsbCBtZXNzYWdlCi0tXV0KbG9jYWwgZnVuY3Rpb24gcmVhZF9m
|
|
1411
|
-
dWxsX21lc3NhZ2Uoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNhcmdzIH49IDAgdGhl
|
|
1412
|
-
bgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykK
|
|
1413
|
-
ICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIG1lc3NhZ2Vfa2V5
|
|
1414
|
-
ID0ga2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEg
|
|
1415
|
-
dGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBtZXNz
|
|
1416
|
-
YWdlX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0eWx1YTogaWdu
|
|
1417
|
-
b3JlCiAgbG9jYWwgdmFsdWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIG1lc3NhZ2Vfa2V5
|
|
1418
|
-
LAogICAgJ2NhbXBhaWduX2lkJywKICAgICdtZXNzYWdlX2lkJywKICAgICdwcm94eV9pZCcsCiAg
|
|
1419
|
-
ICAndGFyZ2V0X2lkJywKICAgICdzZXNzaW9uX2lkJywKICAgICd0eXBlJywKICAgICdtZXRob2Qn
|
|
1420
|
-
LAogICAgJ3VybCcsCiAgICAncmVxdWVzdF9oZWFkZXJzJywKICAgICdyZXF1ZXN0X2JvZHknLAog
|
|
1421
|
-
ICAgJ3N0YXR1cycsCiAgICAncmVzcG9uc2VfaGVhZGVycycsCiAgICAncmVzcG9uc2VfYm9keScs
|
|
1422
|
-
CiAgICAnY29ubmVjdGlvbicsCiAgICAncGF5bG9hZCcsCiAgICAnZXJyb3JzJywKICAgICdwcm9j
|
|
1423
|
-
ZXNzb3InLAogICAgJ3N0YXJ0X3RpbWUnLAogICAgJ2ZpbmlzaF90aW1lJywKICAgICdjcmVhdGVk
|
|
1424
|
-
X2F0JwogICkKCiAgaWYgI3ZhbHVlcyB+PSAyMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
|
|
1425
|
-
cmVwbHkoJ0VSUiBNYWxmb3JtIHZhbHVlcycpCiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAg
|
|
1426
|
-
Y2FtcGFpZ25faWQgPSB2YWx1ZXNbMV0sCiAgICBtZXNzYWdlX2lkID0gdmFsdWVzWzJdLAogICAg
|
|
1427
|
-
cHJveHlfaWQgPSB2YWx1ZXNbM10sCiAgICB0YXJnZXRfaWQgPSB2YWx1ZXNbNF0sCiAgICBzZXNz
|
|
1428
|
-
aW9uX2lkID0gdmFsdWVzWzVdLAogICAgdHlwZSA9IHZhbHVlc1s2XSwKICAgIG1ldGhvZCA9IHZh
|
|
1429
|
-
bHVlc1s3XSwKICAgIHVybCA9IHZhbHVlc1s4XSwKICAgIHJlcXVlc3RfaGVhZGVycyA9IHZhbHVl
|
|
1430
|
-
c1s5XSwKICAgIHJlcXVlc3RfYm9keSA9IHZhbHVlc1sxMF0sCiAgICBzdGF0dXMgPSB0b251bWJl
|
|
1431
|
-
cih2YWx1ZXNbMTFdKSwKICAgIHJlc3BvbnNlX2hlYWRlcnMgPSB2YWx1ZXNbMTJdLAogICAgcmVz
|
|
1432
|
-
cG9uc2VfYm9keSA9IHZhbHVlc1sxM10sCiAgICBjb25uZWN0aW9uID0gdmFsdWVzWzE0XSwKICAg
|
|
1433
|
-
IHBheWxvYWQgPSB2YWx1ZXNbMTVdLAogICAgZXJyb3JzID0gdmFsdWVzWzE2XSwKICAgIHByb2Nl
|
|
1434
|
-
c3NvciA9IHZhbHVlc1sxN10sCiAgICBzdGFydF90aW1lID0gdG9udW1iZXIodmFsdWVzWzE4XSks
|
|
1435
|
-
CiAgICBmaW5pc2hfdGltZSA9IHRvbnVtYmVyKHZhbHVlc1sxOV0pLAogICAgY3JlYXRlZF9hdCA9
|
|
1436
|
-
IHRvbnVtYmVyKHZhbHVlc1syMF0pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyht
|
|
1437
|
-
b2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9y
|
|
1438
|
-
ZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1
|
|
1439
|
-
cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0
|
|
1440
|
-
aW9uX25hbWUgPSAncmVhZF9mdWxsX21lc3NhZ2UnLAogIGNhbGxiYWNrID0gcmVhZF9mdWxsX21l
|
|
1441
|
-
c3NhZ2UsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCBm
|
|
1442
|
-
dWxsIG1lc3NhZ2UnLAp9KQo=`,
|
|
1443
|
-
];
|
|
1444
|
-
export function makeRedisFunctions() {
|
|
1445
|
-
const entries = [];
|
|
1446
|
-
for (let idx = 0; idx < REDIS_FUNCTIONS.length; idx += 2) {
|
|
1447
|
-
const name = REDIS_FUNCTIONS[idx];
|
|
1448
|
-
const body = REDIS_FUNCTIONS[idx + 1];
|
|
1449
|
-
if (name && body) {
|
|
1450
|
-
const data = Buffer.from(body, 'base64').toString();
|
|
1451
|
-
entries.push([name, data]);
|
|
1452
|
-
}
|
|
1453
|
-
}
|
|
1454
|
-
return entries;
|
|
1455
|
-
}
|
|
1
|
+
export const redisFunctions = new Map([
|
|
2
|
+
[
|
|
3
|
+
"1-campaign.lua",
|
|
4
|
+
"#!lua name=campaign\n\n--[[\n Create campaign\n--]]\nlocal function create_campaign(keys, args)\n if #keys ~= 4 or #args ~= 10 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_mirror_domains_key = keys[2]\n local campaign_session_cookie_names_key = keys[3]\n local campaign_index_key = keys[4]\n\n if redis.call('EXISTS', campaign_key) ~= 0 then\n return redis.status_reply('CONFLICT Campaign allready exists')\n end\n\n local model = {\n campaign_id = args[1],\n mirror_domain = args[2],\n description = args[3],\n crypt_secret = args[4],\n upgrade_session_path = args[5],\n session_cookie_name = args[6],\n session_expire = tonumber(args[7]),\n new_session_expire = tonumber(args[8]),\n message_expire = tonumber(args[9]),\n session_count = 0,\n message_count = 0,\n created_at = tonumber(args[10]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n\n if\n (\n k == 'campaign_id'\n or k == 'mirror_domain'\n or k == 'crypt_secret'\n or k == 'upgrade_session_path'\n or k == 'session_cookie_name'\n ) and v == ''\n then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n\n if (k == 'session_expire' or k == 'new_session_expire' or k == 'message_expire') and v <= 0 then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n if redis.call('SISMEMBER', campaign_mirror_domains_key, model.mirror_domain) ~= 0 then\n return redis.status_reply('CONFLICT Campaign mirror_domain allready taken')\n end\n\n if redis.call('SISMEMBER', campaign_session_cookie_names_key, model.session_cookie_name) ~= 0 then\n return redis.status_reply('CONFLICT Campaign session_cookie_name allready taken')\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', campaign_key, unpack(store))\n\n redis.call('SADD', campaign_mirror_domains_key, model.mirror_domain)\n\n redis.call('SADD', campaign_session_cookie_names_key, model.session_cookie_name)\n\n redis.call('ZADD', campaign_index_key, model.created_at, model.campaign_id)\n\n return redis.status_reply('OK Campaign created')\nend\n\nredis.register_function({\n function_name = 'create_campaign',\n callback = create_campaign,\n description = 'Create campaign',\n})\n\n--[[\n Read campaign\n--]]\nlocal function read_campaign(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', campaign_key,\n 'campaign_id',\n 'mirror_domain',\n 'session_count',\n 'message_count',\n 'created_at'\n )\n\n if #values ~= 5 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n mirror_domain = values[2],\n is_locked = redis.call('EXISTS', campaign_lock_key),\n session_count = tonumber(values[3]),\n message_count = tonumber(values[4]),\n created_at = tonumber(values[5]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_campaign',\n callback = read_campaign,\n flags = { 'no-writes' },\n description = 'Read campaign',\n})\n\n--[[\n Read full campaign\n--]]\nlocal function read_full_campaign(keys, args)\n if #keys ~= 7 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_session_cookie_names_key = keys[2]\n local campaign_lock_key = keys[3]\n local proxy_index_key = keys[4]\n local target_index_key = keys[5]\n local redirector_index_key = keys[6]\n local lure_index_key = keys[7]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', campaign_key,\n 'campaign_id',\n 'mirror_domain',\n 'description',\n 'crypt_secret',\n 'upgrade_session_path',\n 'session_cookie_name',\n 'session_expire',\n 'new_session_expire',\n 'message_expire',\n 'session_count',\n 'message_count',\n 'created_at'\n )\n\n if #values ~= 12 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n mirror_domain = values[2],\n description = values[3],\n crypt_secret = values[4],\n upgrade_session_path = values[5],\n session_cookie_name = values[6],\n session_cookie_names = redis.call('SMEMBERS', campaign_session_cookie_names_key),\n session_expire = tonumber(values[7]),\n new_session_expire = tonumber(values[8]),\n message_expire = tonumber(values[9]),\n is_locked = redis.call('EXISTS', campaign_lock_key),\n proxy_count = redis.call('ZCARD', proxy_index_key),\n target_count = redis.call('ZCARD', target_index_key),\n redirector_count = redis.call('ZCARD', redirector_index_key),\n lure_count = redis.call('ZCARD', lure_index_key),\n session_count = tonumber(values[10]),\n message_count = tonumber(values[11]),\n created_at = tonumber(values[12]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_full_campaign',\n callback = read_full_campaign,\n flags = { 'no-writes' },\n description = 'Read full campaign',\n})\n\n--[[\n Read campaign index\n--]]\nlocal function read_campaign_index(keys, args)\n if #keys ~= 1 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_index_key = keys[1]\n\n return redis.call('ZRANGE', campaign_index_key, 0, -1)\nend\n\nredis.register_function({\n function_name = 'read_campaign_index',\n callback = read_campaign_index,\n flags = { 'no-writes' },\n description = 'Read campaign index',\n})\n\n--[[\n Lock campaign\n--]]\nlocal function lock_campaign(keys, args)\n if #keys ~= 2 or #args ~= 2 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 0 then\n return redis.status_reply('FORBIDDEN Campaign allready locked')\n end\n\n local stash = {\n lock_secret = args[1],\n lock_timeout = tonumber(args[2]),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if k == 'lock_secret' and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if k == 'lock_timeout' and v <= 0 then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n -- Point of no return\n\n redis.call('SET', campaign_lock_key, stash.lock_secret, 'PX', stash.lock_timeout)\n\n return redis.status_reply('OK Campaign locked')\nend\n\nredis.register_function({\n function_name = 'lock_campaign',\n callback = lock_campaign,\n description = 'Lock campaign',\n})\n\n--[[\n Unlock campaign\n--]]\nlocal function unlock_campaign(keys, args)\n if #keys ~= 2 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('OK Campaign not locked')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('DEL', campaign_lock_key)\n\n return redis.status_reply('OK Campaign unlocked')\nend\n\nredis.register_function({\n function_name = 'unlock_campaign',\n callback = unlock_campaign,\n description = 'Unlock campaign',\n})\n\n--[[\n Update campaign\n--]]\nlocal function update_campaign(keys, args)\n if #keys ~= 2 or #args < 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n local stash = {\n lock_secret = table.remove(args),\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if #args % 2 ~= 0 then\n return redis.error_reply('ERR Odd number of args')\n end\n\n local model = {}\n\n for i = 1, #args, 2 do\n local k, v = args[i], args[i + 1]\n\n if model[k] then\n return redis.error_reply('ERR Duplicate model.' .. k)\n end\n\n if k == 'description' then\n model.description = v\n elseif k == 'session_expire' then\n model.session_expire = tonumber(v)\n elseif k == 'new_session_expire' then\n model.new_session_expire = tonumber(v)\n elseif k == 'message_expire' then\n model.message_expire = tonumber(v)\n else\n return redis.error_reply('ERR Unknown model.' .. k)\n end\n end\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n if next(model) == nil then\n return redis.status_reply('OK Nothing to update')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', campaign_key, unpack(store))\n\n return redis.status_reply('OK Campaign updated')\nend\n\nredis.register_function({\n function_name = 'update_campaign',\n callback = update_campaign,\n description = 'Update campaign',\n})\n\n--[[\n Delete campaign\n--]]\nlocal function delete_campaign(keys, args)\n if #keys ~= 9 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local campaign_mirror_domains_key = keys[3]\n local campaign_session_cookie_names_key = keys[4]\n local campaign_index_key = keys[5]\n local proxy_index_key = keys[6]\n local target_index_key = keys[7]\n local redirector_index_key = keys[8]\n local lure_index_key = keys[9]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n campaign_id = redis.call('HGET', campaign_key, 'campaign_id'),\n mirror_domain = redis.call('HGET', campaign_key, 'mirror_domain'),\n session_cookie_name = redis.call('HGET', campaign_key, 'session_cookie_name'),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if\n (\n k == 'lock_secret'\n or k == 'orig_lock_secret'\n or k == 'campaign_id'\n or k == 'mirror_domain'\n or k == 'session_cookie_name'\n ) and v == ''\n then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if redis.call('ZCARD', proxy_index_key) ~= 0 then\n return redis.status_reply('FORBIDDEN Campaign proxies exists')\n end\n\n if redis.call('ZCARD', target_index_key) ~= 0 then\n return redis.status_reply('FORBIDDEN Campaign targets exists')\n end\n\n if redis.call('ZCARD', redirector_index_key) ~= 0 then\n return redis.status_reply('FORBIDDEN Campaign redirectors exists')\n end\n\n if redis.call('ZCARD', lure_index_key) ~= 0 then\n return redis.status_reply('FORBIDDEN Campaign lures exists')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('DEL', campaign_key, campaign_lock_key)\n\n redis.call('SREM', campaign_mirror_domains_key, stash.mirror_domain)\n\n redis.call('SREM', campaign_session_cookie_names_key, stash.session_cookie_name)\n\n redis.call('ZREM', campaign_index_key, stash.campaign_id)\n\n return redis.status_reply('OK Campaign deleted')\nend\n\nredis.register_function({\n function_name = 'delete_campaign',\n callback = delete_campaign,\n description = 'Delete campaign',\n})\n"
|
|
5
|
+
],
|
|
6
|
+
[
|
|
7
|
+
"2-proxy.lua",
|
|
8
|
+
"#!lua name=proxy\n\n--[[\n Create proxy\n--]]\nlocal function create_proxy(keys, args)\n if #keys ~= 5 or #args ~= 5 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local proxy_key = keys[3]\n local proxy_urls_key = keys[4]\n local proxy_index_key = keys[5]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', proxy_key) ~= 0 then\n return redis.status_reply('CONFLICT Proxy allready exists')\n end\n\n local stash = {\n lock_secret = args[5],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n local model = {\n campaign_id = args[1],\n proxy_id = args[2],\n url = args[3],\n is_enabled = 0,\n message_count = 0,\n created_at = args[4],\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n\n if (k == 'campaign_id' or k == 'proxy_id' or k == 'url') and v == '' then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n if redis.call('SISMEMBER', proxy_urls_key, model.url) ~= 0 then\n return redis.status_reply('CONFLICT Proxy url allready taken')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', proxy_key, unpack(store))\n\n redis.call('SADD', proxy_urls_key, model.url)\n\n redis.call('ZADD', proxy_index_key, model.created_at, model.proxy_id)\n\n return redis.status_reply('OK Proxy created')\nend\n\nredis.register_function({\n function_name = 'create_proxy',\n callback = create_proxy,\n description = 'Create proxy',\n})\n\n--[[\n Read proxy\n--]]\nlocal function read_proxy(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local proxy_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', proxy_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', proxy_key,\n 'campaign_id',\n 'proxy_id',\n 'url',\n 'is_enabled',\n 'message_count',\n 'created_at'\n )\n\n if #values ~= 6 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n proxy_id = values[2],\n url = values[3],\n is_enabled = tonumber(values[4]),\n message_count = tonumber(values[5]),\n created_at = tonumber(values[6]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_proxy',\n callback = read_proxy,\n flags = { 'no-writes' },\n description = 'Read proxy',\n})\n\n--[[\n Read proxy index\n--]]\nlocal function read_proxy_index(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local proxy_index_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n return redis.call('ZRANGE', proxy_index_key, 0, -1)\nend\n\nredis.register_function({\n function_name = 'read_proxy_index',\n callback = read_proxy_index,\n flags = { 'no-writes' },\n description = 'Read proxy index',\n})\n\n--[[\n Enable proxy\n--]]\nlocal function enable_proxy(keys, args)\n if #keys ~= 4 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local proxy_key = keys[3]\n local enabled_proxy_index_key = keys[4]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', proxy_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Proxy not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n proxy_id = redis.call('HGET', proxy_key, 'proxy_id'),\n is_enabled = tonumber(redis.call('HGET', proxy_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret' or k == 'proxy_id') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.is_enabled ~= 0 then\n return redis.status_reply('OK Proxy allready enabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('HSET', proxy_key, 'is_enabled', 1)\n\n redis.call('SADD', enabled_proxy_index_key, stash.proxy_id)\n\n return redis.status_reply('OK Proxy enabled')\nend\n\nredis.register_function({\n function_name = 'enable_proxy',\n callback = enable_proxy,\n description = 'Enable proxy',\n})\n\n--[[\n Disable proxy\n--]]\nlocal function disable_proxy(keys, args)\n if #keys ~= 4 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local proxy_key = keys[3]\n local enabled_proxy_index_key = keys[4]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', proxy_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Proxy not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n proxy_id = redis.call('HGET', proxy_key, 'proxy_id'),\n is_enabled = tonumber(redis.call('HGET', proxy_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret' or k == 'proxy_id') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.is_enabled == 0 then\n return redis.status_reply('OK Proxy allready disabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('HSET', proxy_key, 'is_enabled', 0)\n\n redis.call('SREM', enabled_proxy_index_key, stash.proxy_id)\n\n return redis.status_reply('OK Proxy disabled')\nend\n\nredis.register_function({\n function_name = 'disable_proxy',\n callback = disable_proxy,\n description = 'Disable proxy',\n})\n\n--[[\n Delete proxy\n--]]\nlocal function delete_proxy(keys, args)\n if #keys ~= 5 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local proxy_key = keys[3]\n local proxy_urls_key = keys[4]\n local proxy_index_key = keys[5]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', proxy_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Proxy not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n proxy_id = redis.call('HGET', proxy_key, 'proxy_id'),\n url = redis.call('HGET', proxy_key, 'url'),\n is_enabled = tonumber(redis.call('HGET', proxy_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if\n (k == 'lock_secret' or k == 'orig_lock_secret' or k == 'proxy_id' or k == 'url') and v == ''\n then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.is_enabled ~= 0 then\n return redis.status_reply('FORBIDDEN Proxy not disabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('DEL', proxy_key)\n\n redis.call('SREM', proxy_urls_key, stash.url)\n\n redis.call('ZREM', proxy_index_key, stash.proxy_id)\n\n return redis.status_reply('OK Proxy deleted')\nend\n\nredis.register_function({\n function_name = 'delete_proxy',\n callback = delete_proxy,\n description = 'Delete proxy',\n})\n"
|
|
9
|
+
],
|
|
10
|
+
[
|
|
11
|
+
"3-target.lua",
|
|
12
|
+
"#!lua name=target\n\n--[[\n Create target\n--]]\nlocal function create_target(keys, args)\n if #keys ~= 7 or #args ~= 23 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local target_key = keys[3]\n local target_donors_key = keys[4]\n local target_mirrors_key = keys[5]\n local target_mirror_hosts_key = keys[6]\n local target_index_key = keys[7]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', target_key) ~= 0 then\n return redis.status_reply('CONFLICT Target allready exists')\n end\n\n local stash = {\n lock_secret = args[23],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n mirror_domain = redis.call('HGET', campaign_key, 'mirror_domain'),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret' or k == 'mirror_domain') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n local model = {\n campaign_id = args[1],\n target_id = args[2],\n access_level = args[3],\n donor_secure = tonumber(args[4]),\n donor_sub = args[5],\n donor_domain = args[6],\n donor_port = args[7],\n mirror_secure = tonumber(args[8]),\n mirror_sub = args[9],\n mirror_port = args[10],\n connect_timeout = tonumber(args[11]),\n simple_timeout = tonumber(args[12]),\n stream_timeout = tonumber(args[13]),\n headers_size_limit = tonumber(args[14]),\n body_size_limit = tonumber(args[15]),\n main_page = args[16],\n not_found_page = args[17],\n favicon_ico = args[18],\n robots_txt = args[19],\n sitemap_xml = args[20],\n allow_websockets = tonumber(args[21]),\n is_enabled = 0,\n message_count = 0,\n created_at = tonumber(args[22]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n\n if\n (\n k == 'campaign_id'\n or k == 'target_id'\n or k == 'access_level'\n or k == 'donor_sub'\n or k == 'donor_domain'\n or k == 'donor_port'\n or k == 'mirror_sub'\n or k == 'mirror_port'\n ) and v == ''\n then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n -- stylua: ignore\n local donor_str = model.campaign_id\n .. '\\t' .. model.donor_sub\n .. '\\t' .. model.donor_domain\n .. '\\t' .. model.donor_port\n\n if redis.call('SISMEMBER', target_donors_key, donor_str) ~= 0 then\n return redis.status_reply('CONFLICT Target donor allready taken')\n end\n\n -- stylua: ignore\n local mirror_str = model.campaign_id\n .. '\\t' .. model.mirror_sub\n .. '\\t' .. model.mirror_port\n\n if redis.call('SISMEMBER', target_mirrors_key, mirror_str) ~= 0 then\n return redis.status_reply('CONFLICT Target mirror allready taken')\n end\n\n local mirror_hostname = model.mirror_sub ~= '.'\n and (model.mirror_sub .. '.' .. stash.mirror_domain)\n or stash.mirror_domain\n local mirror_host = mirror_hostname .. ':' .. model.mirror_port\n\n if redis.call('HEXISTS', target_mirror_hosts_key, mirror_host) ~= 0 then\n return redis.error_reply('ERR Target mirror host allready taken')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', target_key, unpack(store))\n\n redis.call('SADD', target_donors_key, donor_str)\n redis.call('SADD', target_mirrors_key, mirror_str)\n\n local target_link = model.campaign_id .. '\\t' .. model.target_id\n redis.call('HSET', target_mirror_hosts_key, mirror_host, target_link)\n\n redis.call('ZADD', target_index_key, model.created_at, model.target_id)\n\n return redis.status_reply('OK Target created')\nend\n\nredis.register_function({\n function_name = 'create_target',\n callback = create_target,\n description = 'Create target',\n})\n\n--[[\n Read target\n--]]\nlocal function read_target(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local target_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', target_key,\n 'campaign_id',\n 'target_id',\n 'access_level',\n 'donor_secure',\n 'donor_sub',\n 'donor_domain',\n 'donor_port',\n 'mirror_secure',\n 'mirror_sub',\n 'mirror_port',\n 'is_enabled',\n 'message_count',\n 'created_at'\n )\n\n if #values ~= 13 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n target_id = values[2],\n access_level = values[3],\n donor_secure = tonumber(values[4]),\n donor_sub = values[5],\n donor_domain = values[6],\n donor_port = values[7],\n mirror_secure = tonumber(values[8]),\n mirror_sub = values[9],\n mirror_domain = redis.call('HGET', campaign_key, 'mirror_domain'),\n mirror_port = values[10],\n is_enabled = tonumber(values[11]),\n message_count = tonumber(values[12]),\n created_at = tonumber(values[13]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_target',\n callback = read_target,\n flags = { 'no-writes' },\n description = 'Read target',\n})\n\n--[[\n Read full target\n--]]\nlocal function read_full_target(keys, args)\n if #keys ~= 3 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local target_key = keys[2]\n local target_labels_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', target_key,\n 'campaign_id',\n 'target_id',\n 'access_level',\n 'donor_secure',\n 'donor_sub',\n 'donor_domain',\n 'donor_port',\n 'mirror_secure',\n 'mirror_sub',\n 'mirror_port',\n 'connect_timeout',\n 'simple_timeout',\n 'stream_timeout',\n 'headers_size_limit',\n 'body_size_limit',\n 'main_page',\n 'not_found_page',\n 'favicon_ico',\n 'robots_txt',\n 'sitemap_xml',\n 'allow_websockets',\n 'is_enabled',\n 'message_count',\n 'created_at'\n )\n\n if #values ~= 24 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n target_id = values[2],\n access_level = values[3],\n donor_secure = tonumber(values[4]),\n donor_sub = values[5],\n donor_domain = values[6],\n donor_port = values[7],\n mirror_secure = tonumber(values[8]),\n mirror_sub = values[9],\n mirror_domain = redis.call('HGET', campaign_key, 'mirror_domain'),\n mirror_port = values[10],\n labels = redis.call('SMEMBERS', target_labels_key),\n connect_timeout = tonumber(values[11]),\n simple_timeout = tonumber(values[12]),\n stream_timeout = tonumber(values[13]),\n headers_size_limit = tonumber(values[14]),\n body_size_limit = tonumber(values[15]),\n main_page = values[16],\n not_found_page = values[17],\n favicon_ico = values[18],\n robots_txt = values[19],\n sitemap_xml = values[20],\n allow_websockets = tonumber(values[21]),\n is_enabled = tonumber(values[22]),\n message_count = tonumber(values[23]),\n created_at = tonumber(values[24]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_full_target',\n callback = read_full_target,\n flags = { 'no-writes' },\n description = 'Read full target',\n})\n\n--[[\n Find target link\n--]]\nlocal function find_target_link(keys, args)\n if #keys ~= 1 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local target_mirror_hosts_key = keys[1]\n\n local mirror_host = args[1]\n\n if not (mirror_host and mirror_host ~= '') then\n return redis.error_reply('ERR Wrong mirror_host')\n end\n\n if redis.call('HEXISTS', target_mirror_hosts_key, mirror_host) ~= 1 then\n return nil\n end\n\n local target_link = redis.call('HGET', target_mirror_hosts_key, mirror_host)\n local campaign_id, target_id = string.match(target_link, '([^\\t]+)\\t([^\\t]+)')\n\n if not (campaign_id and campaign_id ~= '' and target_id and target_id ~= '') then\n return redis.error_reply('ERR Malform target_link')\n end\n\n return { campaign_id, target_id }\nend\n\nredis.register_function({\n function_name = 'find_target_link',\n callback = find_target_link,\n flags = { 'no-writes' },\n description = 'Find target link',\n})\n\n--[[\n Read target index\n--]]\nlocal function read_target_index(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local target_index_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n return redis.call('ZRANGE', target_index_key, 0, -1)\nend\n\nredis.register_function({\n function_name = 'read_target_index',\n callback = read_target_index,\n flags = { 'no-writes' },\n description = 'Read target index',\n})\n\n--[[\n Update target\n--]]\nlocal function update_target(keys, args)\n if #keys ~= 3 or #args < 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local target_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Target not exists')\n end\n\n local stash = {\n lock_secret = table.remove(args),\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if #args % 2 ~= 0 then\n return redis.error_reply('ERR Odd number of args')\n end\n\n local model = {}\n\n for i = 1, #args, 2 do\n local k, v = args[i], args[i + 1]\n\n if model[k] then\n return redis.error_reply('ERR Duplicate model.' .. k)\n end\n\n if k == 'connect_timeout' then\n model.connect_timeout = tonumber(v)\n elseif k == 'simple_timeout' then\n model.simple_timeout = tonumber(v)\n elseif k == 'stream_timeout' then\n model.stream_timeout = tonumber(v)\n elseif k == 'headers_size_limit' then\n model.headers_size_limit = tonumber(v)\n elseif k == 'body_size_limit' then\n model.body_size_limit = tonumber(v)\n elseif k == 'main_page' then\n model.main_page = v\n elseif k == 'not_found_page' then\n model.not_found_page = v\n elseif k == 'favicon_ico' then\n model.favicon_ico = v\n elseif k == 'robots_txt' then\n model.robots_txt = v\n elseif k == 'sitemap_xml' then\n model.sitemap_xml = v\n elseif k == 'allow_websockets' then\n model.allow_websockets = tonumber(v)\n else\n return redis.error_reply('ERR Unknown model.' .. k)\n end\n end\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n if next(model) == nil then\n return redis.status_reply('OK Nothing to update')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', target_key, unpack(store))\n\n return redis.status_reply('OK Target updated')\nend\n\nredis.register_function({\n function_name = 'update_target',\n callback = update_target,\n description = 'Update target',\n})\n\n--[[\n Enable target\n--]]\nlocal function enable_target(keys, args)\n if #keys ~= 3 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local target_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Target not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n is_enabled = tonumber(redis.call('HGET', target_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.is_enabled ~= 0 then\n return redis.status_reply('OK Target allready enabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('HSET', target_key, 'is_enabled', 1)\n\n return redis.status_reply('OK Target enabled')\nend\n\nredis.register_function({\n function_name = 'enable_target',\n callback = enable_target,\n description = 'Enable target',\n})\n\n--[[\n Disable target\n--]]\nlocal function disable_target(keys, args)\n if #keys ~= 3 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local target_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Target not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n is_enabled = tonumber(redis.call('HGET', target_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.is_enabled == 0 then\n return redis.status_reply('OK Target allready disabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('HSET', target_key, 'is_enabled', 0)\n\n return redis.status_reply('OK Target diabled')\nend\n\nredis.register_function({\n function_name = 'disable_target',\n callback = disable_target,\n description = 'Disable target',\n})\n\n--[[\n Append target label\n--]]\nlocal function append_target_label(keys, args)\n if #keys ~= 4 or #args ~= 2 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local target_key = keys[3]\n local target_labels_key = keys[4]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Target not exists')\n end\n\n local stash = {\n label = args[1],\n lock_secret = args[2],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'label' or k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if redis.call('SISMEMBER', target_labels_key, stash.label) ~= 0 then\n return redis.status_reply('OK Target label allready exists')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('SADD', target_labels_key, stash.label)\n\n return redis.status_reply('OK Target label appended')\nend\n\nredis.register_function({\n function_name = 'append_target_label',\n callback = append_target_label,\n description = 'Append target label',\n})\n\n--[[\n Remove target label\n--]]\nlocal function remove_target_label(keys, args)\n if #keys ~= 4 or #args ~= 2 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local target_key = keys[3]\n local target_labels_key = keys[4]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Target not exists')\n end\n\n local stash = {\n label = args[1],\n lock_secret = args[2],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'label' or k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if redis.call('SISMEMBER', target_labels_key, stash.label) ~= 1 then\n return redis.status_reply('OK Target label not exists')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('SREM', target_labels_key, stash.label)\n\n return redis.status_reply('OK Target label removed')\nend\n\nredis.register_function({\n function_name = 'remove_target_label',\n callback = remove_target_label,\n description = 'Remove target label',\n})\n\n--[[\n Delete target\n--]]\nlocal function delete_target(keys, args)\n if #keys ~= 8 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local target_key = keys[3]\n local target_labels_key = keys[4]\n local target_donors_key = keys[5]\n local target_mirrors_key = keys[6]\n local target_mirror_hosts_key = keys[7]\n local target_index_key = keys[8]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Target not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n campaign_id = redis.call('HGET', target_key, 'campaign_id'),\n target_id = redis.call('HGET', target_key, 'target_id'),\n donor_sub = redis.call('HGET', target_key, 'donor_sub'),\n donor_domain = redis.call('HGET', target_key, 'donor_domain'),\n donor_port = redis.call('HGET', target_key, 'donor_port'),\n mirror_sub = redis.call('HGET', target_key, 'mirror_sub'),\n mirror_domain = redis.call('HGET', campaign_key, 'mirror_domain'),\n mirror_port = redis.call('HGET', target_key, 'mirror_port'),\n is_enabled = tonumber(redis.call('HGET', target_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if\n (\n k == 'lock_secret'\n or k == 'orig_lock_secret'\n or k == 'campaign_id'\n or k == 'target_id'\n or k == 'donor_sub'\n or k == 'donor_domain'\n or k == 'donor_port'\n or k == 'mirror_sub'\n or k == 'mirror_domain'\n or k == 'mirror_port'\n ) and v == ''\n then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n -- stylua: ignore\n local donor_str = stash.campaign_id\n .. '\\t' .. stash.donor_sub\n .. '\\t' .. stash.donor_domain\n .. '\\t' .. stash.donor_port\n\n -- stylua: ignore\n local mirror_str = stash.campaign_id\n .. '\\t' .. stash.mirror_sub\n .. '\\t' .. stash.mirror_port\n\n local mirror_hostname = stash.mirror_sub ~= '.'\n and (stash.mirror_sub .. '.' .. stash.mirror_domain)\n or stash.mirror_domain\n local mirror_host = mirror_hostname .. ':' .. stash.mirror_port\n\n if stash.is_enabled ~= 0 then\n return redis.status_reply('FORBIDDEN Target not disabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('DEL', target_key)\n redis.call('DEL', target_labels_key)\n\n redis.call('SREM', target_donors_key, donor_str)\n redis.call('SREM', target_mirrors_key, mirror_str)\n\n redis.call('HDEL', target_mirror_hosts_key, mirror_host)\n\n redis.call('ZREM', target_index_key, stash.target_id)\n\n return redis.status_reply('OK Target deleted')\nend\n\nredis.register_function({\n function_name = 'delete_target',\n callback = delete_target,\n description = 'Delete target',\n})\n"
|
|
13
|
+
],
|
|
14
|
+
[
|
|
15
|
+
"4-redirector.lua",
|
|
16
|
+
"#!lua name=redirector\n\n--[[\n Create redirector\n--]]\nlocal function create_redirector(keys, args)\n if #keys ~= 4 or #args ~= 5 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local redirector_key = keys[3]\n local redirector_index_key = keys[4]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', redirector_key) ~= 0 then\n return redis.status_reply('CONFLICT Redirector allready exists')\n end\n\n local stash = {\n lock_secret = args[5],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n local model = {\n campaign_id = args[1],\n redirector_id = args[2],\n page = args[3],\n lure_count = 0,\n created_at = tonumber(args[4]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n\n if (k == 'campaign_id' or k == 'redirector_id') and v == '' then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', redirector_key, unpack(store))\n\n redis.call('ZADD', redirector_index_key, model.created_at, model.redirector_id)\n\n return redis.status_reply('OK Redirector created')\nend\n\nredis.register_function({\n function_name = 'create_redirector',\n callback = create_redirector,\n description = 'Create redirector',\n})\n\n--[[\n Read redirector\n--]]\nlocal function read_redirector(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local redirector_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', redirector_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', redirector_key,\n 'campaign_id',\n 'redirector_id',\n 'lure_count',\n 'created_at'\n )\n\n if #values ~= 4 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n redirector_id = values[2],\n lure_count = tonumber(values[3]),\n created_at = tonumber(values[4]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_redirector',\n callback = read_redirector,\n flags = { 'no-writes' },\n description = 'Read redirector',\n})\n\n--[[\n Read full redirector\n--]]\nlocal function read_full_redirector(keys, args)\n if #keys ~= 3 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local redirector_key = keys[2]\n local redirector_fields_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', redirector_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', redirector_key,\n 'campaign_id',\n 'redirector_id',\n 'page',\n 'lure_count',\n 'created_at'\n )\n\n if #values ~= 5 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n redirector_id = values[2],\n page = values[3],\n fields = redis.call('SMEMBERS', redirector_fields_key),\n lure_count = tonumber(values[4]),\n created_at = tonumber(values[5]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_full_redirector',\n callback = read_full_redirector,\n flags = { 'no-writes' },\n description = 'Read full redirector',\n})\n\n--[[\n Read redirector index\n--]]\nlocal function read_redirector_index(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local redirector_index_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n return redis.call('ZRANGE', redirector_index_key, 0, -1)\nend\n\nredis.register_function({\n function_name = 'read_redirector_index',\n callback = read_redirector_index,\n flags = { 'no-writes' },\n description = 'Read redirector index',\n})\n\n--[[\n Update redirector\n--]]\nlocal function update_redirector(keys, args)\n if #keys ~= 3 or #args < 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local redirector_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', redirector_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Redirector not exists')\n end\n\n local stash = {\n lock_secret = table.remove(args),\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if #args % 2 ~= 0 then\n return redis.error_reply('ERR Odd number of args')\n end\n\n local model = {}\n\n for i = 1, #args, 2 do\n local k, v = args[i], args[i + 1]\n\n if model[k] then\n return redis.error_reply('ERR Duplicate model.' .. k)\n end\n\n if k == 'page' then\n model.page = v\n else\n return redis.error_reply('ERR Unknown model.' .. k)\n end\n end\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n if next(model) == nil then\n return redis.status_reply('OK Nothing to update')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', redirector_key, unpack(store))\n\n return redis.status_reply('OK Redirector updated')\nend\n\nredis.register_function({\n function_name = 'update_redirector',\n callback = update_redirector,\n description = 'Update redirector',\n})\n\n--[[\n Append redirector field\n--]]\nlocal function append_redirector_field(keys, args)\n if #keys ~= 4 or #args ~= 2 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local redirector_key = keys[3]\n local redirector_fields_key = keys[4]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', redirector_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Redirector not exists')\n end\n\n local stash = {\n field = args[1],\n lock_secret = args[2],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'field' or k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if redis.call('SISMEMBER', redirector_fields_key, stash.field) ~= 0 then\n return redis.status_reply('OK Redirector field allready exists')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('SADD', redirector_fields_key, stash.field)\n\n return redis.status_reply('OK Redirector field appended')\nend\n\nredis.register_function({\n function_name = 'append_redirector_field',\n callback = append_redirector_field,\n description = 'Append redirector field',\n})\n\n--[[\n Remove redirector field\n--]]\nlocal function remove_redirector_field(keys, args)\n if #keys ~= 4 or #args ~= 2 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local redirector_key = keys[3]\n local redirector_fields_key = keys[4]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', redirector_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Redirector not exists')\n end\n\n local stash = {\n field = args[1],\n lock_secret = args[2],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'field' or k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if redis.call('SISMEMBER', redirector_fields_key, stash.field) ~= 1 then\n return redis.status_reply('OK Redirector field not exists')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('SREM', redirector_fields_key, stash.field)\n\n return redis.status_reply('OK Redirector field removed')\nend\n\nredis.register_function({\n function_name = 'remove_redirector_field',\n callback = remove_redirector_field,\n description = 'Remove redirector field',\n})\n\n--[[\n Delete redirector\n--]]\nlocal function delete_redirector(keys, args)\n if #keys ~= 5 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local redirector_key = keys[3]\n local redirector_fields_key = keys[4]\n local redirector_index_key = keys[5]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', redirector_key) ~= 1 then\n return redis.status_reply('NOT_FOUND redirector not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n redirector_id = redis.call('HGET', redirector_key, 'redirector_id'),\n lure_count = tonumber(redis.call('HGET', redirector_key, 'lure_count')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret' or k == 'redirector_id') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if k == 'lure_count' and v < 0 then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.lure_count > 0 then\n return redis.status_reply('FORBIDDEN Lures exists')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('DEL', redirector_key)\n redis.call('DEL', redirector_fields_key)\n\n redis.call('ZREM', redirector_index_key, stash.redirector_id)\n\n return redis.status_reply('OK Redirector deleted')\nend\n\nredis.register_function({\n function_name = 'delete_redirector',\n callback = delete_redirector,\n description = 'Delete redirector',\n})\n"
|
|
17
|
+
],
|
|
18
|
+
[
|
|
19
|
+
"5-lure.lua",
|
|
20
|
+
"#!lua name=lure\n\n--[[\n Create lure\n--]]\nlocal function create_lure(keys, args)\n if #keys ~= 6 or #args ~= 6 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local lure_key = keys[3]\n local lure_paths_key = keys[4]\n local lure_index_key = keys[5]\n local redirector_key = keys[6]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', lure_key) ~= 0 then\n return redis.status_reply('CONFLICT Lure allready exists')\n end\n\n if redis.call('EXISTS', redirector_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Redirector not found')\n end\n\n local stash = {\n lock_secret = args[6],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n local model = {\n campaign_id = args[1],\n lure_id = args[2],\n path = args[3],\n redirector_id = args[4],\n is_enabled = 0,\n session_count = 0,\n created_at = tonumber(args[5]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n\n if\n (k == 'campaign_id' or k == 'lure_id' or k == 'path' or k == 'redirector_id')\n and v == ''\n then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', lure_key, unpack(store))\n\n redis.call('HSET', lure_paths_key, model.path, model.lure_id)\n\n redis.call('ZADD', lure_index_key, model.created_at, model.lure_id)\n\n redis.call('HINCRBY', redirector_key, 'lure_count', 1)\n\n return redis.status_reply('OK Lure created')\nend\n\nredis.register_function({\n function_name = 'create_lure',\n callback = create_lure,\n description = 'Create lure',\n})\n\n--[[\n Read lure\n--]]\nlocal function read_lure(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local lure_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', lure_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', lure_key,\n 'campaign_id',\n 'lure_id',\n 'path',\n 'redirector_id',\n 'is_enabled',\n 'session_count',\n 'created_at'\n )\n\n if #values ~= 7 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n lure_id = values[2],\n path = values[3],\n redirector_id = values[4],\n is_enabled = tonumber(values[5]),\n session_count = tonumber(values[6]),\n created_at = tonumber(values[7]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_lure',\n callback = read_lure,\n flags = { 'no-writes' },\n description = 'Read lure',\n})\n\n--[[\n Find lure id\n--]]\nlocal function find_lure_id(keys, args)\n if #keys ~= 2 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local lure_paths_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n local path = args[1]\n\n if not (path and path ~= '') then\n return redis.error_reply('ERR Wrong path')\n end\n\n if redis.call('HEXISTS', lure_paths_key, path) ~= 1 then\n return nil\n end\n\n local lure_id = redis.call('HGET', lure_paths_key, path)\n\n if not (lure_id and lure_id ~= '') then\n return redis.error_reply('ERR Malform lure_id')\n end\n\n return lure_id\nend\n\nredis.register_function({\n function_name = 'find_lure_id',\n callback = find_lure_id,\n flags = { 'no-writes' },\n description = 'Find lure id',\n})\n\n--[[\n Read lure index\n--]]\nlocal function read_lure_index(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local lure_index_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n return redis.call('ZRANGE', lure_index_key, 0, -1)\nend\n\nredis.register_function({\n function_name = 'read_lure_index',\n callback = read_lure_index,\n flags = { 'no-writes' },\n description = 'Read lure index',\n})\n\n--[[\n Enable lure\n--]]\nlocal function enable_lure(keys, args)\n if #keys ~= 3 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local lure_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', lure_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Lure not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n is_enabled = tonumber(redis.call('HGET', lure_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.is_enabled ~= 0 then\n return redis.status_reply('OK Lure allready enabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('HSET', lure_key, 'is_enabled', 1)\n\n return redis.status_reply('OK Lure enabled')\nend\n\nredis.register_function({\n function_name = 'enable_lure',\n callback = enable_lure,\n description = 'Enable lure',\n})\n\n--[[\n Disable lure\n--]]\nlocal function disable_lure(keys, args)\n if #keys ~= 3 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local lure_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', lure_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Lure not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n is_enabled = tonumber(redis.call('HGET', lure_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'lock_secret' or k == 'orig_lock_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.is_enabled == 0 then\n return redis.status_reply('OK Lure allready disabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('HSET', lure_key, 'is_enabled', 0)\n\n return redis.status_reply('OK Lure disabled')\nend\n\nredis.register_function({\n function_name = 'disable_lure',\n callback = disable_lure,\n description = 'Disable lure',\n})\n\n--[[\n Delete lure\n--]]\nlocal function delete_lure(keys, args)\n if #keys ~= 6 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local campaign_lock_key = keys[2]\n local lure_key = keys[3]\n local lure_paths_key = keys[4]\n local lure_index_key = keys[5]\n local redirector_key = keys[6]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', campaign_lock_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Campaign not locked')\n end\n\n if redis.call('EXISTS', lure_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Lure not exists')\n end\n\n if redis.call('EXISTS', redirector_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Redirector not exists')\n end\n\n local stash = {\n lock_secret = args[1],\n orig_lock_secret = redis.call('GET', campaign_lock_key),\n lure_id = redis.call('HGET', lure_key, 'lure_id'),\n path = redis.call('HGET', lure_key, 'path'),\n redirector_id = redis.call('HGET', lure_key, 'redirector_id'),\n orig_redirector_id = redis.call('HGET', redirector_key, 'redirector_id'),\n is_enabled = tonumber(redis.call('HGET', lure_key, 'is_enabled')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if\n (\n k == 'lock_secret'\n or k == 'orig_lock_secret'\n or k == 'lure_id'\n or k == 'path'\n or k == 'redirector_id'\n or k == 'orig_redirector_id'\n ) and v == ''\n then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.orig_redirector_id ~= stash.redirector_id then\n return redis.status_reply('FORBIDDEN Lure redirector not match')\n end\n\n if stash.is_enabled ~= 0 then\n return redis.status_reply('FORBIDDEN Lure not disabled')\n end\n\n if stash.orig_lock_secret ~= stash.lock_secret then\n return redis.status_reply('FORBIDDEN Campaign lock_secret not match')\n end\n\n -- Point of no return\n\n redis.call('DEL', lure_key)\n\n redis.call('HDEL', lure_paths_key, stash.path)\n\n redis.call('ZREM', lure_index_key, stash.lure_id)\n\n redis.call('HINCRBY', redirector_key, 'lure_count', -1)\n\n return redis.status_reply('OK Lure deleted')\nend\n\nredis.register_function({\n function_name = 'delete_lure',\n callback = delete_lure,\n description = 'Delete lure',\n})\n"
|
|
21
|
+
],
|
|
22
|
+
[
|
|
23
|
+
"6-session.lua",
|
|
24
|
+
"#!lua name=session\n\n--[[\n Create session\n--]]\nlocal function create_session(keys, args)\n if #keys ~= 3 or #args ~= 4 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local session_key = keys[2]\n local enabled_proxy_index_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', session_key) ~= 0 then\n return redis.status_reply('CONFLICT Session allready exists')\n end\n\n local stash = {\n new_session_expire = tonumber(redis.call('HGET', campaign_key, 'new_session_expire')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if k == 'new_session_expire' and v <= 0 then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if redis.call('SCARD', enabled_proxy_index_key) == 0 then\n return redis.status_reply('NOT_FOUND No enabled proxies found')\n end\n\n local model = {\n campaign_id = args[1],\n session_id = args[2],\n proxy_id = redis.call('SRANDMEMBER', enabled_proxy_index_key),\n secret = args[3],\n is_upgraded = 0,\n message_count = 0,\n created_at = tonumber(args[4]),\n authorized_at = tonumber(args[4]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n\n if\n (k == 'campaign_id' or k == 'session_id' or k == 'proxy_id' or k == 'secret')\n and v == ''\n then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', session_key, unpack(store))\n\n redis.call('HINCRBY', campaign_key, 'session_count', 1)\n\n redis.call('PEXPIRE', session_key, stash.new_session_expire)\n\n return redis.status_reply('OK Session created')\nend\n\nredis.register_function({\n function_name = 'create_session',\n callback = create_session,\n description = 'Create session',\n})\n\n--[[\n Read session\n--]]\nlocal function read_session(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local session_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', session_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', session_key,\n 'campaign_id',\n 'session_id',\n 'proxy_id',\n 'secret',\n 'is_upgraded',\n 'message_count',\n 'created_at',\n 'authorized_at'\n )\n\n if #values ~= 8 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n session_id = values[2],\n proxy_id = values[3],\n secret = values[4],\n is_upgraded = tonumber(values[5]),\n message_count = tonumber(values[6]),\n created_at = tonumber(values[7]),\n authorized_at = tonumber(values[8]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_session',\n callback = read_session,\n flags = { 'no-writes' },\n description = 'Read session',\n})\n\n--[[\n Auth session\n--]]\nlocal function auth_session(keys, args)\n if #keys ~= 3 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local session_key = keys[2]\n local enabled_proxy_index_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', session_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Session not exists')\n end\n\n local stash = {\n authorized_at = tonumber(args[1]),\n proxy_id = redis.call('HGET', session_key, 'proxy_id'),\n session_expire = tonumber(redis.call('HGET', campaign_key, 'session_expire')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if k == 'proxy_id' and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if k == 'session_expire' and v <= 0 then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if redis.call('SCARD', enabled_proxy_index_key) == 0 then\n return redis.status_reply('NOT_FOUND No enabled proxies found')\n end\n\n -- Point of no return\n\n if redis.call('SISMEMBER', enabled_proxy_index_key, stash.proxy_id) == 0 then\n local enabled_proxy_id = redis.call('SRANDMEMBER', enabled_proxy_index_key)\n\n if not enabled_proxy_id or enabled_proxy_id == '' then\n return redis.error_reply('ERR Wrong enabled_proxy_id')\n end\n\n -- stylua: ignore\n redis.call(\n 'HSET', session_key,\n 'proxy_id', enabled_proxy_id,\n 'authorized_at', stash.authorized_at\n )\n else\n redis.call('HSET', session_key, 'authorized_at', stash.authorized_at)\n end\n\n redis.call('PEXPIRE', session_key, stash.session_expire)\n\n return redis.status_reply('OK Session authorized')\nend\n\nredis.register_function({\n function_name = 'auth_session',\n callback = auth_session,\n description = 'Auth session',\n})\n\n--[[\n Upgrade session\n--]]\nlocal function upgrade_session(keys, args)\n if #keys ~= 3 or #args ~= 1 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local lure_key = keys[2]\n local session_key = keys[3]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', lure_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Lure not exists')\n end\n\n if redis.call('EXISTS', session_key) ~= 1 then\n return redis.status_reply('FORBIDDEN Session not exists')\n end\n\n local stash = {\n secret = args[1],\n orig_secret = redis.call('HGET', session_key, 'secret'),\n is_upgraded = tonumber(redis.call('HGET', session_key, 'is_upgraded')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if (k == 'secret' or k == 'orig_secret') and v == '' then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n if stash.orig_secret ~= stash.secret then\n return redis.status_reply('FORBIDDEN Session secret not match')\n end\n\n if stash.is_upgraded ~= 0 then\n return redis.status_reply('OK Session allready upgraded')\n end\n\n -- Point of no return\n\n redis.call('HSET', session_key, 'is_upgraded', 1)\n\n redis.call('HINCRBY', lure_key, 'session_count', 1)\n\n return redis.status_reply('OK Session upgraded')\nend\n\nredis.register_function({\n function_name = 'upgrade_session',\n callback = upgrade_session,\n description = 'Upgrade session',\n})\n"
|
|
25
|
+
],
|
|
26
|
+
[
|
|
27
|
+
"7-message.lua",
|
|
28
|
+
"#!lua name=message\n\n--[[\n Create message\n--]]\nlocal function create_message(keys, args)\n if #keys ~= 5 or #args ~= 20 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local message_key = keys[2]\n local proxy_key = keys[3]\n local target_key = keys[4]\n local session_key = keys[5]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', message_key) ~= 0 then\n return redis.status_reply('CONFLICT Message allready exists')\n end\n\n if redis.call('EXISTS', proxy_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Proxy not exists')\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Target not exists')\n end\n\n if redis.call('EXISTS', session_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Session not exists')\n end\n\n local stash = {\n message_expire = tonumber(redis.call('HGET', campaign_key, 'message_expire')),\n }\n\n for k, v in pairs(stash) do\n if not v then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n\n if k == 'message_expire' and v <= 0 then\n return redis.error_reply('ERR Wrong stash.' .. k)\n end\n end\n\n local model = {\n campaign_id = args[1],\n message_id = args[2],\n proxy_id = args[3],\n target_id = args[4],\n session_id = args[5],\n type = args[6],\n method = args[7],\n url = args[8],\n request_headers = args[9],\n request_body = args[10],\n status = tonumber(args[11]),\n response_headers = args[12],\n response_body = args[13],\n connection = args[14],\n payload = args[15],\n errors = args[16],\n analyze = args[17],\n start_time = tonumber(args[18]),\n finish_time = tonumber(args[19]),\n created_at = tonumber(args[20]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n\n if\n (\n k == 'campaign_id'\n or k == 'message_id'\n or k == 'proxy_id'\n or k == 'target_id'\n or k == 'session_id'\n or k == 'type'\n or k == 'method'\n or k == 'url'\n ) and v == ''\n then\n return redis.error_reply('ERR Wrong model.' .. k)\n end\n end\n\n -- Point of no return\n\n local store = {}\n\n for k, v in pairs(model) do\n table.insert(store, k)\n table.insert(store, v)\n end\n\n redis.call('HSET', message_key, unpack(store))\n\n redis.call('HINCRBY', campaign_key, 'message_count', 1)\n redis.call('HINCRBY', proxy_key, 'message_count', 1)\n redis.call('HINCRBY', target_key, 'message_count', 1)\n redis.call('HINCRBY', session_key, 'message_count', 1)\n\n redis.call('PEXPIRE', message_key, stash.message_expire)\n\n return redis.status_reply('OK Message created')\nend\n\nredis.register_function({\n function_name = 'create_message',\n callback = create_message,\n description = 'Create message',\n})\n\n--[[\n Create dummy message\n--]]\nlocal function create_dummy_message(keys, args)\n if #keys ~= 5 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local message_key = keys[2]\n local proxy_key = keys[3]\n local target_key = keys[4]\n local session_key = keys[5]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Campaign not exists')\n end\n\n if redis.call('EXISTS', message_key) ~= 0 then\n return redis.status_reply('CONFLICT Message allready exists')\n end\n\n if redis.call('EXISTS', proxy_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Proxy not exists')\n end\n\n if redis.call('EXISTS', target_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Target not exists')\n end\n\n if redis.call('EXISTS', session_key) ~= 1 then\n return redis.status_reply('NOT_FOUND Session not exists')\n end\n\n -- Point of no return\n\n redis.call('HINCRBY', campaign_key, 'message_count', 1)\n redis.call('HINCRBY', proxy_key, 'message_count', 1)\n redis.call('HINCRBY', target_key, 'message_count', 1)\n redis.call('HINCRBY', session_key, 'message_count', 1)\n\n return redis.status_reply('OK Dummy message created')\nend\n\nredis.register_function({\n function_name = 'create_dummy_message',\n callback = create_dummy_message,\n description = 'Create dummy message',\n})\n\n--[[\n Read message\n--]]\nlocal function read_message(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local message_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', message_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', message_key,\n 'campaign_id',\n 'message_id',\n 'proxy_id',\n 'target_id',\n 'session_id',\n 'type',\n 'method',\n 'url',\n 'status',\n 'analyze',\n 'start_time',\n 'finish_time',\n 'created_at'\n )\n\n if #values ~= 13 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n message_id = values[2],\n proxy_id = values[3],\n target_id = values[4],\n session_id = values[5],\n type = values[6],\n method = values[7],\n url = values[8],\n status = tonumber(values[9]),\n analyze = values[10],\n start_time = tonumber(values[11]),\n finish_time = tonumber(values[12]),\n created_at = tonumber(values[13]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_message',\n callback = read_message,\n flags = { 'no-writes' },\n description = 'Read message',\n})\n\n--[[\n Read full message\n--]]\nlocal function read_full_message(keys, args)\n if #keys ~= 2 or #args ~= 0 then\n return redis.error_reply('ERR Wrong function use')\n end\n\n local campaign_key = keys[1]\n local message_key = keys[2]\n\n if redis.call('EXISTS', campaign_key) ~= 1 then\n return nil\n end\n\n if redis.call('EXISTS', message_key) ~= 1 then\n return nil\n end\n\n -- stylua: ignore\n local values = redis.call(\n 'HMGET', message_key,\n 'campaign_id',\n 'message_id',\n 'proxy_id',\n 'target_id',\n 'session_id',\n 'type',\n 'method',\n 'url',\n 'request_headers',\n 'request_body',\n 'status',\n 'response_headers',\n 'response_body',\n 'connection',\n 'payload',\n 'errors',\n 'analyze',\n 'start_time',\n 'finish_time',\n 'created_at'\n )\n\n if #values ~= 20 then\n return redis.error_reply('ERR Malform values')\n end\n\n local model = {\n campaign_id = values[1],\n message_id = values[2],\n proxy_id = values[3],\n target_id = values[4],\n session_id = values[5],\n type = values[6],\n method = values[7],\n url = values[8],\n request_headers = values[9],\n request_body = values[10],\n status = tonumber(values[11]),\n response_headers = values[12],\n response_body = values[13],\n connection = values[14],\n payload = values[15],\n errors = values[16],\n analyze = values[17],\n start_time = tonumber(values[18]),\n finish_time = tonumber(values[19]),\n created_at = tonumber(values[20]),\n }\n\n for k, v in pairs(model) do\n if not v then\n return redis.error_reply('ERR Malform model.' .. k)\n end\n end\n\n return { map = model }\nend\n\nredis.register_function({\n function_name = 'read_full_message',\n callback = read_full_message,\n flags = { 'no-writes' },\n description = 'Read full message',\n})\n"
|
|
29
|
+
]
|
|
30
|
+
]);
|
|
1456
31
|
//# sourceMappingURL=redis-functions.js.map
|