<?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>77600</bug_id>
          
          <creation_ts>2012-02-01 21:17:37 -0800</creation_ts>
          <short_desc>Refactor MarkedBlock::SizeClass into a separate class</short_desc>
          <delta_ts>2012-02-03 11:49:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>77761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>levin+threading</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>547625</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-01 21:17:37 -0800</bug_when>
    <thetext>In preparation for splitting MarkedSpace into multiple &quot;sub-spaces&quot; with slight variations in behavior, we should refactor SizeClass into its own separate class, since it already serves this purpose to a limited degree. We&apos;ll rename it to MarkedAllocator and treat it externally as a bag of MarkedBlocks. MarkedSpace will then just be a collection of these MarkedAllocators, each of which can have a variety of policies and manage its own MarkedBlocks according to these policies. MarkedAllocator will take on all of the dirty work of allocation out of MarkedBlocks that MarkedSpace did have. So the heap is now organized as follows:

Heap (which contains...)
-MarkedSpace (which contains multiple...)
--MarkedAllocator (which contains multiple...)
---MarkedBlock</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547627</commentid>
    <comment_count>1</comment_count>
      <attachid>125074</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-01 21:23:51 -0800</bug_when>
    <thetext>Created attachment 125074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547634</commentid>
    <comment_count>2</comment_count>
      <attachid>125074</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-01 21:43:42 -0800</bug_when>
    <thetext>Comment on attachment 125074
Patch

Attachment 125074 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11388709</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547647</commentid>
    <comment_count>3</comment_count>
      <attachid>125074</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-01 22:08:42 -0800</bug_when>
    <thetext>Comment on attachment 125074
Patch

Attachment 125074 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11382012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547651</commentid>
    <comment_count>4</comment_count>
      <attachid>125079</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-01 22:17:02 -0800</bug_when>
    <thetext>Created attachment 125079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547873</commentid>
    <comment_count>5</comment_count>
      <attachid>125135</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-02 08:17:48 -0800</bug_when>
    <thetext>Created attachment 125135
Fixing windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548824</commentid>
    <comment_count>6</comment_count>
      <attachid>125135</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-02-03 10:28:15 -0800</bug_when>
    <thetext>Comment on attachment 125135
Fixing windows

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548844</commentid>
    <comment_count>7</comment_count>
      <attachid>125135</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 10:43:25 -0800</bug_when>
    <thetext>Comment on attachment 125135
Fixing windows

Rejecting attachment 125135 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ing file Source/JavaScriptCore/heap/Heap.h
patching file Source/JavaScriptCore/heap/MarkedAllocator.cpp
patching file Source/JavaScriptCore/heap/MarkedAllocator.h
patching file Source/JavaScriptCore/heap/MarkedSpace.cpp
patching file Source/JavaScriptCore/heap/MarkedSpace.h
patching file Source/JavaScriptCore/jit/JITInlineMethods.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Geoffrey G...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11423318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548880</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-03 11:21:42 -0800</bug_when>
    <thetext>Committed r106676: &lt;http://trac.webkit.org/changeset/106676&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125074</attachid>
            <date>2012-02-01 21:23:51 -0800</date>
            <delta_ts>2012-02-01 22:17:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77600-20120201212350.patch</filename>
            <type>text/plain</type>
            <size>31630</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTc4NjE0ZjJhMDE2MDM1MTNhMjQzODFkZWI0YmFjZGM2YTY5YjQ1Li40OWFjZjQwNmNjZDE5NWFk
MWJlNmZiMjc2NTA5OTU5NzhiNGNmNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxMi0wMi0wMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE1hcmtlZEJsb2NrOjpTaXplQ2xhc3MgaW50byBh
IHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzYwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIHB1bGxlZCBTaXplQ2xhc3Mgb3V0IGludG8gaXRzIG93biBjbGFzcywgbmFtZWQg
TWFya2VkQWxsb2NhdG9yLCBhbmQgZ2F2ZSBpdAorICAgICAgICB0aGUgcmVzcG9uc2liaWxpdHkg
b2YgYWxsb2NhdGluZyBvYmplY3RzIGZyb20gdGhlIGNvbGxlY3Rpb24gb2YgTWFya2VkQmxvY2tz
IAorICAgICAgICB0aGF0IGl0IG1hbmFnZXMuIEFsc28gbGltaXRlZCB0aGUgYW1vdW50IG9mIGNv
dXBsaW5nIHRvIGludGVybmFsIGRhdGEgZmllbGRzIAorICAgICAgICBmcm9tIG90aGVyIHBsYWNl
cywgYWx0aG91Z2ggaXQncyBtb3N0bHkgdW5hdm9pZGFibGUgaW4gdGhlIEpJVCBjb2RlLgorCisg
ICAgICAgIEV2ZW50dWFsbHkgTWFya2VkQWxsb2NhdG9yIHdpbGwgaW1wbGVtZW50IHZhcmlvdXMg
cG9saWNpZXMgdG8gZG8gd2l0aCBvYmplY3QgCisgICAgICAgIG1hbmFnZW1lbnQsIGUuZy4gd2hl
dGhlciBvciBub3QgdG8gcnVuIGRlc3RydWN0b3JzIG9uIG9iamVjdHMgdGhhdCBpdCBtYW5hZ2Vz
LgorICAgICAgICBNYXJrZWRTcGFjZSB3aWxsIG1hbmFnZSBhIGNvbGxlY3Rpb24gb2YgTWFya2Vk
QWxsb2NhdG9ycyB3aXRoIHZhcnlpbmcgcG9saWNpZXMsCisgICAgICAgIGFzIGl0IGRvZXMgbm93
IGJ1dCB0byBhIGxhcmdlciBleHRlbnQuIAorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAo
SlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3QpOgorICAgICAgICAoSGVhcCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVIZWxwZXIpOgorICAgICAgICAo
SlNDOjpNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjphbGxvY2F0ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphZGRC
bG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2spOgorICAg
ICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKERGRyk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpN
YXJrZWRBbGxvY2F0b3I6OmNlbGxTaXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9y
OjpoZWFwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzZXRIZWFwKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpzZXRDZWxsU2l6ZSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6c2V0TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6Ok1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6
YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp6YXBGcmVlTGlzdCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNl
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycyk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKToKKyAgICAgICAgKEpTQzo6VGFr
ZUlmVW5tYXJrZWQ6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoK
KyAgICAgICAgKE1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9j
YXRvckZvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6ZGlkQWRkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlkQ29uc3Vt
ZUZyZWVMaXN0KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QpOgorCiAyMDEyLTAyLTAxICBDc2Fi
YSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IEVy
cm9yLnN0YWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCAy
ZjdiMzE1N2Y2ZGJiN2UwZDM1YjFhZTI0Yjc3OGQ5M2EyNDU5ZTM3Li41ZjgwODAzZGIyYzA0ZjY3
NTBjMWRiNWI0MTUxZjU2YTVkZTEwOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAKQEAgLTEyOCw3ICsxMjgsNiBAQCBfX1pOM0pTQzExSlNCeXRlQXJyYXkzcHV0
RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbAog
X19aTjNKU0MxMUpTQnl0ZUFycmF5NnNfaW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTdkZXN0
cm95RVBOU182SlNDZWxsRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5QzFFUE5TXzlFeGVjU3RhdGVF
UE5TXzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5dGVBcnJheUUKLV9fWk4zSlNDMTFNYXJrZWRTcGFjZTE2
YWxsb2NhdGVTbG93Q2FzZUVSTlMwXzlTaXplQ2xhc3NFCiBfX1pOM0pTQzExUGFyc2VyQXJlbmE1
cmVzZXRFdgogX19aTjNKU0MxMWNoZWNrU3ludGF4RVBOU185RXhlY1N0YXRlRVJLTlNfMTBTb3Vy
Y2VDb2RlRVBOU183SlNWYWx1ZUUKIF9fWk4zSlNDMTFjcmVhdGVFcnJvckVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzdVU3RyaW5nRQpAQCAtMTkyLDYgKzE5MSw3IEBAIF9fWk4zSlNDMTRUaW1lb3V0Q2hl
Y2tlcjVyZXNldEV2CiBfX1pOM0pTQzE0VlRhYmxlU3BlY3RydW01Y291bnRFUE5TXzZKU0NlbGxF
CiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE0dGhy
b3dUeXBlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKK19fWk4zSlNDMTVNYXJr
ZWRBbGxvY2F0b3IxNmFsbG9jYXRlU2xvd0Nhc2VFdgogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25l
cjI2aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2
Uk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyOGZpbmFsaXplRU5T
XzZIYW5kbGVJTlNfN1Vua25vd25FRUVQdgogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lckQyRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWQ4YjNkZDU4ZDY2MmFhNDAxNzQwYzFm
NTM4OThiOTA3MjJjMmM0ZS4uY2UzZTM1ZWU1NjcxZDM3YjY3Yzc5MjNhMzQ4YmIzMmNiOWY0Y2Y4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcyMSw2ICs3MjEsOCBAQAogCQlD
MjJDNTMxNDEzRkFGNkVGMDBCN0RDMEQgLyogc3RydG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjJDNTJCQTEzRkFGNkVGMDBCN0RDMEQgLyogc3Ry
dG9kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzIyQzUzMTUxM0ZBRjZFRjAwQjdEQzBEIC8qIHV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjJDNTJCQjEzRkFGNkVGMDBCN0RDMEQgLyogdXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
MjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQnVtcFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAv
KiBCdW1wU3BhY2UuY3BwICovOyB9OworCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFy
a2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJCOTE2QzUxNERB
MDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFy
a2VkQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQzJDOEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIEJ1
bXBTcGFjZUlubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBCdW1wU3BhY2VJbmxpbmVN
ZXRob2RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzJDOEQwMzAxNEEzQ0VGQzAwNTc4RTY1IC8qIEJ1bXBCbG9jay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkUxNEEzQ0VGQzAwNTc4RTY1
IC8qIEJ1bXBCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJGMTRBM0NFRkMw
MDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTUwNiw2ICsxNTA4LDggQEAKIAkJQzIyQzUyQkExM0ZBRjZFRjAw
QjdEQzBEIC8qIHN0cnRvZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzdHJ0
b2QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIyQzUyQkIxM0ZBRjZFRjAwQjdE
QzBEIC8qIHV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHV0aWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAv
KiBCdW1wU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVt
cFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJCOTE2QzExNERBMDE0
RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXJrZWRBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrZWRBbGxvY2F0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQnVtcFNw
YWNlSW5saW5lTWV0aG9kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdW1w
U3BhY2VJbmxpbmVNZXRob2RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhE
MDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBCdW1wQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnVtcEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
QzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGVhcEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xODA2LDYgKzE4MTAsOCBAQAogCQkJCTE0MkUzMTMxMTM0RkYwQTYwMEFGQURCNSAvKiBMb2Nh
bFNjb3BlLmggKi8sCiAJCQkJMTRCNzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFj
a01hcmtlci5jcHAgKi8sCiAJCQkJMTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVT
dGFja01hcmtlci5oICovLAorCQkJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRB
bGxvY2F0b3IuY3BwICovLAorCQkJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRB
bGxvY2F0b3IuaCAqLywKIAkJCQkxNDJENkYwNjEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxv
Y2suY3BwICovLAogCQkJCTE0MkQ2RjA3MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5o
ICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LApAQCAtMjY3OCw2ICsyNjg0LDcgQEAKIAkJCQlBNzNCRTE2OTE0ODQyMDUyMDA5MTIwNEIgLyog
QXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRDlDQTEzMTRCQ0MwNDYwMDMwNEI0
NiAvKiBDaGVja2VkQm9vbGVhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczQkUxNkIxNDg0MjA1
MjAwOTEyMDRCIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJCOTE2
QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY0LDYgKzM2NzEsNyBAQAogCQkJCTBG
NTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxs
b2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGM2Mzg2YmM3ZDQyNTFmN2JhNjg3NTc3NWVkMGZjM2Qz
ODNhNmY4OWMuLjZiMjY5NmM4OTg2ODNjNTM5MzhmNTkxNGMzZmM4MGJlYTAyMGQyZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJERkdKSVRDb21waWxlci5oIgogI2luY2x1ZGUgIkRGR09TUkV4
aXQuaCIKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiTWFya2VkQWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CkBAIC0xNTQ0LDkgKzE1NDUsOSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0
dXJlLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xh
c3MqIHNpemVDbGFzcyA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuc2l6ZUNsYXNzRm9yT2Jq
ZWN0KHNpemVvZihKU0ZpbmFsT2JqZWN0KSk7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxs
b2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3Qoc2l6
ZW9mKEpTRmluYWxPYmplY3QpKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoJnNp
emVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0
cigmYWxsb2NhdG9yLT5tX2ZpcnN0RnJlZUNlbGwsIHJlc3VsdEdQUik7CiAgICAgICAgIHNsb3dQ
YXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1
bHRHUFIpKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBvYmplY3QgaXMgaGFsZi1hbGxvY2F0
ZWQ6IHdlIGhhdmUgd2hhdCB3ZSBrbm93IGlzIGEgZnJlc2ggb2JqZWN0LCBidXQKQEAgLTE1NTgs
NyArMTU1OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICAvLyBOb3cgdGhhdCB3ZSBo
YXZlIHNjcmF0Y2hHUFIgYmFjaywgcmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0
CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsICZzaXpl
Q2xhc3MtPmZpcnN0RnJlZUNlbGwpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
LCAmYWxsb2NhdG9yLT5tX2ZpcnN0RnJlZUNlbGwpOwogICAgICAgICAKICAgICAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgb2JqZWN0J3MgY2xhc3NJbmZvIHBvaW50ZXIKICAgICAgICAgbV9qaXQuc3Rv
cmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTRmluYWxPYmplY3Q6OnNfaW5m
byksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBhMjEzNjA4M2Fi
NDI1ZDQxYjdhY2NmNmU1NDU2NjFiNDI2M2NjZjMxLi45ZjUwOTRhNTg0MjdjM2Q5YTcyODNkMDli
OGEwMDYwZjhjOTRmZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtODEx
LDcgKzgxMSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2dsZSkK
IAogICAgIHsKICAgICAgICAgR0NQSEFTRShSZXNldEFsbG9jYXRvcik7Ci0gICAgICAgIHJlc2V0
QWxsb2NhdG9yKCk7CisgICAgICAgIHJlc2V0QWxsb2NhdG9ycygpOwogICAgIH0KICAgICAKICAg
ICB7CkBAIC04NDYsMTAgKzg0NiwxMCBAQCB2b2lkIEhlYXA6OmNhbm9uaWNhbGl6ZUNlbGxMaXZl
bmVzc0RhdGEoKQogICAgIG1fb2JqZWN0U3BhY2UuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0
YSgpOwogfQogCi12b2lkIEhlYXA6OnJlc2V0QWxsb2NhdG9yKCkKK3ZvaWQgSGVhcDo6cmVzZXRB
bGxvY2F0b3JzKCkKIHsKICAgICBtX2V4dHJhQ29zdCA9IDA7Ci0gICAgbV9vYmplY3RTcGFjZS5y
ZXNldEFsbG9jYXRvcigpOworICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7CiB9
CiAKIHZvaWQgSGVhcDo6c2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gYWN0aXZpdHlDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRl
eCA0MGE4Mzc2ZjAxNmEzYjUyNTEyZTY2YTNlNWJkNDhjZGEyODVmODZhLi4xZDBhYzU0MDc2NmYy
ZTg4MmVhYmY2MWU3MjcwN2Q3ZGU2ZmU5MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiREZHQ29kZUJsb2Nrcy5oIgogI2luY2x1ZGUg
IkhhbmRsZUhlYXAuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgorI2luY2x1ZGUgIk1hcmtl
ZEFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2Vk
QmxvY2tTZXQuaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgpAQCAtOTQsNyArOTUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxl
Y3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7CiAgICAg
ICAgIAotICAgICAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3NGb3JPYmplY3Qo
c2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVjdFNwYWNlLnNpemVDbGFzc0ZvcihieXRlcyk7
IH0KKyAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3Qoc2l6ZV90IGJ5
dGVzKSB7IHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRvckZvcihieXRlcyk7IH0KICAgICAg
ICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKICAgICAgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5QWxs
b2NhdGVTdG9yYWdlKHNpemVfdCwgdm9pZCoqKTsKICAgICAgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5
UmVhbGxvY2F0ZVN0b3JhZ2Uodm9pZCoqLCBzaXplX3QsIHNpemVfdCk7CkBAIC0xMzYsNiArMTM3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgTWFya2VkU3BhY2U7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJ1
bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwpAQCAtMTYwLDcgKzE2
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBjb25zZXJ2YXRpdmUgbWFya2luZywg
ZWFnZXIgc3dlZXBpbmcsIG9yIGl0ZXJhdGluZyB0aGUgY2VsbHMgaW4gYSBNYXJrZWRCbG9jay4p
CiAgICAgICAgIHZvaWQgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogCi0gICAgICAg
IHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKKyAgICAgICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsK
ICAgICAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKik7CiAKICAgICAgICAgdm9pZCBj
bGVhck1hcmtzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2Nh
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MjM5ZmJhZWRmYzBjOTgxODI4MTJhMTEyYzllMWNhNDllNzBi
NTFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcApAQCAtMCwwICsxLDEyOCBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgorCisjaW5jbHVkZSAiSGVhcC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworaW5saW5lIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVIZWxw
ZXIoKQoreworICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCA9IG1fZmly
c3RGcmVlQ2VsbDsKKyAgICBpZiAoIWZpcnN0RnJlZUNlbGwpIHsKKyAgICAgICAgZm9yIChNYXJr
ZWRCbG9jayomIGJsb2NrID0gbV9jdXJyZW50QmxvY2s7IGJsb2NrOyBibG9jayA9IHN0YXRpY19j
YXN0PE1hcmtlZEJsb2NrKj4oYmxvY2stPm5leHQoKSkpIHsKKyAgICAgICAgICAgIGZpcnN0RnJl
ZUNlbGwgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAg
ICAgICAgICBpZiAoZmlyc3RGcmVlQ2VsbCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIG1fbWFya2VkU3BhY2UtPmRpZENvbnN1bWVGcmVlTGlzdChibG9jayk7CisgICAgICAg
ICAgICBibG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGlmICghZmlyc3RGcmVlQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICAKKyAgICBBU1NFUlQoZmlyc3RGcmVlQ2VsbCk7CisgICAgbV9maXJzdEZyZWVDZWxsID0g
Zmlyc3RGcmVlQ2VsbC0+bmV4dDsKKyAgICByZXR1cm4gZmlyc3RGcmVlQ2VsbDsKK30KKyAgICAK
K2lubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlKCkKK3sKKyAgICBtX2hl
YXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRpb247CisgICAgdm9pZCogcmVzdWx0
ID0gdHJ5QWxsb2NhdGVIZWxwZXIoKTsKKyAgICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9IE5vT3BlcmF0aW9uOworICAgIHJldHVybiByZXN1bHQ7Cit9CisgICAgCit2b2lkKiBNYXJr
ZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoKQoreworI2lmIENPTExFQ1RfT05fRVZFUllf
QUxMT0NBVElPTgorICAgIG1faGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKKyAgICBBU1NFUlQo
bV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworI2VuZGlmCisg
ICAgCisgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoKTsKKyAgICAKKyAgICBpZiAoTElL
RUxZKHJlc3VsdCAhPSAwKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAKKyAgICBBbGxv
Y2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQ7CisgICAgCisgICAgaWYgKCgKKyNpZiBFTkFC
TEUoR0dDKQorICAgICAgICAgbnVyc2VyeVdhdGVyTWFyaygpIDwgbV9oZWFwLT5tX21pbkJ5dGVz
UGVyQ3ljbGUKKyNlbHNlCisgICAgICAgICBtX2hlYXAtPndhdGVyTWFyaygpIDwgbV9oZWFwLT5o
aWdoV2F0ZXJNYXJrKCkKKyNlbmRpZgorICAgICAgICAgKSB8fCAhbV9oZWFwLT5tX2lzU2FmZVRv
Q29sbGVjdCkKKyAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25NdXN0U3VjY2Vl
ZDsKKyAgICBlbHNlCisgICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uQ2FuRmFp
bDsKKyAgICAKKyAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBhbGxvY2F0ZUJsb2NrKGFsbG9jYXRp
b25FZmZvcnQpOworICAgIGlmIChibG9jaykgeworICAgICAgICBhZGRCbG9jayhibG9jayk7Cisg
ICAgICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlKCk7CisgICAgICAgIEFTU0VSVChyZXN1
bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBtX2hlYXAtPmNv
bGxlY3QoSGVhcDo6RG9Ob3RTd2VlcCk7CisgICAgCisgICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUo
KTsKKyAgICAKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAor
ICAgIEFTU0VSVChtX2hlYXAtPndhdGVyTWFyaygpIDwgbV9oZWFwLT5oaWdoV2F0ZXJNYXJrKCkp
OworICAgIAorICAgIGFkZEJsb2NrKGFsbG9jYXRlQmxvY2soQWxsb2NhdGlvbk11c3RTdWNjZWVk
KSk7CisgICAgCisgICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoKTsKKyAgICBBU1NFUlQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorTWFya2VkQmxvY2sqIE1hcmtlZEFsbG9j
YXRvcjo6YWxsb2NhdGVCbG9jayhBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQpCit7
CisgICAgTWFya2VkQmxvY2sqIGJsb2NrOworICAgIAorICAgIHsKKyAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKKyAgICAgICAgaWYgKG1faGVhcC0+
bV9udW1iZXJPZkZyZWVCbG9ja3MpIHsKKyAgICAgICAgICAgIGJsb2NrID0gc3RhdGljX2Nhc3Q8
TWFya2VkQmxvY2sqPihtX2hlYXAtPm1fZnJlZUJsb2Nrcy5yZW1vdmVIZWFkKCkpOworICAgICAg
ICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZyZWVC
bG9ja3MtLTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBibG9jayA9IDA7CisgICAgfQor
ICAgIGlmIChibG9jaykKKyAgICAgICAgYmxvY2sgPSBNYXJrZWRCbG9jazo6cmVjeWNsZShibG9j
aywgbV9oZWFwLCBtX2NlbGxTaXplKTsKKyAgICBlbHNlIGlmIChhbGxvY2F0aW9uRWZmb3J0ID09
IEFsbG9jYXRpb25DYW5GYWlsKQorICAgICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisgICAgICAg
IGJsb2NrID0gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAsIG1fY2VsbFNpemUpOworICAgIAor
ICAgIG1fbWFya2VkU3BhY2UtPmRpZEFkZEJsb2NrKGJsb2NrKTsKKyAgICAKKyAgICByZXR1cm4g
YmxvY2s7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG9jayog
YmxvY2spCit7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRCbG9jayk7CisgICAgQVNTRVJUKCFtX2Zp
cnN0RnJlZUNlbGwpOworICAgIAorICAgIG1fYmxvY2tMaXN0LmFwcGVuZChibG9jayk7CisgICAg
bV9jdXJyZW50QmxvY2sgPSBibG9jazsKKyAgICBtX2ZpcnN0RnJlZUNlbGwgPSBibG9jay0+c3dl
ZXAoTWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7Cit9CisKK3ZvaWQgTWFya2VkQWxsb2Nh
dG9yOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCit7CisgICAgaWYgKG1fY3VycmVu
dEJsb2NrID09IGJsb2NrKQorICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7CisgICAgbV9ibG9j
a0xpc3QucmVtb3ZlKGJsb2NrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NDRjNjkx
Yjg3Y2Y3ZjIzYjAyYjU2NWQzY2RhZjY1ZmQyYWViZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaApAQCAtMCwwICsxLDk3IEBA
CisjaWZuZGVmIE1hcmtlZEFsbG9jYXRvcl9oCisjZGVmaW5lIE1hcmtlZEFsbG9jYXRvcl9oCisK
KyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFwOworY2xhc3MgTWFya2VkU3BhY2U7
CisKK25hbWVzcGFjZSBERkcgeworY2xhc3MgU3BlY3VsYXRpdmVKSVQ7Cit9CisKK2NsYXNzIE1h
cmtlZEFsbG9jYXRvciB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3Mg
REZHOjpTcGVjdWxhdGl2ZUpJVDsKKworcHVibGljOgorICAgIE1hcmtlZEFsbG9jYXRvcigpOwor
ICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHphcEZyZWVMaXN0KCk7CisgICAgc2l6ZV90IGNl
bGxTaXplKCkgeyByZXR1cm4gbV9jZWxsU2l6ZTsgfQorICAgIHZvaWQqIGFsbG9jYXRlKCk7Cisg
ICAgSGVhcCogaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKKyAgICAKKyAgICB2
b2lkIGFkZEJsb2NrKE1hcmtlZEJsb2NrKik7CisgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRC
bG9jayopOworICAgIHZvaWQgc2V0SGVhcChIZWFwKiBoZWFwKSB7IG1faGVhcCA9IGhlYXA7IH0K
KyAgICB2b2lkIHNldENlbGxTaXplKHNpemVfdCBjZWxsU2l6ZSkgeyBtX2NlbGxTaXplID0gY2Vs
bFNpemU7IH0KKyAgICB2b2lkIHNldE1hcmtlZFNwYWNlKE1hcmtlZFNwYWNlKiBzcGFjZSkgeyBt
X21hcmtlZFNwYWNlID0gc3BhY2U7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZSgpOworICAgIHZvaWQqIHRyeUFsbG9jYXRlKCk7
CisgICAgdm9pZCogdHJ5QWxsb2NhdGVIZWxwZXIoKTsKKyAgICBNYXJrZWRCbG9jayogYWxsb2Nh
dGVCbG9jayhBbGxvY2F0aW9uRWZmb3J0KTsKKyAgICAKKyAgICBNYXJrZWRCbG9jazo6RnJlZUNl
bGwqIG1fZmlyc3RGcmVlQ2VsbDsKKyAgICBNYXJrZWRCbG9jayogbV9jdXJyZW50QmxvY2s7Cisg
ICAgRG91Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+IG1fYmxvY2tMaXN0OworICAgIHNpemVfdCBt
X2NlbGxTaXplOworICAgIEhlYXAqIG1faGVhcDsKKyAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRT
cGFjZTsKK307CisKK2lubGluZSBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcigpCisg
ICAgOiBtX2ZpcnN0RnJlZUNlbGwoMCkKKyAgICAsIG1fY3VycmVudEJsb2NrKDApCisgICAgLCBt
X2NlbGxTaXplKDApCisgICAgLCBtX2hlYXAoMCkKKyAgICAsIG1fbWFya2VkU3BhY2UoMCkKK3sK
K30KKyAgICAKK2lubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlKCkKK3sKKyAg
ICBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGwgPSBtX2ZpcnN0RnJlZUNlbGw7
CisgICAgLy8gVGhpcyBpcyBhIGxpZ2h0LXdlaWdodCBmYXN0IHBhdGggdG8gY292ZXIgdGhlIG1v
c3QgY29tbW9uIGNhc2UuCisgICAgaWYgKFVOTElLRUxZKCFmaXJzdEZyZWVDZWxsKSkKKyAgICAg
ICAgcmV0dXJuIGFsbG9jYXRlU2xvd0Nhc2UoKTsKKyAgICAKKyAgICBtX2ZpcnN0RnJlZUNlbGwg
PSBmaXJzdEZyZWVDZWxsLT5uZXh0OworICAgIHJldHVybiBmaXJzdEZyZWVDZWxsOworfQorCitp
bmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3sKKyAgICBtX2N1cnJlbnRCbG9j
ayA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4obV9ibG9ja0xpc3QuaGVhZCgpKTsKK30KKwor
aW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjp6YXBGcmVlTGlzdCgpCit7CisgICAgaWYgKCFt
X2N1cnJlbnRCbG9jaykgeworICAgICAgICBBU1NFUlQoIW1fZmlyc3RGcmVlQ2VsbCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9jdXJyZW50QmxvY2stPnphcEZyZWVMaXN0
KG1fZmlyc3RGcmVlQ2VsbCk7CisgICAgbV9maXJzdEZyZWVDZWxsID0gMDsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFj
aEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSGVhcEJsb2NrKiBuZXh0OworICAgIGZv
ciAoSGVhcEJsb2NrKiBibG9jayA9IG1fYmxvY2tMaXN0LmhlYWQoKTsgYmxvY2s7IGJsb2NrID0g
bmV4dCkgeworICAgICAgICBuZXh0ID0gYmxvY2stPm5leHQoKTsKKyAgICAgICAgZnVuY3Rvcihz
dGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KGJsb2NrKSk7CisgICAgfQorfQorICAgIAorfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwCmluZGV4IGZjY2ExODhlNDcxN2EzZGVjNWI1M2JiN2FkZmI3ODMyYmM3ZTA4NzIu
Ljg3ZGMwNDkzZGM1ZTNmMTkxZmRiMDgwMzk1YjFlOTk2MDI1OTc4NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKQEAgLTM1LDE1NSArMzUsNDAgQEAgTWFy
a2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgLCBtX251cnNlcnlXYXRlck1h
cmsoMCkKICAgICAsIG1faGVhcChoZWFwKQogewotICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0g
cHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNp
c2VTdGVwKQotICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLmNlbGxTaXplID0gY2VsbFNp
emU7Ci0KLSAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXpl
IDw9IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkKLSAgICAgICAg
c2l6ZUNsYXNzRm9yKGNlbGxTaXplKS5jZWxsU2l6ZSA9IGNlbGxTaXplOwotfQotCi12b2lkIE1h
cmtlZFNwYWNlOjphZGRCbG9jayhTaXplQ2xhc3MmIHNpemVDbGFzcywgTWFya2VkQmxvY2sqIGJs
b2NrKQotewotICAgIEFTU0VSVCghc2l6ZUNsYXNzLmN1cnJlbnRCbG9jayk7Ci0gICAgQVNTRVJU
KCFzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCk7Ci0KLSAgICBzaXplQ2xhc3MuYmxvY2tMaXN0LmFw
cGVuZChibG9jayk7Ci0gICAgc2l6ZUNsYXNzLmN1cnJlbnRCbG9jayA9IGJsb2NrOwotICAgIHNp
emVDbGFzcy5maXJzdEZyZWVDZWxsID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpTd2VlcFRv
RnJlZUxpc3QpOwotfQorICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNl
bGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CisgICAg
ICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuc2V0Q2VsbFNpemUoY2VsbFNpemUpOworICAgICAg
ICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLnNldEhlYXAoaGVhcCk7CisgICAgICAgIGFsbG9jYXRv
ckZvcihjZWxsU2l6ZSkuc2V0TWFya2VkU3BhY2UodGhpcyk7CisgICAgfQogCi12b2lkIE1hcmtl
ZFNwYWNlOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCi17Ci0gICAgU2l6ZUNsYXNz
JiBzaXplQ2xhc3MgPSBzaXplQ2xhc3NGb3IoYmxvY2stPmNlbGxTaXplKCkpOwotICAgIGlmIChz
aXplQ2xhc3MuY3VycmVudEJsb2NrID09IGJsb2NrKQotICAgICAgICBzaXplQ2xhc3MuY3VycmVu
dEJsb2NrID0gMDsKLSAgICBzaXplQ2xhc3MuYmxvY2tMaXN0LnJlbW92ZShibG9jayk7CisgICAg
Zm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNp
c2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKKyAgICAgICAgYWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS5zZXRDZWxsU2l6ZShjZWxsU2l6ZSk7CisgICAgICAgIGFsbG9jYXRvckZv
cihjZWxsU2l6ZSkuc2V0SGVhcChoZWFwKTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS5zZXRNYXJrZWRTcGFjZSh0aGlzKTsKKyAgICB9CiB9CiAKLXZvaWQgTWFya2VkU3BhY2U6OnJl
c2V0QWxsb2NhdG9yKCkKK3ZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCiB7CiAg
ICAgbV93YXRlck1hcmsgPSAwOwogICAgIG1fbnVyc2VyeVdhdGVyTWFyayA9IDA7CiAKICAgICBm
b3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0
b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkKLSAgICAgICAgc2l6ZUNsYXNzRm9yKGNlbGxT
aXplKS5yZXNldEFsbG9jYXRvcigpOworICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLnJl
c2V0KCk7CiAKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxT
aXplIDw9IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkKLSAgICAg
ICAgc2l6ZUNsYXNzRm9yKGNlbGxTaXplKS5yZXNldEFsbG9jYXRvcigpOworICAgICAgICBhbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmNhbm9u
aWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0g
cHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNp
c2VTdGVwKQotICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLnphcEZyZWVMaXN0KCk7Cisg
ICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuemFwRnJlZUxpc3QoKTsKIAogICAgIGZvciAo
c2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1wcmVjaXNlQ3V0
b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKQotICAgICAgICBzaXplQ2xhc3NGb3IoY2Vs
bFNpemUpLnphcEZyZWVMaXN0KCk7CisgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuemFw
RnJlZUxpc3QoKTsKIH0KIAotaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUhl
bHBlcihNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi17Ci0gICAgTWFya2VkQmxv
Y2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7Ci0g
ICAgaWYgKCFmaXJzdEZyZWVDZWxsKSB7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2sqJiBibG9j
ayA9IHNpemVDbGFzcy5jdXJyZW50QmxvY2s7IGJsb2NrOyBibG9jayA9IHN0YXRpY19jYXN0PE1h
cmtlZEJsb2NrKj4oYmxvY2stPm5leHQoKSkpIHsKLSAgICAgICAgICAgIGZpcnN0RnJlZUNlbGwg
PSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgICAg
ICBpZiAoZmlyc3RGcmVlQ2VsbCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IG1fbnVyc2VyeVdhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKSAtIGJsb2NrLT5zaXplKCk7
Ci0gICAgICAgICAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKLSAgICAgICAg
ICAgIGJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghZmlyc3RGcmVlQ2VsbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEFT
U0VSVChmaXJzdEZyZWVDZWxsKTsKLSAgICBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCA9IGZpcnN0
RnJlZUNlbGwtPm5leHQ7Ci0gICAgcmV0dXJuIGZpcnN0RnJlZUNlbGw7Ci19Ci0KLWlubGluZSB2
b2lkKiBNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6
ZUNsYXNzKQotewotICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlv
bjsKLSAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUhlbHBlcihzaXplQ2xhc3MpOwotICAg
IG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlU2xvd0Nhc2UoTWFya2Vk
U3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQotewotI2lmIENPTExFQ1RfT05fRVZFUllfQUxM
T0NBVElPTgotICAgIG1faGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKLSAgICBBU1NFUlQobV9o
ZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwotI2VuZGlmCi0gICAg
Ci0gICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICAKLSAgICBp
ZiAoTElLRUxZKHJlc3VsdCAhPSAwKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAKLSAg
ICBBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQ7Ci0gICAgCi0gICAgaWYgKCgKLSNp
ZiBFTkFCTEUoR0dDKQotICAgICAgICAgbnVyc2VyeVdhdGVyTWFyaygpIDwgbV9oZWFwLT5tX21p
bkJ5dGVzUGVyQ3ljbGUKLSNlbHNlCi0gICAgICAgICBtX2hlYXAtPndhdGVyTWFyaygpIDwgbV9o
ZWFwLT5oaWdoV2F0ZXJNYXJrKCkKLSNlbmRpZgotICAgICAgICAgKSB8fCAhbV9oZWFwLT5tX2lz
U2FmZVRvQ29sbGVjdCkKLSAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25NdXN0
U3VjY2VlZDsKLSAgICBlbHNlCi0gICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9u
Q2FuRmFpbDsKLSAgICAKLSAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBhbGxvY2F0ZUJsb2NrKHNp
emVDbGFzcy5jZWxsU2l6ZSwgYWxsb2NhdGlvbkVmZm9ydCk7Ci0gICAgaWYgKGJsb2NrKSB7Ci0g
ICAgICAgIGFkZEJsb2NrKHNpemVDbGFzcywgYmxvY2spOwotICAgICAgICB2b2lkKiByZXN1bHQg
PSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgbV9oZWFwLT5jb2xsZWN0KEhlYXA6
OkRvTm90U3dlZXApOwotICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7
Ci0gICAgCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAKLSAg
ICBBU1NFUlQobV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGlnaFdhdGVyTWFyaygpKTsK
LSAgICAKLSAgICBhZGRCbG9jayhzaXplQ2xhc3MsIGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNl
bGxTaXplLCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQpKTsKLSAgICAKLSAgICByZXN1bHQgPSB0cnlB
bGxvY2F0ZShzaXplQ2xhc3MpOwotICAgIEFTU0VSVChyZXN1bHQpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLU1hcmtlZEJsb2NrKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVCbG9jayhzaXplX3Qg
Y2VsbFNpemUsIEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydCkKLXsKLSAgICBNYXJr
ZWRCbG9jayogYmxvY2s7Ci0gICAgCi0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICBpZiAobV9oZWFwLT5tX251bWJlck9m
RnJlZUJsb2NrcykgewotICAgICAgICAgICAgYmxvY2sgPSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9j
ayo+KG1faGVhcC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKSk7Ci0gICAgICAgICAgICBBU1NF
UlQoYmxvY2spOwotICAgICAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2Nrcy0tOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJsb2NrID0gMDsKLSAgICB9Ci0gICAgaWYgKGJs
b2NrKQotICAgICAgICBibG9jayA9IE1hcmtlZEJsb2NrOjpyZWN5Y2xlKGJsb2NrLCBtX2hlYXAs
IGNlbGxTaXplKTsKLSAgICBlbHNlIGlmIChhbGxvY2F0aW9uRWZmb3J0ID09IEFsbG9jYXRpb25D
YW5GYWlsKQotICAgICAgICByZXR1cm4gMDsKLSAgICBlbHNlCi0gICAgICAgIGJsb2NrID0gTWFy
a2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAsIGNlbGxTaXplKTsKLSAgICAKLSAgICBtX2Jsb2Nrcy5h
ZGQoYmxvY2spOwotICAgIAotICAgIHJldHVybiBibG9jazsKLX0KIAogdm9pZCBNYXJrZWRTcGFj
ZTo6ZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCkKIHsKQEAgLTIyMiw3ICsxMDcsNyBAQCBp
bmxpbmUgdm9pZCBUYWtlSWZVbm1hcmtlZDo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2sp
CiAgICAgaWYgKCFibG9jay0+bWFya0NvdW50SXNaZXJvKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBtX21hcmtlZFNwYWNlLT5yZW1vdmVCbG9jayhibG9jayk7CisgICAgbV9tYXJrZWRT
cGFjZS0+YWxsb2NhdG9yRm9yKGJsb2NrLT5jZWxsU2l6ZSgpKS5yZW1vdmVCbG9jayhibG9jayk7
CiAgICAgbV9lbXB0aWVzLmFwcGVuZChibG9jayk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5oCmluZGV4IGY3ZDk2Yzc3NDc4NzJhNzY0YmM1OTJjN2ZhNWNhMzZl
NTQ1MDlhZDAuLjIxYTBiNDhkZThkMmQ5M2UzMTlmZTQyYjljZTY1MDM5NGFkYzE1OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaApAQCAtMjMsNiArMjMsNyBAQAog
I2RlZmluZSBNYXJrZWRTcGFjZV9oCiAKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIK
KyNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgog
I2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiUGFnZUFsbG9jYXRpb25BbGln
bmVkLmgiCkBAIC00OCwyNyArNDksMTMgQEAgY2xhc3MgTWFya2VkU3BhY2UgewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUgPSAyMDQ4OwogCi0gICAgc3RydWN0
IFNpemVDbGFzcyB7Ci0gICAgICAgIFNpemVDbGFzcygpOwotICAgICAgICB2b2lkIHJlc2V0QWxs
b2NhdG9yKCk7Ci0gICAgICAgIHZvaWQgemFwRnJlZUxpc3QoKTsKLQotICAgICAgICBNYXJrZWRC
bG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGw7Ci0gICAgICAgIE1hcmtlZEJsb2NrKiBjdXJy
ZW50QmxvY2s7Ci0gICAgICAgIERvdWJseUxpbmtlZExpc3Q8SGVhcEJsb2NrPiBibG9ja0xpc3Q7
Ci0gICAgICAgIHNpemVfdCBjZWxsU2l6ZTsKLSAgICB9OwotCiAgICAgTWFya2VkU3BhY2UoSGVh
cCopOwogCi0gICAgU2l6ZUNsYXNzJiBzaXplQ2xhc3NGb3Ioc2l6ZV90KTsKKyAgICBNYXJrZWRB
bGxvY2F0b3ImIGFsbG9jYXRvckZvcihzaXplX3QpOwogICAgIHZvaWQqIGFsbG9jYXRlKHNpemVf
dCk7Ci0gICAgdm9pZCogYWxsb2NhdGUoU2l6ZUNsYXNzJik7CiAgICAgCi0gICAgdm9pZCByZXNl
dEFsbG9jYXRvcigpOworICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CiAKLSAgICB2b2lkIGFk
ZEJsb2NrKFNpemVDbGFzcyYsIE1hcmtlZEJsb2NrKik7Ci0gICAgdm9pZCByZW1vdmVCbG9jayhN
YXJrZWRCbG9jayopOwogICAgIE1hcmtlZEJsb2NrU2V0JiBibG9ja3MoKSB7IHJldHVybiBtX2Js
b2NrczsgfQogICAgIAogICAgIHZvaWQgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwpA
QCAtODUsMTMgKzcyLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNocmluaygpOwogICAg
IHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCk7CisgICAgdm9pZCBkaWRBZGRCbG9j
ayhNYXJrZWRCbG9jayopOworICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KE1hcmtlZEJsb2Nr
Kik7CiAKIHByaXZhdGU6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93
Q2FzZShTaXplQ2xhc3MmKTsKLSAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcihNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzJik7Ci0gICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVD
bGFzcyYpOwotICAgIE1hcmtlZEJsb2NrKiBhbGxvY2F0ZUJsb2NrKHNpemVfdCwgQWxsb2NhdGlv
bkVmZm9ydCk7Ci0KICAgICAvLyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkBAIC0xMDIsOCArODYsOCBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ3V0b2ZmID0gbWF4Q2VsbFNpemU7CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDb3VudCA9IGltcHJlY2lzZUN1dG9mZiAv
IGltcHJlY2lzZVN0ZXA7CiAKLSAgICBGaXhlZEFycmF5PFNpemVDbGFzcywgcHJlY2lzZUNvdW50
PiBtX3ByZWNpc2VTaXplQ2xhc3NlczsKLSAgICBGaXhlZEFycmF5PFNpemVDbGFzcywgaW1wcmVj
aXNlQ291bnQ+IG1faW1wcmVjaXNlU2l6ZUNsYXNzZXM7CisgICAgRml4ZWRBcnJheTxNYXJrZWRB
bGxvY2F0b3IsIHByZWNpc2VDb3VudD4gbV9wcmVjaXNlU2l6ZUNsYXNzZXM7CisgICAgRml4ZWRB
cnJheTxNYXJrZWRBbGxvY2F0b3IsIGltcHJlY2lzZUNvdW50PiBtX2ltcHJlY2lzZVNpemVDbGFz
c2VzOwogICAgIHNpemVfdCBtX3dhdGVyTWFyazsKICAgICBzaXplX3QgbV9udXJzZXJ5V2F0ZXJN
YXJrOwogICAgIEhlYXAqIG1faGVhcDsKQEAgLTEzNiw3ICsxMjAsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRT
cGFjZTo6Zm9yRQogICAgIHJldHVybiBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKIH0KIAotaW5saW5l
IE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIE1hcmtlZFNwYWNlOjpzaXplQ2xhc3NGb3Ioc2l6ZV90
IGJ5dGVzKQoraW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmFsbG9jYXRvckZv
cihzaXplX3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzICYmIGJ5dGVzIDw9IG1heENlbGxT
aXplKTsKICAgICBpZiAoYnl0ZXMgPD0gcHJlY2lzZUN1dG9mZikKQEAgLTE0NiwzOSArMTMwLDE3
IEBAIGlubGluZSBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBNYXJrZWRTcGFjZTo6c2l6ZUNsYXNz
Rm9yKHNpemVfdCBieXRlcykKIAogaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShz
aXplX3QgYnl0ZXMpCiB7Ci0gICAgU2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBzaXplQ2xhc3NGb3Io
Ynl0ZXMpOwotICAgIHJldHVybiBhbGxvY2F0ZShzaXplQ2xhc3MpOwotfQotCi1pbmxpbmUgdm9p
ZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlKFNpemVDbGFzcyYgc2l6ZUNsYXNzKQotewotICAgIC8v
IFRoaXMgaXMgYSBsaWdodC13ZWlnaHQgZmFzdCBwYXRoIHRvIGNvdmVyIHRoZSBtb3N0IGNvbW1v
biBjYXNlLgotICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCA9IHNpemVD
bGFzcy5maXJzdEZyZWVDZWxsOwotICAgIGlmIChVTkxJS0VMWSghZmlyc3RGcmVlQ2VsbCkpCi0g
ICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3dDYXNlKHNpemVDbGFzcyk7Ci0gICAgCi0gICAgc2l6
ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBmaXJzdEZyZWVDZWxsLT5uZXh0OwotICAgIHJldHVybiBm
aXJzdEZyZWVDZWxsOworICAgIHJldHVybiBhbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKCk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3Ip
CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgewotICAg
ICAgICBTaXplQ2xhc3MmIHNpemVDbGFzcyA9IG1fcHJlY2lzZVNpemVDbGFzc2VzW2ldOwotICAg
ICAgICBIZWFwQmxvY2sqIG5leHQ7Ci0gICAgICAgIGZvciAoSGVhcEJsb2NrKiBibG9jayA9IHNp
emVDbGFzcy5ibG9ja0xpc3QuaGVhZCgpOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAg
ICAgICBuZXh0ID0gYmxvY2stPm5leHQoKTsKLSAgICAgICAgICAgIGZ1bmN0b3Ioc3RhdGljX2Nh
c3Q8TWFya2VkQmxvY2sqPihibG9jaykpOwotICAgICAgICB9CisgICAgICAgIG1fcHJlY2lzZVNp
emVDbGFzc2VzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICB9CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpIHsKLSAgICAgICAgU2l6ZUNsYXNz
JiBzaXplQ2xhc3MgPSBtX2ltcHJlY2lzZVNpemVDbGFzc2VzW2ldOwotICAgICAgICBIZWFwQmxv
Y2sqIG5leHQ7Ci0gICAgICAgIGZvciAoSGVhcEJsb2NrKiBibG9jayA9IHNpemVDbGFzcy5ibG9j
a0xpc3QuaGVhZCgpOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0ID0g
YmxvY2stPm5leHQoKTsKLSAgICAgICAgICAgIGZ1bmN0b3Ioc3RhdGljX2Nhc3Q8TWFya2VkQmxv
Y2sqPihibG9jaykpOwotICAgICAgICB9CisgICAgICAgIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNb
aV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIH0KIAogICAgIHJldHVybiBmdW5jdG9yLnJl
dHVyblZhbHVlKCk7CkBAIC0xOTAsMjcgKzE1MiwxNSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZv
cgogICAgIHJldHVybiBmb3JFYWNoQmxvY2soZnVuY3Rvcik7CiB9CiAKLWlubGluZSBNYXJrZWRT
cGFjZTo6U2l6ZUNsYXNzOjpTaXplQ2xhc3MoKQotICAgIDogZmlyc3RGcmVlQ2VsbCgwKQotICAg
ICwgY3VycmVudEJsb2NrKDApCi0gICAgLCBjZWxsU2l6ZSgwKQotewotfQotCi1pbmxpbmUgdm9p
ZCBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpyZXNldEFsbG9jYXRvcigpCitpbmxpbmUgdm9pZCBN
YXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQogewotICAgIGN1cnJl
bnRCbG9jayA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4oYmxvY2tMaXN0LmhlYWQoKSk7Cisg
ICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OlNp
emVDbGFzczo6emFwRnJlZUxpc3QoKQoraW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmRpZENvbnN1
bWVGcmVlTGlzdChNYXJrZWRCbG9jayogYmxvY2spCiB7Ci0gICAgaWYgKCFjdXJyZW50QmxvY2sp
IHsKLSAgICAgICAgQVNTRVJUKCFmaXJzdEZyZWVDZWxsKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGN1cnJlbnRCbG9jay0+emFwRnJlZUxpc3QoZmlyc3RGcmVlQ2VsbCk7Ci0gICAg
Zmlyc3RGcmVlQ2VsbCA9IDA7CisgICAgbV9udXJzZXJ5V2F0ZXJNYXJrICs9IGJsb2NrLT5jYXBh
Y2l0eSgpIC0gYmxvY2stPnNpemUoKTsKKyAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNp
dHkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lTWV0aG9kcy5oCmluZGV4IGU2MTc5NjFiNTY4ZWJiMzEyODQ4NzNiZjk5MTAx
NjgxNTdjMjM0M2IuLjAxNTQ1ZmI4YzcyNzQ1MDk4YjRiNmE3ZTg4NDAyNmNhNzEzNDNkMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCkBAIC00MDEs
MTMgKzQwMSwxMyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFudElt
bWVkaWF0ZUNoYXIodW5zaWduZWQgc3JjKQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBl
LCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUJh
c2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBS
ZWdpc3RlcklEIHN0b3JhZ2VQdHIpCiB7Ci0gICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyogc2l6
ZUNsYXNzID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5zaXplQ2xhc3NGb3JPYmplY3Qoc2l6ZW9mKENs
YXNzVHlwZSkpOwotICAgIGxvYWRQdHIoJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCwgcmVzdWx0
KTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAu
YWxsb2NhdG9yRm9yT2JqZWN0KHNpemVvZihDbGFzc1R5cGUpKTsKKyAgICBsb2FkUHRyKCZhbGxv
Y2F0b3ItPm1fZmlyc3RGcmVlQ2VsbCwgcmVzdWx0KTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hU
ZXN0UHRyKFplcm8sIHJlc3VsdCkpOwogCiAgICAgLy8gcmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0
aGUgZnJlZSBsaXN0CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCksIHN0b3JhZ2VQdHIpOwot
ICAgIHN0b3JlUHRyKHN0b3JhZ2VQdHIsICZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwpOworICAg
IHN0b3JlUHRyKHN0b3JhZ2VQdHIsICZhbGxvY2F0b3ItPm1fZmlyc3RGcmVlQ2VsbCk7CiAKICAg
ICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUKICAgICBzdG9yZVB0cihzdHJ1
Y3R1cmUsIEFkZHJlc3MocmVzdWx0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125079</attachid>
            <date>2012-02-01 22:17:02 -0800</date>
            <delta_ts>2012-02-02 08:17:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77600-20120201221701.patch</filename>
            <type>text/plain</type>
            <size>34884</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTc4NjE0ZjJhMDE2MDM1MTNhMjQzODFkZWI0YmFjZGM2YTY5YjQ1Li40NmMxMjZmM2M2NzBjMzQy
ZGEzOGI2ZDU5MzY1NTRiYmM2N2UzNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxMi0wMi0wMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE1hcmtlZEJsb2NrOjpTaXplQ2xhc3MgaW50byBh
IHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzYwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIHB1bGxlZCBTaXplQ2xhc3Mgb3V0IGludG8gaXRzIG93biBjbGFzcywgbmFtZWQg
TWFya2VkQWxsb2NhdG9yLCBhbmQgZ2F2ZSBpdAorICAgICAgICB0aGUgcmVzcG9uc2liaWxpdHkg
b2YgYWxsb2NhdGluZyBvYmplY3RzIGZyb20gdGhlIGNvbGxlY3Rpb24gb2YgTWFya2VkQmxvY2tz
IAorICAgICAgICB0aGF0IGl0IG1hbmFnZXMuIEFsc28gbGltaXRlZCB0aGUgYW1vdW50IG9mIGNv
dXBsaW5nIHRvIGludGVybmFsIGRhdGEgZmllbGRzIAorICAgICAgICBmcm9tIG90aGVyIHBsYWNl
cywgYWx0aG91Z2ggaXQncyBtb3N0bHkgdW5hdm9pZGFibGUgaW4gdGhlIEpJVCBjb2RlLgorCisg
ICAgICAgIEV2ZW50dWFsbHkgTWFya2VkQWxsb2NhdG9yIHdpbGwgaW1wbGVtZW50IHZhcmlvdXMg
cG9saWNpZXMgdG8gZG8gd2l0aCBvYmplY3QgCisgICAgICAgIG1hbmFnZW1lbnQsIGUuZy4gd2hl
dGhlciBvciBub3QgdG8gcnVuIGRlc3RydWN0b3JzIG9uIG9iamVjdHMgdGhhdCBpdCBtYW5hZ2Vz
LgorICAgICAgICBNYXJrZWRTcGFjZSB3aWxsIG1hbmFnZSBhIGNvbGxlY3Rpb24gb2YgTWFya2Vk
QWxsb2NhdG9ycyB3aXRoIHZhcnlpbmcgcG9saWNpZXMsCisgICAgICAgIGFzIGl0IGRvZXMgbm93
IGJ1dCB0byBhIGxhcmdlciBleHRlbnQuIAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5l
eHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxv
Y2F0ZUpTRmluYWxPYmplY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChK
U0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjpyZXNldEFsbG9jYXRvcnMp
OgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JG
b3JPYmplY3QpOgorICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0
b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9j
YXRvcjo6dHJ5QWxsb2NhdGVIZWxwZXIpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnRyeUFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNs
b3dDYXNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6cmVtb3ZlQmxvY2spOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxs
b2NhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKERGRyk6CisgICAgICAg
IChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmNlbGxT
aXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpoZWFwKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQWxsb2NhdG9yOjpzZXRIZWFwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjpzZXRDZWxsU2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6c2V0TWFy
a2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRv
cik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAo
SlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjp6YXBGcmVlTGlzdCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFj
aEJsb2NrKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnJl
c2V0QWxsb2NhdG9ycyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpjYW5vbmljYWxpemVD
ZWxsTGl2ZW5lc3NEYXRhKToKKyAgICAgICAgKEpTQzo6VGFrZUlmVW5tYXJrZWQ6Om9wZXJhdG9y
KCkpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKE1hcmtlZFNwYWNl
KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcik6CisgICAgICAgIChK
U0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpm
b3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlkQ29uc3VtZUZyZWVMaXN0KToKKyAgICAgICAg
KiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0
ZUJhc2ljSlNPYmplY3QpOgorCiAyMDEyLTAyLTAxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IEVycm9yLnN0YWNrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTYyMGM1YTUyOTMzYmIwM2FiNThjYmZiZTJlZTY3
N2JhM2VkNjBjZi4uZWFhMzk1ZTE1ZmNhNjc2YjU1YjUzOWI2MTNjM2EwMDFlMWNhZjhhOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODAsNiArODAsNyBAQCBTRVQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvSGFuZGxlSGVhcC5jcHAKICAgICBoZWFwL0hh
bmRsZVN0YWNrLmNwcAogICAgIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorICAgIGhlYXAv
TWFya2VkQWxsb2NhdG9yLmNwcAogICAgIGhlYXAvTWFya2VkQmxvY2suY3BwCiAgICAgaGVhcC9N
YXJrZWRTcGFjZS5jcHAKICAgICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBkZTUzMzhkZDRmN2I0YmVmODI5
MjU1OWI3YmNjM2Y0ZjExOGU5YzMxLi4wZjEwZjI1N2VmMjNiZDc1YzFiYWMyMjliMWVjOGM0YzJk
OGEwZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MjA1LDYgKzIwNSw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZp
c2l0b3IuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2tTZXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAppbmRleCAyZjdiMzE1N2Y2ZGJiN2UwZDM1YjFhZTI0Yjc3OGQ5M2EyNDU5ZTM3
Li41ZjgwODAzZGIyYzA0ZjY3NTBjMWRiNWI0MTUxZjU2YTVkZTEwOGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTEyOCw3ICsxMjgsNiBAQCBfX1pOM0pT
QzExSlNCeXRlQXJyYXkzcHV0RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRU5TXzdKU1ZhbAogX19aTjNKU0MxMUpTQnl0ZUFycmF5NnNfaW5mb0UKIF9fWk4zSlND
MTFKU0J5dGVBcnJheTdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5
QzFFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5dGVBcnJheUUKLV9fWk4z
SlNDMTFNYXJrZWRTcGFjZTE2YWxsb2NhdGVTbG93Q2FzZUVSTlMwXzlTaXplQ2xhc3NFCiBfX1pO
M0pTQzExUGFyc2VyQXJlbmE1cmVzZXRFdgogX19aTjNKU0MxMWNoZWNrU3ludGF4RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBTb3VyY2VDb2RlRVBOU183SlNWYWx1ZUUKIF9fWk4zSlNDMTFjcmVhdGVF
cnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQpAQCAtMTkyLDYgKzE5MSw3IEBAIF9f
Wk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2CiBfX1pOM0pTQzE0VlRhYmxlU3BlY3RydW01
Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmlu
Z0UKK19fWk4zSlNDMTVNYXJrZWRBbGxvY2F0b3IxNmFsbG9jYXRlU2xvd0Nhc2VFdgogX19aTjNK
U0MxNVdlYWtIYW5kbGVPd25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNFTlNfNkhhbmRs
ZUlOU183VW5rbm93bkVFRVB2Uk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRs
ZU93bmVyOGZpbmFsaXplRU5TXzZIYW5kbGVJTlNfN1Vua25vd25FRUVQdgogX19aTjNKU0MxNVdl
YWtIYW5kbGVPd25lckQyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggOTNjOWU3NTY5NjYyYTI2ODBkZDQ1N2ZkNjY5ZjdhZTZi
ZjExZmQxNy4uNjZjZGVlODY2OGM3YTFhNTBjY2Y3OTE2MzI5YjdhNGM3YWY2OTNjNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAg
LTY0LDcgKzY0LDcgQEAgRVhQT1JUUwogICAgID9hZGRTbG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BA
Q0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAV1RGQEBQQVZKU0dsb2JhbERhdGFA
MkBQQVZTdHJpbmdJbXBsQDRAQFoKICAgICA/YWRkU3RhdGljR2xvYmFsc0BKU0dsb2JhbE9iamVj
dEBKU0NAQElBRVhQQVVHbG9iYWxQcm9wZXJ0eUluZm9AMTJASEBaCiAgICAgP2FsbG9jYXRlUHJv
cGVydHlTdG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFWEFBVkpTR2xvYmFsRGF0YUAyQElJQFoKLSAg
ICA/YWxsb2NhdGVTbG93Q2FzZUBNYXJrZWRTcGFjZUBKU0NAQEFBRVBBWEFBVVNpemVDbGFzc0Ax
MkBAWgorICAgID9hbGxvY2F0ZVNsb3dDYXNlQE1hcmtlZEFsbG9jYXRvckBKU0NAQEFBRVBBWFha
CiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCRUlAWgogICAgID9hcHBlbmRA
U3RyaW5nQnVpbGRlckBXVEZAQFFBRVhQQl9XSUBaCiAgICAgP2FzY2lpQFVTdHJpbmdASlNDQEBR
QkU/QVZDU3RyaW5nQFdURkBAWFoKQEAgLTI4Myw2ICsyODMsNyBAQCBFWFBPUlRTCiAgICAgP3Jl
aWZ5U3RyaW5nQFN0cmluZ0J1aWxkZXJAV1RGQEBBQkVYWFoKICAgICA/cmVsZWFzZURlY29tbWl0
dGVkQE9TQWxsb2NhdG9yQFdURkBAU0FYUEFYSUBaCiAgICAgP3JlbGVhc2VFeGVjdXRhYmxlTWVt
b3J5QEpTR2xvYmFsRGF0YUBKU0NAQFFBRVhYWgorICAgID9yZW1vdmVCbG9ja0BNYXJrZWRBbGxv
Y2F0b3JASlNDQEBRQUVYUEFWTWFya2VkQmxvY2tAMkBAWgogICAgID9yZXBvcnRFeHRyYU1lbW9y
eUNvc3RTbG93Q2FzZUBIZWFwQEpTQ0BAQUFFWElAWgogICAgID9yZXNlcnZlQW5kQ29tbWl0QE9T
QWxsb2NhdG9yQFdURkBAU0FQQVhJVzRVc2FnZUAxMkBfTjExQFoKICAgICA/cmVzZXJ2ZUNhcGFj
aXR5QFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYSUBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDlkOGIzZGQ1OGQ2NjJhYTQwMTc0MGMxZjUzODk4YjkwNzIyYzJjNGUuLmNlM2UzNWVl
NTY3MWQzN2I2N2M3OTIzYTM0OGJiMzJjYjlmNGNmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC03MjEsNiArNzIxLDggQEAKIAkJQzIyQzUzMTQxM0ZBRjZFRjAwQjdEQzBEIC8q
IHN0cnRvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzIyQzUyQkExM0ZBRjZFRjAwQjdEQzBEIC8qIHN0cnRvZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyMkM1MzE1MTNGQUY2RUYwMEI3REMwRCAv
KiB1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzIyQzUyQkIxM0ZBRjZFRjAwQjdEQzBEIC8qIHV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8q
IEJ1bXBTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQnVtcFNwYWNlLmNwcCAqLzsgfTsKKwkJ
QzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCOTE2QzExNERBMDE0RTAwQ0JB
Qzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxv
Y2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgKi87IH07CiAJ
CUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyQjE0QTND
NkIyMDA1NzhFNjUgLyogQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMwMTRBM0NFRkMwMDU3OEU2
NSAvKiBCdW1wQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBCdW1wQmxvY2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkM4RDAzMTE0QTNDRUZD
MDA1NzhFNjUgLyogSGVhcEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2NrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MDYsNiAr
MTUwOCw4IEBACiAJCUMyMkM1MkJBMTNGQUY2RUYwMEI3REMwRCAvKiBzdHJ0b2QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gc3RydG9kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyMkM1MkJCMTNGQUY2RUYwMEI3REMwRCAvKiB1dGlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSB1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQnVtcFNwYWNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1bXBTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAv
KiBNYXJrZWRBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWFya2VkQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJD
OEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIEJ1bXBTcGFjZUlubGluZU1ldGhvZHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyRTE0QTNDRUZDMDA1NzhFNjUgLyogQnVt
cEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bXBCbG9jay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyog
SGVhcEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBCbG9jay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwNiw2ICsxODEwLDggQEAKIAkJCQkx
NDJFMzEzMTEzNEZGMEE2MDBBRkFEQjUgLyogTG9jYWxTY29wZS5oICovLAogCQkJCTE0QjcyMzNG
MTJEN0QwREEwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwICovLAogCQkJCTE0Qjcy
MzQwMTJEN0QwREEwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuaCAqLywKKwkJCQlDMkI5
MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLywKKwkJCQlDMkI5
MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi8sCiAJCQkJMTQyRDZG
MDYxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCAqLywKIAkJCQkxNDJENkYwNzEz
NTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2suaCAqLywKIAkJCQkxNDE0NDhDQTEzQTE3NkVD
MDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQuaCAqLywKQEAgLTI2NzgsNiArMjY4NCw3IEBACiAJ
CQkJQTczQkUxNjkxNDg0MjA1MjAwOTEyMDRCIC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkQ5Q0ExMzE0QkNDMDQ2MDAzMDRCNDYgLyogQ2hlY2tlZEJvb2xlYW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3M0JFMTZCMTQ4NDIwNTIwMDkxMjA0QiAvKiBBcnJheUJ1ZmZlclZp
ZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJr
ZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNzBFMTZG
NUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NTI0MEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzY2NCw2ICszNjcxLDcgQEAKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyog
QWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2NzE0RDI3OTZDMDBBOUMz
MDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3
MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJCOTE2
QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKaW5kZXggYzYxZmIzN2YxMzA2NTc1OWM0MGYxNTU4OWE2
NjM3MWMwYWU3NGZiMS4uMTU1ZWUxMjRkN2VjODI4M2QyZjZkYjZiOGVjODdiMzI4NmRkZDI2MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKQEAgLTczLDYgKzczLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgaGVhcC9IZWFwLmNwcCBcCiAgICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIFwK
ICAgICBoZWFwL01hcmtTdGFjay5jcHAgXAorICAgIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcCBc
CiAgICAgaGVhcC9NYXJrZWRCbG9jay5jcHAgXAogICAgIGhlYXAvTWFya2VkU3BhY2UuY3BwIFwK
ICAgICBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYzYzODZiYzdkNDI1MWY3YmE2ODc1Nzc1ZWQw
ZmMzZDM4M2E2Zjg5Yy4uNmIyNjk2Yzg5ODY4M2M1MzkzOGY1OTE0YzNmYzgwYmVhMDIwZDJlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRGR0pJVENvbXBpbGVyLmgiCiAjaW5jbHVkZSAiREZH
T1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJNYXJrZWRB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKQEAgLTE1NDQsOSArMTU0NSw5IEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBz
dHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgTWFya2VkU3BhY2U6OlNp
emVDbGFzcyogc2l6ZUNsYXNzID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5zaXplQ2xhc3NG
b3JPYmplY3Qoc2l6ZW9mKEpTRmluYWxPYmplY3QpKTsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9y
KiBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVj
dChzaXplb2YoSlNGaW5hbE9iamVjdCkpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0
cigmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5s
b2FkUHRyKCZhbGxvY2F0b3ItPm1fZmlyc3RGcmVlQ2VsbCwgcmVzdWx0R1BSKTsKICAgICAgICAg
c2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IHJlc3VsdEdQUikpOwogICAgICAgICAKICAgICAgICAgLy8gVGhlIG9iamVjdCBpcyBoYWxmLWFs
bG9jYXRlZDogd2UgaGF2ZSB3aGF0IHdlIGtub3cgaXMgYSBmcmVzaCBvYmplY3QsIGJ1dApAQCAt
MTU1OCw3ICsxNTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyB0aGF0
IHdlIGhhdmUgc2NyYXRjaEdQUiBiYWNrLCByZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVl
IGxpc3QKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwg
JnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0
Y2hHUFIsICZhbGxvY2F0b3ItPm1fZmlyc3RGcmVlQ2VsbCk7CiAgICAgICAgIAogICAgICAgICAv
LyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBjbGFzc0luZm8gcG9pbnRlcgogICAgICAgICBtX2pp
dC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNGaW5hbE9iamVjdDo6
c19pbmZvKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGEyMTM2
MDgzYWI0MjVkNDFiN2FjY2Y2ZTU0NTY2MWI0MjYzY2NmMzEuLjlmNTA5NGE1ODQyN2MzZDlhNzI4
M2QwOWI4YTAwNjBmOGM5NGZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBA
IC04MTEsNyArODExLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9n
Z2xlKQogCiAgICAgewogICAgICAgICBHQ1BIQVNFKFJlc2V0QWxsb2NhdG9yKTsKLSAgICAgICAg
cmVzZXRBbGxvY2F0b3IoKTsKKyAgICAgICAgcmVzZXRBbGxvY2F0b3JzKCk7CiAgICAgfQogICAg
IAogICAgIHsKQEAgLTg0NiwxMCArODQ2LDEwIEBAIHZvaWQgSGVhcDo6Y2Fub25pY2FsaXplQ2Vs
bExpdmVuZXNzRGF0YSgpCiAgICAgbV9vYmplY3RTcGFjZS5jYW5vbmljYWxpemVDZWxsTGl2ZW5l
c3NEYXRhKCk7CiB9CiAKLXZvaWQgSGVhcDo6cmVzZXRBbGxvY2F0b3IoKQordm9pZCBIZWFwOjpy
ZXNldEFsbG9jYXRvcnMoKQogewogICAgIG1fZXh0cmFDb3N0ID0gMDsKLSAgICBtX29iamVjdFNw
YWNlLnJlc2V0QWxsb2NhdG9yKCk7CisgICAgbV9vYmplY3RTcGFjZS5yZXNldEFsbG9jYXRvcnMo
KTsKIH0KIAogdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rp
dml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CmluZGV4IDQwYTgzNzZmMDE2YTNiNTI1MTJlNjZhM2U1YmQ0OGNkYTI4NWY4NmEuLjFkMGFjNTQw
NzY2ZjJlODgyZWFiZjYxZTcyNzA3ZDdkZTZmZTkwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJERkdDb2RlQmxvY2tzLmgiCiAjaW5j
bHVkZSAiSGFuZGxlSGVhcC5oIgogI2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCisjaW5jbHVkZSAi
TWFya2VkQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJN
YXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCkBAIC05NCw3ICs5NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3Ig
Y29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwogICAgICAgICBpbmxpbmUgYm9vbCBpc0J1c3koKTsK
ICAgICAgICAgCi0gICAgICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzc0Zvck9i
amVjdChzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc2l6ZUNsYXNzRm9yKGJ5
dGVzKTsgfQorICAgICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVjdChzaXpl
X3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQog
ICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwogICAgICAgICBDaGVja2VkQm9vbGVhbiB0
cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90LCB2b2lkKiopOwogICAgICAgICBDaGVja2VkQm9vbGVh
biB0cnlSZWFsbG9jYXRlU3RvcmFnZSh2b2lkKiosIHNpemVfdCwgc2l6ZV90KTsKQEAgLTEzNiw2
ICsxMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBNYXJrZWRTcGFjZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEFsbG9jYXRv
cjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xh
c3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CkBAIC0xNjAs
NyArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIGNvbnNlcnZhdGl2ZSBtYXJr
aW5nLCBlYWdlciBzd2VlcGluZywgb3IgaXRlcmF0aW5nIHRoZSBjZWxscyBpbiBhIE1hcmtlZEJs
b2NrLikKICAgICAgICAgdm9pZCBjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CiAKLSAg
ICAgICAgdm9pZCByZXNldEFsbG9jYXRvcigpOworICAgICAgICB2b2lkIHJlc2V0QWxsb2NhdG9y
cygpOwogICAgICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqKTsKIAogICAgICAgICB2
b2lkIGNsZWFyTWFya3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRB
bGxvY2F0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMzlmYmFlZGZjMGM5ODE4MjgxMmExMTJjOWUxY2E0
OWU3MGI1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTWFya2VkQWxsb2NhdG9yLmgiCisKKyNpbmNsdWRlICJIZWFwLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitpbmxpbmUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0
ZUhlbHBlcigpCit7CisgICAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0g
bV9maXJzdEZyZWVDZWxsOworICAgIGlmICghZmlyc3RGcmVlQ2VsbCkgeworICAgICAgICBmb3Ig
KE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBtX2N1cnJlbnRCbG9jazsgYmxvY2s7IGJsb2NrID0gc3Rh
dGljX2Nhc3Q8TWFya2VkQmxvY2sqPihibG9jay0+bmV4dCgpKSkgeworICAgICAgICAgICAgZmly
c3RGcmVlQ2VsbCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsK
KyAgICAgICAgICAgIGlmIChmaXJzdEZyZWVDZWxsKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQ29uc3VtZUZyZWVMaXN0KGJsb2NrKTsKKyAg
ICAgICAgICAgIGJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKCFmaXJzdEZyZWVDZWxsKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIAorICAgIEFTU0VSVChmaXJzdEZyZWVDZWxsKTsKKyAgICBtX2ZpcnN0RnJlZUNl
bGwgPSBmaXJzdEZyZWVDZWxsLT5uZXh0OworICAgIHJldHVybiBmaXJzdEZyZWVDZWxsOworfQor
ICAgIAoraW5saW5lIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGUoKQoreworICAg
IG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKKyAgICB2b2lkKiBy
ZXN1bHQgPSB0cnlBbGxvY2F0ZUhlbHBlcigpOworICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblBy
b2dyZXNzID0gTm9PcGVyYXRpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyAgICAKK3ZvaWQq
IE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZSgpCit7CisjaWYgQ09MTEVDVF9PTl9F
VkVSWV9BTExPQ0FUSU9OCisgICAgbV9oZWFwLT5jb2xsZWN0QWxsR2FyYmFnZSgpOworICAgIEFT
U0VSVChtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CisjZW5k
aWYKKyAgICAKKyAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZSgpOworICAgIAorICAgIGlm
IChMSUtFTFkocmVzdWx0ICE9IDApKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAorICAg
IEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydDsKKyAgICAKKyAgICBpZiAoKAorI2lm
IEVOQUJMRShHR0MpCisgICAgICAgICBudXJzZXJ5V2F0ZXJNYXJrKCkgPCBtX2hlYXAtPm1fbWlu
Qnl0ZXNQZXJDeWNsZQorI2Vsc2UKKyAgICAgICAgIG1faGVhcC0+d2F0ZXJNYXJrKCkgPCBtX2hl
YXAtPmhpZ2hXYXRlck1hcmsoKQorI2VuZGlmCisgICAgICAgICApIHx8ICFtX2hlYXAtPm1faXNT
YWZlVG9Db2xsZWN0KQorICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbk11c3RT
dWNjZWVkOworICAgIGVsc2UKKyAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25D
YW5GYWlsOworICAgIAorICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IGFsbG9jYXRlQmxvY2soYWxs
b2NhdGlvbkVmZm9ydCk7CisgICAgaWYgKGJsb2NrKSB7CisgICAgICAgIGFkZEJsb2NrKGJsb2Nr
KTsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoKTsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIG1faGVh
cC0+Y29sbGVjdChIZWFwOjpEb05vdFN3ZWVwKTsKKyAgICAKKyAgICByZXN1bHQgPSB0cnlBbGxv
Y2F0ZSgpOworICAgIAorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgCisgICAgQVNTRVJUKG1faGVhcC0+d2F0ZXJNYXJrKCkgPCBtX2hlYXAtPmhpZ2hXYXRlck1h
cmsoKSk7CisgICAgCisgICAgYWRkQmxvY2soYWxsb2NhdGVCbG9jayhBbGxvY2F0aW9uTXVzdFN1
Y2NlZWQpKTsKKyAgICAKKyAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZSgpOworICAgIEFTU0VSVChy
ZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisgICAgCitNYXJrZWRCbG9jayogTWFya2Vk
QWxsb2NhdG9yOjphbGxvY2F0ZUJsb2NrKEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9y
dCkKK3sKKyAgICBNYXJrZWRCbG9jayogYmxvY2s7CisgICAgCisgICAgeworICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOworICAgICAgICBpZiAobV9o
ZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcykgeworICAgICAgICAgICAgYmxvY2sgPSBzdGF0aWNf
Y2FzdDxNYXJrZWRCbG9jayo+KG1faGVhcC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoYmxvY2spOworICAgICAgICAgICAgbV9oZWFwLT5tX251bWJlck9m
RnJlZUJsb2Nrcy0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJsb2NrID0gMDsKKyAg
ICB9CisgICAgaWYgKGJsb2NrKQorICAgICAgICBibG9jayA9IE1hcmtlZEJsb2NrOjpyZWN5Y2xl
KGJsb2NrLCBtX2hlYXAsIG1fY2VsbFNpemUpOworICAgIGVsc2UgaWYgKGFsbG9jYXRpb25FZmZv
cnQgPT0gQWxsb2NhdGlvbkNhbkZhaWwpCisgICAgICAgIHJldHVybiAwOworICAgIGVsc2UKKyAg
ICAgICAgYmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRlKG1faGVhcCwgbV9jZWxsU2l6ZSk7Cisg
ICAgCisgICAgbV9tYXJrZWRTcGFjZS0+ZGlkQWRkQmxvY2soYmxvY2spOworICAgIAorICAgIHJl
dHVybiBibG9jazsKK30KKwordm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJs
b2NrKiBibG9jaykKK3sKKyAgICBBU1NFUlQoIW1fY3VycmVudEJsb2NrKTsKKyAgICBBU1NFUlQo
IW1fZmlyc3RGcmVlQ2VsbCk7CisgICAgCisgICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsK
KyAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOworICAgIG1fZmlyc3RGcmVlQ2VsbCA9IGJsb2Nr
LT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsKK30KKwordm9pZCBNYXJrZWRB
bGxvY2F0b3I6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrKiBibG9jaykKK3sKKyAgICBpZiAobV9j
dXJyZW50QmxvY2sgPT0gYmxvY2spCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICBt
X2Jsb2NrTGlzdC5yZW1vdmUoYmxvY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY0
NGM2OTFiODdjZjdmMjNiMDJiNTY1ZDNjZGFmNjVmZDJhZWJlYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCkBAIC0wLDAgKzEs
OTcgQEAKKyNpZm5kZWYgTWFya2VkQWxsb2NhdG9yX2gKKyNkZWZpbmUgTWFya2VkQWxsb2NhdG9y
X2gKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtl
ZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEhlYXA7CitjbGFzcyBNYXJrZWRT
cGFjZTsKKworbmFtZXNwYWNlIERGRyB7CitjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKK30KKworY2xh
c3MgTWFya2VkQWxsb2NhdG9yIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBj
bGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworCitwdWJsaWM6CisgICAgTWFya2VkQWxsb2NhdG9y
KCk7CisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgemFwRnJlZUxpc3QoKTsKKyAgICBzaXpl
X3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2NlbGxTaXplOyB9CisgICAgdm9pZCogYWxsb2NhdGUo
KTsKKyAgICBIZWFwKiBoZWFwKCkgeyByZXR1cm4gbV9oZWFwOyB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxvY2soRnVuY3RvciYpOworICAgIAor
ICAgIHZvaWQgYWRkQmxvY2soTWFya2VkQmxvY2sqKTsKKyAgICB2b2lkIHJlbW92ZUJsb2NrKE1h
cmtlZEJsb2NrKik7CisgICAgdm9pZCBzZXRIZWFwKEhlYXAqIGhlYXApIHsgbV9oZWFwID0gaGVh
cDsgfQorICAgIHZvaWQgc2V0Q2VsbFNpemUoc2l6ZV90IGNlbGxTaXplKSB7IG1fY2VsbFNpemUg
PSBjZWxsU2l6ZTsgfQorICAgIHZvaWQgc2V0TWFya2VkU3BhY2UoTWFya2VkU3BhY2UqIHNwYWNl
KSB7IG1fbWFya2VkU3BhY2UgPSBzcGFjZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKCk7CisgICAgdm9pZCogdHJ5QWxsb2Nh
dGUoKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcigpOworICAgIE1hcmtlZEJsb2NrKiBh
bGxvY2F0ZUJsb2NrKEFsbG9jYXRpb25FZmZvcnQpOworICAgIAorICAgIE1hcmtlZEJsb2NrOjpG
cmVlQ2VsbCogbV9maXJzdEZyZWVDZWxsOworICAgIE1hcmtlZEJsb2NrKiBtX2N1cnJlbnRCbG9j
azsKKyAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4gbV9ibG9ja0xpc3Q7CisgICAgc2l6
ZV90IG1fY2VsbFNpemU7CisgICAgSGVhcCogbV9oZWFwOworICAgIE1hcmtlZFNwYWNlKiBtX21h
cmtlZFNwYWNlOworfTsKKworaW5saW5lIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9y
KCkKKyAgICA6IG1fZmlyc3RGcmVlQ2VsbCgwKQorICAgICwgbV9jdXJyZW50QmxvY2soMCkKKyAg
ICAsIG1fY2VsbFNpemUoMCkKKyAgICAsIG1faGVhcCgwKQorICAgICwgbV9tYXJrZWRTcGFjZSgw
KQoreworfQorICAgIAoraW5saW5lIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGUoKQor
eworICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCA9IG1fZmlyc3RGcmVl
Q2VsbDsKKyAgICAvLyBUaGlzIGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0
aGUgbW9zdCBjb21tb24gY2FzZS4KKyAgICBpZiAoVU5MSUtFTFkoIWZpcnN0RnJlZUNlbGwpKQor
ICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93Q2FzZSgpOworICAgIAorICAgIG1fZmlyc3RGcmVl
Q2VsbCA9IGZpcnN0RnJlZUNlbGwtPm5leHQ7CisgICAgcmV0dXJuIGZpcnN0RnJlZUNlbGw7Cit9
CisKK2lubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzZXQoKQoreworICAgIG1fY3VycmVu
dEJsb2NrID0gc3RhdGljX2Nhc3Q8TWFya2VkQmxvY2sqPihtX2Jsb2NrTGlzdC5oZWFkKCkpOwor
fQorCitpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnphcEZyZWVMaXN0KCkKK3sKKyAgICBp
ZiAoIW1fY3VycmVudEJsb2NrKSB7CisgICAgICAgIEFTU0VSVCghbV9maXJzdEZyZWVDZWxsKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2N1cnJlbnRCbG9jay0+emFwRnJl
ZUxpc3QobV9maXJzdEZyZWVDZWxsKTsKKyAgICBtX2ZpcnN0RnJlZUNlbGwgPSAwOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpm
b3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBIZWFwQmxvY2sqIG5leHQ7Cisg
ICAgZm9yIChIZWFwQmxvY2sqIGJsb2NrID0gbV9ibG9ja0xpc3QuaGVhZCgpOyBibG9jazsgYmxv
Y2sgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBibG9jay0+bmV4dCgpOworICAgICAgICBmdW5j
dG9yKHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4oYmxvY2spKTsKKyAgICB9Cit9CisgICAgCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5jcHAKaW5kZXggZmNjYTE4OGU0NzE3YTNkZWM1YjUzYmI3YWRmYjc4MzJiYzdl
MDg3Mi4uODdkYzA0OTNkYzVlM2YxOTFmZGIwODAzOTViMWU5OTYwMjU5Nzg1NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcApAQCAtMzUsMTU1ICszNSw0MCBA
QCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICAsIG1fbnVyc2VyeVdh
dGVyTWFyaygwKQogICAgICwgbV9oZWFwKGhlYXApCiB7Ci0gICAgZm9yIChzaXplX3QgY2VsbFNp
emUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0g
cHJlY2lzZVN0ZXApCi0gICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkuY2VsbFNpemUgPSBj
ZWxsU2l6ZTsKLQotICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2Vs
bFNpemUgPD0gaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKQotICAg
ICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLmNlbGxTaXplID0gY2VsbFNpemU7Ci19Ci0KLXZv
aWQgTWFya2VkU3BhY2U6OmFkZEJsb2NrKFNpemVDbGFzcyYgc2l6ZUNsYXNzLCBNYXJrZWRCbG9j
ayogYmxvY2spCi17Ci0gICAgQVNTRVJUKCFzaXplQ2xhc3MuY3VycmVudEJsb2NrKTsKLSAgICBB
U1NFUlQoIXNpemVDbGFzcy5maXJzdEZyZWVDZWxsKTsKLQotICAgIHNpemVDbGFzcy5ibG9ja0xp
c3QuYXBwZW5kKGJsb2NrKTsKLSAgICBzaXplQ2xhc3MuY3VycmVudEJsb2NrID0gYmxvY2s7Ci0g
ICAgc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBibG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OlN3
ZWVwVG9GcmVlTGlzdCk7Ci19CisgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBwcmVjaXNlU3Rl
cDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApIHsK
KyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5zZXRDZWxsU2l6ZShjZWxsU2l6ZSk7Cisg
ICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuc2V0SGVhcChoZWFwKTsKKyAgICAgICAgYWxs
b2NhdG9yRm9yKGNlbGxTaXplKS5zZXRNYXJrZWRTcGFjZSh0aGlzKTsKKyAgICB9CiAKLXZvaWQg
TWFya2VkU3BhY2U6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrKiBibG9jaykKLXsKLSAgICBTaXpl
Q2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0ZvcihibG9jay0+Y2VsbFNpemUoKSk7Ci0gICAg
aWYgKHNpemVDbGFzcy5jdXJyZW50QmxvY2sgPT0gYmxvY2spCi0gICAgICAgIHNpemVDbGFzcy5j
dXJyZW50QmxvY2sgPSAwOwotICAgIHNpemVDbGFzcy5ibG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsK
KyAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IGlt
cHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkgeworICAgICAgICBhbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLnNldENlbGxTaXplKGNlbGxTaXplKTsKKyAgICAgICAgYWxsb2Nh
dG9yRm9yKGNlbGxTaXplKS5zZXRIZWFwKGhlYXApOworICAgICAgICBhbGxvY2F0b3JGb3IoY2Vs
bFNpemUpLnNldE1hcmtlZFNwYWNlKHRoaXMpOworICAgIH0KIH0KIAotdm9pZCBNYXJrZWRTcGFj
ZTo6cmVzZXRBbGxvY2F0b3IoKQordm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKCkK
IHsKICAgICBtX3dhdGVyTWFyayA9IDA7CiAgICAgbV9udXJzZXJ5V2F0ZXJNYXJrID0gMDsKIAog
ICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNp
c2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKQotICAgICAgICBzaXplQ2xhc3NGb3Io
Y2VsbFNpemUpLnJlc2V0QWxsb2NhdG9yKCk7CisgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6
ZSkucmVzZXQoKTsKIAogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsg
Y2VsbFNpemUgPD0gaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKQot
ICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLnJlc2V0QWxsb2NhdG9yKCk7CisgICAgICAg
IGFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6
Y2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpCiB7CiAgICAgZm9yIChzaXplX3QgY2VsbFNp
emUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0g
cHJlY2lzZVN0ZXApCi0gICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkuemFwRnJlZUxpc3Qo
KTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS56YXBGcmVlTGlzdCgpOwogCiAgICAg
Zm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNp
c2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApCi0gICAgICAgIHNpemVDbGFzc0Zv
cihjZWxsU2l6ZSkuemFwRnJlZUxpc3QoKTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS56YXBGcmVlTGlzdCgpOwogfQogCi1pbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OnRyeUFsbG9j
YXRlSGVscGVyKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSAgICBNYXJr
ZWRCbG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGwgPSBzaXplQ2xhc3MuZmlyc3RGcmVlQ2Vs
bDsKLSAgICBpZiAoIWZpcnN0RnJlZUNlbGwpIHsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9jayom
IGJsb2NrID0gc2l6ZUNsYXNzLmN1cnJlbnRCbG9jazsgYmxvY2s7IGJsb2NrID0gc3RhdGljX2Nh
c3Q8TWFya2VkQmxvY2sqPihibG9jay0+bmV4dCgpKSkgewotICAgICAgICAgICAgZmlyc3RGcmVl
Q2VsbCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAg
ICAgICAgIGlmIChmaXJzdEZyZWVDZWxsKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgbV9udXJzZXJ5V2F0ZXJNYXJrICs9IGJsb2NrLT5jYXBhY2l0eSgpIC0gYmxvY2stPnNp
emUoKTsKLSAgICAgICAgICAgIG1fd2F0ZXJNYXJrICs9IGJsb2NrLT5jYXBhY2l0eSgpOwotICAg
ICAgICAgICAgYmxvY2stPmRpZENvbnN1bWVGcmVlTGlzdCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCFmaXJzdEZyZWVDZWxsKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgQVNTRVJUKGZpcnN0RnJlZUNlbGwpOwotICAgIHNpemVDbGFzcy5maXJzdEZyZWVDZWxsID0g
Zmlyc3RGcmVlQ2VsbC0+bmV4dDsKLSAgICByZXR1cm4gZmlyc3RGcmVlQ2VsbDsKLX0KLQotaW5s
aW5lIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
JiBzaXplQ2xhc3MpCi17Ci0gICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBBbGxv
Y2F0aW9uOwotICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlSGVscGVyKHNpemVDbGFzcyk7
Ci0gICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi12b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVTbG93Q2FzZShN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi17Ci0jaWYgQ09MTEVDVF9PTl9FVkVS
WV9BTExPQ0FUSU9OCi0gICAgbV9oZWFwLT5jb2xsZWN0QWxsR2FyYmFnZSgpOwotICAgIEFTU0VS
VChtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7Ci0jZW5kaWYK
LSAgICAKLSAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgIAot
ICAgIGlmIChMSUtFTFkocmVzdWx0ICE9IDApKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IAotICAgIEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydDsKLSAgICAKLSAgICBpZiAo
KAotI2lmIEVOQUJMRShHR0MpCi0gICAgICAgICBudXJzZXJ5V2F0ZXJNYXJrKCkgPCBtX2hlYXAt
Pm1fbWluQnl0ZXNQZXJDeWNsZQotI2Vsc2UKLSAgICAgICAgIG1faGVhcC0+d2F0ZXJNYXJrKCkg
PCBtX2hlYXAtPmhpZ2hXYXRlck1hcmsoKQotI2VuZGlmCi0gICAgICAgICApIHx8ICFtX2hlYXAt
Pm1faXNTYWZlVG9Db2xsZWN0KQotICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlv
bk11c3RTdWNjZWVkOwotICAgIGVsc2UKLSAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9j
YXRpb25DYW5GYWlsOwotICAgIAotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IGFsbG9jYXRlQmxv
Y2soc2l6ZUNsYXNzLmNlbGxTaXplLCBhbGxvY2F0aW9uRWZmb3J0KTsKLSAgICBpZiAoYmxvY2sp
IHsKLSAgICAgICAgYWRkQmxvY2soc2l6ZUNsYXNzLCBibG9jayk7Ci0gICAgICAgIHZvaWQqIHJl
c3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQpOwot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBtX2hlYXAtPmNvbGxlY3Qo
SGVhcDo6RG9Ob3RTd2VlcCk7Ci0gICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNs
YXNzKTsKLSAgICAKLSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IAotICAgIEFTU0VSVChtX2hlYXAtPndhdGVyTWFyaygpIDwgbV9oZWFwLT5oaWdoV2F0ZXJNYXJr
KCkpOwotICAgIAotICAgIGFkZEJsb2NrKHNpemVDbGFzcywgYWxsb2NhdGVCbG9jayhzaXplQ2xh
c3MuY2VsbFNpemUsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCkpOwotICAgIAotICAgIHJlc3VsdCA9
IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotTWFya2VkQmxvY2sqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKHNp
emVfdCBjZWxsU2l6ZSwgQWxsb2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0KQotewotICAg
IE1hcmtlZEJsb2NrKiBibG9jazsKLSAgICAKLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2hlYXAtPm1fZnJlZUJsb2NrTG9jayk7Ci0gICAgICAgIGlmIChtX2hlYXAtPm1fbnVt
YmVyT2ZGcmVlQmxvY2tzKSB7Ci0gICAgICAgICAgICBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtl
ZEJsb2NrKj4obV9oZWFwLT5tX2ZyZWVCbG9ja3MucmVtb3ZlSGVhZCgpKTsKLSAgICAgICAgICAg
IEFTU0VSVChibG9jayk7Ci0gICAgICAgICAgICBtX2hlYXAtPm1fbnVtYmVyT2ZGcmVlQmxvY2tz
LS07Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYmxvY2sgPSAwOwotICAgIH0KLSAgICBp
ZiAoYmxvY2spCi0gICAgICAgIGJsb2NrID0gTWFya2VkQmxvY2s6OnJlY3ljbGUoYmxvY2ssIG1f
aGVhcCwgY2VsbFNpemUpOwotICAgIGVsc2UgaWYgKGFsbG9jYXRpb25FZmZvcnQgPT0gQWxsb2Nh
dGlvbkNhbkZhaWwpCi0gICAgICAgIHJldHVybiAwOwotICAgIGVsc2UKLSAgICAgICAgYmxvY2sg
PSBNYXJrZWRCbG9jazo6Y3JlYXRlKG1faGVhcCwgY2VsbFNpemUpOwotICAgIAotICAgIG1fYmxv
Y2tzLmFkZChibG9jayk7Ci0gICAgCi0gICAgcmV0dXJuIGJsb2NrOwotfQogCiB2b2lkIE1hcmtl
ZFNwYWNlOjpmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFkKQogewpAQCAtMjIyLDcgKzEwNyw3
IEBAIGlubGluZSB2b2lkIFRha2VJZlVubWFya2VkOjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBi
bG9jaykKICAgICBpZiAoIWJsb2NrLT5tYXJrQ291bnRJc1plcm8oKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIG1fbWFya2VkU3BhY2UtPnJlbW92ZUJsb2NrKGJsb2NrKTsKKyAgICBtX21h
cmtlZFNwYWNlLT5hbGxvY2F0b3JGb3IoYmxvY2stPmNlbGxTaXplKCkpLnJlbW92ZUJsb2NrKGJs
b2NrKTsKICAgICBtX2VtcHRpZXMuYXBwZW5kKGJsb2NrKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKaW5kZXggZjdkOTZjNzc0Nzg3MmE3NjRiYzU5MmM3ZmE1
Y2EzNmU1NDUwOWFkMC4uMjFhMGI0OGRlOGQyZDkzZTMxOWZlNDJiOWNlNjUwMzk0YWRjMTU5MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC0yMyw2ICsyMyw3
IEBACiAjZGVmaW5lIE1hcmtlZFNwYWNlX2gKIAogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtl
ci5oIgorI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2Nr
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIKICNpbmNsdWRlICJQYWdlQWxsb2NhdGlv
bkFsaWduZWQuaCIKQEAgLTQ4LDI3ICs0OSwxMyBAQCBjbGFzcyBNYXJrZWRTcGFjZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDZWxsU2l6ZSA9IDIwNDg7CiAKLSAgICBz
dHJ1Y3QgU2l6ZUNsYXNzIHsKLSAgICAgICAgU2l6ZUNsYXNzKCk7Ci0gICAgICAgIHZvaWQgcmVz
ZXRBbGxvY2F0b3IoKTsKLSAgICAgICAgdm9pZCB6YXBGcmVlTGlzdCgpOwotCi0gICAgICAgIE1h
cmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbDsKLSAgICAgICAgTWFya2VkQmxvY2sq
IGN1cnJlbnRCbG9jazsKLSAgICAgICAgRG91Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+IGJsb2Nr
TGlzdDsKLSAgICAgICAgc2l6ZV90IGNlbGxTaXplOwotICAgIH07Ci0KICAgICBNYXJrZWRTcGFj
ZShIZWFwKik7CiAKLSAgICBTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOworICAgIE1h
cmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yKHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGUo
c2l6ZV90KTsKLSAgICB2b2lkKiBhbGxvY2F0ZShTaXplQ2xhc3MmKTsKICAgICAKLSAgICB2b2lk
IHJlc2V0QWxsb2NhdG9yKCk7CisgICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKIAotICAgIHZv
aWQgYWRkQmxvY2soU2l6ZUNsYXNzJiwgTWFya2VkQmxvY2sqKTsKLSAgICB2b2lkIHJlbW92ZUJs
b2NrKE1hcmtlZEJsb2NrKik7CiAgICAgTWFya2VkQmxvY2tTZXQmIGJsb2NrcygpIHsgcmV0dXJu
IG1fYmxvY2tzOyB9CiAgICAgCiAgICAgdm9pZCBjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRh
KCk7CkBAIC04NSwxMyArNzIsMTAgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2hyaW5rKCk7
CiAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFkKTsKKyAgICB2b2lkIGRpZEFk
ZEJsb2NrKE1hcmtlZEJsb2NrKik7CisgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2Vk
QmxvY2sqKTsKIAogcHJpdmF0ZToKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0
ZVNsb3dDYXNlKFNpemVDbGFzcyYpOwotICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKE1hcmtl
ZFNwYWNlOjpTaXplQ2xhc3MmKTsKLSAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6
U2l6ZUNsYXNzJik7Ci0gICAgTWFya2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soc2l6ZV90LCBBbGxv
Y2F0aW9uRWZmb3J0KTsKLQogICAgIC8vIFsgMzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDI1NjsKQEAgLTEwMiw4ICs4Niw4IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDdXRvZmYgPSBtYXhDZWxsU2l6
ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZUNvdW50ID0gaW1wcmVjaXNlQ3V0
b2ZmIC8gaW1wcmVjaXNlU3RlcDsKIAotICAgIEZpeGVkQXJyYXk8U2l6ZUNsYXNzLCBwcmVjaXNl
Q291bnQ+IG1fcHJlY2lzZVNpemVDbGFzc2VzOwotICAgIEZpeGVkQXJyYXk8U2l6ZUNsYXNzLCBp
bXByZWNpc2VDb3VudD4gbV9pbXByZWNpc2VTaXplQ2xhc3NlczsKKyAgICBGaXhlZEFycmF5PE1h
cmtlZEFsbG9jYXRvciwgcHJlY2lzZUNvdW50PiBtX3ByZWNpc2VTaXplQ2xhc3NlczsKKyAgICBG
aXhlZEFycmF5PE1hcmtlZEFsbG9jYXRvciwgaW1wcmVjaXNlQ291bnQ+IG1faW1wcmVjaXNlU2l6
ZUNsYXNzZXM7CiAgICAgc2l6ZV90IG1fd2F0ZXJNYXJrOwogICAgIHNpemVfdCBtX251cnNlcnlX
YXRlck1hcms7CiAgICAgSGVhcCogbV9oZWFwOwpAQCAtMTM2LDcgKzEyMCw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1h
cmtlZFNwYWNlOjpmb3JFCiAgICAgcmV0dXJuIGZvckVhY2hDZWxsKGZ1bmN0b3IpOwogfQogCi1p
bmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgTWFya2VkU3BhY2U6OnNpemVDbGFzc0Zvcihz
aXplX3QgYnl0ZXMpCitpbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFjZTo6YWxsb2Nh
dG9yRm9yKHNpemVfdCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMgJiYgYnl0ZXMgPD0gbWF4
Q2VsbFNpemUpOwogICAgIGlmIChieXRlcyA8PSBwcmVjaXNlQ3V0b2ZmKQpAQCAtMTQ2LDM5ICsx
MzAsMTcgQEAgaW5saW5lIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIE1hcmtlZFNwYWNlOjpzaXpl
Q2xhc3NGb3Ioc2l6ZV90IGJ5dGVzKQogCiBpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9j
YXRlKHNpemVfdCBieXRlcykKIHsKLSAgICBTaXplQ2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFz
c0ZvcihieXRlcyk7Ci0gICAgcmV0dXJuIGFsbG9jYXRlKHNpemVDbGFzcyk7Ci19Ci0KLWlubGlu
ZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoU2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi17Ci0g
ICAgLy8gVGhpcyBpcyBhIGxpZ2h0LXdlaWdodCBmYXN0IHBhdGggdG8gY292ZXIgdGhlIG1vc3Qg
Y29tbW9uIGNhc2UuCi0gICAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0g
c2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7Ci0gICAgaWYgKFVOTElLRUxZKCFmaXJzdEZyZWVDZWxs
KSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZUNsYXNzKTsKLSAgICAKLSAg
ICBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCA9IGZpcnN0RnJlZUNlbGwtPm5leHQ7Ci0gICAgcmV0
dXJuIGZpcnN0RnJlZUNlbGw7CisgICAgcmV0dXJuIGFsbG9jYXRvckZvcihieXRlcykuYWxsb2Nh
dGUoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBG
dW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVu
Y3RvcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKSB7
Ci0gICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzID0gbV9wcmVjaXNlU2l6ZUNsYXNzZXNbaV07
Ci0gICAgICAgIEhlYXBCbG9jayogbmV4dDsKLSAgICAgICAgZm9yIChIZWFwQmxvY2sqIGJsb2Nr
ID0gc2l6ZUNsYXNzLmJsb2NrTGlzdC5oZWFkKCk7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAg
ICAgICAgICAgIG5leHQgPSBibG9jay0+bmV4dCgpOwotICAgICAgICAgICAgZnVuY3RvcihzdGF0
aWNfY2FzdDxNYXJrZWRCbG9jayo+KGJsb2NrKSk7Ci0gICAgICAgIH0KKyAgICAgICAgbV9wcmVj
aXNlU2l6ZUNsYXNzZXNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIH0KIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkgewotICAgICAgICBTaXpl
Q2xhc3MmIHNpemVDbGFzcyA9IG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbaV07Ci0gICAgICAgIEhl
YXBCbG9jayogbmV4dDsKLSAgICAgICAgZm9yIChIZWFwQmxvY2sqIGJsb2NrID0gc2l6ZUNsYXNz
LmJsb2NrTGlzdC5oZWFkKCk7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgICAgIG5l
eHQgPSBibG9jay0+bmV4dCgpOwotICAgICAgICAgICAgZnVuY3RvcihzdGF0aWNfY2FzdDxNYXJr
ZWRCbG9jayo+KGJsb2NrKSk7Ci0gICAgICAgIH0KKyAgICAgICAgbV9pbXByZWNpc2VTaXplQ2xh
c3Nlc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgfQogCiAgICAgcmV0dXJuIGZ1bmN0
b3IucmV0dXJuVmFsdWUoKTsKQEAgLTE5MCwyNyArMTUyLDE1IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFj
ZTo6Zm9yCiAgICAgcmV0dXJuIGZvckVhY2hCbG9jayhmdW5jdG9yKTsKIH0KIAotaW5saW5lIE1h
cmtlZFNwYWNlOjpTaXplQ2xhc3M6OlNpemVDbGFzcygpCi0gICAgOiBmaXJzdEZyZWVDZWxsKDAp
Ci0gICAgLCBjdXJyZW50QmxvY2soMCkKLSAgICAsIGNlbGxTaXplKDApCi17Ci19Ci0KLWlubGlu
ZSB2b2lkIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OnJlc2V0QWxsb2NhdG9yKCkKK2lubGluZSB2
b2lkIE1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCiB7Ci0gICAg
Y3VycmVudEJsb2NrID0gc3RhdGljX2Nhc3Q8TWFya2VkQmxvY2sqPihibG9ja0xpc3QuaGVhZCgp
KTsKKyAgICBtX2Jsb2Nrcy5hZGQoYmxvY2spOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzOjp6YXBGcmVlTGlzdCgpCitpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlk
Q29uc3VtZUZyZWVMaXN0KE1hcmtlZEJsb2NrKiBibG9jaykKIHsKLSAgICBpZiAoIWN1cnJlbnRC
bG9jaykgewotICAgICAgICBBU1NFUlQoIWZpcnN0RnJlZUNlbGwpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgY3VycmVudEJsb2NrLT56YXBGcmVlTGlzdChmaXJzdEZyZWVDZWxsKTsK
LSAgICBmaXJzdEZyZWVDZWxsID0gMDsKKyAgICBtX251cnNlcnlXYXRlck1hcmsgKz0gYmxvY2st
PmNhcGFjaXR5KCkgLSBibG9jay0+c2l6ZSgpOworICAgIG1fd2F0ZXJNYXJrICs9IGJsb2NrLT5j
YXBhY2l0eSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKaW5kZXggZTYxNzk2MWI1NjhlYmIzMTI4NDg3M2Jm
OTkxMDE2ODE1N2MyMzQzYi4uMDE1NDVmYjhjNzI3NDUwOThiNGI2YTdlODg0MDI2Y2E3MTM0M2Qx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2Rz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKQEAg
LTQwMSwxMyArNDAxLDEzIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlQ2hhcih1bnNpZ25lZCBzcmMpCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFz
c1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKIHsKLSAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
KiBzaXplQ2xhc3MgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLnNpemVDbGFzc0Zvck9iamVjdChzaXpl
b2YoQ2xhc3NUeXBlKSk7Ci0gICAgbG9hZFB0cigmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCBy
ZXN1bHQpOworICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+
aGVhcC5hbGxvY2F0b3JGb3JPYmplY3Qoc2l6ZW9mKENsYXNzVHlwZSkpOworICAgIGxvYWRQdHIo
JmFsbG9jYXRvci0+bV9maXJzdEZyZWVDZWxsLCByZXN1bHQpOwogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFRlc3RQdHIoWmVybywgcmVzdWx0KSk7CiAKICAgICAvLyByZW1vdmUgdGhlIG9iamVjdCBm
cm9tIHRoZSBmcmVlIGxpc3QKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc3RvcmFnZVB0
cik7Ci0gICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCk7
CisgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgJmFsbG9jYXRvci0+bV9maXJzdEZyZWVDZWxsKTsK
IAogICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQogICAgIHN0b3JlUHRy
KHN0cnVjdHVyZSwgQWRkcmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125135</attachid>
            <date>2012-02-02 08:17:48 -0800</date>
            <delta_ts>2012-02-03 10:43:25 -0800</delta_ts>
            <desc>Fixing windows</desc>
            <filename>bug-77600-20120202081747.patch</filename>
            <type>text/plain</type>
            <size>36077</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTc4NjE0ZjJhMDE2MDM1MTNhMjQzODFkZWI0YmFjZGM2YTY5YjQ1Li5iNWQ5ZDM0YmFjOTA1OTg2
ODM5ZDA5ZmRjMWVjODJjYWRlYjU3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxMi0wMi0wMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE1hcmtlZEJsb2NrOjpTaXplQ2xhc3MgaW50byBh
IHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzYwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIHB1bGxlZCBTaXplQ2xhc3Mgb3V0IGludG8gaXRzIG93biBjbGFzcywgbmFtZWQg
TWFya2VkQWxsb2NhdG9yLCBhbmQgZ2F2ZSBpdAorICAgICAgICB0aGUgcmVzcG9uc2liaWxpdHkg
b2YgYWxsb2NhdGluZyBvYmplY3RzIGZyb20gdGhlIGNvbGxlY3Rpb24gb2YgTWFya2VkQmxvY2tz
IAorICAgICAgICB0aGF0IGl0IG1hbmFnZXMuIEFsc28gbGltaXRlZCB0aGUgYW1vdW50IG9mIGNv
dXBsaW5nIHRvIGludGVybmFsIGRhdGEgZmllbGRzIAorICAgICAgICBmcm9tIG90aGVyIHBsYWNl
cywgYWx0aG91Z2ggaXQncyBtb3N0bHkgdW5hdm9pZGFibGUgaW4gdGhlIEpJVCBjb2RlLgorCisg
ICAgICAgIEV2ZW50dWFsbHkgTWFya2VkQWxsb2NhdG9yIHdpbGwgaW1wbGVtZW50IHZhcmlvdXMg
cG9saWNpZXMgdG8gZG8gd2l0aCBvYmplY3QgCisgICAgICAgIG1hbmFnZW1lbnQsIGUuZy4gd2hl
dGhlciBvciBub3QgdG8gcnVuIGRlc3RydWN0b3JzIG9uIG9iamVjdHMgdGhhdCBpdCBtYW5hZ2Vz
LgorICAgICAgICBNYXJrZWRTcGFjZSB3aWxsIG1hbmFnZSBhIGNvbGxlY3Rpb24gb2YgTWFya2Vk
QWxsb2NhdG9ycyB3aXRoIHZhcnlpbmcgcG9saWNpZXMsCisgICAgICAgIGFzIGl0IGRvZXMgbm93
IGJ1dCB0byBhIGxhcmdlciBleHRlbnQuIAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5l
eHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OnJl
c2V0QWxsb2NhdG9ycyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6Okhl
YXA6OmFsbG9jYXRvckZvck9iamVjdCk6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKiBoZWFw
L01hcmtlZEFsbG9jYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcik6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0
b3I6OmFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFs
bG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayk6CisgICAgICAgICog
aGVhcC9NYXJrZWRBbGxvY2F0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAo
REZHKToKKyAgICAgICAgKE1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFs
bG9jYXRvcjo6Y2VsbFNpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmhlYXAp
OgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnNldEhlYXApOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OnNldENlbGxTaXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpzZXRNYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6
TWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0
ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzZXQpOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OnphcEZyZWVMaXN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEpOgorICAgICAgICAoSlNDOjpUYWtlSWZVbm1h
cmtlZDo6b3BlcmF0b3IoKSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAg
ICAoTWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdG9yRm9y
KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpk
aWRBZGRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkaWRDb25zdW1lRnJlZUxp
c3QpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisKIDIwMTItMDItMDEgIENzYWJhIE9zenRy
b2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3Rh
Y2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNjIwYzVhNTI5MzNiYjAz
YWI1OGNiZmJlMmVlNjc3YmEzZWQ2MGNmLi5lYWEzOTVlMTVmY2E2NzZiNTViNTM5YjYxM2MzYTAw
MWUxY2FmOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MCw2ICs4
MCw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9IYW5kbGVIZWFwLmNw
cAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwCiAgICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCisgICAgaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCiAgICAgaGVhcC9NYXJrZWRCbG9jay5j
cHAKICAgICBoZWFwL01hcmtlZFNwYWNlLmNwcAogICAgIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGRlNTMz
OGRkNGY3YjRiZWY4MjkyNTU5YjdiY2MzZjRmMTE4ZTljMzEuLjBmMTBmMjU3ZWYyM2JkNzVjMWJh
YzIyOWIxZWM4YzRjMmQ4YTBmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0yMDUsNiArMjA1LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBSb290VmlzaXRvci5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja1NldC5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDJmN2IzMTU3ZjZkYmI3ZTBkMzViMWFlMjRi
Nzc4ZDkzYTI0NTllMzcuLjVmODA4MDNkYjJjMDRmNjc1MGMxZGI1YjQxNTFmNTZhNWRlMTA4ZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTI4LDcgKzEy
OCw2IEBAIF9fWk4zSlNDMTFKU0J5dGVBcnJheTNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3Rh
dGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsCiBfX1pOM0pTQzExSlNCeXRlQXJyYXk2c19p
bmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5N2Rlc3Ryb3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pT
QzExSlNCeXRlQXJyYXlDMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0
ZUFycmF5RQotX19aTjNKU0MxMU1hcmtlZFNwYWNlMTZhbGxvY2F0ZVNsb3dDYXNlRVJOUzBfOVNp
emVDbGFzc0UKIF9fWk4zSlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tT
eW50YXhFUE5TXzlFeGVjU3RhdGVFUktOU18xMFNvdXJjZUNvZGVFUE5TXzdKU1ZhbHVlRQogX19a
TjNKU0MxMWNyZWF0ZUVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCkBAIC0xOTIs
NiArMTkxLDcgQEAgX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyNXJlc2V0RXYKIF9fWk4zSlNDMTRW
VGFibGVTcGVjdHJ1bTVjb3VudEVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJv
ckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJvckVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxNU1hcmtlZEFsbG9jYXRvcjE2YWxsb2NhdGVTbG93
Q2FzZUV2CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290c0VOU182SGFuZGxlSU5TXzdVbmtub3duRUVFUHZSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4z
SlNDMTVXZWFrSGFuZGxlT3duZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2
CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyRDJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCA5M2M5ZTc1Njk2NjJhMjY4MGRk
NDU3ZmQ2NjlmN2FlNmJmMTFmZDE3Li42NmNkZWU4NjY4YzdhMWE1MGNjZjc5MTYzMjliN2E0Yzdh
ZjY5M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZgpAQCAtNjQsNyArNjQsNyBAQCBFWFBPUlRTCiAgICAgP2FkZFNsb3dDYXNlQElk
ZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBB
VkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRTdGF0aWNHbG9iYWxz
QEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2JhbFByb3BlcnR5SW5mb0AxMkBIQFoKICAg
ICA/YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VASlNPYmplY3RASlNDQEBRQUVYQUFWSlNHbG9iYWxE
YXRhQDJASUlAWgotICAgID9hbGxvY2F0ZVNsb3dDYXNlQE1hcmtlZFNwYWNlQEpTQ0BAQUFFUEFY
QUFVU2l6ZUNsYXNzQDEyQEBaCisgICAgP2FsbG9jYXRlU2xvd0Nhc2VATWFya2VkQWxsb2NhdG9y
QEpTQ0BAQUFFUEFYWFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYUEJFSUBa
CiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCX1dJQFoKICAgICA/YXNjaWlA
VVN0cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdAV1RGQEBYWgpAQCAtMjgzLDYgKzI4Myw3IEBAIEVY
UE9SVFMKICAgICA/cmVpZnlTdHJpbmdAU3RyaW5nQnVpbGRlckBXVEZAQEFCRVhYWgogICAgID9y
ZWxlYXNlRGVjb21taXR0ZWRAT1NBbGxvY2F0b3JAV1RGQEBTQVhQQVhJQFoKICAgICA/cmVsZWFz
ZUV4ZWN1dGFibGVNZW1vcnlASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCisgICAgP3JlbW92ZUJs
b2NrQE1hcmtlZEFsbG9jYXRvckBKU0NAQFFBRVhQQVZNYXJrZWRCbG9ja0AyQEBaCiAgICAgP3Jl
cG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlQEhlYXBASlNDQEBBQUVYSUBaCiAgICAgP3Jlc2Vy
dmVBbmRDb21taXRAT1NBbGxvY2F0b3JAV1RGQEBTQVBBWElXNFVzYWdlQDEyQF9OMTFAWgogICAg
ID9yZXNlcnZlQ2FwYWNpdHlAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhJQFoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXgg
ZmVhODIwZGRjOWE3Y2JhMWI0MjQ1NTNlY2E5NzBlMDAxZGRkMmQwYy4uYmVlMjE4ODMzNjI2OGNj
MDU3Nzg3NzAzM2MzYTM2MGI0ZDUwOTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTIwNjYsNiArMjA2NiwxNCBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvRmlsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxo
ZWFwXE1hcmtlZEFsbG9jYXRvci5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcTWFya2VkQWxsb2NhdG9yLmgiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcTWFya2VkQmxv
Y2suY3BwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOWQ4YjNkZDU4ZDY2MmFhNDAxNzQwYzFmNTM4OThiOTA3MjJjMmM0ZS4uY2UzZTM1ZWU1Njcx
ZDM3YjY3Yzc5MjNhMzQ4YmIzMmNiOWY0Y2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTcyMSw2ICs3MjEsOCBAQAogCQlDMjJDNTMxNDEzRkFGNkVGMDBCN0RDMEQgLyogc3Ry
dG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjJD
NTJCQTEzRkFGNkVGMDBCN0RDMEQgLyogc3RydG9kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzIyQzUzMTUxM0ZBRjZFRjAwQjdEQzBEIC8qIHV0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjJD
NTJCQjEzRkFGNkVGMDBCN0RDMEQgLyogdXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQnVt
cFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBCdW1wU3BhY2UuY3BwICovOyB9OworCQlDMkI5
MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYg
LyogTWFya2VkQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5
MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQzJD
OEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIEJ1bXBTcGFjZUlubGluZU1ldGhvZHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIw
MDU3OEU2NSAvKiBCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJDOEQwMzAxNEEzQ0VGQzAwNTc4RTY1IC8q
IEJ1bXBCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzJDOEQwMkUxNEEzQ0VGQzAwNTc4RTY1IC8qIEJ1bXBCbG9jay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3
OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyQzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTUwNiw2ICsxNTA4
LDggQEAKIAkJQzIyQzUyQkExM0ZBRjZFRjAwQjdEQzBEIC8qIHN0cnRvZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBzdHJ0b2QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzIyQzUyQkIxM0ZBRjZFRjAwQjdEQzBEIC8qIHV0aWxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IHV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBCdW1wU3BhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVtcFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRBbGxvY2F0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2IC8qIE1h
cmtlZEFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YXJrZWRBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAy
QjE0QTNDNkIyMDA1NzhFNjUgLyogQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBCdW1wQmxv
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVtcEJsb2NrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFw
QmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEJsb2NrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODA2LDYgKzE4MTAsOCBAQAogCQkJCTE0MkUz
MTMxMTM0RkYwQTYwMEFGQURCNSAvKiBMb2NhbFNjb3BlLmggKi8sCiAJCQkJMTRCNzIzM0YxMkQ3
RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgKi8sCiAJCQkJMTRCNzIzNDAx
MkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5oICovLAorCQkJCUMyQjkxNkM0
MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovLAorCQkJCUMyQjkxNkMx
MTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLywKIAkJCQkxNDJENkYwNjEz
NTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2suY3BwICovLAogCQkJCTE0MkQ2RjA3MTM1MzlB
MjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5oICovLAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1
QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICovLApAQCAtMjY3OCw2ICsyNjg0LDcgQEAKIAkJCQlB
NzNCRTE2OTE0ODQyMDUyMDA5MTIwNEIgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyRDlDQTEzMTRCQ0MwNDYwMDMwNEI0NiAvKiBDaGVja2VkQm9vbGVhbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTczQkUxNkIxNDg0MjA1MjAwOTEyMDRCIC8qIEFycmF5QnVmZmVyVmlldy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8q
IEFycmF5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MjQw
RTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNjY0LDYgKzM2NzEsNyBAQAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAv
KiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBB
OUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkI5MTZDNTE0
REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCBjNjFmYjM3ZjEzMDY1NzU5YzQwZjE1NTg5YTY2Mzcx
YzBhZTc0ZmIxLi4xNTVlZTEyNGQ3ZWM4MjgzZDJmNmRiNmI4ZWM4N2IzMjg2ZGRkMjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtNzMsNiArNzMsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBoZWFwL0hlYXAuY3BwIFwKICAgICBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAgXAogICAg
IGhlYXAvTWFya1N0YWNrLmNwcCBcCisgICAgaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwIFwKICAg
ICBoZWFwL01hcmtlZEJsb2NrLmNwcCBcCiAgICAgaGVhcC9NYXJrZWRTcGFjZS5jcHAgXAogICAg
IGhlYXAvVlRhYmxlU3BlY3RydW0uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBjNjM4NmJjN2Q0MjUxZjdiYTY4NzU3NzVlZDBmYzNk
MzgzYTZmODljLi42YjI2OTZjODk4NjgzYzUzOTM4ZjU5MTRjM2ZjODBiZWEwMjBkMmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiREZHSklUQ29tcGlsZXIuaCIKICNpbmNsdWRlICJERkdPU1JF
eGl0LmgiCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIk1hcmtlZEFsbG9j
YXRvci5oIgogI2luY2x1ZGUgIlZhbHVlUmVjb3ZlcnkuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewpAQCAtMTU0NCw5ICsxNTQ1LDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVj
dHVyZSwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewotICAgICAgICBNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzKiBzaXplQ2xhc3MgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLnNpemVDbGFzc0Zvck9i
amVjdChzaXplb2YoSlNGaW5hbE9iamVjdCkpOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFs
bG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0KHNp
emVvZihKU0ZpbmFsT2JqZWN0KSk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKCZz
aXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwsIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQ
dHIoJmFsbG9jYXRvci0+bV9maXJzdEZyZWVDZWxsLCByZXN1bHRHUFIpOwogICAgICAgICBzbG93
UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVz
dWx0R1BSKSk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgb2JqZWN0IGlzIGhhbGYtYWxsb2Nh
dGVkOiB3ZSBoYXZlIHdoYXQgd2Uga25vdyBpcyBhIGZyZXNoIG9iamVjdCwgYnV0CkBAIC0xNTU4
LDcgKzE1NTksNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgLy8gTm93IHRoYXQgd2Ug
aGF2ZSBzY3JhdGNoR1BSIGJhY2ssIHJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlz
dAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiksIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCAmc2l6
ZUNsYXNzLT5maXJzdEZyZWVDZWxsKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQ
UiwgJmFsbG9jYXRvci0+bV9maXJzdEZyZWVDZWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIElu
aXRpYWxpemUgdGhlIG9iamVjdCdzIGNsYXNzSW5mbyBwb2ludGVyCiAgICAgICAgIG1faml0LnN0
b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0ZpbmFsT2JqZWN0OjpzX2lu
Zm8pLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYTIxMzYwODNh
YjQyNWQ0MWI3YWNjZjZlNTQ1NjYxYjQyNjNjY2YzMS4uOWY1MDk0YTU4NDI3YzNkOWE3MjgzZDA5
YjhhMDA2MGY4Yzk0ZmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTgx
MSw3ICs4MTEsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnbGUp
CiAKICAgICB7CiAgICAgICAgIEdDUEhBU0UoUmVzZXRBbGxvY2F0b3IpOwotICAgICAgICByZXNl
dEFsbG9jYXRvcigpOworICAgICAgICByZXNldEFsbG9jYXRvcnMoKTsKICAgICB9CiAgICAgCiAg
ICAgewpAQCAtODQ2LDEwICs4NDYsMTAgQEAgdm9pZCBIZWFwOjpjYW5vbmljYWxpemVDZWxsTGl2
ZW5lc3NEYXRhKCkKICAgICBtX29iamVjdFNwYWNlLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0Rh
dGEoKTsKIH0KIAotdm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcigpCit2b2lkIEhlYXA6OnJlc2V0
QWxsb2NhdG9ycygpCiB7CiAgICAgbV9leHRyYUNvc3QgPSAwOwotICAgIG1fb2JqZWN0U3BhY2Uu
cmVzZXRBbGxvY2F0b3IoKTsKKyAgICBtX29iamVjdFNwYWNlLnJlc2V0QWxsb2NhdG9ycygpOwog
fQogCiB2b2lkIEhlYXA6OnNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5k
ZXggNDBhODM3NmYwMTZhM2I1MjUxMmU2NmEzZTViZDQ4Y2RhMjg1Zjg2YS4uMWQwYWM1NDA3NjZm
MmU4ODJlYWJmNjFlNzI3MDdkN2RlNmZlOTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkRGR0NvZGVCbG9ja3MuaCIKICNpbmNsdWRl
ICJIYW5kbGVIZWFwLmgiCiAjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKKyNpbmNsdWRlICJNYXJr
ZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKQEAgLTk0LDcgKzk1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xs
ZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgICAgIGlubGluZSBib29sIGlzQnVzeSgpOwogICAg
ICAgICAKLSAgICAgICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yT2JqZWN0
KHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zaXplQ2xhc3NGb3IoYnl0ZXMp
OyB9CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0KHNpemVfdCBi
eXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0b3JGb3IoYnl0ZXMpOyB9CiAgICAg
ICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CiAgICAgICAgIENoZWNrZWRCb29sZWFuIHRyeUFs
bG9jYXRlU3RvcmFnZShzaXplX3QsIHZvaWQqKik7CiAgICAgICAgIENoZWNrZWRCb29sZWFuIHRy
eVJlYWxsb2NhdGVTdG9yYWdlKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOwpAQCAtMTM2LDYgKzEz
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIE1hcmtlZFNwYWNlOworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwog
ICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBC
dW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKQEAgLTE2MCw3ICsx
NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gY29uc2VydmF0aXZlIG1hcmtpbmcs
IGVhZ2VyIHN3ZWVwaW5nLCBvciBpdGVyYXRpbmcgdGhlIGNlbGxzIGluIGEgTWFya2VkQmxvY2su
KQogICAgICAgICB2b2lkIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKIAotICAgICAg
ICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7CisgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7
CiAgICAgICAgIHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayopOwogCiAgICAgICAgIHZvaWQg
Y2xlYXJNYXJrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9j
YXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODIzOWZiYWVkZmMwYzk4MTgyODEyYTExMmM5ZTFjYTQ5ZTcw
YjUxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEFsbG9jYXRvci5jcHAKQEAgLTAsMCArMSwxMjggQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgIkhlYXAuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2lubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSGVs
cGVyKCkKK3sKKyAgICBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGwgPSBtX2Zp
cnN0RnJlZUNlbGw7CisgICAgaWYgKCFmaXJzdEZyZWVDZWxsKSB7CisgICAgICAgIGZvciAoTWFy
a2VkQmxvY2sqJiBibG9jayA9IG1fY3VycmVudEJsb2NrOyBibG9jazsgYmxvY2sgPSBzdGF0aWNf
Y2FzdDxNYXJrZWRCbG9jayo+KGJsb2NrLT5uZXh0KCkpKSB7CisgICAgICAgICAgICBmaXJzdEZy
ZWVDZWxsID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpTd2VlcFRvRnJlZUxpc3QpOworICAg
ICAgICAgICAgaWYgKGZpcnN0RnJlZUNlbGwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBtX21hcmtlZFNwYWNlLT5kaWRDb25zdW1lRnJlZUxpc3QoYmxvY2spOworICAgICAg
ICAgICAgYmxvY2stPmRpZENvbnN1bWVGcmVlTGlzdCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpZiAoIWZpcnN0RnJlZUNlbGwpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgCisgICAgQVNTRVJUKGZpcnN0RnJlZUNlbGwpOworICAgIG1fZmlyc3RGcmVlQ2VsbCA9
IGZpcnN0RnJlZUNlbGwtPm5leHQ7CisgICAgcmV0dXJuIGZpcnN0RnJlZUNlbGw7Cit9CisgICAg
CitpbmxpbmUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZSgpCit7CisgICAgbV9o
ZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBBbGxvY2F0aW9uOworICAgIHZvaWQqIHJlc3Vs
dCA9IHRyeUFsbG9jYXRlSGVscGVyKCk7CisgICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPSBOb09wZXJhdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAordm9pZCogTWFy
a2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKCkKK3sKKyNpZiBDT0xMRUNUX09OX0VWRVJZ
X0FMTE9DQVRJT04KKyAgICBtX2hlYXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgQVNTRVJU
KG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKKyNlbmRpZgor
ICAgIAorICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlKCk7CisgICAgCisgICAgaWYgKExJ
S0VMWShyZXN1bHQgIT0gMCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgCisgICAgQWxs
b2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0OworICAgIAorICAgIGlmICgoCisjaWYgRU5B
QkxFKEdHQykKKyAgICAgICAgIG51cnNlcnlXYXRlck1hcmsoKSA8IG1faGVhcC0+bV9taW5CeXRl
c1BlckN5Y2xlCisjZWxzZQorICAgICAgICAgbV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+
aGlnaFdhdGVyTWFyaygpCisjZW5kaWYKKyAgICAgICAgICkgfHwgIW1faGVhcC0+bV9pc1NhZmVU
b0NvbGxlY3QpCisgICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uTXVzdFN1Y2Nl
ZWQ7CisgICAgZWxzZQorICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbkNhbkZh
aWw7CisgICAgCisgICAgTWFya2VkQmxvY2sqIGJsb2NrID0gYWxsb2NhdGVCbG9jayhhbGxvY2F0
aW9uRWZmb3J0KTsKKyAgICBpZiAoYmxvY2spIHsKKyAgICAgICAgYWRkQmxvY2soYmxvY2spOwor
ICAgICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZSgpOworICAgICAgICBBU1NFUlQocmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgbV9oZWFwLT5j
b2xsZWN0KEhlYXA6OkRvTm90U3dlZXApOworICAgIAorICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRl
KCk7CisgICAgCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAK
KyAgICBBU1NFUlQobV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGlnaFdhdGVyTWFyaygp
KTsKKyAgICAKKyAgICBhZGRCbG9jayhhbGxvY2F0ZUJsb2NrKEFsbG9jYXRpb25NdXN0U3VjY2Vl
ZCkpOworICAgIAorICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKCk7CisgICAgQVNTRVJUKHJlc3Vs
dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyAgICAKK01hcmtlZEJsb2NrKiBNYXJrZWRBbGxv
Y2F0b3I6OmFsbG9jYXRlQmxvY2soQWxsb2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0KQor
eworICAgIE1hcmtlZEJsb2NrKiBibG9jazsKKyAgICAKKyAgICB7CisgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2hlYXAtPm1fZnJlZUJsb2NrTG9jayk7CisgICAgICAgIGlmIChtX2hlYXAt
Pm1fbnVtYmVyT2ZGcmVlQmxvY2tzKSB7CisgICAgICAgICAgICBibG9jayA9IHN0YXRpY19jYXN0
PE1hcmtlZEJsb2NrKj4obV9oZWFwLT5tX2ZyZWVCbG9ja3MucmVtb3ZlSGVhZCgpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChibG9jayk7CisgICAgICAgICAgICBtX2hlYXAtPm1fbnVtYmVyT2ZGcmVl
QmxvY2tzLS07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmxvY2sgPSAwOworICAgIH0K
KyAgICBpZiAoYmxvY2spCisgICAgICAgIGJsb2NrID0gTWFya2VkQmxvY2s6OnJlY3ljbGUoYmxv
Y2ssIG1faGVhcCwgbV9jZWxsU2l6ZSk7CisgICAgZWxzZSBpZiAoYWxsb2NhdGlvbkVmZm9ydCA9
PSBBbGxvY2F0aW9uQ2FuRmFpbCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZWxzZQorICAgICAg
ICBibG9jayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUobV9oZWFwLCBtX2NlbGxTaXplKTsKKyAgICAK
KyAgICBtX21hcmtlZFNwYWNlLT5kaWRBZGRCbG9jayhibG9jayk7CisgICAgCisgICAgcmV0dXJu
IGJsb2NrOworfQorCit2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2soTWFya2VkQmxvY2sq
IGJsb2NrKQoreworICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2spOworICAgIEFTU0VSVCghbV9m
aXJzdEZyZWVDZWxsKTsKKyAgICAKKyAgICBtX2Jsb2NrTGlzdC5hcHBlbmQoYmxvY2spOworICAg
IG1fY3VycmVudEJsb2NrID0gYmxvY2s7CisgICAgbV9maXJzdEZyZWVDZWxsID0gYmxvY2stPnN3
ZWVwKE1hcmtlZEJsb2NrOjpTd2VlcFRvRnJlZUxpc3QpOworfQorCit2b2lkIE1hcmtlZEFsbG9j
YXRvcjo6cmVtb3ZlQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQoreworICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBibG9jaykKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSAwOworICAgIG1fYmxv
Y2tMaXN0LnJlbW92ZShibG9jayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjQ0YzY5
MWI4N2NmN2YyM2IwMmI1NjVkM2NkYWY2NWZkMmFlYmVjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKQEAgLTAsMCArMSw5NyBA
QAorI2lmbmRlZiBNYXJrZWRBbGxvY2F0b3JfaAorI2RlZmluZSBNYXJrZWRBbGxvY2F0b3JfaAor
CisjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlz
dC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGVhcDsKK2NsYXNzIE1hcmtlZFNwYWNl
OworCituYW1lc3BhY2UgREZHIHsKK2NsYXNzIFNwZWN1bGF0aXZlSklUOworfQorCitjbGFzcyBN
YXJrZWRBbGxvY2F0b3IgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNz
IERGRzo6U3BlY3VsYXRpdmVKSVQ7CisKK3B1YmxpYzoKKyAgICBNYXJrZWRBbGxvY2F0b3IoKTsK
KyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCB6YXBGcmVlTGlzdCgpOworICAgIHNpemVfdCBj
ZWxsU2l6ZSgpIHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KKyAgICB2b2lkKiBhbGxvY2F0ZSgpOwor
ICAgIEhlYXAqIGhlYXAoKSB7IHJldHVybiBtX2hlYXA7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hCbG9jayhGdW5jdG9yJik7CisgICAgCisgICAg
dm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jayopOworICAgIHZvaWQgcmVtb3ZlQmxvY2soTWFya2Vk
QmxvY2sqKTsKKyAgICB2b2lkIHNldEhlYXAoSGVhcCogaGVhcCkgeyBtX2hlYXAgPSBoZWFwOyB9
CisgICAgdm9pZCBzZXRDZWxsU2l6ZShzaXplX3QgY2VsbFNpemUpIHsgbV9jZWxsU2l6ZSA9IGNl
bGxTaXplOyB9CisgICAgdm9pZCBzZXRNYXJrZWRTcGFjZShNYXJrZWRTcGFjZSogc3BhY2UpIHsg
bV9tYXJrZWRTcGFjZSA9IHNwYWNlOyB9CisgICAgCitwcml2YXRlOgorICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoKTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZSgp
OworICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKCk7CisgICAgTWFya2VkQmxvY2sqIGFsbG9j
YXRlQmxvY2soQWxsb2NhdGlvbkVmZm9ydCk7CisgICAgCisgICAgTWFya2VkQmxvY2s6OkZyZWVD
ZWxsKiBtX2ZpcnN0RnJlZUNlbGw7CisgICAgTWFya2VkQmxvY2sqIG1fY3VycmVudEJsb2NrOwor
ICAgIERvdWJseUxpbmtlZExpc3Q8SGVhcEJsb2NrPiBtX2Jsb2NrTGlzdDsKKyAgICBzaXplX3Qg
bV9jZWxsU2l6ZTsKKyAgICBIZWFwKiBtX2hlYXA7CisgICAgTWFya2VkU3BhY2UqIG1fbWFya2Vk
U3BhY2U7Cit9OworCitpbmxpbmUgTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoKQor
ICAgIDogbV9maXJzdEZyZWVDZWxsKDApCisgICAgLCBtX2N1cnJlbnRCbG9jaygwKQorICAgICwg
bV9jZWxsU2l6ZSgwKQorICAgICwgbV9oZWFwKDApCisgICAgLCBtX21hcmtlZFNwYWNlKDApCit7
Cit9CisgICAgCitpbmxpbmUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZSgpCit7Cisg
ICAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0gbV9maXJzdEZyZWVDZWxs
OworICAgIC8vIFRoaXMgaXMgYSBsaWdodC13ZWlnaHQgZmFzdCBwYXRoIHRvIGNvdmVyIHRoZSBt
b3N0IGNvbW1vbiBjYXNlLgorICAgIGlmIChVTkxJS0VMWSghZmlyc3RGcmVlQ2VsbCkpCisgICAg
ICAgIHJldHVybiBhbGxvY2F0ZVNsb3dDYXNlKCk7CisgICAgCisgICAgbV9maXJzdEZyZWVDZWxs
ID0gZmlyc3RGcmVlQ2VsbC0+bmV4dDsKKyAgICByZXR1cm4gZmlyc3RGcmVlQ2VsbDsKK30KKwor
aW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXNldCgpCit7CisgICAgbV9jdXJyZW50Qmxv
Y2sgPSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KG1fYmxvY2tMaXN0LmhlYWQoKSk7Cit9CisK
K2lubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6emFwRnJlZUxpc3QoKQoreworICAgIGlmICgh
bV9jdXJyZW50QmxvY2spIHsKKyAgICAgICAgQVNTRVJUKCFtX2ZpcnN0RnJlZUNlbGwpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fY3VycmVudEJsb2NrLT56YXBGcmVlTGlz
dChtX2ZpcnN0RnJlZUNlbGwpOworICAgIG1fZmlyc3RGcmVlQ2VsbCA9IDA7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVh
Y2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEhlYXBCbG9jayogbmV4dDsKKyAgICBm
b3IgKEhlYXBCbG9jayogYmxvY2sgPSBtX2Jsb2NrTGlzdC5oZWFkKCk7IGJsb2NrOyBibG9jayA9
IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7CisgICAgICAgIGZ1bmN0b3Io
c3RhdGljX2Nhc3Q8TWFya2VkQmxvY2sqPihibG9jaykpOworICAgIH0KK30KKyAgICAKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmNwcAppbmRleCBmY2NhMTg4ZTQ3MTdhM2RlYzViNTNiYjdhZGZiNzgzMmJjN2UwODcy
Li44N2RjMDQ5M2RjNWUzZjE5MWZkYjA4MDM5NWIxZTk5NjAyNTk3ODU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBAIC0zNSwxNTUgKzM1LDQwIEBAIE1h
cmtlZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICwgbV9udXJzZXJ5V2F0ZXJN
YXJrKDApCiAgICAgLCBtX2hlYXAoaGVhcCkKIHsKLSAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9
IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVj
aXNlU3RlcCkKLSAgICAgICAgc2l6ZUNsYXNzRm9yKGNlbGxTaXplKS5jZWxsU2l6ZSA9IGNlbGxT
aXplOwotCi0gICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6
ZSA8PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApCi0gICAgICAg
IHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkuY2VsbFNpemUgPSBjZWxsU2l6ZTsKLX0KLQotdm9pZCBN
YXJrZWRTcGFjZTo6YWRkQmxvY2soU2l6ZUNsYXNzJiBzaXplQ2xhc3MsIE1hcmtlZEJsb2NrKiBi
bG9jaykKLXsKLSAgICBBU1NFUlQoIXNpemVDbGFzcy5jdXJyZW50QmxvY2spOwotICAgIEFTU0VS
VCghc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwpOwotCi0gICAgc2l6ZUNsYXNzLmJsb2NrTGlzdC5h
cHBlbmQoYmxvY2spOwotICAgIHNpemVDbGFzcy5jdXJyZW50QmxvY2sgPSBibG9jazsKLSAgICBz
aXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBU
b0ZyZWVMaXN0KTsKLX0KKyAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBj
ZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgeworICAg
ICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLnNldENlbGxTaXplKGNlbGxTaXplKTsKKyAgICAg
ICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5zZXRIZWFwKGhlYXApOworICAgICAgICBhbGxvY2F0
b3JGb3IoY2VsbFNpemUpLnNldE1hcmtlZFNwYWNlKHRoaXMpOworICAgIH0KIAotdm9pZCBNYXJr
ZWRTcGFjZTo6cmVtb3ZlQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQotewotICAgIFNpemVDbGFz
cyYgc2l6ZUNsYXNzID0gc2l6ZUNsYXNzRm9yKGJsb2NrLT5jZWxsU2l6ZSgpKTsKLSAgICBpZiAo
c2l6ZUNsYXNzLmN1cnJlbnRCbG9jayA9PSBibG9jaykKLSAgICAgICAgc2l6ZUNsYXNzLmN1cnJl
bnRCbG9jayA9IDA7Ci0gICAgc2l6ZUNsYXNzLmJsb2NrTGlzdC5yZW1vdmUoYmxvY2spOworICAg
IGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1wcmVj
aXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKSB7CisgICAgICAgIGFsbG9jYXRv
ckZvcihjZWxsU2l6ZSkuc2V0Q2VsbFNpemUoY2VsbFNpemUpOworICAgICAgICBhbGxvY2F0b3JG
b3IoY2VsbFNpemUpLnNldEhlYXAoaGVhcCk7CisgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6
ZSkuc2V0TWFya2VkU3BhY2UodGhpcyk7CisgICAgfQogfQogCi12b2lkIE1hcmtlZFNwYWNlOjpy
ZXNldEFsbG9jYXRvcigpCit2b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQogewog
ICAgIG1fd2F0ZXJNYXJrID0gMDsKICAgICBtX251cnNlcnlXYXRlck1hcmsgPSAwOwogCiAgICAg
Zm9yIChzaXplX3QgY2VsbFNpemUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1
dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApCi0gICAgICAgIHNpemVDbGFzc0ZvcihjZWxs
U2l6ZSkucmVzZXRBbGxvY2F0b3IoKTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5y
ZXNldCgpOwogCiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxs
U2l6ZSA8PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApCi0gICAg
ICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkucmVzZXRBbGxvY2F0b3IoKTsKKyAgICAgICAgYWxs
b2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpjYW5v
bmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9
IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVj
aXNlU3RlcCkKLSAgICAgICAgc2l6ZUNsYXNzRm9yKGNlbGxTaXplKS56YXBGcmVlTGlzdCgpOwor
ICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLnphcEZyZWVMaXN0KCk7CiAKICAgICBmb3Ig
KHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IGltcHJlY2lzZUN1
dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkKLSAgICAgICAgc2l6ZUNsYXNzRm9yKGNl
bGxTaXplKS56YXBGcmVlTGlzdCgpOworICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLnph
cEZyZWVMaXN0KCk7CiB9CiAKLWlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGVI
ZWxwZXIoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQotewotICAgIE1hcmtlZEJs
b2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCA9IHNpemVDbGFzcy5maXJzdEZyZWVDZWxsOwot
ICAgIGlmICghZmlyc3RGcmVlQ2VsbCkgewotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxv
Y2sgPSBzaXplQ2xhc3MuY3VycmVudEJsb2NrOyBibG9jazsgYmxvY2sgPSBzdGF0aWNfY2FzdDxN
YXJrZWRCbG9jayo+KGJsb2NrLT5uZXh0KCkpKSB7Ci0gICAgICAgICAgICBmaXJzdEZyZWVDZWxs
ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAg
ICAgaWYgKGZpcnN0RnJlZUNlbGwpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBtX251cnNlcnlXYXRlck1hcmsgKz0gYmxvY2stPmNhcGFjaXR5KCkgLSBibG9jay0+c2l6ZSgp
OwotICAgICAgICAgICAgbV93YXRlck1hcmsgKz0gYmxvY2stPmNhcGFjaXR5KCk7Ci0gICAgICAg
ICAgICBibG9jay0+ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoIWZpcnN0RnJlZUNlbGwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBB
U1NFUlQoZmlyc3RGcmVlQ2VsbCk7Ci0gICAgc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBmaXJz
dEZyZWVDZWxsLT5uZXh0OwotICAgIHJldHVybiBmaXJzdEZyZWVDZWxsOwotfQotCi1pbmxpbmUg
dm9pZCogTWFya2VkU3BhY2U6OnRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNp
emVDbGFzcykKLXsKLSAgICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRp
b247Ci0gICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVIZWxwZXIoc2l6ZUNsYXNzKTsKLSAg
ICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLXZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVNsb3dDYXNlKE1hcmtl
ZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSNpZiBDT0xMRUNUX09OX0VWRVJZX0FM
TE9DQVRJT04KLSAgICBtX2hlYXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7Ci0gICAgQVNTRVJUKG1f
aGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKLSNlbmRpZgotICAg
IAotICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgCi0gICAg
aWYgKExJS0VMWShyZXN1bHQgIT0gMCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgCi0g
ICAgQWxsb2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0OwotICAgIAotICAgIGlmICgoCi0j
aWYgRU5BQkxFKEdHQykKLSAgICAgICAgIG51cnNlcnlXYXRlck1hcmsoKSA8IG1faGVhcC0+bV9t
aW5CeXRlc1BlckN5Y2xlCi0jZWxzZQotICAgICAgICAgbV9oZWFwLT53YXRlck1hcmsoKSA8IG1f
aGVhcC0+aGlnaFdhdGVyTWFyaygpCi0jZW5kaWYKLSAgICAgICAgICkgfHwgIW1faGVhcC0+bV9p
c1NhZmVUb0NvbGxlY3QpCi0gICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uTXVz
dFN1Y2NlZWQ7Ci0gICAgZWxzZQotICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlv
bkNhbkZhaWw7Ci0gICAgCi0gICAgTWFya2VkQmxvY2sqIGJsb2NrID0gYWxsb2NhdGVCbG9jayhz
aXplQ2xhc3MuY2VsbFNpemUsIGFsbG9jYXRpb25FZmZvcnQpOwotICAgIGlmIChibG9jaykgewot
ICAgICAgICBhZGRCbG9jayhzaXplQ2xhc3MsIGJsb2NrKTsKLSAgICAgICAgdm9pZCogcmVzdWx0
ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIG1faGVhcC0+Y29sbGVjdChIZWFw
OjpEb05vdFN3ZWVwKTsKLSAgICAKLSAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3Mp
OwotICAgIAotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgCi0g
ICAgQVNTRVJUKG1faGVhcC0+d2F0ZXJNYXJrKCkgPCBtX2hlYXAtPmhpZ2hXYXRlck1hcmsoKSk7
Ci0gICAgCi0gICAgYWRkQmxvY2soc2l6ZUNsYXNzLCBhbGxvY2F0ZUJsb2NrKHNpemVDbGFzcy5j
ZWxsU2l6ZSwgQWxsb2NhdGlvbk11c3RTdWNjZWVkKSk7Ci0gICAgCi0gICAgcmVzdWx0ID0gdHJ5
QWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1NYXJrZWRCbG9jayogTWFya2VkU3BhY2U6OmFsbG9jYXRlQmxvY2soc2l6ZV90
IGNlbGxTaXplLCBBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQpCi17Ci0gICAgTWFy
a2VkQmxvY2sqIGJsb2NrOwotICAgIAotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAgaWYgKG1faGVhcC0+bV9udW1iZXJP
ZkZyZWVCbG9ja3MpIHsKLSAgICAgICAgICAgIGJsb2NrID0gc3RhdGljX2Nhc3Q8TWFya2VkQmxv
Y2sqPihtX2hlYXAtPm1fZnJlZUJsb2Nrcy5yZW1vdmVIZWFkKCkpOwotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrKTsKLSAgICAgICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MtLTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBibG9jayA9IDA7Ci0gICAgfQotICAgIGlmIChi
bG9jaykKLSAgICAgICAgYmxvY2sgPSBNYXJrZWRCbG9jazo6cmVjeWNsZShibG9jaywgbV9oZWFw
LCBjZWxsU2l6ZSk7Ci0gICAgZWxzZSBpZiAoYWxsb2NhdGlvbkVmZm9ydCA9PSBBbGxvY2F0aW9u
Q2FuRmFpbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZWxzZQotICAgICAgICBibG9jayA9IE1h
cmtlZEJsb2NrOjpjcmVhdGUobV9oZWFwLCBjZWxsU2l6ZSk7Ci0gICAgCi0gICAgbV9ibG9ja3Mu
YWRkKGJsb2NrKTsKLSAgICAKLSAgICByZXR1cm4gYmxvY2s7Ci19CiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OmZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpCiB7CkBAIC0yMjIsNyArMTA3LDcgQEAg
aW5saW5lIHZvaWQgVGFrZUlmVW5tYXJrZWQ6Om9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2Nr
KQogICAgIGlmICghYmxvY2stPm1hcmtDb3VudElzWmVybygpKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgbV9tYXJrZWRTcGFjZS0+cmVtb3ZlQmxvY2soYmxvY2spOworICAgIG1fbWFya2Vk
U3BhY2UtPmFsbG9jYXRvckZvcihibG9jay0+Y2VsbFNpemUoKSkucmVtb3ZlQmxvY2soYmxvY2sp
OwogICAgIG1fZW1wdGllcy5hcHBlbmQoYmxvY2spOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAppbmRleCBmN2Q5NmM3NzQ3ODcyYTc2NGJjNTkyYzdmYTVjYTM2
ZTU0NTA5YWQwLi4yMWEwYjQ4ZGU4ZDJkOTNlMzE5ZmU0MmI5Y2U2NTAzOTRhZGMxNTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKQEAgLTIzLDYgKzIzLDcgQEAK
ICNkZWZpbmUgTWFya2VkU3BhY2VfaAogCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgi
CisjaW5jbHVkZSAiTWFya2VkQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIlBhZ2VBbGxvY2F0aW9uQWxp
Z25lZC5oIgpAQCAtNDgsMjcgKzQ5LDEzIEBAIGNsYXNzIE1hcmtlZFNwYWNlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENlbGxTaXplID0gMjA0ODsKIAotICAgIHN0cnVj
dCBTaXplQ2xhc3MgewotICAgICAgICBTaXplQ2xhc3MoKTsKLSAgICAgICAgdm9pZCByZXNldEFs
bG9jYXRvcigpOwotICAgICAgICB2b2lkIHphcEZyZWVMaXN0KCk7Ci0KLSAgICAgICAgTWFya2Vk
QmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsOwotICAgICAgICBNYXJrZWRCbG9jayogY3Vy
cmVudEJsb2NrOwotICAgICAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4gYmxvY2tMaXN0
OwotICAgICAgICBzaXplX3QgY2VsbFNpemU7Ci0gICAgfTsKLQogICAgIE1hcmtlZFNwYWNlKEhl
YXAqKTsKIAotICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7CisgICAgTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3JGb3Ioc2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZShzaXpl
X3QpOwotICAgIHZvaWQqIGFsbG9jYXRlKFNpemVDbGFzcyYpOwogICAgIAotICAgIHZvaWQgcmVz
ZXRBbGxvY2F0b3IoKTsKKyAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOwogCi0gICAgdm9pZCBh
ZGRCbG9jayhTaXplQ2xhc3MmLCBNYXJrZWRCbG9jayopOwotICAgIHZvaWQgcmVtb3ZlQmxvY2so
TWFya2VkQmxvY2sqKTsKICAgICBNYXJrZWRCbG9ja1NldCYgYmxvY2tzKCkgeyByZXR1cm4gbV9i
bG9ja3M7IH0KICAgICAKICAgICB2b2lkIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsK
QEAgLTg1LDEzICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzaHJpbmsoKTsKICAg
ICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpOworICAgIHZvaWQgZGlkQWRkQmxv
Y2soTWFya2VkQmxvY2sqKTsKKyAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdChNYXJrZWRCbG9j
ayopOwogCiBwcml2YXRlOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xv
d0Nhc2UoU2l6ZUNsYXNzJik7Ci0gICAgdm9pZCogdHJ5QWxsb2NhdGVIZWxwZXIoTWFya2VkU3Bh
Y2U6OlNpemVDbGFzcyYpOwotICAgIHZvaWQqIHRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3MmKTsKLSAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jayhzaXplX3QsIEFsbG9jYXRp
b25FZmZvcnQpOwotCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpAQCAtMTAyLDggKzg2LDggQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZUN1dG9mZiA9IG1heENlbGxTaXplOwog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ291bnQgPSBpbXByZWNpc2VDdXRvZmYg
LyBpbXByZWNpc2VTdGVwOwogCi0gICAgRml4ZWRBcnJheTxTaXplQ2xhc3MsIHByZWNpc2VDb3Vu
dD4gbV9wcmVjaXNlU2l6ZUNsYXNzZXM7Ci0gICAgRml4ZWRBcnJheTxTaXplQ2xhc3MsIGltcHJl
Y2lzZUNvdW50PiBtX2ltcHJlY2lzZVNpemVDbGFzc2VzOworICAgIEZpeGVkQXJyYXk8TWFya2Vk
QWxsb2NhdG9yLCBwcmVjaXNlQ291bnQ+IG1fcHJlY2lzZVNpemVDbGFzc2VzOworICAgIEZpeGVk
QXJyYXk8TWFya2VkQWxsb2NhdG9yLCBpbXByZWNpc2VDb3VudD4gbV9pbXByZWNpc2VTaXplQ2xh
c3NlczsKICAgICBzaXplX3QgbV93YXRlck1hcms7CiAgICAgc2l6ZV90IG1fbnVyc2VyeVdhdGVy
TWFyazsKICAgICBIZWFwKiBtX2hlYXA7CkBAIC0xMzYsNyArMTIwLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2Vk
U3BhY2U6OmZvckUKICAgICByZXR1cm4gZm9yRWFjaENlbGwoZnVuY3Rvcik7CiB9CiAKLWlubGlu
ZSBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBNYXJrZWRTcGFjZTo6c2l6ZUNsYXNzRm9yKHNpemVf
dCBieXRlcykKK2lubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JG
b3Ioc2l6ZV90IGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyAmJiBieXRlcyA8PSBtYXhDZWxs
U2l6ZSk7CiAgICAgaWYgKGJ5dGVzIDw9IHByZWNpc2VDdXRvZmYpCkBAIC0xNDYsMzkgKzEzMCwx
NyBAQCBpbmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgTWFya2VkU3BhY2U6OnNpemVDbGFz
c0ZvcihzaXplX3QgYnl0ZXMpCiAKIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUo
c2l6ZV90IGJ5dGVzKQogewotICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzID0gc2l6ZUNsYXNzRm9y
KGJ5dGVzKTsKLSAgICByZXR1cm4gYWxsb2NhdGUoc2l6ZUNsYXNzKTsKLX0KLQotaW5saW5lIHZv
aWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSAgICAv
LyBUaGlzIGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0aGUgbW9zdCBjb21t
b24gY2FzZS4KLSAgICBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGwgPSBzaXpl
Q2xhc3MuZmlyc3RGcmVlQ2VsbDsKLSAgICBpZiAoVU5MSUtFTFkoIWZpcnN0RnJlZUNlbGwpKQot
ICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93Q2FzZShzaXplQ2xhc3MpOwotICAgIAotICAgIHNp
emVDbGFzcy5maXJzdEZyZWVDZWxsID0gZmlyc3RGcmVlQ2VsbC0+bmV4dDsKLSAgICByZXR1cm4g
Zmlyc3RGcmVlQ2VsbDsKKyAgICByZXR1cm4gYWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZSgp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0
b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9y
KQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpIHsKLSAg
ICAgICAgU2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBtX3ByZWNpc2VTaXplQ2xhc3Nlc1tpXTsKLSAg
ICAgICAgSGVhcEJsb2NrKiBuZXh0OwotICAgICAgICBmb3IgKEhlYXBCbG9jayogYmxvY2sgPSBz
aXplQ2xhc3MuYmxvY2tMaXN0LmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAg
ICAgICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7Ci0gICAgICAgICAgICBmdW5jdG9yKHN0YXRpY19j
YXN0PE1hcmtlZEJsb2NrKj4oYmxvY2spKTsKLSAgICAgICAgfQorICAgICAgICBtX3ByZWNpc2VT
aXplQ2xhc3Nlc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgfQogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKSB7Ci0gICAgICAgIFNpemVDbGFz
cyYgc2l6ZUNsYXNzID0gbV9pbXByZWNpc2VTaXplQ2xhc3Nlc1tpXTsKLSAgICAgICAgSGVhcEJs
b2NrKiBuZXh0OwotICAgICAgICBmb3IgKEhlYXBCbG9jayogYmxvY2sgPSBzaXplQ2xhc3MuYmxv
Y2tMaXN0LmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICAgICAgbmV4dCA9
IGJsb2NrLT5uZXh0KCk7Ci0gICAgICAgICAgICBmdW5jdG9yKHN0YXRpY19jYXN0PE1hcmtlZEJs
b2NrKj4oYmxvY2spKTsKLSAgICAgICAgfQorICAgICAgICBtX2ltcHJlY2lzZVNpemVDbGFzc2Vz
W2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICB9CiAKICAgICByZXR1cm4gZnVuY3Rvci5y
ZXR1cm5WYWx1ZSgpOwpAQCAtMTkwLDI3ICsxNTIsMTUgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpm
b3IKICAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogfQogCi1pbmxpbmUgTWFya2Vk
U3BhY2U6OlNpemVDbGFzczo6U2l6ZUNsYXNzKCkKLSAgICA6IGZpcnN0RnJlZUNlbGwoMCkKLSAg
ICAsIGN1cnJlbnRCbG9jaygwKQotICAgICwgY2VsbFNpemUoMCkKLXsKLX0KLQotaW5saW5lIHZv
aWQgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6cmVzZXRBbGxvY2F0b3IoKQoraW5saW5lIHZvaWQg
TWFya2VkU3BhY2U6OmRpZEFkZEJsb2NrKE1hcmtlZEJsb2NrKiBibG9jaykKIHsKLSAgICBjdXJy
ZW50QmxvY2sgPSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KGJsb2NrTGlzdC5oZWFkKCkpOwor
ICAgIG1fYmxvY2tzLmFkZChibG9jayk7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3M6OnphcEZyZWVMaXN0KCkKK2lubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpkaWRDb25z
dW1lRnJlZUxpc3QoTWFya2VkQmxvY2sqIGJsb2NrKQogewotICAgIGlmICghY3VycmVudEJsb2Nr
KSB7Ci0gICAgICAgIEFTU0VSVCghZmlyc3RGcmVlQ2VsbCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBjdXJyZW50QmxvY2stPnphcEZyZWVMaXN0KGZpcnN0RnJlZUNlbGwpOwotICAg
IGZpcnN0RnJlZUNlbGwgPSAwOworICAgIG1fbnVyc2VyeVdhdGVyTWFyayArPSBibG9jay0+Y2Fw
YWNpdHkoKSAtIGJsb2NrLT5zaXplKCk7CisgICAgbV93YXRlck1hcmsgKz0gYmxvY2stPmNhcGFj
aXR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZU1ldGhvZHMuaAppbmRleCBlNjE3OTYxYjU2OGViYjMxMjg0ODczYmY5OTEw
MTY4MTU3YzIzNDNiLi4wMTU0NWZiOGM3Mjc0NTA5OGI0YjZhN2U4ODQwMjZjYTcxMzQzZDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaApAQCAtNDAx
LDEzICs0MDEsMTMgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVDaGFyKHVuc2lnbmVkIHNyYykKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlw
ZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVC
YXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQogewotICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MqIHNp
emVDbGFzcyA9ICZtX2dsb2JhbERhdGEtPmhlYXAuc2l6ZUNsYXNzRm9yT2JqZWN0KHNpemVvZihD
bGFzc1R5cGUpKTsKLSAgICBsb2FkUHRyKCZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwsIHJlc3Vs
dCk7CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmbV9nbG9iYWxEYXRhLT5oZWFw
LmFsbG9jYXRvckZvck9iamVjdChzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgbG9hZFB0cigmYWxs
b2NhdG9yLT5tX2ZpcnN0RnJlZUNlbGwsIHJlc3VsdCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
VGVzdFB0cihaZXJvLCByZXN1bHQpKTsKIAogICAgIC8vIHJlbW92ZSB0aGUgb2JqZWN0IGZyb20g
dGhlIGZyZWUgbGlzdAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQpLCBzdG9yYWdlUHRyKTsK
LSAgICBzdG9yZVB0cihzdG9yYWdlUHRyLCAmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsKTsKKyAg
ICBzdG9yZVB0cihzdG9yYWdlUHRyLCAmYWxsb2NhdG9yLT5tX2ZpcnN0RnJlZUNlbGwpOwogCiAg
ICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCiAgICAgc3RvcmVQdHIoc3Ry
dWN0dXJlLCBBZGRyZXNzKHJlc3VsdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwo=
</data>
<flag name="review"
          id="126569"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="126853"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>