bin/142526: [patch] Cleanups and updates to newfs_msdos(8)

Pedro F. Giffuni giffunip at tutopia.com
Thu Jan 14 22:00:09 UTC 2010


The following reply was made to PR bin/142526; it has been noted by GNATS.

From: "Pedro F. Giffuni" <giffunip at tutopia.com>
To: bug-followup at freebsd.org, David Naylor <naylor.b.david at gmail.com>
Cc:  
Subject: Re: bin/142526: [patch] Cleanups and updates to newfs_msdos(8)
Date: Thu, 14 Jan 2010 13:52:34 -0800 (PST)

 --0-550664387-1263505954=:34069
 Content-Type: text/plain; charset=us-ascii
 
 I integrated the changes into my WIP, thanks!
 
 I now renamed the struct fields to match what is found in the
 msdosfs headers. We could replace a couple of those fields with
 bpb.h and bootsect.h but there are missing fields in newfs so I
 will defer that for later.
 
 
 
 
       
 --0-550664387-1263505954=:34069
 Content-Type: application/octet-stream; name=patch-newfs_msdos
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename=patch-newfs_msdos
 
 ZGlmZiAtcnUgbmV3ZnNfbXNkb3Mub3JpZy9uZXdmc19tc2Rvcy44IG5ld2Zz
 X21zZG9zL25ld2ZzX21zZG9zLjgKLS0tIG5ld2ZzX21zZG9zLm9yaWcvbmV3
 ZnNfbXNkb3MuOAkyMDEwLTAxLTA2IDExOjA2OjAyLjAwMDAwMDAwMCArMDAw
 MAorKysgbmV3ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuOAkyMDEwLTAxLTE0IDEz
 OjMyOjI1LjAwMDAwMDAwMCArMDAwMApAQCAtMTE2LDcgKzExNiw3IEBACiAu
 SXQgRmwgUyBBciBzZWN0b3Itc2l6ZQogTnVtYmVyIG9mIGJ5dGVzIHBlciBz
 ZWN0b3IuCiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgcG93ZXJzIG9mIDIKLWlu
 IHRoZSByYW5nZSAxMjggdGhyb3VnaCAzMjc2OC4KK2luIHRoZSByYW5nZSA1
 MTIgdGhyb3VnaCAzMjc2OC4KIC5JdCBGbCBhIEFyIEZBVC1zaXplCiBOdW1i
 ZXIgb2Ygc2VjdG9ycyBwZXIgRkFULgogLkl0IEZsIGIgQXIgYmxvY2stc2l6
 ZQpkaWZmIC1ydSBuZXdmc19tc2Rvcy5vcmlnL25ld2ZzX21zZG9zLmMgbmV3
 ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuYwotLS0gbmV3ZnNfbXNkb3Mub3JpZy9u
 ZXdmc19tc2Rvcy5jCTIwMTAtMDEtMDYgMTE6MDY6MDIuMDAwMDAwMDAwICsw
 MDAwCisrKyBuZXdmc19tc2Rvcy9uZXdmc19tc2Rvcy5jCTIwMTAtMDEtMTQg
 MTY6NDI6MzEuMDAwMDAwMDAwICswMDAwCkBAIC01NSw2ICs1NSw3IEBACiAj
 ZGVmaW5lIE5QQgkgIDIJCS8qIG5pYmJsZXMgcGVyIGJ5dGUgKi8KIAogI2Rl
 ZmluZSBET1NNQUdJQyAgMHhhYTU1CS8qIERPUyBtYWdpYyBudW1iZXIgKi8K
 KyNkZWZpbmUgTUFYQlBTCSAgNDA5NgkJLyogbWF4aW11bSBieXRlcyBwZXIg
 c2VjdG9yICovCiAjZGVmaW5lIE1JTkJQUwkgIDUxMgkJLyogbWluaW11bSBi
 eXRlcyBwZXIgc2VjdG9yICovCiAjZGVmaW5lIE1BWFNQQwkgIDEyOAkJLyog
 bWF4aW11bSBzZWN0b3JzIHBlciBjbHVzdGVyICovCiAjZGVmaW5lIE1BWE5G
 VAkgIDE2CQkvKiBtYXhpbXVtIG51bWJlciBvZiBGQVRzICovCkBAIC02Miwx
 MiArNjMsMTIgQEAKICNkZWZpbmUgREVGQkxLMTYgIDIwNDgJCS8qIGRlZmF1
 bHQgYmxvY2sgc2l6ZSBGQVQxNiAqLwogI2RlZmluZSBERUZSREUJICA1MTIJ
 CS8qIGRlZmF1bHQgcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwogI2RlZmlu
 ZSBSRVNGVEUJICAyCQkvKiByZXNlcnZlZCBGQVQgZW50cmllcyAqLwotI2Rl
 ZmluZSBNSU5DTFMxMiAgMQkJLyogbWluaW11bSBGQVQxMiBjbHVzdGVycyAq
 LwotI2RlZmluZSBNSU5DTFMxNiAgMHgxMDAwCS8qIG1pbmltdW0gRkFUMTYg
 Y2x1c3RlcnMgKi8KLSNkZWZpbmUgTUlOQ0xTMzIgIDIJCS8qIG1pbmltdW0g
 RkFUMzIgY2x1c3RlcnMgKi8KLSNkZWZpbmUgTUFYQ0xTMTIgIDB4ZmVkIAkv
 KiBtYXhpbXVtIEZBVDEyIGNsdXN0ZXJzICovCi0jZGVmaW5lIE1BWENMUzE2
 ICAweGZmZjUJLyogbWF4aW11bSBGQVQxNiBjbHVzdGVycyAqLwotI2RlZmlu
 ZSBNQVhDTFMzMiAgMHhmZmZmZmY1CS8qIG1heGltdW0gRkFUMzIgY2x1c3Rl
 cnMgKi8KKyNkZWZpbmUgTUlOQ0xTMTIgIDF1CQkvKiBtaW5pbXVtIEZBVDEy
 IGNsdXN0ZXJzICovCisjZGVmaW5lIE1JTkNMUzE2ICAweDEwMDB1CS8qIG1p
 bmltdW0gRkFUMTYgY2x1c3RlcnMgKi8KKyNkZWZpbmUgTUlOQ0xTMzIgIDJ1
 CQkvKiBtaW5pbXVtIEZBVDMyIGNsdXN0ZXJzICovCisjZGVmaW5lIE1BWENM
 UzEyICAweGZlZHUgCS8qIG1heGltdW0gRkFUMTIgY2x1c3RlcnMgKi8KKyNk
 ZWZpbmUgTUFYQ0xTMTYgIDB4ZmZmNXUJLyogbWF4aW11bSBGQVQxNiBjbHVz
 dGVycyAqLworI2RlZmluZSBNQVhDTFMzMiAgMHhmZmZmZmY1dQkvKiBtYXhp
 bXVtIEZBVDMyIGNsdXN0ZXJzICovCiAKICNkZWZpbmUgbWluY2xzKGZhdCkg
 ICgoZmF0KSA9PSAxMiA/IE1JTkNMUzEyIDoJXAogCQkgICAgICAoZmF0KSA9
 PSAxNiA/IE1JTkNMUzE2IDoJXApAQCAtOTYsMjMgKzk3LDIzIEBACiAjZGVm
 aW5lIGFyZ3RveChhcmcsIGxvLCBtc2cpICBhcmd0b3UoYXJnLCBsbywgVUlO
 VF9NQVgsIG1zZykKIAogc3RydWN0IGJzIHsKLSAgICB1X2ludDhfdCBqbXBb
 M107CQkvKiBib290c3RyYXAgZW50cnkgcG9pbnQgKi8KLSAgICB1X2ludDhf
 dCBvZW1bOF07CQkvKiBPRU0gbmFtZSBhbmQgdmVyc2lvbiAqLworICAgIHVf
 aW50OF90IGJzSnVtcFszXTsJCS8qIGJvb3RzdHJhcCBlbnRyeSBwb2ludCAq
 LworICAgIHVfaW50OF90IGJzT2VtTmFtZVs4XTsJCS8qIE9FTSBuYW1lIGFu
 ZCB2ZXJzaW9uICovCiB9OwogCiBzdHJ1Y3QgYnNicGIgewotICAgIHVfaW50
 OF90IGJwc1syXTsJCS8qIGJ5dGVzIHBlciBzZWN0b3IgKi8KLSAgICB1X2lu
 dDhfdCBzcGM7CQkvKiBzZWN0b3JzIHBlciBjbHVzdGVyICovCi0gICAgdV9p
 bnQ4X3QgcmVzWzJdOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLwotICAgIHVf
 aW50OF90IG5mdDsJCS8qIG51bWJlciBvZiBGQVRzICovCi0gICAgdV9pbnQ4
 X3QgcmRlWzJdOwkJLyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwotICAg
 IHVfaW50OF90IHNlY1syXTsJCS8qIHRvdGFsIHNlY3RvcnMgKi8KLSAgICB1
 X2ludDhfdCBtaWQ7CQkvKiBtZWRpYSBkZXNjcmlwdG9yICovCi0gICAgdV9p
 bnQ4X3Qgc3BmWzJdOwkJLyogc2VjdG9ycyBwZXIgRkFUICovCi0gICAgdV9p
 bnQ4X3Qgc3B0WzJdOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8KLSAgICB1
 X2ludDhfdCBoZHNbMl07CQkvKiBkcml2ZSBoZWFkcyAqLwotICAgIHVfaW50
 OF90IGhpZFs0XTsJCS8qIGhpZGRlbiBzZWN0b3JzICovCi0gICAgdV9pbnQ4
 X3QgYnNlY1s0XTsJCS8qIGJpZyB0b3RhbCBzZWN0b3JzICovCisgICAgdV9p
 bnQ4X3QgYnBiQnl0ZXNQZXJTZWNbMl07CQkvKiBieXRlcyBwZXIgc2VjdG9y
 ICovCisgICAgdV9pbnQ4X3QgYnBiU2VjUGVyQ2x1c3Q7CQkvKiBzZWN0b3Jz
 IHBlciBjbHVzdGVyICovCisgICAgdV9pbnQ4X3QgYnBiUmVzU2VjdG9yc1sy
 XTsJCS8qIHJlc2VydmVkIHNlY3RvcnMgKi8KKyAgICB1X2ludDhfdCBicGJG
 QVRzOwkJCS8qIG51bWJlciBvZiBGQVRzICovCisgICAgdV9pbnQ4X3QgYnBi
 Um9vdERpckVudHNbMl07CQkvKiByb290IGRpcmVjdG9yeSBlbnRyaWVzICov
 CisgICAgdV9pbnQ4X3QgYnBiU2VjdG9yc1syXTsJCS8qIHRvdGFsIHNlY3Rv
 cnMgKi8KKyAgICB1X2ludDhfdCBicGJNZWRpYTsJCQkvKiBtZWRpYSBkZXNj
 cmlwdG9yICovCisgICAgdV9pbnQ4X3QgYnBiRkFUc2Vjc1syXTsJCS8qIHNl
 Y3RvcnMgcGVyIEZBVCAqLworICAgIHVfaW50OF90IGJwYlNlY1BlclRyYWNr
 WzJdOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8KKyAgICB1X2ludDhfdCBi
 cGJIZWFkc1syXTsJCS8qIGRyaXZlIGhlYWRzICovCisgICAgdV9pbnQ4X3Qg
 YnBiSGlkZGVuU2Vjc1s0XTsJCS8qIGhpZGRlbiBzZWN0b3JzICovCisgICAg
 dV9pbnQ4X3QgYnBiSHVnZVNlY3RvcnNbNF07CQkvKiBiaWcgdG90YWwgc2Vj
 dG9ycyAqLwogfTsKIAogc3RydWN0IGJzeGJwYiB7CkBAIC0xMjIsMTYgKzEy
 MywxNiBAQAogICAgIHVfaW50OF90IHJkY2xbNF07CQkvKiByb290IGRpcmVj
 dG9yeSBzdGFydCBjbHVzdGVyICovCiAgICAgdV9pbnQ4X3QgaW5mc1syXTsJ
 CS8qIGZpbGUgc3lzdGVtIGluZm8gc2VjdG9yICovCiAgICAgdV9pbnQ4X3Qg
 Ymtic1syXTsJCS8qIGJhY2t1cCBib290IHNlY3RvciAqLwotICAgIHVfaW50
 OF90IHJzdmRbMTJdOwkJLyogcmVzZXJ2ZWQgKi8KKyAgICB1X2ludDhfdCBy
 c3ZkWzEyXTsJCQkvKiByZXNlcnZlZCAqLwogfTsKIAogc3RydWN0IGJzeCB7
 Ci0gICAgdV9pbnQ4X3QgZHJ2OwkJLyogZHJpdmUgbnVtYmVyICovCi0gICAg
 dV9pbnQ4X3QgcnN2ZDsJCS8qIHJlc2VydmVkICovCi0gICAgdV9pbnQ4X3Qg
 c2lnOwkJLyogZXh0ZW5kZWQgYm9vdCBzaWduYXR1cmUgKi8KLSAgICB1X2lu
 dDhfdCB2b2xpZFs0XTsJCS8qIHZvbHVtZSBJRCBudW1iZXIgKi8KLSAgICB1
 X2ludDhfdCBsYWJlbFsxMV07IAkvKiB2b2x1bWUgbGFiZWwgKi8KLSAgICB1
 X2ludDhfdCB0eXBlWzhdOwkJLyogZmlsZSBzeXN0ZW0gdHlwZSAqLworICAg
 IHVfaW50OF90IGV4RHJpdmVOdW1iZXI7CQkvKiBkcml2ZSBudW1iZXIgKi8K
 KyAgICB1X2ludDhfdCBleFJlc2VydmVkMTsJCS8qIHJlc2VydmVkICovCisg
 ICAgdV9pbnQ4X3QgZXhCb290U2lnbmF0dXJlOwkJLyogZXh0ZW5kZWQgYm9v
 dCBzaWduYXR1cmUgKi8KKyAgICB1X2ludDhfdCBleFZvbHVtZUlEWzRdOwkJ
 Lyogdm9sdW1lIElEIG51bWJlciAqLworICAgIHVfaW50OF90IGV4Vm9sdW1l
 TGFiZWxbMTFdOyAJLyogdm9sdW1lIGxhYmVsICovCisgICAgdV9pbnQ4X3Qg
 ZXhGaWxlU3lzVHlwZVs4XTsJCS8qIGZpbGUgc3lzdGVtIHR5cGUgKi8KIH07
 CiAKIHN0cnVjdCBkZSB7CkBAIC0xNDUsNDAgKzE0Niw0NCBAQAogfTsKIAog
 c3RydWN0IGJwYiB7Ci0gICAgdV9pbnQgYnBzOwkJCS8qIGJ5dGVzIHBlciBz
 ZWN0b3IgKi8KLSAgICB1X2ludCBzcGM7CQkJLyogc2VjdG9ycyBwZXIgY2x1
 c3RlciAqLwotICAgIHVfaW50IHJlczsJCQkvKiByZXNlcnZlZCBzZWN0b3Jz
 ICovCi0gICAgdV9pbnQgbmZ0OwkJCS8qIG51bWJlciBvZiBGQVRzICovCi0g
 ICAgdV9pbnQgcmRlOwkJCS8qIHJvb3QgZGlyZWN0b3J5IGVudHJpZXMgKi8K
 LSAgICB1X2ludCBzZWM7CQkJLyogdG90YWwgc2VjdG9ycyAqLwotICAgIHVf
 aW50IG1pZDsJCQkvKiBtZWRpYSBkZXNjcmlwdG9yICovCi0gICAgdV9pbnQg
 c3BmOwkJCS8qIHNlY3RvcnMgcGVyIEZBVCAqLwotICAgIHVfaW50IHNwdDsJ
 CQkvKiBzZWN0b3JzIHBlciB0cmFjayAqLwotICAgIHVfaW50IGhkczsJCQkv
 KiBkcml2ZSBoZWFkcyAqLwotICAgIHVfaW50IGhpZDsJCQkvKiBoaWRkZW4g
 c2VjdG9ycyAqLwotICAgIHVfaW50IGJzZWM7IAkJLyogYmlnIHRvdGFsIHNl
 Y3RvcnMgKi8KLSAgICB1X2ludCBic3BmOyAJCS8qIGJpZyBzZWN0b3JzIHBl
 ciBGQVQgKi8KLSAgICB1X2ludCByZGNsOyAJCS8qIHJvb3QgZGlyZWN0b3J5
 IHN0YXJ0IGNsdXN0ZXIgKi8KLSAgICB1X2ludCBpbmZzOyAJCS8qIGZpbGUg
 c3lzdGVtIGluZm8gc2VjdG9yICovCi0gICAgdV9pbnQgYmticzsgCQkvKiBi
 YWNrdXAgYm9vdCBzZWN0b3IgKi8KKyAgICB1X2ludCBicGJCeXRlc1BlclNl
 YzsJCS8qIGJ5dGVzIHBlciBzZWN0b3IgKi8KKyAgICB1X2ludCBicGJTZWNQ
 ZXJDbHVzdDsJCS8qIHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KKyAgICB1X2lu
 dCBicGJSZXNTZWN0b3JzOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLworICAg
 IHVfaW50IGJwYkZBVHM7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KKyAgICB1
 X2ludCBicGJSb290RGlyRW50czsJCS8qIHJvb3QgZGlyZWN0b3J5IGVudHJp
 ZXMgKi8KKyAgICB1X2ludCBicGJTZWN0b3JzOwkJCS8qIHRvdGFsIHNlY3Rv
 cnMgKi8KKyAgICB1X2ludCBicGJNZWRpYTsJCQkvKiBtZWRpYSBkZXNjcmlw
 dG9yICovCisgICAgdV9pbnQgYnBiRkFUc2VjczsJCQkvKiBzZWN0b3JzIHBl
 ciBGQVQgKi8KKyAgICB1X2ludCBicGJTZWNQZXJUcmFjazsJCS8qIHNlY3Rv
 cnMgcGVyIHRyYWNrICovCisgICAgdV9pbnQgYnBiSGVhZHM7CQkJLyogZHJp
 dmUgaGVhZHMgKi8KKyAgICB1X2ludCBicGJIaWRkZW5TZWNzOwkJLyogaGlk
 ZGVuIHNlY3RvcnMgKi8KKyAgICB1X2ludCBicGJIdWdlU2VjdG9yczsgCQkv
 KiBiaWcgdG90YWwgc2VjdG9ycyAqLworICAgIHVfaW50IGJwYkJpZ0ZBVHNl
 Y3M7IAkJLyogYmlnIHNlY3RvcnMgcGVyIEZBVCAqLworLyogWFhYOiBNaXNz
 aW5nIEVYVEZsYWdzIEZTVmVycyAqLworICAgIHVfaW50IGJwYlJvb3RDbHVz
 dDsgCQkvKiByb290IGRpcmVjdG9yeSBzdGFydCBjbHVzdGVyICovCisgICAg
 dV9pbnQgYnBiRlNJbmZvOyAJCS8qIGZpbGUgc3lzdGVtIGluZm8gc2VjdG9y
 ICovCisgICAgdV9pbnQgYnBiQmFja3VwOyAJCS8qIGJhY2t1cCBib290IHNl
 Y3RvciAqLwogfTsKIAogI2RlZmluZSBCUEJHQVAgMCwgMCwgMCwgMCwgMCwg
 MAogCisjZGVmaW5lIElOSVQoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwg
 aikgXAorICAgIHsgLmJwYkJ5dGVzUGVyU2VjID0gYSwgLmJwYlNlY1BlckNs
 dXN0ID0gYiwgLmJwYlJlc1NlY3RvcnMgPSBjLCAuYnBiRkFUcyA9IGQsIC5i
 cGJSb290RGlyRW50cyA9IGUsIFwKKyAgICAgIC5icGJTZWN0b3JzID0gZiwg
 LmJwYk1lZGlhID0gZywgLmJwYkZBVHNlY3MgPSBoLCAuYnBiU2VjUGVyVHJh
 Y2sgPSBpLCAuYnBiSGVhZHMgPSBqLCB9CiBzdGF0aWMgc3RydWN0IHsKICAg
 ICBjb25zdCBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBicGIgYnBiOwogfSBj
 b25zdCBzdGRmbXRbXSA9IHsKLSAgICB7IjE2MCIsICB7NTEyLCAxLCAxLCAy
 LCAgNjQsICAzMjAsIDB4ZmUsIDEsICA4LCAxLCBCUEJHQVB9fSwKLSAgICB7
 IjE4MCIsICB7NTEyLCAxLCAxLCAyLCAgNjQsICAzNjAsIDB4ZmMsIDIsICA5
 LCAxLCBCUEJHQVB9fSwKLSAgICB7IjMyMCIsICB7NTEyLCAyLCAxLCAyLCAx
 MTIsICA2NDAsIDB4ZmYsIDEsICA4LCAyLCBCUEJHQVB9fSwKLSAgICB7IjM2
 MCIsICB7NTEyLCAyLCAxLCAyLCAxMTIsICA3MjAsIDB4ZmQsIDIsICA5LCAy
 LCBCUEJHQVB9fSwKLSAgICB7IjY0MCIsICB7NTEyLCAyLCAxLCAyLCAxMTIs
 IDEyODAsIDB4ZmIsIDIsICA4LCAyLCBCUEJHQVB9fSwgICAgCi0gICAgeyI3
 MjAiLCAgezUxMiwgMiwgMSwgMiwgMTEyLCAxNDQwLCAweGY5LCAzLCAgOSwg
 MiwgQlBCR0FQfX0sCi0gICAgeyIxMjAwIiwgezUxMiwgMSwgMSwgMiwgMjI0
 LCAyNDAwLCAweGY5LCA3LCAxNSwgMiwgQlBCR0FQfX0sCi0gICAgeyIxMjMy
 IiwgezEwMjQsMSwgMSwgMiwgMTkyLCAxMjMyLCAweGZlLCAyLCAgOCwgMiwg
 QlBCR0FQfX0sICAgIAotICAgIHsiMTQ0MCIsIHs1MTIsIDEsIDEsIDIsIDIy
 NCwgMjg4MCwgMHhmMCwgOSwgMTgsIDIsIEJQQkdBUH19LAotICAgIHsiMjg4
 MCIsIHs1MTIsIDIsIDEsIDIsIDI0MCwgNTc2MCwgMHhmMCwgOSwgMzYsIDIs
 IEJQQkdBUH19CisgICAgeyIxNjAiLCAgSU5JVCg1MTIsIDEsIDEsIDIsICA2
 NCwgIDMyMCwgMHhmZSwgMSwgIDgsIDEpfSwKKyAgICB7IjE4MCIsICBJTklU
 KDUxMiwgMSwgMSwgMiwgIDY0LCAgMzYwLCAweGZjLCAyLCAgOSwgMSl9LAor
 ICAgIHsiMzIwIiwgIElOSVQoNTEyLCAyLCAxLCAyLCAxMTIsICA2NDAsIDB4
 ZmYsIDEsICA4LCAyKX0sCisgICAgeyIzNjAiLCAgSU5JVCg1MTIsIDIsIDEs
 IDIsIDExMiwgIDcyMCwgMHhmZCwgMiwgIDksIDIpfSwKKyAgICB7IjY0MCIs
 ICBJTklUKDUxMiwgMiwgMSwgMiwgMTEyLCAxMjgwLCAweGZiLCAyLCAgOCwg
 Mil9LCAgICAKKyAgICB7IjcyMCIsICBJTklUKDUxMiwgMiwgMSwgMiwgMTEy
 LCAxNDQwLCAweGY5LCAzLCAgOSwgMil9LAorICAgIHsiMTIwMCIsIElOSVQo
 NTEyLCAxLCAxLCAyLCAyMjQsIDI0MDAsIDB4ZjksIDcsIDE1LCAyKX0sCisg
 ICAgeyIxMjMyIiwgSU5JVCgxMDI0LDEsIDEsIDIsIDE5MiwgMTIzMiwgMHhm
 ZSwgMiwgIDgsIDIpfSwgICAgCisgICAgeyIxNDQwIiwgSU5JVCg1MTIsIDEs
 IDEsIDIsIDIyNCwgMjg4MCwgMHhmMCwgOSwgMTgsIDIpfSwKKyAgICB7IjI4
 ODAiLCBJTklUKDUxMiwgMiwgMSwgMiwgMjQwLCA1NzYwLCAweGYwLCA5LCAz
 NiwgMil9CiB9OwogCiBzdGF0aWMgY29uc3QgdV9pbnQ4X3QgYm9vdGNvZGVb
 XSA9IHsKQEAgLTM4MSw0OSArMzg2LDUxIEBACiAgICAgbWVtc2V0KCZicGIs
 IDAsIHNpemVvZihicGIpKTsKICAgICBpZiAob3B0X2YpIHsKIAlnZXRzdGRm
 bXQob3B0X2YsICZicGIpOwotCWJwYi5ic2VjID0gYnBiLnNlYzsKLQlicGIu
 c2VjID0gMDsKLQlicGIuYnNwZiA9IGJwYi5zcGY7Ci0JYnBiLnNwZiA9IDA7
 CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0gYnBiLmJwYlNlY3RvcnM7CisJYnBi
 LmJwYlNlY3RvcnMgPSAwOworCWJwYi5icGJCaWdGQVRzZWNzID0gYnBiLmJw
 YkZBVHNlY3M7CisJYnBiLmJwYkZBVHNlY3MgPSAwOwogICAgIH0KICAgICBp
 ZiAob3B0X2gpCi0JYnBiLmhkcyA9IG9wdF9oOworCWJwYi5icGJIZWFkcyA9
 IG9wdF9oOwogICAgIGlmIChvcHRfdSkKLQlicGIuc3B0ID0gb3B0X3U7CisJ
 YnBiLmJwYlNlY1BlclRyYWNrID0gb3B0X3U7CiAgICAgaWYgKG9wdF9TKQot
 CWJwYi5icHMgPSBvcHRfUzsKKwlicGIuYnBiQnl0ZXNQZXJTZWMgPSBvcHRf
 UzsKICAgICBpZiAob3B0X3MpCi0JYnBiLmJzZWMgPSBvcHRfczsKKwlicGIu
 YnBiSHVnZVNlY3RvcnMgPSBvcHRfczsKICAgICBpZiAob2ZsYWcpCi0JYnBi
 LmhpZCA9IG9wdF9vOworCWJwYi5icGJIaWRkZW5TZWNzID0gb3B0X287CiAg
 ICAgaWYgKCEob3B0X2YgfHwgKG9wdF9oICYmIG9wdF91ICYmIG9wdF9TICYm
 IG9wdF9zICYmIG9mbGFnKSkpIHsKIAlvZmZfdCBkZWx0YTsKIAlnZXRkaXNr
 aW5mbyhmZCwgZm5hbWUsIGR0eXBlLCBvZmxhZywgJmJwYik7Ci0JYnBiLmJz
 ZWMgLT0gKG9wdF9vZnMgLyBicGIuYnBzKTsKLQlkZWx0YSA9IGJwYi5ic2Vj
 ICUgYnBiLnNwdDsKKwlicGIuYnBiSHVnZVNlY3RvcnMgLT0gKG9wdF9vZnMg
 LyBicGIuYnBiQnl0ZXNQZXJTZWMpOworCWRlbHRhID0gYnBiLmJwYkh1Z2VT
 ZWN0b3JzICUgYnBiLmJwYlNlY1BlclRyYWNrOwogCWlmIChkZWx0YSAhPSAw
 KSB7CiAJICAgIHdhcm54KCJ0cmltICVkIHNlY3RvcnMgdG8gYWRqdXN0IHRv
 IGEgbXVsdGlwbGUgb2YgJWQiLAotCQkoaW50KWRlbHRhLCBicGIuc3B0KTsK
 LQkgICAgYnBiLmJzZWMgLT0gZGVsdGE7CisJCShpbnQpZGVsdGEsIGJwYi5i
 cGJTZWNQZXJUcmFjayk7CisJICAgIGJwYi5icGJIdWdlU2VjdG9ycyAtPSBk
 ZWx0YTsKIAl9Ci0JaWYgKGJwYi5zcGMgPT0gMCkgewkvKiBzZXQgZGVmYXVs
 dHMgKi8KLQkgICAgaWYgKGJwYi5ic2VjIDw9IDYwMDApCS8qIGFib3V0IDNN
 QiAtPiA1MTIgYnl0ZXMgKi8KLQkJYnBiLnNwYyA9IDE7Ci0JICAgIGVsc2Ug
 aWYgKGJwYi5ic2VjIDw9ICgxPDwxNykpIC8qIDY0TSAtPiA0ayAqLwotCQli
 cGIuc3BjID0gODsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMgPD0gKDE8PDE5
 KSkgLyogMjU2TSAtPiA4ayAqLwotCQlicGIuc3BjID0gMTY7Ci0JICAgIGVs
 c2UgaWYgKGJwYi5ic2VjIDw9ICgxPDwyMSkpIC8qIDFHIC0+IDE2ayAqLwot
 CQlicGIuc3BjID0gMzI7CisJaWYgKGJwYi5icGJTZWNQZXJDbHVzdCA9PSAw
 KSB7CS8qIHNldCBkZWZhdWx0cyAqLworCSAgICBpZiAoYnBiLmJwYkh1Z2VT
 ZWN0b3JzIDw9IDYwMDApCS8qIGFib3V0IDNNQiAtPiA1MTIgYnl0ZXMgKi8K
 KwkJYnBiLmJwYlNlY1BlckNsdXN0ID0gMTsKKwkgICAgZWxzZSBpZiAoYnBi
 LmJwYkh1Z2VTZWN0b3JzIDw9ICgxPDwxNykpIC8qIDY0TSAtPiA0ayAqLwor
 CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSA4OworCSAgICBlbHNlIGlmIChicGIu
 YnBiSHVnZVNlY3RvcnMgPD0gKDE8PDE5KSkgLyogMjU2TSAtPiA4ayAqLwor
 CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSAxNjsKKwkgICAgZWxzZSBpZiAoYnBi
 LmJwYkh1Z2VTZWN0b3JzIDw9ICgxPDwyMSkpIC8qIDFHIC0+IDE2ayAqLwor
 CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSAzMjsKIAkgICAgZWxzZQotCQlicGIu
 c3BjID0gNjQ7CQkvKiBvdGhlcndpc2UgMzJrICovCisJCWJwYi5icGJTZWNQ
 ZXJDbHVzdCA9IDY0OwkJLyogb3RoZXJ3aXNlIDMyayAqLwogCX0KICAgICB9
 Ci0gICAgaWYgKCFwb3dlcm9mMihicGIuYnBzKSkKLQllcnJ4KDEsICJieXRl
 cy9zZWN0b3IgKCV1KSBpcyBub3QgYSBwb3dlciBvZiAyIiwgYnBiLmJwcyk7
 Ci0gICAgaWYgKGJwYi5icHMgPCBNSU5CUFMpCisgICAgaWYgKGJwYi5icGJC
 eXRlc1BlclNlYyA+IE1BWEJQUykKKyAgICAJcHJpbnRmKCIgV0FSTklORzog
 Ynl0ZXMvc2VjdG9yICgldSkgaXMgdG9vIGJpZyIsIGJwYi5icGJCeXRlc1Bl
 clNlYyk7CisgICAgZWxzZSBpZiAoYnBiLmJwYkJ5dGVzUGVyU2VjIDwgTUlO
 QlBTKQogCWVycngoMSwgImJ5dGVzL3NlY3RvciAoJXUpIGlzIHRvbyBzbWFs
 bDsgbWluaW11bSBpcyAldSIsCi0JICAgICBicGIuYnBzLCBNSU5CUFMpOwor
 CSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjLCBNSU5CUFMpOworICAgIGlmICgh
 cG93ZXJvZjIoYnBiLmJwYkJ5dGVzUGVyU2VjKSkKKwllcnJ4KDEsICJieXRl
 cy9zZWN0b3IgKCV1KSBpcyBub3QgYSBwb3dlciBvZiAyIiwgYnBiLmJwYkJ5
 dGVzUGVyU2VjKTsKICAgICBpZiAoIShmYXQgPSBvcHRfRikpIHsKIAlpZiAo
 b3B0X2YpCiAJICAgIGZhdCA9IDEyOwpAQCAtNDM1LDQ0ICs0NDIsNDQgQEAK
 IAkgICAgIGZhdCA9PSAzMiA/ICdlJyA6IG9wdF9pID8gJ2knIDogJ2snLAog
 CSAgICAgZmF0ID09IDMyID8gIjMyIiA6ICIxMi8xNiIpOwogICAgIGlmIChv
 cHRfZiAmJiBmYXQgPT0gMzIpCi0JYnBiLnJkZSA9IDA7CisJYnBiLmJwYlJv
 b3REaXJFbnRzID0gMDsKICAgICBpZiAob3B0X2IpIHsKIAlpZiAoIXBvd2Vy
 b2YyKG9wdF9iKSkKIAkgICAgZXJyeCgxLCAiYmxvY2sgc2l6ZSAoJXUpIGlz
 IG5vdCBhIHBvd2VyIG9mIDIiLCBvcHRfYik7Ci0JaWYgKG9wdF9iIDwgYnBi
 LmJwcykKKwlpZiAob3B0X2IgPCBicGIuYnBiQnl0ZXNQZXJTZWMpCiAJICAg
 IGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gc21hbGw7IG1pbmlt
 dW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMpOwotCWlmIChvcHRfYiA+
 IGJwYi5icHMgKiBNQVhTUEMpCisJCSBvcHRfYiwgYnBiLmJwYkJ5dGVzUGVy
 U2VjKTsKKwlpZiAob3B0X2IgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBNQVhT
 UEMpCiAJICAgIGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gbGFy
 Z2U7IG1heGltdW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMgKiBNQVhT
 UEMpOwotCWJwYi5zcGMgPSBvcHRfYiAvIGJwYi5icHM7CisJCSBvcHRfYiwg
 YnBiLmJwYkJ5dGVzUGVyU2VjICogTUFYU1BDKTsKKwlicGIuYnBiU2VjUGVy
 Q2x1c3QgPSBvcHRfYiAvIGJwYi5icGJCeXRlc1BlclNlYzsKICAgICB9CiAg
 ICAgaWYgKG9wdF9jKSB7CiAJaWYgKCFwb3dlcm9mMihvcHRfYykpCiAJICAg
 IGVycngoMSwgInNlY3RvcnMvY2x1c3RlciAoJXUpIGlzIG5vdCBhIHBvd2Vy
 IG9mIDIiLCBvcHRfYyk7Ci0JYnBiLnNwYyA9IG9wdF9jOworCWJwYi5icGJT
 ZWNQZXJDbHVzdCA9IG9wdF9jOwogICAgIH0KICAgICBpZiAob3B0X3IpCi0J
 YnBiLnJlcyA9IG9wdF9yOworCWJwYi5icGJSZXNTZWN0b3JzID0gb3B0X3I7
 CiAgICAgaWYgKG9wdF9uKSB7CiAJaWYgKG9wdF9uID4gTUFYTkZUKQogCSAg
 ICBlcnJ4KDEsICJudW1iZXIgb2YgRkFUcyAoJXUpIGlzIHRvbyBsYXJnZTsg
 bWF4aW11bSBpcyAldSIsCiAJCSBvcHRfbiwgTUFYTkZUKTsKLQlicGIubmZ0
 ID0gb3B0X247CisJYnBiLmJwYkZBVHMgPSBvcHRfbjsKICAgICB9CiAgICAg
 aWYgKG9wdF9lKQotCWJwYi5yZGUgPSBvcHRfZTsKKwlicGIuYnBiUm9vdERp
 ckVudHMgPSBvcHRfZTsKICAgICBpZiAobWZsYWcpIHsKIAlpZiAob3B0X20g
 PCAweGYwKQogCSAgICBlcnJ4KDEsICJpbGxlZ2FsIG1lZGlhIGRlc2NyaXB0
 b3IgKCUjeCkiLCBvcHRfbSk7Ci0JYnBiLm1pZCA9IG9wdF9tOworCWJwYi5i
 cGJNZWRpYSA9IG9wdF9tOwogICAgIH0KICAgICBpZiAob3B0X2EpCi0JYnBi
 LmJzcGYgPSBvcHRfYTsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IG9wdF9hOwog
 ICAgIGlmIChvcHRfaSkKLQlicGIuaW5mcyA9IG9wdF9pOworCWJwYi5icGJG
 U0luZm8gPSBvcHRfaTsKICAgICBpZiAob3B0X2spCi0JYnBiLmJrYnMgPSBv
 cHRfazsKKwlicGIuYnBiQmFja3VwID0gb3B0X2s7CiAgICAgYnNzID0gMTsK
 ICAgICBibmFtZSA9IE5VTEw7CiAgICAgZmQxID0gLTE7CkBAIC00ODUsODcg
 KzQ5Miw4NyBAQAogCX0KIAlpZiAoKGZkMSA9IG9wZW4oYm5hbWUsIE9fUkRP
 TkxZKSkgPT0gLTEgfHwgZnN0YXQoZmQxLCAmc2IpKQogCSAgICBlcnIoMSwg
 IiVzIiwgYm5hbWUpOwotCWlmICghU19JU1JFRyhzYi5zdF9tb2RlKSB8fCBz
 Yi5zdF9zaXplICUgYnBiLmJwcyB8fAotCSAgICBzYi5zdF9zaXplIDwgYnBi
 LmJwcyB8fCBzYi5zdF9zaXplID4gYnBiLmJwcyAqIE1BWFUxNikKKwlpZiAo
 IVNfSVNSRUcoc2Iuc3RfbW9kZSkgfHwgc2Iuc3Rfc2l6ZSAlIGJwYi5icGJC
 eXRlc1BlclNlYyB8fAorCSAgICBzYi5zdF9zaXplIDwgYnBiLmJwYkJ5dGVz
 UGVyU2VjIHx8IHNiLnN0X3NpemUgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBN
 QVhVMTYpCiAJICAgIGVycngoMSwgIiVzOiBpbmFwcHJvcHJpYXRlIGZpbGUg
 dHlwZSBvciBmb3JtYXQiLCBibmFtZSk7Ci0JYnNzID0gc2Iuc3Rfc2l6ZSAv
 IGJwYi5icHM7CisJYnNzID0gc2Iuc3Rfc2l6ZSAvIGJwYi5icGJCeXRlc1Bl
 clNlYzsKICAgICB9Ci0gICAgaWYgKCFicGIubmZ0KQotCWJwYi5uZnQgPSAy
 OworICAgIGlmICghYnBiLmJwYkZBVHMpCisJYnBiLmJwYkZBVHMgPSAyOwog
 ICAgIGlmICghZmF0KSB7Ci0JaWYgKGJwYi5ic2VjIDwgKGJwYi5yZXMgPyBi
 cGIucmVzIDogYnNzKSArCi0JICAgIGhvd21hbnkoKFJFU0ZURSArIChicGIu
 c3BjID8gTUlOQ0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCi0JCSAgICAoKGJw
 Yi5zcGMgPyAxNiA6IDEyKSAvIEJQTiksIGJwYi5icHMgKiBOUEIpICoKLQkg
 ICAgYnBiLm5mdCArCi0JICAgIGhvd21hbnkoYnBiLnJkZSA/IGJwYi5yZGUg
 OiBERUZSREUsCi0JCSAgICBicGIuYnBzIC8gc2l6ZW9mKHN0cnVjdCBkZSkp
 ICsKLQkgICAgKGJwYi5zcGMgPyBNSU5DTFMxNiA6IE1BWENMUzEyICsgMSkg
 KgotCSAgICAoYnBiLnNwYyA/IGJwYi5zcGMgOiBob3dtYW55KERFRkJMSywg
 YnBiLmJwcykpKQorCWlmIChicGIuYnBiSHVnZVNlY3RvcnMgPCAoYnBiLmJw
 YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCSAg
 ICBob3dtYW55KChSRVNGVEUgKyAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlO
 Q0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCisJCSAgICAoKGJwYi5icGJTZWNQ
 ZXJDbHVzdCA/IDE2IDogMTIpIC8gQlBOKSwgYnBiLmJwYkJ5dGVzUGVyU2Vj
 ICogTlBCKSAqCisJICAgIGJwYi5icGJGQVRzICsKKwkgICAgaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMgPyBicGIuYnBiUm9vdERpckVudHMgOiBERUZS
 REUsCisJCSAgICBicGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0
 IGRlKSkgKworCSAgICAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlOQ0xTMTYg
 OiBNQVhDTFMxMiArIDEpICoKKwkgICAgKGJwYi5icGJTZWNQZXJDbHVzdCA/
 IGJwYi5icGJTZWNQZXJDbHVzdCA6IGhvd21hbnkoREVGQkxLLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTI7Ci0JZWxzZSBpZiAoYnBi
 LnJkZSB8fCBicGIuYnNlYyA8Ci0JCSAoYnBiLnJlcyA/IGJwYi5yZXMgOiBi
 c3MpICsKLQkJIGhvd21hbnkoKFJFU0ZURSArIE1BWENMUzE2KSAqIDIsIGJw
 Yi5icHMpICogYnBiLm5mdCArCi0JCSBob3dtYW55KERFRlJERSwgYnBiLmJw
 cyAvIHNpemVvZihzdHJ1Y3QgZGUpKSArCisJZWxzZSBpZiAoYnBiLmJwYlJv
 b3REaXJFbnRzIHx8IGJwYi5icGJIdWdlU2VjdG9ycyA8CisJCSAoYnBiLmJw
 YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCQkg
 aG93bWFueSgoUkVTRlRFICsgTUFYQ0xTMTYpICogMiwgYnBiLmJwYkJ5dGVz
 UGVyU2VjKSAqIGJwYi5icGJGQVRzICsKKwkJIGhvd21hbnkoREVGUkRFLCBi
 cGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0IGRlKSkgKwogCQkg
 KE1BWENMUzE2ICsgMSkgKgotCQkgKGJwYi5zcGMgPyBicGIuc3BjIDogaG93
 bWFueSg4MTkyLCBicGIuYnBzKSkpCisJCSAoYnBiLmJwYlNlY1BlckNsdXN0
 ID8gYnBiLmJwYlNlY1BlckNsdXN0IDogaG93bWFueSg4MTkyLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTY7CiAJZWxzZQogCSAgICBm
 YXQgPSAzMjsKICAgICB9CiAgICAgeCA9IGJzczsKICAgICBpZiAoZmF0ID09
 IDMyKSB7Ci0JaWYgKCFicGIuaW5mcykgewotCSAgICBpZiAoeCA9PSBNQVhV
 MTYgfHwgeCA9PSBicGIuYmticykKKwlpZiAoIWJwYi5icGJGU0luZm8pIHsK
 KwkgICAgaWYgKHggPT0gTUFYVTE2IHx8IHggPT0gYnBiLmJwYkJhY2t1cCkK
 IAkJZXJyeCgxLCAibm8gcm9vbSBmb3IgaW5mbyBzZWN0b3IiKTsKLQkgICAg
 YnBiLmluZnMgPSB4OworCSAgICBicGIuYnBiRlNJbmZvID0geDsKIAl9Ci0J
 aWYgKGJwYi5pbmZzICE9IE1BWFUxNiAmJiB4IDw9IGJwYi5pbmZzKQotCSAg
 ICB4ID0gYnBiLmluZnMgKyAxOwotCWlmICghYnBiLmJrYnMpIHsKKwlpZiAo
 YnBiLmJwYkZTSW5mbyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYnBiRlNJbmZv
 KQorCSAgICB4ID0gYnBiLmJwYkZTSW5mbyArIDE7CisJaWYgKCFicGIuYnBi
 QmFja3VwKSB7CiAJICAgIGlmICh4ID09IE1BWFUxNikKIAkJZXJyeCgxLCAi
 bm8gcm9vbSBmb3IgYmFja3VwIHNlY3RvciIpOwotCSAgICBicGIuYmticyA9
 IHg7Ci0JfSBlbHNlIGlmIChicGIuYmticyAhPSBNQVhVMTYgJiYgYnBiLmJr
 YnMgPT0gYnBiLmluZnMpCisJICAgIGJwYi5icGJCYWNrdXAgPSB4OworCX0g
 ZWxzZSBpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYgJiYgYnBiLmJwYkJh
 Y2t1cCA9PSBicGIuYnBiRlNJbmZvKQogCSAgICBlcnJ4KDEsICJiYWNrdXAg
 c2VjdG9yIHdvdWxkIG92ZXJ3cml0ZSBpbmZvIHNlY3RvciIpOwotCWlmIChi
 cGIuYmticyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYmticykKLQkgICAgeCA9
 IGJwYi5ia2JzICsgMTsKKwlpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYg
 JiYgeCA8PSBicGIuYnBiQmFja3VwKQorCSAgICB4ID0gYnBiLmJwYkJhY2t1
 cCArIDE7CiAgICAgfQotICAgIGlmICghYnBiLnJlcykKLQlicGIucmVzID0g
 ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icHMsIDQpKSA6
 IHg7Ci0gICAgZWxzZSBpZiAoYnBiLnJlcyA8IHgpCi0JZXJyeCgxLCAidG9v
 IGZldyByZXNlcnZlZCBzZWN0b3JzIik7Ci0gICAgaWYgKGZhdCAhPSAzMiAm
 JiAhYnBiLnJkZSkKLQlicGIucmRlID0gREVGUkRFOwotICAgIHJkcyA9IGhv
 d21hbnkoYnBiLnJkZSwgYnBiLmJwcyAvIHNpemVvZihzdHJ1Y3QgZGUpKTsK
 LSAgICBpZiAoIWJwYi5zcGMpCi0JZm9yIChicGIuc3BjID0gaG93bWFueShm
 YXQgPT0gMTYgPyBERUZCTEsxNiA6IERFRkJMSywgYnBiLmJwcyk7Ci0JICAg
 ICBicGIuc3BjIDwgTUFYU1BDICYmCi0JICAgICBicGIucmVzICsKKyAgICBp
 ZiAoIWJwYi5icGJSZXNTZWN0b3JzKQorCWJwYi5icGJSZXNTZWN0b3JzID0g
 ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icGJCeXRlc1Bl
 clNlYywgNCkpIDogeDsKKyAgICBlbHNlIGlmIChicGIuYnBiUmVzU2VjdG9y
 cyA8IHgpCisJZXJyeCgxLCAidG9vIGZldyByZXNlcnZlZCBzZWN0b3JzIChu
 ZWVkICVkIGhhdmUgJWQpIiwgeCwgYnBiLmJwYlJlc1NlY3RvcnMpOworICAg
 IGlmIChmYXQgIT0gMzIgJiYgIWJwYi5icGJSb290RGlyRW50cykKKwlicGIu
 YnBiUm9vdERpckVudHMgPSBERUZSREU7CisgICAgcmRzID0gaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMsIGJwYi5icGJCeXRlc1BlclNlYyAvIHNpemVv
 ZihzdHJ1Y3QgZGUpKTsKKyAgICBpZiAoIWJwYi5icGJTZWNQZXJDbHVzdCkK
 Kwlmb3IgKGJwYi5icGJTZWNQZXJDbHVzdCA9IGhvd21hbnkoZmF0ID09IDE2
 ID8gREVGQkxLMTYgOiBERUZCTEssIGJwYi5icGJCeXRlc1BlclNlYyk7CisJ
 ICAgICBicGIuYnBiU2VjUGVyQ2x1c3QgPCBNQVhTUEMgJiYKKwkgICAgIGJw
 Yi5icGJSZXNTZWN0b3JzICsKIAkgICAgIGhvd21hbnkoKFJFU0ZURSArIG1h
 eGNscyhmYXQpKSAqIChmYXQgLyBCUE4pLAotCQkgICAgIGJwYi5icHMgKiBO
 UEIpICogYnBiLm5mdCArCisJCSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjICog
 TlBCKSAqIGJwYi5icGJGQVRzICsKIAkgICAgIHJkcyArCi0JICAgICAodV9p
 bnQ2NF90KShtYXhjbHMoZmF0KSArIDEpICogYnBiLnNwYyA8PSBicGIuYnNl
 YzsKLQkgICAgIGJwYi5zcGMgPDw9IDEpOwotICAgIGlmIChmYXQgIT0gMzIg
 JiYgYnBiLmJzcGYgPiBNQVhVMTYpCisJICAgICAodV9pbnQ2NF90KShtYXhj
 bHMoZmF0KSArIDEpICogYnBiLmJwYlNlY1BlckNsdXN0IDw9IGJwYi5icGJI
 dWdlU2VjdG9yczsKKwkgICAgIGJwYi5icGJTZWNQZXJDbHVzdCA8PD0gMSk7
 CisgICAgaWYgKGZhdCAhPSAzMiAmJiBicGIuYnBiQmlnRkFUc2VjcyA+IE1B
 WFUxNikKIAllcnJ4KDEsICJ0b28gbWFueSBzZWN0b3JzL0ZBVCBmb3IgRkFU
 MTIvMTYiKTsKLSAgICB4MSA9IGJwYi5yZXMgKyByZHM7Ci0gICAgeCA9IGJw
 Yi5ic3BmID8gYnBiLmJzcGYgOiAxOwotICAgIGlmICh4MSArICh1X2ludDY0
 X3QpeCAqIGJwYi5uZnQgPiBicGIuYnNlYykKKyAgICB4MSA9IGJwYi5icGJS
 ZXNTZWN0b3JzICsgcmRzOworICAgIHggPSBicGIuYnBiQmlnRkFUc2VjcyA/
 IGJwYi5icGJCaWdGQVRzZWNzIDogMTsKKyAgICBpZiAoeDEgKyAodV9pbnQ2
 NF90KXggKiBicGIuYnBiRkFUcyA+IGJwYi5icGJIdWdlU2VjdG9ycykKIAll
 cnJ4KDEsICJtZXRhIGRhdGEgZXhjZWVkcyBmaWxlIHN5c3RlbSBzaXplIik7
 Ci0gICAgeDEgKz0geCAqIGJwYi5uZnQ7Ci0gICAgeCA9ICh1X2ludDY0X3Qp
 KGJwYi5ic2VjIC0geDEpICogYnBiLmJwcyAqIE5QQiAvCi0JKGJwYi5zcGMg
 KiBicGIuYnBzICogTlBCICsgZmF0IC8gQlBOICogYnBiLm5mdCk7CisgICAg
 eDEgKz0geCAqIGJwYi5icGJGQVRzOworICAgIHggPSAodV9pbnQ2NF90KShi
 cGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgKiBicGIuYnBiQnl0ZXNQZXJTZWMg
 KiBOUEIgLworCShicGIuYnBiU2VjUGVyQ2x1c3QgKiBicGIuYnBiQnl0ZXNQ
 ZXJTZWMgKiBOUEIgKyBmYXQgLyBCUE4gKiBicGIuYnBiRkFUcyk7CiAgICAg
 eDIgPSBob3dtYW55KChSRVNGVEUgKyBNSU4oeCwgbWF4Y2xzKGZhdCkpKSAq
 IChmYXQgLyBCUE4pLAotCQkgYnBiLmJwcyAqIE5QQik7Ci0gICAgaWYgKCFi
 cGIuYnNwZikgewotCWJwYi5ic3BmID0geDI7Ci0JeDEgKz0gKGJwYi5ic3Bm
 IC0gMSkgKiBicGIubmZ0OworCQkgYnBiLmJwYkJ5dGVzUGVyU2VjICogTlBC
 KTsKKyAgICBpZiAoIWJwYi5icGJCaWdGQVRzZWNzKSB7CisJYnBiLmJwYkJp
 Z0ZBVHNlY3MgPSB4MjsKKwl4MSArPSAoYnBiLmJwYkJpZ0ZBVHNlY3MgLSAx
 KSAqIGJwYi5icGJGQVRzOwogICAgIH0KLSAgICBjbHMgPSAoYnBiLmJzZWMg
 LSB4MSkgLyBicGIuc3BjOwotICAgIHggPSAodV9pbnQ2NF90KWJwYi5ic3Bm
 ICogYnBiLmJwcyAqIE5QQiAvIChmYXQgLyBCUE4pIC0gUkVTRlRFOworICAg
 IGNscyA9IChicGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgLyBicGIuYnBiU2Vj
 UGVyQ2x1c3Q7CisgICAgeCA9ICh1X2ludDY0X3QpYnBiLmJwYkJpZ0ZBVHNl
 Y3MgKiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBOUEIgLyAoZmF0IC8gQlBOKSAt
 IFJFU0ZURTsKICAgICBpZiAoY2xzID4geCkKIAljbHMgPSB4OwotICAgIGlm
 IChicGIuYnNwZiA8IHgyKQorICAgIGlmIChicGIuYnBiQmlnRkFUc2VjcyA8
 IHgyKQogCXdhcm54KCJ3YXJuaW5nOiBzZWN0b3JzL0ZBVCBsaW1pdHMgZmls
 ZSBzeXN0ZW0gdG8gJXUgY2x1c3RlcnMiLAogCSAgICAgIGNscyk7CiAgICAg
 aWYgKGNscyA8IG1pbmNscyhmYXQpKQpAQCAtNTczLDc5ICs1ODAsNzkgQEAK
 IAkgICAgbWluY2xzKGZhdCkpOwogICAgIGlmIChjbHMgPiBtYXhjbHMoZmF0
 KSkgewogCWNscyA9IG1heGNscyhmYXQpOwotCWJwYi5ic2VjID0geDEgKyAo
 Y2xzICsgMSkgKiBicGIuc3BjIC0gMTsKKwlicGIuYnBiSHVnZVNlY3RvcnMg
 PSB4MSArIChjbHMgKyAxKSAqIGJwYi5icGJTZWNQZXJDbHVzdCAtIDE7CiAJ
 d2FybngoIndhcm5pbmc6IEZBVCB0eXBlIGxpbWl0cyBmaWxlIHN5c3RlbSB0
 byAldSBzZWN0b3JzIiwKLQkgICAgICBicGIuYnNlYyk7CisJICAgICAgYnBi
 LmJwYkh1Z2VTZWN0b3JzKTsKICAgICB9CiAgICAgcHJpbnRmKCIlczogJXUg
 c2VjdG9yJXMgaW4gJXUgRkFUJXUgY2x1c3RlciVzICIKLQkgICAiKCV1IGJ5
 dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xzICogYnBiLnNwYywKLQkgICBj
 bHMgKiBicGIuc3BjID09IDEgPyAiIiA6ICJzIiwgY2xzLCBmYXQsCi0JICAg
 Y2xzID09IDEgPyAiIiA6ICJzIiwgYnBiLmJwcyAqIGJwYi5zcGMpOwotICAg
 IGlmICghYnBiLm1pZCkKLQlicGIubWlkID0gIWJwYi5oaWQgPyAweGYwIDog
 MHhmODsKKwkgICAiKCV1IGJ5dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xz
 ICogYnBiLmJwYlNlY1BlckNsdXN0LAorCSAgIGNscyAqIGJwYi5icGJTZWNQ
 ZXJDbHVzdCA9PSAxID8gIiIgOiAicyIsIGNscywgZmF0LAorCSAgIGNscyA9
 PSAxID8gIiIgOiAicyIsIGJwYi5icGJCeXRlc1BlclNlYyAqIGJwYi5icGJT
 ZWNQZXJDbHVzdCk7CisgICAgaWYgKCFicGIuYnBiTWVkaWEpCisJYnBiLmJw
 Yk1lZGlhID0gIWJwYi5icGJIaWRkZW5TZWNzID8gMHhmMCA6IDB4Zjg7CiAg
 ICAgaWYgKGZhdCA9PSAzMikKLQlicGIucmRjbCA9IFJFU0ZURTsKLSAgICBp
 ZiAoYnBiLmhpZCArIGJwYi5ic2VjIDw9IE1BWFUxNikgewotCWJwYi5zZWMg
 PSBicGIuYnNlYzsKLQlicGIuYnNlYyA9IDA7CisJYnBiLmJwYlJvb3RDbHVz
 dCA9IFJFU0ZURTsKKyAgICBpZiAoYnBiLmJwYkhpZGRlblNlY3MgKyBicGIu
 YnBiSHVnZVNlY3RvcnMgPD0gTUFYVTE2KSB7CisJYnBiLmJwYlNlY3RvcnMg
 PSBicGIuYnBiSHVnZVNlY3RvcnM7CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0g
 MDsKICAgICB9CiAgICAgaWYgKGZhdCAhPSAzMikgewotCWJwYi5zcGYgPSBi
 cGIuYnNwZjsKLQlicGIuYnNwZiA9IDA7CisJYnBiLmJwYkZBVHNlY3MgPSBi
 cGIuYnBiQmlnRkFUc2VjczsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IDA7CiAg
 ICAgfQogICAgIHByaW50X2JwYigmYnBiKTsKICAgICBpZiAoIW9wdF9OKSB7
 CiAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CiAJbm93ID0gdHYudHZfc2Vj
 OwogCXRtID0gbG9jYWx0aW1lKCZub3cpOwotCWlmICghKGltZyA9IG1hbGxv
 YyhicGIuYnBzKSkpCisJaWYgKCEoaW1nID0gbWFsbG9jKGJwYi5icGJCeXRl
 c1BlclNlYykpKQogCSAgICBlcnIoMSwgTlVMTCk7Ci0JZGlyID0gYnBiLnJl
 cyArIChicGIuc3BmID8gYnBiLnNwZiA6IGJwYi5ic3BmKSAqIGJwYi5uZnQ7
 Ci0JZm9yIChsc24gPSAwOyBsc24gPCBkaXIgKyAoZmF0ID09IDMyID8gYnBi
 LnNwYyA6IHJkcyk7IGxzbisrKSB7CisJZGlyID0gYnBiLmJwYlJlc1NlY3Rv
 cnMgKyAoYnBiLmJwYkZBVHNlY3MgPyBicGIuYnBiRkFUc2VjcyA6IGJwYi5i
 cGJCaWdGQVRzZWNzKSAqIGJwYi5icGJGQVRzOworCWZvciAobHNuID0gMDsg
 bHNuIDwgZGlyICsgKGZhdCA9PSAzMiA/IGJwYi5icGJTZWNQZXJDbHVzdCA6
 IHJkcyk7IGxzbisrKSB7CiAJICAgIHggPSBsc247CiAJICAgIGlmIChvcHRf
 QiAmJgotCQlmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYmCi0J
 CWJzcyA8PSBicGIuYmticyAmJiB4ID49IGJwYi5ia2JzKSB7Ci0JCXggLT0g
 YnBiLmJrYnM7CisJCWZhdCA9PSAzMiAmJiBicGIuYnBiQmFja3VwICE9IE1B
 WFUxNiAmJgorCQlic3MgPD0gYnBiLmJwYkJhY2t1cCAmJiB4ID49IGJwYi5i
 cGJCYWNrdXApIHsKKwkJeCAtPSBicGIuYnBiQmFja3VwOwogCQlpZiAoIXgg
 JiYgbHNlZWsoZmQxLCBvcHRfb2ZzLCBTRUVLX1NFVCkpCiAJCSAgICBlcnIo
 MSwgIiVzIiwgYm5hbWUpOwogCSAgICB9CiAJICAgIGlmIChvcHRfQiAmJiB4
 IDwgYnNzKSB7Ci0JCWlmICgobiA9IHJlYWQoZmQxLCBpbWcsIGJwYi5icHMp
 KSA9PSAtMSkKKwkJaWYgKChuID0gcmVhZChmZDEsIGltZywgYnBiLmJwYkJ5
 dGVzUGVyU2VjKSkgPT0gLTEpCiAJCSAgICBlcnIoMSwgIiVzIiwgYm5hbWUp
 OwotCQlpZiAoKHVuc2lnbmVkKW4gIT0gYnBiLmJwcykKKwkJaWYgKCh1bnNp
 Z25lZCluICE9IGJwYi5icGJCeXRlc1BlclNlYykKIAkJICAgIGVycngoMSwg
 IiVzOiBjYW4ndCByZWFkIHNlY3RvciAldSIsIGJuYW1lLCB4KTsKIAkgICAg
 fSBlbHNlCi0JCW1lbXNldChpbWcsIDAsIGJwYi5icHMpOworCQltZW1zZXQo
 aW1nLCAwLCBicGIuYnBiQnl0ZXNQZXJTZWMpOwogCSAgICBpZiAoIWxzbiB8
 fAotCSAgICAgIChmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYm
 IGxzbiA9PSBicGIuYmticykpIHsKKwkgICAgICAoZmF0ID09IDMyICYmIGJw
 Yi5icGJCYWNrdXAgIT0gTUFYVTE2ICYmIGxzbiA9PSBicGIuYnBiQmFja3Vw
 KSkgewogCQl4MSA9IHNpemVvZihzdHJ1Y3QgYnMpOwogCQlic2JwYiA9IChz
 dHJ1Y3QgYnNicGIgKikoaW1nICsgeDEpOwotCQltazIoYnNicGItPmJwcywg
 YnBiLmJwcyk7Ci0JCW1rMShic2JwYi0+c3BjLCBicGIuc3BjKTsKLQkJbWsy
 KGJzYnBiLT5yZXMsIGJwYi5yZXMpOwotCQltazEoYnNicGItPm5mdCwgYnBi
 Lm5mdCk7Ci0JCW1rMihic2JwYi0+cmRlLCBicGIucmRlKTsKLQkJbWsyKGJz
 YnBiLT5zZWMsIGJwYi5zZWMpOwotCQltazEoYnNicGItPm1pZCwgYnBiLm1p
 ZCk7Ci0JCW1rMihic2JwYi0+c3BmLCBicGIuc3BmKTsKLQkJbWsyKGJzYnBi
 LT5zcHQsIGJwYi5zcHQpOwotCQltazIoYnNicGItPmhkcywgYnBiLmhkcyk7
 Ci0JCW1rNChic2JwYi0+aGlkLCBicGIuaGlkKTsKLQkJbWs0KGJzYnBiLT5i
 c2VjLCBicGIuYnNlYyk7CisJCW1rMihic2JwYi0+YnBiQnl0ZXNQZXJTZWMs
 IGJwYi5icGJCeXRlc1BlclNlYyk7CisJCW1rMShic2JwYi0+YnBiU2VjUGVy
 Q2x1c3QsIGJwYi5icGJTZWNQZXJDbHVzdCk7CisJCW1rMihic2JwYi0+YnBi
 UmVzU2VjdG9ycywgYnBiLmJwYlJlc1NlY3RvcnMpOworCQltazEoYnNicGIt
 PmJwYkZBVHMsIGJwYi5icGJGQVRzKTsKKwkJbWsyKGJzYnBiLT5icGJSb290
 RGlyRW50cywgYnBiLmJwYlJvb3REaXJFbnRzKTsKKwkJbWsyKGJzYnBiLT5i
 cGJTZWN0b3JzLCBicGIuYnBiU2VjdG9ycyk7CisJCW1rMShic2JwYi0+YnBi
 TWVkaWEsIGJwYi5icGJNZWRpYSk7CisJCW1rMihic2JwYi0+YnBiRkFUc2Vj
 cywgYnBiLmJwYkZBVHNlY3MpOworCQltazIoYnNicGItPmJwYlNlY1BlclRy
 YWNrLCBicGIuYnBiU2VjUGVyVHJhY2spOworCQltazIoYnNicGItPmJwYkhl
 YWRzLCBicGIuYnBiSGVhZHMpOworCQltazQoYnNicGItPmJwYkhpZGRlblNl
 Y3MsIGJwYi5icGJIaWRkZW5TZWNzKTsKKwkJbWs0KGJzYnBiLT5icGJIdWdl
 U2VjdG9ycywgYnBiLmJwYkh1Z2VTZWN0b3JzKTsKIAkJeDEgKz0gc2l6ZW9m
 KHN0cnVjdCBic2JwYik7CiAJCWlmIChmYXQgPT0gMzIpIHsKIAkJICAgIGJz
 eGJwYiA9IChzdHJ1Y3QgYnN4YnBiICopKGltZyArIHgxKTsKLQkJICAgIG1r
 NChic3hicGItPmJzcGYsIGJwYi5ic3BmKTsKKwkJICAgIG1rNChic3hicGIt
 PmJzcGYsIGJwYi5icGJCaWdGQVRzZWNzKTsKIAkJICAgIG1rMihic3hicGIt
 PnhmbGcsIDApOwogCQkgICAgbWsyKGJzeGJwYi0+dmVycywgMCk7Ci0JCSAg
 ICBtazQoYnN4YnBiLT5yZGNsLCBicGIucmRjbCk7Ci0JCSAgICBtazIoYnN4
 YnBiLT5pbmZzLCBicGIuaW5mcyk7Ci0JCSAgICBtazIoYnN4YnBiLT5ia2Jz
 LCBicGIuYmticyk7CisJCSAgICBtazQoYnN4YnBiLT5yZGNsLCBicGIuYnBi
 Um9vdENsdXN0KTsKKwkJICAgIG1rMihic3hicGItPmluZnMsIGJwYi5icGJG
 U0luZm8pOworCQkgICAgbWsyKGJzeGJwYi0+YmticywgYnBiLmJwYkJhY2t1
 cCk7CiAJCSAgICB4MSArPSBzaXplb2Yoc3RydWN0IGJzeGJwYik7CiAJCX0K
 IAkJYnN4ID0gKHN0cnVjdCBic3ggKikoaW1nICsgeDEpOwotCQltazEoYnN4
 LT5zaWcsIDB4MjkpOworCQltazEoYnN4LT5leEJvb3RTaWduYXR1cmUsIDB4
 MjkpOwogCQlpZiAoSWZsYWcpCiAJCSAgICB4ID0gb3B0X0k7CiAJCWVsc2UK
 QEAgLTY1NiwzNCArNjYzLDM0IEBACiAJCQkoKHVfaW50KSgxOTAwICsgdG0t
 PnRtX3llYXIpICsKIAkJCSAoKHVfaW50KXRtLT50bV9ob3VyIDw8IDggfAog
 CQkJICAodV9pbnQpdG0tPnRtX21pbikpOwotCQltazQoYnN4LT52b2xpZCwg
 eCk7Ci0JCW1rbGFiZWwoYnN4LT5sYWJlbCwgb3B0X0wgPyBvcHRfTCA6ICJO
 TyBOQU1FIik7Ci0JCXNwcmludGYoYnVmLCAiRkFUJXUiLCBmYXQpOwotCQlz
 ZXRzdHIoYnN4LT50eXBlLCBidWYsIHNpemVvZihic3gtPnR5cGUpKTsKKwkJ
 bWs0KGJzeC0+ZXhWb2x1bWVJRCwgeCk7CisJCW1rbGFiZWwoYnN4LT5leFZv
 bHVtZUxhYmVsLCBvcHRfTCA/IG9wdF9MIDogIk5PX05BTUUiKTsKKwkJc25w
 cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIkZBVCV1IiwgZmF0KTsKKwkJc2V0
 c3RyKGJzeC0+ZXhGaWxlU3lzVHlwZSwgYnVmLCBzaXplb2YoYnN4LT5leEZp
 bGVTeXNUeXBlKSk7CiAJCWlmICghb3B0X0IpIHsKIAkJICAgIHgxICs9IHNp
 emVvZihzdHJ1Y3QgYnN4KTsKIAkJICAgIGJzID0gKHN0cnVjdCBicyAqKWlt
 ZzsKLQkJICAgIG1rMShicy0+am1wWzBdLCAweGViKTsKLQkJICAgIG1rMShi
 cy0+am1wWzFdLCB4MSAtIDIpOwotCQkgICAgbWsxKGJzLT5qbXBbMl0sIDB4
 OTApOwotCQkgICAgc2V0c3RyKGJzLT5vZW0sIG9wdF9PID8gb3B0X08gOiAi
 QlNEICA0LjQiLAotCQkJICAgc2l6ZW9mKGJzLT5vZW0pKTsKKwkJICAgIG1r
 MShicy0+YnNKdW1wWzBdLCAweGViKTsKKwkJICAgIG1rMShicy0+YnNKdW1w
 WzFdLCB4MSAtIDIpOworCQkgICAgbWsxKGJzLT5ic0p1bXBbMl0sIDB4OTAp
 OworCQkgICAgc2V0c3RyKGJzLT5ic09lbU5hbWUsIG9wdF9PID8gb3B0X08g
 OiAiQlNENC40ICAiLAorCQkJICAgc2l6ZW9mKGJzLT5ic09lbU5hbWUpKTsK
 IAkJICAgIG1lbWNweShpbWcgKyB4MSwgYm9vdGNvZGUsIHNpemVvZihib290
 Y29kZSkpOwogCQkgICAgbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01BR0lD
 KTsKIAkJfQotCSAgICB9IGVsc2UgaWYgKGZhdCA9PSAzMiAmJiBicGIuaW5m
 cyAhPSBNQVhVMTYgJiYKLQkJICAgICAgIChsc24gPT0gYnBiLmluZnMgfHwK
 LQkJCShicGIuYmticyAhPSBNQVhVMTYgJiYKLQkJCSBsc24gPT0gYnBiLmJr
 YnMgKyBicGIuaW5mcykpKSB7CisJICAgIH0gZWxzZSBpZiAoZmF0ID09IDMy
 ICYmIGJwYi5icGJGU0luZm8gIT0gTUFYVTE2ICYmCisJCSAgICAgICAobHNu
 ID09IGJwYi5icGJGU0luZm8gfHwKKwkJCShicGIuYnBiQmFja3VwICE9IE1B
 WFUxNiAmJgorCQkJIGxzbiA9PSBicGIuYnBiQmFja3VwICsgYnBiLmJwYkZT
 SW5mbykpKSB7CiAJCW1rNChpbWcsIDB4NDE2MTUyNTIpOwogCQltazQoaW1n
 ICsgTUlOQlBTIC0gMjgsIDB4NjE0MTcyNzIpOwogCQltazQoaW1nICsgTUlO
 QlBTIC0gMjQsIDB4ZmZmZmZmZmYpOwotCQltazQoaW1nICsgTUlOQlBTIC0g
 MjAsIGJwYi5yZGNsKTsKKwkJbWs0KGltZyArIE1JTkJQUyAtIDIwLCBicGIu
 YnBiUm9vdENsdXN0KTsKIAkJbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01B
 R0lDKTsKLQkgICAgfSBlbHNlIGlmIChsc24gPj0gYnBiLnJlcyAmJiBsc24g
 PCBkaXIgJiYKLQkJICAgICAgICEoKGxzbiAtIGJwYi5yZXMpICUKLQkJCSAo
 YnBiLnNwZiA/IGJwYi5zcGYgOiBicGIuYnNwZikpKSB7Ci0JCW1rMShpbWdb
 MF0sIGJwYi5taWQpOworCSAgICB9IGVsc2UgaWYgKGxzbiA+PSBicGIuYnBi
 UmVzU2VjdG9ycyAmJiBsc24gPCBkaXIgJiYKKwkJICAgICAgICEoKGxzbiAt
 IGJwYi5icGJSZXNTZWN0b3JzKSAlCisJCQkgKGJwYi5icGJGQVRzZWNzID8g
 YnBiLmJwYkZBVHNlY3MgOiBicGIuYnBiQmlnRkFUc2VjcykpKSB7CisJCW1r
 MShpbWdbMF0sIGJwYi5icGJNZWRpYSk7CiAJCWZvciAoeCA9IDE7IHggPCBm
 YXQgKiAoZmF0ID09IDMyID8gMyA6IDIpIC8gODsgeCsrKQogCQkgICAgbWsx
 KGltZ1t4XSwgZmF0ID09IDMyICYmIHggJSA0ID09IDMgPyAweDBmIDogMHhm
 Zik7CiAJICAgIH0gZWxzZSBpZiAobHNuID09IGRpciAmJiBvcHRfTCkgewpA
 QCAtNjk5LDkgKzcwNiw5IEBACiAJCSAgICAodV9pbnQpdG0tPnRtX21kYXk7
 CiAJCW1rMihkZS0+ZGF0ZSwgeCk7CiAJICAgIH0KLQkgICAgaWYgKChuID0g
 d3JpdGUoZmQsIGltZywgYnBiLmJwcykpID09IC0xKQorCSAgICBpZiAoKG4g
 PSB3cml0ZShmZCwgaW1nLCBicGIuYnBiQnl0ZXNQZXJTZWMpKSA9PSAtMSkK
 IAkJZXJyKDEsICIlcyIsIGZuYW1lKTsKLQkgICAgaWYgKCh1bnNpZ25lZClu
 ICE9IGJwYi5icHMpCisJICAgIGlmICgodW5zaWduZWQpbiAhPSBicGIuYnBi
 Qnl0ZXNQZXJTZWMpCiAJCWVycngoMSwgIiVzOiBjYW4ndCB3cml0ZSBzZWN0
 b3IgJXUiLCBmbmFtZSwgbHNuKTsKIAl9CiAgICAgfQpAQCAtNzk0LDE4ICs4
 MDEsMTkgQEAKIAogICAgIC8qIE1heWJlIGl0J3MgYSBmaXhlZCBkcml2ZSAq
 LwogICAgIGlmIChscCA9PSBOVUxMKSB7CisJaWYgKGJwYi0+YnBiQnl0ZXNQ
 ZXJTZWMpCisJICAgIGRscC5kX3NlY3NpemUgPSBicGItPmJwYkJ5dGVzUGVy
 U2VjOwogCWlmIChpb2N0bChmZCwgRElPQ0dESU5GTywgJmRscCkgPT0gLTEp
 IHsKLQkgICAgaWYgKGJwYi0+YnBzID09IDAgJiYgaW9jdGwoZmQsIERJT0NH
 U0VDVE9SU0laRSwgJmRscC5kX3NlY3NpemUpID09IC0xKQorCSAgICBpZiAo
 YnBiLT5icGJCeXRlc1BlclNlYyA9PSAwICYmIGlvY3RsKGZkLCBESU9DR1NF
 Q1RPUlNJWkUsICZkbHAuZF9zZWNzaXplKSA9PSAtMSkKIAkJZXJyeCgxLCAi
 Q2Fubm90IGdldCBzZWN0b3Igc2l6ZSwgJXMiLCBzdHJlcnJvcihlcnJubykp
 OwogCi0JICAgIC8qIFhYWCBTaG91bGQgd2UgdXNlIGJwYi0+YnBzIGlmIGl0
 J3Mgc2V0PyAqLwogCSAgICBkbHAuZF9zZWNwZXJ1bml0ID0gbXMgLyBkbHAu
 ZF9zZWNzaXplOwogCi0JICAgIGlmIChicGItPnNwdCA9PSAwICYmIGlvY3Rs
 KGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9PSAtMSkg
 eworCSAgICBpZiAoYnBiLT5icGJTZWNQZXJUcmFjayA9PSAwICYmIGlvY3Rs
 KGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9PSAtMSkg
 ewogCQl3YXJueCgiQ2Fubm90IGdldCBudW1iZXIgb2Ygc2VjdG9ycyBwZXIg
 dHJhY2ssICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJZGxwLmRfbnNlY3Rv
 cnMgPSA2MzsKIAkgICAgfQotCSAgICBpZiAoYnBiLT5oZHMgPT0gMCAmJiBp
 b2N0bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEp
 IHsKKwkgICAgaWYgKGJwYi0+YnBiSGVhZHMgPT0gMCAmJiBpb2N0bChmZCwg
 RElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEpIHsKIAkJd2Fy
 bngoIkNhbm5vdCBnZXQgbnVtYmVyIG9mIGhlYWRzLCAlcyIsIHN0cmVycm9y
 KGVycm5vKSk7CiAJCWlmIChkbHAuZF9zZWNwZXJ1bml0IDw9IDYzKjEqMTAy
 NCkKIAkJICAgIGRscC5kX250cmFja3MgPSAxOwpAQCAtODIwLDE2ICs4Mjgs
 MTYgQEAKIAlscCA9ICZkbHA7CiAgICAgfQogCi0gICAgaWYgKGJwYi0+YnBz
 ID09IDApCi0JYnBiLT5icHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX3NlY3Np
 emUsICJieXRlcy9zZWN0b3IiKTsKLSAgICBpZiAoYnBiLT5zcHQgPT0gMCkK
 LQlicGItPnNwdCA9IGNrZ2VvbShmbmFtZSwgbHAtPmRfbnNlY3RvcnMsICJz
 ZWN0b3JzL3RyYWNrIik7Ci0gICAgaWYgKGJwYi0+aGRzID09IDApCi0JYnBi
 LT5oZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2ZSBo
 ZWFkcyIpOwotICAgIGlmIChicGItPmJzZWMgPT0gMCkKLQlicGItPmJzZWMg
 PSBscC0+ZF9zZWNwZXJ1bml0OwotICAgIGlmIChicGItPmhpZCA9PSAwKQot
 CWJwYi0+aGlkID0gaHM7CisgICAgaWYgKGJwYi0+YnBiQnl0ZXNQZXJTZWMg
 PT0gMCkKKwlicGItPmJwYkJ5dGVzUGVyU2VjID0gY2tnZW9tKGZuYW1lLCBs
 cC0+ZF9zZWNzaXplLCAiYnl0ZXMvc2VjdG9yIik7CisgICAgaWYgKGJwYi0+
 YnBiU2VjUGVyVHJhY2sgPT0gMCkKKwlicGItPmJwYlNlY1BlclRyYWNrID0g
 Y2tnZW9tKGZuYW1lLCBscC0+ZF9uc2VjdG9ycywgInNlY3RvcnMvdHJhY2si
 KTsKKyAgICBpZiAoYnBiLT5icGJIZWFkcyA9PSAwKQorCWJwYi0+YnBiSGVh
 ZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2ZSBoZWFk
 cyIpOworICAgIGlmIChicGItPmJwYkh1Z2VTZWN0b3JzID09IDApCisJYnBi
 LT5icGJIdWdlU2VjdG9ycyA9IGxwLT5kX3NlY3BlcnVuaXQ7CisgICAgaWYg
 KGJwYi0+YnBiSGlkZGVuU2VjcyA9PSAwKQorCWJwYi0+YnBiSGlkZGVuU2Vj
 cyA9IGhzOwogfQogCiAvKgpAQCAtODM4LDI0ICs4NDYsMjQgQEAKIHN0YXRp
 YyB2b2lkCiBwcmludF9icGIoc3RydWN0IGJwYiAqYnBiKQogewotICAgIHBy
 aW50ZigiYnBzPSV1IHNwYz0ldSByZXM9JXUgbmZ0PSV1IiwgYnBiLT5icHMs
 IGJwYi0+c3BjLCBicGItPnJlcywKLQkgICBicGItPm5mdCk7Ci0gICAgaWYg
 KGJwYi0+cmRlKQotCXByaW50ZigiIHJkZT0ldSIsIGJwYi0+cmRlKTsKLSAg
 ICBpZiAoYnBiLT5zZWMpCi0JcHJpbnRmKCIgc2VjPSV1IiwgYnBiLT5zZWMp
 OwotICAgIHByaW50ZigiIG1pZD0lI3giLCBicGItPm1pZCk7Ci0gICAgaWYg
 KGJwYi0+c3BmKQotCXByaW50ZigiIHNwZj0ldSIsIGJwYi0+c3BmKTsKLSAg
 ICBwcmludGYoIiBzcHQ9JXUgaGRzPSV1IGhpZD0ldSIsIGJwYi0+c3B0LCBi
 cGItPmhkcywgYnBiLT5oaWQpOwotICAgIGlmIChicGItPmJzZWMpCi0JcHJp
 bnRmKCIgYnNlYz0ldSIsIGJwYi0+YnNlYyk7Ci0gICAgaWYgKCFicGItPnNw
 ZikgewotCXByaW50ZigiIGJzcGY9JXUgcmRjbD0ldSIsIGJwYi0+YnNwZiwg
 YnBiLT5yZGNsKTsKLQlwcmludGYoIiBpbmZzPSIpOwotCXByaW50ZihicGIt
 PmluZnMgPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBicGItPmluZnMpOwot
 CXByaW50ZigiIGJrYnM9Iik7Ci0JcHJpbnRmKGJwYi0+YmticyA9PSBNQVhV
 MTYgPyAiJSN4IiA6ICIldSIsIGJwYi0+Ymticyk7CisgICAgcHJpbnRmKCJC
 eXRlc1BlclNlYz0ldSBTZWNQZXJDbHVzdD0ldSBSZXNTZWN0b3JzPSV1IEZB
 VHM9JXUiLCBicGItPmJwYkJ5dGVzUGVyU2VjLCBicGItPmJwYlNlY1BlckNs
 dXN0LCBicGItPmJwYlJlc1NlY3RvcnMsCisJICAgYnBiLT5icGJGQVRzKTsK
 KyAgICBpZiAoYnBiLT5icGJSb290RGlyRW50cykKKwlwcmludGYoIiBSb290
 RGlyRW50cz0ldSIsIGJwYi0+YnBiUm9vdERpckVudHMpOworICAgIGlmIChi
 cGItPmJwYlNlY3RvcnMpCisJcHJpbnRmKCIgU2VjdG9ycz0ldSIsIGJwYi0+
 YnBiU2VjdG9ycyk7CisgICAgcHJpbnRmKCIgTWVkaWE9JSN4IiwgYnBiLT5i
 cGJNZWRpYSk7CisgICAgaWYgKGJwYi0+YnBiRkFUc2VjcykKKwlwcmludGYo
 IiBGQVRzZWNzPSV1IiwgYnBiLT5icGJGQVRzZWNzKTsKKyAgICBwcmludGYo
 IiBTZWNQZXJUcmFjaz0ldSBIZWFkcz0ldSBIaWRkZW5TZWNzPSV1IiwgYnBi
 LT5icGJTZWNQZXJUcmFjaywgYnBiLT5icGJIZWFkcywgYnBiLT5icGJIaWRk
 ZW5TZWNzKTsKKyAgICBpZiAoYnBiLT5icGJIdWdlU2VjdG9ycykKKwlwcmlu
 dGYoIiBIdWdlU2VjdG9ycz0ldSIsIGJwYi0+YnBiSHVnZVNlY3RvcnMpOwor
 ICAgIGlmICghYnBiLT5icGJGQVRzZWNzKSB7CisJcHJpbnRmKCIgRkFUc2Vj
 cz0ldSBSb290Q2x1c3Rlcj0ldSIsIGJwYi0+YnBiQmlnRkFUc2VjcywgYnBi
 LT5icGJSb290Q2x1c3QpOworCXByaW50ZigiIEZTSW5mbz0iKTsKKwlwcmlu
 dGYoYnBiLT5icGJGU0luZm8gPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBi
 cGItPmJwYkZTSW5mbyk7CisJcHJpbnRmKCIgQmFja3VwPSIpOworCXByaW50
 ZihicGItPmJwYkJhY2t1cCA9PSBNQVhVMTYgPyAiJSN4IiA6ICIldSIsIGJw
 Yi0+YnBiQmFja3VwKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIpOwogfQo=
 
 
 --0-550664387-1263505954=:34069--


More information about the freebsd-bugs mailing list