Check-in [5d006e65c1]
Not logged in
Overview
Comment:Add missing header comments. Escape URI parameters used by the package downloader client. Add 'public' account support to the package downloader client.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 5d006e65c11ca6eee41c99c8b9c053fa21cfd04f
User & Date: mistachkin on 2016-08-21 23:52:06
Other Links: manifest | tags
Context
2016-08-22
00:39
Make it possible for the package downloader client to use different API keys from the package repository client. check-in: 81125bba50 user: mistachkin tags: trunk
2016-08-21
23:52
Add missing header comments. Escape URI parameters used by the package downloader client. Add 'public' account support to the package downloader client. check-in: 5d006e65c1 user: mistachkin tags: trunk
21:16
Add Fossil logout support. check-in: 9b4f8b3fdc user: mistachkin tags: trunk
Changes

Modified client/1.0/pkgd.eagle from [9a9904770b] to [b3945860da].

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
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







-
-
-
+
+
+









-
-
-
+
+
+









-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







    #
    # NOTE: The URI where a login request may be sent.  This should return a
    #       payload containing the necessary HTTP(S) cookie information.
    #
    variable loginUri; # DEFAULT: ${baseUri}/pkgd_login?...

    if {![info exists loginUri]} then {
      set loginUri [string trim {
        ${baseUri}/pkgd_login?name=${userName}&password=${password}
      }]
      set loginUri [appendArgs \
          {${baseUri}/pkgd_login?} {[uriEscape name $userName]} & \
          {[uriEscape password $password]}]
    }

    #
    # NOTE: The URI where a single package file may be found.  This file will
    #       belong to a specific version of one package.
    #
    variable downloadUri; # DEFAULT: ${baseUri}/pkgd_file?...

    if {![info exists downloadUri]} then {
      set downloadUri [string trim {
        ${baseUri}/pkgd_file?download&ci=trunk&filename=${fileName}
      }]
      set downloadUri [appendArgs \
          {${baseUri}/pkgd_file?download&ci=trunk&} \
          {[uriEscape filename $fileName]}]
    }

    #
    # NOTE: The URI where the logout request should be sent.  This should
    #       return a payload indicating that the logout was successful.
    #
    variable logoutUri; # DEFAULT: ${baseUri}/pkgd_logout?...

    if {![info exists logoutUri]} then {
      set logoutUri [string trim {
        ${baseUri}/pkgd_logout?authToken=${authToken}
      }]
      set logoutUri [appendArgs \
          {${baseUri}/pkgd_logout?} {[uriEscape authToken $authToken]}]
    }

    #
    # NOTE: The user name for the public account on the package file server.
    #       If this is an empty string, there is no public account.
    #
    variable publicUserName; # DEFAULT: public

    if {![info exists publicUserName]} then {
      set publicUserName public
    }

    #
    # NOTE: The password associated with the public account on the package
    #       file server.  If this is an empty string, the public account is
    #       disabled.  This is not considered to be a secret; however, it
    #       should not be shared with any person or organization that does
    #       not have access to the package downloader client.
    #
    variable publicPassword; # DEFAULT: X+NlF2obS5tQFKIsf/q345/naqVSGD67Cg

    if {![info exists publicPassword]} then {
      set publicPassword X+NlF2obS5tQFKIsf/q345/naqVSGD67Cg
    }

    #
    # NOTE: The root directory where any persistent packages will be saved.
    #
    variable persistentRootDirectory; # DEFAULT: [getPersistentRootDirectory]

116
117
118
119
120
121
122
















123
124
125
126
127
128
129
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







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







    variable temporaryRootDirectory; # DEFAULT: [getFileTempDirectory PKGD_TEMP]

    if {![info exists temporaryRootDirectory]} then {
      set temporaryRootDirectory \
          [::PackageRepository::getFileTempDirectory PKGD_TEMP]
    }
  }

  #
  # NOTE: This procedure escapes a single name/value pair for use in a URI
  #       query string.  The name argument is the name of the parameter.
  #       The value argument is the value of the parameter.
  #
  proc uriEscape { name value } {
    if {[isEagle]} then {
      return [appendArgs \
          [uri escape uri $name] = [uri escape uri $value]]
    } else {
      package require http 2.0

      return [http::formatQuery $name $value]
    }
  }

  #
  # NOTE: This procedure returns the root directory where any packages that
  #       are downloaded should be saved to permanent storage for subsequent
  #       use.  There are no arguments.
  #
  proc getPersistentRootDirectory {} {
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
225
226
227
228
229
230
231

232
233
234
235
236
237
238







-







  # NOTE: This procedure adds a directory to the auto-path of the specified
  #       language (i.e. native Tcl or Eagle).  The directory will not be
  #       added if it is already present.  The language argument must be the
  #       literal string "eagle" or the literal string "tcl".  The directory
  #       argument is the fully qualified path for the directory to add to
  #       the auto-path.
  #
  # <public>
  proc addToAutoPath { language directory } {
    #
    # NOTE: Add the specified directory to the auto-path if not already
    #       present.
    #
    if {[string length $language] == 0 || $language eq "eagle"} then {
      if {[isEagle]} then {
313
314
315
316
317
318
319



























320
321
322
323
324
325
326
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







      }

      return [eval ::PackageRepository::getFileViaHttp \
          [list $uri] [list 20] [list stdout] [list $quiet] $options]
    }
  }

  #
  # NOTE: This procedure resets the currently configured login cookie, if
  #       any, and then attempts to login using the configured package
  #       repository server API key -OR- using the public access account.
  #       Upon success, it will set the login cookie to the one from the
  #       raw response data.  Upon failure, a script error will be raised.
  #       There are no arguments.
  #
  # <public>
  proc resetCookieAndLoginSimple {} {
    variable publicPassword
    variable publicUserName

    set apiKey [lindex [::PackageRepository::getLookupApiKeys] 0]

    if {[string length $apiKey] > 0} then {
      return [resetCookieAndLogin $apiKey $apiKey]
    }

    if {[string length $publicUserName] > 0 && \
        [string length $publicPassword] > 0} then {
      return [resetCookieAndLogin $publicUserName $publicPassword]
    }

    error "missing API key and no public login credentials configured"
  }

  #
  # NOTE: This procedure resets the currently configured login cookie, if
  #       any, and then attempts to login using the specified user name and
  #       password.  Upon success, it will set the login cookie to the one
  #       from the raw response data.  Upon failure, a script error will be
  #       raised.  The userName argument must be the name of a package file
  #       server user with at least Fossil Check-Out (o) permissions on the
368
369
370
371
372
373
374






375
376
377
378
379
380
381
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451







+
+
+
+
+
+








    #
    # NOTE: Always return an empty string (i.e. and not any response data).
    #
    return ""
  }

  #
  # NOTE: This procedure attempts to logout using the currently configured
  #       login cookie, if any, and then resets the login cookie.  There
  #       are no arguments.  This procedure may raise a script error.
  #
  # <public>
  proc logoutAndResetCookie {} {
    variable baseUri
    variable loginCookie
    variable logoutUri

    #
    # NOTE: Attempt to verify that we are currently logged in.

Modified client/1.0/pkgd.eagle.asc from [f70caddce0] to [b530e69d3b].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJXuhoFAAoJEFAslq9JXcLZ7K4QAJ+GW8T0ge7G7RFt80kaDDxW
wGfmBA8u9feemubV+YQhlUGY6W1lbDaxUeLfbe9noko2Dvv7N6Y/NFnN74zGuhUr
SaZm7L3RXNgyOj2OfBoiHNcfbbcObQewIaewEsIjD2W9uiWzVzLM6V+1T81ho7N0
7k+X1pr74zuoGUh/IwiNFFVR1Rctp4HJJum9rZYWN4hWoGNGKZbtl6Juw4PgdgHY
rbheGqJCcwHNLmnfQV4GaC8a3l2fsria4481G6de9DZwwywraiMsV5ylglxhOmCu
fal/M8CE5CTNcblxW++6BLSG6bUPxEBkvzqyFEQomW5PfMFYLCDnT7GOFploftHF
jjUv4R3n0BLakXRokObngTdzaM5aqtLQ73JLAwaFHZBLlSdzZnb9ryJ6i4BI3wwW
w2rBzPujKXapIUvF/DR2CEQHnKhAUdChPsm+RTmAdGUAViajs2sSOg7Qr15Xu2zm
TzLNZ47icuCM9Id++UjFq7bil8zzhGPh300O70ZDCVzZlqBN/uZ5OEGc4HmXgXwW
VCYytdGX4LB1zT/oN8vUrT0qNnvIrgtotCZlZhfh83Ok7tzjZB77C2N6zCXJIbTh
9Tj+5ROce4mnHeeoKez+Zom0+FqSOO01+LlzoBFfp4+Hxdh66deiVTgVThB7auoH
HyA13sTx8eIBN/RK0fxD
=Jbz/
iQIcBAABCAAGBQJXuj5+AAoJEFAslq9JXcLZNsAQAIa+VRhgp36bvPqQrPfYD1C8
GC5Fh/snmEuiBExAyvavT8vt95jU4pnRvg8eI2dxkLZqm0yWNkkqDFykF5xKlCS3
lIY3M9TjSzwMiH9CoJWHQ/hoid+0Y/zToWCmdASuPJODi+sr0xFM6+2r6mD7VSg9
c0XnFHflAPy9aWlyYTdUgnov7gnUfNLCiaKQa9SOW2SaEBiLDn1vpi+Ld+po4NMn
0Yt3ZBKw1keU725aaqi0S7IcTppM5atw0qFUkT3uS5Cas9R0vpQQQtgRoAnqCvDB
djGuwK0/TFCT1HtzNMwvy/FsZfb1nFRoC8sWV0WHThMKgvmDnli7ioiS8EIqlij6
x1PC4nLa19MyH1j33qF8Hx93Nb4tlwRcm1WvJ3/gZ6SYuZwuV18Z1NH5NZQ5sQxp
L3L08tMu0rox+/BPUkQuPU3+pDCkVjJvVbM53cF9DhyP1GeMuWqG1017ihQKnWJi
5BFDA6zYOADJAUIz66juMW06mXdzQ96XmMU/ekGHrl2qdV49A58y5RuSTSbwTgap
iD2p8YBEIRkP9MHjkL6oWnyiABSsHZ0pL/mTVIaGhINMQdHL9xmxM7nqq6ZS21f1
kmSnEnDRB9MYtymMIQgZbQ4w1dLzoZYGb07o5vMBG1VUAwfCp65Uit3Tgw1keaGK
pm9knYwZgkaINZoPBtZq
=ZTSZ
-----END PGP SIGNATURE-----

Modified client/1.0/pkgd.eagle.harpy from [b6b3c8d503] to [ed02a2b145].

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
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







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>afab66f3-1284-40cc-bd79-85aa722faa85</Id>
  <Id>da5f8db6-4d13-4e31-9c03-44992bc389cf</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-08-21T21:15:42.2568828Z</TimeStamp>
  <TimeStamp>2016-08-21T23:51:06.3496562Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x2c322765603b5278</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/pkgd.eagle.harpy.asc from [dd69a90491] to [bc7dd56d83].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJXuhoIAAoJEFAslq9JXcLZmsQP/i/+vEm99Zmm9k75h9hgKKYb
58jjQ6W+saNBI6QYiG0a0VBBsZeyGKSy8/j5qRpibBU2WHF4Sb/vF/LzWnjhmWcz
htZOqx8phYrxC5rZdBE9b7bcN3l4kJuAAKYJGDmkGY+6PK9reEtdTqdXmXA414S0
WE0p9x+femoEpS8ZXGQvGilz6k8J8jwM8BlEBDs/hM+DGYqnQhQND5aWAAlNs/Oj
6er7yfFBSVb7pYInaB8tEAGFs4r2ugmJ4yOn07YD419E5TZ17OzB0e4kQc82HYA9
ZjLcR/ctCeGVdi0hnNJkpFdsWWEjUrUG0J2WkaAe6hHrmKHPJqJ0I3AdGpi13EXt
mi+cGXtU7pCXyiw+UJebh+64E1FcLJeiq+CtNsCh3bXLEoPNIkuCbIdbv080JcBJ
b4CxfIifp6RVHP8OigvTDYAFlUDne2QxNlsKvmd8Ads4nHQw2jWubz7BDTcmhrkr
gNlTCZ1ytuv0wDrk6EyfsZPgYF4HTjkqQcTBH8JhlOVdZ+RPVMt9hj7oOymN4lfn
EbNPGY37S0ghqzvXi0tHk9PExWn4jq/GBuA9a1q5SCea1FZZaH0pxAr5Q82M3FIW
UxDZN5J3v9jDdOaIM1tThO4jTv5G1V4f0fJsBrjYGdQBLL9I4tImI3/7/GyNORtn
ITO9nMNHBCxbXkN2hkJD
=CEV1
iQIcBAABCAAGBQJXuj6AAAoJEFAslq9JXcLZMNEP/iF15g9gblVqZ9ws17ht48ic
Ydo0ZqgaVSf16Pq8pnecE14bivKEyWua+qwxsrIgum8wimS6YW71xw8PVTcdu88w
nU8Oh32U7DThcIG5arxLucwQ3clETLuQQZQjOagbV9bUtt7ZkJZYMlktizewyf3L
FLLRxk3Rvs6iYIaHH3+MtV1to97HQyphGJOTq9Y/8bWqXkplOgPrShygiDbyCU/0
++OOsvWhHlxDolH4Fmy6XqrzOc+aqOFDALDGzTQaw/yqvY23uSQW6V1Hql+eozBt
Ie2G2h+8kpHJbbOA/1y8aIbtYzbhhQWlvU3NqWfgbWGqx0aGwRiLqCc5RhzHIYE3
+1eZk+rG2QeivKzmyhPCqrIQtPk8tRue5wxaTf9hA/4vaf++lHH/xdr6bp4YwAj0
FcODWWpUS495hGf06piaWfavpCjcicZ1cgTOobl4+0Oi0Ln0bgLDJ3boTWpOV02T
wxRfofk8r9CfGsyYkYqBX/wKpL01nCVsP7EnAgnxbNYcfAw5jfYRPdLI5OdvQp+m
xSyJIcbZNuyjpIF+IEAcpF4P2YbsIWMhe0DYaNKond8VW+lnV+bjGpbWt56NX3Qn
GWF/sfFd0jRNH0YxOS9uMxsan9t3U3fkyLo8LDJA5ABJo8iq4CoKtUUIyHm6JTzY
NnVAWvSsRAnKmtHcMwcH
=JY6F
-----END PGP SIGNATURE-----

Modified client/1.0/pkgr.eagle from [d5661a3c00] to [2dc38da858].

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
60
61
62
63
64
65
66

67
68
69
70
71
72
73







-







    }
  }

  #
  # NOTE: This procedure emits a message to the package repository client
  #       log.  The string argument is the content of the message to emit.
  #
  # <public>
  proc pkgLog { string } {
    catch {
      tclLog [appendArgs [pid] " : " [clock seconds] " : pkgr : " $string]
    }
  }

  #
127
128
129
130
131
132
133

134
135
136
137
138
139
140
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140







+







  }

  #
  # NOTE: This procedure returns the fully qualified name of the directory
  #       where temporary files should be written.  The envVarName argument
  #       is an optional extra environment variable to check (first).
  #
  # <public>
  proc getFileTempDirectory { {envVarName ""} } {
    global env

    if {[string length $envVarName] > 0 && \
        [info exists env($envVarName)]} then {
      return $env($envVarName)
    } elseif {[info exists env(TEMP)]} then {
218
219
220
221
222
223
224

225
226
227
228
229
230
231
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232







+







  #       that is unique to the running process at the current point in
  #       time.  It is used (internally) to avoid name collisions with any
  #       preexisting variables or commands that may be present in the
  #       global namespace.  The paranoia argument represents the relative
  #       level of paranoia required by the caller; the higher this level,
  #       the more uniqueness is required.
  #
  # <public>
  proc getUniqueSuffix { {paranoia 1} } {
    set result [string trim [pid] -]

    if {$paranoia > 0} then {
      append result _ [string trim [clock seconds] -]
    }

239
240
241
242
243
244
245

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262




263
264
265
266
267
268
269
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275







+

















+
+
+
+








  #
  # NOTE: This procedure returns the list of API keys to use when looking
  #       up packages via the package repository server.  An empty list
  #       is returned if no API keys are currently configured.  There are
  #       no arguments.
  #
  # <public>
  proc getLookupApiKeys {} {
    set varName [appendArgs [getLookupVarNamePrefix] api_keys]

    if {[info exists $varName]} then {
      return [set $varName]
    }

    global env
    set varName [string trim $varName :]

    if {[info exists env($varName)]} then {
      return $env($varName)
    }

    return [list]; # NOTE: System default, which is "public-only".
  }

  #
  # NOTE: This procedure returns the base URI for the package repository
  #       server.  There are no arguments.
  #
  proc getLookupBaseUri {} {
    set varName [appendArgs [getLookupVarNamePrefix] base_uri]

    if {[info exists $varName]} then {
      return [set $varName]
    }

1187
1188
1189
1190
1191
1192
1193

1194
1195
1196
1197
1198
1199
1200
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207







+







  #
  # NOTE: This procedure evaluates the package repository client settings
  #       script file, if it exists.  Any script errors raised are not
  #       masked.  The script argument must be the fully qualified path
  #       and file name for the primary package repository client script
  #       file.
  #
  # <public>
  proc maybeReadSettingsFile { script } {
    if {[string length $script] == 0 || \
        ![file exists $script] || ![file isfile $script]} then {
      return
    }

    set fileName [appendArgs \

Modified client/1.0/pkgr.eagle.asc from [a78282fd9e] to [25407fe7f1].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJXuTIZAAoJEFAslq9JXcLZjO4QAKamHSO8HOqCcMvl0aV2+KyK
LqfG7OSsGvC6c0oCingidqBT4OpZwz+osDIZZDuFNAj18/s5S1ZdYwFxkftmS7Xv
STKHplVXYqSEZMN3bITz2f9pr7RBUe5RYAeDRXHV60VGy/HrXSFuLAbXPRAyIHuE
u5egBy53zvFGT6lUkFx9iIamUY7nu1GL+JDPumXxxStlA7fn6NCs00k6rwSb0821
FBpzvIi0XfHmz2o1d3DUkCJ7i58oWMne/+Ac3a7o/NPDcyrdxEcNuxPJ1LbrBIG4
A9Z4QJO4WcRl2Fem24/wSaXfHNBqiIMNuRoKqL+rb7o5/IgLHAdeqGpxgFb+o9Fs
eO4GN3mTXr1CM9IhhUs3JDH9jtTdKASTsL8CaLrmFjvIxIktWdDsaD1rNpZFhNPO
Js37+2z9g2n+VdBoi7cawXRnd/UHaybzv/tmak+pvCCfFXdtVN5D1bh8ceP4PiXC
ZYA+4LudHCWM/YCdqei3YTDaeETTk0D/hhx4IXbrj/4cdvhkMhGEN81UjVQiOmIk
8RQTYbm863oeFwk1Yifgpj3L7kkguKcvHwJ5QfMGjTF32fPGqIO1yz/B+xc7tll0
ul7G5ijYY3TwbVjy03Yda3opqI1c+svCq7I6L6uZ8t2qGl6xo9I3sh6rJI6kkDtG
xl97ugVPDkvXRJJRFVLv
=b3un
iQIcBAABCAAGBQJXuj6DAAoJEFAslq9JXcLZ1KQQAK296xIBrbmz7zuFqiTC56FI
c49vTBv9cx/QVblc4BcOSkc4fh2vxBewwyYBWmFH5GE8EfA1Y48Yrq953XZ3jDlS
Jk4tv7KIBOeJaxGoBlmA767G2D4KnU7K8lQJfO/jeMF+sze0AAhPI7Prwmu3Jjej
w0eCFuQo2rN4wJhjx86V1bWmLqAIfn5ZHmJUOHmAYYINrNhIYupLbYgMV9GtgOhI
ruAo8Ce+F1y5FMreNsTONhIyqGF0uRtQKiHgVuwEHrDqLAcerLFLL5P3dlpOqWn6
qoG/lIGsf+pWHURQQHVjER9C48wGK4fJwl29EqjTpA17+xyFty3clqUiQ6sXaYDW
1iKQuTGttH3ycPlVBDpQ71PDHN1Zmwb5mLo2l+T+cJ3saXDOD7HpaLpTxQKSJkfH
ffdfwLjaeybn1P6oYEL0TBFCa0YGgTu8x5/5BpKzpx2BYzp2bQAP8nN2QO8D8SkT
PxYy613USSQ1Q1WiZchrHwNH59ojMiuTS88A3PdgBDLYD0DPsCYK/TIzaYBvvbzD
R6/sxolugV347P4Sp9aNK3Lrx0OTnL5sbXIRGjfcAp+/ZW6M9+CdDbdz/4uc4Rlv
27sZrAAIiHVepwVGXF7rkCA1LPj6hcf6ef/d3H7N3bnWAWtnfjIOyrkwQfnURe3A
jsewtWb8mB8ml5yb5E7r
=TA6b
-----END PGP SIGNATURE-----

Modified client/1.0/pkgr.eagle.harpy from [5b97a23d9d] to [c7ddac45e3].

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
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







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>42a75fe6-f5d2-40e4-9609-66fefc8ee7d1</Id>
  <Id>18022369-d1a1-4ea4-9951-5b1e22e758af</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-08-21T04:46:30.7500469Z</TimeStamp>
  <TimeStamp>2016-08-21T23:50:34.8643047Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x2c322765603b5278</Key>
  <Signature>
    ignlAnTdsDHOp1RAlpwA64WbsKwB1Ov9HQmWAVufkPHFa0wFhToM2EoKCdHVU5qPBzBR0b/Hka0H
    HgFktYzmKk6MzeWK3Vt0ruHMd012ofszjj8nBMtj5/5kIfEF+WD3K8n+Sh66sefJr/a4DXzk6VYL
    wvaXWkRGTXvbdAQ7k7ZpQMljb68I1G1SHGRWQ/u4mF1ZHW3Pod9MMnQFT5YTuGaJTA/MskJB0mXN
    lUcGOn9Ox9jtVV/P2/98nhlTMHGTtAG6t1XbCyDacj612yqY1A33qCVRihW/5/sUoSQcKVkIdeiE
    YWY2n6jMq4KR4LM4gtV6NY52TOAdYAqD7Nt9Gqo2gMdymuRKaz/FUn3bHk2E+0rxv2PcP6L7UJdu
    3OfgTzW7M3PbuEIM/ZhNpGjx6rO3hAmMaeBQbpcwrTXyKz3tmjn/IIfS+Z0hKl0JSaYsZa6aeSwn
    d6+q9ZK1v7FMj033YMWzYV1OgF/EVMzvesh+QhuL/yhyzH9ay3xwAsyn4aaUrmyRqnWt1JTCCrlZ
    8oHnuwrUmehD/UgABWPrXegBLkgUIb84+pdxQVAU/b8lvbMEUMMZLHT36xRzJFKarAeNgDT/CxSv
    VH4UN8L98xuWzLpZMidf8tmbQxpmVkAviBxLtQ1WO1INNYvOobapIDTB+6vukFCSH4qpbD4fZdI4
    gEFpPl+TyyCT1d2KxWgvlupwqEiJAMgavi5DpDbBjwkjevbyQ7UjJc2TWa/X7SvihHf0Sn947d0U
    Hr5yZynUB3NsdJffdXdccKodAT29U93WZbg1QyG4uNH9oFqyu4efsKV+/zPT54Iy5ix8h+EWaQpj
    ZNIRPbPDouK2ND73Jp7j1GqsIipFnqC2ReZ/ILQbwLyOo15GQKMkzVIGUaNBuwIm8eg5MHoh34ga
    RnQPYWU3UqL6wUFdFftLNEjWAXbR4sP08XZoV/XweEBCIs4ntlIp+frYZ/Kp6rSRZ5Xre4peGpLI
    VWRkLIv7lKrxQFgng9IEALx8wZsnJUPkMA0rze40/ObzenlV0ZSFTeU7Ca2Sv0AAUMhAVfdlMBrs
    4WpYY0Qw3V0lYxb3dnSWNo+0RNFATRNb+1RQBNiBlV4pmiq4kXZSbJg48IBvmZCfQEw4JXRvnC8P
    cbqpRYsTTHXUeSBuXgQ1KX9K40F8seghsFmLPQjMDUmYMwh0Z+HAHK+0O/tik1hIdI2x3c2XdmlQ
    wbaaXIzK0IDk0odQ0QV5O63/X2kYAwNPr4ilaOiNgkbf84SJBi96FgYppUFSkDVxi/aX+RJePbJb
    TxD9QT0hLvDVLISt4d0F+NYe8jRuuyCAkOPbgBte35a014/MXaFsUHDDF8ovIhyvRkkimqsoEg==
    hP98rVM1G3OG3Nr2jHKR7vv/oBTw0TSQmZRCDwUJdMZYG80mnkFk1a42x5HQ5skP5J35HWacl8IW
    X1Jr7xZC+bVVVOwHTI2cUE8qpw6bwGYCYLNuPJu6BmqhuF3NylYp0WoK1pUWfTALnGpWHnJ7dJyk
    IdZ/txSJysXz2b0PmZHs00558/32LTFtPF6TdrsxwXgriqUc3ey5Zk0u1YPhcV2Y/OhD2KF8FAMY
    DKYiuRdih+y05KyAbvfgH9TZT10FfrsSOnIXAhdAAFShQOH3usimf8dumDJ3c7CtZy6K7psCSxd4
    hpkZL1loS4/9zR2Yp4RCvC4PBvdbu1gMO1iyyR+EyANtwlR08FZK8P/FGiMaIXEkqWwYElvJsDDI
    Fr1E92Wv1juc1dFId17XJSdYpLPDHBdkcj5LBvU9xwuVU+lLCvozj7DYlz1/njUsy6fTBYqDFzhU
    RmQk9W13GFWsuzBWvp/hjtMGpO51jLZXrAoH2inQ4Q1uWwGCgf8p2nvXAZFgJ3endruHngEprjwS
    TZX+cBSQFV2jdu7tst43KvMydJMI+braRo1bxZtiA4FKhmxztS9OHJZ5iB8bmq7hulkMnKFH3ZqN
    8SIn+RD7EcFFf8hAuYmcMVpFWVNIeTCi9Olkhk+7dKVosf02R1S7dhidR8st9SNVvmpBCTdQWwmR
    DUd05SD1zmLVj5Q8Be9GuYnwxbVtZEJDsTeHblIYILXdJCxElSOqaIFK+ph4IKIPHo38jtu8FmKM
    4pkMANamePEdmT6CJUd785ESEEaumMvqo6avKn9jjSvMICGD37E00fDM8P0Xm1IsUAOEeEpdSTTJ
    644bIuZaPv2cXSEh55i7eiJEIhOL8yFgp47t2AAN1vLQ5jWY+wTFePL6Mo8ihPuRcNxXVp5Fay2r
    gBaXUpcMxErg02FvorqDhP1uCHczksuHtzrBaQgvn0dtMuIYxt4wKg717r5p8AoBaLElCOqcOrZS
    WkmYc5wRZ5HlsWtgn9gxFDKfL2WfTWsE9XJRjI3N1VflF6AIVWiuHGcfCOjXhrh2CJYoeuY1TH+Q
    kPfhiTmNC5fXVh1nsUgKVnFEDgC4HiP26xE5wlFNsynXXOE3p2V5aZWdiSKF4E9rzUztUHlnTEIH
    BP72QL4Jx1+oHSWajFj3BNpQLhlhmuqKIKK+GyoSJvpdVZcTabtnXkJ2n8fts6r6BP9mtd1Fb8Xi
    1gbsscWfo7PnD5gkERB0Gh4P3naxrd64RsUZ31HFZbwNaz55aip3MlnWtMoIly4ij417PHRyi/4l
    IrNxoVzDzjn4oWIIWSNWbFb+TeaHJMnHVrd2G/yPkB0RcWEBsdgJb7o7lewRWAcf4EzNnT8E4w==
  </Signature>
</Certificate>

Modified client/1.0/pkgr.eagle.harpy.asc from [bce44ba2b6] to [75e3ab8489].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJXuTIyAAoJEFAslq9JXcLZq4gP+gKdXVq96ykZH7BEOGX5381a
EXJr8peAVDJbCha+EmxgfWz55zypltfL/+kaT7oDC0XQcc6xyYEiutIcsnELu4qJ
eMxJYyEAMcuDOmZZ7oBUrDQpKoNImMw9pce8xyzieKQNq/bUhIFKFUFcxN39cEQ+
z62uf62NrH5FavZziu86xABl+nEqX7AoJToh0oe0N93A8kQ+cJ4xGL6cYHpb1Ujm
9i6OfliwD6CILJCDLQItvZdHF63bZe45NPNUeKGDe5YHX4qhaTOLnFzNGxlJ6BNt
FZLPw2NImwsxnRG7Q/enYVWPjgNTOLPyNm9FCIKyNLVm8tp+eNcRkRBBCttbHKaY
NuhPsyaHBRvsCRl7xhYUE3NrkyiIJYk94GUO5O8HZVMlnyj82x9/9XT7CQ4fHd4d
WronhQBCrDdPYxRxjq7zjNXAAXSt64W13sKamLNIVvW71sSTEGzErlA4Vk00zPuD
32CgmWgTiQeGILgt4qIny9a7UJfBuGdZb8U60n/I8UTtyRI3/ELYOe2bB+2uq77N
69jLjaSswCk4/ioi9NWoVc3ffHEYsX9ONic1sDD+9LRlL3Q0JgOMUp4SxpV4kiGZ
GsyRkDjC5TZVrsJDlcWcpeUDnBA0pZyGbLMWYomDUDl4iMKq9haRMZkAxxvMcDVW
79xXsfCePEZgm8iKVETO
=IPf6
iQIcBAABCAAGBQJXuj6FAAoJEFAslq9JXcLZ/dMP/317ZPcU7B//jPQbzx6368dI
8tv4Cz7gfXAQgp4grkWaza5ZOBWqeHrlTo78GIEVwiIUmicdztB9yXKure5mlgVx
YY9AgshHmuzs/wciZ8WtFYFoGov42x0prQzsFrQmFM6sxNd/IMtnkQQv6iR8lMwq
VF3hz0aSSWFmp9g8z0WMY4VpwWnvRPuG8PUJkXXoIdTBL6OQ4tz17BAPMXmYq169
SGqXmey3eNVSxXHsneLMrtIvMsxFx+oa7klAucMwX6+3XQQ2nvz7y99hMmGui/8t
30MFEfNpcu2YPzMVubg/iF2R78v8yywmP1uEQGXiBZnnJ8z7eSYLvKcIh2LsZug4
O66Jhs74vy/PMC+T5lpJeRvZWNih6+d94u3fM5c/uX9xo/HgQ8U2biMVTwUYgkZy
p6s8uqgR7s8pywVihWVddV/NQbhb+pZUxOibo5BJSGa4W0l2EzETdC4MlBCwMLXM
svVQQZmI6VMRNykgVwJfmIt/kUVCnkAFfTf3jsmj9GB2dxbFQ1xJ8Sjtlj1NBm3t
msaDv7UwdM5Wo5YJz1bCYZRPXLUIux97KJnGYIudAeaAvt8BVlUjHQAhJ65hxl19
mVfc8BwBbuTjYPUq6iKux7HOjK2uMRXeIaDJqrhqmhGw6n3/Hsf5+JErATs2KwjU
9fhVQudCHcscFq2RJEsd
=/wc0
-----END PGP SIGNATURE-----