-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgoe_sass.php.txt
More file actions
204 lines (202 loc) · 14.3 KB
/
Copy pathgoe_sass.php.txt
File metadata and controls
204 lines (202 loc) · 14.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# goe_sass v0.1
# Allow use of SASS for CSS output.
# Georg Oechsler
# http://txp.oechsler.de/
# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................
YToxMDp7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMSI7czo2OiJhdXRob3IiO3M6MTQ6Ikdlb3Jn
IE9lY2hzbGVyIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIzOiJodHRwOi8vdHhwLm9lY2hzbGVy
LmRlLyI7czoxMToiZGVzY3JpcHRpb24iO3M6MzM6IkFsbG93IHVzZSBvZiBTQVNTIGZvciBD
U1Mgb3V0cHV0LiI7czo1OiJmbGFncyI7aToyO3M6NDoidHlwZSI7aToxO3M6NDoibmFtZSI7
czo4OiJnb2Vfc2FzcyI7czo0OiJoZWxwIjtzOjMzMDI6Igo8aDE+U2Fzc2lmeSBUZXh0cGF0
dGVybiE8L2gxPgoKPHA+VGhpcyBwbHVnaW4gYWxsb3dzIHRoZSB1c2Ugb2YgPGEgaHJlZj0i
aHR0cDovL3Nhc3MtbGFuZy5jb20vIj5TQVNTPC9hPiBmb3IgQ1NTIHByZXByb2Nlc3NpbmcK
d2l0aGluIHRleHRwYXR0ZXJuLjwvcD4KCjxwPkl0IHdpbGwgY29tcGlsZSB0aGUgU0FTUyBj
b2RlIHlvdSBkZWZpbmUgd2l0aGluIHRoZSByZWd1bGFyIENTUyBzdHlsZSBmb3JtIHRvCnN0
YXRpYyBDU1MgZmlsZXMsIHNlcnZpbmcgaXQgdGhyb3VnaCBhIHRhZyB3aGljaCBpcyBxdWl0
ZSBzaW1pbGFyIHRvIHRoZSB3ZWxsCmtub3duICZsdDt0eHA6Y3NzIC8mZ3Q7IHRhZy48L3A+
Cgo8cD5UaGlzIHBsdWdpbiByZWxpZXMgb24gPGEgaHJlZj0iaHR0cDovL3BocHNhc3MuY29t
LyI+cGhwU0FTUzwvYT4gYW5kIGJvcnJvd3MgY29kZSBmcm9tIHRoZQo8YSBocmVmPSJodHRw
czovL2RydXBhbC5vcmcvcHJvamVjdC9zYXNzeSI+c2Fzc3k8L2E+IG1vZHVsZSBmb3IgRHJ1
cGFsLjwvcD4KCjxwPkl0IHN0YXJ0ZWQgb2ZmIGFzIGEgaGFjayBvZiA8YSBocmVmPSJodHRw
Oi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTM0L3J2bV9jc3MiPnJ2bV9jc3M8L2E+LAp3
aGljaCBjYW4gZG8gc2ltaWxhciB0aGluZ3Mgd2l0aCBMRVNTLiBVbmRlciB0aGUgaG9vZCB5
b3Ugd2lsbCBmaW5kIHRoYXQgaXQgaXMgc3RpbGwKaGVhdmlseSBiYXNlZCBvbiB0aGUgY29k
ZSBvZiB0aGUgZ3JlYXQgPGEgaHJlZj0iaHR0cDovL3Zhbm1lbGljay5jb20vIj5SdXVkIHZh
biBNZWxpY2s8L2E+LjwvcD4KCjxoMj5JbnN0YWxsYXRpb248L2gyPgoKPG9sPgo8bGk+R3Jh
YiBhIGNvcHkgb2YgPGEgaHJlZj0iaHR0cDovL3BocHNhc3MuY29tLyI+UEhQU2FzczwvYT4g
YW5kIHB1dCBpdCBzb21ld2hlcmUgeW91cgp3ZWJzZXJ2ZXIgY2FuIGZpbmQgaXQuIFRoZSBk
ZWZhdWx0IGxvY2F0aW9uIGlzICYjODIxNjt0ZXh0cGF0dGVybi92ZW5kb3IvcGhwc2FzcyYj
ODIxNzsuPC9saT4KPGxpPkNyZWF0ZSBhIGRpcmVjdG9yeSBmb3IgdGhlIHN0YXRpYyBDU1Mg
ZmlsZXMgb24geW91ciB3ZWJzZXJ2ZXIuIFlvdSBzaG91bGQgbWFrZQpzdXJlIHRoYXQgUEhQ
IGlzIGFibGUgdG8gd3JpdGUgdG8gdGhhdCBkaXJlY3RvcnkuIFRoZSBkZWZhdWx0IHBhdGgg
dG8gdGhpcwpkaXJlY3RvcnkgaXMgL2Nzcy48L2xpPgo8bGk+SW5zdGFsbCBhbmQgZW5hYmxl
IHRoZSBwbHVnaW4gbGlrZSBhbnkgb3RoZXIgcGx1Z2luIG91dCB0aGVyZS48L2xpPgo8bGk+
Q2hlY2sgYW5kIGFkanVzdCB0aGUgY29uZmlndXJhdGlvbiB1bmRlciB0aGUgZXh0ZW5zaW9u
cyB0YWIuIEl0IHNoaXBzIHdpdGgKc2FuZSBkZWZhdWx0LiBTZWUgc2VjdGlvbiAmIzgyMjA7
Q29uZmlndXJhdGlvbiYjODIyMTsgZm9yIGRldGFpbHMuPC9saT4KPGxpPklmIHlvdSB3YW50
IHRvIHBsYXkgc2FmZTogUmVzYXZlIGEgQ1NTIHN0eWxlIGRlZmluaXRpb24gZm9ybSBhbmQg
c2VlIGlmIHRoZXJlCmlzIGEgZmlsZSB3cml0dGVuIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5
IHlvdSBoYXZlIGNvbmZpZ3VyZWQgaW4gc3RlcCAyLiBZb3UmIzgyMTc7bGwKbmVlZCB0byBy
ZXNhdmUgYWxsIHlvdXIgc3R5bGUgc2hlZXRzIGFueXdheSB0byBjcmVhdGUgdGhlIHN0YXRp
YyBmaWxlcy48L2xpPgo8bGk+T25jZSB5b3VyIHNldCB5b3UgbWF5IHJlcGxhY2UgYWxsIG9j
Y3VycmVuY2VzIG9mICZsdDt0eHA6Y3NzIC8mZ3Q7IHdpdGgKJmx0O3R4cDpnb2Vfc2FzcyAv
Jmd0Oy48L2xpPgo8L29sPgoKPHA+VGhlICZsdDt0eHA6Z29lX3Nhc3MgLyZndDsgdGFnIHN1
cHBsaWVkIGJ5IHRoaXMgcGx1Z2luIGhhcyB0aGUgZXhhY3Qgc2FtZQphdHRyaWJ1dGVzIGFz
IHRoZSBidWlsdC1pbiAmbHQ7dHhwOmNzcyAvJmd0OyB0YWcgYW5kIGNhbiBiZSB1c2VkIGFz
IGEgZHJvcC1pbgpyZXBsYWNlbWVudC48L3A+Cgo8cD5Ob3RlOiBCZWNhdXNlIG5vdCBhbGwg
Y2hhcmFjdGVycyBhcmUgYWxsb3dlZCBpbiBmaWxlbmFtZXMsIGF2b2lkIHVzaW5nCm5vbi1h
bHBoYW51bWVyaWMgY2hhcmFjdGVycyBpbiBzdHlsZSBzaGVldCBuYW1lcy48L3A+Cgo8aDI+
Q29uZmlndXJhdGlvbjwvaDI+Cgo8cD5UaGVyZSBhcmUgZm91ciBjb25maWd1cmF0aW9uIGl0
ZW1zIGZvciB0aGlzIHBsdWdpbjo8L3A+Cgo8ZGw+CjxkdD5QYXRoIHRvIFBIUFNhc3M8L2R0
Pgo8ZGQ+VGhlIGZpbGVzeXN0ZW0gcGF0aCB0byBQSFBTYXNzLiBUaGlzIGlzIHdoZXJlIHRo
ZSBmaWxlIFNhc3NQYXJzZXIucGhwIHNpdHMgaW4uPC9kZD4KPGRkPmRlZmF1bHQgdmFsdWU6
IFtwYXRoIHRvIHRleHRwYXR0ZXJuIGRpcmVjdG9yeV0gKyB2ZW5kb3IvcGhwc2FzczwvZGQ+
CjwvZGw+Cgo8ZGw+CjxkdD5DU1MgT3V0cHV0IERpcmVjdG9yeTwvZHQ+CjxkZD5UaGUgbG9j
YXRpb24gb2YgdGhlIGNzcyBvdXRwdXQgZGlyZWN0b3J5IHJlbGF0aXZlIHRvIGRvY3VtZW50
IHJvb3QuPC9kZD4KPGRkPmRlZmF1bHQgdmFsdWU6IC9jc3M8L2RkPgo8L2RsPgoKPGRsPgo8
ZHQ+T3V0cHV0IFN0eWxlPC9kdD4KPGRkPlRoZXJlIGFyZSBzZXZlcmFsIG91dHB1dCBzdHls
ZXMgdG8gY2hvb3NlIGZyb20uIENob2ljZSBpcyB5b3Vycy48L2RkPgo8ZGQ+bmVzdGVkOiBF
YWNoIHByb3BlcnR5K3NlbGVjdG9yIHRha2VzIHVwIDEgbGluZSBzZWxlY3RvciBpbmRlbnRh
dGlvbiByZWZsZWN0cyBuZXN0aW5nIGRlcHRoLjwvZGQ+CjxkZD5leHBhbmRlZDogRWFjaCBw
cm9wZXJ0eStzZWxlY3RvciB0YWtlcyB1cCAxIGxpbmUgbm8gc2VsZWN0b3IgaW5kZW50YXRp
b24uPC9kZD4KPGRkPmNvbXBhY3Q6IEVhY2ggc2VsZWN0b3IgdGFrZXMgdXAgMSBsaW5lIHdp
dGggcHJvcGVydGllcyBvbiB0aGUgc2FtZSBsaW5lLiBObyBpbmRlbnRhdGlvbi48L2RkPgo8
ZGQ+Y29tcHJlc3NlZDogQ29tcHJlc3NlZDogQWxtb3N0IG5vIHdoaXRlc3BhY2UgZGVzaWdu
ZWQgdG8gYmUgYXMgc3BhY2UtZWZmaWNpZW50IGFzIHBvc3NpYmxlLjwvZGQ+CjxkZD5kZWZh
dWx0IHZhbHVlOiBuZXN0ZWQ8L2RkPgo8L2RsPgoKPGRsPgo8ZHQ+TGFuZ3VhZ2UgU3ludGF4
PC9kdD4KPGRkPlBIUFNhc3Mgc3VwcG9ydHMgdHdvIHN5bnRheCBvcHRpb25zLjwvZGQ+Cjxk
ZD5zY3NzOiBUaGUgcmVndWxhciAmIzgyMjA7U2Fzc3kgQ1NTJiM4MjIxOyBzdHlsZSB3aGlj
aCBpcyBhIHN1cGVyc2V0IG9mIENTUzMmIzgyMTc7cyBzeW50YXguPC9kZD4KPGRkPnNhc3M6
IFRoZSBvbGRlciBzeW50YXgga25vd24gYXMgdGhlIGluZGVudGVkIHN5bnRheC48L2RkPgo8
ZGQ+ZGVmYXVsdCB2YWx1ZTogc2NzczwvZGQ+CjwvZGw+CjwvZGl2PgoKIjtzOjQ6ImNvZGUi
O3M6Njc1OToiaWYgKHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7CiAgcmVnaXN0ZXJfY2Fs
bGJhY2soJ2dvZV9zYXNzX2Nzc19zYXZlJywgJ2NzcycsICdjc3Nfc2F2ZScpOwogIHJlZ2lz
dGVyX2NhbGxiYWNrKCdnb2Vfc2Fzc19jc3Nfc2F2ZScsICdjc3MnLCAnY3NzX3NhdmVfcG9z
dGVkJyk7CiAgcmVnaXN0ZXJfY2FsbGJhY2soJ2dvZV9zYXNzX2Nzc19zYXZlJywgJ2Nzcycs
ICdkZWxfZGVjJyk7CiAgcmVnaXN0ZXJfY2FsbGJhY2soJ2dvZV9zYXNzX2Nzc19kZWxldGUn
LCAnY3NzJywgJ2Nzc19kZWxldGUnKTsKICByZWdpc3Rlcl9jYWxsYmFjaygnZ29lX3Nhc3Nf
Y2xlYW51cCcsICdwbHVnaW5fbGlmZWN5Y2xlLmdvZV9zYXNzJywgJ2RlbGV0ZWQnKTsKICBy
ZWdpc3Rlcl9jYWxsYmFjaygnZ29lX3Nhc3NfZGVmYXVsdF9wcmVmcycsICdwbHVnaW5fbGlm
ZWN5Y2xlLmdvZV9zYXNzJywgJ2VuYWJsZWQnKTsKICByZWdpc3Rlcl9jYWxsYmFjaygnZ29l
X3Nhc3NfcHJlZnMnLCAncGx1Z2luX3ByZWZzLmdvZV9zYXNzJyk7CgogIC8vIFJlZ2lzdGVy
IGV2ZW50IHNhc3Njb25maWcgd2l0aCBvd24gdGFiIHVuZGVyIGV4dGVuc2lvbnMgYW5kIHJl
c3BlY3RpdmUgY2FsbGJhY2suCiAgYWRkX3ByaXZzKCdnb2Vfc2Fzc19jb25maWcnKTsKICBy
ZWdpc3Rlcl90YWIoJ2V4dGVuc2lvbnMnLCAnZ29lX3Nhc3NfY29uZmlnJywgZ1R4dCgnU0FT
UyBDb25maWd1cmF0aW9uJykpOwogIHJlZ2lzdGVyX2NhbGxiYWNrKCdnb2Vfc2Fzc19jb25m
aWcnLCAnZ29lX3Nhc3NfY29uZmlnJyk7Cn0KCgovKioKICogQ29kZSBmb3IgdGhlIDx0eHA6
Z29lX3Nhc3MgLz4gdGFnLgogKgogKiBCZWhhdmVzIHByZXR0eSBtdWNoIGxpa2UgPHR4cDpj
c3MgLz4gdGFnLCBidXQgbGlua3Mgb3VyIGNvbXBpbGVkIFNBU1Mgb3V0cHV0CiAqIGFzIHN0
YXRpYyBmaWxlcy4KICovCmZ1bmN0aW9uIGdvZV9zYXNzKCRhdHRzKSB7CiAgZ2xvYmFsICR0
eHBfZXJyb3JfY29kZSwgJHMsICRwYXRoX3RvX3NpdGUsICR2ZXJzaW9uOwoKICAkZ29lX3Nh
c3NfY3NzX2RpciA9IGdldF9wcmVmKCdnb2Vfc2Fzc19jc3NfZGlyJyk7CgogIGV4dHJhY3Qo
bEF0dHMoYXJyYXkoCiAgICAnZm9ybWF0JyA9PiAndXJsJywKICAgICdtZWRpYScgID0+ICdz
Y3JlZW4nLAogICAgJ24nICAgICAgPT4gJycsCiAgICAnbmFtZScgICA9PiAnJywKICAgICdy
ZWwnICAgID0+ICdzdHlsZXNoZWV0JywKICAgICd0aXRsZScgID0+ICcnLAogICksICRhdHRz
KSk7CgogIGlmICghJG4gYW5kICEkbmFtZSkgewogICAgaWYgKCRzKSB7CiAgICAgICRuYW1l
ID0gc2FmZV9maWVsZCgnY3NzJywgJ3R4cF9zZWN0aW9uJywgIm5hbWU9JyIuZG9TbGFzaCgk
cykuIiciKTsKICAgIH0KICAgIGVsc2UgewogICAgICAkbmFtZSA9ICdkZWZhdWx0JzsKICAg
IH0KICB9CiAgZWxzZWlmICghJG5hbWUpIHsKICAgICRuYW1lID0gJG47CiAgfQoKICAvLyBE
aXNwb3NlIGxlYWRpbmcgc2xhc2ggb24gJGdvZV9zYXNzX2Nzc19kaXIsIGlmIGFueSwgdG8g
cHJldmVudCBkb3VibGUKICAvLyBzbGFzaGVzIGluIG91dHB1dC4KICAkZ29lX3Nhc3NfY3Nz
X2RpciA9IHByZWdfcmVwbGFjZSgnI14vIycsICcnLCAkZ29lX3Nhc3NfY3NzX2Rpcik7CiAg
JGZpbGUgPSAkZ29lX3Nhc3NfY3NzX2RpciAuICcvJyAuIHN0cnRvbG93ZXIoc2FuaXRpemVG
b3JVcmwoJG5hbWUpKS4nLmNzcyc7CgogIGlmIChlbXB0eSgkZ29lX3Nhc3NfY3NzX2Rpcikg
b3IgIWlzX3JlYWRhYmxlKCRwYXRoX3RvX3NpdGUuJy8nLiRmaWxlKSkgewogICAgaWYgKHZl
cnNpb25fY29tcGFyZSgkdmVyc2lvbiwgJzQuMy4wJywgJz49JykpIHsKICAgICAgdW5zZXQo
JGF0dHNbJ24nXSk7CiAgICAgICRhdHRzWyduYW1lJ10gPSAkbmFtZTsKICAgIH0gZWxzZSB7
CiAgICAgIHVuc2V0KCRhdHRzWyduYW1lJ10pOwogICAgICAkYXR0c1snbiddID0gJG5hbWU7
CiAgICB9CiAgICByZXR1cm4gY3NzKCRhdHRzKTsKICB9CgogIGlmICgkZm9ybWF0ID09ICds
aW5rJykgewogICAgcmV0dXJuICc8bGluayByZWw9IicgLiB0eHBzcGVjaWFsY2hhcnMoJHJl
bCkgLiAnIiB0eXBlPSJ0ZXh0L2NzcyInLgogICAgICAoJG1lZGlhID8gJyBtZWRpYT0iJyAu
IHR4cHNwZWNpYWxjaGFycygkbWVkaWEpIC4gJyInIDogJycpLgogICAgICAoJHRpdGxlID8g
JyB0aXRsZT0iJyAuIHR4cHNwZWNpYWxjaGFycygkdGl0bGUpIC4gJyInIDogJycpLgogICAg
ICAnIGhyZWY9IicgLiBodSAuIHR4cHNwZWNpYWxjaGFycygkZmlsZSkgLiAnIiAvPic7CiAg
fQoKICByZXR1cm4gaHUgLiB0eHBzcGVjaWFsY2hhcnMoJGZpbGUpOwp9CgovKioKICogQ2Fs
bGJhY2sgZm9yIHRoZSAiY3NzX3NhdmUiIGV2ZW50LgogKgogKiBDb21waWxlIFNBU1MgY29k
ZSBmcm9tIGRhdGFiYXNlIGFuZCBzYXZlIGl0IHRvIENTUyBmaWxlcy4KICovCmZ1bmN0aW9u
IGdvZV9zYXNzX2Nzc19zYXZlKCkgewogIGdsb2JhbCAkcGF0aF90b19zaXRlOwoKICAkdmFy
cyA9IGdvZV9zYXNzX3ZhcnMoKTsKICBmb3JlYWNoICgkdmFycyBhcyAkdmFyID0+ICRkYXRh
KSB7CiAgICAkJHZhciA9IGdldF9wcmVmKCR2YXIpOwogIH0KCiAgJG5hbWUgPSAocHMoJ2Nv
cHknKSBvciBwcygnc2F2ZW5ldycpKSA/IHBzKCduZXduYW1lJykgOiBwcygnbmFtZScpOwog
ICRmaWxlbmFtZSA9IHN0cnRvbG93ZXIoc2FuaXRpemVGb3JVcmwoJG5hbWUpKTsKCiAgaWYg
KGVtcHR5KCRnb2Vfc2Fzc19jc3NfZGlyKSBvciAhJGZpbGVuYW1lKSB7CiAgICByZXR1cm47
CiAgfQoKICAkY3NzID0gc2FmZV9maWVsZCgnY3NzJywgJ3R4cF9jc3MnLCAibmFtZT0nIi5k
b1NsYXNoKCRuYW1lKS4iJyIpOwoKICBpZiAoJGNzcykgewogICAgaWYgKHByZWdfbWF0Y2go
JyFeW2EtekEtWjAtOS8rXSo9ezAsMn0kIScsICRjc3MpKSB7CiAgICAgICRjc3MgPSBiYXNl
NjRfZGVjb2RlKCRjc3MpOwogICAgfQoKICAgICRsaWJyYXJ5ID0gJGdvZV9zYXNzX3BhdGgg
LiAnL1Nhc3NQYXJzZXIucGhwJzsKICAgICR0ZW1wbGF0ZV9kaXIgPSAkcGF0aF90b19zaXRl
IC4gJGdvZV9zYXNzX2Nzc19kaXIgLiAnL3Nhc3MtdGVtcGxhdGVzJzsKCiAgICBpZiAoZmls
ZV9leGlzdHMoJGxpYnJhcnkpKSB7CiAgICAgIHRyeSB7CiAgICAgICAgcmVxdWlyZV9vbmNl
ICgkbGlicmFyeSk7CgogICAgICAgICRvcHRpb25zID0gYXJyYXkoCiAgICAgICAgICAnZGVi
dWcnID0+IFRSVUUsCiAgICAgICAgICAnc3ludGF4JyA9PiAkZ29lX3Nhc3Nfc3R5bGUsCiAg
ICAgICAgICAnc3R5bGUnID0+ICRnb2Vfc2Fzc19zdHlsZSwKICAgICAgICAgICdsb2FkX3Bh
dGhzJyA9PiBhcnJheSgkdGVtcGxhdGVfZGlyKSwKICAgICAgICApOwoKICAgICAgICAkcGFy
c2VyID0gbmV3IFNhc3NQYXJzZXIoJG9wdGlvbnMpOwogICAgICAgICRjc3MgPSAkcGFyc2Vy
LT50b0NzcygkY3NzLCBmYWxzZSk7CiAgICAgIH0KICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiAk
ZSkgewogICAgICAgIHByaW50ICI8c2NyaXB0PmFsZXJ0KCdTQVNTIEVycm9yOiAiIC4gcHJl
Z19yZXBsYWNlKCcvXG4vJywgJyAnLCAkZS0+Z2V0TWVzc2FnZSgpKSAuICInKTs8L3Njcmlw
dD4iOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogICAgJGZpbGUgPSAkcGF0aF90
b19zaXRlIC4gJy8nIC4gJGdvZV9zYXNzX2Nzc19kaXIgLiAnLycgLiAkZmlsZW5hbWUgLiAn
LmNzcyc7CiAgICAkaGFuZGxlID0gZm9wZW4oJGZpbGUsICd3YicpOwogICAgZndyaXRlKCRo
YW5kbGUsICRjc3MpOwogICAgZmNsb3NlKCRoYW5kbGUpOwogICAgY2htb2QoJGZpbGUsIDA2
NDQpOwoKICB9Cn0KCgovKioKICogQ2FsbGJhY2sgZm9yIHRoZSAiY3NzIiBldmVudC4KICog
VHJpZ2dlcmVkIHdoZW4gY3NzIGlzIGRlbGV0ZWQuCiAqCiAqIFVubGluayBjb21waWxlZCBj
c3MgZmlsZXMuCiAqLwpmdW5jdGlvbiBnb2Vfc2Fzc19jc3NfZGVsZXRlKCkKewogIGdsb2Jh
bCAkcGF0aF90b19zaXRlOwoKICAkZ29lX3Nhc3NfY3NzX2RpciA9IGdldF9wcmVmKCdnb2Vf
c2Fzc19jc3NfZGlyJyk7CgogIGlmIChzYWZlX2ZpZWxkKCdjc3MnLCAndHhwX2NzcycsICJu
YW1lPSciLmRvU2xhc2gocHMoJ25hbWUnKSkuIiciKSkgewogICAgcmV0dXJuOwogIH0KCiAg
JG5hbWUgPSBzdHJ0b2xvd2VyKHNhbml0aXplRm9yVXJsKHBzKCduYW1lJykpKTsKICAkZmls
ZSA9ICRwYXRoX3RvX3NpdGUgLiAkZ29lX3Nhc3NfY3NzX2RpciAuICcvJyAuICRuYW1lOwoK
ICBpZiAoIWVtcHR5KCRnb2Vfc2Fzc19jc3NfZGlyKSBhbmQgJG5hbWUpIHsKICAgIHVubGlu
aygkZmlsZS4nLmNzcycpOwogIH0KfQoKLyoqCiAqIEhlbHBlciByZXR1cm5pbmcgY29uZmln
dXJhdGlvbiB2YXJpYWJsZSBkYXRhLgogKi8KZnVuY3Rpb24gZ29lX3Nhc3NfdmFycygpIHsK
ICBnbG9iYWwgJHBhdGhfdG9fc2l0ZTsKCiAgcmV0dXJuIGFycmF5KAogICAgJ2dvZV9zYXNz
X3BhdGgnID0+IGFycmF5KAogICAgICAndGl0bGUnID0+ICdQYXRoIHRvIFBIUFNhc3MnLAog
ICAgICAnZGVmYXVsdCcgPT4gdHhwYXRoIC4gJy92ZW5kb3IvcGhwc2FzcycsCiAgICApLAog
ICAgJ2dvZV9zYXNzX2Nzc19kaXInID0+IGFycmF5KAogICAgICAndGl0bGUnID0+ICdDU1Mg
T3V0cHV0IERpcmVjdG9yeScsCiAgICAgICdkZWZhdWx0JyA9PiAnL2NzcycsCiAgICApLAog
ICAgJ2dvZV9zYXNzX3N0eWxlJyA9PiBhcnJheSgKICAgICAgJ3RpdGxlJyA9PiAnT3V0cHV0
IFN0eWxlJywKICAgICAgJ2RlZmF1bHQnID0+ICduZXN0ZWQnLAogICAgKSwKICAgICdnb2Vf
c2Fzc19zeW50YXgnID0+IGFycmF5KAogICAgICAndGl0bGUnID0+ICdMYW5ndWFnZSBTeW50
YXgnLAogICAgICAnZGVmYXVsdCcgPT4gJ3Njc3MnLAogICAgKSwKICApOwp9CgovKioKICog
Q2FsbGJhY2sgZm9yIHRoZSAicGx1Z2luX2xpZmVjeWNsZSIgZXZlbnQuCiAqIFRyaWdnZXJl
ZCB3aGVuIHRoZSBwbHVnaW4gaXMgZGVsZXRlZC4KICoKICogRGlzcG9zZSBjb25maWcgdmFy
aWFibGVzLgogKi8KZnVuY3Rpb24gZ29lX3Nhc3NfY2xlYW51cCgkZXZlbnQsICRzdGVwKSB7
CiAgJHZhcnMgPSBnb2Vfc2Fzc192YXJzKCk7CgogIC8vRGVsZXRlIGNvbmZpZyB2YXJpYWJs
ZXMuCiAgZm9yZWFjaCAoYXJyYXlfa2V5cygkdmFycykgYXMgJHZhcikgewogICAgc2FmZV9k
ZWxldGUoJ3R4cF9wcmVmcycsICJuYW1lPSckdmFyJyIpOwogIH0KfQoKLyoqCiAqIENhbGxi
YWNrIGZvciB0aGUgImdvZV9zYXNzX2NvbmZpZyIgZXZlbnQuCiAqCiAqIFNob3cgYW5kIHBy
b2Nlc3MgY29uZmlndXJhdGlvbiBmb3JtLgogKi8KZnVuY3Rpb24gZ29lX3Nhc3NfY29uZmln
KCRldmVudCwgJHN0ZXApIHsKCiAgaW5jbHVkZSh0eHBhdGggLiAnL2luY2x1ZGUvdHhwX3By
ZWZzLnBocCcpOwoKICAkdmFycyA9IGdvZV9zYXNzX3ZhcnMoKTsKCiAgLy8gUmVhZCB2YWx1
ZSBmcm9tIGRhdGFiYXNlIG9yIHVzZSBkZWZhdWx0cwogIGZvcmVhY2ggKCR2YXJzIGFzICR2
YXIgPT4gJGRhdGEpIHsKICAgICQkdmFyID0gZ2V0X3ByZWYoJHZhcik7CgogICAgaWYgKCEg
JCR2YXIpIHsKICAgICAgc2V0X3ByZWYoJHZhciwgJGRhdGFbJ2RlZmF1bHQnXSk7CiAgICAg
ICQkdmFyID0gJGRhdGFbJ2RlZmF1bHQnXTsKICAgIH0KICB9CgogIC8vIFNhdmUgdmFsdWVz
IGlmIGZvcm0gd2FzIHN1Ym1pdHRlZAogIGlmIChncHMoInN1Ym1pdCIpKSB7CiAgICBmb3Jl
YWNoIChhcnJheV9rZXlzKCR2YXJzKSBhcyAkdmFyKSB7CiAgICAgIHNldF9wcmVmKCR2YXIs
IGFkZHNsYXNoZXMocHMoJHZhcikpKTsKICAgIH0KICAgIGhlYWRlcigiTG9jYXRpb246IGlu
ZGV4LnBocD9ldmVudD1nb2Vfc2Fzc19jb25maWciKTsKICB9CgogIC8vIE91dHB1dCBmb3Jt
CiAgJHNhc3NDb25maWdUeHQgPSBnVHh0KCJTQVNTIENvbmZpZ3VyYXRpb24iKTsKICBwYWdl
dG9wKCRzYXNzQ29uZmlnVHh0KTsKCiAgJHRkYVN0eWxlID0gJyBzdHlsZT0idGV4dC1hbGln
bjpyaWdodDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiJzsKICAkZm9ybSA9IHN0YXJ0VGFibGUo
Imxpc3QiKSAuIHRyKHRkY3MoaGVkKCRzYXNzQ29uZmlnVHh0LDEpLDIpKTsKCiAgZm9yZWFj
aCAoJHZhcnMgYXMgJHZhciA9PiAkZGF0YSkgewogICAgJGZvcm0gLj0gdHIodGRhKGdUeHQo
JGRhdGFbJ3RpdGxlJ10pLCAkdGRhU3R5bGUpIC4gdGRhKHRleHRfaW5wdXQoJHZhciwgJCR2
YXIsICc0MCcpLCAnJykpOwogIH0KCiAgJGZvcm0gLj0gdHIodGRhKGdyYWYoZklucHV0KCJz
dWJtaXQiLCJzdWJtaXQiLCBnVHh0KCJTdWJtaXQiKSwgInB1Ymxpc2giKSksICcgY29sc3Bh
bj0iMiInKSk7CiAgJGZvcm0gLj0gZUlucHV0KCJnb2Vfc2Fzc19jb25maWciKTsKICAkZm9y
bSAuPSBlbmRUYWJsZSgpOwoKICBlY2hvIGZvcm0oJGZvcm0pOwp9CgovKioKICogQ2FsbGJh
Y2sgZm9yIHRoZSAicGx1Z2luX2xpZmVjeWNsZSIgZXZlbnQuCiAqIFRyaWdnZXJlZCB3aGVu
IHRoZSBwbHVnaW4gaXMgZW5hYmxlZC4KICoKICogU2V0dXAgZGVmYXVsdCBjb25maWcgdmFy
aWFibGVzLgogKi8KZnVuY3Rpb24gZ29lX3Nhc3NfZGVmYXVsdF9wcmVmcygkZXZlbnQsICRz
dGVwKSB7CgogICR2YXJzID0gZ29lX3Nhc3NfdmFycygpOwoKICAvLyBJZiB2YXJpYWJsZXMg
YXJlIG5vdCBzZXQgb3IgZW1wdHkgd3JpdGUgZGVmYXVsdCB2YWx1ZXMuCiAgZm9yZWFjaCAo
JHZhcnMgYXMgJHZhciA9PiAkZGF0YSkgewogICAgJCR2YXIgPSBnZXRfcHJlZigkdmFyKTsK
CiAgICBpZiAoISAkJHZhcikgewogICAgICBzZXRfcHJlZigkdmFyLCAkZGF0YVsnZGVmYXVs
dCddKTsKICAgIH0KICB9Cn0KIjtzOjM6Im1kNSI7czozMjoiNzBlNThkYmEwYjFmZTBjYTQz
ODMzMWFiZjBlNjMwOTAiO30=