<?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>94294</bug_id>
          
          <creation_ts>2012-08-16 22:22:29 -0700</creation_ts>
          <short_desc>Separate MarkStackThreadSharedData from MarkStack</short_desc>
          <delta_ts>2012-08-22 14:48:59 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>levin+threading</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>697881</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-16 22:22:29 -0700</bug_when>
    <thetext>MarkStackThreadSharedData is soon going to have data to allow for a parallel copying mode too, so to separate our concerns we should split it out into its own set of files and rename it to GCThreadSharedData. This is purely a cosmetic refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697882</commentid>
    <comment_count>1</comment_count>
      <attachid>158996</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-16 22:24:31 -0700</bug_when>
    <thetext>Created attachment 158996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697894</commentid>
    <comment_count>2</comment_count>
      <attachid>158996</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-08-16 22:34:10 -0700</bug_when>
    <thetext>Comment on attachment 158996
Patch

Attachment 158996 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13513904</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697895</commentid>
    <comment_count>3</comment_count>
      <attachid>158996</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-16 22:39:07 -0700</bug_when>
    <thetext>Comment on attachment 158996
Patch

Attachment 158996 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13510884</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697902</commentid>
    <comment_count>4</comment_count>
      <attachid>158996</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-16 22:47:14 -0700</bug_when>
    <thetext>Comment on attachment 158996
Patch

Attachment 158996 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13513908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697906</commentid>
    <comment_count>5</comment_count>
      <attachid>158996</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-16 22:49:11 -0700</bug_when>
    <thetext>Comment on attachment 158996
Patch

Attachment 158996 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13520287</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697920</commentid>
    <comment_count>6</comment_count>
      <attachid>158996</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-16 23:03:37 -0700</bug_when>
    <thetext>Comment on attachment 158996
Patch

Attachment 158996 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13514665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697921</commentid>
    <comment_count>7</comment_count>
      <attachid>158996</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-16 23:05:03 -0700</bug_when>
    <thetext>Comment on attachment 158996
Patch

It looks GCThreadSharedData.cpp file wasn&apos;t added to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698171</commentid>
    <comment_count>8</comment_count>
      <attachid>158996</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-17 03:57:02 -0700</bug_when>
    <thetext>Comment on attachment 158996
Patch

Attachment 158996 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13516748</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702109</commentid>
    <comment_count>9</comment_count>
      <attachid>159981</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-22 11:34:54 -0700</bug_when>
    <thetext>Created attachment 159981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702351</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-22 14:25:19 -0700</bug_when>
    <thetext>rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702373</commentid>
    <comment_count>11</comment_count>
      <attachid>159981</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 14:48:54 -0700</bug_when>
    <thetext>Comment on attachment 159981
Patch

Clearing flags on attachment: 159981

Committed r126354: &lt;http://trac.webkit.org/changeset/126354&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702374</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 14:48:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158996</attachid>
            <date>2012-08-16 22:24:31 -0700</date>
            <delta_ts>2012-08-22 11:34:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94294-20120816222356.patch</filename>
            <type>text/plain</type>
            <size>21170</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1ODU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEyLTA4LTE2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU2VwYXJhdGUgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSBmcm9tIE1hcmtTdGFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhIGlzIHNvb24gZ29pbmcgdG8gaGF2ZSBkYXRhIHRvIGFsbG93IGZv
ciBhIHBhcmFsbGVsIGNvcHlpbmcgCisgICAgICAgIG1vZGUgdG9vLCBzbyB0byBzZXBhcmF0ZSBv
dXIgY29uY2VybnMgd2Ugc2hvdWxkIHNwbGl0IGl0IG91dCBpbnRvIGl0cyBvd24gc2V0IG9mIGZp
bGVzIAorICAgICAgICBhbmQgcmVuYW1lIGl0IHRvIEdDVGhyZWFkU2hhcmVkRGF0YS4gVGhpcyBp
cyBwdXJlbHkgYSBjb3NtZXRpYyByZWZhY3RvcmluZy4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRhcmdldC5wcmk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChIZWFwKToKKyAg
ICAgICAgKiBoZWFwL0xpc3RhYmxlSGFuZGxlci5oOgorICAgICAgICAoTGlzdGFibGVIYW5kbGVy
KToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFj
azo6TWFya1N0YWNrKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjp+TWFya1N0YWNrKToKKyAg
ICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKE1hcmtT
dGFjayk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6c2hhcmVkRGF0YSk6CisgICAgICAgICog
aGVhcC9TbG90VmlzaXRvci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFNsb3RWaXNpdG9y
KToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9yKToKKwogMjAxMi0wOC0x
NiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFN0cnVjdHVyZSBj
aGVjayBob2lzdGluZyBzaG91bGQgYmUgbGVzcyBleHBlbnNpdmUKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyNTg1MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBA
IFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9Db3BpZWRTcGFjZS5jcHAKICAg
ICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAogICAgIGhlYXAvREZHQ29kZUJsb2Nrcy5jcHAK
KyAgICBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAKICAgICBoZWFwL0hhbmRsZVNldC5jcHAK
ICAgICBoZWFwL0hhbmRsZVN0YWNrLmNwcAogICAgIGhlYXAvSGVhcC5jcHAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjU4NTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMjcyLDYgKzI3Miw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQmxvY2tBbGxvY2F0b3IuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NU
aHJlYWRTaGFyZWREYXRhLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NU
aHJlYWRTaGFyZWREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
VGFyZ2V0LnByaQkocmV2aXNpb24gMTI1ODUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaGVhcC9IYW5kbGVTZXQuY3BwIFwKICAgICBoZWFwL0hhbmRsZVN0YWNrLmNwcCBcCiAgICAg
aGVhcC9CbG9ja0FsbG9jYXRvci5jcHAgXAorICAgIGhlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNw
cCBcCiAgICAgaGVhcC9IZWFwLmNwcCBcCiAgICAgaGVhcC9IZWFwVGltZXIuY3BwIFwKICAgICBo
ZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyNTg1
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMzE3LDYg
KzIzMTcsMTQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQmxvY2tBbGxvY2F0b3Iu
aCIKIAkJCQk+CiAJCQk8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAg
IFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxHQ1RocmVhZFNoYXJlZERhdGEuY3BwIgorICAgICAg
ICAgICAgICAgID4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlCisgICAg
ICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEdDVGhyZWFkU2hhcmVkRGF0YS5o
IgorICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgIDwvRmlsZT4KIAkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhlYXAuY3BwIgogCQkJCT4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjU4NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjg5LDYgKzY4OSw5IEBACiAJCUJDRjYwNTE0MEUyMDNFRjgwMEI5QTY0RCAvKiBB
cmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAv
KiBKdW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi87IH07CiAJ
CUJDRkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAv
KiBKdW1wVGFibGUuaCAqLzsgfTsKKwkJQzIxMTIyRTExNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhy
ZWFkU2hhcmVkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjExMjJERTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmNw
cCAqLzsgfTsKKwkJQzIxMTIyRTIxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIxMTIy
REYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyMTEyMkUzMTVERDlBQjMwMDc5
MEUzQSAvKiBNYXJrU3RhY2tJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjExMjJFMDE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0
YWNrSW5saW5lTWV0aG9kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhF
MTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQg
LyogQ29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLzsg
fTsKIAkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQjE1
NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLzsgfTsKQEAgLTE0NDMs
NiArMTQ0Niw5IEBACiAJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKdW1wVGFibGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVt
cFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBUYWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjExMjJERTE1REQ5QUIzMDA3OTBFM0EgLyog
R0NUaHJlYWRTaGFyZWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdDVGhyZWFkU2hhcmVkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMTEyMkRGMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUaHJlYWRTaGFyZWREYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMTEyMkUwMTVERDlBQjMwMDc5MEUzQSAvKiBNYXJrU3Rh
Y2tJbmxpbmVNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtT
dGFja0lubGluZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0MDMw
NTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVw
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQzE1NzU0NEE5MDAy
NDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc2NCw2ICsxNzcwLDkgQEAKIAkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMyMTEyMkRF
MTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3BwICovLAorCQkJCUMyMTEy
MkRGMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCAqLywKKwkJCQlDMjEx
MjJFMDE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lTWV0aG9kcy5oICovLAogCQkJ
CUMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwICovLAogCQkJCUMyRTUy
NkJDMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCAqLywKIAkJCQlDMjVGOEJDQjE1NzU0
NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLywKQEAgLTI1MDQsNyArMjUx
Myw5IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyog
TWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjExMjJFMjE1REQ5QUIzMDA3
OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkU1MjZC
RTE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjEx
MjJFMzE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lTWV0aG9kcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDczLDYgKzM0ODQsNyBA
QAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDQwMTVDNzVGMUQwMDZBNTk3
QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY2Mzk0NTQxNUQwNzA1NTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDMjExMjJFMTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2
aXNpb24gMTI1ODUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJCbG9ja0FsbG9jYXRvci5o
IgogI2luY2x1ZGUgIkRGR0NvZGVCbG9ja3MuaCIKKyNpbmNsdWRlICJHQ1RocmVhZFNoYXJlZERh
dGEuaCIKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgog
I2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCkBAIC03NCw3ICs3NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIZWFwKTsKICAgICBwdWJsaWM6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhOworICAgICAgICBmcmllbmQgY2xhc3MgR0NUaHJlYWRTaGFyZWRE
YXRhOwogICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChjb25zdCBKU1ZhbHVlKTsgLy8gMCBmb3Ig
aW1tZWRpYXRlIHZhbHVlcwogICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChjb25zdCBKU0NlbGwq
KTsKIApAQCAtMjMxLDcgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE1hY2hp
bmVUaHJlYWRzIG1fbWFjaGluZVRocmVhZHM7CiAgICAgICAgIAotICAgICAgICBNYXJrU3RhY2tU
aHJlYWRTaGFyZWREYXRhIG1fc2hhcmVkRGF0YTsKKyAgICAgICAgR0NUaHJlYWRTaGFyZWREYXRh
IG1fc2hhcmVkRGF0YTsKICAgICAgICAgU2xvdFZpc2l0b3IgbV9zbG90VmlzaXRvcjsKIAogICAg
ICAgICBIYW5kbGVTZXQgbV9oYW5kbGVTZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9MaXN0YWJsZUhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAkocmV2aXNpb24gMTI1ODUyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTGlzdGFibGVIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICAvLyBBbGxvdyB0aGVzZSBjbGFz
c2VzIHRvIHVzZSBMaXN0YWJsZUhhbmRsZXI6Okxpc3QuCiAgICAgZnJpZW5kIGNsYXNzIE1hcmtT
dGFjazsKLSAgICBmcmllbmQgY2xhc3MgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTsKKyAgICBm
cmllbmQgY2xhc3MgR0NUaHJlYWRTaGFyZWREYXRhOwogICAgIGZyaWVuZCBjbGFzcyBTbG90Vmlz
aXRvcjsKICAgICAKICAgICBjbGFzcyBMaXN0IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTI1ODUyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCisjaW5jbHVk
ZSAiTWFya1N0YWNrSW5saW5lTWV0aG9kcy5oIgogCiAjaW5jbHVkZSAiQ29waWVkU3BhY2UuaCIK
ICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCIKQEAgLTIyMyw4OSArMjI0LDIy
IEBAIHZvaWQgTWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbSgKICAgICAgICAgYXBw
ZW5kKG90aGVyLnJlbW92ZUxhc3QoKSk7CiB9CiAKLSNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi12
b2lkIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6OnJlc2V0Q2hpbGRyZW4oKQotewotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hcmtpbmdUaHJlYWRzTWFya1N0YWNrLnNpemUoKTsg
KytpKQotICAgICAgICBtX21hcmtpbmdUaHJlYWRzTWFya1N0YWNrW2ldLT5yZXNldCgpOwotfQot
Ci1zaXplX3QgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6Y2hpbGRWaXNpdENvdW50KCkKLXsg
ICAgICAgCi0gICAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX21hcmtpbmdUaHJlYWRzTWFya1N0YWNrLnNpemUoKTsgKytpKQotICAgICAg
ICByZXN1bHQgKz0gbV9tYXJraW5nVGhyZWFkc01hcmtTdGFja1tpXS0+dmlzaXRDb3VudCgpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6
bWFya2luZ1RocmVhZE1haW4oU2xvdFZpc2l0b3IqIHNsb3RWaXNpdG9yKQotewotICAgIFdURjo6
cmVnaXN0ZXJHQ1RocmVhZCgpOwotICAgIHsKLSAgICAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBl
bmFibGVyKCpzbG90VmlzaXRvcik7Ci0gICAgICAgIHNsb3RWaXNpdG9yLT5kcmFpbkZyb21TaGFy
ZWQoU2xvdFZpc2l0b3I6OlNsYXZlRHJhaW4pOwotICAgIH0KLSAgICBkZWxldGUgc2xvdFZpc2l0
b3I7Ci19Ci0KLXZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6bWFya2luZ1RocmVhZFN0
YXJ0RnVuYyh2b2lkKiBteVZpc2l0b3IpCi17ICAgICAgICAgICAgICAgCi0gICAgU2xvdFZpc2l0
b3IqIHNsb3RWaXNpdG9yID0gc3RhdGljX2Nhc3Q8U2xvdFZpc2l0b3IqPihteVZpc2l0b3IpOwot
Ci0gICAgc2xvdFZpc2l0b3ItPnNoYXJlZERhdGEoKS5tYXJraW5nVGhyZWFkTWFpbihzbG90Vmlz
aXRvcik7Ci19CitNYXJrU3RhY2s6Ok1hcmtTdGFjayhHQ1RocmVhZFNoYXJlZERhdGEmIHNoYXJl
ZCkKKyAgICA6IG1fc3RhY2soc2hhcmVkLm1fc2VnbWVudEFsbG9jYXRvcikKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgLCBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbihmYWxz
ZSkKKyAgICAsIG1faXNEcmFpbmluZyhmYWxzZSkKICNlbmRpZgotCi1NYXJrU3RhY2tUaHJlYWRT
aGFyZWREYXRhOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKLSAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQotICAgICwgbV9jb3BpZWRTcGFj
ZSgmZ2xvYmFsRGF0YS0+aGVhcC5tX3N0b3JhZ2VTcGFjZSkKKyAgICAsIG1fdmlzaXRDb3VudCgw
KQorICAgICwgbV9pc0luUGFyYWxsZWxNb2RlKGZhbHNlKQorICAgICwgbV9zaGFyZWQoc2hhcmVk
KQogICAgICwgbV9zaG91bGRIYXNoQ29uc3QoZmFsc2UpCi0gICAgLCBtX3NoYXJlZE1hcmtTdGFj
ayhtX3NlZ21lbnRBbGxvY2F0b3IpCi0gICAgLCBtX251bWJlck9mQWN0aXZlUGFyYWxsZWxNYXJr
ZXJzKDApCi0gICAgLCBtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQoZmFsc2UpCiB7Ci0jaWYg
RU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBPcHRpb25z
OjpudW1iZXJPZkdDTWFya2VycygpOyArK2kpIHsKLSAgICAgICAgU2xvdFZpc2l0b3IqIHNsb3RW
aXNpdG9yID0gbmV3IFNsb3RWaXNpdG9yKCp0aGlzKTsKLSAgICAgICAgbV9tYXJraW5nVGhyZWFk
c01hcmtTdGFjay5hcHBlbmQoc2xvdFZpc2l0b3IpOwotICAgICAgICBtX21hcmtpbmdUaHJlYWRz
LmFwcGVuZChjcmVhdGVUaHJlYWQobWFya2luZ1RocmVhZFN0YXJ0RnVuYywgc2xvdFZpc2l0b3Is
ICJKYXZhU2NyaXB0Q29yZTo6TWFya2luZyIpKTsKLSAgICAgICAgQVNTRVJUKG1fbWFya2luZ1Ro
cmVhZHMubGFzdCgpKTsKLSAgICB9Ci0jZW5kaWYKIH0KIAotTWFya1N0YWNrVGhyZWFkU2hhcmVk
RGF0YTo6fk1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEoKQorTWFya1N0YWNrOjp+TWFya1N0YWNr
KCkKIHsKLSNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpICAgIAotICAgIC8vIERlc3Ryb3kgb3VyIG1h
cmtpbmcgdGhyZWFkcy4KLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX21hcmtp
bmdMb2NrKTsKLSAgICAgICAgbV9wYXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0ID0gdHJ1ZTsKLSAg
ICAgICAgbV9tYXJraW5nQ29uZGl0aW9uLmJyb2FkY2FzdCgpOwotICAgIH0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9tYXJraW5nVGhyZWFkcy5zaXplKCk7ICsraSkKLSAgICAgICAg
d2FpdEZvclRocmVhZENvbXBsZXRpb24obV9tYXJraW5nVGhyZWFkc1tpXSk7Ci0jZW5kaWYKLX0K
LSAgICAKLXZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6cmVzZXQoKQotewotICAgIEFT
U0VSVCghbV9udW1iZXJPZkFjdGl2ZVBhcmFsbGVsTWFya2Vycyk7Ci0gICAgQVNTRVJUKCFtX3Bh
cmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQpOwotICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFjay5p
c0VtcHR5KCkpOwotICAgIAotI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICBtX3NlZ21lbnRB
bGxvY2F0b3Iuc2hyaW5rUmVzZXJ2ZSgpOwotICAgIG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKLSNl
bHNlCi0gICAgQVNTRVJUKG1fb3BhcXVlUm9vdHMuaXNFbXB0eSgpKTsKLSNlbmRpZgotICAgIG1f
d2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMucmVtb3ZlQWxsKCk7Ci0KLSAgICBpZiAobV9zaG91bGRI
YXNoQ29uc3QpIHsKLSAgICAgICAgbV9nbG9iYWxEYXRhLT5yZXNldE5ld1N0cmluZ3NTaW5jZUxh
c3RIYXNoQ29uc3QoKTsKLSAgICAgICAgbV9zaG91bGRIYXNoQ29uc3QgPSBmYWxzZTsKLSAgICB9
CisgICAgQVNTRVJUKG1fc3RhY2suaXNFbXB0eSgpKTsKIH0KIAogdm9pZCBNYXJrU3RhY2s6OnNl
dHVwKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCShyZXZpc2lv
biAxMjU4NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBD
b25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgTWFy
a1N0YWNrOworICAgIGNsYXNzIEdDVGhyZWFkU2hhcmVkRGF0YTsKICAgICBjbGFzcyBQYXJhbGxl
bE1vZGVFbmFibGVyOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNsb3RWaXNpdG9y
OwpAQCAtMTkyLDU3ICsxOTMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9Owog
Ci0gICAgY2xhc3MgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSB7Ci0gICAgcHVibGljOgotICAg
ICAgICBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKEpTR2xvYmFsRGF0YSopOwotICAgICAgICB+
TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSgpOwotICAgICAgICAKLSAgICAgICAgdm9pZCByZXNl
dCgpOwotCi0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgICAgICB2b2lkIHJlc2V0Q2hpbGRy
ZW4oKTsKLSAgICAgICAgc2l6ZV90IGNoaWxkVmlzaXRDb3VudCgpOwotICAgICAgICBzaXplX3Qg
Y2hpbGREdXBTdHJpbmdzKCk7Ci0jZW5kaWYKLSAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBm
cmllbmQgY2xhc3MgTWFya1N0YWNrOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7
Ci0KLSNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgICAgIHZvaWQgbWFya2luZ1RocmVhZE1h
aW4oU2xvdFZpc2l0b3IqKTsKLSAgICAgICAgc3RhdGljIHZvaWQgbWFya2luZ1RocmVhZFN0YXJ0
RnVuYyh2b2lkKiBoZWFwKTsKLSNlbmRpZgotCi0gICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9i
YWxEYXRhOwotICAgICAgICBDb3BpZWRTcGFjZSogbV9jb3BpZWRTcGFjZTsKLSAgICAgICAgCi0g
ICAgICAgIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3IgbV9zZWdtZW50QWxsb2NhdG9yOwotICAg
ICAgICAKLSAgICAgICAgYm9vbCBtX3Nob3VsZEhhc2hDb25zdDsKLQotICAgICAgICBWZWN0b3I8
VGhyZWFkSWRlbnRpZmllcj4gbV9tYXJraW5nVGhyZWFkczsKLSAgICAgICAgVmVjdG9yPE1hcmtT
dGFjayo+IG1fbWFya2luZ1RocmVhZHNNYXJrU3RhY2s7Ci0gICAgICAgIAotICAgICAgICBNdXRl
eCBtX21hcmtpbmdMb2NrOwotICAgICAgICBUaHJlYWRDb25kaXRpb24gbV9tYXJraW5nQ29uZGl0
aW9uOwotICAgICAgICBNYXJrU3RhY2tBcnJheSBtX3NoYXJlZE1hcmtTdGFjazsKLSAgICAgICAg
dW5zaWduZWQgbV9udW1iZXJPZkFjdGl2ZVBhcmFsbGVsTWFya2VyczsKLSAgICAgICAgYm9vbCBt
X3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQ7Ci0KLSAgICAgICAgTXV0ZXggbV9vcGFxdWVSb290
c0xvY2s7Ci0gICAgICAgIEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVlUm9vdHM7Ci0KLSAgICAgICAg
TGlzdGFibGVIYW5kbGVyPFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI+OjpMaXN0IG1fd2Vha1JlZmVy
ZW5jZUhhcnZlc3RlcnM7Ci0gICAgICAgIExpc3RhYmxlSGFuZGxlcjxVbmNvbmRpdGlvbmFsRmlu
YWxpemVyPjo6TGlzdCBtX3VuY29uZGl0aW9uYWxGaW5hbGl6ZXJzOwotICAgIH07Ci0KICAgICBj
bGFzcyBNYXJrU3RhY2sgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrU3RhY2sp
OwogICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOyAvLyBBbGxvd2VkIHRvIG1h
cmsgYSBKU1ZhbHVlKiBvciBKU0NlbGwqKiBkaXJlY3RseS4KIAogICAgIHB1YmxpYzoKLSAgICAg
ICAgTWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmKTsKKyAgICAgICAgTWFya1N0
YWNrKEdDVGhyZWFkU2hhcmVkRGF0YSYpOwogICAgICAgICB+TWFya1N0YWNrKCk7CiAKICAgICAg
ICAgdm9pZCBhcHBlbmQoQ29uc2VydmF0aXZlUm9vdHMmKTsKQEAgLTI1OSw3ICsyMTUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBjb250YWluc09wYXF1ZVJvb3Qodm9pZCopOwog
ICAgICAgICBpbnQgb3BhcXVlUm9vdENvdW50KCk7CiAKLSAgICAgICAgTWFya1N0YWNrVGhyZWFk
U2hhcmVkRGF0YSYgc2hhcmVkRGF0YSgpIHsgcmV0dXJuIG1fc2hhcmVkOyB9CisgICAgICAgIEdD
VGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkRGF0YSgpIHsgcmV0dXJuIG1fc2hhcmVkOyB9CiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fc3RhY2suaXNFbXB0eSgpOyB9CiAKICAgICAg
ICAgdm9pZCBzZXR1cCgpOwpAQCAtMjcxLDE1ICsyMjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVlRhYmxlU3BlY3RydW0gbV92aXNpdGVkVHlwZUNvdW50czsKICNlbmRpZgogCi0gICAg
ICAgIHZvaWQgYWRkV2Vha1JlZmVyZW5jZUhhcnZlc3RlcihXZWFrUmVmZXJlbmNlSGFydmVzdGVy
KiB3ZWFrUmVmZXJlbmNlSGFydmVzdGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX3NoYXJl
ZC5tX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLmFkZFRocmVhZFNhZmUod2Vha1JlZmVyZW5jZUhh
cnZlc3Rlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgYWRkVW5jb25kaXRp
b25hbEZpbmFsaXplcihVbmNvbmRpdGlvbmFsRmluYWxpemVyKiB1bmNvbmRpdGlvbmFsRmluYWxp
emVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX3NoYXJlZC5tX3VuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzLmFkZFRocmVhZFNhZmUodW5jb25kaXRpb25hbEZpbmFsaXplcik7Ci0gICAgICAgIH0K
KyAgICAgICAgdm9pZCBhZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIqKTsKKyAgICAgICAgdm9pZCBhZGRVbmNvbmRpdGlvbmFsRmluYWxpemVyKFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIqKTsKIAogI2lmIEVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQogICAg
ICAgICBpbmxpbmUgdm9pZCByZXNldENoaWxkQ291bnQoKSB7IG1fbG9nQ2hpbGRDb3VudCA9IDA7
IH0KQEAgLTMyOCw3ICsyNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90IG1f
dmlzaXRDb3VudDsKICAgICAgICAgYm9vbCBtX2lzSW5QYXJhbGxlbE1vZGU7CiAgICAgICAgIAot
ICAgICAgICBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhJiBtX3NoYXJlZDsKKyAgICAgICAgR0NU
aHJlYWRTaGFyZWREYXRhJiBtX3NoYXJlZDsKIAogICAgICAgICBib29sIG1fc2hvdWxkSGFzaENv
bnN0OyAvLyBMb2NhbCBwZXItdGhyZWFkIGNvcHkgb2Ygc2hhcmVkIGZsYWcgZm9yIHBlcmZvcm1h
bmNlIHJlYXNvbnMKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBKU1ZhbHVl
PiBVbmlxdWVTdHJpbmdNYXA7CkBAIC0zMzksNjMgKzI4OCw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2VuZGlmCiAgICAgfTsKIAotICAgIGlubGluZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayhNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWQpCi0gICAgICAgIDogbV9zdGFjayhzaGFyZWQubV9z
ZWdtZW50QWxsb2NhdG9yKQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgLCBtX2lzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbihmYWxzZSkKLSAgICAgICAgLCBtX2lzRHJhaW5p
bmcoZmFsc2UpCi0jZW5kaWYKLSAgICAgICAgLCBtX3Zpc2l0Q291bnQoMCkKLSAgICAgICAgLCBt
X2lzSW5QYXJhbGxlbE1vZGUoZmFsc2UpCi0gICAgICAgICwgbV9zaGFyZWQoc2hhcmVkKQotICAg
ICAgICAsIG1fc2hvdWxkSGFzaENvbnN0KGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgTWFya1N0YWNrOjp+TWFya1N0YWNrKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3N0YWNr
LmlzRW1wdHkoKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya1N0YWNrOjphZGRPcGFx
dWVSb290KHZvaWQqIHJvb3QpCi0gICAgewotI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICAg
ICAgaWYgKE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzKCkgPT0gMSkgewotICAgICAgICAgICAg
Ly8gUHV0IGRpcmVjdGx5IGludG8gdGhlIHNoYXJlZCBIYXNoU2V0LgotICAgICAgICAgICAgbV9z
aGFyZWQubV9vcGFxdWVSb290cy5hZGQocm9vdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgLy8gUHV0IGludG8gdGhlIGxvY2FsIHNldCwgYnV0IG1lcmdlIHdpdGgg
dGhlIHNoYXJlZCBvbmUgZXZlcnkgb25jZSBpbgotICAgICAgICAvLyBhIHdoaWxlIHRvIG1ha2Ug
c3VyZSB0aGF0IHRoZSBsb2NhbCBzZXRzIGRvbid0IGdyb3cgdG9vIGxhcmdlLgotICAgICAgICBt
ZXJnZU9wYXF1ZVJvb3RzSWZQcm9maXRhYmxlKCk7Ci0gICAgICAgIG1fb3BhcXVlUm9vdHMuYWRk
KHJvb3QpOwotI2Vsc2UKLSAgICAgICAgbV9vcGFxdWVSb290cy5hZGQocm9vdCk7Ci0jZW5kaWYK
LSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBNYXJrU3RhY2s6OmNvbnRhaW5zT3BhcXVlUm9vdCh2
b2lkKiByb290KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzSW5QYXJhbGxlbE1vZGUpOwot
I2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICAgICAgQVNTRVJUKG1fb3BhcXVlUm9vdHMuaXNF
bXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIG1fc2hhcmVkLm1fb3BhcXVlUm9vdHMuY29udGFpbnMo
cm9vdCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbV9vcGFxdWVSb290cy5jb250YWlucyhyb290
KTsKLSNlbmRpZgotICAgIH0KLQotICAgIGlubGluZSBpbnQgTWFya1N0YWNrOjpvcGFxdWVSb290
Q291bnQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzSW5QYXJhbGxlbE1vZGUpOwotI2lm
IEVOQUJMRShQQVJBTExFTF9HQykKLSAgICAgICAgQVNTRVJUKG1fb3BhcXVlUm9vdHMuaXNFbXB0
eSgpKTsKLSAgICAgICAgcmV0dXJuIG1fc2hhcmVkLm1fb3BhcXVlUm9vdHMuc2l6ZSgpOwotI2Vs
c2UKLSAgICAgICAgcmV0dXJuIG1fb3BhcXVlUm9vdHMuc2l6ZSgpOwotI2VuZGlmCi0gICAgfQot
CiAgICAgaW5saW5lIHZvaWQgTWFya1N0YWNrQXJyYXk6OmFwcGVuZChjb25zdCBKU0NlbGwqIGNl
bGwpCiAgICAgewogICAgICAgICBpZiAobV90b3AgPT0gbV9zZWdtZW50Q2FwYWNpdHkpCkBAIC00
MjksNTEgKzMyMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV90b3AgKyBt
X3NlZ21lbnRDYXBhY2l0eSAqIG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzOwogICAgIH0KIAot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChKU1ZhbHVlKiBzbG90LCBz
aXplX3QgY291bnQpCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUmIHZhbHVlID0gc2xvdFtpXTsKLSAgICAgICAg
ICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBp
bnRlcm5hbEFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kVW5iYXJyaWVyZWRQ
b2ludGVyKFQqKiBzbG90KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNsb3QpOwotICAgICAgICBK
U0NlbGwqIGNlbGwgPSAqc2xvdDsKLSAgICAgICAgaWYgKGNlbGwpCi0gICAgICAgICAgICBpbnRl
cm5hbEFwcGVuZChjZWxsKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIE1h
cmtTdGFjazo6YXBwZW5kKEpTVmFsdWUqIHNsb3QpCi0gICAgewotICAgICAgICBBU1NFUlQoc2xv
dCk7Ci0gICAgICAgIGludGVybmFsQXBwZW5kKCpzbG90KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmRVbmJhcnJpZXJlZFZhbHVlKEpTVmFsdWUqIHNs
b3QpCi0gICAgewotICAgICAgICBBU1NFUlQoc2xvdCk7Ci0gICAgICAgIGludGVybmFsQXBwZW5k
KCpzbG90KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBl
bmQoSlNDZWxsKiogc2xvdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzbG90KTsKLSAgICAgICAg
aW50ZXJuYWxBcHBlbmQoKnNsb3QpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBN
YXJrU3RhY2s6OmludGVybmFsQXBwZW5kKEpTVmFsdWUgdmFsdWUpCi0gICAgewotICAgICAgICBB
U1NFUlQodmFsdWUpOwotICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBpbnRlcm5hbEFwcGVuZCh2YWx1ZS5hc0NlbGwoKSk7Ci0gICAgfQot
CiAgICAgY2xhc3MgUGFyYWxsZWxNb2RlRW5hYmxlciB7CiAgICAgcHVibGljOgogICAgICAgICBQ
YXJhbGxlbE1vZGVFbmFibGVyKE1hcmtTdGFjayYgc3RhY2spCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHJldmlzaW9uIDEyNTg1MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1
ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAiQ29waWVkU3BhY2UuaCIKICNpbmNsdWRlICJNYXJrU3Rh
Y2suaCIKKyNpbmNsdWRlICJNYXJrU3RhY2tJbmxpbmVNZXRob2RzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgR0NUaHJlYWRTaGFyZWREYXRhOwogCiBjbGFzcyBT
bG90VmlzaXRvciA6IHB1YmxpYyBNYXJrU3RhY2sgewogICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9v
dFZpc2l0b3I7CiBwdWJsaWM6Ci0gICAgU2xvdFZpc2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVk
RGF0YSYpOworICAgIFNsb3RWaXNpdG9yKEdDVGhyZWFkU2hhcmVkRGF0YSYpOwogCiAgICAgdm9p
ZCBkb25hdGUoKQogICAgIHsKQEAgLTg1LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBDb3BpZWRB
bGxvY2F0b3IgbV9jb3BpZWRBbGxvY2F0b3I7CiB9OwogCi1pbmxpbmUgU2xvdFZpc2l0b3I6OlNs
b3RWaXNpdG9yKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmIHNoYXJlZCkKK2lubGluZSBTbG90
VmlzaXRvcjo6U2xvdFZpc2l0b3IoR0NUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWQpCiAgICAgOiBN
YXJrU3RhY2soc2hhcmVkKQogewogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159981</attachid>
            <date>2012-08-22 11:34:54 -0700</date>
            <delta_ts>2012-08-22 14:48:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94294-20120822113452.patch</filename>
            <type>text/plain</type>
            <size>34141</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2MzI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBA
CisyMDEyLTA4LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU2VwYXJhdGUgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSBmcm9tIE1hcmtTdGFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhIGlzIHNvb24gZ29pbmcgdG8gaGF2ZSBkYXRhIHRvIGFsbG93IGZv
ciBhIHBhcmFsbGVsIGNvcHlpbmcgCisgICAgICAgIG1vZGUgdG9vLCBzbyB0byBzZXBhcmF0ZSBv
dXIgY29uY2VybnMgd2Ugc2hvdWxkIHNwbGl0IGl0IG91dCBpbnRvIGl0cyBvd24gc2V0IG9mIGZp
bGVzIAorICAgICAgICBhbmQgcmVuYW1lIGl0IHRvIEdDVGhyZWFkU2hhcmVkRGF0YS4gRm9yIG5v
dyB0aGlzIGlzIHB1cmVseSBhIGNvc21ldGljIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6R0NUaHJlYWRTaGFyZWRE
YXRhOjpyZXNldENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6R0NUaHJlYWRTaGFyZWREYXRhOjpj
aGlsZFZpc2l0Q291bnQpOgorICAgICAgICAoSlNDOjpHQ1RocmVhZFNoYXJlZERhdGE6Om1hcmtp
bmdUaHJlYWRNYWluKToKKyAgICAgICAgKEpTQzo6R0NUaHJlYWRTaGFyZWREYXRhOjptYXJraW5n
VGhyZWFkU3RhcnRGdW5jKToKKyAgICAgICAgKEpTQzo6R0NUaHJlYWRTaGFyZWREYXRhOjpHQ1Ro
cmVhZFNoYXJlZERhdGEpOgorICAgICAgICAoSlNDOjpHQ1RocmVhZFNoYXJlZERhdGE6On5HQ1Ro
cmVhZFNoYXJlZERhdGEpOgorICAgICAgICAoSlNDOjpHQ1RocmVhZFNoYXJlZERhdGE6OnJlc2V0
KToKKyAgICAgICAgKiBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChHQ1RocmVhZFNoYXJlZERhdGEpOgorICAgICAgICAqIGhlYXAvSGVh
cC5oOgorICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9MaXN0YWJsZUhhbmRsZXIuaDoK
KyAgICAgICAgKExpc3RhYmxlSGFuZGxlcik6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3Bw
OgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6Ok1hcmtTdGFjayk6CisgICAgICAgIChKU0M6Ok1h
cmtTdGFjazo6fk1hcmtTdGFjayk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChNYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6
OnNoYXJlZERhdGEpOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrSW5saW5lTWV0aG9kcy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6YXBwZW5kKToK
KyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjphcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYXJrU3RhY2s6OmFwcGVuZFVuYmFycmllcmVkVmFsdWUpOgorICAgICAgICAo
SlNDOjpNYXJrU3RhY2s6OmludGVybmFsQXBwZW5kKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
OjphZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjph
ZGRVbmNvbmRpdGlvbmFsRmluYWxpemVyKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjphZGRP
cGFxdWVSb290KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjpjb250YWluc09wYXF1ZVJvb3Qp
OgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6Om9wYXF1ZVJvb3RDb3VudCk6CisgICAgICAgICog
aGVhcC9TbG90VmlzaXRvci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFNsb3RWaXNpdG9y
KToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9yKToKKwogMjAxMi0wOC0y
MiAgR2Fib3IgQmFsbGFiYXMgIDxnYWJvcmJAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEZp
eCBKU0MgYnVpbGQgd2hlbiBERkctSklUIGlzIGRpc2FibGVkCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjYzMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBT
RVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvQ29waWVkU3BhY2UuY3BwCiAgICAg
aGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKICAgICBoZWFwL0RGR0NvZGVCbG9ja3MuY3BwCisg
ICAgaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwCiAgICAgaGVhcC9IYW5kbGVTZXQuY3BwCiAg
ICAgaGVhcC9IYW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI2MzE5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTI3Myw2ICsyNzMsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVUeXBlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9CbG9ja0FsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Jsb2NrQWxsb2NhdG9yLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhy
ZWFkU2hhcmVkRGF0YS5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhy
ZWFkU2hhcmVkRGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgXApAQCAtMjg0LDYgKzI4Niw3IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
Y2hpbmVTdGFja01hcmtlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3Rh
Y2suY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCBcCisgICAg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrSW5saW5lTWV0aG9kcy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3IuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rhcmdl
dC5wcmkJKHJldmlzaW9uIDEyNjMxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhl
YXAvSGFuZGxlU2V0LmNwcCBcCiAgICAgaGVhcC9IYW5kbGVTdGFjay5jcHAgXAogICAgIGhlYXAv
QmxvY2tBbGxvY2F0b3IuY3BwIFwKKyAgICBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAgXAog
ICAgIGhlYXAvSGVhcC5jcHAgXAogICAgIGhlYXAvSGVhcFRpbWVyLmNwcCBcCiAgICAgaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMjYzMTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjMyNiw2ICsyMzI2
LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGhlYXBcR0NUaHJlYWRTaGFyZWREYXRhLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorICAgIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxHQ1RocmVhZFNoYXJlZERhdGEu
aCIKKyAgICAJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5caGVhcFxIZWFwLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0yMzkwLDYgKzIzOTgsMTAg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
aGVhcFxNYXJrU3RhY2tJbmxpbmVNZXRob2RzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcU3Ryb25nLmgiCiAJCQkJPgogCQkJPC9G
aWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNjMxOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02OTAsNiArNjkwLDkgQEAKIAkJQkNGNjA1MTQw
RTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNGRDhD
OTIwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVt
cFRhYmxlLmNwcCAqLzsgfTsKIAkJQkNGRDhDOTMwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRDhD
OTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovOyB9OworCQlDMjExMjJFMTE1REQ5
QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTEyMkRFMTVERDlBQjMwMDc5MEUzQSAvKiBH
Q1RocmVhZFNoYXJlZERhdGEuY3BwICovOyB9OworCQlDMjExMjJFMjE1REQ5QUIzMDA3OTBFM0Eg
LyogR0NUaHJlYWRTaGFyZWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjExMjJERjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWRE
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QzIxMTIyRTMxNUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZU1ldGhvZHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTEyMkUwMTVERDlB
QjMwMDc5MEUzQSAvKiBNYXJrU3RhY2tJbmxpbmVNZXRob2RzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzIyQjMxQjkxNDA1NzdENzAwREI0NzVB
IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNDAz
MDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyog
Q29waWVkU3BhY2UuY3BwICovOyB9OwogCQlDMjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5j
cmVtZW50YWxTd2VlcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
Y3BwICovOyB9OwpAQCAtMTQ0Nyw2ICsxNDUwLDkgQEAKIAkJQkNGNjA1MTIwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJnTGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4
NDggLyogSnVtcFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEp1bXBUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRkQ4QzkxMEVF
QjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSnVtcFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMTEyMkRF
MTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NUaHJlYWRTaGFyZWREYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxMTIyREYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFk
U2hhcmVkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1RocmVhZFNo
YXJlZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxMTIyRTAxNUREOUFC
MzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFya1N0YWNrSW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyog
SW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzcyLDYgKzE3NzgsOSBAQAogCQkxNDJFMzEyQTEzNEZG
MEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQzIxMTIyREUxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0
YS5jcHAgKi8sCisJCQkJQzIxMTIyREYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVk
RGF0YS5oICovLAorCQkJCUMyMTEyMkUwMTVERDlBQjMwMDc5MEUzQSAvKiBNYXJrU3RhY2tJbmxp
bmVNZXRob2RzLmggKi8sCiAJCQkJQzJFNTI2QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1l
ci5jcHAgKi8sCiAJCQkJQzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oICov
LAogCQkJCUMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
ICovLApAQCAtMjUxMyw3ICsyNTIyLDkgQEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIg
LyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRUFEMkZDMTRGMDI0OTgw
MEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjkxNkMy
MTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMyMTEyMkUyMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyRTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUMyMTEyMkUzMTVERDlBQjMwMDc5MEUzQSAvKiBNYXJrU3RhY2tJbmxp
bmVNZXRob2RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEg
LyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZG
NUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEMzRTcwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
QEAgLTM0ODUsNiArMzQ5Niw3IEBACiAJCQkJRkU0QTMzMUYxNUJEMkUwNzAwNkY1NEYzIC8qIFZN
SW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDQwMTVDNzVGMUQwMDZBNTk3
QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY2Mzk0NTQxNUQwNzA1NTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDMjExMjJFMTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NU
aHJlYWRTaGFyZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdDVGhyZWFkU2hhcmVkRGF0
YS5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTWFya1N0YWNrLmgi
CisjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShQQVJBTExFTF9HQykKK3ZvaWQgR0NUaHJl
YWRTaGFyZWREYXRhOjpyZXNldENoaWxkcmVuKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9tYXJraW5nVGhyZWFkc01hcmtTdGFjay5zaXplKCk7ICsraSkKKyAgICAgICAgbV9t
YXJraW5nVGhyZWFkc01hcmtTdGFja1tpXS0+cmVzZXQoKTsKK30KKworc2l6ZV90IEdDVGhyZWFk
U2hhcmVkRGF0YTo6Y2hpbGRWaXNpdENvdW50KCkKK3sgICAgICAgCisgICAgdW5zaWduZWQgbG9u
ZyByZXN1bHQgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hcmtpbmdUaHJl
YWRzTWFya1N0YWNrLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQgKz0gbV9tYXJraW5nVGhy
ZWFkc01hcmtTdGFja1tpXS0+dmlzaXRDb3VudCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgR0NUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkTWFpbihTbG90VmlzaXRvciog
c2xvdFZpc2l0b3IpCit7CisgICAgV1RGOjpyZWdpc3RlckdDVGhyZWFkKCk7CisgICAgeworICAg
ICAgICBQYXJhbGxlbE1vZGVFbmFibGVyIGVuYWJsZXIoKnNsb3RWaXNpdG9yKTsKKyAgICAgICAg
c2xvdFZpc2l0b3ItPmRyYWluRnJvbVNoYXJlZChTbG90VmlzaXRvcjo6U2xhdmVEcmFpbik7Cisg
ICAgfQorICAgIGRlbGV0ZSBzbG90VmlzaXRvcjsKK30KKwordm9pZCBHQ1RocmVhZFNoYXJlZERh
dGE6Om1hcmtpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogbXlWaXNpdG9yKQoreyAgICAgICAgICAg
ICAgIAorICAgIFNsb3RWaXNpdG9yKiBzbG90VmlzaXRvciA9IHN0YXRpY19jYXN0PFNsb3RWaXNp
dG9yKj4obXlWaXNpdG9yKTsKKworICAgIHNsb3RWaXNpdG9yLT5zaGFyZWREYXRhKCkubWFya2lu
Z1RocmVhZE1haW4oc2xvdFZpc2l0b3IpOworfQorI2VuZGlmCisKK0dDVGhyZWFkU2hhcmVkRGF0
YTo6R0NUaHJlYWRTaGFyZWREYXRhKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKKyAgICA6IG1f
Z2xvYmFsRGF0YShnbG9iYWxEYXRhKQorICAgICwgbV9jb3BpZWRTcGFjZSgmZ2xvYmFsRGF0YS0+
aGVhcC5tX3N0b3JhZ2VTcGFjZSkKKyAgICAsIG1fc2hvdWxkSGFzaENvbnN0KGZhbHNlKQorICAg
ICwgbV9zaGFyZWRNYXJrU3RhY2sobV9zZWdtZW50QWxsb2NhdG9yKQorICAgICwgbV9udW1iZXJP
ZkFjdGl2ZVBhcmFsbGVsTWFya2VycygwKQorICAgICwgbV9wYXJhbGxlbE1hcmtlcnNTaG91bGRF
eGl0KGZhbHNlKQoreworI2lmIEVOQUJMRShQQVJBTExFTF9HQykKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMoKTsgKytpKSB7CisgICAgICAg
IFNsb3RWaXNpdG9yKiBzbG90VmlzaXRvciA9IG5ldyBTbG90VmlzaXRvcigqdGhpcyk7CisgICAg
ICAgIG1fbWFya2luZ1RocmVhZHNNYXJrU3RhY2suYXBwZW5kKHNsb3RWaXNpdG9yKTsKKyAgICAg
ICAgbV9tYXJraW5nVGhyZWFkcy5hcHBlbmQoY3JlYXRlVGhyZWFkKG1hcmtpbmdUaHJlYWRTdGFy
dEZ1bmMsIHNsb3RWaXNpdG9yLCAiSmF2YVNjcmlwdENvcmU6Ok1hcmtpbmciKSk7CisgICAgICAg
IEFTU0VSVChtX21hcmtpbmdUaHJlYWRzLmxhc3QoKSk7CisgICAgfQorI2VuZGlmCit9CisKK0dD
VGhyZWFkU2hhcmVkRGF0YTo6fkdDVGhyZWFkU2hhcmVkRGF0YSgpCit7CisjaWYgRU5BQkxFKFBB
UkFMTEVMX0dDKSAgICAKKyAgICAvLyBEZXN0cm95IG91ciBtYXJraW5nIHRocmVhZHMuCisgICAg
eworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tYXJraW5nTG9jayk7CisgICAgICAgIG1f
cGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdCA9IHRydWU7CisgICAgICAgIG1fbWFya2luZ0NvbmRp
dGlvbi5icm9hZGNhc3QoKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWFya2luZ1RocmVhZHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0
aW9uKG1fbWFya2luZ1RocmVhZHNbaV0pOworI2VuZGlmCit9CisgICAgCit2b2lkIEdDVGhyZWFk
U2hhcmVkRGF0YTo6cmVzZXQoKQoreworICAgIEFTU0VSVCghbV9udW1iZXJPZkFjdGl2ZVBhcmFs
bGVsTWFya2Vycyk7CisgICAgQVNTRVJUKCFtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQpOwor
ICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFjay5pc0VtcHR5KCkpOworICAgIAorI2lmIEVOQUJM
RShQQVJBTExFTF9HQykKKyAgICBtX3NlZ21lbnRBbGxvY2F0b3Iuc2hyaW5rUmVzZXJ2ZSgpOwor
ICAgIG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fb3BhcXVlUm9v
dHMuaXNFbXB0eSgpKTsKKyNlbmRpZgorICAgIG1fd2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMucmVt
b3ZlQWxsKCk7CisKKyAgICBpZiAobV9zaG91bGRIYXNoQ29uc3QpIHsKKyAgICAgICAgbV9nbG9i
YWxEYXRhLT5yZXNldE5ld1N0cmluZ3NTaW5jZUxhc3RIYXNoQ29uc3QoKTsKKyAgICAgICAgbV9z
aG91bGRIYXNoQ29uc3QgPSBmYWxzZTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRh
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNo
YXJlZERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdDVGhyZWFkU2hh
cmVkRGF0YV9oCisjZGVmaW5lIEdDVGhyZWFkU2hhcmVkRGF0YV9oCisKKyNpbmNsdWRlICJNYXJr
U3RhY2suaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBDb3BpZWRTcGFjZTsKKworY2xhc3MgR0NUaHJlYWRT
aGFyZWREYXRhIHsKK3B1YmxpYzoKKyAgICBHQ1RocmVhZFNoYXJlZERhdGEoSlNHbG9iYWxEYXRh
Kik7CisgICAgfkdDVGhyZWFkU2hhcmVkRGF0YSgpOworICAgIAorICAgIHZvaWQgcmVzZXQoKTsK
KworI2lmIEVOQUJMRShQQVJBTExFTF9HQykKKyAgICB2b2lkIHJlc2V0Q2hpbGRyZW4oKTsKKyAg
ICBzaXplX3QgY2hpbGRWaXNpdENvdW50KCk7CisgICAgc2l6ZV90IGNoaWxkRHVwU3RyaW5ncygp
OworI2VuZGlmCisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNYXJrU3RhY2s7Cisg
ICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOworCisjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQor
ICAgIHZvaWQgbWFya2luZ1RocmVhZE1haW4oU2xvdFZpc2l0b3IqKTsKKyAgICBzdGF0aWMgdm9p
ZCBtYXJraW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIGhlYXApOworI2VuZGlmCisKKyAgICBKU0ds
b2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKKyAgICBDb3BpZWRTcGFjZSogbV9jb3BpZWRTcGFjZTsK
KyAgICAKKyAgICBNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yIG1fc2VnbWVudEFsbG9jYXRvcjsK
KyAgICAKKyAgICBib29sIG1fc2hvdWxkSGFzaENvbnN0OworCisgICAgVmVjdG9yPFRocmVhZElk
ZW50aWZpZXI+IG1fbWFya2luZ1RocmVhZHM7CisgICAgVmVjdG9yPE1hcmtTdGFjayo+IG1fbWFy
a2luZ1RocmVhZHNNYXJrU3RhY2s7CisgICAgCisgICAgTXV0ZXggbV9tYXJraW5nTG9jazsKKyAg
ICBUaHJlYWRDb25kaXRpb24gbV9tYXJraW5nQ29uZGl0aW9uOworICAgIE1hcmtTdGFja0FycmF5
IG1fc2hhcmVkTWFya1N0YWNrOworICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZBY3RpdmVQYXJhbGxl
bE1hcmtlcnM7CisgICAgYm9vbCBtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQ7CisKKyAgICBN
dXRleCBtX29wYXF1ZVJvb3RzTG9jazsKKyAgICBIYXNoU2V0PHZvaWQqPiBtX29wYXF1ZVJvb3Rz
OworCisgICAgTGlzdGFibGVIYW5kbGVyPFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI+OjpMaXN0IG1f
d2Vha1JlZmVyZW5jZUhhcnZlc3RlcnM7CisgICAgTGlzdGFibGVIYW5kbGVyPFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXI+OjpMaXN0IG1fdW5jb25kaXRpb25hbEZpbmFsaXplcnM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CShyZXZpc2lvbiAxMjYzMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkJsb2NrQWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiREZHQ29kZUJsb2Nrcy5oIgorI2luY2x1ZGUgIkdDVGhyZWFkU2hh
cmVkRGF0YS5oIgogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgogI2luY2x1ZGUgIkhhbmRsZVN0YWNr
LmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKQEAgLTc0LDcgKzc1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhlYXApOwogICAgIHB1
YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIE1h
cmtTdGFja1RocmVhZFNoYXJlZERhdGE7CisgICAgICAgIGZyaWVuZCBjbGFzcyBHQ1RocmVhZFNo
YXJlZERhdGE7CiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKGNvbnN0IEpTVmFsdWUpOyAvLyAw
IGZvciBpbW1lZGlhdGUgdmFsdWVzCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKGNvbnN0IEpT
Q2VsbCopOwogCkBAIC0yMzEsNyArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
TWFjaGluZVRocmVhZHMgbV9tYWNoaW5lVGhyZWFkczsKICAgICAgICAgCi0gICAgICAgIE1hcmtT
dGFja1RocmVhZFNoYXJlZERhdGEgbV9zaGFyZWREYXRhOworICAgICAgICBHQ1RocmVhZFNoYXJl
ZERhdGEgbV9zaGFyZWREYXRhOwogICAgICAgICBTbG90VmlzaXRvciBtX3Nsb3RWaXNpdG9yOwog
CiAgICAgICAgIEhhbmRsZVNldCBtX2hhbmRsZVNldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0xpc3RhYmxlSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0xpc3RhYmxlSGFuZGxlci5oCShyZXZpc2lvbiAxMjYzMTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTIsNyArNTIsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIC8vIEFsbG93IHRoZXNl
IGNsYXNzZXMgdG8gdXNlIExpc3RhYmxlSGFuZGxlcjo6TGlzdC4KICAgICBmcmllbmQgY2xhc3Mg
TWFya1N0YWNrOwotICAgIGZyaWVuZCBjbGFzcyBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOwor
ICAgIGZyaWVuZCBjbGFzcyBHQ1RocmVhZFNoYXJlZERhdGE7CiAgICAgZnJpZW5kIGNsYXNzIFNs
b3RWaXNpdG9yOwogICAgIAogICAgIGNsYXNzIExpc3QgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMjYzMTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYXJrU3RhY2suaCIKKyNp
bmNsdWRlICJNYXJrU3RhY2tJbmxpbmVNZXRob2RzLmgiCiAKICNpbmNsdWRlICJDb3BpZWRTcGFj
ZS5oIgogI2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oIgpAQCAtMjIzLDg5ICsy
MjQsMjIgQEAgdm9pZCBNYXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKAogICAgICAg
ICBhcHBlbmQob3RoZXIucmVtb3ZlTGFzdCgpKTsKIH0KIAotI2lmIEVOQUJMRShQQVJBTExFTF9H
QykKLXZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6cmVzZXRDaGlsZHJlbigpCi17Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWFya2luZ1RocmVhZHNNYXJrU3RhY2suc2l6
ZSgpOyArK2kpCi0gICAgICAgIG1fbWFya2luZ1RocmVhZHNNYXJrU3RhY2tbaV0tPnJlc2V0KCk7
Ci19Ci0KLXNpemVfdCBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjpjaGlsZFZpc2l0Q291bnQo
KQoteyAgICAgICAKLSAgICB1bnNpZ25lZCBsb25nIHJlc3VsdCA9IDA7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWFya2luZ1RocmVhZHNNYXJrU3RhY2suc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHJlc3VsdCArPSBtX21hcmtpbmdUaHJlYWRzTWFya1N0YWNrW2ldLT52aXNpdENvdW50
KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBNYXJrU3RhY2tUaHJlYWRTaGFyZWRE
YXRhOjptYXJraW5nVGhyZWFkTWFpbihTbG90VmlzaXRvciogc2xvdFZpc2l0b3IpCi17Ci0gICAg
V1RGOjpyZWdpc3RlckdDVGhyZWFkKCk7Ci0gICAgewotICAgICAgICBQYXJhbGxlbE1vZGVFbmFi
bGVyIGVuYWJsZXIoKnNsb3RWaXNpdG9yKTsKLSAgICAgICAgc2xvdFZpc2l0b3ItPmRyYWluRnJv
bVNoYXJlZChTbG90VmlzaXRvcjo6U2xhdmVEcmFpbik7Ci0gICAgfQotICAgIGRlbGV0ZSBzbG90
VmlzaXRvcjsKLX0KLQotdm9pZCBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhy
ZWFkU3RhcnRGdW5jKHZvaWQqIG15VmlzaXRvcikKLXsgICAgICAgICAgICAgICAKLSAgICBTbG90
VmlzaXRvciogc2xvdFZpc2l0b3IgPSBzdGF0aWNfY2FzdDxTbG90VmlzaXRvcio+KG15VmlzaXRv
cik7Ci0KLSAgICBzbG90VmlzaXRvci0+c2hhcmVkRGF0YSgpLm1hcmtpbmdUaHJlYWRNYWluKHNs
b3RWaXNpdG9yKTsKLX0KK01hcmtTdGFjazo6TWFya1N0YWNrKEdDVGhyZWFkU2hhcmVkRGF0YSYg
c2hhcmVkKQorICAgIDogbV9zdGFjayhzaGFyZWQubV9zZWdtZW50QWxsb2NhdG9yKQorI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICAsIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9u
KGZhbHNlKQorICAgICwgbV9pc0RyYWluaW5nKGZhbHNlKQogI2VuZGlmCi0KLU1hcmtTdGFja1Ro
cmVhZFNoYXJlZERhdGE6Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQotICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCi0gICAgLCBtX2NvcGll
ZFNwYWNlKCZnbG9iYWxEYXRhLT5oZWFwLm1fc3RvcmFnZVNwYWNlKQorICAgICwgbV92aXNpdENv
dW50KDApCisgICAgLCBtX2lzSW5QYXJhbGxlbE1vZGUoZmFsc2UpCisgICAgLCBtX3NoYXJlZChz
aGFyZWQpCiAgICAgLCBtX3Nob3VsZEhhc2hDb25zdChmYWxzZSkKLSAgICAsIG1fc2hhcmVkTWFy
a1N0YWNrKG1fc2VnbWVudEFsbG9jYXRvcikKLSAgICAsIG1fbnVtYmVyT2ZBY3RpdmVQYXJhbGxl
bE1hcmtlcnMoMCkKLSAgICAsIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdChmYWxzZSkKIHsK
LSNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IE9w
dGlvbnM6Om51bWJlck9mR0NNYXJrZXJzKCk7ICsraSkgewotICAgICAgICBTbG90VmlzaXRvciog
c2xvdFZpc2l0b3IgPSBuZXcgU2xvdFZpc2l0b3IoKnRoaXMpOwotICAgICAgICBtX21hcmtpbmdU
aHJlYWRzTWFya1N0YWNrLmFwcGVuZChzbG90VmlzaXRvcik7Ci0gICAgICAgIG1fbWFya2luZ1Ro
cmVhZHMuYXBwZW5kKGNyZWF0ZVRocmVhZChtYXJraW5nVGhyZWFkU3RhcnRGdW5jLCBzbG90Vmlz
aXRvciwgIkphdmFTY3JpcHRDb3JlOjpNYXJraW5nIikpOwotICAgICAgICBBU1NFUlQobV9tYXJr
aW5nVGhyZWFkcy5sYXN0KCkpOwotICAgIH0KLSNlbmRpZgogfQogCi1NYXJrU3RhY2tUaHJlYWRT
aGFyZWREYXRhOjp+TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSgpCitNYXJrU3RhY2s6On5NYXJr
U3RhY2soKQogewotI2lmIEVOQUJMRShQQVJBTExFTF9HQykgICAgCi0gICAgLy8gRGVzdHJveSBv
dXIgbWFya2luZyB0aHJlYWRzLgotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bWFya2luZ0xvY2spOwotICAgICAgICBtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQgPSB0cnVl
OwotICAgICAgICBtX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7Ci0gICAgfQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hcmtpbmdUaHJlYWRzLnNpemUoKTsgKytpKQotICAg
ICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX21hcmtpbmdUaHJlYWRzW2ldKTsKLSNlbmRp
ZgotfQotICAgIAotdm9pZCBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjpyZXNldCgpCi17Ci0g
ICAgQVNTRVJUKCFtX251bWJlck9mQWN0aXZlUGFyYWxsZWxNYXJrZXJzKTsKLSAgICBBU1NFUlQo
IW1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdCk7Ci0gICAgQVNTRVJUKG1fc2hhcmVkTWFya1N0
YWNrLmlzRW1wdHkoKSk7Ci0gICAgCi0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIG1fc2Vn
bWVudEFsbG9jYXRvci5zaHJpbmtSZXNlcnZlKCk7Ci0gICAgbV9vcGFxdWVSb290cy5jbGVhcigp
OwotI2Vsc2UKLSAgICBBU1NFUlQobV9vcGFxdWVSb290cy5pc0VtcHR5KCkpOwotI2VuZGlmCi0g
ICAgbV93ZWFrUmVmZXJlbmNlSGFydmVzdGVycy5yZW1vdmVBbGwoKTsKLQotICAgIGlmIChtX3No
b3VsZEhhc2hDb25zdCkgewotICAgICAgICBtX2dsb2JhbERhdGEtPnJlc2V0TmV3U3RyaW5nc1Np
bmNlTGFzdEhhc2hDb25zdCgpOwotICAgICAgICBtX3Nob3VsZEhhc2hDb25zdCA9IGZhbHNlOwot
ICAgIH0KKyAgICBBU1NFUlQobV9zdGFjay5pc0VtcHR5KCkpOwogfQogCiB2b2lkIE1hcmtTdGFj
azo6c2V0dXAoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgJKHJl
dmlzaW9uIDEyNjMxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFz
cyBNYXJrU3RhY2s7CisgICAgY2xhc3MgR0NUaHJlYWRTaGFyZWREYXRhOwogICAgIGNsYXNzIFBh
cmFsbGVsTW9kZUVuYWJsZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2xvdFZp
c2l0b3I7CkBAIC0xOTIsNTcgKzE5MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAg
IH07CiAKLSAgICBjbGFzcyBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEoSlNHbG9iYWxEYXRhKik7Ci0gICAg
ICAgIH5NYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKCk7Ci0gICAgICAgIAotICAgICAgICB2b2lk
IHJlc2V0KCk7Ci0KLSNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgICAgIHZvaWQgcmVzZXRD
aGlsZHJlbigpOwotICAgICAgICBzaXplX3QgY2hpbGRWaXNpdENvdW50KCk7Ci0gICAgICAgIHNp
emVfdCBjaGlsZER1cFN0cmluZ3MoKTsKLSNlbmRpZgotICAgIAotICAgIHByaXZhdGU6Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBNYXJrU3RhY2s7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTbG90Vmlz
aXRvcjsKLQotI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICAgICAgdm9pZCBtYXJraW5nVGhy
ZWFkTWFpbihTbG90VmlzaXRvciopOwotICAgICAgICBzdGF0aWMgdm9pZCBtYXJraW5nVGhyZWFk
U3RhcnRGdW5jKHZvaWQqIGhlYXApOwotI2VuZGlmCi0KLSAgICAgICAgSlNHbG9iYWxEYXRhKiBt
X2dsb2JhbERhdGE7Ci0gICAgICAgIENvcGllZFNwYWNlKiBtX2NvcGllZFNwYWNlOwotICAgICAg
ICAKLSAgICAgICAgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciBtX3NlZ21lbnRBbGxvY2F0b3I7
Ci0gICAgICAgIAotICAgICAgICBib29sIG1fc2hvdWxkSGFzaENvbnN0OwotCi0gICAgICAgIFZl
Y3RvcjxUaHJlYWRJZGVudGlmaWVyPiBtX21hcmtpbmdUaHJlYWRzOwotICAgICAgICBWZWN0b3I8
TWFya1N0YWNrKj4gbV9tYXJraW5nVGhyZWFkc01hcmtTdGFjazsKLSAgICAgICAgCi0gICAgICAg
IE11dGV4IG1fbWFya2luZ0xvY2s7Ci0gICAgICAgIFRocmVhZENvbmRpdGlvbiBtX21hcmtpbmdD
b25kaXRpb247Ci0gICAgICAgIE1hcmtTdGFja0FycmF5IG1fc2hhcmVkTWFya1N0YWNrOwotICAg
ICAgICB1bnNpZ25lZCBtX251bWJlck9mQWN0aXZlUGFyYWxsZWxNYXJrZXJzOwotICAgICAgICBi
b29sIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdDsKLQotICAgICAgICBNdXRleCBtX29wYXF1
ZVJvb3RzTG9jazsKLSAgICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVSb290czsKLQotICAg
ICAgICBMaXN0YWJsZUhhbmRsZXI8V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcj46Okxpc3QgbV93ZWFr
UmVmZXJlbmNlSGFydmVzdGVyczsKLSAgICAgICAgTGlzdGFibGVIYW5kbGVyPFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXI+OjpMaXN0IG1fdW5jb25kaXRpb25hbEZpbmFsaXplcnM7Ci0gICAgfTsKLQog
ICAgIGNsYXNzIE1hcmtTdGFjayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hcmtT
dGFjayk7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0b3I7IC8vIEFsbG93ZWQg
dG8gbWFyayBhIEpTVmFsdWUqIG9yIEpTQ2VsbCoqIGRpcmVjdGx5LgogCiAgICAgcHVibGljOgot
ICAgICAgICBNYXJrU3RhY2soTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYpOworICAgICAgICBN
YXJrU3RhY2soR0NUaHJlYWRTaGFyZWREYXRhJik7CiAgICAgICAgIH5NYXJrU3RhY2soKTsKIAog
ICAgICAgICB2b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYpOwpAQCAtMjU5LDcgKzIxNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGNvbnRhaW5zT3BhcXVlUm9vdCh2b2lk
Kik7CiAgICAgICAgIGludCBvcGFxdWVSb290Q291bnQoKTsKIAotICAgICAgICBNYXJrU3RhY2tU
aHJlYWRTaGFyZWREYXRhJiBzaGFyZWREYXRhKCkgeyByZXR1cm4gbV9zaGFyZWQ7IH0KKyAgICAg
ICAgR0NUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWREYXRhKCkgeyByZXR1cm4gbV9zaGFyZWQ7IH0K
ICAgICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCk7IH0KIAog
ICAgICAgICB2b2lkIHNldHVwKCk7CkBAIC0yNzEsMTUgKzIyNyw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBWVGFibGVTcGVjdHJ1bSBtX3Zpc2l0ZWRUeXBlQ291bnRzOwogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBhZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIqIHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1f
c2hhcmVkLm1fd2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMuYWRkVGhyZWFkU2FmZSh3ZWFrUmVmZXJl
bmNlSGFydmVzdGVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBhZGRVbmNv
bmRpdGlvbmFsRmluYWxpemVyKFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIqIHVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fc2hhcmVkLm1fdW5jb25kaXRpb25h
bEZpbmFsaXplcnMuYWRkVGhyZWFkU2FmZSh1bmNvbmRpdGlvbmFsRmluYWxpemVyKTsKLSAgICAg
ICAgfQorICAgICAgICB2b2lkIGFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoV2Vha1JlZmVyZW5j
ZUhhcnZlc3RlciopOworICAgICAgICB2b2lkIGFkZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIoVW5j
b25kaXRpb25hbEZpbmFsaXplciopOwogCiAjaWYgRU5BQkxFKE9CSkVDVF9NQVJLX0xPR0dJTkcp
CiAgICAgICAgIGlubGluZSB2b2lkIHJlc2V0Q2hpbGRDb3VudCgpIHsgbV9sb2dDaGlsZENvdW50
ID0gMDsgfQpAQCAtMzI4LDcgKzI3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzaXpl
X3QgbV92aXNpdENvdW50OwogICAgICAgICBib29sIG1faXNJblBhcmFsbGVsTW9kZTsKICAgICAg
ICAgCi0gICAgICAgIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmIG1fc2hhcmVkOworICAgICAg
ICBHQ1RocmVhZFNoYXJlZERhdGEmIG1fc2hhcmVkOwogCiAgICAgICAgIGJvb2wgbV9zaG91bGRI
YXNoQ29uc3Q7IC8vIExvY2FsIHBlci10aHJlYWQgY29weSBvZiBzaGFyZWQgZmxhZyBmb3IgcGVy
Zm9ybWFuY2UgcmVhc29ucwogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nSW1wbCosIEpT
VmFsdWU+IFVuaXF1ZVN0cmluZ01hcDsKQEAgLTMzOSw2MyArMjg4LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYKICAgICB9OwogCi0gICAgaW5saW5lIE1hcmtTdGFjazo6TWFya1N0YWNrKE1h
cmtTdGFja1RocmVhZFNoYXJlZERhdGEmIHNoYXJlZCkKLSAgICAgICAgOiBtX3N0YWNrKHNoYXJl
ZC5tX3NlZ21lbnRBbGxvY2F0b3IpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICAsIG1f
aXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNE
cmFpbmluZyhmYWxzZSkKLSNlbmRpZgotICAgICAgICAsIG1fdmlzaXRDb3VudCgwKQotICAgICAg
ICAsIG1faXNJblBhcmFsbGVsTW9kZShmYWxzZSkKLSAgICAgICAgLCBtX3NoYXJlZChzaGFyZWQp
Ci0gICAgICAgICwgbV9zaG91bGRIYXNoQ29uc3QoZmFsc2UpCi0gICAgewotICAgIH0KLQotICAg
IGlubGluZSBNYXJrU3RhY2s6On5NYXJrU3RhY2soKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
c3RhY2suaXNFbXB0eSgpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFk
ZE9wYXF1ZVJvb3Qodm9pZCogcm9vdCkKLSAgICB7Ci0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQot
ICAgICAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMoKSA9PSAxKSB7Ci0gICAgICAg
ICAgICAvLyBQdXQgZGlyZWN0bHkgaW50byB0aGUgc2hhcmVkIEhhc2hTZXQuCi0gICAgICAgICAg
ICBtX3NoYXJlZC5tX29wYXF1ZVJvb3RzLmFkZChyb290KTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICAvLyBQdXQgaW50byB0aGUgbG9jYWwgc2V0LCBidXQgbWVyZ2Ug
d2l0aCB0aGUgc2hhcmVkIG9uZSBldmVyeSBvbmNlIGluCi0gICAgICAgIC8vIGEgd2hpbGUgdG8g
bWFrZSBzdXJlIHRoYXQgdGhlIGxvY2FsIHNldHMgZG9uJ3QgZ3JvdyB0b28gbGFyZ2UuCi0gICAg
ICAgIG1lcmdlT3BhcXVlUm9vdHNJZlByb2ZpdGFibGUoKTsKLSAgICAgICAgbV9vcGFxdWVSb290
cy5hZGQocm9vdCk7Ci0jZWxzZQotICAgICAgICBtX29wYXF1ZVJvb3RzLmFkZChyb290KTsKLSNl
bmRpZgotICAgIH0KLQotICAgIGlubGluZSBib29sIE1hcmtTdGFjazo6Y29udGFpbnNPcGFxdWVS
b290KHZvaWQqIHJvb3QpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1faXNJblBhcmFsbGVsTW9k
ZSk7Ci0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgICAgICBBU1NFUlQobV9vcGFxdWVSb290
cy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gbV9zaGFyZWQubV9vcGFxdWVSb290cy5jb250
YWlucyhyb290KTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBtX29wYXF1ZVJvb3RzLmNvbnRhaW5z
KHJvb3QpOwotI2VuZGlmCi0gICAgfQotCi0gICAgaW5saW5lIGludCBNYXJrU3RhY2s6Om9wYXF1
ZVJvb3RDb3VudCgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1faXNJblBhcmFsbGVsTW9kZSk7
Ci0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgICAgICBBU1NFUlQobV9vcGFxdWVSb290cy5p
c0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gbV9zaGFyZWQubV9vcGFxdWVSb290cy5zaXplKCk7
Ci0jZWxzZQotICAgICAgICByZXR1cm4gbV9vcGFxdWVSb290cy5zaXplKCk7Ci0jZW5kaWYKLSAg
ICB9Ci0KICAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2tBcnJheTo6YXBwZW5kKGNvbnN0IEpTQ2Vs
bCogY2VsbCkKICAgICB7CiAgICAgICAgIGlmIChtX3RvcCA9PSBtX3NlZ21lbnRDYXBhY2l0eSkK
QEAgLTQyOSw1MSArMzIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBtX3Rv
cCArIG1fc2VnbWVudENhcGFjaXR5ICogbV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHM7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFsdWUqIHNs
b3QsIHNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewotICAgICAgICAgICAgSlNWYWx1ZSYgdmFsdWUgPSBzbG90W2ldOwotICAg
ICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIGludGVybmFsQXBwZW5kKHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgTWFya1N0YWNrOjphcHBlbmRVbmJhcnJp
ZXJlZFBvaW50ZXIoVCoqIHNsb3QpCi0gICAgewotICAgICAgICBBU1NFUlQoc2xvdCk7Ci0gICAg
ICAgIEpTQ2VsbCogY2VsbCA9ICpzbG90OwotICAgICAgICBpZiAoY2VsbCkKLSAgICAgICAgICAg
IGludGVybmFsQXBwZW5kKGNlbGwpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgTWFya1N0YWNrOjphcHBlbmQoSlNWYWx1ZSogc2xvdCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChzbG90KTsKLSAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnNsb3QpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZFVuYmFycmllcmVkVmFsdWUoSlNWYWx1
ZSogc2xvdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzbG90KTsKLSAgICAgICAgaW50ZXJuYWxB
cHBlbmQoKnNsb3QpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6
OmFwcGVuZChKU0NlbGwqKiBzbG90KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNsb3QpOwotICAg
ICAgICBpbnRlcm5hbEFwcGVuZCgqc2xvdCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIE1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQoSlNWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGludGVybmFsQXBwZW5kKHZhbHVlLmFzQ2VsbCgpKTsKLSAg
ICB9Ci0KICAgICBjbGFzcyBQYXJhbGxlbE1vZGVFbmFibGVyIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIoTWFya1N0YWNrJiBzdGFjaykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFja0lubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2tJbmxpbmVNZXRob2RzLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2tJbmxpbmVN
ZXRob2RzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWFya1N0YWNrSW5s
aW5lTWV0aG9kc19oCisjZGVmaW5lIE1hcmtTdGFja0lubGluZU1ldGhvZHNfaAorCisjaW5jbHVk
ZSAiR0NUaHJlYWRTaGFyZWREYXRhLmgiCisjaW5jbHVkZSAiTWFya1N0YWNrLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoSlNWYWx1
ZSogc2xvdCwgc2l6ZV90IGNvdW50KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgeworICAgICAgICBKU1ZhbHVlJiB2YWx1ZSA9IHNsb3RbaV07CisgICAgICAgIGlm
ICghdmFsdWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaW50ZXJuYWxBcHBlbmQo
dmFsdWUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIE1h
cmtTdGFjazo6YXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKFQqKiBzbG90KQoreworICAgIEFTU0VS
VChzbG90KTsKKyAgICBKU0NlbGwqIGNlbGwgPSAqc2xvdDsKKyAgICBpZiAoY2VsbCkKKyAgICAg
ICAgaW50ZXJuYWxBcHBlbmQoY2VsbCk7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3Rh
Y2s6OmFwcGVuZChKU1ZhbHVlKiBzbG90KQoreworICAgIEFTU0VSVChzbG90KTsKKyAgICBpbnRl
cm5hbEFwcGVuZCgqc2xvdCk7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmFw
cGVuZFVuYmFycmllcmVkVmFsdWUoSlNWYWx1ZSogc2xvdCkKK3sKKyAgICBBU1NFUlQoc2xvdCk7
CisgICAgaW50ZXJuYWxBcHBlbmQoKnNsb3QpOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgTWFy
a1N0YWNrOjphcHBlbmQoSlNDZWxsKiogc2xvdCkKK3sKKyAgICBBU1NFUlQoc2xvdCk7CisgICAg
aW50ZXJuYWxBcHBlbmQoKnNsb3QpOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNr
OjppbnRlcm5hbEFwcGVuZChKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZSk7Cisg
ICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGludGVybmFsQXBw
ZW5kKHZhbHVlLmFzQ2VsbCgpKTsKK30KKworaW5saW5lIHZvaWQgTWFya1N0YWNrOjphZGRXZWFr
UmVmZXJlbmNlSGFydmVzdGVyKFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIqIHdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIpCit7CisgICAgbV9zaGFyZWQubV93ZWFrUmVmZXJlbmNlSGFydmVzdGVycy5hZGRU
aHJlYWRTYWZlKHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIpOworfQorCitpbmxpbmUgdm9pZCBNYXJr
U3RhY2s6OmFkZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIoVW5jb25kaXRpb25hbEZpbmFsaXplciog
dW5jb25kaXRpb25hbEZpbmFsaXplcikKK3sKKyAgICBtX3NoYXJlZC5tX3VuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzLmFkZFRocmVhZFNhZmUodW5jb25kaXRpb25hbEZpbmFsaXplcik7Cit9CisKK2lu
bGluZSB2b2lkIE1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCh2b2lkKiByb290KQoreworI2lmIEVO
QUJMRShQQVJBTExFTF9HQykKKyAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMoKSA9
PSAxKSB7CisgICAgICAgIC8vIFB1dCBkaXJlY3RseSBpbnRvIHRoZSBzaGFyZWQgSGFzaFNldC4K
KyAgICAgICAgbV9zaGFyZWQubV9vcGFxdWVSb290cy5hZGQocm9vdCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgLy8gUHV0IGludG8gdGhlIGxvY2FsIHNldCwgYnV0IG1lcmdlIHdpdGgg
dGhlIHNoYXJlZCBvbmUgZXZlcnkgb25jZSBpbgorICAgIC8vIGEgd2hpbGUgdG8gbWFrZSBzdXJl
IHRoYXQgdGhlIGxvY2FsIHNldHMgZG9uJ3QgZ3JvdyB0b28gbGFyZ2UuCisgICAgbWVyZ2VPcGFx
dWVSb290c0lmUHJvZml0YWJsZSgpOworICAgIG1fb3BhcXVlUm9vdHMuYWRkKHJvb3QpOworI2Vs
c2UKKyAgICBtX29wYXF1ZVJvb3RzLmFkZChyb290KTsKKyNlbmRpZgorfQorCitpbmxpbmUgYm9v
bCBNYXJrU3RhY2s6OmNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKiByb290KQoreworICAgIEFTU0VS
VCghbV9pc0luUGFyYWxsZWxNb2RlKTsKKyNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCisgICAgQVNT
RVJUKG1fb3BhcXVlUm9vdHMuaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gbV9zaGFyZWQubV9vcGFx
dWVSb290cy5jb250YWlucyhyb290KTsKKyNlbHNlCisgICAgcmV0dXJuIG1fb3BhcXVlUm9vdHMu
Y29udGFpbnMocm9vdCk7CisjZW5kaWYKK30KKworaW5saW5lIGludCBNYXJrU3RhY2s6Om9wYXF1
ZVJvb3RDb3VudCgpCit7CisgICAgQVNTRVJUKCFtX2lzSW5QYXJhbGxlbE1vZGUpOworI2lmIEVO
QUJMRShQQVJBTExFTF9HQykKKyAgICBBU1NFUlQobV9vcGFxdWVSb290cy5pc0VtcHR5KCkpOwor
ICAgIHJldHVybiBtX3NoYXJlZC5tX29wYXF1ZVJvb3RzLnNpemUoKTsKKyNlbHNlCisgICAgcmV0
dXJuIG1fb3BhcXVlUm9vdHMuc2l6ZSgpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
aAkocmV2aXNpb24gMTI2MzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZp
c2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE3IEBACiAKICNpbmNsdWRlICJD
b3BpZWRTcGFjZS5oIgogI2luY2x1ZGUgIk1hcmtTdGFjay5oIgorI2luY2x1ZGUgIk1hcmtTdGFj
a0lubGluZU1ldGhvZHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7CitjbGFz
cyBHQ1RocmVhZFNoYXJlZERhdGE7CiAKIGNsYXNzIFNsb3RWaXNpdG9yIDogcHVibGljIE1hcmtT
dGFjayB7CiAgICAgZnJpZW5kIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKIHB1YmxpYzoKLSAgICBT
bG90VmlzaXRvcihNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhJik7CisgICAgU2xvdFZpc2l0b3Io
R0NUaHJlYWRTaGFyZWREYXRhJik7CiAKICAgICB2b2lkIGRvbmF0ZSgpCiAgICAgewpAQCAtODUs
NyArODcsNyBAQCBwcml2YXRlOgogICAgIENvcGllZEFsbG9jYXRvciBtX2NvcGllZEFsbG9jYXRv
cjsKIH07CiAKLWlubGluZSBTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3IoTWFya1N0YWNrVGhyZWFk
U2hhcmVkRGF0YSYgc2hhcmVkKQoraW5saW5lIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcihHQ1Ro
cmVhZFNoYXJlZERhdGEmIHNoYXJlZCkKICAgICA6IE1hcmtTdGFjayhzaGFyZWQpCiB7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>