<?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>174569</bug_id>
          
          <creation_ts>2017-07-16 12:30:01 -0700</creation_ts>
          <short_desc>[WTF] Add WorkerPool</short_desc>
          <delta_ts>2018-06-08 03:24:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1329411</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-16 12:30:01 -0700</bug_when>
    <thetext>Useful for general asynchronous works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329414</commentid>
    <comment_count>1</comment_count>
      <attachid>315618</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-16 12:34:25 -0700</bug_when>
    <thetext>Created attachment 315618
Patch

Just putting this patch to bugzilla. When I need it, I&apos;ll revise it and request for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430727</commentid>
    <comment_count>2</comment_count>
      <attachid>342125</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-06 23:23:03 -0700</bug_when>
    <thetext>Created attachment 342125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430731</commentid>
    <comment_count>3</comment_count>
      <attachid>342126</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-06 23:36:34 -0700</bug_when>
    <thetext>Created attachment 342126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430758</commentid>
    <comment_count>4</comment_count>
      <attachid>342133</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-07 00:37:06 -0700</bug_when>
    <thetext>Created attachment 342133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430791</commentid>
    <comment_count>5</comment_count>
      <attachid>342147</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-07 04:21:30 -0700</bug_when>
    <thetext>Created attachment 342147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430822</commentid>
    <comment_count>6</comment_count>
      <attachid>342164</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-07 07:57:27 -0700</bug_when>
    <thetext>Created attachment 342164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430825</commentid>
    <comment_count>7</comment_count>
      <attachid>342165</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-07 08:02:34 -0700</bug_when>
    <thetext>Created attachment 342165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430828</commentid>
    <comment_count>8</comment_count>
      <attachid>342167</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-07 08:05:59 -0700</bug_when>
    <thetext>Created attachment 342167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430846</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-07 08:54:06 -0700</bug_when>
    <thetext>Basics of the implementation LGTM. I&apos;d propose someone more familiar with AutomaticThreads gives final approval.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431166</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-08 01:47:11 -0700</bug_when>
    <thetext>Committed r232619: &lt;https://trac.webkit.org/changeset/232619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431167</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-08 01:48:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/40928389&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431177</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-08 03:24:35 -0700</bug_when>
    <thetext>*** Bug 186371 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315618</attachid>
            <date>2017-07-16 12:34:25 -0700</date>
            <delta_ts>2018-06-06 23:23:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174569-20170717043424.patch</filename>
            <type>text/plain</type>
            <size>15344</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxODA4MThjMGZjYmM4ODI1MTY4ZDJi
OTdhOWJkNDRkYzFmYTRlZmUuLjM3ZWUxOTU1NTQ5ZjRiNmQ3MmJlMGFkYWVhYzJiOTMzYTU4NGY2
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMDctMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0F1dG9tYXRp
Y1RocmVhZC5jcHA6CisgICAgICAgIChXVEY6OkF1dG9tYXRpY1RocmVhZDo6QXV0b21hdGljVGhy
ZWFkKToKKyAgICAgICAgKFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCk6CisgICAgICAgICog
d3RmL0F1dG9tYXRpY1RocmVhZC5oOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiB3dGYvV29ya2VyUG9vbC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrZXJQ
b29sOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6Oldvcmtlcjo6
dGhyZWFkSXNTdG9wcGluZyk6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyUG9vbCk6CisgICAgICAgIChX
VEY6OldvcmtlclBvb2w6On5Xb3JrZXJQb29sKToKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6
c2hvdWxkU2xlZXApOgorICAgICAgICAoV1RGOjpXb3JrZXJQb29sOjpwb3N0VGFzayk6CisgICAg
ICAgICogd3RmL1dvcmtlclBvb2wuaDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtlclBvb2w6
OmNyZWF0ZSk6CisKIDIwMTctMDctMTQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBpT1MgMTEgU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9BdXRvbWF0aWNUaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNw
cAppbmRleCA4MTExODc2MGIzOTY4ZGNkMDI0YjQ5MWQxMjk3NGE4NTAyYjE4OGVmLi4xNmE5ZTBj
YmJhNmEwN2EzZWYxNTk3NTMwZGExOGY0MDc1MDAwMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1Ro
cmVhZC5jcHAKQEAgLTEwMyw5ICsxMDMsMTAgQEAgYm9vbCBBdXRvbWF0aWNUaHJlYWRDb25kaXRp
b246OmNvbnRhaW5zKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQXV0b21hdGljVGhyZWFkKgogICAg
IHJldHVybiBtX3RocmVhZHMuY29udGFpbnModGhyZWFkKTsKIH0KIAotQXV0b21hdGljVGhyZWFk
OjpBdXRvbWF0aWNUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgQm94PExvY2s+
IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IGNvbmRpdGlvbikKK0F1dG9t
YXRpY1RocmVhZDo6QXV0b21hdGljVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIs
IEJveDxMb2NrPiBsb2NrLCBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiBjb25kaXRp
b24sIFNlY29uZHMgdGltZW91dCkKICAgICA6IG1fbG9jayhsb2NrKQogICAgICwgbV9jb25kaXRp
b24oY29uZGl0aW9uKQorICAgICwgbV90aW1lb3V0KHRpbWVvdXQpCiB7CiAgICAgaWYgKHZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogQWxsb2NhdGVkIEF1dG9t
YXRpY1RocmVhZC5cbiIpOwpAQCAtMjAzLDEwICsyMDQsMTAgQEAgdm9pZCBBdXRvbWF0aWNUaHJl
YWQ6OnN0YXJ0KGNvbnN0IEFic3RyYWN0TG9ja2VyJikKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFNodXQgdGhlIHRocmVhZCBkb3duIGFmdGVyIGEgdGltZW91dC4KICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faXNXYWl0aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgYXdva2VuQnlOb3RpZnkgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2FpdENv
bmRpdGlvbi53YWl0Rm9yKCptX2xvY2ssIDEwX3MpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fd2FpdENvbmRpdGlvbi53YWl0Rm9yKCptX2xvY2ssIG1fdGltZW91dCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSAmJiAhYXdva2VuQnlOb3RpZnkgJiYgIW1faXNX
YWl0aW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0
aGlzKSwgIjogd2FpdEZvciB0aW1lZCBvdXQsIGJ1dCBub3RpZmllZCB2aWEgbV9pc1dhaXRpbmcg
ZmxhZyFcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1faXNXYWl0aW5nKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9pc1dhaXRpbmcgJiYgc2hvdWxkU2xlZXAobG9j
a2VyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faXNXYWl0aW5nID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogR29pbmcgdG8g
c2xlZXAhXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5o
IGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgKaW5kZXggMWI5MDQ1NDBjN2Y2MDQ2
YjA3NTJhZmU5NzVkMjJhM2I0YTJjOGI4YS4uZmY1NGYzMTc0MWJlNzhmZDNhNTJjZTQyNDc2NzE4
NzRiMmNkNmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgK
KysrIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBjbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgQXV0b21hdGljVGhyZWFkIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEF1dG9tYXRpYwogcHJvdGVjdGVkOgogICAgIC8vIFRoaXMgbG9naWNh
bGx5IGNyZWF0ZXMgdGhlIHRocmVhZCwgYnV0IGluIHJlYWxpdHkgdGhlIHRocmVhZCB3b24ndCBi
ZSBjcmVhdGVkIHVudGlsIHNvbWVvbmUKICAgICAvLyBjYWxscyBBdXRvbWF0aWNUaHJlYWRDb25k
aXRpb246Om5vdGlmeU9uZSgpIG9yIG5vdGlmeUFsbCgpLgotICAgIEF1dG9tYXRpY1RocmVhZChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEJveDxMb2NrPiwgUmVmUHRyPEF1dG9tYXRpY1RocmVhZENv
bmRpdGlvbj4pOworICAgIEF1dG9tYXRpY1RocmVhZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEJv
eDxMb2NrPiwgUmVmUHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4sIFNlY29uZHMgdGltZW91
dCA9IDEwX3MpOwogICAgIAogICAgIC8vIFRvIHVuZGVyc3RhbmQgUG9sbFJlc3VsdCBhbmQgV29y
a1Jlc3VsdCwgaW1hZ2luZSB0aGF0IHBvbGwoKSBhbmQgd29yaygpIGFyZSBiZWluZyBjYWxsZWQg
bGlrZQogICAgIC8vIHNvOgpAQCAtMTY4LDYgKzE2OCwxMSBAQCBjbGFzcyBXVEZfRVhQT1JUX1BS
SVZBVEUgQXV0b21hdGljVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1dG9t
YXRpYwogICAgIC8vIGNhbiBiZSBzdXJlIHRoYXQgdGhlIGRlZmF1bHQgb25lcyBkb24ndCBkbyBh
bnl0aGluZyAoc28geW91IGRvbid0IG5lZWQgYSBzdXBlciBjYWxsKS4KICAgICB2aXJ0dWFsIHZv
aWQgdGhyZWFkRGlkU3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhj
b25zdCBBYnN0cmFjdExvY2tlciYpOworCisgICAgLy8gQ29udHJvbCB3aGV0aGVyIHRoaXMgYXV0
b21hdGljIHRocmVhZCBzaG91bGQgc2xlZXAgd2hlbiB0aW1lb3V0IGhhcHBlbnMuCisgICAgLy8g
Qnkgb3ZlcnJpZGluZyB0aGlzIGZ1bmN0aW9uLCB3ZSBjYW4gY3VzdG9taXplIGhvdyBhdXRvbWF0
aWMgdGhyZWFkcyB3aWxsIHNsZWVwLgorICAgIC8vIEZvciBleGFtcGxlLCB3aGVuIHlvdSBoYXZl
IHRocmVhZCBwb29sLCB5b3UgY2FuIGRlY3JlYXNlIGFjdGl2ZSB0aHJlYWRzIG1vZGVyYXRlbHku
CisgICAgdmlydHVhbCBib29sIHNob3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQXV0b21hdGlj
VGhyZWFkQ29uZGl0aW9uOwpAQCAtMTgxLDYgKzE4Niw3IEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJ
VkFURSBBdXRvbWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21h
dGljCiAgICAgYm9vbCBtX2hhc1VuZGVybHlpbmdUaHJlYWQgeyBmYWxzZSB9OwogICAgIENvbmRp
dGlvbiBtX3dhaXRDb25kaXRpb247CiAgICAgQ29uZGl0aW9uIG1faXNSdW5uaW5nQ29uZGl0aW9u
OworICAgIFNlY29uZHMgbV90aW1lb3V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CmluZGV4IDkzNmFmYjU5ODAxZDg1MjdiOGQwMDliYjdiYjUyMGI4ZmM0MzNj
OGQuLmM4YjFlYWJhNDNlMTIyMTk0YjQ4MTU5Y2RiZDY4NDI2YjY0MWFiYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CkBAIC0xNTIsNiArMTUyLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgV2Vha1B0
ci5oCiAgICAgV29yZExvY2suaAogICAgIFdvcmtRdWV1ZS5oCisgICAgV29ya2VyUG9vbC5oCiAg
ICAgZHRvYS5oCiAKICAgICBkdG9hL2JpZ251bS1kdG9hLmgKQEAgLTI1NCw2ICsyNTUsNyBAQCBz
ZXQoV1RGX1NPVVJDRVMKICAgICBXYWxsVGltZS5jcHAKICAgICBXb3JkTG9jay5jcHAKICAgICBX
b3JrUXVldWUuY3BwCisgICAgV29ya2VyUG9vbC5jcHAKICAgICBkdG9hLmNwcAogCiAgICAgZHRv
YS9iaWdudW0tZHRvYS5jYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTkwYzUyMmU3
NTQwMzlmYjZiZmE2ZTRjMzFjYzU3YjAzOThmNDRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvV29ya2VyUG9vbC5jcHAKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldvcmtlclBvb2wuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgV29ya2VyUG9vbDo6V29ya2VyIDogcHVi
bGljIEF1dG9tYXRpY1RocmVhZCB7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIFdvcmtlclBv
b2w7CisKKyAgICBXb3JrZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgV29ya2VyUG9v
bCYgcG9vbCwgQm94PExvY2s+IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+
IGNvbmRpdGlvbikKKyAgICAgICAgOiBBdXRvbWF0aWNUaHJlYWQobG9ja2VyLCBsb2NrLCBjb25k
aXRpb24sIDJfcykKKyAgICAgICAgLCBtX3Bvb2wocG9vbCkKKyAgICB7CisgICAgfQorCisgICAg
UG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmIChtX3Bvb2wubV90YXNrcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
UG9sbFJlc3VsdDo6V2FpdDsKKyAgICAgICAgbV90YXNrID0gbV9wb29sLm1fdGFza3MudGFrZUZp
cnN0KCk7CisgICAgICAgIGlmICghbV90YXNrKQorICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1
bHQ6OlN0b3A7CisgICAgICAgIHJldHVybiBQb2xsUmVzdWx0OjpXb3JrOworICAgIH0KKworICAg
IFdvcmtSZXN1bHQgd29yaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3Rhc2soKTsKKyAg
ICAgICAgbV90YXNrID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRp
bnVlOworICAgIH0KKworICAgIHZvaWQgdGhyZWFkRGlkU3RhcnQoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC5tX2xvY2spOworICAgICAgICBtX3Bv
b2wubV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMrKzsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
dGhyZWFkSXNTdG9wcGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYpCisgICAgeworICAgICAgICBt
X3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMtLTsKKyAgICB9CisKKyAgICBib29sIHNob3Vs
ZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICByZXR1cm4gbV9wb29sLnNob3VsZFNsZWVwKGxvY2tlcik7CisgICAgfQorCitwcml2YXRl
OgorICAgIFdvcmtlclBvb2wmIG1fcG9vbDsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fdGFzazsK
K307CisKK1dvcmtlclBvb2wmIFdvcmtlclBvb2w6OnNoYXJlZEluc3RhbmNlKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdvcmtlclBvb2w+PiBwb29sKFdvcmtlclBvb2w6OmNy
ZWF0ZSgpKTsKKyAgICByZXR1cm4gcG9vbC5nZXQoKS5nZXQoKTsKK30KKworV29ya2VyUG9vbDo6
V29ya2VyUG9vbChpbnQgbnVtYmVyT2ZXb3JrZXJzKQorICAgIDogbV9sb2NrKEJveDxMb2NrPjo6
Y3JlYXRlKCkpCisgICAgLCBtX2NvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNy
ZWF0ZSgpKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JrZXJzOyArK2kpCisgICAgICAgIG1fd29ya2Vycy5hcHBl
bmQoYWRvcHRSZWYoKm5ldyBXb3JrZXIobG9ja2VyLCAqdGhpcywgbV9sb2NrLCBtX2NvbmRpdGlv
bikpKTsKK30KKworV29ya2VyUG9vbDo6fldvcmtlclBvb2woKQoreworICAgIHsKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
d29ya2Vycy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtX3Rhc2tzLmFwcGVuZChudWxscHRy
KTsgLy8gVXNlIG51bGwgdGFzayB0byBpbmRpY2F0ZSB0aGF0IHdlIHdhbnQgdGhlIHRocmVhZCB0
byB0ZXJtaW5hdGUuCisgICAgICAgIG1fY29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKKyAg
ICB9CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3dvcmtlcnMpCisgICAgICAgIHdvcmtlci0+
am9pbigpOworICAgIEFTU0VSVCghbV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMpOworfQorCitib29s
IFdvcmtlclBvb2w6OnNob3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKK3sKKyAgICBN
b25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgaWYg
KHN0ZDo6aXNuYW4obV9sYXN0VGltZW91dFRpbWUpIHx8IChjdXJyZW50VGltZSA+PSAobV9sYXN0
VGltZW91dFRpbWUgICsgNV9zKSkpIHsKKyAgICAgICAgbV9sYXN0VGltZW91dFRpbWUgPSBjdXJy
ZW50VGltZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBXb3JrZXJQb29sOjpwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+IHRhc2spCit7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgbV90YXNrcy5hcHBlbmQoV1RG
TW92ZSh0YXNrKSk7CisgICAgbV9jb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrZXJQb29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA1MDUxMTEwZGU5ODEzZGUyMGQ2YWI0ZmFhYjZl
NTMzZTI1ZDQzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBvb2wu
aApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0F1dG9tYXRpY1Ro
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgV29ya2VyUG9vbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxXb3JrZXJQb29sPiB7CitwdWJsaWM6CisgICAgfldvcmtlclBvb2woKTsK
KworICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPik7CisKKyAgICBzdGF0aWMgV29y
a2VyUG9vbCYgc2hhcmVkSW5zdGFuY2UoKTsKKworICAgIHN0YXRpYyBSZWY8V29ya2VyUG9vbD4g
Y3JlYXRlKGludCBudW1iZXJPZldvcmtlcnMgID0gV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVz
KCkpCisgICAgeworICAgICAgICBBU1NFUlQobnVtYmVyT2ZXb3JrZXJzID49IDEpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJQb29sKG51bWJlck9mV29ya2VycykpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBXb3JrZXI7CisgICAgZnJpZW5kIGNsYXNzIFdvcmtl
cjsKKworICAgIFdvcmtlclBvb2woaW50IG51bWJlck9mV29ya2Vycyk7CisKKyAgICBib29sIHNo
b3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CisKKyAgICBCb3g8TG9jaz4gbV9sb2Nr
OworICAgIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1fY29uZGl0aW9uOworICAg
IE1vbm90b25pY1RpbWUgbV9sYXN0VGltZW91dFRpbWUgeyBNb25vdG9uaWNUaW1lOjpuYW4oKSB9
OworICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzIHsgMCB9OworICAgIFZlY3Rv
cjxSZWY8V29ya2VyPj4gbV93b3JrZXJzOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1f
dGFza3M7Cit9OworCit9CisKK3VzaW5nIFdURjo6V29ya2VyUG9vbDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MTNmMDllYTE1OTI2OTZkMmMy
ZWNkN2IzZTRjNzI3MzlkMjJmODc4Li5hM2ZmNjFiZWZiMjIwOWRmYzc1NDVjZWYwN2E0NDNiYTQ3
NzBkOTYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDctMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrZXJQb29s
LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0wNy0x
NiAgQmVybmhhcmQgTS4gV2llZGVtYW5uICA8YndpZWRlbWFubkBzdXNlLmRlPgogCiAgICAgICAg
IFtHVEtdIFNvcnQgaW5zcGVjdG9yIEdSZXNvdXJjZSBtYW5pZmVzdCB0byBlbnN1cmUgcmVwcm9k
dWNpYmxlIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggMGUzZTBmNmIz
M2M1MTRhZTEwNTRiODljNDQ3NzA5MTQ2MmY4NDlhNS4uZDA0N2YxYWUwNjQ2YWY2ZTNkZGE2YzQy
NDk0YWU0MzE4ZDZlZTEzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC04OCw2
ICs4OCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dU
Ri9XZWFrUHRyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Xb3JrUXVl
dWUuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dvcmtlclBvb2wuY3Bw
CiApCiAKICMgRklYTUU6IFRlc3RzL1dURi9SdW5Mb29wLmNwcCBpcyBtaXNzaW5nIGJlY2F1c2Ug
aXQgZG9lc24ndCB3b3JrIGZvciBXaW5kb3dzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Xb3JrZXJQb29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTFiZGY0NzEzNTNiYTYzNGVmNTc1Zjdi
MTNkMjA1OWY3ZjJhYzFkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrZXJQb29sLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYsIFdvcmtlclBvb2xEZWNyZWFz
ZSkKK3sKKyAgICBSZWY8V29ya2VyUG9vbD4gcG9vbCA9IFdvcmtlclBvb2w6OmNyZWF0ZSgpOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIHNsZWVwKDAuMDAx
KTsKKyAgICAgICAgcG9vbC0+cG9zdFRhc2soWz1dIHsKKyAgICAgICAgICAgIGRhdGFMb2coIlsi
LCBpLCAiXSBIZWxsbyBXb3JsZFxuIik7CisgICAgICAgICAgICBzbGVlcCgwLjAyKTsKKyAgICAg
ICAgfSk7CisgICAgfQorICAgIHNsZWVwKDIwMC4wKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342125</attachid>
            <date>2018-06-06 23:23:03 -0700</date>
            <delta_ts>2018-06-06 23:36:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174569-20180607152301.patch</filename>
            <type>text/plain</type>
            <size>24078</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1ZGI0MjQ0N2M1OGZhMGJmMzdlN2E4
ZTUxNGVhZmY3MzE3NjdhODUuLjQ4OGUzNDc0NDAyMjI3OTg2ODJlMGNhNThlNTRkYzFhNzU5MzM4
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTgtMDYtMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0F1dG9tYXRp
Y1RocmVhZC5jcHA6CisgICAgICAgIChXVEY6OkF1dG9tYXRpY1RocmVhZDo6QXV0b21hdGljVGhy
ZWFkKToKKyAgICAgICAgKFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCk6CisgICAgICAgICog
d3RmL0F1dG9tYXRpY1RocmVhZC5oOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiB3dGYvVGhyZWFkUG9vbC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpUaHJlYWRQ
b29sOjpUaHJlYWRQb29sKToKKyAgICAgICAgKFdURjo6VGhyZWFkUG9vbDo6cG9zdFRhc2spOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRQb29sLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpUaHJlYWRQ
b29sOjpudW1iZXJPZlRocmVhZHMgY29uc3QpOgorICAgICAgICAqIHd0Zi9Xb3JrZXJQb29sLmNw
cDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtlclBvb2w6Oldvcmtlcjo6V29ya2VyKToKKyAg
ICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyOjp0aHJlYWRJc1N0b3BwaW5nKToKKyAgICAg
ICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyUG9vbCk6CisgICAgICAgIChXVEY6OldvcmtlclBv
b2w6On5Xb3JrZXJQb29sKToKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6c2hvdWxkU2xlZXAp
OgorICAgICAgICAoV1RGOjpXb3JrZXJQb29sOjpwb3N0VGFzayk6CisgICAgICAgICogd3RmL1dv
cmtlclBvb2wuaDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtlclBvb2w6OmNyZWF0ZSk6CisK
IDIwMTgtMDYtMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gUmV0aXJlIERpc3BhdGNoUHRyLCBhbmQgYWRkIG1vcmUgbW92ZSBzZW1hbnRpY3MgYW5k
IHNpbXBsZXIgI2lmcyB0byBvdGhlciBzbWFydCBwb2ludGVycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMyN2U2
YjQ1ZDY3ZDdlNDQwZjUzMTE4NGY1ZjYyZmFiNzQ5MmQxN2QuLmY3ODc5NTVjNGI4NDJiYzIxOWFl
Y2QyZDE5N2QyN2UzZWVhODc5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0w
Ni0wNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
V1RGXSBBZGQgV29ya2VyUG9vbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc0NTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0Vu
Z2luZVRocmVhZGVkLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nRW5naW5lVGhyZWFk
ZWQ6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdF
bmdpbmVUaHJlYWRlZDo6flBhaW50aW5nRW5naW5lVGhyZWFkZWQpOgorICAgICAgICAoTmljb3Np
YTo6UGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6cGFpbnQpOgorICAgICAgICAoTmljb3NpYTo6c190
aHJlYWRGdW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmg6CisKIDIwMTgtMDYtMDYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUVFAgSGVhZGVyIHZhbHVlcyB2
YWxpZGF0aW9uIGlzIHRvbyBzdHJpY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9t
YXRpY1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCmluZGV4
IDJjNDg2YzQ4MDhhYWUzMjg1OGRkMmIyMjY0NDg0NzI2YWE5YTk5YjkuLmE1OWM1ZDFiYzk2OTI0
MGQ4YzdhZGRjY2MyY2JiNDcxZTllNzAxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F1
dG9tYXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNw
cApAQCAtMTA0LDkgKzEwNCwxMCBAQCBib29sIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y29u
dGFpbnMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBBdXRvbWF0aWNUaHJlYWQqCiAgICAgcmV0dXJu
IG1fdGhyZWFkcy5jb250YWlucyh0aHJlYWQpOwogfQogCi1BdXRvbWF0aWNUaHJlYWQ6OkF1dG9t
YXRpY1RocmVhZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBCb3g8TG9jaz4gbG9jaywg
UmVmUHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gY29uZGl0aW9uKQorQXV0b21hdGljVGhy
ZWFkOjpBdXRvbWF0aWNUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgQm94PExv
Y2s+IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IGNvbmRpdGlvbiwgU2Vj
b25kcyB0aW1lb3V0KQogICAgIDogbV9sb2NrKGxvY2spCiAgICAgLCBtX2NvbmRpdGlvbihjb25k
aXRpb24pCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkKIHsKICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBBbGxvY2F0ZWQgQXV0b21hdGljVGhy
ZWFkLlxuIik7CkBAIC0yMDQsMTAgKzIwNSwxMCBAQCB2b2lkIEF1dG9tYXRpY1RocmVhZDo6c3Rh
cnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2h1
dCB0aGUgdGhyZWFkIGRvd24gYWZ0ZXIgYSB0aW1lb3V0LgogICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pc1dhaXRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhd29r
ZW5CeU5vdGlmeSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93YWl0Q29uZGl0aW9u
LndhaXRGb3IoKm1fbG9jaywgMTBfcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93
YWl0Q29uZGl0aW9uLndhaXRGb3IoKm1fbG9jaywgbV90aW1lb3V0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlICYmICFhd29rZW5CeU5vdGlmeSAmJiAhbV9pc1dhaXRpbmcp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAi
OiB3YWl0Rm9yIHRpbWVkIG91dCwgYnV0IG5vdGlmaWVkIHZpYSBtX2lzV2FpdGluZyBmbGFnIVxu
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9pc1dhaXRpbmcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX2lzV2FpdGluZyAmJiBzaG91bGRTbGVlcChsb2NrZXIpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pc1dhaXRpbmcgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBHb2luZyB0byBzbGVlcCFc
biIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaAppbmRleCAxYjkwNDU0MGM3ZjYwNDZiMDc1MmFm
ZTk3NWQyMmEzYjRhMmM4YjhhLi5mZjU0ZjMxNzQxYmU3OGZkM2E1MmNlNDI0NzY3MTg3NGIyY2Q2
ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNz
IFdURl9FWFBPUlRfUFJJVkFURSBBdXRvbWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8QXV0b21hdGljCiBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhpcyBsb2dpY2FsbHkgY3Jl
YXRlcyB0aGUgdGhyZWFkLCBidXQgaW4gcmVhbGl0eSB0aGUgdGhyZWFkIHdvbid0IGJlIGNyZWF0
ZWQgdW50aWwgc29tZW9uZQogICAgIC8vIGNhbGxzIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6
bm90aWZ5T25lKCkgb3Igbm90aWZ5QWxsKCkuCi0gICAgQXV0b21hdGljVGhyZWFkKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9u
Pik7CisgICAgQXV0b21hdGljVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExvY2s+
LCBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiwgU2Vjb25kcyB0aW1lb3V0ID0gMTBf
cyk7CiAgICAgCiAgICAgLy8gVG8gdW5kZXJzdGFuZCBQb2xsUmVzdWx0IGFuZCBXb3JrUmVzdWx0
LCBpbWFnaW5lIHRoYXQgcG9sbCgpIGFuZCB3b3JrKCkgYXJlIGJlaW5nIGNhbGxlZCBsaWtlCiAg
ICAgLy8gc286CkBAIC0xNjgsNiArMTY4LDExIEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBB
dXRvbWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljCiAg
ICAgLy8gY2FuIGJlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBvbmVzIGRvbid0IGRvIGFueXRoaW5n
IChzbyB5b3UgZG9uJ3QgbmVlZCBhIHN1cGVyIGNhbGwpLgogICAgIHZpcnR1YWwgdm9pZCB0aHJl
YWREaWRTdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJik7CisKKyAgICAvLyBDb250cm9sIHdoZXRoZXIgdGhpcyBhdXRvbWF0aWMg
dGhyZWFkIHNob3VsZCBzbGVlcCB3aGVuIHRpbWVvdXQgaGFwcGVucy4KKyAgICAvLyBCeSBvdmVy
cmlkaW5nIHRoaXMgZnVuY3Rpb24sIHdlIGNhbiBjdXN0b21pemUgaG93IGF1dG9tYXRpYyB0aHJl
YWRzIHdpbGwgc2xlZXAuCisgICAgLy8gRm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUgdGhyZWFk
IHBvb2wsIHlvdSBjYW4gZGVjcmVhc2UgYWN0aXZlIHRocmVhZHMgbW9kZXJhdGVseS4KKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU2xlZXAoY29uc3QgQWJzdHJhY3RMb2NrZXImKSB7IHJldHVybiB0
cnVlOyB9CiAgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBdXRvbWF0aWNUaHJlYWRD
b25kaXRpb247CkBAIC0xODEsNiArMTg2LDcgQEAgY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIEF1
dG9tYXRpY1RocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXRvbWF0aWMKICAg
ICBib29sIG1faGFzVW5kZXJseWluZ1RocmVhZCB7IGZhbHNlIH07CiAgICAgQ29uZGl0aW9uIG1f
d2FpdENvbmRpdGlvbjsKICAgICBDb25kaXRpb24gbV9pc1J1bm5pbmdDb25kaXRpb247CisgICAg
U2Vjb25kcyBtX3RpbWVvdXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKaW5kZXggNmNlNjE3YTdiNGRjYTQwNDhiNTdhMjYyODYzNjFkNDU3NzMzM2IzYS4uMGY5
ZjRlMWYyZGExNmMzMTJjMGRkNTJkOGRiZTk1M2I1NTRkMzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKQEAgLTI1Niw2ICsyNTYsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgV2luZG93
c0V4dHJhcy5oCiAgICAgV29yZExvY2suaAogICAgIFdvcmtRdWV1ZS5oCisgICAgV29ya2VyUG9v
bC5oCiAgICAgZHRvYS5oCiAKICAgICBkdG9hL2JpZ251bS1kdG9hLmgKQEAgLTM5MCw2ICszOTEs
NyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBXYWxsVGltZS5jcHAKICAgICBXb3JkTG9jay5jcHAK
ICAgICBXb3JrUXVldWUuY3BwCisgICAgV29ya2VyUG9vbC5jcHAKICAgICBkdG9hLmNwcAogCiAg
ICAgZHRvYS9iaWdudW0tZHRvYS5jYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFk
UG9vbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRQb29sLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTQx
ODAyY2Q0MWU0ZjEyZThkYTY4ODg0ZjUxYTBhNzI3YTM2OWE4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvVGhyZWFkUG9vbC5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGhyZWFkUG9vbC5oIgorCituYW1lc3BhY2UgV1RGIHsKKworVGhy
ZWFkUG9vbDo6VGhyZWFkUG9vbCh1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMpCit7Cit9CisKK3Zv
aWQgVGhyZWFkUG9vbDo6cG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiB0YXNrKQoreworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRQb29sLmggYi9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRQb29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc0MWVjZGVkNzFiZDU1ZmIyNDc5Yzg1OWFiOTE2
NzFkZDcyOWUwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZFBvb2wu
aApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
VGhyZWFkUG9vbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVGhyZWFkUG9vbCk7CitwdWJsaWM6CisgICAgVGhyZWFkUG9vbCh1bnNpZ25l
ZCBudW1iZXJPZlRocmVhZHMpOworICAgIH5UaHJlYWRQb29sKCk7CisKKyAgICB1bnNpZ25lZCBu
dW1iZXJPZlRocmVhZHMoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZHMuc2l6ZSgpOyB9CisKKyAg
ICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4pOworCitwcml2YXRlOgorICAgIFZlY3Rv
cjxSZWY8VGhyZWFkPj4gbV90aHJlYWRzOworfTsKKworfQorCit1c2luZyBXVEY6OlRocmVhZFBv
b2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1dvcmtlclBvb2wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YTIzNmU0ZjI2Y2Y5YWVlZThiMmJk
ZjI1MGU0YTYwZmE1M2NlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3Jr
ZXJQb29sLmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V29ya2VyUG9vbC5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVz
cGFjZSBXVEYgeworCitjbGFzcyBXb3JrZXJQb29sOjpXb3JrZXIgOiBwdWJsaWMgQXV0b21hdGlj
VGhyZWFkIHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgV29ya2VyUG9vbDsKKworICAgIFdv
cmtlcihjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBXb3JrZXJQb29sJiBwb29sLCBCb3g8
TG9jaz4gbG9jaywgUmVmUHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gY29uZGl0aW9uLCBT
ZWNvbmRzIHRpbWVvdXQpCisgICAgICAgIDogQXV0b21hdGljVGhyZWFkKGxvY2tlciwgbG9jaywg
Y29uZGl0aW9uLCB0aW1lb3V0KQorICAgICAgICAsIG1fcG9vbChwb29sKQorICAgIHsKKyAgICB9
CisKKyAgICBQb2xsUmVzdWx0IHBvbGwoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKG1fcG9vbC5tX3Rhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBQb2xsUmVzdWx0OjpXYWl0OworICAgICAgICBtX3Rhc2sgPSBtX3Bvb2wubV90YXNr
cy50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYgKCFtX3Rhc2spCisgICAgICAgICAgICByZXR1cm4g
UG9sbFJlc3VsdDo6U3RvcDsKKyAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6Oldvcms7CisgICAg
fQorCisgICAgV29ya1Jlc3VsdCB3b3JrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fdGFz
aygpOworICAgICAgICBtX3Rhc2sgPSBudWxscHRyOworICAgICAgICByZXR1cm4gV29ya1Jlc3Vs
dDo6Q29udGludWU7CisgICAgfQorCisgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLm1fbG9jayk7CisgICAg
ICAgIG1fcG9vbC5tX251bWJlck9mQWN0aXZlV29ya2VycysrOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKKyAgICB7Cisg
ICAgICAgIG1fcG9vbC5tX251bWJlck9mQWN0aXZlV29ya2Vycy0tOworICAgIH0KKworICAgIGJv
b2wgc2hvdWxkU2xlZXAoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3Bvb2wuc2hvdWxkU2xlZXAobG9ja2VyKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgV29ya2VyUG9vbCYgbV9wb29sOworICAgIEZ1bmN0aW9uPHZvaWQoKT4g
bV90YXNrOworfTsKKworV29ya2VyUG9vbDo6V29ya2VyUG9vbCh1bnNpZ25lZCBudW1iZXJPZldv
cmtlcnMsIFNlY29uZHMgdGltZW91dCkKKyAgICA6IG1fbG9jayhCb3g8TG9jaz46OmNyZWF0ZSgp
KQorICAgICwgbV9jb25kaXRpb24oQXV0b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkK
KyAgICAsIG1fdGltZW91dCh0aW1lb3V0KQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xv
Y2spOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZldvcmtlcnM7ICsraSkK
KyAgICAgICAgbV93b3JrZXJzLmFwcGVuZChhZG9wdFJlZigqbmV3IFdvcmtlcihsb2NrZXIsICp0
aGlzLCBtX2xvY2ssIG1fY29uZGl0aW9uLCB0aW1lb3V0KSkpOworfQorCitXb3JrZXJQb29sOjp+
V29ya2VyUG9vbCgpCit7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2Nr
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV93b3JrZXJzLnNpemUoKTsgaS0tOykKKyAg
ICAgICAgICAgIG1fdGFza3MuYXBwZW5kKG51bGxwdHIpOyAvLyBVc2UgbnVsbCB0YXNrIHRvIGlu
ZGljYXRlIHRoYXQgd2Ugd2FudCB0aGUgdGhyZWFkIHRvIHRlcm1pbmF0ZS4KKyAgICAgICAgbV9j
b25kaXRpb24tPm5vdGlmeUFsbChsb2NrZXIpOworICAgIH0KKyAgICBmb3IgKGF1dG8mIHdvcmtl
ciA6IG1fd29ya2VycykKKyAgICAgICAgd29ya2VyLT5qb2luKCk7CisgICAgQVNTRVJUKCFtX251
bWJlck9mQWN0aXZlV29ya2Vycyk7Cit9CisKK2Jvb2wgV29ya2VyUG9vbDo6c2hvdWxkU2xlZXAo
Y29uc3QgQWJzdHJhY3RMb2NrZXImKQoreworICAgIGlmIChtX3RpbWVvdXQgPiAwX3MgJiYgc3Rk
Ojppc2luZihtX3RpbWVvdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBNb25vdG9u
aWNUaW1lIGN1cnJlbnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgaWYgKHN0ZDo6
aXNuYW4obV9sYXN0VGltZW91dFRpbWUpIHx8IChjdXJyZW50VGltZSA+PSAobV9sYXN0VGltZW91
dFRpbWUgICsgbV90aW1lb3V0KSkpIHsKKyAgICAgICAgbV9sYXN0VGltZW91dFRpbWUgPSBjdXJy
ZW50VGltZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBXb3JrZXJQb29sOjpwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+IHRhc2spCit7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgbV90YXNrcy5hcHBlbmQoV1RG
TW92ZSh0YXNrKSk7CisgICAgbV9jb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrZXJQb29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBlZDgyY2I0YmQxNTAwNTA3MTBiYjM3MDQ5NDhm
NjliZTE4YTA3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBvb2wu
aApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0F1dG9tYXRpY1Ro
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgV29ya2VyUG9vbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxXb3JrZXJQb29sPiB7CitwdWJsaWM6CisgICAgfldvcmtlclBvb2woKTsK
KworICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPik7CisKKyAgICAvLyBJZiB0aW1l
b3V0IGlzIGluZmluaXR5LCBpdCBtZWFucyBBdXRvbWF0aWNUaHJlYWQgd2lsbCBiZSBuZXZlciBh
dXRvbWF0aWNhbGx5IGRlc3Ryb3llZC4KKyAgICBzdGF0aWMgUmVmPFdvcmtlclBvb2w+IGNyZWF0
ZSh1bnNpZ25lZCBudW1iZXJPZldvcmtlcnMgID0gV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVz
KCksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCkpCisgICAgeworICAgICAg
ICBBU1NFUlQobnVtYmVyT2ZXb3JrZXJzID49IDEpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXb3JrZXJQb29sKG51bWJlck9mV29ya2VycywgdGltZW91dCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBjbGFzcyBXb3JrZXI7CisgICAgZnJpZW5kIGNsYXNzIFdvcmtlcjsKKworICAg
IFdvcmtlclBvb2wodW5zaWduZWQgbnVtYmVyT2ZXb3JrZXJzLCBTZWNvbmRzIHRpbWVvdXQpOwor
CisgICAgYm9vbCBzaG91bGRTbGVlcChjb25zdCBBYnN0cmFjdExvY2tlciYpOworCisgICAgQm94
PExvY2s+IG1fbG9jazsKKyAgICBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiBtX2Nv
bmRpdGlvbjsKKyAgICBTZWNvbmRzIG1fdGltZW91dDsKKyAgICBNb25vdG9uaWNUaW1lIG1fbGFz
dFRpbWVvdXRUaW1lIHsgTW9ub3RvbmljVGltZTo6bmFuKCkgfTsKKyAgICB1bnNpZ25lZCBtX251
bWJlck9mQWN0aXZlV29ya2VycyB7IDAgfTsKKyAgICBWZWN0b3I8UmVmPFdvcmtlcj4+IG1fd29y
a2VyczsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzOworfTsKKworfQorCit1
c2luZyBXVEY6OldvcmtlclBvb2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5n
aW5lVGhyZWFkZWQuY3BwCmluZGV4IDY0NjE3ZmYzMGFhZDQ0NDgzNjU1NWEwYWE2MDRmZDAxYTdh
MjE3OWIuLjU2NWQ5MjAxYjlkYTk5YTIyYTIwYjA3YWE5MWVhNDEwY2U5OTI0NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50
aW5nRW5naW5lVGhyZWFkZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwCkBAIC0zMywyNyAr
MzMsMTAgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiTmljb3NpYUJ1
ZmZlci5oIgogI2luY2x1ZGUgIk5pY29zaWFQYWludGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlIDxn
bGliLmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIE5pY29zaWEg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0cnVjdCBUYXNrRGF0YSB7Ci0gICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotCi0gICAgUmVmPEJ1ZmZlcj4gYnVmZmVyOwot
ICAgIFBhaW50aW5nT3BlcmF0aW9ucyBwYWludGluZ09wZXJhdGlvbnM7Ci19OwotCi12b2lkIHNf
dGhyZWFkRnVuYyhncG9pbnRlciBkYXRhLCBncG9pbnRlcikKLXsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8VGFza0RhdGE+IHRhc2tEYXRhKHN0YXRpY19jYXN0PFRhc2tEYXRhKj4oZGF0YSkpOwotCi0g
ICAgUGFpbnRpbmdDb250ZXh0OjpyZXBsYXkodGFza0RhdGEtPmJ1ZmZlciwgdGFza0RhdGEtPnBh
aW50aW5nT3BlcmF0aW9ucyk7Ci0gICAgdGFza0RhdGEtPmJ1ZmZlci0+Y29tcGxldGVQYWludGlu
ZygpOwotfQotCiBzdGF0aWMgdm9pZCBwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgR3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIG1hcHBlZFNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGZs
b2F0IGNvbnRlbnRzU2NhbGUsIGJvb2wgc3VwcG9ydHNBbHBoYSkKIHsKICAgICBjb250ZXh0LnNh
dmUoKTsKQEAgLTc1LDE0ICs1OCwxMiBAQCBzdGF0aWMgdm9pZCBwYWludExheWVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IEludAogfQogCiBQ
YWludGluZ0VuZ2luZVRocmVhZGVkOjpQYWludGluZ0VuZ2luZVRocmVhZGVkKCkKKyAgICA6IG1f
d29ya2VyUG9vbChXb3JrZXJQb29sOjpjcmVhdGUoNCkpCiB7Ci0gICAgLy8gRklYTUU6IHRoZXNl
IHBhcmFtZXRlcnMgc2hvdWxkIGJlIGZpbmUtdHVuZWQsIG9yIG1heWJlIG1hZGUgY29uZmlndXJh
YmxlLgotICAgIG1fdGhyZWFkUG9vbCA9IGdfdGhyZWFkX3Bvb2xfbmV3KHNfdGhyZWFkRnVuYywg
bnVsbHB0ciwgNCwgVFJVRSwgbnVsbHB0cik7CiB9CiAKIFBhaW50aW5nRW5naW5lVGhyZWFkZWQ6
On5QYWludGluZ0VuZ2luZVRocmVhZGVkKCkKIHsKLSAgICBnX3RocmVhZF9wb29sX2ZyZWUobV90
aHJlYWRQb29sLCBUUlVFLCBGQUxTRSk7CiB9CiAKIGJvb2wgUGFpbnRpbmdFbmdpbmVUaHJlYWRl
ZDo6cGFpbnQoR3JhcGhpY3NMYXllciYgbGF5ZXIsIFJlZjxCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBtYXBwZWRTb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKQpAQCAtOTYsNyAr
NzcsMTAgQEAgYm9vbCBQYWludGluZ0VuZ2luZVRocmVhZGVkOjpwYWludChHcmFwaGljc0xheWVy
JiBsYXllciwgUmVmPEJ1ZmZlcj4mJiBidWZmZXIsIGMKICAgICAgICAgICAgIHBhaW50TGF5ZXIo
Y29udGV4dCwgbGF5ZXIsIHNvdXJjZVJlY3QsIG1hcHBlZFNvdXJjZVJlY3QsIHRhcmdldFJlY3Qs
IGNvbnRlbnRzU2NhbGUsIGJ1ZmZlci0+c3VwcG9ydHNBbHBoYSgpKTsKICAgICAgICAgfSk7CiAK
LSAgICBnX3RocmVhZF9wb29sX3B1c2gobV90aHJlYWRQb29sLCBuZXcgVGFza0RhdGEgeyBXVEZN
b3ZlKGJ1ZmZlciksIFdURk1vdmUocGFpbnRpbmdPcGVyYXRpb25zKSB9LCBudWxscHRyKTsKKyAg
ICBtX3dvcmtlclBvb2wtPnBvc3RUYXNrKFtwYWludGluZ09wZXJhdGlvbnMgPSBXVEZNb3ZlKHBh
aW50aW5nT3BlcmF0aW9ucyksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0geworICAgICAgICBQ
YWludGluZ0NvbnRleHQ6OnJlcGxheShidWZmZXIsIHBhaW50aW5nT3BlcmF0aW9ucyk7CisgICAg
ICAgIGJ1ZmZlci0+Y29tcGxldGVQYWludGluZygpOworICAgIH0pOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmgKaW5k
ZXggMzkxYzhjYzNlMjg0YTU3ZWRlY2E5ZWMxMjcwY2NlNDJiYzBlOGY1ZS4uYWRkMTRlZDVmOTVj
MzAyMjczNGZmOTQyNzQ0NzI2ZDU0OTBjNmU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBh
aW50aW5nRW5naW5lVGhyZWFkZWQuaApAQCAtMjksOCArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdFbmdpbmUuaCIKLQotdHlwZWRlZiBzdHJ1Y3QgX0dU
aHJlYWRQb29sIEdUaHJlYWRQb29sOworI2luY2x1ZGUgPHd0Zi9Xb3JrZXJQb29sLmg+CiAKIG5h
bWVzcGFjZSBOaWNvc2lhIHsKIApAQCAtNDIsNyArNDEsNyBAQCBjbGFzcyBQYWludGluZ0VuZ2lu
ZVRocmVhZGVkIGZpbmFsIDogcHVibGljIFBhaW50aW5nRW5naW5lIHsKIHByaXZhdGU6CiAgICAg
Ym9vbCBwYWludChXZWJDb3JlOjpHcmFwaGljc0xheWVyJiwgUmVmPEJ1ZmZlcj4mJiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgR1RocmVhZFBvb2wqIG1fdGhyZWFk
UG9vbDsKKyAgICBSZWY8V29ya2VyUG9vbD4gbV93b3JrZXJQb29sOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDU4Y2U3MGZkOGNiZmNiMDZlYjc5ZDY3NGJmZmVmZWQ1MWQ3MWIyZGYuLmY0ZWEw
YzNlZWZhOWNkODI1MjRkMjk1NjQwNjBmMjcyYWNjNDIwYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wNi0w
NiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RG
XSBBZGQgV29ya2VyUG9vbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0NTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA2LTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGNvbG9yLWZpbHRlciB0byAtYXBwbGUtY29sb3It
ZmlsdGVyIGFuZCBkbyBub3QgZXhwb3NlIGl0IHRvIFdlYiBjb250ZW50CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
TWFrZUxpc3RzLnR4dAppbmRleCAxMGY4ZmNhZmMwNWFhN2Q4ZTc3MGY4MzVlOTJjY2VlODgxODU3
NjcyLi4yZTdkMWMzZDg5YTMyNWViNWQ5YWVmOTVlODFmZGZjNzIzM2FjMGQ3IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTE1OCw2ICsxNTgsNyBAQCBzZXQoVGVzdFdURl9TT1VS
Q0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAorICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9Xb3JrZXJQb29sLmNwcAogKQogCiAjIEZJWE1FOiBUZXN0cy9XVEYv
UnVuTG9vcC5jcHAgaXMgbWlzc2luZyBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayBmb3IgV2luZG93
cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtlclBvb2wu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjk4ZTI4YTFhN2EyYjFlZjI3MTdlYWM1MjQ0NzYwNDVhOWU2YzZiNQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29ya2VyUG9vbC5oPgorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGLCBXb3JrZXJQb29sRGVjcmVhc2Up
Cit7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IGNvdW50ZXIgeyAwIH07CisgICAgeworICAg
ICAgICBSZWY8V29ya2VyUG9vbD4gcG9vbCA9IFdvcmtlclBvb2w6OmNyZWF0ZSgpOworICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgICAgIHBvb2wtPnBv
c3RUYXNrKFsmXSB7CisgICAgICAgICAgICAgICAgKytjb3VudGVyOworICAgICAgICAgICAgICAg
IFRocmVhZDo6eWllbGQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIC8v
IFdoZW4gZGVzdHJveWluZyBXb3JrZXJQb29sLCBhbGwgdGhlIHRhc2tzIGFyZSBkcmFpbmVkLgor
ICAgIH0KKyAgICBFWFBFQ1RfRVEoY291bnRlci5sb2FkKCksIDEwMDAwVSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342126</attachid>
            <date>2018-06-06 23:36:34 -0700</date>
            <delta_ts>2018-06-07 00:37:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174569-20180607153633.patch</filename>
            <type>text/plain</type>
            <size>25915</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1ZGI0MjQ0N2M1OGZhMGJmMzdlN2E4
ZTUxNGVhZmY3MzE3NjdhODUuLjQ5YzU4NWQyM2JmNjAyOGE3M2RkOTg4NWZiYjNkZjc0YTg4YjRl
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMDYtMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0F1dG9tYXRpY1RocmVhZC5jcHA6Cisg
ICAgICAgIChXVEY6OkF1dG9tYXRpY1RocmVhZDo6QXV0b21hdGljVGhyZWFkKToKKyAgICAgICAg
KFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCk6CisgICAgICAgICogd3RmL0F1dG9tYXRpY1Ro
cmVhZC5oOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvV29y
a2VyUG9vbC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrZXJQb29sOjpXb3JrZXI6Oldv
cmtlcik6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6Oldvcmtlcjo6dGhyZWFkSXNTdG9wcGlu
Zyk6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6OldvcmtlclBvb2wpOgorICAgICAgICAoV1RG
OjpXb3JrZXJQb29sOjp+V29ya2VyUG9vbCk6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6OnNo
b3VsZFNsZWVwKToKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6cG9zdFRhc2spOgorICAgICAg
ICAqIHd0Zi9Xb3JrZXJQb29sLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrZXJQb29sOjpj
cmVhdGUpOgorCiAyMDE4LTA2LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIFJldGlyZSBEaXNwYXRjaFB0ciwgYW5kIGFkZCBtb3JlIG1vdmUgc2Vt
YW50aWNzIGFuZCBzaW1wbGVyICNpZnMgdG8gb3RoZXIgc21hcnQgcG9pbnRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjMjdlNmI0NWQ2N2Q3ZTQ0MGY1MzExODRmNWY2MmZhYjc0OTJkMTdkLi5mNzg3OTU1YzRi
ODQyYmMyMTlhZWNkMmQxOTdkMjdlM2VlYTg3OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTgtMDYtMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
UGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Vu
Z2luZVRocmVhZGVkOjpQYWludGluZ0VuZ2luZVRocmVhZGVkKToKKyAgICAgICAgKE5pY29zaWE6
OlBhaW50aW5nRW5naW5lVGhyZWFkZWQ6On5QYWludGluZ0VuZ2luZVRocmVhZGVkKToKKyAgICAg
ICAgKE5pY29zaWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OnBhaW50KToKKyAgICAgICAgKE5p
Y29zaWE6OnNfdGhyZWFkRnVuYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oOgorCiAyMDE4LTA2LTA2
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBIVFRQIEhlYWRl
ciB2YWx1ZXMgdmFsaWRhdGlvbiBpcyB0b28gc3RyaWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4NjJjN2NjYmMyZjA4ZTBjNmVlOGVlMjA3MjgxNTZlZGRl
ZjdkM2ZmLi4zYjA0YjcwOGIwZjMzZWZkY2JiNGQ2NTQ4YzdmMjFhYjRjZGE0OTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NSw2ICsxNDUsNyBAQAog
CQlEQ0VFMjIwMTFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1
NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tICovOyB9OwogCQlFMTU1NTZGNTE4
QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4
RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CiAJCUUzMTFGQjE3MUYwQTU2
OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzExRkIxNTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3Jv
dXAuY3BwICovOyB9OworCQlFMzg4ODg2RjIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4ODg2
RDIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi87IH07CiAJCUUzOEM0MTI1MUVC
NEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGlt
ZUNvY29hLm1tICovOyB9OwogCQlFMzhDNDEyODFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhDNDEy
NjFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi87IH07CiAJCUUzOEQ2RTI3MUY1NTIy
RTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyogU3Ry
aW5nQnVpbGRlckpTT04uY3BwICovOyB9OwpAQCAtNjE0LDYgKzYxNSw4IEBACiAJCUUzMTFGQjE2
MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaHJlYWRHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzIwMEFCNDFFOUE1MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRDVGODcxRkJFRDY2NzAwQkY2MjVFIC8qIFJlY3Vyc2FibGVM
YW1iZGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdXJzYWJsZUxhbWJk
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzg4ODg2RDIwQzkwOTUxMDBFNjMy
QkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4ODg4NkUy
MEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhD
NDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1BVVGltZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzhDNDEyNjFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVUaW1lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QzQxMjcxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVVGltZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEyMiw2ICsxMTI1LDggQEAKIAkJCQkwRjM1MDE2MzFCQjI1
OEM4MDBGMEEyQTMgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCTBGRTQ0NzlBMUI3QUFBMDMwMDk0
OThFQiAvKiBXb3JkTG9jay5jcHAgKi8sCiAJCQkJMEZFNDQ3OUIxQjdBQUEwMzAwOTQ5OEVCIC8q
IFdvcmRMb2NrLmggKi8sCisJCQkJRTM4ODg4NkQyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBv
b2wuY3BwICovLAorCQkJCUUzODg4ODZFMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmgg
Ki8sCiAJCQkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi8sCiAJ
CQkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5oICovLAogCQkJCUZFMDVG
QUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLywKQEAgLTE1NTQsNiAr
MTU1OSw3IEBACiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhy
ZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBX
b3JkTG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzg4ODg2RjIwQzkwOTUxMDBFNjMyQkMg
LyogV29ya2VyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1
MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDNEMUE5NjI1
M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTA1
RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCmluZGV4IDJjNDg2YzQ4MDhhYWUzMjg1OGRkMmIy
MjY0NDg0NzI2YWE5YTk5YjkuLmE1OWM1ZDFiYzk2OTI0MGQ4YzdhZGRjY2MyY2JiNDcxZTllNzAx
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcApAQCAtMTA0LDkgKzEwNCwxMCBAQCBi
b29sIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y29udGFpbnMoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBBdXRvbWF0aWNUaHJlYWQqCiAgICAgcmV0dXJuIG1fdGhyZWFkcy5jb250YWlucyh0aHJl
YWQpOwogfQogCi1BdXRvbWF0aWNUaHJlYWQ6OkF1dG9tYXRpY1RocmVhZChjb25zdCBBYnN0cmFj
dExvY2tlciYgbG9ja2VyLCBCb3g8TG9jaz4gbG9jaywgUmVmUHRyPEF1dG9tYXRpY1RocmVhZENv
bmRpdGlvbj4gY29uZGl0aW9uKQorQXV0b21hdGljVGhyZWFkOjpBdXRvbWF0aWNUaHJlYWQoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgQm94PExvY2s+IGxvY2ssIFJlZlB0cjxBdXRvbWF0
aWNUaHJlYWRDb25kaXRpb24+IGNvbmRpdGlvbiwgU2Vjb25kcyB0aW1lb3V0KQogICAgIDogbV9s
b2NrKGxvY2spCiAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCisgICAgLCBtX3RpbWVvdXQo
dGltZW91dCkKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVy
KHRoaXMpLCAiOiBBbGxvY2F0ZWQgQXV0b21hdGljVGhyZWFkLlxuIik7CkBAIC0yMDQsMTAgKzIw
NSwxMCBAQCB2b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXIm
KQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2h1dCB0aGUgdGhyZWFkIGRvd24gYWZ0ZXIg
YSB0aW1lb3V0LgogICAgICAgICAgICAgICAgICAgICAgICAgbV9pc1dhaXRpbmcgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhd29rZW5CeU5vdGlmeSA9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndhaXRGb3IoKm1fbG9jaywgMTBfcyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndhaXRGb3IoKm1f
bG9jaywgbV90aW1lb3V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYm
ICFhd29rZW5CeU5vdGlmeSAmJiAhbV9pc1dhaXRpbmcpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiB3YWl0Rm9yIHRpbWVkIG91dCwgYnV0
IG5vdGlmaWVkIHZpYSBtX2lzV2FpdGluZyBmbGFnIVxuIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV9pc1dhaXRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2lz
V2FpdGluZyAmJiBzaG91bGRTbGVlcChsb2NrZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pc1dhaXRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQ
b2ludGVyKHRoaXMpLCAiOiBHb2luZyB0byBzbGVlcCFcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvQXV0b21hdGljVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJl
YWQuaAppbmRleCAxYjkwNDU0MGM3ZjYwNDZiMDc1MmFmZTk3NWQyMmEzYjRhMmM4YjhhLi5mZjU0
ZjMxNzQxYmU3OGZkM2E1MmNlNDI0NzY3MTg3NGIyY2Q2ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNU
aHJlYWQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBBdXRv
bWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljCiBwcm90
ZWN0ZWQ6CiAgICAgLy8gVGhpcyBsb2dpY2FsbHkgY3JlYXRlcyB0aGUgdGhyZWFkLCBidXQgaW4g
cmVhbGl0eSB0aGUgdGhyZWFkIHdvbid0IGJlIGNyZWF0ZWQgdW50aWwgc29tZW9uZQogICAgIC8v
IGNhbGxzIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6bm90aWZ5T25lKCkgb3Igbm90aWZ5QWxs
KCkuCi0gICAgQXV0b21hdGljVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExvY2s+
LCBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPik7CisgICAgQXV0b21hdGljVGhyZWFk
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWZQdHI8QXV0b21hdGljVGhyZWFk
Q29uZGl0aW9uPiwgU2Vjb25kcyB0aW1lb3V0ID0gMTBfcyk7CiAgICAgCiAgICAgLy8gVG8gdW5k
ZXJzdGFuZCBQb2xsUmVzdWx0IGFuZCBXb3JrUmVzdWx0LCBpbWFnaW5lIHRoYXQgcG9sbCgpIGFu
ZCB3b3JrKCkgYXJlIGJlaW5nIGNhbGxlZCBsaWtlCiAgICAgLy8gc286CkBAIC0xNjgsNiArMTY4
LDExIEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBBdXRvbWF0aWNUaHJlYWQgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljCiAgICAgLy8gY2FuIGJlIHN1cmUgdGhhdCB0
aGUgZGVmYXVsdCBvbmVzIGRvbid0IGRvIGFueXRoaW5nIChzbyB5b3UgZG9uJ3QgbmVlZCBhIHN1
cGVyIGNhbGwpLgogICAgIHZpcnR1YWwgdm9pZCB0aHJlYWREaWRTdGFydCgpOwogICAgIHZpcnR1
YWwgdm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CisKKyAgICAv
LyBDb250cm9sIHdoZXRoZXIgdGhpcyBhdXRvbWF0aWMgdGhyZWFkIHNob3VsZCBzbGVlcCB3aGVu
IHRpbWVvdXQgaGFwcGVucy4KKyAgICAvLyBCeSBvdmVycmlkaW5nIHRoaXMgZnVuY3Rpb24sIHdl
IGNhbiBjdXN0b21pemUgaG93IGF1dG9tYXRpYyB0aHJlYWRzIHdpbGwgc2xlZXAuCisgICAgLy8g
Rm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUgdGhyZWFkIHBvb2wsIHlvdSBjYW4gZGVjcmVhc2Ug
YWN0aXZlIHRocmVhZHMgbW9kZXJhdGVseS4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2xlZXAo
Y29uc3QgQWJzdHJhY3RMb2NrZXImKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBBdXRvbWF0aWNUaHJlYWRDb25kaXRpb247CkBAIC0xODEsNiArMTg2
LDcgQEAgY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIEF1dG9tYXRpY1RocmVhZCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxBdXRvbWF0aWMKICAgICBib29sIG1faGFzVW5kZXJseWluZ1Ro
cmVhZCB7IGZhbHNlIH07CiAgICAgQ29uZGl0aW9uIG1fd2FpdENvbmRpdGlvbjsKICAgICBDb25k
aXRpb24gbV9pc1J1bm5pbmdDb25kaXRpb247CisgICAgU2Vjb25kcyBtX3RpbWVvdXQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNmNlNjE3YTdiNGRj
YTQwNDhiNTdhMjYyODYzNjFkNDU3NzMzM2IzYS4uMGY5ZjRlMWYyZGExNmMzMTJjMGRkNTJkOGRi
ZTk1M2I1NTRkMzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI1Niw2ICsyNTYsNyBAQCBz
ZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgV2luZG93c0V4dHJhcy5oCiAgICAgV29yZExvY2su
aAogICAgIFdvcmtRdWV1ZS5oCisgICAgV29ya2VyUG9vbC5oCiAgICAgZHRvYS5oCiAKICAgICBk
dG9hL2JpZ251bS1kdG9hLmgKQEAgLTM5MCw2ICszOTEsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAg
ICBXYWxsVGltZS5jcHAKICAgICBXb3JkTG9jay5jcHAKICAgICBXb3JrUXVldWUuY3BwCisgICAg
V29ya2VyUG9vbC5jcHAKICAgICBkdG9hLmNwcAogCiAgICAgZHRvYS9iaWdudW0tZHRvYS5jYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrZXJQb29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWEyMzZlNGYyNmNmOWFlZWU4YjJiZGYyNTBl
NGE2MGZhNTNjZTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9v
bC5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtl
clBvb2wuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworY2xhc3MgV29ya2VyUG9vbDo6V29ya2VyIDogcHVibGljIEF1dG9tYXRpY1RocmVh
ZCB7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIFdvcmtlclBvb2w7CisKKyAgICBXb3JrZXIo
Y29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgV29ya2VyUG9vbCYgcG9vbCwgQm94PExvY2s+
IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IGNvbmRpdGlvbiwgU2Vjb25k
cyB0aW1lb3V0KQorICAgICAgICA6IEF1dG9tYXRpY1RocmVhZChsb2NrZXIsIGxvY2ssIGNvbmRp
dGlvbiwgdGltZW91dCkKKyAgICAgICAgLCBtX3Bvb2wocG9vbCkKKyAgICB7CisgICAgfQorCisg
ICAgUG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmIChtX3Bvb2wubV90YXNrcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm4gUG9sbFJlc3VsdDo6V2FpdDsKKyAgICAgICAgbV90YXNrID0gbV9wb29sLm1fdGFza3MudGFr
ZUZpcnN0KCk7CisgICAgICAgIGlmICghbV90YXNrKQorICAgICAgICAgICAgcmV0dXJuIFBvbGxS
ZXN1bHQ6OlN0b3A7CisgICAgICAgIHJldHVybiBQb2xsUmVzdWx0OjpXb3JrOworICAgIH0KKwor
ICAgIFdvcmtSZXN1bHQgd29yaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3Rhc2soKTsK
KyAgICAgICAgbV90YXNrID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNv
bnRpbnVlOworICAgIH0KKworICAgIHZvaWQgdGhyZWFkRGlkU3RhcnQoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC5tX2xvY2spOworICAgICAgICBt
X3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMrKzsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYpCisgICAgeworICAgICAg
ICBtX3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMtLTsKKyAgICB9CisKKyAgICBib29sIHNo
b3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICByZXR1cm4gbV9wb29sLnNob3VsZFNsZWVwKGxvY2tlcik7CisgICAgfQorCitwcml2
YXRlOgorICAgIFdvcmtlclBvb2wmIG1fcG9vbDsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fdGFz
azsKK307CisKK1dvcmtlclBvb2w6OldvcmtlclBvb2wodW5zaWduZWQgbnVtYmVyT2ZXb3JrZXJz
LCBTZWNvbmRzIHRpbWVvdXQpCisgICAgOiBtX2xvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKKyAg
ICAsIG1fY29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCisgICAg
LCBtX3RpbWVvdXQodGltZW91dCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JrZXJzOyArK2kpCisgICAg
ICAgIG1fd29ya2Vycy5hcHBlbmQoYWRvcHRSZWYoKm5ldyBXb3JrZXIobG9ja2VyLCAqdGhpcywg
bV9sb2NrLCBtX2NvbmRpdGlvbiwgdGltZW91dCkpKTsKK30KKworV29ya2VyUG9vbDo6fldvcmtl
clBvb2woKQoreworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fd29ya2Vycy5zaXplKCk7IGktLTspCisgICAgICAg
ICAgICBtX3Rhc2tzLmFwcGVuZChudWxscHRyKTsgLy8gVXNlIG51bGwgdGFzayB0byBpbmRpY2F0
ZSB0aGF0IHdlIHdhbnQgdGhlIHRocmVhZCB0byB0ZXJtaW5hdGUuCisgICAgICAgIG1fY29uZGl0
aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBt
X3dvcmtlcnMpCisgICAgICAgIHdvcmtlci0+am9pbigpOworICAgIEFTU0VSVCghbV9udW1iZXJP
ZkFjdGl2ZVdvcmtlcnMpOworfQorCitib29sIFdvcmtlclBvb2w6OnNob3VsZFNsZWVwKGNvbnN0
IEFic3RyYWN0TG9ja2VyJikKK3sKKyAgICBpZiAobV90aW1lb3V0ID4gMF9zICYmIHN0ZDo6aXNp
bmYobV90aW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTW9ub3RvbmljVGlt
ZSBjdXJyZW50VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIGlmIChzdGQ6OmlzbmFu
KG1fbGFzdFRpbWVvdXRUaW1lKSB8fCAoY3VycmVudFRpbWUgPj0gKG1fbGFzdFRpbWVvdXRUaW1l
ICArIG1fdGltZW91dCkpKSB7CisgICAgICAgIG1fbGFzdFRpbWVvdXRUaW1lID0gY3VycmVudFRp
bWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgV29ya2VyUG9vbDo6cG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiB0YXNrKQoreworICAg
IExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIG1fdGFza3MuYXBwZW5kKFdURk1vdmUo
dGFzaykpOworICAgIG1fY29uZGl0aW9uLT5ub3RpZnlPbmUobG9ja2VyKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5oIGIvU291cmNlL1dURi93dGYvV29y
a2VyUG9vbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZWQ4MmNiNGJkMTUwMDUwNzEwYmIzNzA0OTQ4ZjY5YmUx
OGEwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmgKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9BdXRvbWF0aWNUaHJlYWQu
aD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFdvcmtlclBvb2wgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8V29ya2VyUG9vbD4geworcHVibGljOgorICAgIH5Xb3JrZXJQb29sKCk7CisKKyAg
ICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4pOworCisgICAgLy8gSWYgdGltZW91dCBp
cyBpbmZpbml0eSwgaXQgbWVhbnMgQXV0b21hdGljVGhyZWFkIHdpbGwgYmUgbmV2ZXIgYXV0b21h
dGljYWxseSBkZXN0cm95ZWQuCisgICAgc3RhdGljIFJlZjxXb3JrZXJQb29sPiBjcmVhdGUodW5z
aWduZWQgbnVtYmVyT2ZXb3JrZXJzICA9IFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpLCBT
ZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG51bWJlck9mV29ya2VycyA+PSAxKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V29ya2VyUG9vbChudW1iZXJPZldvcmtlcnMsIHRpbWVvdXQpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgY2xhc3MgV29ya2VyOworICAgIGZyaWVuZCBjbGFzcyBXb3JrZXI7CisKKyAgICBXb3Jr
ZXJQb29sKHVuc2lnbmVkIG51bWJlck9mV29ya2VycywgU2Vjb25kcyB0aW1lb3V0KTsKKworICAg
IGJvb2wgc2hvdWxkU2xlZXAoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsKKworICAgIEJveDxMb2Nr
PiBtX2xvY2s7CisgICAgUmVmUHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gbV9jb25kaXRp
b247CisgICAgU2Vjb25kcyBtX3RpbWVvdXQ7CisgICAgTW9ub3RvbmljVGltZSBtX2xhc3RUaW1l
b3V0VGltZSB7IE1vbm90b25pY1RpbWU6Om5hbigpIH07CisgICAgdW5zaWduZWQgbV9udW1iZXJP
ZkFjdGl2ZVdvcmtlcnMgeyAwIH07CisgICAgVmVjdG9yPFJlZjxXb3JrZXI+PiBtX3dvcmtlcnM7
CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrczsKK307CisKK30KKwordXNpbmcg
V1RGOjpXb3JrZXJQb29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRo
cmVhZGVkLmNwcAppbmRleCA2NDYxN2ZmMzBhYWQ0NDQ4MzY1NTVhMGFhNjA0ZmQwMWE3YTIxNzli
Li41NjVkOTIwMWI5ZGE5OWEyMmEyMGIwN2FhOTFlYTQxMGNlOTkyNDU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0Vu
Z2luZVRocmVhZGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmNwcApAQCAtMzMsMjcgKzMzLDEw
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIk5pY29zaWFCdWZmZXIu
aCIKICNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSA8Z2xpYi5o
PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdHJ1Y3QgVGFza0RhdGEgewotICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAgIFJlZjxCdWZmZXI+IGJ1ZmZlcjsKLSAgICBQ
YWludGluZ09wZXJhdGlvbnMgcGFpbnRpbmdPcGVyYXRpb25zOwotfTsKLQotdm9pZCBzX3RocmVh
ZEZ1bmMoZ3BvaW50ZXIgZGF0YSwgZ3BvaW50ZXIpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRh
c2tEYXRhPiB0YXNrRGF0YShzdGF0aWNfY2FzdDxUYXNrRGF0YSo+KGRhdGEpKTsKLQotICAgIFBh
aW50aW5nQ29udGV4dDo6cmVwbGF5KHRhc2tEYXRhLT5idWZmZXIsIHRhc2tEYXRhLT5wYWludGlu
Z09wZXJhdGlvbnMpOwotICAgIHRhc2tEYXRhLT5idWZmZXItPmNvbXBsZXRlUGFpbnRpbmcoKTsK
LX0KLQogc3RhdGljIHZvaWQgcGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdy
YXBoaWNzTGF5ZXImIGxheWVyLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBtYXBwZWRTb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBmbG9hdCBj
b250ZW50c1NjYWxlLCBib29sIHN1cHBvcnRzQWxwaGEpCiB7CiAgICAgY29udGV4dC5zYXZlKCk7
CkBAIC03NSwxNCArNTgsMTIgQEAgc3RhdGljIHZvaWQgcGFpbnRMYXllcihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXImIGxheWVyLCBjb25zdCBJbnQKIH0KIAogUGFpbnRp
bmdFbmdpbmVUaHJlYWRlZDo6UGFpbnRpbmdFbmdpbmVUaHJlYWRlZCgpCisgICAgOiBtX3dvcmtl
clBvb2woV29ya2VyUG9vbDo6Y3JlYXRlKDQpKQogewotICAgIC8vIEZJWE1FOiB0aGVzZSBwYXJh
bWV0ZXJzIHNob3VsZCBiZSBmaW5lLXR1bmVkLCBvciBtYXliZSBtYWRlIGNvbmZpZ3VyYWJsZS4K
LSAgICBtX3RocmVhZFBvb2wgPSBnX3RocmVhZF9wb29sX25ldyhzX3RocmVhZEZ1bmMsIG51bGxw
dHIsIDQsIFRSVUUsIG51bGxwdHIpOwogfQogCiBQYWludGluZ0VuZ2luZVRocmVhZGVkOjp+UGFp
bnRpbmdFbmdpbmVUaHJlYWRlZCgpCiB7Ci0gICAgZ190aHJlYWRfcG9vbF9mcmVlKG1fdGhyZWFk
UG9vbCwgVFJVRSwgRkFMU0UpOwogfQogCiBib29sIFBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OnBh
aW50KEdyYXBoaWNzTGF5ZXImIGxheWVyLCBSZWY8QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgbWFwcGVkU291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKQEAgLTk2LDcgKzc3LDEw
IEBAIGJvb2wgUGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6cGFpbnQoR3JhcGhpY3NMYXllciYgbGF5
ZXIsIFJlZjxCdWZmZXI+JiYgYnVmZmVyLCBjCiAgICAgICAgICAgICBwYWludExheWVyKGNvbnRl
eHQsIGxheWVyLCBzb3VyY2VSZWN0LCBtYXBwZWRTb3VyY2VSZWN0LCB0YXJnZXRSZWN0LCBjb250
ZW50c1NjYWxlLCBidWZmZXItPnN1cHBvcnRzQWxwaGEoKSk7CiAgICAgICAgIH0pOwogCi0gICAg
Z190aHJlYWRfcG9vbF9wdXNoKG1fdGhyZWFkUG9vbCwgbmV3IFRhc2tEYXRhIHsgV1RGTW92ZShi
dWZmZXIpLCBXVEZNb3ZlKHBhaW50aW5nT3BlcmF0aW9ucykgfSwgbnVsbHB0cik7CisgICAgbV93
b3JrZXJQb29sLT5wb3N0VGFzayhbcGFpbnRpbmdPcGVyYXRpb25zID0gV1RGTW92ZShwYWludGlu
Z09wZXJhdGlvbnMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIHsKKyAgICAgICAgUGFpbnRp
bmdDb250ZXh0OjpyZXBsYXkoYnVmZmVyLCBwYWludGluZ09wZXJhdGlvbnMpOworICAgICAgICBi
dWZmZXItPmNvbXBsZXRlUGFpbnRpbmcoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oCmluZGV4IDM5
MWM4Y2MzZTI4NGE1N2VkZWNhOWVjMTI3MGNjZTQyYmMwZThmNWUuLmFkZDE0ZWQ1Zjk1YzMwMjI3
MzRmZjk0Mjc0NDcyNmQ1NDkwYzZlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGlu
Z0VuZ2luZVRocmVhZGVkLmgKQEAgLTI5LDggKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiTmljb3NpYVBhaW50aW5nRW5naW5lLmgiCi0KLXR5cGVkZWYgc3RydWN0IF9HVGhyZWFk
UG9vbCBHVGhyZWFkUG9vbDsKKyNpbmNsdWRlIDx3dGYvV29ya2VyUG9vbC5oPgogCiBuYW1lc3Bh
Y2UgTmljb3NpYSB7CiAKQEAgLTQyLDcgKzQxLDcgQEAgY2xhc3MgUGFpbnRpbmdFbmdpbmVUaHJl
YWRlZCBmaW5hbCA6IHB1YmxpYyBQYWludGluZ0VuZ2luZSB7CiBwcml2YXRlOgogICAgIGJvb2wg
cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NMYXllciYsIFJlZjxCdWZmZXI+JiYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKIAotICAgIEdUaHJlYWRQb29sKiBtX3RocmVhZFBvb2w7
CisgICAgUmVmPFdvcmtlclBvb2w+IG1fd29ya2VyUG9vbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA5NTMyOWZmZDY4ODdhMTFhOTBjYjYzNDc2OGFlOTI3NGNjNTFlZmNkLi5jODA2NDc3OTRj
OWQxMTEwOWI2OGZjYTIxOTMwMzljOTk5OGI1M2I0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDYtMDYgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRk
IFdvcmtlclBvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrZXJQb29sLmNwcDogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wNi0wNiAgRnVqaWkgSGlyb25vcmkgIDxIaXJv
bm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luXVtNaW5pQnJvd3Nlcl0gUmVtb3Zl
IGdNYWluV2luZG93IGdsb2JhbCB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
aW5kZXggMTBmOGZjYWZjMDVhYTdkOGU3NzBmODM1ZTkyY2NlZTg4MTg1NzY3Mi4uMmU3ZDFjM2Q4
OWEzMjVlYjVkOWFlZjk1ZTgxZmRmYzcyMzNhYzBkNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0CkBAIC0xNTgsNiArMTU4LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL1dlYWtQdHIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
VEYvV29ya2VyUG9vbC5jcHAKICkKIAogIyBGSVhNRTogVGVzdHMvV1RGL1J1bkxvb3AuY3BwIGlz
IG1pc3NpbmcgYmVjYXVzZSBpdCBkb2Vzbid0IHdvcmsgZm9yIFdpbmRvd3MuCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDEzMTY3YTg5MmE0YmY5NDZiODBhYjU1YTdiNTZhNzEwZTgwOTE5ZmMu
LjYwYzYyYTMwMGI5ODdiMzRlZTRjMzI5YTVkMjYwMzI4ZTVkMTBiZGEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xOTEyLDYgKzE5MTIsNyBAQAogCQlFMTk0RTFCQTE3N0U1MTQ1MDA5QzRE
NEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3Bv
bnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk0RTFCQzE3N0U1MzRBMDA5
QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTE5REI5NzgxQjMyMTM3QzAwREIzOEQ0IC8qIE5hdmlnYXRvckxhbmd1
YWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF2aWdhdG9y
TGFuZ3VhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODg4ODcwMjBDOTA5
ODEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdvcmtlclBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOTUzRjk1MUYyQ0YzMjEwMEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ25hbHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk4QkMwRjIwNDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlQXJyYXkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg5Miw2ICsyODkzLDcgQEAKIAkJCQk3
Q0QwRDVBQTFENTUzNERFMDAwQ0M5RTEgLyogVmFyaWFudC5jcHAgKi8sCiAJCQkJQkM1NUY1Rjgx
NEFENzhFRTAwNDg0QkUxIC8qIFZlY3Rvci5jcHAgKi8sCiAJCQkJMUNCOUJDMzcxQTY3NDgyMzAw
RkU1Njc4IC8qIFdlYWtQdHIuY3BwICovLAorCQkJCUUzODg4ODcwMjBDOTA5ODEwMEU2MzJCQyAv
KiBXb3JrZXJQb29sLmNwcCAqLywKIAkJCQk3QUE2QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyogV29y
a1F1ZXVlLmNwcCAqLywKIAkJCQkyNjVBRjU0RjE1RDFFNDhBMDBCMENCNEEgLyogV1RGU3RyaW5n
LmNwcCAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Xb3JrZXJQb29sLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtlclBv
b2wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY5OGUyOGExYTdhMmIxZWYyNzE3ZWFjNTI0NDc2MDQ1YTllNmM2
YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3Jr
ZXJQb29sLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtl
clBvb2wuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURiwgV29ya2Vy
UG9vbERlY3JlYXNlKQoreworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBjb3VudGVyIHsgMCB9
OworICAgIHsKKyAgICAgICAgUmVmPFdvcmtlclBvb2w+IHBvb2wgPSBXb3JrZXJQb29sOjpjcmVh
dGUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAg
ICAgICBwb29sLT5wb3N0VGFzayhbJl0geworICAgICAgICAgICAgICAgICsrY291bnRlcjsKKyAg
ICAgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgICAgICAvLyBXaGVuIGRlc3Ryb3lpbmcgV29ya2VyUG9vbCwgYWxsIHRoZSB0YXNrcyBh
cmUgZHJhaW5lZC4KKyAgICB9CisgICAgRVhQRUNUX0VRKGNvdW50ZXIubG9hZCgpLCAxMDAwMFUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342133</attachid>
            <date>2018-06-07 00:37:06 -0700</date>
            <delta_ts>2018-06-07 04:21:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174569-20180607163704.patch</filename>
            <type>text/plain</type>
            <size>25862</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1ZGI0MjQ0N2M1OGZhMGJmMzdlN2E4
ZTUxNGVhZmY3MzE3NjdhODUuLjBkNWRkNWNiZDI2ZjI1ZTA1NjNmMTlmZTQ2ZDI2NDdiOGEwYjk0
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMDYtMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0F1dG9tYXRpY1RocmVhZC5jcHA6Cisg
ICAgICAgIChXVEY6OkF1dG9tYXRpY1RocmVhZDo6QXV0b21hdGljVGhyZWFkKToKKyAgICAgICAg
KFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCk6CisgICAgICAgICogd3RmL0F1dG9tYXRpY1Ro
cmVhZC5oOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvV29y
a2VyUG9vbC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrZXJQb29sOjpXb3JrZXI6Oldv
cmtlcik6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6OldvcmtlclBvb2wpOgorICAgICAgICAo
V1RGOjpXb3JrZXJQb29sOjp+V29ya2VyUG9vbCk6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6
OnNob3VsZFNsZWVwKToKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6cG9zdFRhc2spOgorICAg
ICAgICAqIHd0Zi9Xb3JrZXJQb29sLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrZXJQb29s
OjpjcmVhdGUpOgorCiAyMDE4LTA2LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdIFJldGlyZSBEaXNwYXRjaFB0ciwgYW5kIGFkZCBtb3JlIG1vdmUg
c2VtYW50aWNzIGFuZCBzaW1wbGVyICNpZnMgdG8gb3RoZXIgc21hcnQgcG9pbnRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBjMjdlNmI0NWQ2N2Q3ZTQ0MGY1MzExODRmNWY2MmZhYjc0OTJkMTdkLi41MmNiODQw
NzI2YjQyYWRjZGE1YjFhMzNkZTFhNTk1ODBkOWQ5ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTgtMDYtMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQYWludGlu
Z0VuZ2luZVRocmVhZGVkOjpQYWludGluZ0VuZ2luZVRocmVhZGVkKToKKyAgICAgICAgKE5pY29z
aWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQ6On5QYWludGluZ0VuZ2luZVRocmVhZGVkKToKKyAg
ICAgICAgKE5pY29zaWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OnBhaW50KToKKyAgICAgICAg
KE5pY29zaWE6OnNfdGhyZWFkRnVuYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oOgorCiAyMDE4LTA2
LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBIVFRQIEhl
YWRlciB2YWx1ZXMgdmFsaWRhdGlvbiBpcyB0b28gc3RyaWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NjJjN2NjYmMyZjA4ZTBjNmVlOGVlMjA3MjgxNTZl
ZGRlZjdkM2ZmLi4zYjA0YjcwOGIwZjMzZWZkY2JiNGQ2NTQ4YzdmMjFhYjRjZGE0OTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NSw2ICsxNDUsNyBA
QAogCQlEQ0VFMjIwMTFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNF
QTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tICovOyB9OwogCQlFMTU1NTZG
NTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2
RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CiAJCUUzMTFGQjE3MUYw
QTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzExRkIxNTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFk
R3JvdXAuY3BwICovOyB9OworCQlFMzg4ODg2RjIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9v
bC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4
ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi87IH07CiAJCUUzOEM0MTI1
MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BV
VGltZUNvY29hLm1tICovOyB9OwogCQlFMzhDNDEyODFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGlt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhD
NDEyNjFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi87IH07CiAJCUUzOEQ2RTI3MUY1
NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyog
U3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9OwpAQCAtNjE0LDYgKzYxNSw4IEBACiAJCUUzMTFG
QjE2MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUaHJlYWRHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzIwMEFCNDFFOUE1MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZWdpc3RlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRDVGODcxRkJFRDY2NzAwQkY2MjVFIC8qIFJlY3Vyc2Fi
bGVMYW1iZGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdXJzYWJsZUxh
bWJkYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzg4ODg2RDIwQzkwOTUxMDBF
NjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4ODg4
NkUyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1BVVGltZUNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzhDNDEyNjFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVUaW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QzQxMjcxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRp
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVVGltZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyMiw2ICsxMTI1LDggQEAKIAkJCQkwRjM1MDE2MzFC
QjI1OEM4MDBGMEEyQTMgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCTBGRTQ0NzlBMUI3QUFBMDMw
MDk0OThFQiAvKiBXb3JkTG9jay5jcHAgKi8sCiAJCQkJMEZFNDQ3OUIxQjdBQUEwMzAwOTQ5OEVC
IC8qIFdvcmRMb2NrLmggKi8sCisJCQkJRTM4ODg4NkQyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtl
clBvb2wuY3BwICovLAorCQkJCUUzODg4ODZFMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3JrZXJQb29s
LmggKi8sCiAJCQkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi8s
CiAJCQkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5oICovLAogCQkJCUZF
MDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLywKQEAgLTE1NTQs
NiArMTU1OSw3IEBACiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3Jl
VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAv
KiBXb3JkTG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzg4ODg2RjIwQzkwOTUxMDBFNjMy
QkMgLyogV29ya2VyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzOTFBOTYyNDU1
MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDNEMUE5
NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCmluZGV4IDJjNDg2YzQ4MDhhYWUzMjg1OGRk
MmIyMjY0NDg0NzI2YWE5YTk5YjkuLmE1OWM1ZDFiYzk2OTI0MGQ4YzdhZGRjY2MyY2JiNDcxZTll
NzAxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcApAQCAtMTA0LDkgKzEwNCwxMCBA
QCBib29sIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y29udGFpbnMoY29uc3QgQWJzdHJhY3RM
b2NrZXImLCBBdXRvbWF0aWNUaHJlYWQqCiAgICAgcmV0dXJuIG1fdGhyZWFkcy5jb250YWlucyh0
aHJlYWQpOwogfQogCi1BdXRvbWF0aWNUaHJlYWQ6OkF1dG9tYXRpY1RocmVhZChjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyLCBCb3g8TG9jaz4gbG9jaywgUmVmUHRyPEF1dG9tYXRpY1RocmVh
ZENvbmRpdGlvbj4gY29uZGl0aW9uKQorQXV0b21hdGljVGhyZWFkOjpBdXRvbWF0aWNUaHJlYWQo
Y29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgQm94PExvY2s+IGxvY2ssIFJlZlB0cjxBdXRv
bWF0aWNUaHJlYWRDb25kaXRpb24+IGNvbmRpdGlvbiwgU2Vjb25kcyB0aW1lb3V0KQogICAgIDog
bV9sb2NrKGxvY2spCiAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCisgICAgLCBtX3RpbWVv
dXQodGltZW91dCkKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhSYXdQb2lu
dGVyKHRoaXMpLCAiOiBBbGxvY2F0ZWQgQXV0b21hdGljVGhyZWFkLlxuIik7CkBAIC0yMDQsMTAg
KzIwNSwxMCBAQCB2b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImKQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2h1dCB0aGUgdGhyZWFkIGRvd24gYWZ0
ZXIgYSB0aW1lb3V0LgogICAgICAgICAgICAgICAgICAgICAgICAgbV9pc1dhaXRpbmcgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhd29rZW5CeU5vdGlmeSA9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndhaXRGb3IoKm1fbG9jaywgMTBf
cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndhaXRGb3Io
Km1fbG9jaywgbV90aW1lb3V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
ICYmICFhd29rZW5CeU5vdGlmeSAmJiAhbV9pc1dhaXRpbmcpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiB3YWl0Rm9yIHRpbWVkIG91dCwg
YnV0IG5vdGlmaWVkIHZpYSBtX2lzV2FpdGluZyBmbGFnIVxuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobV9pc1dhaXRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X2lzV2FpdGluZyAmJiBzaG91bGRTbGVlcChsb2NrZXIpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pc1dhaXRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhS
YXdQb2ludGVyKHRoaXMpLCAiOiBHb2luZyB0byBzbGVlcCFcbiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNU
aHJlYWQuaAppbmRleCAxYjkwNDU0MGM3ZjYwNDZiMDc1MmFmZTk3NWQyMmEzYjRhMmM4YjhhLi5m
ZjU0ZjMxNzQxYmU3OGZkM2E1MmNlNDI0NzY3MTg3NGIyY2Q2ZGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0
aWNUaHJlYWQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBB
dXRvbWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljCiBw
cm90ZWN0ZWQ6CiAgICAgLy8gVGhpcyBsb2dpY2FsbHkgY3JlYXRlcyB0aGUgdGhyZWFkLCBidXQg
aW4gcmVhbGl0eSB0aGUgdGhyZWFkIHdvbid0IGJlIGNyZWF0ZWQgdW50aWwgc29tZW9uZQogICAg
IC8vIGNhbGxzIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6bm90aWZ5T25lKCkgb3Igbm90aWZ5
QWxsKCkuCi0gICAgQXV0b21hdGljVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExv
Y2s+LCBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPik7CisgICAgQXV0b21hdGljVGhy
ZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWZQdHI8QXV0b21hdGljVGhy
ZWFkQ29uZGl0aW9uPiwgU2Vjb25kcyB0aW1lb3V0ID0gMTBfcyk7CiAgICAgCiAgICAgLy8gVG8g
dW5kZXJzdGFuZCBQb2xsUmVzdWx0IGFuZCBXb3JrUmVzdWx0LCBpbWFnaW5lIHRoYXQgcG9sbCgp
IGFuZCB3b3JrKCkgYXJlIGJlaW5nIGNhbGxlZCBsaWtlCiAgICAgLy8gc286CkBAIC0xNjgsNiAr
MTY4LDExIEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBBdXRvbWF0aWNUaHJlYWQgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljCiAgICAgLy8gY2FuIGJlIHN1cmUgdGhh
dCB0aGUgZGVmYXVsdCBvbmVzIGRvbid0IGRvIGFueXRoaW5nIChzbyB5b3UgZG9uJ3QgbmVlZCBh
IHN1cGVyIGNhbGwpLgogICAgIHZpcnR1YWwgdm9pZCB0aHJlYWREaWRTdGFydCgpOwogICAgIHZp
cnR1YWwgdm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CisKKyAg
ICAvLyBDb250cm9sIHdoZXRoZXIgdGhpcyBhdXRvbWF0aWMgdGhyZWFkIHNob3VsZCBzbGVlcCB3
aGVuIHRpbWVvdXQgaGFwcGVucy4KKyAgICAvLyBCeSBvdmVycmlkaW5nIHRoaXMgZnVuY3Rpb24s
IHdlIGNhbiBjdXN0b21pemUgaG93IGF1dG9tYXRpYyB0aHJlYWRzIHdpbGwgc2xlZXAuCisgICAg
Ly8gRm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUgdGhyZWFkIHBvb2wsIHlvdSBjYW4gZGVjcmVh
c2UgYWN0aXZlIHRocmVhZHMgbW9kZXJhdGVseS4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2xl
ZXAoY29uc3QgQWJzdHJhY3RMb2NrZXImKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBBdXRvbWF0aWNUaHJlYWRDb25kaXRpb247CkBAIC0xODEsNiAr
MTg2LDcgQEAgY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIEF1dG9tYXRpY1RocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXRvbWF0aWMKICAgICBib29sIG1faGFzVW5kZXJseWlu
Z1RocmVhZCB7IGZhbHNlIH07CiAgICAgQ29uZGl0aW9uIG1fd2FpdENvbmRpdGlvbjsKICAgICBD
b25kaXRpb24gbV9pc1J1bm5pbmdDb25kaXRpb247CisgICAgU2Vjb25kcyBtX3RpbWVvdXQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNmNlNjE3YTdi
NGRjYTQwNDhiNTdhMjYyODYzNjFkNDU3NzMzM2IzYS4uMGY5ZjRlMWYyZGExNmMzMTJjMGRkNTJk
OGRiZTk1M2I1NTRkMzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI1Niw2ICsyNTYsNyBA
QCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgV2luZG93c0V4dHJhcy5oCiAgICAgV29yZExv
Y2suaAogICAgIFdvcmtRdWV1ZS5oCisgICAgV29ya2VyUG9vbC5oCiAgICAgZHRvYS5oCiAKICAg
ICBkdG9hL2JpZ251bS1kdG9hLmgKQEAgLTM5MCw2ICszOTEsNyBAQCBzZXQoV1RGX1NPVVJDRVMK
ICAgICBXYWxsVGltZS5jcHAKICAgICBXb3JkTG9jay5jcHAKICAgICBXb3JrUXVldWUuY3BwCisg
ICAgV29ya2VyUG9vbC5jcHAKICAgICBkdG9hLmNwcAogCiAgICAgZHRvYS9iaWdudW0tZHRvYS5j
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9Xb3JrZXJQb29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzdiYTk1NTA1MjRlNTllOGE0MjgzNjIz
NjFlYzQ0M2I1NmUyNTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvV29ya2Vy
UG9vbC5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldv
cmtlclBvb2wuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworY2xhc3MgV29ya2VyUG9vbDo6V29ya2VyIDogcHVibGljIEF1dG9tYXRpY1Ro
cmVhZCB7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIFdvcmtlclBvb2w7CisKKyAgICBXb3Jr
ZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgV29ya2VyUG9vbCYgcG9vbCwgQm94PExv
Y2s+IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IGNvbmRpdGlvbiwgU2Vj
b25kcyB0aW1lb3V0KQorICAgICAgICA6IEF1dG9tYXRpY1RocmVhZChsb2NrZXIsIGxvY2ssIGNv
bmRpdGlvbiwgdGltZW91dCkKKyAgICAgICAgLCBtX3Bvb2wocG9vbCkKKyAgICB7CisgICAgfQor
CisgICAgUG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmIChtX3Bvb2wubV90YXNrcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gUG9sbFJlc3VsdDo6V2FpdDsKKyAgICAgICAgbV90YXNrID0gbV9wb29sLm1fdGFza3Mu
dGFrZUZpcnN0KCk7CisgICAgICAgIGlmICghbV90YXNrKQorICAgICAgICAgICAgcmV0dXJuIFBv
bGxSZXN1bHQ6OlN0b3A7CisgICAgICAgIHJldHVybiBQb2xsUmVzdWx0OjpXb3JrOworICAgIH0K
KworICAgIFdvcmtSZXN1bHQgd29yaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3Rhc2so
KTsKKyAgICAgICAgbV90YXNrID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6
OkNvbnRpbnVlOworICAgIH0KKworICAgIHZvaWQgdGhyZWFkRGlkU3RhcnQoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC5tX2xvY2spOworICAgICAg
ICBtX3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMrKzsKKyAgICB9CisKKyAgICB2b2lkIHRo
cmVhZElzU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgbV9wb29sLm1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzLS07CisgICAgfQorCisgICAgYm9v
bCBzaG91bGRTbGVlcChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fcG9vbC5zaG91bGRTbGVlcChsb2NrZXIpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBXb3JrZXJQb29sJiBtX3Bvb2w7CisgICAgRnVuY3Rpb248dm9pZCgpPiBt
X3Rhc2s7Cit9OworCitXb3JrZXJQb29sOjpXb3JrZXJQb29sKHVuc2lnbmVkIG51bWJlck9mV29y
a2VycywgU2Vjb25kcyB0aW1lb3V0KQorICAgIDogbV9sb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkp
CisgICAgLCBtX2NvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQor
ICAgICwgbV90aW1lb3V0KHRpbWVvdXQpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9j
ayk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mV29ya2VyczsgKytpKQor
ICAgICAgICBtX3dvcmtlcnMuYXBwZW5kKGFkb3B0UmVmKCpuZXcgV29ya2VyKGxvY2tlciwgKnRo
aXMsIG1fbG9jaywgbV9jb25kaXRpb24sIHRpbWVvdXQpKSk7Cit9CisKK1dvcmtlclBvb2w6On5X
b3JrZXJQb29sKCkKK3sKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2sp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3dvcmtlcnMuc2l6ZSgpOyBpLS07KQorICAg
ICAgICAgICAgbV90YXNrcy5hcHBlbmQobnVsbHB0cik7IC8vIFVzZSBudWxsIHRhc2sgdG8gaW5k
aWNhdGUgdGhhdCB3ZSB3YW50IHRoZSB0aHJlYWQgdG8gdGVybWluYXRlLgorICAgICAgICBtX2Nv
bmRpdGlvbi0+bm90aWZ5QWxsKGxvY2tlcik7CisgICAgfQorICAgIGZvciAoYXV0byYgd29ya2Vy
IDogbV93b3JrZXJzKQorICAgICAgICB3b3JrZXItPmpvaW4oKTsKKyAgICBBU1NFUlQoIW1fbnVt
YmVyT2ZBY3RpdmVXb3JrZXJzKTsKK30KKworYm9vbCBXb3JrZXJQb29sOjpzaG91bGRTbGVlcChj
b25zdCBBYnN0cmFjdExvY2tlciYpCit7CisgICAgaWYgKG1fdGltZW91dCA+IDBfcyAmJiBzdGQ6
OmlzaW5mKG1fdGltZW91dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE1vbm90b25p
Y1RpbWUgY3VycmVudFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBpZiAoc3RkOjpp
c25hbihtX2xhc3RUaW1lb3V0VGltZSkgfHwgKGN1cnJlbnRUaW1lID49IChtX2xhc3RUaW1lb3V0
VGltZSAgKyBtX3RpbWVvdXQpKSkgeworICAgICAgICBtX2xhc3RUaW1lb3V0VGltZSA9IGN1cnJl
bnRUaW1lOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFdvcmtlclBvb2w6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4gdGFzaykKK3sK
KyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChXVEZN
b3ZlKHRhc2spKTsKKyAgICBtX2NvbmRpdGlvbi0+bm90aWZ5T25lKGxvY2tlcik7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBvb2wuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtlclBvb2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGVkODJjYjRiZDE1MDA1MDcxMGJiMzcwNDk0OGY2
OWJlMThhMDc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5o
CkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQXV0b21hdGljVGhy
ZWFkLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBXb3JrZXJQb29sIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFdvcmtlclBvb2w+IHsKK3B1YmxpYzoKKyAgICB+V29ya2VyUG9vbCgpOwor
CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+KTsKKworICAgIC8vIElmIHRpbWVv
dXQgaXMgaW5maW5pdHksIGl0IG1lYW5zIEF1dG9tYXRpY1RocmVhZCB3aWxsIGJlIG5ldmVyIGF1
dG9tYXRpY2FsbHkgZGVzdHJveWVkLgorICAgIHN0YXRpYyBSZWY8V29ya2VyUG9vbD4gY3JlYXRl
KHVuc2lnbmVkIG51bWJlck9mV29ya2VycyAgPSBXVEY6Om51bWJlck9mUHJvY2Vzc29yQ29yZXMo
KSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChudW1iZXJPZldvcmtlcnMgPj0gMSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdvcmtlclBvb2wobnVtYmVyT2ZXb3JrZXJzLCB0aW1lb3V0KSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIGNsYXNzIFdvcmtlcjsKKyAgICBmcmllbmQgY2xhc3MgV29ya2VyOworCisgICAg
V29ya2VyUG9vbCh1bnNpZ25lZCBudW1iZXJPZldvcmtlcnMsIFNlY29uZHMgdGltZW91dCk7CisK
KyAgICBib29sIHNob3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CisKKyAgICBCb3g8
TG9jaz4gbV9sb2NrOworICAgIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1fY29u
ZGl0aW9uOworICAgIFNlY29uZHMgbV90aW1lb3V0OworICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
VGltZW91dFRpbWUgeyBNb25vdG9uaWNUaW1lOjpuYW4oKSB9OworICAgIHVuc2lnbmVkIG1fbnVt
YmVyT2ZBY3RpdmVXb3JrZXJzIHsgMCB9OworICAgIFZlY3RvcjxSZWY8V29ya2VyPj4gbV93b3Jr
ZXJzOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFza3M7Cit9OworCit9CisKK3Vz
aW5nIFdURjo6V29ya2VyUG9vbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdp
bmVUaHJlYWRlZC5jcHAKaW5kZXggNjQ2MTdmZjMwYWFkNDQ0ODM2NTU1YTBhYTYwNGZkMDFhN2Ey
MTc5Yi4uNTY1ZDkyMDFiOWRhOTlhMjJhMjBiMDdhYTkxZWE0MTBjZTk5MjQ1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRp
bmdFbmdpbmVUaHJlYWRlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAKQEAgLTMzLDI3ICsz
MywxMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJOaWNvc2lhQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiTmljb3NpYVBhaW50aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgPGds
aWIuaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiBuYW1lc3BhY2UgTmljb3NpYSB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RydWN0IFRhc2tEYXRhIHsKLSAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0KLSAgICBSZWY8QnVmZmVyPiBidWZmZXI7Ci0g
ICAgUGFpbnRpbmdPcGVyYXRpb25zIHBhaW50aW5nT3BlcmF0aW9uczsKLX07Ci0KLXZvaWQgc190
aHJlYWRGdW5jKGdwb2ludGVyIGRhdGEsIGdwb2ludGVyKQotewotICAgIHN0ZDo6dW5pcXVlX3B0
cjxUYXNrRGF0YT4gdGFza0RhdGEoc3RhdGljX2Nhc3Q8VGFza0RhdGEqPihkYXRhKSk7Ci0KLSAg
ICBQYWludGluZ0NvbnRleHQ6OnJlcGxheSh0YXNrRGF0YS0+YnVmZmVyLCB0YXNrRGF0YS0+cGFp
bnRpbmdPcGVyYXRpb25zKTsKLSAgICB0YXNrRGF0YS0+YnVmZmVyLT5jb21wbGV0ZVBhaW50aW5n
KCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBHcmFwaGljc0xheWVyJiBsYXllciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgbWFwcGVkU291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgZmxv
YXQgY29udGVudHNTY2FsZSwgYm9vbCBzdXBwb3J0c0FscGhhKQogewogICAgIGNvbnRleHQuc2F2
ZSgpOwpAQCAtNzUsMTQgKzU4LDEyIEBAIHN0YXRpYyB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyJiBsYXllciwgY29uc3QgSW50CiB9CiAKIFBh
aW50aW5nRW5naW5lVGhyZWFkZWQ6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQoKQorICAgIDogbV93
b3JrZXJQb29sKFdvcmtlclBvb2w6OmNyZWF0ZSg0KSkKIHsKLSAgICAvLyBGSVhNRTogdGhlc2Ug
cGFyYW1ldGVycyBzaG91bGQgYmUgZmluZS10dW5lZCwgb3IgbWF5YmUgbWFkZSBjb25maWd1cmFi
bGUuCi0gICAgbV90aHJlYWRQb29sID0gZ190aHJlYWRfcG9vbF9uZXcoc190aHJlYWRGdW5jLCBu
dWxscHRyLCA0LCBUUlVFLCBudWxscHRyKTsKIH0KIAogUGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6
flBhaW50aW5nRW5naW5lVGhyZWFkZWQoKQogewotICAgIGdfdGhyZWFkX3Bvb2xfZnJlZShtX3Ro
cmVhZFBvb2wsIFRSVUUsIEZBTFNFKTsKIH0KIAogYm9vbCBQYWludGluZ0VuZ2luZVRocmVhZGVk
OjpwYWludChHcmFwaGljc0xheWVyJiBsYXllciwgUmVmPEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIG1hcHBlZFNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCkBAIC05Niw3ICs3
NywxMCBAQCBib29sIFBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OnBhaW50KEdyYXBoaWNzTGF5ZXIm
IGxheWVyLCBSZWY8QnVmZmVyPiYmIGJ1ZmZlciwgYwogICAgICAgICAgICAgcGFpbnRMYXllcihj
b250ZXh0LCBsYXllciwgc291cmNlUmVjdCwgbWFwcGVkU291cmNlUmVjdCwgdGFyZ2V0UmVjdCwg
Y29udGVudHNTY2FsZSwgYnVmZmVyLT5zdXBwb3J0c0FscGhhKCkpOwogICAgICAgICB9KTsKIAot
ICAgIGdfdGhyZWFkX3Bvb2xfcHVzaChtX3RocmVhZFBvb2wsIG5ldyBUYXNrRGF0YSB7IFdURk1v
dmUoYnVmZmVyKSwgV1RGTW92ZShwYWludGluZ09wZXJhdGlvbnMpIH0sIG51bGxwdHIpOworICAg
IG1fd29ya2VyUG9vbC0+cG9zdFRhc2soW3BhaW50aW5nT3BlcmF0aW9ucyA9IFdURk1vdmUocGFp
bnRpbmdPcGVyYXRpb25zKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSB7CisgICAgICAgIFBh
aW50aW5nQ29udGV4dDo6cmVwbGF5KGJ1ZmZlciwgcGFpbnRpbmdPcGVyYXRpb25zKTsKKyAgICAg
ICAgYnVmZmVyLT5jb21wbGV0ZVBhaW50aW5nKCk7CisgICAgfSk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuaAppbmRl
eCAzOTFjOGNjM2UyODRhNTdlZGVjYTllYzEyNzBjY2U0MmJjMGU4ZjVlLi5hZGQxNGVkNWY5NWMz
MDIyNzM0ZmY5NDI3NDQ3MjZkNTQ5MGM2ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFp
bnRpbmdFbmdpbmVUaHJlYWRlZC5oCkBAIC0yOSw4ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIk5pY29zaWFQYWludGluZ0VuZ2luZS5oIgotCi10eXBlZGVmIHN0cnVjdCBfR1Ro
cmVhZFBvb2wgR1RocmVhZFBvb2w7CisjaW5jbHVkZSA8d3RmL1dvcmtlclBvb2wuaD4KIAogbmFt
ZXNwYWNlIE5pY29zaWEgewogCkBAIC00Miw3ICs0MSw3IEBAIGNsYXNzIFBhaW50aW5nRW5naW5l
VGhyZWFkZWQgZmluYWwgOiBwdWJsaWMgUGFpbnRpbmdFbmdpbmUgewogcHJpdmF0ZToKICAgICBi
b29sIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXImLCBSZWY8QnVmZmVyPiYmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAKLSAgICBHVGhyZWFkUG9vbCogbV90aHJlYWRQ
b29sOworICAgIFJlZjxXb3JrZXJQb29sPiBtX3dvcmtlclBvb2w7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBOaWNvc2lhCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggOTUzMjlmZmQ2ODg3YTExYTkwY2I2MzQ3NjhhZTkyNzRjYzUxZWZjZC4uMTFkN2M0
NDhjNTQ4NjFjOTY5OTQ1ZmFhMjhmMDEwZjU2YzI3MGJkOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA2LTA3
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZd
IEFkZCBXb3JrZXJQb29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQ1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHA6IEFkZGVkLgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMDYtMDYgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bTWluaUJyb3dzZXJdIFJl
bW92ZSBnTWFpbldpbmRvdyBnbG9iYWwgdmFyaWFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDEwZjhmY2FmYzA1YWE3ZDhlNzcwZjgzNWU5MmNjZWU4ODE4NTc2NzIuLjJlN2Qx
YzNkODlhMzI1ZWI1ZDlhZWY5NWU4MWZkZmM3MjMzYWMwZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTU4LDYgKzE1OCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9XZWFrUHRyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL1dvcmtlclBvb2wuY3BwCiApCiAKICMgRklYTUU6IFRlc3RzL1dURi9SdW5Mb29wLmNw
cCBpcyBtaXNzaW5nIGJlY2F1c2UgaXQgZG9lc24ndCB3b3JrIGZvciBXaW5kb3dzLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxMzE2N2E4OTJhNGJmOTQ2YjgwYWI1NWE3YjU2YTcxMGU4MDkx
OWZjLi42MGM2MmEzMDBiOTg3YjM0ZWU0YzMyOWE1ZDI2MDMyOGU1ZDEwYmRhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTkxMiw2ICsxOTEyLDcgQEAKIAkJRTE5NEUxQkExNzdFNTE0NTAw
OUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVS
ZXNwb25zZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5NEUxQkMxNzdFNTM0
QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxOURCOTc4MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0b3JM
YW5ndWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmln
YXRvckxhbmd1YWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzg4ODg3MDIw
QzkwOTgxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM4QTBEMzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWduYWxzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5OEJDMEYyMDQxQzc2MzAwMzg3MTM2IC8qIFVuaXF1ZUFy
cmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZUFycmF5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OTIsNiArMjg5Myw3IEBACiAJ
CQkJN0NEMEQ1QUExRDU1MzRERTAwMENDOUUxIC8qIFZhcmlhbnQuY3BwICovLAogCQkJCUJDNTVG
NUY4MTRBRDc4RUUwMDQ4NEJFMSAvKiBWZWN0b3IuY3BwICovLAogCQkJCTFDQjlCQzM3MUE2NzQ4
MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNwcCAqLywKKwkJCQlFMzg4ODg3MDIwQzkwOTgxMDBFNjMy
QkMgLyogV29ya2VyUG9vbC5jcHAgKi8sCiAJCQkJN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8q
IFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJMjY1QUY1NEYxNUQxRTQ4QTAwQjBDQjRBIC8qIFdURlN0
cmluZy5jcHAgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV29ya2VyUG9vbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3Jr
ZXJQb29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOThlMjhhMWE3YTJiMWVmMjcxN2VhYzUyNDQ3NjA0NWE5
ZTZjNmI1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V29ya2VyUG9vbC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0
Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9X
b3JrZXJQb29sLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYsIFdv
cmtlclBvb2xEZWNyZWFzZSkKK3sKKyAgICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gY291bnRlciB7
IDAgfTsKKyAgICB7CisgICAgICAgIFJlZjxXb3JrZXJQb29sPiBwb29sID0gV29ya2VyUG9vbDo6
Y3JlYXRlKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAg
ICAgICAgICAgcG9vbC0+cG9zdFRhc2soWyZdIHsKKyAgICAgICAgICAgICAgICArK2NvdW50ZXI7
CisgICAgICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gV2hlbiBkZXN0cm95aW5nIFdvcmtlclBvb2wsIGFsbCB0aGUgdGFz
a3MgYXJlIGRyYWluZWQuCisgICAgfQorICAgIEVYUEVDVF9FUShjb3VudGVyLmxvYWQoKSwgMTAw
MDBVKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342147</attachid>
            <date>2018-06-07 04:21:30 -0700</date>
            <delta_ts>2018-06-07 07:57:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174569-20180607202129.patch</filename>
            <type>text/plain</type>
            <size>26327</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1ZGI0MjQ0N2M1OGZhMGJmMzdlN2E4
ZTUxNGVhZmY3MzE3NjdhODUuLjhkMzBmNzUxYWI1YjhkMWZmZWZjMTA3YmE4YjNmYTcxMDMxNjkw
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTgtMDYtMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBXb3JrZXJQb29sLCB3aGljaCBpcyBhIHRocmVhZCBwb29sIGNvbnNpc3RzIG9mIEF1dG9tYXRp
Y1RocmVhZC4KKyAgICAgICAgU2luY2UgaXQgaXMgYmFzZWQgb24gQXV0b21hdGljVGhyZWFkLCB0
aGlzIFdvcmtlclBvb2wgY2FuIHRha2UgYHRpbWVvdXRgLiBPbmNlCisgICAgICAgIGB0aW1lb3V0
YCBwYXNzZXMgd2l0aG91dCBhbnkgdGFza3MsIHRocmVhZHMgaW4gV29ya2VyUG9vbCB3aWxsIGJl
IGRlc3Ryb3llZC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0
aWNUaHJlYWQ6OkF1dG9tYXRpY1RocmVhZCk6CisgICAgICAgIChXVEY6OkF1dG9tYXRpY1RocmVh
ZDo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuaDoKKyAgICAgICAgKiB3
dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1dvcmtlclBvb2wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyOjpXb3JrZXIpOgorICAgICAgICAoV1RG
OjpXb3JrZXJQb29sOjpXb3JrZXJQb29sKToKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6fldv
cmtlclBvb2wpOgorICAgICAgICAoV1RGOjpXb3JrZXJQb29sOjpzaG91bGRTbGVlcCk6CisgICAg
ICAgIChXVEY6OldvcmtlclBvb2w6OnBvc3RUYXNrKToKKyAgICAgICAgKiB3dGYvV29ya2VyUG9v
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6Y3JlYXRlKToKKwogMjAxOC0w
Ni0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBS
ZXRpcmUgRGlzcGF0Y2hQdHIsIGFuZCBhZGQgbW9yZSBtb3ZlIHNlbWFudGljcyBhbmQgc2ltcGxl
ciAjaWZzIHRvIG90aGVyIHNtYXJ0IHBvaW50ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI3ZTZiNDVkNjdk
N2U0NDBmNTMxMTg0ZjVmNjJmYWI3NDkyZDE3ZC4uM2I2YzU0NmZhN2RkMGJkNTFkNzlmZjgzZDk5
YTQxMDJkN2JiYmFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTA2LTA3ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEFk
ZCBXb3JrZXJQb29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzQ1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZSBzdGFydCB1c2luZyBXb3JrZXJQb29sIGZvciBOaWNvc2lhUGFpbnRpbmdFbmdpbmVU
aHJlYWRlZCBpbnN0ZWFkIG9mIGdsaWIgdGhyZWFkIHBvb2wuCisgICAgICAgIFRoaXMgbWFrZXMg
Tmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQgcGxhdGZvcm0taW5kZXBlbmRlbnQgYW5kIHVz
YWJsZSBmb3IgV2luQ2Fpcm8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBh
aW50aW5nRW5naW5lVGhyZWFkZWQ6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQpOgorICAgICAgICAo
Tmljb3NpYTo6UGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6flBhaW50aW5nRW5naW5lVGhyZWFkZWQp
OgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6cGFpbnQpOgorICAg
ICAgICAoTmljb3NpYTo6c190aHJlYWRGdW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmg6CisKIDIw
MTgtMDYtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEhU
VFAgSGVhZGVyIHZhbHVlcyB2YWxpZGF0aW9uIGlzIHRvbyBzdHJpY3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2MmM3Y2NiYzJmMDhlMGM2ZWU4ZWUyMDcy
ODE1NmVkZGVmN2QzZmYuLjNiMDRiNzA4YjBmMzNlZmRjYmI0ZDY1NDhjN2YyMWFiNGNkYTQ5NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ1LDYgKzE0
NSw3IEBACiAJCURDRUUyMjAxMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25z
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENFRTIx
RkQxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gKi87IH07CiAJCUUx
NTU1NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1NkYzMThBMEND
MTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJRTMxMUZC
MTcxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTFGQjE1MUYwQTU2OEIwMDNDMDhERSAvKiBU
aHJlYWRHcm91cC5jcHAgKi87IH07CisJCUUzODg4ODZGMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3Jr
ZXJQb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODg4ODZEMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmNwcCAqLzsgfTsKIAkJRTM4
QzQxMjUxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEM0MTI0MUVCNEUwNEMwMDQyOTU3RCAv
KiBDUFVUaW1lQ29jb2EubW0gKi87IH07CiAJCUUzOEM0MTI4MUVCNEUwNjgwMDQyOTU3RCAvKiBD
UFVUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOEM0MTI2MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1lLmNwcCAqLzsgfTsKIAkJRTM4RDZF
MjcxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2RTI2MUY1NTIyRTMwMEE3NUND
NCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgKi87IH07CkBAIC02MTQsNiArNjE1LDggQEAKIAkJ
RTMxMUZCMTYxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzMjAwQUI0MUU5QTUzNkQwMDNCNTlEMiAvKiBQbGF0Zm9ybVJlZ2lzdGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlZ2lzdGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNENUY4NzFGQkVENjY3MDBCRjYyNUUgLyogUmVj
dXJzYWJsZUxhbWJkYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWN1cnNh
YmxlTGFtYmRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODg4ODZEMjBDOTA5
NTEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdvcmtlclBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzg4ODg2RTIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrZXJQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOEM0MTI0MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDUFVUaW1lQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEM0MTI2MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVVRpbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhDNDEyNzFFQjRFMDY4MDA0Mjk1N0QgLyog
Q1BVVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDUFVUaW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTIyLDYgKzExMjUsOCBAQAogCQkJCTBGMzUw
MTYzMUJCMjU4QzgwMEYwQTJBMyAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJMEZFNDQ3OUExQjdB
QUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCAqLywKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5
NDk4RUIgLyogV29yZExvY2suaCAqLywKKwkJCQlFMzg4ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyog
V29ya2VyUG9vbC5jcHAgKi8sCisJCQkJRTM4ODg4NkUyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtl
clBvb2wuaCAqLywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNw
cCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCiAJ
CQkJRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovLApAQCAt
MTU1NCw2ICsxNTU5LDcgQEAKIAkJCQkwRjY2QjI5MjFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRp
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBNDdDOEExNTI1MDJEQTAwNTY4RDFCIC8qIFdl
YkNvcmVUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFNDQ3OUMxQjdBQUEwMzAwOTQ5
OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzODg4ODZGMjBDOTA5NTEw
MEU2MzJCQyAvKiBXb3JrZXJQb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDM5MUE5
NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFE
M0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKaW5kZXggMmM0ODZjNDgwOGFhZTMy
ODU4ZGQyYjIyNjQ0ODQ3MjZhYTlhOTliOS4uYTU5YzVkMWJjOTY5MjQwZDhjN2FkZGNjYzJjYmI0
NzFlOWU3MDE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCkBAIC0xMDQsOSArMTA0
LDEwIEBAIGJvb2wgQXV0b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjb250YWlucyhjb25zdCBBYnN0
cmFjdExvY2tlciYsIEF1dG9tYXRpY1RocmVhZCoKICAgICByZXR1cm4gbV90aHJlYWRzLmNvbnRh
aW5zKHRocmVhZCk7CiB9CiAKLUF1dG9tYXRpY1RocmVhZDo6QXV0b21hdGljVGhyZWFkKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEJveDxMb2NrPiBsb2NrLCBSZWZQdHI8QXV0b21hdGlj
VGhyZWFkQ29uZGl0aW9uPiBjb25kaXRpb24pCitBdXRvbWF0aWNUaHJlYWQ6OkF1dG9tYXRpY1Ro
cmVhZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBCb3g8TG9jaz4gbG9jaywgUmVmUHRy
PEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gY29uZGl0aW9uLCBTZWNvbmRzIHRpbWVvdXQpCiAg
ICAgOiBtX2xvY2sobG9jaykKICAgICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKKyAgICAsIG1f
dGltZW91dCh0aW1lb3V0KQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKFJh
d1BvaW50ZXIodGhpcyksICI6IEFsbG9jYXRlZCBBdXRvbWF0aWNUaHJlYWQuXG4iKTsKQEAgLTIw
NCwxMCArMjA1LDEwIEBAIHZvaWQgQXV0b21hdGljVGhyZWFkOjpzdGFydChjb25zdCBBYnN0cmFj
dExvY2tlciYpCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaHV0IHRoZSB0aHJlYWQgZG93
biBhZnRlciBhIHRpbWVvdXQuCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2lzV2FpdGluZyA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGF3b2tlbkJ5Tm90aWZ5ID0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dhaXRDb25kaXRpb24ud2FpdEZvcigqbV9sb2Nr
LCAxMF9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dhaXRDb25kaXRpb24ud2Fp
dEZvcigqbV9sb2NrLCBtX3RpbWVvdXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UgJiYgIWF3b2tlbkJ5Tm90aWZ5ICYmICFtX2lzV2FpdGluZykKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IHdhaXRGb3IgdGltZWQg
b3V0LCBidXQgbm90aWZpZWQgdmlhIG1faXNXYWl0aW5nIGZsYWchXG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2lzV2FpdGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1faXNXYWl0aW5nICYmIHNob3VsZFNsZWVwKGxvY2tlcikpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2lzV2FpdGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKFJhd1BvaW50ZXIodGhpcyksICI6IEdvaW5nIHRvIHNsZWVwIVxuIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9t
YXRpY1RocmVhZC5oCmluZGV4IDFiOTA0NTQwYzdmNjA0NmIwNzUyYWZlOTc1ZDIyYTNiNGEyYzhi
OGEuLmZmNTRmMzE3NDFiZTc4ZmQzYTUyY2U0MjQ3NjcxODc0YjJjZDZkYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F1
dG9tYXRpY1RocmVhZC5oCkBAIC0xMjksNyArMTI5LDcgQEAgY2xhc3MgV1RGX0VYUE9SVF9QUklW
QVRFIEF1dG9tYXRpY1RocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXRvbWF0
aWMKIHByb3RlY3RlZDoKICAgICAvLyBUaGlzIGxvZ2ljYWxseSBjcmVhdGVzIHRoZSB0aHJlYWQs
IGJ1dCBpbiByZWFsaXR5IHRoZSB0aHJlYWQgd29uJ3QgYmUgY3JlYXRlZCB1bnRpbCBzb21lb25l
CiAgICAgLy8gY2FsbHMgQXV0b21hdGljVGhyZWFkQ29uZGl0aW9uOjpub3RpZnlPbmUoKSBvciBu
b3RpZnlBbGwoKS4KLSAgICBBdXRvbWF0aWNUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBC
b3g8TG9jaz4sIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+KTsKKyAgICBBdXRvbWF0
aWNUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBCb3g8TG9jaz4sIFJlZlB0cjxBdXRvbWF0
aWNUaHJlYWRDb25kaXRpb24+LCBTZWNvbmRzIHRpbWVvdXQgPSAxMF9zKTsKICAgICAKICAgICAv
LyBUbyB1bmRlcnN0YW5kIFBvbGxSZXN1bHQgYW5kIFdvcmtSZXN1bHQsIGltYWdpbmUgdGhhdCBw
b2xsKCkgYW5kIHdvcmsoKSBhcmUgYmVpbmcgY2FsbGVkIGxpa2UKICAgICAvLyBzbzoKQEAgLTE2
OCw2ICsxNjgsMTEgQEAgY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIEF1dG9tYXRpY1RocmVhZCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXRvbWF0aWMKICAgICAvLyBjYW4gYmUgc3Vy
ZSB0aGF0IHRoZSBkZWZhdWx0IG9uZXMgZG9uJ3QgZG8gYW55dGhpbmcgKHNvIHlvdSBkb24ndCBu
ZWVkIGEgc3VwZXIgY2FsbCkuCiAgICAgdmlydHVhbCB2b2lkIHRocmVhZERpZFN0YXJ0KCk7CiAg
ICAgdmlydHVhbCB2b2lkIHRocmVhZElzU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsK
KworICAgIC8vIENvbnRyb2wgd2hldGhlciB0aGlzIGF1dG9tYXRpYyB0aHJlYWQgc2hvdWxkIHNs
ZWVwIHdoZW4gdGltZW91dCBoYXBwZW5zLgorICAgIC8vIEJ5IG92ZXJyaWRpbmcgdGhpcyBmdW5j
dGlvbiwgd2UgY2FuIGN1c3RvbWl6ZSBob3cgYXV0b21hdGljIHRocmVhZHMgd2lsbCBzbGVlcC4K
KyAgICAvLyBGb3IgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSB0aHJlYWQgcG9vbCwgeW91IGNhbiBk
ZWNyZWFzZSBhY3RpdmUgdGhyZWFkcyBtb2RlcmF0ZWx5LgorICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRTbGVlcChjb25zdCBBYnN0cmFjdExvY2tlciYpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjsKQEAgLTE4
MSw2ICsxODYsNyBAQCBjbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgQXV0b21hdGljVGhyZWFkIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1dG9tYXRpYwogICAgIGJvb2wgbV9oYXNVbmRl
cmx5aW5nVGhyZWFkIHsgZmFsc2UgfTsKICAgICBDb25kaXRpb24gbV93YWl0Q29uZGl0aW9uOwog
ICAgIENvbmRpdGlvbiBtX2lzUnVubmluZ0NvbmRpdGlvbjsKKyAgICBTZWNvbmRzIG1fdGltZW91
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA2Y2U2
MTdhN2I0ZGNhNDA0OGI1N2EyNjI4NjM2MWQ0NTc3MzMzYjNhLi4wZjlmNGUxZjJkYTE2YzMxMmMw
ZGQ1MmQ4ZGJlOTUzYjU1NGQzNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjU2LDYgKzI1
Niw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBXaW5kb3dzRXh0cmFzLmgKICAgICBX
b3JkTG9jay5oCiAgICAgV29ya1F1ZXVlLmgKKyAgICBXb3JrZXJQb29sLmgKICAgICBkdG9hLmgK
IAogICAgIGR0b2EvYmlnbnVtLWR0b2EuaApAQCAtMzkwLDYgKzM5MSw3IEBAIHNldChXVEZfU09V
UkNFUwogICAgIFdhbGxUaW1lLmNwcAogICAgIFdvcmRMb2NrLmNwcAogICAgIFdvcmtRdWV1ZS5j
cHAKKyAgICBXb3JrZXJQb29sLmNwcAogICAgIGR0b2EuY3BwCiAKICAgICBkdG9hL2JpZ251bS1k
dG9hLmNjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1dvcmtlclBvb2wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MmUzOGNjZDhhZTcwMGM4ODhi
N2ZlN2M1NGNkYzcwMmI4OWRhMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9X
b3JrZXJQb29sLmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV29ya2VyUG9vbC5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCitjbGFzcyBXb3JrZXJQb29sOjpXb3JrZXIgOiBwdWJsaWMgQXV0b21h
dGljVGhyZWFkIHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgV29ya2VyUG9vbDsKKworICAg
IFdvcmtlcihjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBXb3JrZXJQb29sJiBwb29sLCBC
b3g8TG9jaz4gbG9jaywgUmVmUHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gY29uZGl0aW9u
LCBTZWNvbmRzIHRpbWVvdXQpCisgICAgICAgIDogQXV0b21hdGljVGhyZWFkKGxvY2tlciwgbG9j
aywgY29uZGl0aW9uLCB0aW1lb3V0KQorICAgICAgICAsIG1fcG9vbChwb29sKQorICAgIHsKKyAg
ICB9CisKKyAgICBQb2xsUmVzdWx0IHBvbGwoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgaWYgKG1fcG9vbC5tX3Rhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBQb2xsUmVzdWx0OjpXYWl0OworICAgICAgICBtX3Rhc2sgPSBtX3Bvb2wubV90
YXNrcy50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYgKCFtX3Rhc2spCisgICAgICAgICAgICByZXR1
cm4gUG9sbFJlc3VsdDo6U3RvcDsKKyAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6Oldvcms7Cisg
ICAgfQorCisgICAgV29ya1Jlc3VsdCB3b3JrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1f
dGFzaygpOworICAgICAgICBtX3Rhc2sgPSBudWxscHRyOworICAgICAgICByZXR1cm4gV29ya1Jl
c3VsdDo6Q29udGludWU7CisgICAgfQorCisgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLm1fbG9jayk7Cisg
ICAgICAgIG1fcG9vbC5tX251bWJlck9mQWN0aXZlV29ya2VycysrOworICAgIH0KKworICAgIHZv
aWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBtX3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMtLTsKKyAgICB9CisKKyAg
ICBib29sIHNob3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpIG92ZXJyaWRl
CisgICAgeworICAgICAgICByZXR1cm4gbV9wb29sLnNob3VsZFNsZWVwKGxvY2tlcik7CisgICAg
fQorCitwcml2YXRlOgorICAgIFdvcmtlclBvb2wmIG1fcG9vbDsKKyAgICBGdW5jdGlvbjx2b2lk
KCk+IG1fdGFzazsKK307CisKK1dvcmtlclBvb2w6OldvcmtlclBvb2wodW5zaWduZWQgbnVtYmVy
T2ZXb3JrZXJzLCBTZWNvbmRzIHRpbWVvdXQpCisgICAgOiBtX2xvY2soQm94PExvY2s+OjpjcmVh
dGUoKSkKKyAgICAsIG1fY29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRl
KCkpCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV9sb2NrKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JrZXJzOyAr
K2kpCisgICAgICAgIG1fd29ya2Vycy5hcHBlbmQoYWRvcHRSZWYoKm5ldyBXb3JrZXIobG9ja2Vy
LCAqdGhpcywgbV9sb2NrLCBtX2NvbmRpdGlvbiwgdGltZW91dCkpKTsKK30KKworV29ya2VyUG9v
bDo6fldvcmtlclBvb2woKQoreworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1f
bG9jayk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fd29ya2Vycy5zaXplKCk7IGktLTsp
CisgICAgICAgICAgICBtX3Rhc2tzLmFwcGVuZChudWxscHRyKTsgLy8gVXNlIG51bGwgdGFzayB0
byBpbmRpY2F0ZSB0aGF0IHdlIHdhbnQgdGhlIHRocmVhZCB0byB0ZXJtaW5hdGUuCisgICAgICAg
IG1fY29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiB3
b3JrZXIgOiBtX3dvcmtlcnMpCisgICAgICAgIHdvcmtlci0+am9pbigpOworICAgIEFTU0VSVCgh
bV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMpOworfQorCitib29sIFdvcmtlclBvb2w6OnNob3VsZFNs
ZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKK3sKKyAgICBpZiAobV90aW1lb3V0ID4gMF9zICYm
IHN0ZDo6aXNpbmYobV90aW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTW9u
b3RvbmljVGltZSBjdXJyZW50VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIGlmIChz
dGQ6OmlzbmFuKG1fbGFzdFRpbWVvdXRUaW1lKSB8fCAoY3VycmVudFRpbWUgPj0gKG1fbGFzdFRp
bWVvdXRUaW1lICArIG1fdGltZW91dCkpKSB7CisgICAgICAgIG1fbGFzdFRpbWVvdXRUaW1lID0g
Y3VycmVudFRpbWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgV29ya2VyUG9vbDo6cG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRh
c2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgbV90YXNrcy5hcHBl
bmQoV1RGTW92ZSh0YXNrKSk7CisgICAgbV9jb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9Xb3JrZXJQb29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNmNzhjNDUxOTAzM2QyMTkwNDdhMzk5
YzVjMzZjNWZiN2ZmN2U0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtl
clBvb2wuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0F1dG9t
YXRpY1RocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgV29ya2VyUG9vbCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJQb29sPiB7CitwdWJsaWM6CisgICAgfldvcmtlclBv
b2woKTsKKworICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKKworICAgIC8v
IElmIHRpbWVvdXQgaXMgaW5maW5pdHksIGl0IG1lYW5zIEF1dG9tYXRpY1RocmVhZCB3aWxsIGJl
IG5ldmVyIGF1dG9tYXRpY2FsbHkgZGVzdHJveWVkLgorICAgIHN0YXRpYyBSZWY8V29ya2VyUG9v
bD4gY3JlYXRlKHVuc2lnbmVkIG51bWJlck9mV29ya2VycyAgPSBXVEY6Om51bWJlck9mUHJvY2Vz
c29yQ29yZXMoKSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChudW1iZXJPZldvcmtlcnMgPj0gMSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdvcmtlclBvb2wobnVtYmVyT2ZXb3JrZXJzLCB0aW1lb3V0KSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIGNsYXNzIFdvcmtlcjsKKyAgICBmcmllbmQgY2xhc3MgV29ya2Vy
OworCisgICAgV29ya2VyUG9vbCh1bnNpZ25lZCBudW1iZXJPZldvcmtlcnMsIFNlY29uZHMgdGlt
ZW91dCk7CisKKyAgICBib29sIHNob3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CisK
KyAgICBCb3g8TG9jaz4gbV9sb2NrOworICAgIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRp
b24+IG1fY29uZGl0aW9uOworICAgIFNlY29uZHMgbV90aW1lb3V0OworICAgIE1vbm90b25pY1Rp
bWUgbV9sYXN0VGltZW91dFRpbWUgeyBNb25vdG9uaWNUaW1lOjpuYW4oKSB9OworICAgIHVuc2ln
bmVkIG1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzIHsgMCB9OworICAgIFZlY3RvcjxSZWY8V29ya2Vy
Pj4gbV93b3JrZXJzOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFza3M7Cit9Owor
Cit9CisKK3VzaW5nIFdURjo6V29ya2VyUG9vbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFp
bnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAKaW5kZXggNjQ2MTdmZjMwYWFkNDQ0ODM2NTU1YTBhYTYw
NGZkMDFhN2EyMTc5Yi4uNTY1ZDkyMDFiOWRhOTlhMjJhMjBiMDdhYTkxZWE0MTBjZTk5MjQ1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAKQEAg
LTMzLDI3ICszMywxMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJO
aWNvc2lhQnVmZmVyLmgiCiAjaW5jbHVkZSAiTmljb3NpYVBhaW50aW5nQ29udGV4dC5oIgotI2lu
Y2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiBuYW1lc3BhY2Ug
Tmljb3NpYSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RydWN0IFRhc2tEYXRhIHsK
LSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0KLSAgICBSZWY8QnVmZmVyPiBi
dWZmZXI7Ci0gICAgUGFpbnRpbmdPcGVyYXRpb25zIHBhaW50aW5nT3BlcmF0aW9uczsKLX07Ci0K
LXZvaWQgc190aHJlYWRGdW5jKGdwb2ludGVyIGRhdGEsIGdwb2ludGVyKQotewotICAgIHN0ZDo6
dW5pcXVlX3B0cjxUYXNrRGF0YT4gdGFza0RhdGEoc3RhdGljX2Nhc3Q8VGFza0RhdGEqPihkYXRh
KSk7Ci0KLSAgICBQYWludGluZ0NvbnRleHQ6OnJlcGxheSh0YXNrRGF0YS0+YnVmZmVyLCB0YXNr
RGF0YS0+cGFpbnRpbmdPcGVyYXRpb25zKTsKLSAgICB0YXNrRGF0YS0+YnVmZmVyLT5jb21wbGV0
ZVBhaW50aW5nKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBHcmFwaGljc0xheWVyJiBsYXllciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgbWFwcGVkU291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSwgYm9vbCBzdXBwb3J0c0FscGhhKQogewogICAgIGNv
bnRleHQuc2F2ZSgpOwpAQCAtNzUsMTQgKzU4LDEyIEBAIHN0YXRpYyB2b2lkIHBhaW50TGF5ZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyJiBsYXllciwgY29uc3QgSW50
CiB9CiAKIFBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQoKQor
ICAgIDogbV93b3JrZXJQb29sKFdvcmtlclBvb2w6OmNyZWF0ZSg0KSkKIHsKLSAgICAvLyBGSVhN
RTogdGhlc2UgcGFyYW1ldGVycyBzaG91bGQgYmUgZmluZS10dW5lZCwgb3IgbWF5YmUgbWFkZSBj
b25maWd1cmFibGUuCi0gICAgbV90aHJlYWRQb29sID0gZ190aHJlYWRfcG9vbF9uZXcoc190aHJl
YWRGdW5jLCBudWxscHRyLCA0LCBUUlVFLCBudWxscHRyKTsKIH0KIAogUGFpbnRpbmdFbmdpbmVU
aHJlYWRlZDo6flBhaW50aW5nRW5naW5lVGhyZWFkZWQoKQogewotICAgIGdfdGhyZWFkX3Bvb2xf
ZnJlZShtX3RocmVhZFBvb2wsIFRSVUUsIEZBTFNFKTsKIH0KIAogYm9vbCBQYWludGluZ0VuZ2lu
ZVRocmVhZGVkOjpwYWludChHcmFwaGljc0xheWVyJiBsYXllciwgUmVmPEJ1ZmZlcj4mJiBidWZm
ZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIG1hcHBlZFNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCkBA
IC05Niw3ICs3NywxMCBAQCBib29sIFBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OnBhaW50KEdyYXBo
aWNzTGF5ZXImIGxheWVyLCBSZWY8QnVmZmVyPiYmIGJ1ZmZlciwgYwogICAgICAgICAgICAgcGFp
bnRMYXllcihjb250ZXh0LCBsYXllciwgc291cmNlUmVjdCwgbWFwcGVkU291cmNlUmVjdCwgdGFy
Z2V0UmVjdCwgY29udGVudHNTY2FsZSwgYnVmZmVyLT5zdXBwb3J0c0FscGhhKCkpOwogICAgICAg
ICB9KTsKIAotICAgIGdfdGhyZWFkX3Bvb2xfcHVzaChtX3RocmVhZFBvb2wsIG5ldyBUYXNrRGF0
YSB7IFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShwYWludGluZ09wZXJhdGlvbnMpIH0sIG51bGxw
dHIpOworICAgIG1fd29ya2VyUG9vbC0+cG9zdFRhc2soW3BhaW50aW5nT3BlcmF0aW9ucyA9IFdU
Rk1vdmUocGFpbnRpbmdPcGVyYXRpb25zKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSB7Cisg
ICAgICAgIFBhaW50aW5nQ29udGV4dDo6cmVwbGF5KGJ1ZmZlciwgcGFpbnRpbmdPcGVyYXRpb25z
KTsKKyAgICAgICAgYnVmZmVyLT5jb21wbGV0ZVBhaW50aW5nKCk7CisgICAgfSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFk
ZWQuaAppbmRleCAzOTFjOGNjM2UyODRhNTdlZGVjYTllYzEyNzBjY2U0MmJjMGU4ZjVlLi5hZGQx
NGVkNWY5NWMzMDIyNzM0ZmY5NDI3NDQ3MjZkNTQ5MGM2ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRo
cmVhZGVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oCkBAIC0yOSw4ICsyOSw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIk5pY29zaWFQYWludGluZ0VuZ2luZS5oIgotCi10eXBlZGVmIHN0
cnVjdCBfR1RocmVhZFBvb2wgR1RocmVhZFBvb2w7CisjaW5jbHVkZSA8d3RmL1dvcmtlclBvb2wu
aD4KIAogbmFtZXNwYWNlIE5pY29zaWEgewogCkBAIC00Miw3ICs0MSw3IEBAIGNsYXNzIFBhaW50
aW5nRW5naW5lVGhyZWFkZWQgZmluYWwgOiBwdWJsaWMgUGFpbnRpbmdFbmdpbmUgewogcHJpdmF0
ZToKICAgICBib29sIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXImLCBSZWY8QnVmZmVyPiYm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAKLSAgICBHVGhyZWFkUG9vbCog
bV90aHJlYWRQb29sOworICAgIFJlZjxXb3JrZXJQb29sPiBtX3dvcmtlclBvb2w7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBOaWNvc2lhCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggOTUzMjlmZmQ2ODg3YTExYTkwY2I2MzQ3NjhhZTkyNzRjYzUxZWZj
ZC4uMTFkN2M0NDhjNTQ4NjFjOTY5OTQ1ZmFhMjhmMDEwZjU2YzI3MGJkOCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE4LTA2LTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtXVEZdIEFkZCBXb3JrZXJQb29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQ1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHA6IEFkZGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMDYtMDYgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bTWluaUJy
b3dzZXJdIFJlbW92ZSBnTWFpbldpbmRvdyBnbG9iYWwgdmFyaWFibGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0CmluZGV4IDEwZjhmY2FmYzA1YWE3ZDhlNzcwZjgzNWU5MmNjZWU4ODE4NTc2
NzIuLjJlN2QxYzNkODlhMzI1ZWI1ZDlhZWY5NWU4MWZkZmM3MjMzYWMwZDcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTU4LDYgKzE1OCw3IEBAIHNldChUZXN0V1RGX1NPVVJD
RVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9XZWFrUHRyLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwCiApCiAKICMgRklYTUU6IFRlc3RzL1dURi9S
dW5Mb29wLmNwcCBpcyBtaXNzaW5nIGJlY2F1c2UgaXQgZG9lc24ndCB3b3JrIGZvciBXaW5kb3dz
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMzE2N2E4OTJhNGJmOTQ2YjgwYWI1NWE3YjU2
YTcxMGU4MDkxOWZjLi42MGM2MmEzMDBiOTg3YjM0ZWU0YzMyOWE1ZDI2MDMyOGU1ZDEwYmRhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTkxMiw2ICsxOTEyLDcgQEAKIAkJRTE5NEUxQkEx
NzdFNTE0NTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURp
ZFJlY2VpdmVSZXNwb25zZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5NEUx
QkMxNzdFNTM0QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOURCOTc4MUIzMjEzN0MwMERCMzhENCAvKiBO
YXZpZ2F0b3JMYW5ndWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE5hdmlnYXRvckxhbmd1YWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzg4ODg3MDIwQzkwOTgxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4QTBEMzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFs
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWduYWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5OEJDMEYyMDQxQzc2MzAwMzg3MTM2IC8q
IFVuaXF1ZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVu
aXF1ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OTIsNiArMjg5
Myw3IEBACiAJCQkJN0NEMEQ1QUExRDU1MzRERTAwMENDOUUxIC8qIFZhcmlhbnQuY3BwICovLAog
CQkJCUJDNTVGNUY4MTRBRDc4RUUwMDQ4NEJFMSAvKiBWZWN0b3IuY3BwICovLAogCQkJCTFDQjlC
QzM3MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNwcCAqLywKKwkJCQlFMzg4ODg3MDIwQzkw
OTgxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8sCiAJCQkJN0FBNkExNTExQUFDMEIzMTAw
MkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJMjY1QUY1NEYxNUQxRTQ4QTAwQjBDQjRB
IC8qIFdURlN0cmluZy5jcHAgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Xb3JrZXJQb29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOThlMjhhMWE3YTJiMWVmMjcxN2VhYzUy
NDQ3NjA0NWE5ZTZjNmI1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1
ZGUgPHd0Zi9Xb3JrZXJQb29sLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVT
VChXVEYsIFdvcmtlclBvb2xEZWNyZWFzZSkKK3sKKyAgICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4g
Y291bnRlciB7IDAgfTsKKyAgICB7CisgICAgICAgIFJlZjxXb3JrZXJQb29sPiBwb29sID0gV29y
a2VyUG9vbDo6Y3JlYXRlKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgeworICAgICAgICAgICAgcG9vbC0+cG9zdFRhc2soWyZdIHsKKyAgICAgICAgICAgICAgICAr
K2NvdW50ZXI7CisgICAgICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gV2hlbiBkZXN0cm95aW5nIFdvcmtlclBvb2wsIGFs
bCB0aGUgdGFza3MgYXJlIGRyYWluZWQuCisgICAgfQorICAgIEVYUEVDVF9FUShjb3VudGVyLmxv
YWQoKSwgMTAwMDBVKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342164</attachid>
            <date>2018-06-07 07:57:27 -0700</date>
            <delta_ts>2018-06-07 08:02:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174569-20180607235726.patch</filename>
            <type>text/plain</type>
            <size>26331</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1ZGI0MjQ0N2M1OGZhMGJmMzdlN2E4
ZTUxNGVhZmY3MzE3NjdhODUuLmFiZjNjNzQ0ZGIyNjM0N2JjYTJiMWFmMDgzMWI5MjMxYzVlNDA1
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDYtMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBXb3JrZXJQb29sLCB3aGljaCBpcyBhIHRocmVhZCBwb29sIGNvbnNpc3RzIG9mIEF1dG9tYXRp
Y1RocmVhZC4KKyAgICAgICAgU2luY2UgaXQgaXMgYmFzZWQgb24gQXV0b21hdGljVGhyZWFkLCB0
aGlzIFdvcmtlclBvb2wgY2FuIHRha2UgYHRpbWVvdXRgLiBPbmNlCisgICAgICAgIGB0aW1lb3V0
YCBwYXNzZXMgd2l0aG91dCBhbnkgdGFza3MsIHRocmVhZHMgaW4gV29ya2VyUG9vbCB3aWxsIGJl
IGRlc3Ryb3llZC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0
aWNUaHJlYWQ6OkF1dG9tYXRpY1RocmVhZCk6CisgICAgICAgIChXVEY6OkF1dG9tYXRpY1RocmVh
ZDo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuaDoKKyAgICAgICAgKiB3
dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1dvcmtlclBvb2wuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyUG9vbCk6CisgICAgICAgIChXVEY6Oldv
cmtlclBvb2w6On5Xb3JrZXJQb29sKToKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6c2hvdWxk
U2xlZXApOgorICAgICAgICAoV1RGOjpXb3JrZXJQb29sOjpwb3N0VGFzayk6CisgICAgICAgICog
d3RmL1dvcmtlclBvb2wuaDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtlclBvb2w6OmNyZWF0
ZSk6CisKIDIwMTgtMDYtMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gUmV0aXJlIERpc3BhdGNoUHRyLCBhbmQgYWRkIG1vcmUgbW92ZSBzZW1hbnRp
Y3MgYW5kIHNpbXBsZXIgI2lmcyB0byBvdGhlciBzbWFydCBwb2ludGVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGMyN2U2YjQ1ZDY3ZDdlNDQwZjUzMTE4NGY1ZjYyZmFiNzQ5MmQxN2QuLjNiNmM1NDZmYTdkZDBi
ZDUxZDc5ZmY4M2Q5OWE0MTAyZDdiYmJhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxOC0wNi0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBbV1RGXSBBZGQgV29ya2VyUG9vbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2Ugc3RhcnQgdXNpbmcgV29ya2VyUG9vbCBmb3IgTmljb3NpYVBh
aW50aW5nRW5naW5lVGhyZWFkZWQgaW5zdGVhZCBvZiBnbGliIHRocmVhZCBwb29sLgorICAgICAg
ICBUaGlzIG1ha2VzIE5pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkIHBsYXRmb3JtLWluZGVw
ZW5kZW50IGFuZCB1c2FibGUgZm9yIFdpbkNhaXJvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpQYWludGluZ0VuZ2luZVRocmVhZGVkOjpQYWludGluZ0VuZ2luZVRocmVhZGVk
KToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQ6On5QYWludGluZ0Vu
Z2luZVRocmVhZGVkKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQ6
OnBhaW50KToKKyAgICAgICAgKE5pY29zaWE6OnNfdGhyZWFkRnVuYyk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJl
YWRlZC5oOgorCiAyMDE4LTA2LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBIVFRQIEhlYWRlciB2YWx1ZXMgdmFsaWRhdGlvbiBpcyB0b28gc3RyaWN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NjJjN2NjYmMyZjA4
ZTBjNmVlOGVlMjA3MjgxNTZlZGRlZjdkM2ZmLi4zYjA0YjcwOGIwZjMzZWZkY2JiNGQ2NTQ4Yzdm
MjFhYjRjZGE0OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE0NSw2ICsxNDUsNyBAQAogCQlEQ0VFMjIwMTFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tP
YmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1t
ICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87
IH07CiAJCUUzMTFGQjE3MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzExRkIxNTFGMEE1NjhC
MDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICovOyB9OworCQlFMzg4ODg2RjIwQzkwOTUxMDBF
NjMyQkMgLyogV29ya2VyUG9vbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzg4ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAg
Ki87IH07CiAJCUUzOEM0MTI1MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhDNDEyNDFFQjRF
MDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLm1tICovOyB9OwogCQlFMzhDNDEyODFFQjRFMDY4
MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzhDNDEyNjFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi87
IH07CiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUyNjFG
NTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9OwpAQCAtNjE0LDYg
KzYxNSw4IEBACiAJCUUzMTFGQjE2MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRHcm91cC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzIwMEFCNDFFOUE1MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1S
ZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZWdp
c3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRDVGODcxRkJFRDY2NzAw
QkY2MjVFIC8qIFJlY3Vyc2FibGVMYW1iZGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVjdXJzYWJsZUxhbWJkYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzg4ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM4ODg4NkUyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1BVVGltZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhDNDEyNjFFQjRFMDY4MDA0Mjk1
N0QgLyogQ1BVVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
UFVUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QzQxMjcxRUI0RTA2
ODAwNDI5NTdEIC8qIENQVVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1BVVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyMiw2ICsxMTI1LDgg
QEAKIAkJCQkwRjM1MDE2MzFCQjI1OEM4MDBGMEEyQTMgLyogV2Vha1JhbmRvbS5oICovLAogCQkJ
CTBGRTQ0NzlBMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgKi8sCiAJCQkJMEZFNDQ3
OUIxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmggKi8sCisJCQkJRTM4ODg4NkQyMEM5MDk1
MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovLAorCQkJCUUzODg4ODZFMjBDOTA5NTEwMEU2
MzJCQyAvKiBXb3JrZXJQb29sLmggKi8sCiAJCQkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8q
IFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtR
dWV1ZS5oICovLAogCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25z
LmNwcCAqLywKQEAgLTE1NTQsNiArMTU1OSw3IEBACiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEEx
RDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEw
MDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTQ0NzlD
MUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzg4
ODg2RjIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRp
Y1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCmluZGV4IDJj
NDg2YzQ4MDhhYWUzMjg1OGRkMmIyMjY0NDg0NzI2YWE5YTk5YjkuLmE1OWM1ZDFiYzk2OTI0MGQ4
YzdhZGRjY2MyY2JiNDcxZTllNzAxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F1dG9t
YXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcApA
QCAtMTA0LDkgKzEwNCwxMCBAQCBib29sIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y29udGFp
bnMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBBdXRvbWF0aWNUaHJlYWQqCiAgICAgcmV0dXJuIG1f
dGhyZWFkcy5jb250YWlucyh0aHJlYWQpOwogfQogCi1BdXRvbWF0aWNUaHJlYWQ6OkF1dG9tYXRp
Y1RocmVhZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBCb3g8TG9jaz4gbG9jaywgUmVm
UHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gY29uZGl0aW9uKQorQXV0b21hdGljVGhyZWFk
OjpBdXRvbWF0aWNUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgQm94PExvY2s+
IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IGNvbmRpdGlvbiwgU2Vjb25k
cyB0aW1lb3V0KQogICAgIDogbV9sb2NrKGxvY2spCiAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRp
b24pCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBBbGxvY2F0ZWQgQXV0b21hdGljVGhyZWFk
LlxuIik7CkBAIC0yMDQsMTAgKzIwNSwxMCBAQCB2b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQo
Y29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2h1dCB0
aGUgdGhyZWFkIGRvd24gYWZ0ZXIgYSB0aW1lb3V0LgogICAgICAgICAgICAgICAgICAgICAgICAg
bV9pc1dhaXRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhd29rZW5C
eU5vdGlmeSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndh
aXRGb3IoKm1fbG9jaywgMTBfcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93YWl0
Q29uZGl0aW9uLndhaXRGb3IoKm1fbG9jaywgbV90aW1lb3V0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlICYmICFhd29rZW5CeU5vdGlmeSAmJiAhbV9pc1dhaXRpbmcpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiB3
YWl0Rm9yIHRpbWVkIG91dCwgYnV0IG5vdGlmaWVkIHZpYSBtX2lzV2FpdGluZyBmbGFnIVxuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9pc1dhaXRpbmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2lzV2FpdGluZyAmJiBzaG91bGRTbGVlcChsb2NrZXIpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pc1dhaXRpbmcgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBHb2luZyB0byBzbGVlcCFcbiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaAppbmRleCAxYjkwNDU0MGM3ZjYwNDZiMDc1MmFmZTk3
NWQyMmEzYjRhMmM4YjhhLi5mZjU0ZjMxNzQxYmU3OGZkM2E1MmNlNDI0NzY3MTg3NGIyY2Q2ZGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIFdU
Rl9FWFBPUlRfUFJJVkFURSBBdXRvbWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8QXV0b21hdGljCiBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhpcyBsb2dpY2FsbHkgY3JlYXRl
cyB0aGUgdGhyZWFkLCBidXQgaW4gcmVhbGl0eSB0aGUgdGhyZWFkIHdvbid0IGJlIGNyZWF0ZWQg
dW50aWwgc29tZW9uZQogICAgIC8vIGNhbGxzIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6bm90
aWZ5T25lKCkgb3Igbm90aWZ5QWxsKCkuCi0gICAgQXV0b21hdGljVGhyZWFkKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPik7
CisgICAgQXV0b21hdGljVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBS
ZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiwgU2Vjb25kcyB0aW1lb3V0ID0gMTBfcyk7
CiAgICAgCiAgICAgLy8gVG8gdW5kZXJzdGFuZCBQb2xsUmVzdWx0IGFuZCBXb3JrUmVzdWx0LCBp
bWFnaW5lIHRoYXQgcG9sbCgpIGFuZCB3b3JrKCkgYXJlIGJlaW5nIGNhbGxlZCBsaWtlCiAgICAg
Ly8gc286CkBAIC0xNjgsNiArMTY4LDExIEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBBdXRv
bWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljCiAgICAg
Ly8gY2FuIGJlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBvbmVzIGRvbid0IGRvIGFueXRoaW5nIChz
byB5b3UgZG9uJ3QgbmVlZCBhIHN1cGVyIGNhbGwpLgogICAgIHZpcnR1YWwgdm9pZCB0aHJlYWRE
aWRTdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJik7CisKKyAgICAvLyBDb250cm9sIHdoZXRoZXIgdGhpcyBhdXRvbWF0aWMgdGhy
ZWFkIHNob3VsZCBzbGVlcCB3aGVuIHRpbWVvdXQgaGFwcGVucy4KKyAgICAvLyBCeSBvdmVycmlk
aW5nIHRoaXMgZnVuY3Rpb24sIHdlIGNhbiBjdXN0b21pemUgaG93IGF1dG9tYXRpYyB0aHJlYWRz
IHdpbGwgc2xlZXAuCisgICAgLy8gRm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUgdGhyZWFkIHBv
b2wsIHlvdSBjYW4gZGVjcmVhc2UgYWN0aXZlIHRocmVhZHMgbW9kZXJhdGVseS4KKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkU2xlZXAoY29uc3QgQWJzdHJhY3RMb2NrZXImKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBdXRvbWF0aWNUaHJlYWRDb25k
aXRpb247CkBAIC0xODEsNiArMTg2LDcgQEAgY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIEF1dG9t
YXRpY1RocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXRvbWF0aWMKICAgICBi
b29sIG1faGFzVW5kZXJseWluZ1RocmVhZCB7IGZhbHNlIH07CiAgICAgQ29uZGl0aW9uIG1fd2Fp
dENvbmRpdGlvbjsKICAgICBDb25kaXRpb24gbV9pc1J1bm5pbmdDb25kaXRpb247CisgICAgU2Vj
b25kcyBtX3RpbWVvdXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKaW5kZXggNmNlNjE3YTdiNGRjYTQwNDhiNTdhMjYyODYzNjFkNDU3NzMzM2IzYS4uMGY5ZjRl
MWYyZGExNmMzMTJjMGRkNTJkOGRiZTk1M2I1NTRkMzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
QEAgLTI1Niw2ICsyNTYsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgV2luZG93c0V4
dHJhcy5oCiAgICAgV29yZExvY2suaAogICAgIFdvcmtRdWV1ZS5oCisgICAgV29ya2VyUG9vbC5o
CiAgICAgZHRvYS5oCiAKICAgICBkdG9hL2JpZ251bS1kdG9hLmgKQEAgLTM5MCw2ICszOTEsNyBA
QCBzZXQoV1RGX1NPVVJDRVMKICAgICBXYWxsVGltZS5jcHAKICAgICBXb3JkTG9jay5jcHAKICAg
ICBXb3JrUXVldWUuY3BwCisgICAgV29ya2VyUG9vbC5jcHAKICAgICBkdG9hLmNwcAogCiAgICAg
ZHRvYS9iaWdudW0tZHRvYS5jYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya2VyUG9v
bC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODc5MDc2
ZGQ3YjM0ZGNjMmY3ZDk4ZTBmMWNlYzkwYTFjNjkzYzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldvcmtlclBvb2wuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgV29ya2VyUG9vbDo6V29ya2VyIGZp
bmFsIDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNz
IFdvcmtlclBvb2w7CisKKyAgICBXb3JrZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
V29ya2VyUG9vbCYgcG9vbCwgQm94PExvY2s+IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRD
b25kaXRpb24+IGNvbmRpdGlvbiwgU2Vjb25kcyB0aW1lb3V0KQorICAgICAgICA6IEF1dG9tYXRp
Y1RocmVhZChsb2NrZXIsIGxvY2ssIGNvbmRpdGlvbiwgdGltZW91dCkKKyAgICAgICAgLCBtX3Bv
b2wocG9vbCkKKyAgICB7CisgICAgfQorCisgICAgUG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX3Bvb2wubV90YXNrcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gUG9sbFJlc3VsdDo6V2FpdDsKKyAgICAgICAgbV90
YXNrID0gbV9wb29sLm1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICghbV90YXNrKQor
ICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6OlN0b3A7CisgICAgICAgIHJldHVybiBQb2xs
UmVzdWx0OjpXb3JrOworICAgIH0KKworICAgIFdvcmtSZXN1bHQgd29yaygpIGZpbmFsCisgICAg
eworICAgICAgICBtX3Rhc2soKTsKKyAgICAgICAgbV90YXNrID0gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOworICAgIH0KKworICAgIHZvaWQgdGhyZWFkRGlk
U3RhcnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC5t
X2xvY2spOworICAgICAgICBtX3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMrKzsKKyAgICB9
CisKKyAgICB2b2lkIHRocmVhZElzU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBmaW5h
bAorICAgIHsKKyAgICAgICAgbV9wb29sLm1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzLS07CisgICAg
fQorCisgICAgYm9vbCBzaG91bGRTbGVlcChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKSBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcG9vbC5zaG91bGRTbGVlcChsb2NrZXIpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBXb3JrZXJQb29sJiBtX3Bvb2w7CisgICAgRnVuY3Rpb248
dm9pZCgpPiBtX3Rhc2s7Cit9OworCitXb3JrZXJQb29sOjpXb3JrZXJQb29sKHVuc2lnbmVkIG51
bWJlck9mV29ya2VycywgU2Vjb25kcyB0aW1lb3V0KQorICAgIDogbV9sb2NrKEJveDxMb2NrPjo6
Y3JlYXRlKCkpCisgICAgLCBtX2NvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNy
ZWF0ZSgpKQorICAgICwgbV90aW1lb3V0KHRpbWVvdXQpCit7CisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fbG9jayk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mV29ya2Vy
czsgKytpKQorICAgICAgICBtX3dvcmtlcnMuYXBwZW5kKGFkb3B0UmVmKCpuZXcgV29ya2VyKGxv
Y2tlciwgKnRoaXMsIG1fbG9jaywgbV9jb25kaXRpb24sIHRpbWVvdXQpKSk7Cit9CisKK1dvcmtl
clBvb2w6On5Xb3JrZXJQb29sKCkKK3sKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCptX2xvY2spOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3dvcmtlcnMuc2l6ZSgpOyBp
LS07KQorICAgICAgICAgICAgbV90YXNrcy5hcHBlbmQobnVsbHB0cik7IC8vIFVzZSBudWxsIHRh
c2sgdG8gaW5kaWNhdGUgdGhhdCB3ZSB3YW50IHRoZSB0aHJlYWQgdG8gdGVybWluYXRlLgorICAg
ICAgICBtX2NvbmRpdGlvbi0+bm90aWZ5QWxsKGxvY2tlcik7CisgICAgfQorICAgIGZvciAoYXV0
byYgd29ya2VyIDogbV93b3JrZXJzKQorICAgICAgICB3b3JrZXItPmpvaW4oKTsKKyAgICBBU1NF
UlQoIW1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzKTsKK30KKworYm9vbCBXb3JrZXJQb29sOjpzaG91
bGRTbGVlcChjb25zdCBBYnN0cmFjdExvY2tlciYpCit7CisgICAgaWYgKG1fdGltZW91dCA+IDBf
cyAmJiBzdGQ6OmlzaW5mKG1fdGltZW91dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBp
ZiAoc3RkOjppc25hbihtX2xhc3RUaW1lb3V0VGltZSkgfHwgKGN1cnJlbnRUaW1lID49IChtX2xh
c3RUaW1lb3V0VGltZSAgKyBtX3RpbWVvdXQpKSkgeworICAgICAgICBtX2xhc3RUaW1lb3V0VGlt
ZSA9IGN1cnJlbnRUaW1lOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFdvcmtlclBvb2w6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIG1fdGFza3Mu
YXBwZW5kKFdURk1vdmUodGFzaykpOworICAgIG1fY29uZGl0aW9uLT5ub3RpZnlPbmUobG9ja2Vy
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5oIGIvU291
cmNlL1dURi93dGYvV29ya2VyUG9vbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1ZjRkMzQ1ZGMxOGE2OWMzMDJj
NTk4NDI1NGQwOTMyMjQwZTJhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9X
b3JrZXJQb29sLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9B
dXRvbWF0aWNUaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFdvcmtlclBvb2wgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2VyUG9vbD4geworcHVibGljOgorICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgfldvcmtlclBvb2woKTsKKworICAgIC8vIElmIHRpbWVvdXQgaXMg
aW5maW5pdHksIGl0IG1lYW5zIEF1dG9tYXRpY1RocmVhZCB3aWxsIGJlIG5ldmVyIGF1dG9tYXRp
Y2FsbHkgZGVzdHJveWVkLgorICAgIHN0YXRpYyBSZWY8V29ya2VyUG9vbD4gY3JlYXRlKHVuc2ln
bmVkIG51bWJlck9mV29ya2VycyAgPSBXVEY6Om51bWJlck9mUHJvY2Vzc29yQ29yZXMoKSwgU2Vj
b25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChudW1iZXJPZldvcmtlcnMgPj0gMSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdv
cmtlclBvb2wobnVtYmVyT2ZXb3JrZXJzLCB0aW1lb3V0KSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGNsYXNzIFdvcmtlcjsKKyAgICBmcmllbmQgY2xhc3MgV29ya2VyOworCisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFdvcmtlclBvb2wodW5zaWduZWQgbnVtYmVyT2ZXb3JrZXJzLCBTZWNvbmRz
IHRpbWVvdXQpOworCisgICAgYm9vbCBzaG91bGRTbGVlcChjb25zdCBBYnN0cmFjdExvY2tlciYp
OworCisgICAgQm94PExvY2s+IG1fbG9jazsKKyAgICBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29u
ZGl0aW9uPiBtX2NvbmRpdGlvbjsKKyAgICBTZWNvbmRzIG1fdGltZW91dDsKKyAgICBNb25vdG9u
aWNUaW1lIG1fbGFzdFRpbWVvdXRUaW1lIHsgTW9ub3RvbmljVGltZTo6bmFuKCkgfTsKKyAgICB1
bnNpZ25lZCBtX251bWJlck9mQWN0aXZlV29ya2VycyB7IDAgfTsKKyAgICBWZWN0b3I8UmVmPFdv
cmtlcj4+IG1fd29ya2VyczsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzOwor
fTsKKworfQorCit1c2luZyBXVEY6OldvcmtlclBvb2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVh
ZGVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwCmluZGV4IDY0NjE3ZmYzMGFhZDQ0NDgzNjU1NWEw
YWE2MDRmZDAxYTdhMjE3OWIuLjU2NWQ5MjAxYjlkYTk5YTIyYTIwYjA3YWE5MWVhNDEwY2U5OTI0
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3Bw
CkBAIC0zMywyNyArMzMsMTAgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVk
ZSAiTmljb3NpYUJ1ZmZlci5oIgogI2luY2x1ZGUgIk5pY29zaWFQYWludGluZ0NvbnRleHQuaCIK
LSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNw
YWNlIE5pY29zaWEgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0cnVjdCBUYXNrRGF0
YSB7Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotCi0gICAgUmVmPEJ1ZmZl
cj4gYnVmZmVyOwotICAgIFBhaW50aW5nT3BlcmF0aW9ucyBwYWludGluZ09wZXJhdGlvbnM7Ci19
OwotCi12b2lkIHNfdGhyZWFkRnVuYyhncG9pbnRlciBkYXRhLCBncG9pbnRlcikKLXsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+IHRhc2tEYXRhKHN0YXRpY19jYXN0PFRhc2tEYXRhKj4o
ZGF0YSkpOwotCi0gICAgUGFpbnRpbmdDb250ZXh0OjpyZXBsYXkodGFza0RhdGEtPmJ1ZmZlciwg
dGFza0RhdGEtPnBhaW50aW5nT3BlcmF0aW9ucyk7Ci0gICAgdGFza0RhdGEtPmJ1ZmZlci0+Y29t
cGxldGVQYWludGluZygpOwotfQotCiBzdGF0aWMgdm9pZCBwYWludExheWVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIG1hcHBlZFNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRh
cmdldFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIGJvb2wgc3VwcG9ydHNBbHBoYSkKIHsKICAg
ICBjb250ZXh0LnNhdmUoKTsKQEAgLTc1LDE0ICs1OCwxMiBAQCBzdGF0aWMgdm9pZCBwYWludExh
eWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0
IEludAogfQogCiBQYWludGluZ0VuZ2luZVRocmVhZGVkOjpQYWludGluZ0VuZ2luZVRocmVhZGVk
KCkKKyAgICA6IG1fd29ya2VyUG9vbChXb3JrZXJQb29sOjpjcmVhdGUoNCkpCiB7Ci0gICAgLy8g
RklYTUU6IHRoZXNlIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGZpbmUtdHVuZWQsIG9yIG1heWJlIG1h
ZGUgY29uZmlndXJhYmxlLgotICAgIG1fdGhyZWFkUG9vbCA9IGdfdGhyZWFkX3Bvb2xfbmV3KHNf
dGhyZWFkRnVuYywgbnVsbHB0ciwgNCwgVFJVRSwgbnVsbHB0cik7CiB9CiAKIFBhaW50aW5nRW5n
aW5lVGhyZWFkZWQ6On5QYWludGluZ0VuZ2luZVRocmVhZGVkKCkKIHsKLSAgICBnX3RocmVhZF9w
b29sX2ZyZWUobV90aHJlYWRQb29sLCBUUlVFLCBGQUxTRSk7CiB9CiAKIGJvb2wgUGFpbnRpbmdF
bmdpbmVUaHJlYWRlZDo6cGFpbnQoR3JhcGhpY3NMYXllciYgbGF5ZXIsIFJlZjxCdWZmZXI+JiYg
YnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBtYXBwZWRT
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxl
KQpAQCAtOTYsNyArNzcsMTAgQEAgYm9vbCBQYWludGluZ0VuZ2luZVRocmVhZGVkOjpwYWludChH
cmFwaGljc0xheWVyJiBsYXllciwgUmVmPEJ1ZmZlcj4mJiBidWZmZXIsIGMKICAgICAgICAgICAg
IHBhaW50TGF5ZXIoY29udGV4dCwgbGF5ZXIsIHNvdXJjZVJlY3QsIG1hcHBlZFNvdXJjZVJlY3Qs
IHRhcmdldFJlY3QsIGNvbnRlbnRzU2NhbGUsIGJ1ZmZlci0+c3VwcG9ydHNBbHBoYSgpKTsKICAg
ICAgICAgfSk7CiAKLSAgICBnX3RocmVhZF9wb29sX3B1c2gobV90aHJlYWRQb29sLCBuZXcgVGFz
a0RhdGEgeyBXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUocGFpbnRpbmdPcGVyYXRpb25zKSB9LCBu
dWxscHRyKTsKKyAgICBtX3dvcmtlclBvb2wtPnBvc3RUYXNrKFtwYWludGluZ09wZXJhdGlvbnMg
PSBXVEZNb3ZlKHBhaW50aW5nT3BlcmF0aW9ucyksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0g
eworICAgICAgICBQYWludGluZ0NvbnRleHQ6OnJlcGxheShidWZmZXIsIHBhaW50aW5nT3BlcmF0
aW9ucyk7CisgICAgICAgIGJ1ZmZlci0+Y29tcGxldGVQYWludGluZygpOworICAgIH0pOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRo
cmVhZGVkLmgKaW5kZXggMzkxYzhjYzNlMjg0YTU3ZWRlY2E5ZWMxMjcwY2NlNDJiYzBlOGY1ZS4u
YWRkMTRlZDVmOTVjMzAyMjczNGZmOTQyNzQ0NzI2ZDU0OTBjNmU3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdp
bmVUaHJlYWRlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuaApAQCAtMjksOCArMjksNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdFbmdpbmUuaCIKLQotdHlwZWRl
ZiBzdHJ1Y3QgX0dUaHJlYWRQb29sIEdUaHJlYWRQb29sOworI2luY2x1ZGUgPHd0Zi9Xb3JrZXJQ
b29sLmg+CiAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIApAQCAtNDIsNyArNDEsNyBAQCBjbGFzcyBQ
YWludGluZ0VuZ2luZVRocmVhZGVkIGZpbmFsIDogcHVibGljIFBhaW50aW5nRW5naW5lIHsKIHBy
aXZhdGU6CiAgICAgYm9vbCBwYWludChXZWJDb3JlOjpHcmFwaGljc0xheWVyJiwgUmVmPEJ1ZmZl
cj4mJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgR1RocmVhZFBv
b2wqIG1fdGhyZWFkUG9vbDsKKyAgICBSZWY8V29ya2VyUG9vbD4gbV93b3JrZXJQb29sOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk1MzI5ZmZkNjg4N2ExMWE5MGNiNjM0NzY4YWU5Mjc0Y2M1
MWVmY2QuLjExZDdjNDQ4YzU0ODYxYzk2OTk0NWZhYTI4ZjAxMGY1NmMyNzBiZDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxOC0wNi0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbV1RGXSBBZGQgV29ya2VyUG9vbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA2LTA2ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW01p
bmlCcm93c2VyXSBSZW1vdmUgZ01haW5XaW5kb3cgZ2xvYmFsIHZhcmlhYmxlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAppbmRleCAxMGY4ZmNhZmMwNWFhN2Q4ZTc3MGY4MzVlOTJjY2VlODgx
ODU3NjcyLi4yZTdkMWMzZDg5YTMyNWViNWQ5YWVmOTVlODFmZGZjNzIzM2FjMGQ3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTE1OCw2ICsxNTgsNyBAQCBzZXQoVGVzdFdURl9T
T1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dURlN0cmluZy5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Xb3JrZXJQb29sLmNwcAogKQogCiAjIEZJWE1FOiBUZXN0cy9X
VEYvUnVuTG9vcC5jcHAgaXMgbWlzc2luZyBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayBmb3IgV2lu
ZG93cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTMxNjdhODkyYTRiZjk0NmI4MGFiNTVh
N2I1NmE3MTBlODA5MTlmYy4uNjBjNjJhMzAwYjk4N2IzNGVlNGMzMjlhNWQyNjAzMjhlNWQxMGJk
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5MTIsNiArMTkxMiw3IEBACiAJCUUxOTRF
MUJBMTc3RTUxNDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zy
b21EaWRSZWNlaXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
OTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9u
c2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQg
LyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBOYXZpZ2F0b3JMYW5ndWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM4ODg4NzAyMEM5MDk4MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNp
Z25hbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2lnbmFscy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThCQzBGMjA0MUM3NjMwMDM4NzEz
NiAvKiBVbmlxdWVBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVbmlxdWVBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODkyLDYg
KzI4OTMsNyBAQAogCQkJCTdDRDBENUFBMUQ1NTM0REUwMDBDQzlFMSAvKiBWYXJpYW50LmNwcCAq
LywKIAkJCQlCQzU1RjVGODE0QUQ3OEVFMDA0ODRCRTEgLyogVmVjdG9yLmNwcCAqLywKIAkJCQkx
Q0I5QkMzNzFBNjc0ODIzMDBGRTU2NzggLyogV2Vha1B0ci5jcHAgKi8sCisJCQkJRTM4ODg4NzAy
MEM5MDk4MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovLAogCQkJCTdBQTZBMTUxMUFBQzBC
MzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCTI2NUFGNTRGMTVEMUU0OEEwMEIw
Q0I0QSAvKiBXVEZTdHJpbmcuY3BwICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk4ZTI4YTFhN2EyYjFlZjI3MTdl
YWM1MjQ0NzYwNDVhOWU2YzZiNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
KyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvV29ya2VyUG9vbC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K1RFU1QoV1RGLCBXb3JrZXJQb29sRGVjcmVhc2UpCit7CisgICAgc3RkOjphdG9taWM8dW5zaWdu
ZWQ+IGNvdW50ZXIgeyAwIH07CisgICAgeworICAgICAgICBSZWY8V29ya2VyUG9vbD4gcG9vbCA9
IFdvcmtlclBvb2w6OmNyZWF0ZSgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAw
OyArK2kpIHsKKyAgICAgICAgICAgIHBvb2wtPnBvc3RUYXNrKFsmXSB7CisgICAgICAgICAgICAg
ICAgKytjb3VudGVyOworICAgICAgICAgICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisgICAgICAgIC8vIFdoZW4gZGVzdHJveWluZyBXb3JrZXJQb29s
LCBhbGwgdGhlIHRhc2tzIGFyZSBkcmFpbmVkLgorICAgIH0KKyAgICBFWFBFQ1RfRVEoY291bnRl
ci5sb2FkKCksIDEwMDAwVSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342165</attachid>
            <date>2018-06-07 08:02:34 -0700</date>
            <delta_ts>2018-06-07 08:05:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174569-20180608000233.patch</filename>
            <type>text/plain</type>
            <size>26529</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1ZGI0MjQ0N2M1OGZhMGJmMzdlN2E4
ZTUxNGVhZmY3MzE3NjdhODUuLmUzYzI1OGRmYzY0NzNjZDliYzM3N2UwYzg4MTEzM2ExNmVkMTFm
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTgtMDYtMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBXb3JrZXJQb29sLCB3aGljaCBpcyBhIHRocmVhZCBwb29sIHRoYXQgY29uc2lzdHMgb2YgQXV0
b21hdGljVGhyZWFkLgorICAgICAgICBTaW5jZSBpdCBpcyBiYXNlZCBvbiBBdXRvbWF0aWNUaHJl
YWQsIHRoaXMgV29ya2VyUG9vbCBjYW4gdGFrZSBgdGltZW91dGA6IG9uY2UgYHRpbWVvdXRgCisg
ICAgICAgIHBhc3NlcyB3aXRob3V0IGFueSB0YXNrcywgdGhyZWFkcyBpbiBXb3JrZXJQb29sIHdp
bGwgYmUgZGVzdHJveWVkLgorCisgICAgICAgIFdlIGFkZCBzaG91bGRTbGVlcCBoYW5kbGVyIHRv
IEF1dG9tYXRpY1RocmVhZCB0byBtYWtlIGRlc3RydWN0aW9uIG9mIHRocmVhZHMgaW4gV29ya2Vy
UG9vbCBtb2RlcmF0ZS4KKyAgICAgICAgV2l0aG91dCB0aGlzLCBhbGwgdGhyZWFkcyBhcmUgZGVz
dHJveWVkIGF0IG9uY2UgYWZ0ZXIgYHRpbWVvdXRgIHBhc3Nlcy4KKworICAgICAgICAqIFdURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQu
Y3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OkF1dG9tYXRpY1RocmVhZCk6Cisg
ICAgICAgIChXVEY6OkF1dG9tYXRpY1RocmVhZDo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9BdXRv
bWF0aWNUaHJlYWQuaDoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL1dvcmtlclBvb2wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29y
a2VyUG9vbCk6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6On5Xb3JrZXJQb29sKToKKyAgICAg
ICAgKFdURjo6V29ya2VyUG9vbDo6c2hvdWxkU2xlZXApOgorICAgICAgICAoV1RGOjpXb3JrZXJQ
b29sOjpwb3N0VGFzayk6CisgICAgICAgICogd3RmL1dvcmtlclBvb2wuaDogQWRkZWQuCisgICAg
ICAgIChXVEY6OldvcmtlclBvb2w6OmNyZWF0ZSk6CisKIDIwMTgtMDYtMDUgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmV0aXJlIERpc3BhdGNoUHRy
LCBhbmQgYWRkIG1vcmUgbW92ZSBzZW1hbnRpY3MgYW5kIHNpbXBsZXIgI2lmcyB0byBvdGhlciBz
bWFydCBwb2ludGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMyN2U2YjQ1ZDY3ZDdlNDQwZjUzMTE4NGY1ZjYy
ZmFiNzQ5MmQxN2QuLjNiNmM1NDZmYTdkZDBiZDUxZDc5ZmY4M2Q5OWE0MTAyZDdiYmJhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0wNi0wNyAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgV29ya2VyUG9vbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NTY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc3RhcnQgdXNp
bmcgV29ya2VyUG9vbCBmb3IgTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQgaW5zdGVhZCBv
ZiBnbGliIHRocmVhZCBwb29sLgorICAgICAgICBUaGlzIG1ha2VzIE5pY29zaWFQYWludGluZ0Vu
Z2luZVRocmVhZGVkIHBsYXRmb3JtLWluZGVwZW5kZW50IGFuZCB1c2FibGUgZm9yIFdpbkNhaXJv
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdF
bmdpbmVUaHJlYWRlZC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0VuZ2luZVRocmVh
ZGVkOjpQYWludGluZ0VuZ2luZVRocmVhZGVkKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5n
RW5naW5lVGhyZWFkZWQ6On5QYWludGluZ0VuZ2luZVRocmVhZGVkKToKKyAgICAgICAgKE5pY29z
aWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OnBhaW50KToKKyAgICAgICAgKE5pY29zaWE6OnNf
dGhyZWFkRnVuYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oOgorCiAyMDE4LTA2LTA2ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBIVFRQIEhlYWRlciB2YWx1ZXMg
dmFsaWRhdGlvbiBpcyB0b28gc3RyaWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4NjJjN2NjYmMyZjA4ZTBjNmVlOGVlMjA3MjgxNTZlZGRlZjdkM2ZmLi4z
YjA0YjcwOGIwZjMzZWZkY2JiNGQ2NTQ4YzdmMjFhYjRjZGE0OTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NSw2ICsxNDUsNyBAQAogCQlEQ0VFMjIw
MTFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5
NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2
RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5
cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CiAJCUUzMTFGQjE3MUYwQTU2OEIwMDNDMDhE
RSAvKiBUaHJlYWRHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzExRkIxNTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICov
OyB9OworCQlFMzg4ODg2RjIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4ODg2RDIwQzkwOTUx
MDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi87IH07CiAJCUUzOEM0MTI1MUVCNEUwNEMwMDQy
OTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLm1t
ICovOyB9OwogCQlFMzhDNDEyODFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhDNDEyNjFFQjRFMDY4
MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi87IH07CiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUND
NCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRl
ckpTT04uY3BwICovOyB9OwpAQCAtNjE0LDYgKzYxNSw4IEBACiAJCUUzMTFGQjE2MUYwQTU2OEIw
MDNDMDhERSAvKiBUaHJlYWRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaHJlYWRHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIwMEFCNDFF
OUE1MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzRDVGODcxRkJFRDY2NzAwQkY2MjVFIC8qIFJlY3Vyc2FibGVMYW1iZGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdXJzYWJsZUxhbWJkYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzg4ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyogV29y
a2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQ
b29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4ODg4NkUyMEM5MDk1MTAw
RTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhDNDEyNDFFQjRF
MDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ1BVVGltZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzhDNDEyNjFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4QzQxMjcxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTEyMiw2ICsxMTI1LDggQEAKIAkJCQkwRjM1MDE2MzFCQjI1OEM4MDBGMEEy
QTMgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCTBGRTQ0NzlBMUI3QUFBMDMwMDk0OThFQiAvKiBX
b3JkTG9jay5jcHAgKi8sCiAJCQkJMEZFNDQ3OUIxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2Nr
LmggKi8sCisJCQkJRTM4ODg4NkQyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICov
LAorCQkJCUUzODg4ODZFMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmggKi8sCiAJCQkJ
RTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJRTRBMEFE
MzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5oICovLAogCQkJCUZFMDVGQUZFMUZFNTAw
NzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLywKQEAgLTE1NTQsNiArMTU1OSw3IEBA
CiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzg4ODg2RjIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2Vy
UG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRG
NiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTA1RkFGRjFGRTUw
MDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9B
dXRvbWF0aWNUaHJlYWQuY3BwCmluZGV4IDJjNDg2YzQ4MDhhYWUzMjg1OGRkMmIyMjY0NDg0NzI2
YWE5YTk5YjkuLmE1OWM1ZDFiYzk2OTI0MGQ4YzdhZGRjY2MyY2JiNDcxZTllNzAxODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvQXV0b21hdGljVGhyZWFkLmNwcApAQCAtMTA0LDkgKzEwNCwxMCBAQCBib29sIEF1dG9t
YXRpY1RocmVhZENvbmRpdGlvbjo6Y29udGFpbnMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBBdXRv
bWF0aWNUaHJlYWQqCiAgICAgcmV0dXJuIG1fdGhyZWFkcy5jb250YWlucyh0aHJlYWQpOwogfQog
Ci1BdXRvbWF0aWNUaHJlYWQ6OkF1dG9tYXRpY1RocmVhZChjb25zdCBBYnN0cmFjdExvY2tlciYg
bG9ja2VyLCBCb3g8TG9jaz4gbG9jaywgUmVmUHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4g
Y29uZGl0aW9uKQorQXV0b21hdGljVGhyZWFkOjpBdXRvbWF0aWNUaHJlYWQoY29uc3QgQWJzdHJh
Y3RMb2NrZXImIGxvY2tlciwgQm94PExvY2s+IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRD
b25kaXRpb24+IGNvbmRpdGlvbiwgU2Vjb25kcyB0aW1lb3V0KQogICAgIDogbV9sb2NrKGxvY2sp
CiAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkK
IHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAi
OiBBbGxvY2F0ZWQgQXV0b21hdGljVGhyZWFkLlxuIik7CkBAIC0yMDQsMTAgKzIwNSwxMCBAQCB2
b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU2h1dCB0aGUgdGhyZWFkIGRvd24gYWZ0ZXIgYSB0aW1lb3V0
LgogICAgICAgICAgICAgICAgICAgICAgICAgbV9pc1dhaXRpbmcgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBhd29rZW5CeU5vdGlmeSA9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndhaXRGb3IoKm1fbG9jaywgMTBfcyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndhaXRGb3IoKm1fbG9jaywgbV90
aW1lb3V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmICFhd29rZW5C
eU5vdGlmeSAmJiAhbV9pc1dhaXRpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiB3YWl0Rm9yIHRpbWVkIG91dCwgYnV0IG5vdGlmaWVk
IHZpYSBtX2lzV2FpdGluZyBmbGFnIVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bV9pc1dhaXRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2lzV2FpdGluZyAm
JiBzaG91bGRTbGVlcChsb2NrZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9p
c1dhaXRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRo
aXMpLCAiOiBHb2luZyB0byBzbGVlcCFcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
QXV0b21hdGljVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaAppbmRl
eCAxYjkwNDU0MGM3ZjYwNDZiMDc1MmFmZTk3NWQyMmEzYjRhMmM4YjhhLi5mZjU0ZjMxNzQxYmU3
OGZkM2E1MmNlNDI0NzY3MTg3NGIyY2Q2ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9B
dXRvbWF0aWNUaHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaApA
QCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBBdXRvbWF0aWNUaHJl
YWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljCiBwcm90ZWN0ZWQ6CiAg
ICAgLy8gVGhpcyBsb2dpY2FsbHkgY3JlYXRlcyB0aGUgdGhyZWFkLCBidXQgaW4gcmVhbGl0eSB0
aGUgdGhyZWFkIHdvbid0IGJlIGNyZWF0ZWQgdW50aWwgc29tZW9uZQogICAgIC8vIGNhbGxzIEF1
dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6bm90aWZ5T25lKCkgb3Igbm90aWZ5QWxsKCkuCi0gICAg
QXV0b21hdGljVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWZQdHI8
QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPik7CisgICAgQXV0b21hdGljVGhyZWFkKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9u
PiwgU2Vjb25kcyB0aW1lb3V0ID0gMTBfcyk7CiAgICAgCiAgICAgLy8gVG8gdW5kZXJzdGFuZCBQ
b2xsUmVzdWx0IGFuZCBXb3JrUmVzdWx0LCBpbWFnaW5lIHRoYXQgcG9sbCgpIGFuZCB3b3JrKCkg
YXJlIGJlaW5nIGNhbGxlZCBsaWtlCiAgICAgLy8gc286CkBAIC0xNjgsNiArMTY4LDExIEBAIGNs
YXNzIFdURl9FWFBPUlRfUFJJVkFURSBBdXRvbWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8QXV0b21hdGljCiAgICAgLy8gY2FuIGJlIHN1cmUgdGhhdCB0aGUgZGVmYXVs
dCBvbmVzIGRvbid0IGRvIGFueXRoaW5nIChzbyB5b3UgZG9uJ3QgbmVlZCBhIHN1cGVyIGNhbGwp
LgogICAgIHZpcnR1YWwgdm9pZCB0aHJlYWREaWRTdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCB0
aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CisKKyAgICAvLyBDb250cm9s
IHdoZXRoZXIgdGhpcyBhdXRvbWF0aWMgdGhyZWFkIHNob3VsZCBzbGVlcCB3aGVuIHRpbWVvdXQg
aGFwcGVucy4KKyAgICAvLyBCeSBvdmVycmlkaW5nIHRoaXMgZnVuY3Rpb24sIHdlIGNhbiBjdXN0
b21pemUgaG93IGF1dG9tYXRpYyB0aHJlYWRzIHdpbGwgc2xlZXAuCisgICAgLy8gRm9yIGV4YW1w
bGUsIHdoZW4geW91IGhhdmUgdGhyZWFkIHBvb2wsIHlvdSBjYW4gZGVjcmVhc2UgYWN0aXZlIHRo
cmVhZHMgbW9kZXJhdGVseS4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2xlZXAoY29uc3QgQWJz
dHJhY3RMb2NrZXImKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBBdXRvbWF0aWNUaHJlYWRDb25kaXRpb247CkBAIC0xODEsNiArMTg2LDcgQEAgY2xh
c3MgV1RGX0VYUE9SVF9QUklWQVRFIEF1dG9tYXRpY1RocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBdXRvbWF0aWMKICAgICBib29sIG1faGFzVW5kZXJseWluZ1RocmVhZCB7IGZh
bHNlIH07CiAgICAgQ29uZGl0aW9uIG1fd2FpdENvbmRpdGlvbjsKICAgICBDb25kaXRpb24gbV9p
c1J1bm5pbmdDb25kaXRpb247CisgICAgU2Vjb25kcyBtX3RpbWVvdXQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNmNlNjE3YTdiNGRjYTQwNDhiNTdh
MjYyODYzNjFkNDU3NzMzM2IzYS4uMGY5ZjRlMWYyZGExNmMzMTJjMGRkNTJkOGRiZTk1M2I1NTRk
MzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI1Niw2ICsyNTYsNyBAQCBzZXQoV1RGX1BV
QkxJQ19IRUFERVJTCiAgICAgV2luZG93c0V4dHJhcy5oCiAgICAgV29yZExvY2suaAogICAgIFdv
cmtRdWV1ZS5oCisgICAgV29ya2VyUG9vbC5oCiAgICAgZHRvYS5oCiAKICAgICBkdG9hL2JpZ251
bS1kdG9hLmgKQEAgLTM5MCw2ICszOTEsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBXYWxsVGlt
ZS5jcHAKICAgICBXb3JkTG9jay5jcHAKICAgICBXb3JrUXVldWUuY3BwCisgICAgV29ya2VyUG9v
bC5jcHAKICAgICBkdG9hLmNwcAogCiAgICAgZHRvYS9iaWdudW0tZHRvYS5jYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQ
b29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iODc5MDc2ZGQ3YjM0ZGNjMmY3ZDk4ZTBmMWNlYzkwYTFjNjkz
YzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKQEAg
LTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlclBvb2wuaCIK
KworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Y2xhc3MgV29ya2VyUG9vbDo6V29ya2VyIGZpbmFsIDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7
CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIFdvcmtlclBvb2w7CisKKyAgICBXb3JrZXIoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgV29ya2VyUG9vbCYgcG9vbCwgQm94PExvY2s+IGxv
Y2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IGNvbmRpdGlvbiwgU2Vjb25kcyB0
aW1lb3V0KQorICAgICAgICA6IEF1dG9tYXRpY1RocmVhZChsb2NrZXIsIGxvY2ssIGNvbmRpdGlv
biwgdGltZW91dCkKKyAgICAgICAgLCBtX3Bvb2wocG9vbCkKKyAgICB7CisgICAgfQorCisgICAg
UG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgZmluYWwKKyAgICB7CisgICAg
ICAgIGlmIChtX3Bvb2wubV90YXNrcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gUG9s
bFJlc3VsdDo6V2FpdDsKKyAgICAgICAgbV90YXNrID0gbV9wb29sLm1fdGFza3MudGFrZUZpcnN0
KCk7CisgICAgICAgIGlmICghbV90YXNrKQorICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6
OlN0b3A7CisgICAgICAgIHJldHVybiBQb2xsUmVzdWx0OjpXb3JrOworICAgIH0KKworICAgIFdv
cmtSZXN1bHQgd29yaygpIGZpbmFsCisgICAgeworICAgICAgICBtX3Rhc2soKTsKKyAgICAgICAg
bV90YXNrID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwor
ICAgIH0KKworICAgIHZvaWQgdGhyZWFkRGlkU3RhcnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC5tX2xvY2spOworICAgICAgICBtX3Bvb2wubV9udW1i
ZXJPZkFjdGl2ZVdvcmtlcnMrKzsKKyAgICB9CisKKyAgICB2b2lkIHRocmVhZElzU3RvcHBpbmco
Y29uc3QgQWJzdHJhY3RMb2NrZXImKSBmaW5hbAorICAgIHsKKyAgICAgICAgbV9wb29sLm1fbnVt
YmVyT2ZBY3RpdmVXb3JrZXJzLS07CisgICAgfQorCisgICAgYm9vbCBzaG91bGRTbGVlcChjb25z
dCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
cG9vbC5zaG91bGRTbGVlcChsb2NrZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXb3JrZXJQ
b29sJiBtX3Bvb2w7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7Cit9OworCitXb3JrZXJQ
b29sOjpXb3JrZXJQb29sKHVuc2lnbmVkIG51bWJlck9mV29ya2VycywgU2Vjb25kcyB0aW1lb3V0
KQorICAgIDogbV9sb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCisgICAgLCBtX2NvbmRpdGlvbihB
dXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQorICAgICwgbV90aW1lb3V0KHRpbWVv
dXQpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mV29ya2VyczsgKytpKQorICAgICAgICBtX3dvcmtlcnMuYXBw
ZW5kKGFkb3B0UmVmKCpuZXcgV29ya2VyKGxvY2tlciwgKnRoaXMsIG1fbG9jaywgbV9jb25kaXRp
b24sIHRpbWVvdXQpKSk7Cit9CisKK1dvcmtlclBvb2w6On5Xb3JrZXJQb29sKCkKK3sKKyAgICB7
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX3dvcmtlcnMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgbV90YXNrcy5hcHBl
bmQobnVsbHB0cik7IC8vIFVzZSBudWxsIHRhc2sgdG8gaW5kaWNhdGUgdGhhdCB3ZSB3YW50IHRo
ZSB0aHJlYWQgdG8gdGVybWluYXRlLgorICAgICAgICBtX2NvbmRpdGlvbi0+bm90aWZ5QWxsKGxv
Y2tlcik7CisgICAgfQorICAgIGZvciAoYXV0byYgd29ya2VyIDogbV93b3JrZXJzKQorICAgICAg
ICB3b3JrZXItPmpvaW4oKTsKKyAgICBBU1NFUlQoIW1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzKTsK
K30KKworYm9vbCBXb3JrZXJQb29sOjpzaG91bGRTbGVlcChjb25zdCBBYnN0cmFjdExvY2tlciYp
Cit7CisgICAgaWYgKG1fdGltZW91dCA+IDBfcyAmJiBzdGQ6OmlzaW5mKG1fdGltZW91dCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBpZiAoc3RkOjppc25hbihtX2xhc3RUaW1lb3V0VGlt
ZSkgfHwgKGN1cnJlbnRUaW1lID49IChtX2xhc3RUaW1lb3V0VGltZSAgKyBtX3RpbWVvdXQpKSkg
eworICAgICAgICBtX2xhc3RUaW1lb3V0VGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdvcmtlclBvb2w6
OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX2xvY2spOworICAgIG1fdGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykpOworICAgIG1f
Y29uZGl0aW9uLT5ub3RpZnlPbmUobG9ja2VyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvV29ya2VyUG9vbC5oIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI1ZjRkMzQ1ZGMxOGE2OWMzMDJjNTk4NDI1NGQwOTMyMjQwZTJhZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmgKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9BdXRvbWF0aWNUaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvTnVt
YmVyT2ZDb3Jlcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFdvcmtlclBvb2wgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2Vy
UG9vbD4geworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHBvc3RUYXNrKEZ1
bmN0aW9uPHZvaWQoKT4mJik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfldvcmtlclBvb2wo
KTsKKworICAgIC8vIElmIHRpbWVvdXQgaXMgaW5maW5pdHksIGl0IG1lYW5zIEF1dG9tYXRpY1Ro
cmVhZCB3aWxsIGJlIG5ldmVyIGF1dG9tYXRpY2FsbHkgZGVzdHJveWVkLgorICAgIHN0YXRpYyBS
ZWY8V29ya2VyUG9vbD4gY3JlYXRlKHVuc2lnbmVkIG51bWJlck9mV29ya2VycyAgPSBXVEY6Om51
bWJlck9mUHJvY2Vzc29yQ29yZXMoKSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChudW1iZXJPZldvcmtlcnMgPj0gMSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlclBvb2wobnVtYmVyT2ZXb3JrZXJzLCB0aW1l
b3V0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGNsYXNzIFdvcmtlcjsKKyAgICBmcmllbmQg
Y2xhc3MgV29ya2VyOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdvcmtlclBvb2wodW5zaWdu
ZWQgbnVtYmVyT2ZXb3JrZXJzLCBTZWNvbmRzIHRpbWVvdXQpOworCisgICAgYm9vbCBzaG91bGRT
bGVlcChjb25zdCBBYnN0cmFjdExvY2tlciYpOworCisgICAgQm94PExvY2s+IG1fbG9jazsKKyAg
ICBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiBtX2NvbmRpdGlvbjsKKyAgICBTZWNv
bmRzIG1fdGltZW91dDsKKyAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFRpbWVvdXRUaW1lIHsgTW9u
b3RvbmljVGltZTo6bmFuKCkgfTsKKyAgICB1bnNpZ25lZCBtX251bWJlck9mQWN0aXZlV29ya2Vy
cyB7IDAgfTsKKyAgICBWZWN0b3I8UmVmPFdvcmtlcj4+IG1fd29ya2VyczsKKyAgICBEZXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzOworfTsKKworfQorCit1c2luZyBXVEY6OldvcmtlclBv
b2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwCmlu
ZGV4IDY0NjE3ZmYzMGFhZDQ0NDgzNjU1NWEwYWE2MDRmZDAxYTdhMjE3OWIuLjU2NWQ5MjAxYjlk
YTk5YTIyYTIwYjA3YWE5MWVhNDEwY2U5OTI0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwCkBAIC0zMywyNyArMzMsMTAgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiTmljb3NpYUJ1ZmZlci5oIgogI2luY2x1ZGUg
Ik5pY29zaWFQYWludGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIE5pY29zaWEgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLXN0cnVjdCBUYXNrRGF0YSB7Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwotCi0gICAgUmVmPEJ1ZmZlcj4gYnVmZmVyOwotICAgIFBhaW50aW5nT3BlcmF0
aW9ucyBwYWludGluZ09wZXJhdGlvbnM7Ci19OwotCi12b2lkIHNfdGhyZWFkRnVuYyhncG9pbnRl
ciBkYXRhLCBncG9pbnRlcikKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+IHRhc2tE
YXRhKHN0YXRpY19jYXN0PFRhc2tEYXRhKj4oZGF0YSkpOwotCi0gICAgUGFpbnRpbmdDb250ZXh0
OjpyZXBsYXkodGFza0RhdGEtPmJ1ZmZlciwgdGFza0RhdGEtPnBhaW50aW5nT3BlcmF0aW9ucyk7
Ci0gICAgdGFza0RhdGEtPmJ1ZmZlci0+Y29tcGxldGVQYWludGluZygpOwotfQotCiBzdGF0aWMg
dm9pZCBwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllciYg
bGF5ZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIG1hcHBlZFNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUs
IGJvb2wgc3VwcG9ydHNBbHBoYSkKIHsKICAgICBjb250ZXh0LnNhdmUoKTsKQEAgLTc1LDE0ICs1
OCwxMiBAQCBzdGF0aWMgdm9pZCBwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
R3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IEludAogfQogCiBQYWludGluZ0VuZ2luZVRocmVh
ZGVkOjpQYWludGluZ0VuZ2luZVRocmVhZGVkKCkKKyAgICA6IG1fd29ya2VyUG9vbChXb3JrZXJQ
b29sOjpjcmVhdGUoNCkpCiB7Ci0gICAgLy8gRklYTUU6IHRoZXNlIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIGZpbmUtdHVuZWQsIG9yIG1heWJlIG1hZGUgY29uZmlndXJhYmxlLgotICAgIG1fdGhyZWFk
UG9vbCA9IGdfdGhyZWFkX3Bvb2xfbmV3KHNfdGhyZWFkRnVuYywgbnVsbHB0ciwgNCwgVFJVRSwg
bnVsbHB0cik7CiB9CiAKIFBhaW50aW5nRW5naW5lVGhyZWFkZWQ6On5QYWludGluZ0VuZ2luZVRo
cmVhZGVkKCkKIHsKLSAgICBnX3RocmVhZF9wb29sX2ZyZWUobV90aHJlYWRQb29sLCBUUlVFLCBG
QUxTRSk7CiB9CiAKIGJvb2wgUGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6cGFpbnQoR3JhcGhpY3NM
YXllciYgbGF5ZXIsIFJlZjxCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBtYXBwZWRTb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKQpAQCAtOTYsNyArNzcsMTAgQEAgYm9vbCBQYWlu
dGluZ0VuZ2luZVRocmVhZGVkOjpwYWludChHcmFwaGljc0xheWVyJiBsYXllciwgUmVmPEJ1ZmZl
cj4mJiBidWZmZXIsIGMKICAgICAgICAgICAgIHBhaW50TGF5ZXIoY29udGV4dCwgbGF5ZXIsIHNv
dXJjZVJlY3QsIG1hcHBlZFNvdXJjZVJlY3QsIHRhcmdldFJlY3QsIGNvbnRlbnRzU2NhbGUsIGJ1
ZmZlci0+c3VwcG9ydHNBbHBoYSgpKTsKICAgICAgICAgfSk7CiAKLSAgICBnX3RocmVhZF9wb29s
X3B1c2gobV90aHJlYWRQb29sLCBuZXcgVGFza0RhdGEgeyBXVEZNb3ZlKGJ1ZmZlciksIFdURk1v
dmUocGFpbnRpbmdPcGVyYXRpb25zKSB9LCBudWxscHRyKTsKKyAgICBtX3dvcmtlclBvb2wtPnBv
c3RUYXNrKFtwYWludGluZ09wZXJhdGlvbnMgPSBXVEZNb3ZlKHBhaW50aW5nT3BlcmF0aW9ucyks
IGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0geworICAgICAgICBQYWludGluZ0NvbnRleHQ6OnJl
cGxheShidWZmZXIsIHBhaW50aW5nT3BlcmF0aW9ucyk7CisgICAgICAgIGJ1ZmZlci0+Y29tcGxl
dGVQYWludGluZygpOworICAgIH0pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGlu
Z0VuZ2luZVRocmVhZGVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmgKaW5kZXggMzkxYzhjYzNlMjg0YTU3
ZWRlY2E5ZWMxMjcwY2NlNDJiYzBlOGY1ZS4uYWRkMTRlZDVmOTVjMzAyMjczNGZmOTQyNzQ0NzI2
ZDU0OTBjNmU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFk
ZWQuaApAQCAtMjksOCArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJOaWNvc2lh
UGFpbnRpbmdFbmdpbmUuaCIKLQotdHlwZWRlZiBzdHJ1Y3QgX0dUaHJlYWRQb29sIEdUaHJlYWRQ
b29sOworI2luY2x1ZGUgPHd0Zi9Xb3JrZXJQb29sLmg+CiAKIG5hbWVzcGFjZSBOaWNvc2lhIHsK
IApAQCAtNDIsNyArNDEsNyBAQCBjbGFzcyBQYWludGluZ0VuZ2luZVRocmVhZGVkIGZpbmFsIDog
cHVibGljIFBhaW50aW5nRW5naW5lIHsKIHByaXZhdGU6CiAgICAgYm9vbCBwYWludChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyJiwgUmVmPEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgZmxvYXQp
IG92ZXJyaWRlOwogCi0gICAgR1RocmVhZFBvb2wqIG1fdGhyZWFkUG9vbDsKKyAgICBSZWY8V29y
a2VyUG9vbD4gbV93b3JrZXJQb29sOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk1MzI5ZmZk
Njg4N2ExMWE5MGNiNjM0NzY4YWU5Mjc0Y2M1MWVmY2QuLjExZDdjNDQ4YzU0ODYxYzk2OTk0NWZh
YTI4ZjAxMGY1NmMyNzBiZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wNi0wNyAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgV29ya2VyUG9vbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NTY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDE4LTA2LTA2ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW01pbmlCcm93c2VyXSBSZW1vdmUgZ01haW5XaW5kb3cg
Z2xvYmFsIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCAxMGY4ZmNh
ZmMwNWFhN2Q4ZTc3MGY4MzVlOTJjY2VlODgxODU3NjcyLi4yZTdkMWMzZDg5YTMyNWViNWQ5YWVm
OTVlODFmZGZjNzIzM2FjMGQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTE1
OCw2ICsxNTgsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvV2Vha1B0ci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV29y
a1F1ZXVlLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Xb3JrZXJQb29s
LmNwcAogKQogCiAjIEZJWE1FOiBUZXN0cy9XVEYvUnVuTG9vcC5jcHAgaXMgbWlzc2luZyBiZWNh
dXNlIGl0IGRvZXNuJ3Qgd29yayBmb3IgV2luZG93cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMTMxNjdhODkyYTRiZjk0NmI4MGFiNTVhN2I1NmE3MTBlODA5MTlmYy4uNjBjNjJhMzAwYjk4
N2IzNGVlNGMzMjlhNWQyNjAzMjhlNWQxMGJkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE5MTIsNiArMTkxMiw3IEBACiAJCUUxOTRFMUJBMTc3RTUxNDUwMDlDNEQ0RSAvKiBTdG9wTG9h
ZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFN0b3BMb2FkaW5n
RnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXZpZ2F0b3JMYW5ndWFnZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4ODg4NzAyMEM5MDk4MTAwRTYzMkJDIC8q
IFdvcmtlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29y
a2VyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEEwRDM0MUZENTBD
QkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2lnbmFscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOThCQzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBVbmlxdWVBcnJheS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlxdWVBcnJheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yODkyLDYgKzI4OTMsNyBAQAogCQkJCTdDRDBENUFBMUQ1NTM0
REUwMDBDQzlFMSAvKiBWYXJpYW50LmNwcCAqLywKIAkJCQlCQzU1RjVGODE0QUQ3OEVFMDA0ODRC
RTEgLyogVmVjdG9yLmNwcCAqLywKIAkJCQkxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2NzggLyogV2Vh
a1B0ci5jcHAgKi8sCisJCQkJRTM4ODg4NzAyMEM5MDk4MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wu
Y3BwICovLAogCQkJCTdBQTZBMTUxMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3BwICov
LAogCQkJCTI2NUFGNTRGMTVEMUU0OEEwMEIwQ0I0QSAvKiBXVEZTdHJpbmcuY3BwICovLAogCQkJ
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtlclBvb2wu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjk4ZTI4YTFhN2EyYjFlZjI3MTdlYWM1MjQ0NzYwNDVhOWU2YzZiNQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29ya2VyUG9vbC5oPgorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGLCBXb3JrZXJQb29sRGVjcmVhc2Up
Cit7CisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IGNvdW50ZXIgeyAwIH07CisgICAgeworICAg
ICAgICBSZWY8V29ya2VyUG9vbD4gcG9vbCA9IFdvcmtlclBvb2w6OmNyZWF0ZSgpOworICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgICAgIHBvb2wtPnBv
c3RUYXNrKFsmXSB7CisgICAgICAgICAgICAgICAgKytjb3VudGVyOworICAgICAgICAgICAgICAg
IFRocmVhZDo6eWllbGQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIC8v
IFdoZW4gZGVzdHJveWluZyBXb3JrZXJQb29sLCBhbGwgdGhlIHRhc2tzIGFyZSBkcmFpbmVkLgor
ICAgIH0KKyAgICBFWFBFQ1RfRVEoY291bnRlci5sb2FkKCksIDEwMDAwVSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342167</attachid>
            <date>2018-06-07 08:05:59 -0700</date>
            <delta_ts>2018-06-08 01:25:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174569-20180608000558.patch</filename>
            <type>text/plain</type>
            <size>26579</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1ZGI0MjQ0N2M1OGZhMGJmMzdlN2E4
ZTUxNGVhZmY3MzE3NjdhODUuLmUzYzI1OGRmYzY0NzNjZDliYzM3N2UwYzg4MTEzM2ExNmVkMTFm
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTgtMDYtMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFdvcmtlclBvb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBXb3JrZXJQb29sLCB3aGljaCBpcyBhIHRocmVhZCBwb29sIHRoYXQgY29uc2lzdHMgb2YgQXV0
b21hdGljVGhyZWFkLgorICAgICAgICBTaW5jZSBpdCBpcyBiYXNlZCBvbiBBdXRvbWF0aWNUaHJl
YWQsIHRoaXMgV29ya2VyUG9vbCBjYW4gdGFrZSBgdGltZW91dGA6IG9uY2UgYHRpbWVvdXRgCisg
ICAgICAgIHBhc3NlcyB3aXRob3V0IGFueSB0YXNrcywgdGhyZWFkcyBpbiBXb3JrZXJQb29sIHdp
bGwgYmUgZGVzdHJveWVkLgorCisgICAgICAgIFdlIGFkZCBzaG91bGRTbGVlcCBoYW5kbGVyIHRv
IEF1dG9tYXRpY1RocmVhZCB0byBtYWtlIGRlc3RydWN0aW9uIG9mIHRocmVhZHMgaW4gV29ya2Vy
UG9vbCBtb2RlcmF0ZS4KKyAgICAgICAgV2l0aG91dCB0aGlzLCBhbGwgdGhyZWFkcyBhcmUgZGVz
dHJveWVkIGF0IG9uY2UgYWZ0ZXIgYHRpbWVvdXRgIHBhc3Nlcy4KKworICAgICAgICAqIFdURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQu
Y3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OkF1dG9tYXRpY1RocmVhZCk6Cisg
ICAgICAgIChXVEY6OkF1dG9tYXRpY1RocmVhZDo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9BdXRv
bWF0aWNUaHJlYWQuaDoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL1dvcmtlclBvb2wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29y
a2VyUG9vbCk6CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6On5Xb3JrZXJQb29sKToKKyAgICAg
ICAgKFdURjo6V29ya2VyUG9vbDo6c2hvdWxkU2xlZXApOgorICAgICAgICAoV1RGOjpXb3JrZXJQ
b29sOjpwb3N0VGFzayk6CisgICAgICAgICogd3RmL1dvcmtlclBvb2wuaDogQWRkZWQuCisgICAg
ICAgIChXVEY6OldvcmtlclBvb2w6OmNyZWF0ZSk6CisKIDIwMTgtMDYtMDUgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmV0aXJlIERpc3BhdGNoUHRy
LCBhbmQgYWRkIG1vcmUgbW92ZSBzZW1hbnRpY3MgYW5kIHNpbXBsZXIgI2lmcyB0byBvdGhlciBz
bWFydCBwb2ludGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMyN2U2YjQ1ZDY3ZDdlNDQwZjUzMTE4NGY1ZjYy
ZmFiNzQ5MmQxN2QuLjNiNmM1NDZmYTdkZDBiZDUxZDc5ZmY4M2Q5OWE0MTAyZDdiYmJhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0wNi0wNyAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgV29ya2VyUG9vbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NTY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc3RhcnQgdXNp
bmcgV29ya2VyUG9vbCBmb3IgTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQgaW5zdGVhZCBv
ZiBnbGliIHRocmVhZCBwb29sLgorICAgICAgICBUaGlzIG1ha2VzIE5pY29zaWFQYWludGluZ0Vu
Z2luZVRocmVhZGVkIHBsYXRmb3JtLWluZGVwZW5kZW50IGFuZCB1c2FibGUgZm9yIFdpbkNhaXJv
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdF
bmdpbmVUaHJlYWRlZC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0VuZ2luZVRocmVh
ZGVkOjpQYWludGluZ0VuZ2luZVRocmVhZGVkKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5n
RW5naW5lVGhyZWFkZWQ6On5QYWludGluZ0VuZ2luZVRocmVhZGVkKToKKyAgICAgICAgKE5pY29z
aWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OnBhaW50KToKKyAgICAgICAgKE5pY29zaWE6OnNf
dGhyZWFkRnVuYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oOgorCiAyMDE4LTA2LTA2ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBIVFRQIEhlYWRlciB2YWx1ZXMg
dmFsaWRhdGlvbiBpcyB0b28gc3RyaWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4NjJjN2NjYmMyZjA4ZTBjNmVlOGVlMjA3MjgxNTZlZGRlZjdkM2ZmLi4z
YjA0YjcwOGIwZjMzZWZkY2JiNGQ2NTQ4YzdmMjFhYjRjZGE0OTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NSw2ICsxNDUsNyBAQAogCQlEQ0VFMjIw
MTFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5
NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2
RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5
cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CiAJCUUzMTFGQjE3MUYwQTU2OEIwMDNDMDhE
RSAvKiBUaHJlYWRHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzExRkIxNTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICov
OyB9OworCQlFMzg4ODg2RjIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4ODg2RDIwQzkwOTUx
MDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi87IH07CiAJCUUzOEM0MTI1MUVCNEUwNEMwMDQy
OTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLm1t
ICovOyB9OwogCQlFMzhDNDEyODFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhDNDEyNjFFQjRFMDY4
MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi87IH07CiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUND
NCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRl
ckpTT04uY3BwICovOyB9OwpAQCAtNjE0LDYgKzYxNSw4IEBACiAJCUUzMTFGQjE2MUYwQTU2OEIw
MDNDMDhERSAvKiBUaHJlYWRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaHJlYWRHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIwMEFCNDFF
OUE1MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzRDVGODcxRkJFRDY2NzAwQkY2MjVFIC8qIFJlY3Vyc2FibGVMYW1iZGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdXJzYWJsZUxhbWJkYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzg4ODg2RDIwQzkwOTUxMDBFNjMyQkMgLyogV29y
a2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQ
b29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4ODg4NkUyMEM5MDk1MTAw
RTYzMkJDIC8qIFdvcmtlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhDNDEyNDFFQjRF
MDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ1BVVGltZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzhDNDEyNjFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4QzQxMjcxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTEyMiw2ICsxMTI1LDggQEAKIAkJCQkwRjM1MDE2MzFCQjI1OEM4MDBGMEEy
QTMgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCTBGRTQ0NzlBMUI3QUFBMDMwMDk0OThFQiAvKiBX
b3JkTG9jay5jcHAgKi8sCiAJCQkJMEZFNDQ3OUIxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2Nr
LmggKi8sCisJCQkJRTM4ODg4NkQyMEM5MDk1MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICov
LAorCQkJCUUzODg4ODZFMjBDOTA5NTEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmggKi8sCiAJCQkJ
RTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJRTRBMEFE
MzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5oICovLAogCQkJCUZFMDVGQUZFMUZFNTAw
NzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLywKQEAgLTE1NTQsNiArMTU1OSw3IEBA
CiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzg4ODg2RjIwQzkwOTUxMDBFNjMyQkMgLyogV29ya2Vy
UG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRG
NiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTA1RkFGRjFGRTUw
MDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9B
dXRvbWF0aWNUaHJlYWQuY3BwCmluZGV4IDJjNDg2YzQ4MDhhYWUzMjg1OGRkMmIyMjY0NDg0NzI2
YWE5YTk5YjkuLmE1OWM1ZDFiYzk2OTI0MGQ4YzdhZGRjY2MyY2JiNDcxZTllNzAxODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvQXV0b21hdGljVGhyZWFkLmNwcApAQCAtMTA0LDkgKzEwNCwxMCBAQCBib29sIEF1dG9t
YXRpY1RocmVhZENvbmRpdGlvbjo6Y29udGFpbnMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBBdXRv
bWF0aWNUaHJlYWQqCiAgICAgcmV0dXJuIG1fdGhyZWFkcy5jb250YWlucyh0aHJlYWQpOwogfQog
Ci1BdXRvbWF0aWNUaHJlYWQ6OkF1dG9tYXRpY1RocmVhZChjb25zdCBBYnN0cmFjdExvY2tlciYg
bG9ja2VyLCBCb3g8TG9jaz4gbG9jaywgUmVmUHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4g
Y29uZGl0aW9uKQorQXV0b21hdGljVGhyZWFkOjpBdXRvbWF0aWNUaHJlYWQoY29uc3QgQWJzdHJh
Y3RMb2NrZXImIGxvY2tlciwgQm94PExvY2s+IGxvY2ssIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWRD
b25kaXRpb24+IGNvbmRpdGlvbiwgU2Vjb25kcyB0aW1lb3V0KQogICAgIDogbV9sb2NrKGxvY2sp
CiAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkK
IHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAi
OiBBbGxvY2F0ZWQgQXV0b21hdGljVGhyZWFkLlxuIik7CkBAIC0yMDQsMTAgKzIwNSwxMCBAQCB2
b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU2h1dCB0aGUgdGhyZWFkIGRvd24gYWZ0ZXIgYSB0aW1lb3V0
LgogICAgICAgICAgICAgICAgICAgICAgICAgbV9pc1dhaXRpbmcgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBhd29rZW5CeU5vdGlmeSA9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndhaXRGb3IoKm1fbG9jaywgMTBfcyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV93YWl0Q29uZGl0aW9uLndhaXRGb3IoKm1fbG9jaywgbV90
aW1lb3V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmICFhd29rZW5C
eU5vdGlmeSAmJiAhbV9pc1dhaXRpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiB3YWl0Rm9yIHRpbWVkIG91dCwgYnV0IG5vdGlmaWVk
IHZpYSBtX2lzV2FpdGluZyBmbGFnIVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bV9pc1dhaXRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2lzV2FpdGluZyAm
JiBzaG91bGRTbGVlcChsb2NrZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9p
c1dhaXRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRo
aXMpLCAiOiBHb2luZyB0byBzbGVlcCFcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
QXV0b21hdGljVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaAppbmRl
eCAxYjkwNDU0MGM3ZjYwNDZiMDc1MmFmZTk3NWQyMmEzYjRhMmM4YjhhLi4wMDU0NTI0NTA5MTM1
MGJmMDYwYzdjMTU4MzAzMjM2ODVmYmFmZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9B
dXRvbWF0aWNUaHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaApA
QCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBBdXRvbWF0aWNUaHJl
YWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljCiBwcm90ZWN0ZWQ6CiAg
ICAgLy8gVGhpcyBsb2dpY2FsbHkgY3JlYXRlcyB0aGUgdGhyZWFkLCBidXQgaW4gcmVhbGl0eSB0
aGUgdGhyZWFkIHdvbid0IGJlIGNyZWF0ZWQgdW50aWwgc29tZW9uZQogICAgIC8vIGNhbGxzIEF1
dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6bm90aWZ5T25lKCkgb3Igbm90aWZ5QWxsKCkuCi0gICAg
QXV0b21hdGljVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWZQdHI8
QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPik7CisgICAgQXV0b21hdGljVGhyZWFkKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWZQdHI8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9u
PiwgU2Vjb25kcyB0aW1lb3V0ID0gMTBfcyk7CiAgICAgCiAgICAgLy8gVG8gdW5kZXJzdGFuZCBQ
b2xsUmVzdWx0IGFuZCBXb3JrUmVzdWx0LCBpbWFnaW5lIHRoYXQgcG9sbCgpIGFuZCB3b3JrKCkg
YXJlIGJlaW5nIGNhbGxlZCBsaWtlCiAgICAgLy8gc286CkBAIC0xNjgsNiArMTY4LDExIEBAIGNs
YXNzIFdURl9FWFBPUlRfUFJJVkFURSBBdXRvbWF0aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8QXV0b21hdGljCiAgICAgLy8gY2FuIGJlIHN1cmUgdGhhdCB0aGUgZGVmYXVs
dCBvbmVzIGRvbid0IGRvIGFueXRoaW5nIChzbyB5b3UgZG9uJ3QgbmVlZCBhIHN1cGVyIGNhbGwp
LgogICAgIHZpcnR1YWwgdm9pZCB0aHJlYWREaWRTdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCB0
aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CisKKyAgICAvLyBDb250cm9s
IHdoZXRoZXIgdGhpcyBhdXRvbWF0aWMgdGhyZWFkIHNob3VsZCBzbGVlcCB3aGVuIHRpbWVvdXQg
aGFwcGVucy4KKyAgICAvLyBCeSBvdmVycmlkaW5nIHRoaXMgZnVuY3Rpb24sIHdlIGNhbiBjdXN0
b21pemUgaG93IGF1dG9tYXRpYyB0aHJlYWRzIHdpbGwgc2xlZXAuCisgICAgLy8gRm9yIGV4YW1w
bGUsIHdoZW4geW91IGhhdmUgdGhyZWFkIHBvb2wsIHlvdSBjYW4gZGVjcmVhc2UgYWN0aXZlIHRo
cmVhZHMgbW9kZXJhdGVseS4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2xlZXAoY29uc3QgQWJz
dHJhY3RMb2NrZXImKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBBdXRvbWF0aWNUaHJlYWRDb25kaXRpb247CkBAIC0xNzYsNiArMTgxLDcgQEAgY2xh
c3MgV1RGX0VYUE9SVF9QUklWQVRFIEF1dG9tYXRpY1RocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBdXRvbWF0aWMKICAgICAKICAgICBCb3g8TG9jaz4gbV9sb2NrOwogICAgIFJl
ZlB0cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1fY29uZGl0aW9uOworICAgIFNlY29uZHMg
bV90aW1lb3V0OwogICAgIGJvb2wgbV9pc1J1bm5pbmcgeyB0cnVlIH07CiAgICAgYm9vbCBtX2lz
V2FpdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1VuZGVybHlpbmdUaHJlYWQgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA2Y2U2MTdhN2I0ZGNhNDA0OGI1N2EyNjI4NjM2
MWQ0NTc3MzMzYjNhLi4wZjlmNGUxZjJkYTE2YzMxMmMwZGQ1MmQ4ZGJlOTUzYjU1NGQzNDRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjU2LDYgKzI1Niw3IEBAIHNldChXVEZfUFVCTElDX0hF
QURFUlMKICAgICBXaW5kb3dzRXh0cmFzLmgKICAgICBXb3JkTG9jay5oCiAgICAgV29ya1F1ZXVl
LmgKKyAgICBXb3JrZXJQb29sLmgKICAgICBkdG9hLmgKIAogICAgIGR0b2EvYmlnbnVtLWR0b2Eu
aApAQCAtMzkwLDYgKzM5MSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFdhbGxUaW1lLmNwcAog
ICAgIFdvcmRMb2NrLmNwcAogICAgIFdvcmtRdWV1ZS5jcHAKKyAgICBXb3JrZXJQb29sLmNwcAog
ICAgIGR0b2EuY3BwCiAKICAgICBkdG9hL2JpZ251bS1kdG9hLmNjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBvb2wuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI4NzkwNzZkZDdiMzRkY2MyZjdkOThlMGYxY2VjOTBhMWM2OTNjNWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmNwcApAQCAtMCwwICsx
LDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyUG9vbC5oIgorCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBX
b3JrZXJQb29sOjpXb3JrZXIgZmluYWwgOiBwdWJsaWMgQXV0b21hdGljVGhyZWFkIHsKK3B1Ymxp
YzoKKyAgICBmcmllbmQgY2xhc3MgV29ya2VyUG9vbDsKKworICAgIFdvcmtlcihjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyLCBXb3JrZXJQb29sJiBwb29sLCBCb3g8TG9jaz4gbG9jaywgUmVm
UHRyPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gY29uZGl0aW9uLCBTZWNvbmRzIHRpbWVvdXQp
CisgICAgICAgIDogQXV0b21hdGljVGhyZWFkKGxvY2tlciwgbG9jaywgY29uZGl0aW9uLCB0aW1l
b3V0KQorICAgICAgICAsIG1fcG9vbChwb29sKQorICAgIHsKKyAgICB9CisKKyAgICBQb2xsUmVz
dWx0IHBvbGwoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYg
KG1fcG9vbC5tX3Rhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBQb2xsUmVzdWx0
OjpXYWl0OworICAgICAgICBtX3Rhc2sgPSBtX3Bvb2wubV90YXNrcy50YWtlRmlyc3QoKTsKKyAg
ICAgICAgaWYgKCFtX3Rhc2spCisgICAgICAgICAgICByZXR1cm4gUG9sbFJlc3VsdDo6U3RvcDsK
KyAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6Oldvcms7CisgICAgfQorCisgICAgV29ya1Jlc3Vs
dCB3b3JrKCkgZmluYWwKKyAgICB7CisgICAgICAgIG1fdGFzaygpOworICAgICAgICBtX3Rhc2sg
PSBudWxscHRyOworICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6Q29udGludWU7CisgICAgfQor
CisgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIGZpbmFsCisgICAgeworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcigqbV9wb29sLm1fbG9jayk7CisgICAgICAgIG1fcG9vbC5tX251bWJlck9mQWN0
aXZlV29ya2VycysrOworICAgIH0KKworICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBB
YnN0cmFjdExvY2tlciYpIGZpbmFsCisgICAgeworICAgICAgICBtX3Bvb2wubV9udW1iZXJPZkFj
dGl2ZVdvcmtlcnMtLTsKKyAgICB9CisKKyAgICBib29sIHNob3VsZFNsZWVwKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiBsb2NrZXIpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wb29sLnNo
b3VsZFNsZWVwKGxvY2tlcik7CisgICAgfQorCitwcml2YXRlOgorICAgIFdvcmtlclBvb2wmIG1f
cG9vbDsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fdGFzazsKK307CisKK1dvcmtlclBvb2w6Oldv
cmtlclBvb2wodW5zaWduZWQgbnVtYmVyT2ZXb3JrZXJzLCBTZWNvbmRzIHRpbWVvdXQpCisgICAg
OiBtX2xvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKKyAgICAsIG1fY29uZGl0aW9uKEF1dG9tYXRp
Y1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkKK3sK
KyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZXb3JrZXJzOyArK2kpCisgICAgICAgIG1fd29ya2Vycy5hcHBlbmQoYWRv
cHRSZWYoKm5ldyBXb3JrZXIobG9ja2VyLCAqdGhpcywgbV9sb2NrLCBtX2NvbmRpdGlvbiwgdGlt
ZW91dCkpKTsKK30KKworV29ya2VyUG9vbDo6fldvcmtlclBvb2woKQoreworICAgIHsKKyAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fd29ya2Vycy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtX3Rhc2tzLmFwcGVuZChudWxs
cHRyKTsgLy8gVXNlIG51bGwgdGFzayB0byBpbmRpY2F0ZSB0aGF0IHdlIHdhbnQgdGhlIHRocmVh
ZCB0byB0ZXJtaW5hdGUuCisgICAgICAgIG1fY29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsK
KyAgICB9CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3dvcmtlcnMpCisgICAgICAgIHdvcmtl
ci0+am9pbigpOworICAgIEFTU0VSVCghbV9udW1iZXJPZkFjdGl2ZVdvcmtlcnMpOworfQorCiti
b29sIFdvcmtlclBvb2w6OnNob3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKK3sKKyAg
ICBpZiAobV90aW1lb3V0ID4gMF9zICYmIHN0ZDo6aXNpbmYobV90aW1lb3V0KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOworICAgIGlmIChzdGQ6OmlzbmFuKG1fbGFzdFRpbWVvdXRUaW1lKSB8fCAo
Y3VycmVudFRpbWUgPj0gKG1fbGFzdFRpbWVvdXRUaW1lICArIG1fdGltZW91dCkpKSB7CisgICAg
ICAgIG1fbGFzdFRpbWVvdXRUaW1lID0gY3VycmVudFRpbWU7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV29ya2VyUG9vbDo6cG9zdFRh
c2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1f
bG9jayk7CisgICAgbV90YXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAgbV9jb25kaXRp
b24tPm5vdGlmeU9uZShsb2NrZXIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrZXJQb29sLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjVmNGQzNDVkYzE4YTY5YzMwMmM1OTg0MjU0ZDA5MzIyNDBlMmFmMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBvb2wuaApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL0F1dG9tYXRpY1RocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNv
cmVzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xh
c3MgV29ya2VyUG9vbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJQb29sPiB7
CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248
dm9pZCgpPiYmKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+V29ya2VyUG9vbCgpOworCisg
ICAgLy8gSWYgdGltZW91dCBpcyBpbmZpbml0eSwgaXQgbWVhbnMgQXV0b21hdGljVGhyZWFkIHdp
bGwgYmUgbmV2ZXIgYXV0b21hdGljYWxseSBkZXN0cm95ZWQuCisgICAgc3RhdGljIFJlZjxXb3Jr
ZXJQb29sPiBjcmVhdGUodW5zaWduZWQgbnVtYmVyT2ZXb3JrZXJzICA9IFdURjo6bnVtYmVyT2ZQ
cm9jZXNzb3JDb3JlcygpLCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG51bWJlck9mV29ya2VycyA+PSAxKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV29ya2VyUG9vbChudW1iZXJPZldvcmtlcnMsIHRpbWVvdXQpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgY2xhc3MgV29ya2VyOworICAgIGZyaWVuZCBjbGFzcyBX
b3JrZXI7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV29ya2VyUG9vbCh1bnNpZ25lZCBudW1i
ZXJPZldvcmtlcnMsIFNlY29uZHMgdGltZW91dCk7CisKKyAgICBib29sIHNob3VsZFNsZWVwKGNv
bnN0IEFic3RyYWN0TG9ja2VyJik7CisKKyAgICBCb3g8TG9jaz4gbV9sb2NrOworICAgIFJlZlB0
cjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1fY29uZGl0aW9uOworICAgIFNlY29uZHMgbV90
aW1lb3V0OworICAgIE1vbm90b25pY1RpbWUgbV9sYXN0VGltZW91dFRpbWUgeyBNb25vdG9uaWNU
aW1lOjpuYW4oKSB9OworICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzIHsgMCB9
OworICAgIFZlY3RvcjxSZWY8V29ya2VyPj4gbV93b3JrZXJzOworICAgIERlcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+IG1fdGFza3M7Cit9OworCit9CisKK3VzaW5nIFdURjo6V29ya2VyUG9vbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAKaW5kZXggNjQ2
MTdmZjMwYWFkNDQ0ODM2NTU1YTBhYTYwNGZkMDFhN2EyMTc5Yi4uNTY1ZDkyMDFiOWRhOTlhMjJh
MjBiMDdhYTkxZWE0MTBjZTk5MjQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRp
bmdFbmdpbmVUaHJlYWRlZC5jcHAKQEAgLTMzLDI3ICszMywxMCBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKICNpbmNsdWRlICJOaWNvc2lhQnVmZmVyLmgiCiAjaW5jbHVkZSAiTmljb3Np
YVBhaW50aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogCiBuYW1lc3BhY2UgTmljb3NpYSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotc3RydWN0IFRhc2tEYXRhIHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7Ci0KLSAgICBSZWY8QnVmZmVyPiBidWZmZXI7Ci0gICAgUGFpbnRpbmdPcGVyYXRpb25zIHBh
aW50aW5nT3BlcmF0aW9uczsKLX07Ci0KLXZvaWQgc190aHJlYWRGdW5jKGdwb2ludGVyIGRhdGEs
IGdwb2ludGVyKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4gdGFza0RhdGEoc3Rh
dGljX2Nhc3Q8VGFza0RhdGEqPihkYXRhKSk7Ci0KLSAgICBQYWludGluZ0NvbnRleHQ6OnJlcGxh
eSh0YXNrRGF0YS0+YnVmZmVyLCB0YXNrRGF0YS0+cGFpbnRpbmdPcGVyYXRpb25zKTsKLSAgICB0
YXNrRGF0YS0+YnVmZmVyLT5jb21wbGV0ZVBhaW50aW5nKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHBh
aW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyJiBsYXllciwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgbWFwcGVkU291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSwgYm9vbCBz
dXBwb3J0c0FscGhhKQogewogICAgIGNvbnRleHQuc2F2ZSgpOwpAQCAtNzUsMTQgKzU4LDEyIEBA
IHN0YXRpYyB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGlj
c0xheWVyJiBsYXllciwgY29uc3QgSW50CiB9CiAKIFBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OlBh
aW50aW5nRW5naW5lVGhyZWFkZWQoKQorICAgIDogbV93b3JrZXJQb29sKFdvcmtlclBvb2w6OmNy
ZWF0ZSg0KSkKIHsKLSAgICAvLyBGSVhNRTogdGhlc2UgcGFyYW1ldGVycyBzaG91bGQgYmUgZmlu
ZS10dW5lZCwgb3IgbWF5YmUgbWFkZSBjb25maWd1cmFibGUuCi0gICAgbV90aHJlYWRQb29sID0g
Z190aHJlYWRfcG9vbF9uZXcoc190aHJlYWRGdW5jLCBudWxscHRyLCA0LCBUUlVFLCBudWxscHRy
KTsKIH0KIAogUGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6flBhaW50aW5nRW5naW5lVGhyZWFkZWQo
KQogewotICAgIGdfdGhyZWFkX3Bvb2xfZnJlZShtX3RocmVhZFBvb2wsIFRSVUUsIEZBTFNFKTsK
IH0KIAogYm9vbCBQYWludGluZ0VuZ2luZVRocmVhZGVkOjpwYWludChHcmFwaGljc0xheWVyJiBs
YXllciwgUmVmPEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIG1hcHBlZFNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3Qs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpCkBAIC05Niw3ICs3NywxMCBAQCBib29sIFBhaW50aW5nRW5n
aW5lVGhyZWFkZWQ6OnBhaW50KEdyYXBoaWNzTGF5ZXImIGxheWVyLCBSZWY8QnVmZmVyPiYmIGJ1
ZmZlciwgYwogICAgICAgICAgICAgcGFpbnRMYXllcihjb250ZXh0LCBsYXllciwgc291cmNlUmVj
dCwgbWFwcGVkU291cmNlUmVjdCwgdGFyZ2V0UmVjdCwgY29udGVudHNTY2FsZSwgYnVmZmVyLT5z
dXBwb3J0c0FscGhhKCkpOwogICAgICAgICB9KTsKIAotICAgIGdfdGhyZWFkX3Bvb2xfcHVzaCht
X3RocmVhZFBvb2wsIG5ldyBUYXNrRGF0YSB7IFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShwYWlu
dGluZ09wZXJhdGlvbnMpIH0sIG51bGxwdHIpOworICAgIG1fd29ya2VyUG9vbC0+cG9zdFRhc2so
W3BhaW50aW5nT3BlcmF0aW9ucyA9IFdURk1vdmUocGFpbnRpbmdPcGVyYXRpb25zKSwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpXSB7CisgICAgICAgIFBhaW50aW5nQ29udGV4dDo6cmVwbGF5KGJ1
ZmZlciwgcGFpbnRpbmdPcGVyYXRpb25zKTsKKyAgICAgICAgYnVmZmVyLT5jb21wbGV0ZVBhaW50
aW5nKCk7CisgICAgfSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5l
VGhyZWFkZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuaAppbmRleCAzOTFjOGNjM2UyODRhNTdlZGVjYTll
YzEyNzBjY2U0MmJjMGU4ZjVlLi5hZGQxNGVkNWY5NWMzMDIyNzM0ZmY5NDI3NDQ3MjZkNTQ5MGM2
ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oCkBA
IC0yOSw4ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk5pY29zaWFQYWludGlu
Z0VuZ2luZS5oIgotCi10eXBlZGVmIHN0cnVjdCBfR1RocmVhZFBvb2wgR1RocmVhZFBvb2w7Cisj
aW5jbHVkZSA8d3RmL1dvcmtlclBvb2wuaD4KIAogbmFtZXNwYWNlIE5pY29zaWEgewogCkBAIC00
Miw3ICs0MSw3IEBAIGNsYXNzIFBhaW50aW5nRW5naW5lVGhyZWFkZWQgZmluYWwgOiBwdWJsaWMg
UGFpbnRpbmdFbmdpbmUgewogcHJpdmF0ZToKICAgICBib29sIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXImLCBSZWY8QnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCkgb3ZlcnJp
ZGU7CiAKLSAgICBHVGhyZWFkUG9vbCogbV90aHJlYWRQb29sOworICAgIFJlZjxXb3JrZXJQb29s
PiBtX3dvcmtlclBvb2w7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBOaWNvc2lhCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTUzMjlmZmQ2ODg3YTEx
YTkwY2I2MzQ3NjhhZTkyNzRjYzUxZWZjZC4uMTFkN2M0NDhjNTQ4NjFjOTY5OTQ1ZmFhMjhmMDEw
ZjU2YzI3MGJkOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA2LTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBXb3JrZXJQb29sCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ1NjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvV29ya2VyUG9vbC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMTgtMDYtMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CiAKICAgICAgICAgW1dpbl1bTWluaUJyb3dzZXJdIFJlbW92ZSBnTWFpbldpbmRvdyBnbG9iYWwg
dmFyaWFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwZjhmY2FmYzA1YWE3
ZDhlNzcwZjgzNWU5MmNjZWU4ODE4NTc2NzIuLjJlN2QxYzNkODlhMzI1ZWI1ZDlhZWY5NWU4MWZk
ZmM3MjMzYWMwZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTU4LDYgKzE1
OCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvV1RGU3RyaW5nLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9X
ZWFrUHRyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Xb3JrUXVldWUu
Y3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dvcmtlclBvb2wuY3BwCiAp
CiAKICMgRklYTUU6IFRlc3RzL1dURi9SdW5Mb29wLmNwcCBpcyBtaXNzaW5nIGJlY2F1c2UgaXQg
ZG9lc24ndCB3b3JrIGZvciBXaW5kb3dzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMzE2
N2E4OTJhNGJmOTQ2YjgwYWI1NWE3YjU2YTcxMGU4MDkxOWZjLi42MGM2MmEzMDBiOTg3YjM0ZWU0
YzMyOWE1ZDI2MDMyOGU1ZDEwYmRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTkxMiw2
ICsxOTEyLDcgQEAKIAkJRTE5NEUxQkExNzdFNTE0NTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJv
bURpZFJlY2VpdmVSZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTE5NEUxQkMxNzdFNTM0QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5n
RnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gU3RvcExvYWRpbmdGcm9tRGlk
UmVjZWl2ZVJlc3BvbnNlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOURC
OTc4MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmlnYXRvckxhbmd1YWdlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzg4ODg3MDIwQzkwOTgxMDBFNjMyQkMgLyogV29ya2Vy
UG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQb29s
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTBEMzQxRkQ1MENCQzAwRTk4
QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk1M0Y5NTFG
MkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaWduYWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
OEJDMEYyMDQxQzc2MzAwMzg3MTM2IC8qIFVuaXF1ZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI4OTIsNiArMjg5Myw3IEBACiAJCQkJN0NEMEQ1QUExRDU1MzRERTAwMEND
OUUxIC8qIFZhcmlhbnQuY3BwICovLAogCQkJCUJDNTVGNUY4MTRBRDc4RUUwMDQ4NEJFMSAvKiBW
ZWN0b3IuY3BwICovLAogCQkJCTFDQjlCQzM3MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNw
cCAqLywKKwkJCQlFMzg4ODg3MDIwQzkwOTgxMDBFNjMyQkMgLyogV29ya2VyUG9vbC5jcHAgKi8s
CiAJCQkJN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJ
MjY1QUY1NEYxNUQxRTQ4QTAwQjBDQjRBIC8qIFdURlN0cmluZy5jcHAgKi8sCiAJCQkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrZXJQb29sLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
OThlMjhhMWE3YTJiMWVmMjcxN2VhYzUyNDQ3NjA0NWE5ZTZjNmI1Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya2VyUG9vbC5jcHAKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrZXJQb29sLmg+CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYsIFdvcmtlclBvb2xEZWNyZWFzZSkKK3sKKyAg
ICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gY291bnRlciB7IDAgfTsKKyAgICB7CisgICAgICAgIFJl
ZjxXb3JrZXJQb29sPiBwb29sID0gV29ya2VyUG9vbDo6Y3JlYXRlKCk7CisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICAgICAgcG9vbC0+cG9zdFRhc2so
WyZdIHsKKyAgICAgICAgICAgICAgICArK2NvdW50ZXI7CisgICAgICAgICAgICAgICAgVGhyZWFk
Ojp5aWVsZCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gV2hlbiBk
ZXN0cm95aW5nIFdvcmtlclBvb2wsIGFsbCB0aGUgdGFza3MgYXJlIGRyYWluZWQuCisgICAgfQor
ICAgIEVYUEVDVF9FUShjb3VudGVyLmxvYWQoKSwgMTAwMDBVKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="360300"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>