<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>108316</bug_id>
          
          <creation_ts>2013-01-30 02:43:42 -0800</creation_ts>
          <short_desc>[Qt] Remove QT4_UNICODE related code paths</short_desc>
          <delta_ts>2013-01-30 04:29:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>benjamin</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>820004</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-01-30 02:43:42 -0800</bug_when>
    <thetext>[Qt] Remove QT4_UNICODE related code paths</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820014</commentid>
    <comment_count>1</comment_count>
      <attachid>185451</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-01-30 02:50:25 -0800</bug_when>
    <thetext>Created attachment 185451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820082</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-01-30 04:29:51 -0800</bug_when>
    <thetext>Committed r141255: &lt;http://trac.webkit.org/changeset/141255&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185451</attachid>
            <date>2013-01-30 02:50:25 -0800</date>
            <delta_ts>2013-01-30 03:01:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108316-20130130114710.patch</filename>
            <type>text/plain</type>
            <size>30545</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY0ZjM4ZjI1NWI2N2RmYjdjYWZmMmE5
ZTRhMDc3YTU3Y2E0MTllY2UuLjEyYmE4MzAyMTgwOTQ4NzkzYzYyOGE4ZGNlODA4OTZhMTgxMmZl
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDEtMzAgIFNpbW9uIEhhdXNtYW5uICA8c2lt
b24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gUmVtb3ZlIFFUNF9VTklDT0RF
IHJlbGF0ZWQgY29kZSBwYXRocworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA4MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgR2V0IHJpZCBvZiBRVDRfVU5JQ09ERSBhbmQgYW55IHJlbGF0ZWQgY29kZSBw
YXRocy4gVGhlIFF0IHBvcnQKKyAgICAgICAgcmVxdWlyZXMgUXQ1IGFuZCBJQ1UgdGhlc2UgZGF5
cy4KKworICAgICAgICAqIFdURi5neXBpOgorICAgICAgICAqIFdURi5wcm86CisgICAgICAgICog
d3RmL3VuaWNvZGUvVW5pY29kZS5oOgorICAgICAgICAqIHd0Zi91bmljb2RlL3F0NC9Vbmljb2Rl
UXQ0Lmg6IFJlbW92ZWQuCisKIDIwMTMtMDEtMjkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEludHJvZHVjaW5nIFdURjo6VHlwZVNhZmVFbnVtIGFuZCBEYXRhYmFz
ZUVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRhNGM3ZjBlN2I1YzNmYTMzZDE1MDQ4ZTU2YzNjYjhhYjM4
MzJjZGUuLjJiMzBiYWE4ZjYxZmM0OWU2M2NiMzQ2YzAwZTI3Njg3ODZiYzJjYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wMS0zMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5o
YXVzbWFubkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZW1vdmUgUVQ0X1VOSUNPREUgcmVs
YXRlZCBjb2RlIHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDgzMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBHZXQgcmlkIG9mIFFUNF9VTklDT0RFIGFuZCBhbnkgcmVsYXRlZCBjb2RlIHBhdGhz
LiBUaGUgUXQgcG9ydAorICAgICAgICByZXF1aXJlcyBRdDUgYW5kIElDVSB0aGVzZSBkYXlzLiBU
aGlzIGFsc28gYWxsb3dzIGZvciB0aGUgcmVtb3ZhbAorICAgICAgICBvZiBUZXh0Q29kZWNRdC4K
KworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmNvZGVkSG9zdG5hbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3I6Om5vcm1hbGl6ZVZvaWNp
bmdNYXJrcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEVuY29kaW5nOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZW5k
VGV4dENvZGVjTWFwcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oOiBS
ZW1vdmVkLgorCiAyMDEzLTAxLTMwICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIGdldERlY29yYXRpb25Sb290QW5kRGVjb3JhdGVkUm9vdCBzaG91bGQg
YWRkIG5ldyB1c2VyIGFnZW50IHNoYWRvdyByb290cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cKaW5kZXggNDU5ZTQyMjkxMmM3ZWE5MTEwMzEzNDJhNzE5MmQ2ZjI3NTY2YmQ1OS4uNTU3NTkz
MDgwOWY1OGQ3MjNiNWMwYmRkNmRmNTJlODg5NGMyMTQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEtMzAgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gUmVtb3ZlIFFUNF9VTklD
T0RFIHJlbGF0ZWQgY29kZSBwYXRocworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA4MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbjog
VGhlIGZlYXR1cmUgbWFjcm8gaGFzIGJlZW4gcmVtb3ZlZC4KKwogMjAxMy0wMS0yOSAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE0MDk4My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkg
Yi9Tb3VyY2UvV1RGL1dURi5neXBpCmluZGV4IDUzMzZlMDk2ODA5NjI4ZTYyNmY1ZjBlZmJlYzIx
N2FkZTNjMDYxMzguLmY5MWRkYjJhMTQ5YzY5ZWVlZjhjNDljNjY3YTNmNDcyNDRiNjc3NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLmd5cGkKKysrIGIvU291cmNlL1dURi9XVEYuZ3lwaQpA
QCAtMjU2LDcgKzI1Niw2IEBACiAgICAgICAgICAgICAnd3RmL3VuaWNvZGUvZ2xpYi9Vbmljb2Rl
R0xpYi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi91bmljb2RlL2dsaWIvVW5pY29kZUdMaWIuaCcs
CiAgICAgICAgICAgICAnd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCcsCi0gICAgICAg
ICAgICAnd3RmL3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaCcsCiAgICAgICAgICAgICAnd3RmL3Vu
aWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNwcCcsCiAgICAgICAgICAgICAnd3RmL3VuaWNvZGUv
d2NoYXIvVW5pY29kZVdjaGFyLmgnLAogICAgICAgICAgICAgJ3d0Zi93aW4vTWFpblRocmVhZFdp
bi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYucHJvIGIvU291cmNlL1dURi9XVEYu
cHJvCmluZGV4IGM5MjljNjgxNmFlZDZkNWZkN2NkYzkzYzVlNDlmMzljMDU2ZmRhZmQuLjcyN2Q3
OGJiODdjMjZmNmZjZDQyZWVjYjI5ZDZhYTdmM2NjYmYxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnBybworKysgYi9Tb3VyY2UvV1RGL1dURi5wcm8KQEAgLTE3OCw3ICsxNzgsNiBAQCBI
RUFERVJTICs9IFwKICAgICB1bmljb2RlL0NoYXJhY3Rlck5hbWVzLmggXAogICAgIHVuaWNvZGUv
Q29sbGF0b3IuaCBcCiAgICAgdW5pY29kZS9pY3UvVW5pY29kZUljdS5oIFwKLSAgICB1bmljb2Rl
L3F0NC9Vbmljb2RlUXQ0LmggXAogICAgIHVuaWNvZGUvU2NyaXB0Q29kZXNGcm9tSUNVLmggXAog
ICAgIHVuaWNvZGUvVW5pY29kZS5oIFwKICAgICB1bmljb2RlL1VuaWNvZGVNYWNyb3NGcm9tSUNV
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2RlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL1VuaWNvZGUuaAppbmRleCA5MjYwMjExOTFjYzI5YmFiYjFhZTQ3
OTNlNjdiNTg1ZTgyMGNmZjIxLi4xMWZlZTZiMGI4MzA5ZWNjYzJlZDNmZmQ0MTg5YjY0ZmU5NGMx
MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL1VuaWNvZGUuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi91bmljb2RlL1VuaWNvZGUuaApAQCAtMjgsOSArMjgsNyBAQAogLy8gRGVm
aW5lIHBsYXRmb3JtIG5ldXRyYWwgOCBiaXQgY2hhcmFjdGVyIHR5cGUgKEwgaXMgZm9yIExhdGlu
LTEpLgogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIExDaGFyOwogCi0jaWYgVVNFKFFUNF9VTklDT0RF
KQotI2luY2x1ZGUgInF0NC9Vbmljb2RlUXQ0LmgiCi0jZWxpZiBVU0UoSUNVX1VOSUNPREUpCisj
aWYgVVNFKElDVV9VTklDT0RFKQogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1
Lmg+CiAjZWxpZiBVU0UoR0xJQl9VTklDT0RFKQogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2dsaWIv
VW5pY29kZUdMaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvcXQ0L1Vu
aWNvZGVRdDQuaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJkMWFkNGMxNTczY2RiYTk2Mjc0NTIxYjhjZGY5
YjBmMThlMzA0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3F0NC9Vbmljb2RlUXQ0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNzcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlr
b3MgPHN0YWlrb3NAa2RlLm9yZz4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3Nr
dXJ5YWtvdiA8YXBAbnlwb3AuY29tPgotICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0j
aWZuZGVmIFdURl9VTklDT0RFX1FUNF9ICi0jZGVmaW5lIFdURl9VTklDT0RFX1FUNF9ICi0KLSNp
bmNsdWRlIDx3dGYvdW5pY29kZS9TY3JpcHRDb2Rlc0Zyb21JQ1UuaD4KLSNpbmNsdWRlIDx3dGYv
dW5pY29kZS9Vbmljb2RlTWFjcm9zRnJvbUlDVS5oPgotCi0jaW5jbHVkZSA8UUNoYXI+Ci0jaW5j
bHVkZSA8UVN0cmluZz4KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotCi0jaW5jbHVkZSA8c3RkaW50
Lmg+Ci0jaWYgVVNFKElDVV9VTklDT0RFKQotI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgotI2Vu
ZGlmCi0KLVFUX0JFR0lOX05BTUVTUEFDRQotbmFtZXNwYWNlIFFVbmljb2RlVGFibGVzIHsKLSAg
ICBzdHJ1Y3QgUHJvcGVydGllcyB7Ci0gICAgICAgIHVzaG9ydCBjYXRlZ29yeSA6IDg7Ci0gICAg
ICAgIHVzaG9ydCBsaW5lX2JyZWFrX2NsYXNzIDogODsKLSAgICAgICAgdXNob3J0IGRpcmVjdGlv
biA6IDg7Ci0gICAgICAgIHVzaG9ydCBjb21iaW5pbmdDbGFzcyA6ODsKLSAgICAgICAgdXNob3J0
IGpvaW5pbmcgOiAyOwotICAgICAgICBzaWduZWQgc2hvcnQgZGlnaXRWYWx1ZSA6IDY7IC8qIDUg
bmVlZGVkICovCi0gICAgICAgIHVzaG9ydCB1bmljb2RlVmVyc2lvbiA6IDQ7Ci0gICAgICAgIHVz
aG9ydCBsb3dlckNhc2VTcGVjaWFsIDogMTsKLSAgICAgICAgdXNob3J0IHVwcGVyQ2FzZVNwZWNp
YWwgOiAxOwotICAgICAgICB1c2hvcnQgdGl0bGVDYXNlU3BlY2lhbCA6IDE7Ci0gICAgICAgIHVz
aG9ydCBjYXNlRm9sZFNwZWNpYWwgOiAxOyAvKiBjdXJyZW50bHkgdW51c2VkICovCi0gICAgICAg
IHNpZ25lZCBzaG9ydCBtaXJyb3JEaWZmIDogMTY7Ci0gICAgICAgIHNpZ25lZCBzaG9ydCBsb3dl
ckNhc2VEaWZmIDogMTY7Ci0gICAgICAgIHNpZ25lZCBzaG9ydCB1cHBlckNhc2VEaWZmIDogMTY7
Ci0gICAgICAgIHNpZ25lZCBzaG9ydCB0aXRsZUNhc2VEaWZmIDogMTY7Ci0gICAgICAgIHNpZ25l
ZCBzaG9ydCBjYXNlRm9sZERpZmYgOiAxNjsKLSAgICB9OwotICAgIFFfQ09SRV9FWFBPUlQgY29u
c3QgUHJvcGVydGllcyAqIFFUX0ZBU1RDQUxMIHByb3BlcnRpZXModWludCB1Y3M0KTsKLSAgICBR
X0NPUkVfRVhQT1JUIGNvbnN0IFByb3BlcnRpZXMgKiBRVF9GQVNUQ0FMTCBwcm9wZXJ0aWVzKHVz
aG9ydCB1Y3MyKTsKLX0KLVFUX0VORF9OQU1FU1BBQ0UKLQotLy8gdWdseSBoYWNrIHRvIG1ha2Ug
VUNoYXIgY29tcGF0aWJsZSB3aXRoIEpTQ2hhciBpbiBBUEkvSlNTdHJpbmdSZWYuaAotI2lmIGRl
ZmluZWQoUV9PU19XSU4pIHx8IChDT01QSUxFUihSVkNUKSAmJiAhT1MoTElOVVgpKQotdHlwZWRl
ZiB3Y2hhcl90IFVDaGFyOwotI2Vsc2UKLXR5cGVkZWYgdWludDE2X3QgVUNoYXI7Ci0jZW5kaWYK
LQotI2lmICFVU0UoSUNVX1VOSUNPREUpCi10eXBlZGVmIHVpbnQzMl90IFVDaGFyMzI7Ci0jZW5k
aWYKLQotbmFtZXNwYWNlIFdURiB7Ci1uYW1lc3BhY2UgVW5pY29kZSB7Ci0KLWVudW0gRGlyZWN0
aW9uIHsKLSAgICBMZWZ0VG9SaWdodCA9IFFDaGFyOjpEaXJMLAotICAgIFJpZ2h0VG9MZWZ0ID0g
UUNoYXI6OkRpclIsCi0gICAgRXVyb3BlYW5OdW1iZXIgPSBRQ2hhcjo6RGlyRU4sCi0gICAgRXVy
b3BlYW5OdW1iZXJTZXBhcmF0b3IgPSBRQ2hhcjo6RGlyRVMsCi0gICAgRXVyb3BlYW5OdW1iZXJU
ZXJtaW5hdG9yID0gUUNoYXI6OkRpckVULAotICAgIEFyYWJpY051bWJlciA9IFFDaGFyOjpEaXJB
TiwKLSAgICBDb21tb25OdW1iZXJTZXBhcmF0b3IgPSBRQ2hhcjo6RGlyQ1MsCi0gICAgQmxvY2tT
ZXBhcmF0b3IgPSBRQ2hhcjo6RGlyQiwKLSAgICBTZWdtZW50U2VwYXJhdG9yID0gUUNoYXI6OkRp
clMsCi0gICAgV2hpdGVTcGFjZU5ldXRyYWwgPSBRQ2hhcjo6RGlyV1MsCi0gICAgT3RoZXJOZXV0
cmFsID0gUUNoYXI6OkRpck9OLAotICAgIExlZnRUb1JpZ2h0RW1iZWRkaW5nID0gUUNoYXI6OkRp
ckxSRSwKLSAgICBMZWZ0VG9SaWdodE92ZXJyaWRlID0gUUNoYXI6OkRpckxSTywKLSAgICBSaWdo
dFRvTGVmdEFyYWJpYyA9IFFDaGFyOjpEaXJBTCwKLSAgICBSaWdodFRvTGVmdEVtYmVkZGluZyA9
IFFDaGFyOjpEaXJSTEUsCi0gICAgUmlnaHRUb0xlZnRPdmVycmlkZSA9IFFDaGFyOjpEaXJSTE8s
Ci0gICAgUG9wRGlyZWN0aW9uYWxGb3JtYXQgPSBRQ2hhcjo6RGlyUERGLAotICAgIE5vblNwYWNp
bmdNYXJrID0gUUNoYXI6OkRpck5TTSwKLSAgICBCb3VuZGFyeU5ldXRyYWwgPSBRQ2hhcjo6RGly
Qk4KLX07Ci0KLWVudW0gRGVjb21wb3NpdGlvblR5cGUgewotICAgIERlY29tcG9zaXRpb25Ob25l
ID0gUUNoYXI6Ok5vRGVjb21wb3NpdGlvbiwKLSAgICBEZWNvbXBvc2l0aW9uQ2Fub25pY2FsID0g
UUNoYXI6OkNhbm9uaWNhbCwKLSAgICBEZWNvbXBvc2l0aW9uQ29tcGF0ID0gUUNoYXI6OkNvbXBh
dCwKLSAgICBEZWNvbXBvc2l0aW9uQ2lyY2xlID0gUUNoYXI6OkNpcmNsZSwKLSAgICBEZWNvbXBv
c2l0aW9uRmluYWwgPSBRQ2hhcjo6RmluYWwsCi0gICAgRGVjb21wb3NpdGlvbkZvbnQgPSBRQ2hh
cjo6Rm9udCwKLSAgICBEZWNvbXBvc2l0aW9uRnJhY3Rpb24gPSBRQ2hhcjo6RnJhY3Rpb24sCi0g
ICAgRGVjb21wb3NpdGlvbkluaXRpYWwgPSBRQ2hhcjo6SW5pdGlhbCwKLSAgICBEZWNvbXBvc2l0
aW9uSXNvbGF0ZWQgPSBRQ2hhcjo6SXNvbGF0ZWQsCi0gICAgRGVjb21wb3NpdGlvbk1lZGlhbCA9
IFFDaGFyOjpNZWRpYWwsCi0gICAgRGVjb21wb3NpdGlvbk5hcnJvdyA9IFFDaGFyOjpOYXJyb3cs
Ci0gICAgRGVjb21wb3NpdGlvbk5vQnJlYWsgPSBRQ2hhcjo6Tm9CcmVhaywKLSAgICBEZWNvbXBv
c2l0aW9uU21hbGwgPSBRQ2hhcjo6U21hbGwsCi0gICAgRGVjb21wb3NpdGlvblNxdWFyZSA9IFFD
aGFyOjpTcXVhcmUsCi0gICAgRGVjb21wb3NpdGlvblN1YiA9IFFDaGFyOjpTdWIsCi0gICAgRGVj
b21wb3NpdGlvblN1cGVyID0gUUNoYXI6OlN1cGVyLAotICAgIERlY29tcG9zaXRpb25WZXJ0aWNh
bCA9IFFDaGFyOjpWZXJ0aWNhbCwKLSAgICBEZWNvbXBvc2l0aW9uV2lkZSA9IFFDaGFyOjpXaWRl
Ci19OwotCi1lbnVtIENoYXJDYXRlZ29yeSB7Ci0gICAgTm9DYXRlZ29yeSA9IDAsCi0gICAgTWFy
a19Ob25TcGFjaW5nID0gVV9NQVNLKFFDaGFyOjpNYXJrX05vblNwYWNpbmcpLAotICAgIE1hcmtf
U3BhY2luZ0NvbWJpbmluZyA9IFVfTUFTSyhRQ2hhcjo6TWFya19TcGFjaW5nQ29tYmluaW5nKSwK
LSAgICBNYXJrX0VuY2xvc2luZyA9IFVfTUFTSyhRQ2hhcjo6TWFya19FbmNsb3NpbmcpLAotICAg
IE51bWJlcl9EZWNpbWFsRGlnaXQgPSBVX01BU0soUUNoYXI6Ok51bWJlcl9EZWNpbWFsRGlnaXQp
LAotICAgIE51bWJlcl9MZXR0ZXIgPSBVX01BU0soUUNoYXI6Ok51bWJlcl9MZXR0ZXIpLAotICAg
IE51bWJlcl9PdGhlciA9IFVfTUFTSyhRQ2hhcjo6TnVtYmVyX090aGVyKSwKLSAgICBTZXBhcmF0
b3JfU3BhY2UgPSBVX01BU0soUUNoYXI6OlNlcGFyYXRvcl9TcGFjZSksCi0gICAgU2VwYXJhdG9y
X0xpbmUgPSBVX01BU0soUUNoYXI6OlNlcGFyYXRvcl9MaW5lKSwKLSAgICBTZXBhcmF0b3JfUGFy
YWdyYXBoID0gVV9NQVNLKFFDaGFyOjpTZXBhcmF0b3JfUGFyYWdyYXBoKSwKLSAgICBPdGhlcl9D
b250cm9sID0gVV9NQVNLKFFDaGFyOjpPdGhlcl9Db250cm9sKSwKLSAgICBPdGhlcl9Gb3JtYXQg
PSBVX01BU0soUUNoYXI6Ok90aGVyX0Zvcm1hdCksCi0gICAgT3RoZXJfU3Vycm9nYXRlID0gVV9N
QVNLKFFDaGFyOjpPdGhlcl9TdXJyb2dhdGUpLAotICAgIE90aGVyX1ByaXZhdGVVc2UgPSBVX01B
U0soUUNoYXI6Ok90aGVyX1ByaXZhdGVVc2UpLAotICAgIE90aGVyX05vdEFzc2lnbmVkID0gVV9N
QVNLKFFDaGFyOjpPdGhlcl9Ob3RBc3NpZ25lZCksCi0gICAgTGV0dGVyX1VwcGVyY2FzZSA9IFVf
TUFTSyhRQ2hhcjo6TGV0dGVyX1VwcGVyY2FzZSksCi0gICAgTGV0dGVyX0xvd2VyY2FzZSA9IFVf
TUFTSyhRQ2hhcjo6TGV0dGVyX0xvd2VyY2FzZSksCi0gICAgTGV0dGVyX1RpdGxlY2FzZSA9IFVf
TUFTSyhRQ2hhcjo6TGV0dGVyX1RpdGxlY2FzZSksCi0gICAgTGV0dGVyX01vZGlmaWVyID0gVV9N
QVNLKFFDaGFyOjpMZXR0ZXJfTW9kaWZpZXIpLAotICAgIExldHRlcl9PdGhlciA9IFVfTUFTSyhR
Q2hhcjo6TGV0dGVyX090aGVyKSwKLSAgICBQdW5jdHVhdGlvbl9Db25uZWN0b3IgPSBVX01BU0so
UUNoYXI6OlB1bmN0dWF0aW9uX0Nvbm5lY3RvciksCi0gICAgUHVuY3R1YXRpb25fRGFzaCA9IFVf
TUFTSyhRQ2hhcjo6UHVuY3R1YXRpb25fRGFzaCksCi0gICAgUHVuY3R1YXRpb25fT3BlbiA9IFVf
TUFTSyhRQ2hhcjo6UHVuY3R1YXRpb25fT3BlbiksCi0gICAgUHVuY3R1YXRpb25fQ2xvc2UgPSBV
X01BU0soUUNoYXI6OlB1bmN0dWF0aW9uX0Nsb3NlKSwKLSAgICBQdW5jdHVhdGlvbl9Jbml0aWFs
UXVvdGUgPSBVX01BU0soUUNoYXI6OlB1bmN0dWF0aW9uX0luaXRpYWxRdW90ZSksCi0gICAgUHVu
Y3R1YXRpb25fRmluYWxRdW90ZSA9IFVfTUFTSyhRQ2hhcjo6UHVuY3R1YXRpb25fRmluYWxRdW90
ZSksCi0gICAgUHVuY3R1YXRpb25fT3RoZXIgPSBVX01BU0soUUNoYXI6OlB1bmN0dWF0aW9uX090
aGVyKSwKLSAgICBTeW1ib2xfTWF0aCA9IFVfTUFTSyhRQ2hhcjo6U3ltYm9sX01hdGgpLAotICAg
IFN5bWJvbF9DdXJyZW5jeSA9IFVfTUFTSyhRQ2hhcjo6U3ltYm9sX0N1cnJlbmN5KSwKLSAgICBT
eW1ib2xfTW9kaWZpZXIgPSBVX01BU0soUUNoYXI6OlN5bWJvbF9Nb2RpZmllciksCi0gICAgU3lt
Ym9sX090aGVyID0gVV9NQVNLKFFDaGFyOjpTeW1ib2xfT3RoZXIpCi19OwotCi0KLS8vIEZJWE1F
OiBoYW5kbGUgc3Vycm9nYXRlcyBjb3JyZWN0bHkgaW4gYWxsIG1ldGhvZHMKLQotaW5saW5lIFVD
aGFyMzIgdG9Mb3dlcihVQ2hhcjMyIGNoKQotewotICAgIHJldHVybiBRQ2hhcjo6dG9Mb3dlcih1
aW50MzJfdChjaCkpOwotfQotCi1pbmxpbmUgaW50IHRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50
IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNyYywgaW50IHNyY0xlbmd0aCwgIGJvb2wqIGVy
cm9yKQotewotICAgIGNvbnN0IFVDaGFyICplID0gc3JjICsgc3JjTGVuZ3RoOwotICAgIGNvbnN0
IFVDaGFyICpzID0gc3JjOwotICAgIFVDaGFyICpyID0gcmVzdWx0OwotICAgIHVpbnQgcmluZGV4
ID0gMDsKLQotICAgIC8vIHRoaXMgYXZvaWRzIG9uZSBvdXQgb2YgYm91bmRzIGNoZWNrIGluIHRo
ZSBsb29wCi0gICAgaWYgKHMgPCBlICYmIFFDaGFyKCpzKS5pc0xvd1N1cnJvZ2F0ZSgpKSB7Ci0g
ICAgICAgIGlmIChyKQotICAgICAgICAgICAgcltyaW5kZXhdID0gKnMrKzsKLSAgICAgICAgKyty
aW5kZXg7Ci0gICAgfQotCi0gICAgaW50IG5lZWRlZCA9IDA7Ci0gICAgd2hpbGUgKHMgPCBlICYm
IChyaW5kZXggPCB1aW50KHJlc3VsdExlbmd0aCkgfHwgIXIpKSB7Ci0gICAgICAgIHVpbnQgYyA9
ICpzOwotICAgICAgICBpZiAoUUNoYXIoYykuaXNMb3dTdXJyb2dhdGUoKSAmJiBRQ2hhcigqKHMg
LSAxKSkuaXNIaWdoU3Vycm9nYXRlKCkpCi0gICAgICAgICAgICBjID0gUUNoYXI6OnN1cnJvZ2F0
ZVRvVWNzNCgqKHMgLSAxKSwgYyk7Ci0gICAgICAgIGNvbnN0IFFVbmljb2RlVGFibGVzOjpQcm9w
ZXJ0aWVzICpwcm9wID0gUVVuaWNvZGVUYWJsZXM6OnByb3BlcnRpZXMoYyk7Ci0gICAgICAgIGlm
IChwcm9wLT5sb3dlckNhc2VTcGVjaWFsKSB7Ci0gICAgICAgICAgICBRU3RyaW5nIHFzdHJpbmc7
Ci0gICAgICAgICAgICBpZiAoYyA8IDB4MTAwMDApIHsKLSAgICAgICAgICAgICAgICBxc3RyaW5n
ICs9IFFDaGFyKGMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBxc3Ry
aW5nICs9IFFDaGFyKCoocy0xKSk7Ci0gICAgICAgICAgICAgICAgcXN0cmluZyArPSBRQ2hhcigq
cyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBxc3RyaW5nID0gcXN0cmluZy50b0xvd2Vy
KCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHFzdHJpbmcubGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICAgICAgICAgIGlmIChyaW5kZXggPj0gdWludChyZXN1bHRMZW5ndGgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIG5lZWRlZCArPSBxc3RyaW5nLmxlbmd0aCgpIC0gaTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmIChyKQotICAgICAgICAgICAgICAgICAgICByW3JpbmRleF0gPSBxc3RyaW5nLmF0KGkp
LnVuaWNvZGUoKTsKLSAgICAgICAgICAgICAgICArK3JpbmRleDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChyKQotICAgICAgICAgICAgICAgIHJbcmlu
ZGV4XSA9ICpzICsgcHJvcC0+bG93ZXJDYXNlRGlmZjsKLSAgICAgICAgICAgICsrcmluZGV4Owot
ICAgICAgICB9Ci0gICAgICAgICsrczsKLSAgICB9Ci0gICAgaWYgKHMgPCBlKQotICAgICAgICBu
ZWVkZWQgKz0gZSAtIHM7Ci0gICAgKmVycm9yID0gKG5lZWRlZCAhPSAwKTsKLSAgICBpZiAocmlu
ZGV4IDwgdWludChyZXN1bHRMZW5ndGgpKQotICAgICAgICByW3JpbmRleF0gPSAwOwotICAgIHJl
dHVybiByaW5kZXggKyBuZWVkZWQ7Ci19Ci0KLWlubGluZSBVQ2hhcjMyIHRvVXBwZXIoVUNoYXIz
MiBjKQotewotICAgIHJldHVybiBRQ2hhcjo6dG9VcHBlcih1aW50MzJfdChjKSk7Ci19Ci0KLWlu
bGluZSBpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBV
Q2hhciogc3JjLCBpbnQgc3JjTGVuZ3RoLCAgYm9vbCogZXJyb3IpCi17Ci0gICAgY29uc3QgVUNo
YXIgKmUgPSBzcmMgKyBzcmNMZW5ndGg7Ci0gICAgY29uc3QgVUNoYXIgKnMgPSBzcmM7Ci0gICAg
VUNoYXIgKnIgPSByZXN1bHQ7Ci0gICAgaW50IHJpbmRleCA9IDA7Ci0KLSAgICAvLyB0aGlzIGF2
b2lkcyBvbmUgb3V0IG9mIGJvdW5kcyBjaGVjayBpbiB0aGUgbG9vcAotICAgIGlmIChzIDwgZSAm
JiBRQ2hhcigqcykuaXNMb3dTdXJyb2dhdGUoKSkgewotICAgICAgICBpZiAocikKLSAgICAgICAg
ICAgIHJbcmluZGV4XSA9ICpzKys7Ci0gICAgICAgICsrcmluZGV4OwotICAgIH0KLQotICAgIGlu
dCBuZWVkZWQgPSAwOwotICAgIHdoaWxlIChzIDwgZSAmJiAocmluZGV4IDwgcmVzdWx0TGVuZ3Ro
IHx8ICFyKSkgewotICAgICAgICB1aW50IGMgPSAqczsKLSAgICAgICAgaWYgKFFDaGFyKGMpLmlz
TG93U3Vycm9nYXRlKCkgJiYgUUNoYXIoKihzIC0gMSkpLmlzSGlnaFN1cnJvZ2F0ZSgpKQotICAg
ICAgICAgICAgYyA9IFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKihzIC0gMSksIGMpOwotICAgICAg
ICBjb25zdCBRVW5pY29kZVRhYmxlczo6UHJvcGVydGllcyAqcHJvcCA9IFFVbmljb2RlVGFibGVz
Ojpwcm9wZXJ0aWVzKGMpOwotICAgICAgICBpZiAocHJvcC0+dXBwZXJDYXNlU3BlY2lhbCkgewot
ICAgICAgICAgICAgUVN0cmluZyBxc3RyaW5nOwotICAgICAgICAgICAgaWYgKGMgPCAweDEwMDAw
KSB7Ci0gICAgICAgICAgICAgICAgcXN0cmluZyArPSBRQ2hhcihjKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcXN0cmluZyArPSBRQ2hhcigqKHMtMSkpOwotICAgICAg
ICAgICAgICAgIHFzdHJpbmcgKz0gUUNoYXIoKnMpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcXN0cmluZyA9IHFzdHJpbmcudG9VcHBlcigpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBxc3RyaW5nLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAocmlu
ZGV4ID49IHJlc3VsdExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBuZWVkZWQgKz0gcXN0
cmluZy5sZW5ndGgoKSAtIGk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocikKLSAgICAgICAgICAgICAgICAgICAgclty
aW5kZXhdID0gcXN0cmluZy5hdChpKS51bmljb2RlKCk7Ci0gICAgICAgICAgICAgICAgKytyaW5k
ZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAocikK
LSAgICAgICAgICAgICAgICByW3JpbmRleF0gPSAqcyArIHByb3AtPnVwcGVyQ2FzZURpZmY7Ci0g
ICAgICAgICAgICArK3JpbmRleDsKLSAgICAgICAgfQotICAgICAgICArK3M7Ci0gICAgfQotICAg
IGlmIChzIDwgZSkKLSAgICAgICAgbmVlZGVkICs9IGUgLSBzOwotICAgICplcnJvciA9IChuZWVk
ZWQgIT0gMCk7Ci0gICAgaWYgKHJpbmRleCA8IHJlc3VsdExlbmd0aCkKLSAgICAgICAgcltyaW5k
ZXhdID0gMDsKLSAgICByZXR1cm4gcmluZGV4ICsgbmVlZGVkOwotfQotCi1pbmxpbmUgaW50IHRv
VGl0bGVDYXNlKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gUUNoYXI6OnRvVGl0bGVDYXNlKHVp
bnQzMl90KGMpKTsKLX0KLQotaW5saW5lIFVDaGFyMzIgZm9sZENhc2UoVUNoYXIzMiBjKQotewot
ICAgIHJldHVybiBRQ2hhcjo6dG9DYXNlRm9sZGVkKHVpbnQzMl90KGMpKTsKLX0KLQotaW5saW5l
IGludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hh
ciogc3JjLCBpbnQgc3JjTGVuZ3RoLCAgYm9vbCogZXJyb3IpCi17Ci0gICAgLy8gRklYTUU6IGhh
bmRsZSBzcGVjaWFsIGNhc2luZy4gRWFzaWVzdCB3aXRoIHNvbWUgbG93IGxldmVsIEFQSSBpbiBR
dAotICAgICplcnJvciA9IGZhbHNlOwotICAgIGlmIChyZXN1bHRMZW5ndGggPCBzcmNMZW5ndGgp
IHsKLSAgICAgICAgKmVycm9yID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHNyY0xlbmd0aDsKLSAg
ICB9Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcmNMZW5ndGg7ICsraSkKLSAgICAgICAgcmVz
dWx0W2ldID0gUUNoYXI6OnRvQ2FzZUZvbGRlZCh1c2hvcnQoc3JjW2ldKSk7Ci0gICAgcmV0dXJu
IHNyY0xlbmd0aDsKLX0KLQotaW5saW5lIGJvb2wgaXNBcmFiaWNDaGFyKFVDaGFyMzIgYykKLXsK
LSAgICByZXR1cm4gYyA+PSAweDA2MDAgJiYgYyA8PSAweDA2RkY7Ci19Ci0KLWlubGluZSBib29s
IGlzUHJpbnRhYmxlQ2hhcihVQ2hhcjMyIGMpCi17Ci0gICAgY29uc3QgdWludCB0ZXN0ID0gVV9N
QVNLKFFDaGFyOjpPdGhlcl9Db250cm9sKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgVV9NQVNL
KFFDaGFyOjpPdGhlcl9Ob3RBc3NpZ25lZCk7Ci0gICAgcmV0dXJuICEoVV9NQVNLKFFDaGFyOjpj
YXRlZ29yeSh1aW50MzJfdChjKSkpICYgdGVzdCk7Ci19Ci0KLWlubGluZSBib29sIGlzU2VwYXJh
dG9yU3BhY2UoVUNoYXIzMiBjKQotewotICAgIHJldHVybiBRQ2hhcjo6Y2F0ZWdvcnkodWludDMy
X3QoYykpID09IFFDaGFyOjpTZXBhcmF0b3JfU3BhY2U7Ci19Ci0KLWlubGluZSBib29sIGlzUHVu
Y3QoVUNoYXIzMiBjKQotewotICAgIGNvbnN0IHVpbnQgdGVzdCA9IFVfTUFTSyhRQ2hhcjo6UHVu
Y3R1YXRpb25fQ29ubmVjdG9yKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgVV9NQVNLKFFDaGFy
OjpQdW5jdHVhdGlvbl9EYXNoKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgVV9NQVNLKFFDaGFy
OjpQdW5jdHVhdGlvbl9PcGVuKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgVV9NQVNLKFFDaGFy
OjpQdW5jdHVhdGlvbl9DbG9zZSkgfAotICAgICAgICAgICAgICAgICAgICAgIFVfTUFTSyhRQ2hh
cjo6UHVuY3R1YXRpb25fSW5pdGlhbFF1b3RlKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgVV9N
QVNLKFFDaGFyOjpQdW5jdHVhdGlvbl9GaW5hbFF1b3RlKSB8Ci0gICAgICAgICAgICAgICAgICAg
ICAgVV9NQVNLKFFDaGFyOjpQdW5jdHVhdGlvbl9PdGhlcik7Ci0gICAgcmV0dXJuIFVfTUFTSyhR
Q2hhcjo6Y2F0ZWdvcnkodWludDMyX3QoYykpKSAmIHRlc3Q7Ci19Ci0KLWlubGluZSBib29sIGlz
TG93ZXIoVUNoYXIzMiBjKQotewotICAgIHJldHVybiBRQ2hhcjo6Y2F0ZWdvcnkodWludDMyX3Qo
YykpID09IFFDaGFyOjpMZXR0ZXJfTG93ZXJjYXNlOwotfQotCi1pbmxpbmUgYm9vbCBoYXNMaW5l
QnJlYWtpbmdQcm9wZXJ0eUNvbXBsZXhDb250ZXh0KFVDaGFyMzIpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHRvIHJldHVybiB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaGFzIGxpbmUg
YnJlYWtpbmcgcHJvcGVydHkgU0EgKENvbXBsZXggQ29udGV4dCkuCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1pbmxpbmUgVUNoYXIzMiBtaXJyb3JlZENoYXIoVUNoYXIzMiBjKQotewotICAgIHJl
dHVybiBRQ2hhcjo6bWlycm9yZWRDaGFyKHVpbnQzMl90KGMpKTsKLX0KLQotaW5saW5lIHVpbnQ4
X3QgY29tYmluaW5nQ2xhc3MoVUNoYXIzMiBjKQotewotICAgIHJldHVybiBRQ2hhcjo6Y29tYmlu
aW5nQ2xhc3ModWludDMyX3QoYykpOwotfQotCi1pbmxpbmUgRGVjb21wb3NpdGlvblR5cGUgZGVj
b21wb3NpdGlvblR5cGUoVUNoYXIzMiBjKQotewotICAgIHJldHVybiAoRGVjb21wb3NpdGlvblR5
cGUpUUNoYXI6OmRlY29tcG9zaXRpb25UYWcoYyk7Ci19Ci0KLWlubGluZSBpbnQgdW1lbWNhc2Vj
bXAoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQotewotICAgIC8vIGhh
bmRsZSBzdXJyb2dhdGVzIGNvcnJlY3RseQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyAr
K2kpIHsKLSAgICAgICAgdWludCBjMSA9IFFDaGFyOjp0b0Nhc2VGb2xkZWQodXNob3J0KGFbaV0p
KTsKLSAgICAgICAgdWludCBjMiA9IFFDaGFyOjp0b0Nhc2VGb2xkZWQodXNob3J0KGJbaV0pKTsK
LSAgICAgICAgaWYgKGMxICE9IGMyKQotICAgICAgICAgICAgcmV0dXJuIGMxIC0gYzI7Ci0gICAg
fQotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgRGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMy
IGMpCi17Ci0gICAgcmV0dXJuIChEaXJlY3Rpb24pUUNoYXI6OmRpcmVjdGlvbih1aW50MzJfdChj
KSk7Ci19Ci0KLWlubGluZSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMiBjKQotewotICAg
IHJldHVybiAoQ2hhckNhdGVnb3J5KSBVX01BU0soUUNoYXI6OmNhdGVnb3J5KHVpbnQzMl90KGMp
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFVuaWNvZGUKLX0gLy8gbmFtZXNwYWNlIFdURgotCi0j
ZW5kaWYgLy8gV1RGX1VOSUNPREVfUVQ0X0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDQ0ZjAyYjZjMzRkZmNj
NDUzNTVmNmE3MmE1YmI0ZWE4OWU2MzNmNGIuLjBlM2NkNWY2ZDMwOTM4NmQzYmMwZWMwY2UxYzMw
YTUyZGRhMTI0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjM1Nyw3ICsyMzU3LDYgQEAgSEVBREVSUyAr
PSBcCiAgICAgcGxhdGZvcm0vdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCBcCiAgICAgcGxh
dGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50
YWJsZS5oIFwKLSAgICBwbGF0Zm9ybS90ZXh0L3F0L1RleHRDb2RlY1F0LmggXAogICAgIHBsYXRm
b3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50
ZWRTdHJpbmcuaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oIFwKQEAgLTI5
MjcsNyArMjkyNiw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3F0L1RlbXBvcmFyeUxp
bmtTdHVic1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0Qm91bmRhcmllc1F0LmNw
cCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVUXQu
Y3BwIFwKLSAgICBwbGF0Zm9ybS90ZXh0L3F0L1RleHRDb2RlY1F0LmNwcCBcCiAgICAgcGxhdGZv
cm0vcXQvV2lkZ2V0UXQuY3BwCiAKIHVzZT8oTElCWE1MMikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmNwcAppbmRleCBhMWUwMTE0NjZlOTVkYzIzYWNiMTQ1ZTRhMmI5NTI2YmMxOGFjOGQxLi4wMWE0
MDhjMTFkZWE4NGE4MTRlOGUxZTlhNTI4YmRlMjczY2JiOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmNwcApAQCAtNDQsOCArNDQsNiBAQAogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogI2luY2x1
ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNlbGlmIFVTRShRVDRfVU5JQ09ERSkKLSNpbmNsdWRlIDxR
VXJsPgogI2VsaWYgVVNFKEdMSUJfVU5JQ09ERSkKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgpAQCAtMTQ4Nyw5ICsxNDg1LDYgQEAgc3RhdGljIHZv
aWQgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVyJiBidWZmZXIsIGNvbnN0IFVDaGFy
KiBzdHIsIHVuc2lnbmUKICAgICAgICAgaG9zdG5hbWVCdWZmZXJMZW5ndGgsIFVJRE5BX0FMTE9X
X1VOQVNTSUdORUQsIDAsICZlcnJvcik7CiAgICAgaWYgKGVycm9yID09IFVfWkVST19FUlJPUikK
ICAgICAgICAgYnVmZmVyLmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZl
cnRlZCk7Ci0jZWxpZiBVU0UoUVQ0X1VOSUNPREUpCi0gICAgUUJ5dGVBcnJheSByZXN1bHQgPSBR
VXJsOjp0b0FjZShTdHJpbmcoc3RyLCBzdHJMZW4pKTsKLSAgICBidWZmZXIuYXBwZW5kKHJlc3Vs
dC5jb25zdERhdGEoKSwgcmVzdWx0Lmxlbmd0aCgpKTsKICNlbGlmIFVTRShHTElCX1VOSUNPREUp
CiAgICAgR093blB0cjxnY2hhcj4gdXRmOEhvc3RuYW1lOwogICAgIEdPd25QdHI8R0Vycm9yPiB1
dGY4RXJyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vy
cm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAKaW5kZXggMTFkYTRi
OTAxNWRjZjcyN2FkZWExOWJhN2RmOTA5MGM4ZGY2NmEzOS4uZTdlYjQzYjU2MTIxNzU1NzVkNTMz
NmNiYmI2ZGRiMmQyMDAxZjRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3Iu
Y3BwCkBAIC05MCwxMSArOTAsNiBAQCBVQ2hhcjMyIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVy
YXRvcjo6bm9ybWFsaXplVm9pY2luZ01hcmtzKCkKICAgICAgICAgaW50MzJfdCByZXN1bHRMZW5n
dGggPSB1bm9ybV9ub3JtYWxpemUobV9jaGFyYWN0ZXJzLCAyLCBVTk9STV9ORkMsIFVOT1JNX1VO
SUNPREVfM18yLCAmbm9ybWFsaXplZENoYXJhY3RlcnNbMF0sIDIsICZ1U3RhdHVzKTsKICAgICAg
ICAgaWYgKHJlc3VsdExlbmd0aCA9PSAxICYmICF1U3RhdHVzKQogICAgICAgICAgICAgcmV0dXJu
IG5vcm1hbGl6ZWRDaGFyYWN0ZXJzWzBdOwotI2VsaWYgVVNFKFFUNF9VTklDT0RFKQotICAgICAg
ICBRU3RyaW5nIHRtcChyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4obV9jaGFyYWN0ZXJz
KSwgMik7Ci0gICAgICAgIFFTdHJpbmcgcmVzID0gdG1wLm5vcm1hbGl6ZWQoUVN0cmluZzo6Tm9y
bWFsaXphdGlvbkZvcm1fQywgUUNoYXI6OlVuaWNvZGVfM18yKTsKLSAgICAgICAgaWYgKHJlcy5s
ZW5ndGgoKSA9PSAxKQotICAgICAgICAgICAgcmV0dXJuIHJlcy5hdCgwKS51bmljb2RlKCk7CiAj
ZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEVuY29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29k
aW5nLmNwcAppbmRleCBmMjhjZDY3MTU2ZWQwOTBjMWIzOTM0MGQ5NjFkMTk4MjJmNmE2ZjljLi42
YzlhMjRkYzgwNTc2M2IwMzYxZDM5YTQ3YzM0NTE4ZjhkZDJiYjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCkBAIC0zNyw4ICszNyw2IEBACiAK
ICNpZiBVU0UoSUNVX1VOSUNPREUpCiAjaW5jbHVkZSA8dW5pY29kZS91bm9ybS5oPgotI2VsaWYg
VVNFKFFUNF9VTklDT0RFKQotI2luY2x1ZGUgPFFTdHJpbmc+CiAjZWxpZiBVU0UoR0xJQl9VTklD
T0RFKQogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CkBAIC0xMDYsMTAgKzEwNCw2IEBAIENTdHJpbmcgVGV4dEVuY29kaW5nOjplbmNvZGUoY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlCiAgICAgICAgIHNv
dXJjZUxlbmd0aCA9IG5vcm1hbGl6ZWRMZW5ndGg7CiAgICAgfQogICAgIHJldHVybiBuZXdUZXh0
Q29kZWMoKnRoaXMpLT5lbmNvZGUoc291cmNlLCBzb3VyY2VMZW5ndGgsIGhhbmRsaW5nKTsKLSNl
bGlmIFVTRShRVDRfVU5JQ09ERSkKLSAgICBRU3RyaW5nIHN0cihyZWludGVycHJldF9jYXN0PGNv
bnN0IFFDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7Ci0gICAgc3RyID0gc3RyLm5vcm1hbGl6
ZWQoUVN0cmluZzo6Tm9ybWFsaXphdGlvbkZvcm1fQyk7Ci0gICAgcmV0dXJuIG5ld1RleHRDb2Rl
YygqdGhpcyktPmVuY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyICo+KHN0ci51dGYx
NigpKSwgc3RyLmxlbmd0aCgpLCBoYW5kbGluZyk7CiAjZWxpZiBVU0UoR0xJQl9VTklDT0RFKQog
ICAgIEdPd25QdHI8Y2hhcj4gVVRGOFNvdXJjZTsKICAgICBVVEY4U291cmNlLnNldChnX3V0ZjE2
X3RvX3V0ZjgoY2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCmluZGV4IDI3
OTAyMjdmYWU5MTg1MjU4ZDJlMTYwNTJkMTM4ODlkNWRiNmFjOGEuLjFkMTIyMDI0MTBlNTk5MmZh
YjVjMDNiMTk1NmJkZjM5MDQ3NDUxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCkBAIC00NSw5ICs0NSw2IEBACiAj
aWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIlRleHRDb2RlY01hYy5oIgogI2VuZGlmCi0jaWYg
VVNFKFFUNF9VTklDT0RFKQotI2luY2x1ZGUgInF0L1RleHRDb2RlY1F0LmgiCi0jZW5kaWYKICNp
ZiBVU0UoR0xJQl9VTklDT0RFKQogI2luY2x1ZGUgImd0ay9UZXh0Q29kZWNHdGsuaCIKICNlbmRp
ZgpAQCAtMjk2LDExICsyOTMsNiBAQCBzdGF0aWMgdm9pZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkK
ICAgICBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyQ29kZWNzKGFkZFRvVGV4dENvZGVjTWFwKTsKICNl
bmRpZgogCi0jaWYgVVNFKFFUNF9VTklDT0RFKQotICAgIFRleHRDb2RlY1F0OjpyZWdpc3RlckVu
Y29kaW5nTmFtZXMoYWRkVG9UZXh0RW5jb2RpbmdOYW1lTWFwKTsKLSAgICBUZXh0Q29kZWNRdDo6
cmVnaXN0ZXJDb2RlY3MoYWRkVG9UZXh0Q29kZWNNYXApOwotI2VuZGlmCi0KICNpZiBQTEFURk9S
TShNQUMpCiAgICAgVGV4dENvZGVjTWFjOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoYWRkVG9UZXh0
RW5jb2RpbmdOYW1lTWFwKTsKICAgICBUZXh0Q29kZWNNYWM6OnJlZ2lzdGVyQ29kZWNzKGFkZFRv
VGV4dENvZGVjTWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
cXQvVGV4dENvZGVjUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0
Q29kZWNRdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMzZlMWExM2NjMWE1
ZjRkYTE0ZDVjMjJlZDk2Yzg4YTM2ODhkYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29k
ZWNRdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaWYgVVNFKFFUNF9VTklDT0RFKQotI2luY2x1ZGUgIlRleHRDb2RlY1F0LmgiCi0K
LSNpbmNsdWRlIDxxc2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBRU2V0PFFCeXRlQXJyYXk+ICp1bmlxdWVfbmFtZXMgPSAwOwotCi1zdGF0aWMgY29uc3QgY2hh
ciAqZ2V0QXRvbWljTmFtZShjb25zdCBRQnl0ZUFycmF5ICZuYW1lKQotewotICAgIGlmICghdW5p
cXVlX25hbWVzKQotICAgICAgICB1bmlxdWVfbmFtZXMgPSBuZXcgUVNldDxRQnl0ZUFycmF5PjsK
LQotICAgIHVuaXF1ZV9uYW1lcy0+aW5zZXJ0KG5hbWUpOwotICAgIHJldHVybiB1bmlxdWVfbmFt
ZXMtPmZpbmQobmFtZSktPmNvbnN0RGF0YSgpOwotfQotCi12b2lkIFRleHRDb2RlY1F0OjpyZWdp
c3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKLXsKLSAg
ICBRTGlzdDxpbnQ+IG1pYnMgPSBRVGV4dENvZGVjOjphdmFpbGFibGVNaWJzKCk7Ci0KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1pYnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUVRleHRDb2Rl
YyAqYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTWliKG1pYnMuYXQoaSkpOwotICAgICAgICBjb25z
dCBjaGFyICpuYW1lID0gZ2V0QXRvbWljTmFtZShjLT5uYW1lKCkpOwotICAgICAgICByZWdpc3Ry
YXIobmFtZSwgbmFtZSk7Ci0gICAgICAgIFFMaXN0PFFCeXRlQXJyYXk+IGFsaWFzZXMgPSBjLT5h
bGlhc2VzKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWxpYXNlcy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgY29uc3QgY2hhciAqYSA9IGdldEF0b21pY05hbWUoYWxpYXNlcy5h
dChpKSk7Ci0gICAgICAgICAgICByZWdpc3RyYXIoYSwgbmFtZSk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXN0YXRpYyBQYXNzT3duUHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjUXQoY29uc3Qg
VGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCopCi17Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBUZXh0Q29kZWNRdChlbmNvZGluZykpOwotfQotCi12b2lkIFRleHRDb2RlY1F0Ojpy
ZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQotewotICAgIFFMaXN0
PGludD4gbWlicyA9IFFUZXh0Q29kZWM6OmF2YWlsYWJsZU1pYnMoKTsKLQotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbWlicy5zaXplKCk7ICsraSkgewotICAgICAgICBRVGV4dENvZGVjICpjID0g
UVRleHRDb2RlYzo6Y29kZWNGb3JNaWIobWlicy5hdChpKSk7Ci0gICAgICAgIGNvbnN0IGNoYXIg
Km5hbWUgPSBnZXRBdG9taWNOYW1lKGMtPm5hbWUoKSk7Ci0gICAgICAgIHJlZ2lzdHJhcihuYW1l
LCBuZXdUZXh0Q29kZWNRdCwgMCk7Ci0gICAgfQotfQotCi1UZXh0Q29kZWNRdDo6VGV4dENvZGVj
UXQoY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKLSAgICA6IG1fZW5jb2RpbmcoZW5jb2Rp
bmcpCi17Ci0gICAgbV9jb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZShtX2VuY29kaW5n
Lm5hbWUoKSk7Ci19Ci0KLVRleHRDb2RlY1F0Ojp+VGV4dENvZGVjUXQoKQotewotfQotCi0KLVN0
cmluZyBUZXh0Q29kZWNRdDo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
LCBib29sIGZsdXNoLCBib29sIC8qc3RvcE9uRXJyb3IqLywgYm9vbCYgc2F3RXJyb3IpCi17Ci0g
ICAgLy8gV2UgY2hvcCBpbnB1dCBidWZmZXIgdG8gc21hbGxlciBidWZmZXJzIHRvIGF2b2lkIGV4
Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24KLSAgICAvLyB3aGVuIHRoZSBpbnB1dCBidWZmZXIg
aXMgYmlnLiAgVGhpcyBoZWxwcyByZWR1Y2UgcGVhayBtZW1vcnkgY29uc3VtcHRpb24gaW4KLSAg
ICAvLyBtb2JpbGUgZGV2aWNlcyB3aGVyZSBzeXN0ZW0gUkFNIGlzIGxpbWl0ZWQuCi0gICAgc3Rh
dGljIGNvbnN0IGludCBNYXhJbnB1dENodW5rU2l6ZSA9IDEwMjQgKiAxMDI0OwotICAgIGNvbnN0
IGNoYXIqIGJ1ZiA9IGJ5dGVzOwotICAgIGNvbnN0IGNoYXIqIGVuZCA9IGJ1ZiArIGxlbmd0aDsK
LSAgICBTdHJpbmcgdW5pY29kZSgiIik7IC8vIGEgbm9uLW51bGwgc3RyaW5nIGlzIGV4cGVjdGVk
Ci0KLSAgICB3aGlsZSAoYnVmIDwgZW5kKSB7Ci0gICAgICAgIGludCBzaXplID0gZW5kIC0gYnVm
OwotICAgICAgICBzaXplID0gcU1pbihzaXplLCBNYXhJbnB1dENodW5rU2l6ZSk7Ci0gICAgICAg
IFFTdHJpbmcgZGVjb2RlZCA9IG1fY29kZWMtPnRvVW5pY29kZShidWYsIHNpemUsICZtX3N0YXRl
KTsKLSAgICAgICAgdW5pY29kZS5hcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVUNo
YXIqPihkZWNvZGVkLnVuaWNvZGUoKSksIGRlY29kZWQubGVuZ3RoKCkpOwotICAgICAgICBidWYg
Kz0gc2l6ZTsKLSAgICB9Ci0KLSAgICBzYXdFcnJvciA9IG1fc3RhdGUuaW52YWxpZENoYXJzICE9
IDA7Ci0KLSAgICBpZiAoZmx1c2gpIHsKLSAgICAgICAgbV9zdGF0ZS5mbGFncyA9IFFUZXh0Q29k
ZWM6OkRlZmF1bHRDb252ZXJzaW9uOwotICAgICAgICBtX3N0YXRlLnJlbWFpbmluZ0NoYXJzID0g
MDsKLSAgICAgICAgbV9zdGF0ZS5pbnZhbGlkQ2hhcnMgPSAwOwotICAgIH0KLQotICAgIHJldHVy
biB1bmljb2RlOwotfQotCi1DU3RyaW5nIFRleHRDb2RlY1F0OjplbmNvZGUoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlSGFuZGxpbmcgaGFuZGxpbmcp
Ci17Ci0gICAgUVRleHRDb2RlYzo6Q29udmVydGVyU3RhdGUgc3RhdGU7Ci0gICAgc3RhdGUuZmxh
Z3MgPSBRVGV4dENvZGVjOjpDb252ZXJzaW9uRmxhZ3MoUVRleHRDb2RlYzo6Q29udmVydEludmFs
aWRUb051bGwgfCBRVGV4dENvZGVjOjpJZ25vcmVIZWFkZXIpOwotCi0gICAgaWYgKCFsZW5ndGgp
Ci0gICAgICAgIHJldHVybiAiIjsKLQotICAgIFFCeXRlQXJyYXkgYmEgPSBtX2NvZGVjLT5mcm9t
VW5pY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0
aCwgJnN0YXRlKTsKLQotICAgIC8vIElmIHNvbWUgPGI+IGNoYXJhY3RlcnMgPC9iPiBhcmUgdW5l
bmNvZGFibGUsIGVzY2FwZSB0aGVtIGFzIHNwZWNpZmllZCBieSA8Yj4gaGFuZGxpbmcgPC9iPgot
ICAgIC8vIFdlIGFwcGVuZCBvbmUgdmFsaWQgZW5jb2RlZCBjaHVuayB0byBhIFFCeXRlQXJyYXkg
YXQgYSB0aW1lLiBXaGVuIHdlIGVuY291bnRlciBhbiB1bmVuY29kYWJsZSBjaHVuayB3ZQotICAg
IC8vIGVzY2FwZSBpdCB3aXRoIGdldFVuZW5jb2RhYmxlUmVwbGFjZW1lbnQsIGFwcGVuZCBpdCwg
dGhlbiBtb3ZlIHRvIHRoZSBuZXh0IGNodW5rLgotICAgIGlmIChzdGF0ZS5pbnZhbGlkQ2hhcnMp
IHsKLSAgICAgICAgc3RhdGUuaW52YWxpZENoYXJzID0gMDsKLSAgICAgICAgc3RhdGUucmVtYWlu
aW5nQ2hhcnMgPSAwOwotICAgICAgICBpbnQgbGVuID0gMDsKLSAgICAgICAgYmEuY2xlYXIoKTsK
LSAgICAgICAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgbGVuZ3RoOyArK3BvcykgewotICAg
ICAgICAgICAgUUJ5dGVBcnJheSB0YmEgPSBtX2NvZGVjLT5mcm9tVW5pY29kZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IFFDaGFyKj4oY2hhcmFjdGVycyksICsrbGVuLCAmc3RhdGUpOwotICAgICAg
ICAgICAgaWYgKHN0YXRlLnJlbWFpbmluZ0NoYXJzKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgaWYgKHN0YXRlLmludmFsaWRDaGFycykgewotICAgICAgICAgICAgICAg
IFVuZW5jb2RhYmxlUmVwbGFjZW1lbnRBcnJheSByZXBsYWNlbWVudDsKLSAgICAgICAgICAgICAg
ICBnZXRVbmVuY29kYWJsZVJlcGxhY2VtZW50KGNoYXJhY3RlcnNbMF0sIGhhbmRsaW5nLCByZXBs
YWNlbWVudCk7Ci0gICAgICAgICAgICAgICAgdGJhLnJlcGxhY2UoJ1wwJywgcmVwbGFjZW1lbnQp
OwotICAgICAgICAgICAgICAgIHN0YXRlLmludmFsaWRDaGFycyA9IDA7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBiYS5hcHBlbmQodGJhKTsKLSAgICAgICAgICAgIGNoYXJhY3RlcnMgKz0g
bGVuOwotICAgICAgICAgICAgbGVuID0gMDsKLSAgICAgICAgICAgIHN0YXRlLnJlbWFpbmluZ0No
YXJzID0gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBDU3RyaW5nKGJhLmNvbnN0
RGF0YSgpLCBiYS5sZW5ndGgoKSk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0L1RleHRDb2Rl
Y1F0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0L1RleHRDb2RlY1F0LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyOGYwYmIxMzQyMDJmMGEyNTA4YzJmMjI4YjBh
ODM4NDQ1NjUxNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBMYXJzIEtu
b2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBUZXh0Q29kZWNRdF9oCi0j
ZGVmaW5lIFRleHRDb2RlY1F0X2gKLQotI2luY2x1ZGUgIlRleHRDb2RlYy5oIgotI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgPFFUZXh0Q29kZWM+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotICAgIGNsYXNzIFRleHRDb2RlY1F0IDogcHVibGljIFRleHRDb2RlYyB7Ci0gICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2Rp
bmdOYW1lUmVnaXN0cmFyKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJDb2RlY3MoVGV4
dENvZGVjUmVnaXN0cmFyKTsKLQotICAgICAgICBUZXh0Q29kZWNRdChjb25zdCBUZXh0RW5jb2Rp
bmcmKTsKLSAgICAgICAgdmlydHVhbCB+VGV4dENvZGVjUXQoKTsKLQotICAgICAgICB2aXJ0dWFs
IFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJv
b2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKTsKLSAgICAgICAgdmlydHVhbCBDU3RyaW5n
IGVuY29kZShjb25zdCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlSGFuZGxpbmcp
OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7Ci0gICAg
ICAgIFFUZXh0Q29kZWMgKm1fY29kZWM7Ci0gICAgICAgIFFUZXh0Q29kZWM6OkNvbnZlcnRlclN0
YXRlIG1fc3RhdGU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gVGV4dENvZGVjSUNVX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbiBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbgppbmRleCAyMzcw
ZjE4NzdiZGEzNGRmMjgwYzBkNTA4ODcwNjY2ZDM3MmM3MzIyLi5lY2NmYmYzOGZiMDI2NGQ2ZDdk
YWMyYTlhZGU1NDA1NjFjMjRjMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YVVzZUZlYXR1cmVzLmluCkBA
IC03Niw3ICs3Niw2IEBAIFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSwogUFRIUkVBRF9C
QVNFRF9RVAogUFRIUkVBRF9HRVRTUEVDSUZJQ19ESVJFQ1QKIFBUSFJFQURTCi1RVDRfVU5JQ09E
RQogUVRLSVQKIFFUX01PQklMRV9USEVNRQogUVRfTU9CSUxJVFlfU1lTVEVNSU5GTwo=
</data>
<flag name="review"
          id="204516"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>