<?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>127070</bug_id>
          
          <creation_ts>2014-01-15 15:27:18 -0800</creation_ts>
          <short_desc>Add MarkedBlockInlines.h</short_desc>
          <delta_ts>2014-03-26 20:26:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>968499</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-15 15:27:18 -0800</bug_when>
    <thetext>MarkedBlock.h is getting pretty unwieldy in terms of how many inline functions it has. MarkedBlock.cpp also contains some functions that could benefit from inlining, but which can&apos;t reside in MarkedBlock.h. It seems the time has come for MarkedBlockInlines.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994659</commentid>
    <comment_count>1</comment_count>
      <attachid>227868</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-26 11:55:53 -0700</bug_when>
    <thetext>Created attachment 227868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994660</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-26 11:56:47 -0700</bug_when>
    <thetext>Attachment 227868 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994662</commentid>
    <comment_count>3</comment_count>
      <attachid>227869</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-26 12:02:38 -0700</bug_when>
    <thetext>Created attachment 227869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994663</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-26 12:03:25 -0700</bug_when>
    <thetext>Attachment 227869 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994800</commentid>
    <comment_count>5</comment_count>
      <attachid>227869</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-26 20:26:24 -0700</bug_when>
    <thetext>Comment on attachment 227869
Patch

rs=me if you fix the build</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227868</attachid>
            <date>2014-03-26 11:55:53 -0700</date>
            <delta_ts>2014-03-26 12:02:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127070-20140326115532.patch</filename>
            <type>text/plain</type>
            <size>46375</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2MzA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBA
QAorMjAxNC0wMy0yNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBNYXJrZWRCbG9ja0lubGluZXMuaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyByZWluZGVudGVkIE1hcmtlZEJsb2NrLmgg
YW5kIGluY2x1ZGVkIEpTQ0lubGluZXMuaCBpbiBhIGJ1bmNoIG9mIGNwcCBmaWxlcyAKKyAgICAg
ICAgdGhhdCBuZWVkZWQgaXQuCisKKyAgICAgICAgKiBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24u
bW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpjbGVhclJlbWVtYmVyZWRTZXQpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAv
TWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yOjpy
ZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OkNv
dW50RnVuY3Rvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OmNv
dW50KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkNvdW50RnVuY3Rvcjo6cmV0dXJuVmFs
dWUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcyk6CisgICAgICAg
IChXVEY6Ok1hcmtlZEJsb2NrSGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpGcmVlTGlzdDo6RnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6Zmlyc3RBdG9tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmF0b21z
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YmxvY2tGb3IpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmhlYXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6dm0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6d2Vha1NldCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzaHJpbmspOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dmlzaXRXZWFrU2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlYXBXZWFrU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OndpbGxSZW1vdmVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpkaWRDb25zdW1lRnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6ZGlkQ29uc3VtZUVtcHR5RnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6bWFya0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmlzRW1wdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6Y2VsbFNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZGVzdHJ1
Y3RvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjYXBhY2l0eSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphdG9tTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OnNldFJlbWVtYmVyZWQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6Y2xlYXJSZW1lbWJlcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmF0b21pY0NsZWFyUmVtZW1iZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjppc1JlbWVtYmVyZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6aXNNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6dGVzdEFuZFNldE1hcmtlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpzZXRNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2xlYXJN
YXJrZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNOZXdseUFsbG9j
YXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzZXROZXdseUFsbG9j
YXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck5ld2x5QWxs
b2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmZvckVhY2hMaXZlQ2VsbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpmb3JFYWNoRGVhZENlbGwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6bmVlZHNTd2VlcGluZyk6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q0lubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvSlNNYXAuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHA6
CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlRnVuY3Rpb25zLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VSZWFjdGlvbi5jcHA6CisgICAgICAgICogcnVudGltZS9KU1NldEl0ZXJhdG9yLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha01hcC5jcHA6CisgICAgICAgICogcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9NYXBEYXRhLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlw
ZS5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvV2Vha01hcERhdGEuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcFBy
b3RvdHlwZS5jcHA6CisKIDIwMTQtMDMtMjYgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW0NTUyBTaGFwZXNdIFJlbW92ZSBzaGFwZS1pbnNpZGUgc3VwcG9y
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1
bmN0aW9uLm1tCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW1wb3J0ICJBUElDYXN0LmgiCiAjaW1wb3J0ICJEZWxheWVkUmVsZWFzZVNjb3BlLmgiCiAj
aW1wb3J0ICJFcnJvci5oIgorI2ltcG9ydCAiSlNDSW5saW5lcy5oIgogI2ltcG9ydCAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbXBvcnQgIkpTQ2VsbC5oIgogI2ltcG9ydCAiSlNDZWxsSW5saW5l
cy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lv
biAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc2LDYgKzEwNzYs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYWNoaW5lU3RhY2tNYXJrZXIu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcTWFya2VkQWxsb2NhdG9yLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXE1hcmtlZEJsb2NrLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXE1hcmtlZEJsb2NrSW5saW5lcy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrZWRCbG9ja1NldC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrZWRTcGFjZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrU3RhY2suaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2NjI5
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTc3OCw2ICsxNzc4
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcTWFya2VkQmxvY2suaCI+CiAg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGhlYXBcTWFya2VkQmxvY2tJbmxpbmVzLmgiPgorICAgICAgPEZpbHRl
cj5oZWFwPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxoZWFwXE1hcmtlZEJsb2NrU2V0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0MzUsNiArMTQzNSw3
IEBACiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJGMTRBM0NFRkMwMDU3
OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2Jq
ZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJD
RjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSAqLzsgfTsKIAkJ
QzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QzAxNkUxNUE4MTAw
REQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovOyB9OworCQlDMkNGRTFBODE4RTMyQ0E0
MDA3QzJBMDAgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkNGRTFBNzE4RTMyQ0EzMDA3QzJBMDAgLyogTWFya2Vk
QmxvY2tJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRBNzc4MjE4RTI1OTk5
MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDMkRGNDQyRjE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJE
RjQ0MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCAqLzsgfTsKIAkJQzJERjQ0
MzAxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRGNDQyRTE3MDdBQzAxMDBBNUNBOTYgLyogU3Vw
ZXJSZWdpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMjk3Nyw2ICsyOTc4LDcgQEAKIAkJQzJDOEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhl
YXBCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwQmxvY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8q
IEpTQVBJV3JhcHBlck9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEpTQVBJV3JhcHBlck9iamVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FQSVdyYXBwZXJPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJDRkUxQTcxOEUzMkNBMzAwN0MyQTAwIC8qIE1hcmtl
ZEJsb2NrSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRC
bG9ja0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJEQTc3ODIxOEUy
NTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhlYXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyREY0
NDJEMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdXBlclJlZ2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyREY0NDJFMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdXBlclJlZ2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzYyNCw2ICszNjI2LDcgQEAKIAkJCQkyQTgzNjM4NDE4RDdEMEVF
MDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovLAogCQkJCTJBODM2Mzg3MThE
N0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKIAkJCQkyQTgz
NjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICovLAorCQkJ
CUMyQ0ZFMUE3MThFMzJDQTMwMDdDMkEwMCAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gaGVhcDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00OTQ1
LDYgKzQ5NDgsNyBAQAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhl
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFDRTYzRDE4Q0E1QTAzMDBFRDAxOTEg
LyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkNGRTFBODE4RTMy
Q0E0MDA3QzJBMDAgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQky
QTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkE4MzYzOEExOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUFBMzEyMThCRDQ5RDEwMDM5NENDOCAv
KiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTTG9jay5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNw
cAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljUHV0QnlJZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCShy
ZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlBvbHltb3Jw
aGljR2V0QnlJZExpc3QuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lv
biAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgi
CiAKICNpbmNsdWRlICJEZWxheWVkUmVsZWFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50
YWxTd2VlcGVyLmgiCkBAIC0zNCwyNiArMzUsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotTWFy
a2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoRGVhZEJsb2NrKiBibG9jaywgTWFya2VkQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUgZGVzdHJ1
Y3RvclR5cGUpCi17Ci0gICAgQVNTRVJUKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihibG9jaykg
PT0gKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihibG9jaykgJiBibG9ja01hc2spKTsKLSAgICBS
ZWdpb24qIHJlZ2lvbiA9IGJsb2NrLT5yZWdpb24oKTsKLSAgICByZXR1cm4gbmV3IChOb3ROdWxs
LCBibG9jaykgTWFya2VkQmxvY2socmVnaW9uLCBhbGxvY2F0b3IsIGNlbGxTaXplLCBkZXN0cnVj
dG9yVHlwZSk7Ci19Ci0KLU1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhSZWdpb24qIHJlZ2lvbiwg
TWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5
cGUgZGVzdHJ1Y3RvclR5cGUpCi0gICAgOiBIZWFwQmxvY2s8TWFya2VkQmxvY2s+KHJlZ2lvbikK
LSAgICAsIG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6
ZSkKLSAgICAsIG1fZW5kQXRvbSgoYWxsb2NhdG9yLT5jZWxsU2l6ZSgpID8gYXRvbXNQZXJCbG9j
ayA6IHJlZ2lvbi0+YmxvY2tTaXplKCkgLyBhdG9tU2l6ZSkgLSBtX2F0b21zUGVyQ2VsbCArIDEp
Ci0gICAgLCBtX2Rlc3RydWN0b3JUeXBlKGRlc3RydWN0b3JUeXBlKQotICAgICwgbV9hbGxvY2F0
b3IoYWxsb2NhdG9yKQotICAgICwgbV9zdGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQg
dW5tYXJrZWQuCi0gICAgLCBtX3dlYWtTZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCkpCi17Ci0g
ICAgQVNTRVJUKGFsbG9jYXRvcik7Ci0gICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElP
Tih0aGlzKTsKLX0KLQogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKEpT
Q2VsbCogY2VsbCkKIHsKICAgICAvLyBBIHByZXZpb3VzIGVhZ2VyIHN3ZWVwIG1heSBhbHJlYWR5
IGhhdmUgcnVuIGNlbGwncyBkZXN0cnVjdG9yLgpAQCAtMjEwLDExICsxOTEsNiBAQCB2b2lkIE1h
cmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKICNlbmRpZgogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpj
bGVhclJlbWVtYmVyZWRTZXQoKQotewotICAgIG1fcmVtZW1iZXJlZFNldC5jbGVhckFsbCgpOwot
fQotCiB0ZW1wbGF0ZSA8SGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZT4KIHZvaWQgTWFya2Vk
QmxvY2s6OmNsZWFyTWFya3NXaXRoQ29sbGVjdGlvblR5cGUoKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw0NDggKzUxLDE5MiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKICAgICAKLSAgICBjbGFzcyBIZWFw
OwotICAgIGNsYXNzIEpTQ2VsbDsKLSAgICBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CitjbGFzcyBI
ZWFwOworY2xhc3MgSlNDZWxsOworY2xhc3MgTWFya2VkQWxsb2NhdG9yOworCit0eXBlZGVmIHVp
bnRwdHJfdCBCaXRzOworCitzdGF0aWMgY29uc3Qgc2l6ZV90IE1CID0gMTAyNCAqIDEwMjQ7CisK
K2Jvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKik7CisKKy8vIEEgbWFya2VkIGJsb2NrIGlzIGEg
cGFnZS1hbGlnbmVkIGNvbnRhaW5lciBmb3IgaGVhcC1hbGxvY2F0ZWQgb2JqZWN0cy4KKy8vIE9i
amVjdHMgYXJlIGFsbG9jYXRlZCB3aXRoaW4gY2VsbHMgb2YgdGhlIG1hcmtlZCBibG9jay4gRm9y
IGEgZ2l2ZW4KKy8vIG1hcmtlZCBibG9jaywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4g
T2JqZWN0cyBzbWFsbGVyIHRoYW4gdGhlCisvLyBjZWxsIHNpemUgbWF5IGJlIGFsbG9jYXRlZCBp
biB0aGUgbWFya2VkIGJsb2NrLCBpbiB3aGljaCBjYXNlIHRoZQorLy8gYWxsb2NhdGlvbiBzdWZm
ZXJzIGZyb20gaW50ZXJuYWwgZnJhZ21lbnRhdGlvbjogd2FzdGVkIHNwYWNlIHdob3NlCisvLyBz
aXplIGlzIGVxdWFsIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGNlbGwgc2l6ZSBhbmQg
dGhlIG9iamVjdAorLy8gc2l6ZS4KKworY2xhc3MgTWFya2VkQmxvY2sgOiBwdWJsaWMgSGVhcEJs
b2NrPE1hcmtlZEJsb2NrPiB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICBmcmllbmQgc3RydWN0IFZlcmlmeU1hcmtlZE9yUmV0aXJlZDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21TaXplID0gMTY7IC8vIGJ5dGVzCisgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBhdG9tU2hpZnRBbW91bnQgPSA0OyAvLyBsb2dfMihhdG9tU2l6ZSkgRklY
TUU6IENoYW5nZSBhdG9tU2l6ZSB0byAxNi4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2Nr
U2l6ZSA9IDY0ICogS0I7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJs
b2NrU2l6ZSAtIDEpOyAvLyBibG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4KIAotICAg
IHR5cGVkZWYgdWludHB0cl90IEJpdHM7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tc1Bl
ckJsb2NrID0gYmxvY2tTaXplIC8gYXRvbVNpemU7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBh
dG9tTWFzayA9IGF0b21zUGVyQmxvY2sgLSAxOwogCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBN
QiA9IDEwMjQgKiAxMDI0OwotICAgIAotICAgIGJvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKik7
Ci0gICAgCi0gICAgLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFpbmVy
IGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgotICAgIC8vIE9iamVjdHMgYXJlIGFsbG9jYXRl
ZCB3aXRoaW4gY2VsbHMgb2YgdGhlIG1hcmtlZCBibG9jay4gRm9yIGEgZ2l2ZW4KLSAgICAvLyBt
YXJrZWQgYmxvY2ssIGFsbCBjZWxscyBoYXZlIHRoZSBzYW1lIHNpemUuIE9iamVjdHMgc21hbGxl
ciB0aGFuIHRoZQotICAgIC8vIGNlbGwgc2l6ZSBtYXkgYmUgYWxsb2NhdGVkIGluIHRoZSBtYXJr
ZWQgYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlCi0gICAgLy8gYWxsb2NhdGlvbiBzdWZmZXJzIGZy
b20gaW50ZXJuYWwgZnJhZ21lbnRhdGlvbjogd2FzdGVkIHNwYWNlIHdob3NlCi0gICAgLy8gc2l6
ZSBpcyBlcXVhbCB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBjZWxsIHNpemUgYW5kIHRo
ZSBvYmplY3QKLSAgICAvLyBzaXplLgotCi0gICAgY2xhc3MgTWFya2VkQmxvY2sgOiBwdWJsaWMg
SGVhcEJsb2NrPE1hcmtlZEJsb2NrPiB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkT3JSZXRpcmVk
OwotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tU2l6ZSA9IDE2
OyAvLyBieXRlcwotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21TaGlmdEFtb3VudCA9
IDQ7IC8vIGxvZ18yKGF0b21TaXplKSBGSVhNRTogQ2hhbmdlIGF0b21TaXplIHRvIDE2LgotICAg
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDY0ICogS0I7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgYmxvY2tNYXNrID0gfihibG9ja1NpemUgLSAxKTsgLy8gYmxvY2tT
aXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCi0KLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBhdG9tc1BlckJsb2NrID0gYmxvY2tTaXplIC8gYXRvbVNpemU7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgYXRvbU1hc2sgPSBhdG9tc1BlckJsb2NrIC0gMTsKLQotICAgICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1hcmtCeXRlU2hpZnRBbW91bnQgPSAzOyAvLyBsb2dfMih3b3JkIHNp
emUgZm9yIG1fbWFya3MpIEZJWE1FOiBDaGFuZ2Ugd29yZCBzaXplIGZvciBtX21hcmtzIHRvIHVp
bnQ4X3QuCi0KLSAgICAgICAgc3RydWN0IEZyZWVDZWxsIHsKLSAgICAgICAgICAgIEZyZWVDZWxs
KiBuZXh0OwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgc3RydWN0IEZyZWVMaXN0IHsK
LSAgICAgICAgICAgIEZyZWVDZWxsKiBoZWFkOwotICAgICAgICAgICAgc2l6ZV90IGJ5dGVzOwot
Ci0gICAgICAgICAgICBGcmVlTGlzdCgpOwotICAgICAgICAgICAgRnJlZUxpc3QoRnJlZUNlbGwq
LCBzaXplX3QpOwotICAgICAgICB9OwotCi0gICAgICAgIHN0cnVjdCBWb2lkRnVuY3RvciB7Ci0g
ICAgICAgICAgICB0eXBlZGVmIHZvaWQgUmV0dXJuVHlwZTsKLSAgICAgICAgICAgIHZvaWQgcmV0
dXJuVmFsdWUoKSB7IH0KLSAgICAgICAgfTsKLQotICAgICAgICBjbGFzcyBDb3VudEZ1bmN0b3Ig
ewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0eXBlZGVmIHNpemVfdCBSZXR1cm5UeXBl
OwotCi0gICAgICAgICAgICBDb3VudEZ1bmN0b3IoKSA6IG1fY291bnQoMCkgeyB9Ci0gICAgICAg
ICAgICB2b2lkIGNvdW50KHNpemVfdCBjb3VudCkgeyBtX2NvdW50ICs9IGNvdW50OyB9Ci0gICAg
ICAgICAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCkgeyByZXR1cm4gbV9jb3VudDsgfQotCi0g
ICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBSZXR1cm5UeXBlIG1fY291bnQ7Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgZW51bSBEZXN0cnVjdG9yVHlwZSB7IE5vbmUsIEltbW9ydGFsU3RydWN0
dXJlLCBOb3JtYWwgfTsKLSAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoRGVhZEJs
b2NrKiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSk7
Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNBdG9tQWxpZ25lZChjb25zdCB2b2lkKik7Ci0gICAg
ICAgIHN0YXRpYyBNYXJrZWRCbG9jayogYmxvY2tGb3IoY29uc3Qgdm9pZCopOwotICAgICAgICBz
dGF0aWMgc2l6ZV90IGZpcnN0QXRvbSgpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBsYXN0Q2hh
bmNlVG9GaW5hbGl6ZSgpOwotCi0gICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKCkg
Y29uc3Q7Ci0gICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKLSAgICAgICAgVk0qIHZtKCkgY29u
c3Q7Ci0gICAgICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKLSAgICAgICAgCi0gICAgICAgIGVudW0g
U3dlZXBNb2RlIHsgU3dlZXBPbmx5LCBTd2VlcFRvRnJlZUxpc3QgfTsKLSAgICAgICAgRnJlZUxp
c3Qgc3dlZXAoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKLQotICAgICAgICB2b2lkIHNocmluaygp
OwotCi0gICAgICAgIHZvaWQgdmlzaXRXZWFrU2V0KEhlYXBSb290VmlzaXRvciYpOwotICAgICAg
ICB2b2lkIHJlYXBXZWFrU2V0KCk7Ci0KLSAgICAgICAgLy8gV2hpbGUgYWxsb2NhdGluZyBmcm9t
IGEgZnJlZSBsaXN0LCBNYXJrZWRCbG9jayB0ZW1wb3JhcmlseSBoYXMgYm9ndXMKLSAgICAgICAg
Ly8gY2VsbCBsaXZlbmVzcyBkYXRhLiBUbyByZXN0b3JlIGFjY3VyYXRlIGNlbGwgbGl2ZW5lc3Mg
ZGF0YSwgY2FsbCBvbmUKLSAgICAgICAgLy8gb2YgdGhlc2UgZnVuY3Rpb25zOgotICAgICAgICB2
b2lkIGRpZENvbnN1bWVGcmVlTGlzdCgpOyAvLyBDYWxsIHRoaXMgb25jZSB5b3UndmUgYWxsb2Nh
dGVkIGFsbCB0aGUgaXRlbXMgaW4gdGhlIGZyZWUgbGlzdC4KLSAgICAgICAgdm9pZCBzdG9wQWxs
b2NhdGluZyhjb25zdCBGcmVlTGlzdCYpOwotICAgICAgICBGcmVlTGlzdCByZXN1bWVBbGxvY2F0
aW5nKCk7IC8vIENhbGwgdGhpcyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZvciBzb21l
IG5vbi1jb2xsZWN0aW9uIHJlbGF0ZWQgcHVycG9zZS4KLSAgICAgICAgdm9pZCBkaWRDb25zdW1l
RW1wdHlGcmVlTGlzdCgpOyAvLyBDYWxsIHRoaXMgaWYgeW91IHN3ZWVwIGEgYmxvY2ssIGJ1dCB0
aGUgcmV0dXJuZWQgRnJlZUxpc3QgaXMgZW1wdHkuCi0gICAgICAgIHZvaWQgZGlkU3dlZXBUb05v
QXZhaWwoKTsgLy8gQ2FsbCB0aGlzIGlmIHlvdSBzd2VlcCBhIGJsb2NrIGFuZCBnZXQgYW4gZW1w
dHkgZnJlZSBsaXN0IGJhY2suCi0KLSAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSAibmV3
bHkgYWxsb2NhdGVkIiBiaXRtYXAgd2FzIG5vbi1udWxsIAotICAgICAgICAvLyBhbmQgd2FzIHN1
Y2Nlc3NmdWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCi0gICAgICAgIGJvb2wgY2xl
YXJOZXdseUFsbG9jYXRlZCgpOwotICAgICAgICB2b2lkIGNsZWFyTWFya3MoKTsKLSAgICAgICAg
dm9pZCBjbGVhclJlbWVtYmVyZWRTZXQoKTsKLSAgICAgICAgdGVtcGxhdGUgPEhlYXBPcGVyYXRp
b24gY29sbGVjdGlvblR5cGU+Ci0gICAgICAgIHZvaWQgY2xlYXJNYXJrc1dpdGhDb2xsZWN0aW9u
VHlwZSgpOwotCi0gICAgICAgIHNpemVfdCBtYXJrQ291bnQoKTsKLSAgICAgICAgYm9vbCBpc0Vt
cHR5KCk7Ci0KLSAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7Ci0gICAgICAgIERlc3RydWN0b3JU
eXBlIGRlc3RydWN0b3JUeXBlKCk7Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKTsKLSAgICAgICAg
c2l6ZV90IGNhcGFjaXR5KCk7Ci0KLSAgICAgICAgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7
Ci0gICAgICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIGJv
b2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCopOwotICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qg
dm9pZCopOwotICAgICAgICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIHZv
aWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwotCi0gICAgICAgIHZvaWQgc2V0UmVtZW1iZXJl
ZChjb25zdCB2b2lkKik7Ci0gICAgICAgIHZvaWQgY2xlYXJSZW1lbWJlcmVkKGNvbnN0IHZvaWQq
KTsKLSAgICAgICAgdm9pZCBhdG9taWNDbGVhclJlbWVtYmVyZWQoY29uc3Qgdm9pZCopOwotICAg
ICAgICBib29sIGlzUmVtZW1iZXJlZChjb25zdCB2b2lkKik7Ci0KLSAgICAgICAgYm9vbCBpc05l
d2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRl
ZChjb25zdCB2b2lkKik7Ci0gICAgICAgIHZvaWQgY2xlYXJOZXdseUFsbG9jYXRlZChjb25zdCB2
b2lkKik7Ci0KLSAgICAgICAgYm9vbCBuZWVkc1N3ZWVwaW5nKCk7Ci0gICAgICAgIHZvaWQgZGlk
UmV0aXJlQmxvY2soY29uc3QgRnJlZUxpc3QmKTsKLSAgICAgICAgdm9pZCB3aWxsUmVtb3ZlQmxv
Y2soKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNo
Q2VsbChGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lk
IGZvckVhY2hMaXZlQ2VsbChGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIGZvckVhY2hEZWFkQ2VsbChGdW5jdG9yJik7Ci0KLSAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZk1hcmtzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtl
ZEJsb2NrLCBtX21hcmtzKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsgLy8gYXRvbVNpemUgbXVz
dCBiZSBhIHBvd2VyIG9mIHR3by4KLQotICAgICAgICBlbnVtIEJsb2NrU3RhdGUgeyBOZXcsIEZy
ZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkLCBSZXRpcmVkIH07Ci0gICAgICAgIHRlbXBsYXRl
PERlc3RydWN0b3JUeXBlPiBGcmVlTGlzdCBzd2VlcEhlbHBlcihTd2VlcE1vZGUgPSBTd2VlcE9u
bHkpOwotCi0gICAgICAgIHR5cGVkZWYgY2hhciBBdG9tW2F0b21TaXplXTsKKyAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IG1hcmtCeXRlU2hpZnRBbW91bnQgPSAzOyAvLyBsb2dfMih3b3JkIHNpemUg
Zm9yIG1fbWFya3MpIEZJWE1FOiBDaGFuZ2Ugd29yZCBzaXplIGZvciBtX21hcmtzIHRvIHVpbnQ4
X3QuCiAKLSAgICAgICAgTWFya2VkQmxvY2soUmVnaW9uKiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6
ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSk7Ci0gICAgICAgIEF0b20qIGF0b21zKCk7Ci0g
ICAgICAgIHNpemVfdCBhdG9tTnVtYmVyKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgdm9pZCBjYWxs
RGVzdHJ1Y3RvcihKU0NlbGwqKTsKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBN
b2RlLCBEZXN0cnVjdG9yVHlwZT4gRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwotICAgICAg
ICAKLSAgICAgICAgc2l6ZV90IG1fYXRvbXNQZXJDZWxsOwotICAgICAgICBzaXplX3QgbV9lbmRB
dG9tOyAvLyBUaGlzIGlzIGEgZnV6enkgZW5kLiBBbHdheXMgdGVzdCBmb3IgPCBtX2VuZEF0b20u
Ci0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgICAgICBXVEY6OkJpdG1hcDxhdG9tc1BlckJs
b2NrLCBXVEY6OkJpdG1hcEF0b21pYywgdWludDhfdD4gbV9tYXJrczsKLSAgICAgICAgV1RGOjpC
aXRtYXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRtYXBBdG9taWMsIHVpbnQ4X3Q+IG1fcmVtZW1i
ZXJlZFNldDsKLSNlbHNlCi0gICAgICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6
Qml0bWFwTm90QXRvbWljLCB1aW50OF90PiBtX21hcmtzOwotICAgICAgICBXVEY6OkJpdG1hcDxh
dG9tc1BlckJsb2NrLCBXVEY6OkJpdG1hcE5vdEF0b21pYywgdWludDhfdD4gbV9yZW1lbWJlcmVk
U2V0OwotI2VuZGlmCi0gICAgICAgIE93blB0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4g
bV9uZXdseUFsbG9jYXRlZDsKLQotICAgICAgICBEZXN0cnVjdG9yVHlwZSBtX2Rlc3RydWN0b3JU
eXBlOwotICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwotICAgICAgICBCbG9j
a1N0YXRlIG1fc3RhdGU7Ci0gICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OworICAgIHN0cnVjdCBG
cmVlQ2VsbCB7CisgICAgICAgIEZyZWVDZWxsKiBuZXh0OwogICAgIH07CisgICAgCisgICAgc3Ry
dWN0IEZyZWVMaXN0IHsKKyAgICAgICAgRnJlZUNlbGwqIGhlYWQ7CisgICAgICAgIHNpemVfdCBi
eXRlczsKIAotICAgIGlubGluZSBNYXJrZWRCbG9jazo6RnJlZUxpc3Q6OkZyZWVMaXN0KCkKLSAg
ICAgICAgOiBoZWFkKDApCi0gICAgICAgICwgYnl0ZXMoMCkKLSAgICB7Ci0gICAgfQotCi0gICAg
aW5saW5lIE1hcmtlZEJsb2NrOjpGcmVlTGlzdDo6RnJlZUxpc3QoRnJlZUNlbGwqIGhlYWQsIHNp
emVfdCBieXRlcykKLSAgICAgICAgOiBoZWFkKGhlYWQpCi0gICAgICAgICwgYnl0ZXMoYnl0ZXMp
Ci0gICAgewotICAgIH0KLQotICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmZpcnN0QXRv
bSgpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPGF0b21T
aXplPihzaXplb2YoTWFya2VkQmxvY2spKSAvIGF0b21TaXplOwotICAgIH0KLQotICAgIGlubGlu
ZSBNYXJrZWRCbG9jazo6QXRvbSogTWFya2VkQmxvY2s6OmF0b21zKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PEF0b20qPih0aGlzKTsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChjb25zdCB2b2lkKiBwKQotICAgIHsK
LSAgICAgICAgcmV0dXJuICEocmVpbnRlcnByZXRfY2FzdDxCaXRzPihwKSAmIGF0b21BbGlnbm1l
bnRNYXNrKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpi
bG9ja0Zvcihjb25zdCB2b2lkKiBwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8TWFya2VkQmxvY2sqPihyZWludGVycHJldF9jYXN0PEJpdHM+KHApICYgYmxvY2tNYXNr
KTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgTWFya2VkQWxsb2NhdG9yKiBNYXJrZWRCbG9jazo6YWxs
b2NhdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FsbG9jYXRvcjsKLSAgICB9
Ci0KLSAgICBpbmxpbmUgSGVhcCogTWFya2VkQmxvY2s6OmhlYXAoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fd2Vha1NldC5oZWFwKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIFZNKiBN
YXJrZWRCbG9jazo6dm0oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2Vha1NldC52
bSgpOwotICAgIH0KLQotICAgIGlubGluZSBXZWFrU2V0JiBNYXJrZWRCbG9jazo6d2Vha1NldCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gbV93ZWFrU2V0OwotICAgIH0KLQotICAgIGlubGluZSB2
b2lkIE1hcmtlZEJsb2NrOjpzaHJpbmsoKQotICAgIHsKLSAgICAgICAgbV93ZWFrU2V0LnNocmlu
aygpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjp2aXNpdFdlYWtTZXQo
SGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCi0gICAgewotICAgICAgICBtX3dlYWtT
ZXQudmlzaXQoaGVhcFJvb3RWaXNpdG9yKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBNYXJr
ZWRCbG9jazo6cmVhcFdlYWtTZXQoKQotICAgIHsKLSAgICAgICAgbV93ZWFrU2V0LnJlYXAoKTsK
LSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6d2lsbFJlbW92ZUJsb2NrKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3N0YXRlICE9IFJldGlyZWQpOwotICAgIH0KLQotICAg
IGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpkaWRDb25zdW1lRnJlZUxpc3QoKQotICAgIHsKLSAg
ICAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKLQotICAgICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAgICAgICAgbV9zdGF0ZSA9IEFsbG9jYXRl
ZDsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6ZGlkQ29uc3VtZUVtcHR5
RnJlZUxpc3QoKQotICAgIHsKLSAgICAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElP
Tih0aGlzKTsKLQotICAgICAgICBBU1NFUlQoIW1fbmV3bHlBbGxvY2F0ZWQpOwotICAgICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKLSAgICAgICAgbV9zdGF0ZSA9IE1hcmtlZDsK
LSAgICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IE1hcmtlZEJsb2NrOjptYXJrQ291bnQoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fbWFya3MuY291bnQoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6aXNFbXB0eSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9tYXJr
cy5pc0VtcHR5KCkgJiYgbV93ZWFrU2V0LmlzRW1wdHkoKSAmJiAoIW1fbmV3bHlBbGxvY2F0ZWQg
fHwgbV9uZXdseUFsbG9jYXRlZC0+aXNFbXB0eSgpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc2l6
ZV90IE1hcmtlZEJsb2NrOjpjZWxsU2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9hdG9t
c1BlckNlbGwgKiBhdG9tU2l6ZTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgTWFya2VkQmxvY2s6OkRl
c3RydWN0b3JUeXBlIE1hcmtlZEJsb2NrOjpkZXN0cnVjdG9yVHlwZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV9kZXN0cnVjdG9yVHlwZTsgCi0gICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBN
YXJrZWRCbG9jazo6c2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbWFya0NvdW50KCkgKiBj
ZWxsU2l6ZSgpOwotICAgIH0KLQotICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmNhcGFj
aXR5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWdpb24oKS0+YmxvY2tTaXplKCk7Ci0gICAg
fQotCi0gICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6YXRvbU51bWJlcihjb25zdCB2b2lk
KiBwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PEJpdHM+KHApIC0g
cmVpbnRlcnByZXRfY2FzdDxCaXRzPih0aGlzKSkgLyBhdG9tU2l6ZTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0UmVtZW1iZXJlZChjb25zdCB2b2lkKiBwKQotICAg
IHsKLSAgICAgICAgbV9yZW1lbWJlcmVkU2V0LnNldChhdG9tTnVtYmVyKHApKTsKLSAgICB9Ci0K
LSAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJSZW1lbWJlcmVkKGNvbnN0IHZvaWQq
IHApCi0gICAgewotICAgICAgICBtX3JlbWVtYmVyZWRTZXQuY2xlYXIoYXRvbU51bWJlcihwKSk7
Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmF0b21pY0NsZWFyUmVtZW1i
ZXJlZChjb25zdCB2b2lkKiBwKQotICAgIHsKLSAgICAgICAgbV9yZW1lbWJlcmVkU2V0LmNvbmN1
cnJlbnRUZXN0QW5kQ2xlYXIoYXRvbU51bWJlcihwKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OmlzUmVtZW1iZXJlZChjb25zdCB2b2lkKiBwKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fcmVtZW1iZXJlZFNldC5nZXQoYXRvbU51bWJlcihwKSk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHApCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCog
cCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21hcmtzLmNvbmN1cnJlbnRUZXN0QW5kU2V0KGF0
b21OdW1iZXIocCkpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpzZXRN
YXJrZWQoY29uc3Qgdm9pZCogcCkKLSAgICB7Ci0gICAgICAgIG1fbWFya3Muc2V0KGF0b21OdW1i
ZXIocCkpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtl
ZChjb25zdCB2b2lkKiBwKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbWFya3MuZ2V0KGF0b21O
dW1iZXIocCkpKTsKLSAgICAgICAgbV9tYXJrcy5jbGVhcihhdG9tTnVtYmVyKHApKTsKLSAgICB9
Ci0KLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNOZXdseUFsbG9jYXRlZChjb25zdCB2
b2lkKiBwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChhdG9t
TnVtYmVyKHApKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0TmV3
bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCogcCkKLSAgICB7Ci0gICAgICAgIG1fbmV3bHlBbGxvY2F0
ZWQtPnNldChhdG9tTnVtYmVyKHApKTsKLSAgICB9CisgICAgICAgIEZyZWVMaXN0KCk7CisgICAg
ICAgIEZyZWVMaXN0KEZyZWVDZWxsKiwgc2l6ZV90KTsKKyAgICB9OwogCi0gICAgaW5saW5lIHZv
aWQgTWFya2VkQmxvY2s6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCogcCkKLSAgICB7
Ci0gICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQtPmNsZWFyKGF0b21OdW1iZXIocCkpOwotICAgIH0K
KyAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgeworICAgICAgICB0eXBlZGVmIHZvaWQgUmV0dXJuVHlw
ZTsKKyAgICAgICAgdm9pZCByZXR1cm5WYWx1ZSgpIHsgfQorICAgIH07CiAKLSAgICBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCi0gICAgewotICAgICAgICBp
ZiAobV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICAgICAgbV9uZXdseUFsbG9jYXRlZC5jbGVh
cigpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KKyAgICBjbGFzcyBDb3VudEZ1bmN0b3IgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdHlwZWRlZiBzaXplX3QgUmV0dXJuVHlwZTsKIAotICAgIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjppc0xpdmUoY29uc3QgSlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAgc3dpdGNo
IChtX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgQWxsb2NhdGVkOgotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICAgICAgY2FzZSBSZXRpcmVkOgotICAgICAgICBjYXNlIE1hcmtlZDoKLSAg
ICAgICAgICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKGNlbGwpKSB8fCAobV9uZXds
eUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKLQotICAgICAgICBjYXNlIE5l
dzoKLSAgICAgICAgY2FzZSBGcmVlTGlzdGVkOgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ291bnRG
dW5jdG9yKCkKKyAgICAgICAgICAgIDogbV9jb3VudCgwKQorICAgICAgICB7CiAgICAgICAgIH0K
KyAgICAgICAgdm9pZCBjb3VudChzaXplX3QgY291bnQpIHsgbV9jb3VudCArPSBjb3VudDsgfQor
ICAgICAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCkgeyByZXR1cm4gbV9jb3VudDsgfQogCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25z
dCB2b2lkKiBwKQotICAgIHsKLSAgICAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjppc0F0b21BbGln
bmVkKHApKTsKLSAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIgPSB0aGlzLT5hdG9tTnVtYmVyKHAp
OwotICAgICAgICBzaXplX3QgZmlyc3RBdG9tID0gdGhpcy0+Zmlyc3RBdG9tKCk7Ci0gICAgICAg
IGlmIChhdG9tTnVtYmVyIDwgZmlyc3RBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGludG8gTWFy
a2VkQmxvY2sgbWV0YWRhdGEuCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
ICgoYXRvbU51bWJlciAtIGZpcnN0QXRvbSkgJSBtX2F0b21zUGVyQ2VsbCkgLy8gRmlsdGVycyBw
b2ludGVycyBpbnRvIGNlbGwgbWlkZGxlcy4KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKGF0b21OdW1iZXIgPj0gbV9lbmRBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGlu
dG8gaW52YWxpZCBjZWxscyBvdXQgb2YgdGhlIHJhbmdlLgotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHByaXZhdGU6CisgICAgICAgIFJldHVyblR5cGUgbV9jb3VudDsKKyAgICB9Owog
Ci0gICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOwot
ICAgIH0KKyAgICBlbnVtIERlc3RydWN0b3JUeXBlIHsgTm9uZSwgSW1tb3J0YWxTdHJ1Y3R1cmUs
IE5vcm1hbCB9OworICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKERlYWRCbG9jayosIE1h
cmtlZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUpOwogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpmb3JF
YWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAg
ICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigmYXRv
bXMoKVtpXSk7Ci0gICAgICAgICAgICBmdW5jdG9yKGNlbGwpOwotICAgICAgICB9Ci0gICAgfQor
ICAgIHN0YXRpYyBib29sIGlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyBN
YXJrZWRCbG9jayogYmxvY2tGb3IoY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyBzaXplX3QgZmly
c3RBdG9tKCk7CisgICAgCisgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpmb3JF
YWNoTGl2ZUNlbGwoRnVuY3RvciYgZnVuY3RvcikKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewot
ICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SlNDZWxsKj4o
JmF0b21zKClbaV0pOwotICAgICAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IoKSBjb25zdDsK
KyAgICBIZWFwKiBoZWFwKCkgY29uc3Q7CisgICAgVk0qIHZtKCkgY29uc3Q7CisgICAgV2Vha1Nl
dCYgd2Vha1NldCgpOworICAgIAorICAgIGVudW0gU3dlZXBNb2RlIHsgU3dlZXBPbmx5LCBTd2Vl
cFRvRnJlZUxpc3QgfTsKKyAgICBGcmVlTGlzdCBzd2VlcChTd2VlcE1vZGUgPSBTd2VlcE9ubHkp
OwogCi0gICAgICAgICAgICBmdW5jdG9yKGNlbGwpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZv
aWQgc2hyaW5rKCk7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgTWFya2VkQmxvY2s6OmZvckVhY2hEZWFkQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQotICAgIHsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9
IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJl
dF9jYXN0X3B0cjxKU0NlbGwqPigmYXRvbXMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAoaXNMaXZl
KGNlbGwpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIHZvaWQgdmlzaXRXZWFrU2V0
KEhlYXBSb290VmlzaXRvciYpOworICAgIHZvaWQgcmVhcFdlYWtTZXQoKTsKIAotICAgICAgICAg
ICAgZnVuY3RvcihjZWxsKTsKLSAgICAgICAgfQotICAgIH0KKyAgICAvLyBXaGlsZSBhbGxvY2F0
aW5nIGZyb20gYSBmcmVlIGxpc3QsIE1hcmtlZEJsb2NrIHRlbXBvcmFyaWx5IGhhcyBib2d1cwor
ICAgIC8vIGNlbGwgbGl2ZW5lc3MgZGF0YS4gVG8gcmVzdG9yZSBhY2N1cmF0ZSBjZWxsIGxpdmVu
ZXNzIGRhdGEsIGNhbGwgb25lCisgICAgLy8gb2YgdGhlc2UgZnVuY3Rpb25zOgorICAgIHZvaWQg
ZGlkQ29uc3VtZUZyZWVMaXN0KCk7IC8vIENhbGwgdGhpcyBvbmNlIHlvdSd2ZSBhbGxvY2F0ZWQg
YWxsIHRoZSBpdGVtcyBpbiB0aGUgZnJlZSBsaXN0LgorICAgIHZvaWQgc3RvcEFsbG9jYXRpbmco
Y29uc3QgRnJlZUxpc3QmKTsKKyAgICBGcmVlTGlzdCByZXN1bWVBbGxvY2F0aW5nKCk7IC8vIENh
bGwgdGhpcyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZvciBzb21lIG5vbi1jb2xsZWN0
aW9uIHJlbGF0ZWQgcHVycG9zZS4KKyAgICB2b2lkIGRpZENvbnN1bWVFbXB0eUZyZWVMaXN0KCk7
IC8vIENhbGwgdGhpcyBpZiB5b3Ugc3dlZXAgYSBibG9jaywgYnV0IHRoZSByZXR1cm5lZCBGcmVl
TGlzdCBpcyBlbXB0eS4KKyAgICB2b2lkIGRpZFN3ZWVwVG9Ob0F2YWlsKCk7IC8vIENhbGwgdGhp
cyBpZiB5b3Ugc3dlZXAgYSBibG9jayBhbmQgZ2V0IGFuIGVtcHR5IGZyZWUgbGlzdCBiYWNrLgor
CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAgd2Fz
IG5vbi1udWxsIAorICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNl
IG90aGVyd2lzZS4KKyAgICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICB2b2lkIGNs
ZWFyTWFya3MoKTsKKyAgICB2b2lkIGNsZWFyUmVtZW1iZXJlZFNldCgpOworICAgIHRlbXBsYXRl
IDxIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlPgorICAgIHZvaWQgY2xlYXJNYXJrc1dpdGhD
b2xsZWN0aW9uVHlwZSgpOworCisgICAgc2l6ZV90IG1hcmtDb3VudCgpOworICAgIGJvb2wgaXNF
bXB0eSgpOworCisgICAgc2l6ZV90IGNlbGxTaXplKCk7CisgICAgRGVzdHJ1Y3RvclR5cGUgZGVz
dHJ1Y3RvclR5cGUoKTsKKworICAgIHNpemVfdCBzaXplKCk7CisgICAgc2l6ZV90IGNhcGFjaXR5
KCk7CisKKyAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKKyAgICBib29sIHRlc3RBbmRT
ZXRNYXJrZWQoY29uc3Qgdm9pZCopOworICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCopOwor
ICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CisgICAgdm9pZCBzZXRNYXJrZWQoY29u
c3Qgdm9pZCopOworICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOworCisgICAgdm9p
ZCBzZXRSZW1lbWJlcmVkKGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGNsZWFyUmVtZW1iZXJlZChj
b25zdCB2b2lkKik7CisgICAgdm9pZCBhdG9taWNDbGVhclJlbWVtYmVyZWQoY29uc3Qgdm9pZCop
OworICAgIGJvb2wgaXNSZW1lbWJlcmVkKGNvbnN0IHZvaWQqKTsKKworICAgIGJvb2wgaXNOZXds
eUFsbG9jYXRlZChjb25zdCB2b2lkKik7CisgICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25z
dCB2b2lkKik7CisgICAgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKKwor
ICAgIGJvb2wgbmVlZHNTd2VlcGluZygpOworICAgIHZvaWQgZGlkUmV0aXJlQmxvY2soY29uc3Qg
RnJlZUxpc3QmKTsKKyAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOworCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENlbGwoRnVuY3RvciYpOworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMaXZlQ2VsbChGdW5jdG9yJik7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaERlYWRDZWxsKEZ1bmN0
b3ImKTsKKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNYXJrcygpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihNYXJrZWRCbG9jaywgbV9tYXJrcyk7IH0KKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOyAvLyBh
dG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgorCisgICAgZW51bSBCbG9ja1N0YXRlIHsg
TmV3LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCwgUmV0aXJlZCB9OworICAgIHRlbXBs
YXRlPERlc3RydWN0b3JUeXBlPiBGcmVlTGlzdCBzd2VlcEhlbHBlcihTd2VlcE1vZGUgPSBTd2Vl
cE9ubHkpOworCisgICAgdHlwZWRlZiBjaGFyIEF0b21bYXRvbVNpemVdOworCisgICAgTWFya2Vk
QmxvY2soUmVnaW9uKiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVj
dG9yVHlwZSk7CisgICAgQXRvbSogYXRvbXMoKTsKKyAgICBzaXplX3QgYXRvbU51bWJlcihjb25z
dCB2b2lkKik7CisgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqKTsKKyAgICB0ZW1wbGF0
ZTxCbG9ja1N0YXRlLCBTd2VlcE1vZGUsIERlc3RydWN0b3JUeXBlPiBGcmVlTGlzdCBzcGVjaWFs
aXplZFN3ZWVwKCk7CisgICAgCisgICAgc2l6ZV90IG1fYXRvbXNQZXJDZWxsOworICAgIHNpemVf
dCBtX2VuZEF0b207IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1f
ZW5kQXRvbS4KKyNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCisgICAgV1RGOjpCaXRtYXA8YXRvbXNQ
ZXJCbG9jaywgV1RGOjpCaXRtYXBBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7CisgICAgV1RGOjpC
aXRtYXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRtYXBBdG9taWMsIHVpbnQ4X3Q+IG1fcmVtZW1i
ZXJlZFNldDsKKyNlbHNlCisgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRt
YXBOb3RBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7CisgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJC
bG9jaywgV1RGOjpCaXRtYXBOb3RBdG9taWMsIHVpbnQ4X3Q+IG1fcmVtZW1iZXJlZFNldDsKKyNl
bmRpZgorICAgIE93blB0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4gbV9uZXdseUFsbG9j
YXRlZDsKIAotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpuZWVkc1N3ZWVwaW5nKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3N0YXRlID09IE1hcmtlZDsKLSAgICB9CisgICAgRGVzdHJ1
Y3RvclR5cGUgbV9kZXN0cnVjdG9yVHlwZTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yOworICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKKyAgICBXZWFrU2V0IG1fd2Vha1NldDsKK307
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIHN0cnVjdCBN
YXJrZWRCbG9ja0hhc2ggOiBQdHJIYXNoPEpTQzo6TWFya2VkQmxvY2sqPiB7Ci0gICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKEpTQzo6TWFya2VkQmxvY2sqIGNvbnN0JiBrZXkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIEFsaWduZWQgVk0gcmVnaW9ucyB0ZW5kIHRvIGJlIG1vbm90b25p
Y2FsbHkgaW5jcmVhc2luZyBpbnRlZ2VycywKLSAgICAgICAgICAgIC8vIHdoaWNoIGlzIGEgZ3Jl
YXQgaGFzaCBmdW5jdGlvbiwgYnV0IHdlIGhhdmUgdG8gcmVtb3ZlIHRoZSBsb3cgYml0cywKLSAg
ICAgICAgICAgIC8vIHNpbmNlIHRoZXkncmUgYWx3YXlzIHplcm8sIHdoaWNoIGlzIGEgdGVycmli
bGUgaGFzaCBmdW5jdGlvbiEKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpT
Qzo6Qml0cz4oa2V5KSAvIEpTQzo6TWFya2VkQmxvY2s6OmJsb2NrU2l6ZTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6Ok1hcmtlZEJs
b2NrKj4gewotICAgICAgICB0eXBlZGVmIE1hcmtlZEJsb2NrSGFzaCBIYXNoOwotICAgIH07Citz
dHJ1Y3QgTWFya2VkQmxvY2tIYXNoIDogUHRySGFzaDxKU0M6Ok1hcmtlZEJsb2NrKj4geworICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKEpTQzo6TWFya2VkQmxvY2sqIGNvbnN0JiBrZXkpCisgICAg
eworICAgICAgICAvLyBBbGlnbmVkIFZNIHJlZ2lvbnMgdGVuZCB0byBiZSBtb25vdG9uaWNhbGx5
IGluY3JlYXNpbmcgaW50ZWdlcnMsCisgICAgICAgIC8vIHdoaWNoIGlzIGEgZ3JlYXQgaGFzaCBm
dW5jdGlvbiwgYnV0IHdlIGhhdmUgdG8gcmVtb3ZlIHRoZSBsb3cgYml0cywKKyAgICAgICAgLy8g
c2luY2UgdGhleSdyZSBhbHdheXMgemVybywgd2hpY2ggaXMgYSB0ZXJyaWJsZSBoYXNoIGZ1bmN0
aW9uIQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0M6OkJpdHM+KGtleSkgLyBK
U0M6Ok1hcmtlZEJsb2NrOjpibG9ja1NpemU7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8SlNDOjpNYXJrZWRCbG9jayo+IHsKKyAgICB0eXBlZGVmIE1hcmtlZEJs
b2NrSGFzaCBIYXNoOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5j
cHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhv
c3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2lu
Y2x1ZGUgIkRlYnVnZ2VyQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2lu
Y2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAJKHJldmlzaW9uIDE2NjI5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJKU0FycmF5SXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm94
eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKIAorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCShyZXZp
c2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU01hcC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2UuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKFBST01JU0VTKQogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShQUk9NSVNFUykKIAogI2luY2x1ZGUgIkVycm9yLmgi
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVy
cmVkLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKFBST01JU0VTKQogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUZ1bmN0aW9ucy5jcHAJKHJl
dmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZUZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFC
TEUoUFJPTUlTRVMpCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTY2
Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShQUk9NSVNF
UykKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VSZWFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uY3BwCShyZXZpc2lvbiAxNjYyOTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAKICNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
ZXRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTZXRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5o
IgogCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5jcHAJKHJldmlzaW9u
IDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJKU1dlYWtNYXAuaCIKIAorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgog
I2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgogCiAjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERh
dGEuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkNvcGllZEFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkNvcHlWaXNpdG9ySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMu
aCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cEl0ZXJhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFwSXRl
cmF0b3JQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRl
ICJKU01hcEl0ZXJhdG9yLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oIgogCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUg
IlNsb3RWaXNpdG9ySW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU2V0Q29uc3RydWN0b3IuaCIKIAogI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVy
YXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTZXRJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MTY2Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYWtNYXBDb25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCShyZXZpc2lvbiAxNjYyOTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb3BpZWRBbGxvY2F0b3IuaCIK
ICNpbmNsdWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxw
ZXJzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2Vh
a01hcC5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227869</attachid>
            <date>2014-03-26 12:02:38 -0700</date>
            <delta_ts>2014-03-26 20:26:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127070-20140326120217.patch</filename>
            <type>text/plain</type>
            <size>56909</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2MzA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MyBA
QAorMjAxNC0wMy0yNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBNYXJrZWRCbG9ja0lubGluZXMuaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyByZWluZGVudGVkIE1hcmtlZEJsb2NrLmgg
YW5kIGluY2x1ZGVkIEpTQ0lubGluZXMuaCBpbiBhIGJ1bmNoIG9mIGNwcCBmaWxlcyAKKyAgICAg
ICAgdGhhdCBuZWVkZWQgaXQuCisKKyAgICAgICAgKiBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24u
bW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpjbGVhclJlbWVtYmVyZWRTZXQpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAv
TWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yOjpy
ZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OkNv
dW50RnVuY3Rvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OmNv
dW50KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkNvdW50RnVuY3Rvcjo6cmV0dXJuVmFs
dWUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcyk6CisgICAgICAg
IChXVEY6Ok1hcmtlZEJsb2NrSGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpGcmVlTGlzdDo6RnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6Zmlyc3RBdG9tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmF0b21z
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YmxvY2tGb3IpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmhlYXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6dm0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6d2Vha1NldCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzaHJpbmspOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dmlzaXRXZWFrU2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlYXBXZWFrU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OndpbGxSZW1vdmVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpkaWRDb25zdW1lRnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6ZGlkQ29uc3VtZUVtcHR5RnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6bWFya0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmlzRW1wdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6Y2VsbFNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZGVzdHJ1
Y3RvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjYXBhY2l0eSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphdG9tTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OnNldFJlbWVtYmVyZWQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6Y2xlYXJSZW1lbWJlcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmF0b21pY0NsZWFyUmVtZW1iZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjppc1JlbWVtYmVyZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6aXNNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6dGVzdEFuZFNldE1hcmtlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpzZXRNYXJrZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2xlYXJN
YXJrZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNOZXdseUFsbG9j
YXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzZXROZXdseUFsbG9j
YXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck5ld2x5QWxs
b2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmZvckVhY2hMaXZlQ2VsbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpmb3JFYWNoRGVhZENlbGwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6bmVlZHNTd2VlcGluZyk6IERlbGV0ZWQuCisgICAgICAgICogaGVh
cC9NYXJrZWRCbG9ja0lubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6RnJlZUxpc3Q6OkZyZWVMaXN0KToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmZpcnN0QXRvbSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjph
dG9tcyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpoZWFwKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OnZtKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Ondl
YWtTZXQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c2hyaW5rKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OnZpc2l0V2Vha1NldCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpyZWFwV2Vha1NldCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjp3aWxsUmVtb3ZlQmxv
Y2spOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZGlkQ29uc3VtZUZyZWVMaXN0KToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmRpZENvbnN1bWVFbXB0eUZyZWVMaXN0KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6Om1hcmtDb3VudCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNlbGxTaXplKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmRlc3RydWN0b3JUeXBlKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OnNpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FwYWNpdHkp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YXRvbU51bWJlcik6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpzZXRSZW1lbWJlcmVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OmNsZWFyUmVtZW1iZXJlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphdG9taWNDbGVh
clJlbWVtYmVyZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNSZW1lbWJlcmVkKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
c2V0TWFya2VkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNsZWFyTWFya2VkKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6c2V0TmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpp
c0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpmb3JFYWNoQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Zm9yRWFj
aERlYWRDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om5lZWRzU3dlZXBpbmcpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2xlYXJSZW1lbWJlcmVkU2V0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAg
ICAgICogcnVudGltZS9KU01hcC5jcHA6CisgICAgICAgICogcnVudGltZS9KU01hcEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VE
ZWZlcnJlZC5jcHA6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTU2V0SXRlcmF0
b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNXZWFrTWFwLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5VGFibGUu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFr
TWFwUHJvdG90eXBlLmNwcDoKKwogMjAxNC0wMy0yNiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbQ1NTIFNoYXBlc10gUmVtb3ZlIHNoYXBlLWluc2lkZSBz
dXBwb3J0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxi
YWNrRnVuY3Rpb24ubW0JKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgIkFQSUNhc3QuaCIKICNpbXBvcnQgIkRlbGF5ZWRSZWxlYXNlU2NvcGUu
aCIKICNpbXBvcnQgIkVycm9yLmgiCisjaW1wb3J0ICJKU0NJbmxpbmVzLmgiCiAjaW1wb3J0ICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2ltcG9ydCAiSlNDZWxsLmgiCiAjaW1wb3J0ICJKU0NlbGxJ
bmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJl
dmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNzYsNiAr
MTA3Niw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXE1hY2hpbmVTdGFja01h
cmtlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrZWRBbGxvY2F0
b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcTWFya2VkQmxvY2suaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcTWFya2VkQmxvY2tJbmxpbmVzLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXE1hcmtlZEJsb2NrU2V0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXE1hcmtlZFNwYWNlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXE1hcmtTdGFjay5oIiAvPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24g
MTY2Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzc4LDYg
KzE3NzgsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrZWRCbG9jay5o
Ij4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrZWRCbG9ja0lubGluZXMuaCI+CisgICAgICA8
RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGhlYXBcTWFya2VkQmxvY2tTZXQuaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQzNSw2ICsx
NDM1LDcgQEAKIAkJQzJDOEQwMzExNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkYxNEEzQ0VG
QzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUMyQ0YzOUMxMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBw
ZXJPYmplY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMkNGMzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tICovOyB9
OwogCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkNGMzlDMDE2RTE1
QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi87IH07CisJCUMyQ0ZFMUE4MThF
MzJDQTQwMDdDMkEwMCAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQ0ZFMUE3MThFMzJDQTMwMDdDMkEwMCAvKiBN
YXJrZWRCbG9ja0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREE3NzgyMThF
MjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyREY0NDJGMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMkRGNDQyRDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uY3BwICovOyB9OwogCQlD
MkRGNDQzMDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREY0NDJFMTcwN0FDMDEwMEE1Q0E5NiAv
KiBTdXBlclJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yOTc3LDYgKzI5NzgsNyBAQAogCQlDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUg
LyogSGVhcEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBCbG9j
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkNGMzlCRjE2RTE1QTgxMDBERDY5
QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQVBJV3JhcHBlck9iamVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkNGRTFBNzE4RTMyQ0EzMDA3QzJBMDAgLyog
TWFya2VkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cmtlZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkRBNzc4
MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGVhcElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzJERjQ0MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cGVyUmVnaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzJERjQ0MkUxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cGVyUmVnaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjI0LDYgKzM2MjYsNyBAQAogCQkJCTJBODM2Mzg0MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJCQkJMkE4MzYz
ODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAogCQkJ
CTJBODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8s
CisJCQkJQzJDRkUxQTcxOEUzMkNBMzAwN0MyQTAwIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBoZWFwOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTQ5NDUsNiArNDk0OCw3IEBACiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3Bl
Y3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYg
LyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVE
MDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQ0ZFMUE4
MThFMzJDQTQwMDdDMkEwMCAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0
Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAJKHJldmlzaW9uIDE2NjI5
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExp
c3QuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiUG9s
eW1vcnBoaWNHZXRCeUlkTGlzdC5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3Qu
aCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJl
dmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGlu
ZXMuaCIKIAogI2luY2x1ZGUgIkRlbGF5ZWRSZWxlYXNlU2NvcGUuaCIKICNpbmNsdWRlICJJbmNy
ZW1lbnRhbFN3ZWVwZXIuaCIKQEAgLTM0LDI2ICszNSw2IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1NYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNyZWF0ZShEZWFkQmxvY2sqIGJsb2NrLCBNYXJr
ZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSBk
ZXN0cnVjdG9yVHlwZSkKLXsKLSAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGJs
b2NrKSA9PSAocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGJsb2NrKSAmIGJsb2NrTWFzaykpOwot
ICAgIFJlZ2lvbiogcmVnaW9uID0gYmxvY2stPnJlZ2lvbigpOwotICAgIHJldHVybiBuZXcgKE5v
dE51bGwsIGJsb2NrKSBNYXJrZWRCbG9jayhyZWdpb24sIGFsbG9jYXRvciwgY2VsbFNpemUsIGRl
c3RydWN0b3JUeXBlKTsKLX0KLQotTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFJlZ2lvbiogcmVn
aW9uLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVj
dG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKLSAgICA6IEhlYXBCbG9jazxNYXJrZWRCbG9jaz4ocmVn
aW9uKQotICAgICwgbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0
b21TaXplKQotICAgICwgbV9lbmRBdG9tKChhbGxvY2F0b3ItPmNlbGxTaXplKCkgPyBhdG9tc1Bl
ckJsb2NrIDogcmVnaW9uLT5ibG9ja1NpemUoKSAvIGF0b21TaXplKSAtIG1fYXRvbXNQZXJDZWxs
ICsgMSkKLSAgICAsIG1fZGVzdHJ1Y3RvclR5cGUoZGVzdHJ1Y3RvclR5cGUpCi0gICAgLCBtX2Fs
bG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX3N0YXRlKE5ldykgLy8gQWxsIGNlbGxzIHN0YXJ0
IG91dCB1bm1hcmtlZC4KLSAgICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+dm0oKSkK
LXsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKLSAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFO
U0lUSU9OKHRoaXMpOwotfQotCiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0
b3IoSlNDZWxsKiBjZWxsKQogewogICAgIC8vIEEgcHJldmlvdXMgZWFnZXIgc3dlZXAgbWF5IGFs
cmVhZHkgaGF2ZSBydW4gY2VsbCdzIGRlc3RydWN0b3IuCkBAIC0yMTAsMTEgKzE5MSw2IEBAIHZv
aWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQogI2VuZGlmCiB9CiAKLXZvaWQgTWFya2VkQmxv
Y2s6OmNsZWFyUmVtZW1iZXJlZFNldCgpCi17Ci0gICAgbV9yZW1lbWJlcmVkU2V0LmNsZWFyQWxs
KCk7Ci19Ci0KIHRlbXBsYXRlIDxIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlPgogdm9pZCBN
YXJrZWRCbG9jazo6Y2xlYXJNYXJrc1dpdGhDb2xsZWN0aW9uVHlwZSgpCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDE2NjI5NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDQ0OCArNTEsMTkyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotICAgIGNsYXNz
IEhlYXA7Ci0gICAgY2xhc3MgSlNDZWxsOwotICAgIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKK2Ns
YXNzIEhlYXA7CitjbGFzcyBKU0NlbGw7CitjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CisKK3R5cGVk
ZWYgdWludHB0cl90IEJpdHM7CisKK3N0YXRpYyBjb25zdCBzaXplX3QgTUIgPSAxMDI0ICogMTAy
NDsKKworYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqKTsKKworLy8gQSBtYXJrZWQgYmxvY2sg
aXMgYSBwYWdlLWFsaWduZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgor
Ly8gT2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2Nr
LiBGb3IgYSBnaXZlbgorLy8gbWFya2VkIGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBz
aXplLiBPYmplY3RzIHNtYWxsZXIgdGhhbiB0aGUKKy8vIGNlbGwgc2l6ZSBtYXkgYmUgYWxsb2Nh
dGVkIGluIHRoZSBtYXJrZWQgYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlCisvLyBhbGxvY2F0aW9u
IHN1ZmZlcnMgZnJvbSBpbnRlcm5hbCBmcmFnbWVudGF0aW9uOiB3YXN0ZWQgc3BhY2Ugd2hvc2UK
Ky8vIHNpemUgaXMgZXF1YWwgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY2VsbCBzaXpl
IGFuZCB0aGUgb2JqZWN0CisvLyBzaXplLgorCitjbGFzcyBNYXJrZWRCbG9jayA6IHB1YmxpYyBI
ZWFwQmxvY2s8TWFya2VkQmxvY2s+IHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgIGZyaWVuZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkT3JSZXRpcmVkOworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsgLy8gYnl0ZXMKKyAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGF0b21TaGlmdEFtb3VudCA9IDQ7IC8vIGxvZ18yKGF0b21TaXpl
KSBGSVhNRTogQ2hhbmdlIGF0b21TaXplIHRvIDE2LgorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
YmxvY2tTaXplID0gNjQgKiBLQjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTWFzayA9
IH4oYmxvY2tTaXplIC0gMSk7IC8vIGJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgog
Ci0gICAgdHlwZWRlZiB1aW50cHRyX3QgQml0czsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0
b21zUGVyQmxvY2sgPSBibG9ja1NpemUgLyBhdG9tU2l6ZTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGF0b21NYXNrID0gYXRvbXNQZXJCbG9jayAtIDE7CiAKLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IE1CID0gMTAyNCAqIDEwMjQ7Ci0gICAgCi0gICAgYm9vbCBpc1phcHBlZChjb25zdCBKU0Nl
bGwqKTsKLSAgICAKLSAgICAvLyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250
YWluZXIgZm9yIGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCi0gICAgLy8gT2JqZWN0cyBhcmUgYWxs
b2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgotICAg
IC8vIG1hcmtlZCBibG9jaywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBz
bWFsbGVyIHRoYW4gdGhlCi0gICAgLy8gY2VsbCBzaXplIG1heSBiZSBhbGxvY2F0ZWQgaW4gdGhl
IG1hcmtlZCBibG9jaywgaW4gd2hpY2ggY2FzZSB0aGUKLSAgICAvLyBhbGxvY2F0aW9uIHN1ZmZl
cnMgZnJvbSBpbnRlcm5hbCBmcmFnbWVudGF0aW9uOiB3YXN0ZWQgc3BhY2Ugd2hvc2UKLSAgICAv
LyBzaXplIGlzIGVxdWFsIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGNlbGwgc2l6ZSBh
bmQgdGhlIG9iamVjdAotICAgIC8vIHNpemUuCi0KLSAgICBjbGFzcyBNYXJrZWRCbG9jayA6IHB1
YmxpYyBIZWFwQmxvY2s8TWFya2VkQmxvY2s+IHsKLSAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBWZXJpZnlNYXJrZWRPclJl
dGlyZWQ7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21TaXpl
ID0gMTY7IC8vIGJ5dGVzCi0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNoaWZ0QW1v
dW50ID0gNDsgLy8gbG9nXzIoYXRvbVNpemUpIEZJWE1FOiBDaGFuZ2UgYXRvbVNpemUgdG8gMTYu
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gNjQgKiBLQjsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOyAvLyBi
bG9ja1NpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4KLQotICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGF0b21zUGVyQmxvY2sgPSBibG9ja1NpemUgLyBhdG9tU2l6ZTsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBhdG9tTWFzayA9IGF0b21zUGVyQmxvY2sgLSAxOwotCi0gICAgICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgbWFya0J5dGVTaGlmdEFtb3VudCA9IDM7IC8vIGxvZ18yKHdv
cmQgc2l6ZSBmb3IgbV9tYXJrcykgRklYTUU6IENoYW5nZSB3b3JkIHNpemUgZm9yIG1fbWFya3Mg
dG8gdWludDhfdC4KLQotICAgICAgICBzdHJ1Y3QgRnJlZUNlbGwgewotICAgICAgICAgICAgRnJl
ZUNlbGwqIG5leHQ7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICBzdHJ1Y3QgRnJlZUxp
c3QgewotICAgICAgICAgICAgRnJlZUNlbGwqIGhlYWQ7Ci0gICAgICAgICAgICBzaXplX3QgYnl0
ZXM7Ci0KLSAgICAgICAgICAgIEZyZWVMaXN0KCk7Ci0gICAgICAgICAgICBGcmVlTGlzdChGcmVl
Q2VsbCosIHNpemVfdCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RydWN0IFZvaWRGdW5jdG9y
IHsKLSAgICAgICAgICAgIHR5cGVkZWYgdm9pZCBSZXR1cm5UeXBlOwotICAgICAgICAgICAgdm9p
ZCByZXR1cm5WYWx1ZSgpIHsgfQotICAgICAgICB9OwotCi0gICAgICAgIGNsYXNzIENvdW50RnVu
Y3RvciB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHR5cGVkZWYgc2l6ZV90IFJldHVy
blR5cGU7Ci0KLSAgICAgICAgICAgIENvdW50RnVuY3RvcigpIDogbV9jb3VudCgwKSB7IH0KLSAg
ICAgICAgICAgIHZvaWQgY291bnQoc2l6ZV90IGNvdW50KSB7IG1fY291bnQgKz0gY291bnQ7IH0K
LSAgICAgICAgICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKSB7IHJldHVybiBtX2NvdW50OyB9
Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIFJldHVyblR5cGUgbV9jb3VudDsKLSAg
ICAgICAgfTsKLQotICAgICAgICBlbnVtIERlc3RydWN0b3JUeXBlIHsgTm9uZSwgSW1tb3J0YWxT
dHJ1Y3R1cmUsIE5vcm1hbCB9OwotICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGNyZWF0ZShE
ZWFkQmxvY2sqLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JU
eXBlKTsKLQotICAgICAgICBzdGF0aWMgYm9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsK
LSAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBibG9ja0Zvcihjb25zdCB2b2lkKik7Ci0gICAg
ICAgIHN0YXRpYyBzaXplX3QgZmlyc3RBdG9tKCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIGxh
c3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0KLSAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IoKSBjb25zdDsKLSAgICAgICAgSGVhcCogaGVhcCgpIGNvbnN0OwotICAgICAgICBWTSogdm0o
KSBjb25zdDsKLSAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwotICAgICAgICAKLSAgICAgICAg
ZW51bSBTd2VlcE1vZGUgeyBTd2VlcE9ubHksIFN3ZWVwVG9GcmVlTGlzdCB9OwotICAgICAgICBG
cmVlTGlzdCBzd2VlcChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwotCi0gICAgICAgIHZvaWQgc2hy
aW5rKCk7Ci0KLSAgICAgICAgdm9pZCB2aXNpdFdlYWtTZXQoSGVhcFJvb3RWaXNpdG9yJik7Ci0g
ICAgICAgIHZvaWQgcmVhcFdlYWtTZXQoKTsKLQotICAgICAgICAvLyBXaGlsZSBhbGxvY2F0aW5n
IGZyb20gYSBmcmVlIGxpc3QsIE1hcmtlZEJsb2NrIHRlbXBvcmFyaWx5IGhhcyBib2d1cwotICAg
ICAgICAvLyBjZWxsIGxpdmVuZXNzIGRhdGEuIFRvIHJlc3RvcmUgYWNjdXJhdGUgY2VsbCBsaXZl
bmVzcyBkYXRhLCBjYWxsIG9uZQotICAgICAgICAvLyBvZiB0aGVzZSBmdW5jdGlvbnM6Ci0gICAg
ICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KCk7IC8vIENhbGwgdGhpcyBvbmNlIHlvdSd2ZSBh
bGxvY2F0ZWQgYWxsIHRoZSBpdGVtcyBpbiB0aGUgZnJlZSBsaXN0LgotICAgICAgICB2b2lkIHN0
b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0Jik7Ci0gICAgICAgIEZyZWVMaXN0IHJlc3VtZUFs
bG9jYXRpbmcoKTsgLy8gQ2FsbCB0aGlzIGlmIHlvdSBjYW5vbmljYWxpemVkIGEgYmxvY2sgZm9y
IHNvbWUgbm9uLWNvbGxlY3Rpb24gcmVsYXRlZCBwdXJwb3NlLgotICAgICAgICB2b2lkIGRpZENv
bnN1bWVFbXB0eUZyZWVMaXN0KCk7IC8vIENhbGwgdGhpcyBpZiB5b3Ugc3dlZXAgYSBibG9jaywg
YnV0IHRoZSByZXR1cm5lZCBGcmVlTGlzdCBpcyBlbXB0eS4KLSAgICAgICAgdm9pZCBkaWRTd2Vl
cFRvTm9BdmFpbCgpOyAvLyBDYWxsIHRoaXMgaWYgeW91IHN3ZWVwIGEgYmxvY2sgYW5kIGdldCBh
biBlbXB0eSBmcmVlIGxpc3QgYmFjay4KLQotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
ICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcCB3YXMgbm9uLW51bGwgCi0gICAgICAgIC8vIGFuZCB3
YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLSAgICAgICAgYm9v
bCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgIHZvaWQgY2xlYXJNYXJrcygpOwotICAg
ICAgICB2b2lkIGNsZWFyUmVtZW1iZXJlZFNldCgpOwotICAgICAgICB0ZW1wbGF0ZSA8SGVhcE9w
ZXJhdGlvbiBjb2xsZWN0aW9uVHlwZT4KLSAgICAgICAgdm9pZCBjbGVhck1hcmtzV2l0aENvbGxl
Y3Rpb25UeXBlKCk7Ci0KLSAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwotICAgICAgICBib29s
IGlzRW1wdHkoKTsKLQotICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKLSAgICAgICAgRGVzdHJ1
Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUoKTsKLQotICAgICAgICBzaXplX3Qgc2l6ZSgpOwotICAg
ICAgICBzaXplX3QgY2FwYWNpdHkoKTsKLQotICAgICAgICBib29sIGlzTWFya2VkKGNvbnN0IHZv
aWQqKTsKLSAgICAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAg
ICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7Ci0gICAgICAgIGJvb2wgaXNMaXZlQ2VsbChj
b25zdCB2b2lkKik7Ci0gICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAg
ICAgdm9pZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7Ci0KLSAgICAgICAgdm9pZCBzZXRSZW1l
bWJlcmVkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgdm9pZCBjbGVhclJlbWVtYmVyZWQoY29uc3Qg
dm9pZCopOwotICAgICAgICB2b2lkIGF0b21pY0NsZWFyUmVtZW1iZXJlZChjb25zdCB2b2lkKik7
Ci0gICAgICAgIGJvb2wgaXNSZW1lbWJlcmVkKGNvbnN0IHZvaWQqKTsKLQotICAgICAgICBib29s
IGlzTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwotICAgICAgICB2b2lkIHNldE5ld2x5QWxs
b2NhdGVkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKGNv
bnN0IHZvaWQqKTsKLQotICAgICAgICBib29sIG5lZWRzU3dlZXBpbmcoKTsKLSAgICAgICAgdm9p
ZCBkaWRSZXRpcmVCbG9jayhjb25zdCBGcmVlTGlzdCYpOwotICAgICAgICB2b2lkIHdpbGxSZW1v
dmVCbG9jaygpOwotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZv
ckVhY2hDZWxsKEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgZm9yRWFjaExpdmVDZWxsKEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaERlYWRDZWxsKEZ1bmN0b3ImKTsKLQotICAgICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWFya3MoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
TWFya2VkQmxvY2ssIG1fbWFya3MpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOyAvLyBhdG9tU2l6
ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgotCi0gICAgICAgIGVudW0gQmxvY2tTdGF0ZSB7IE5l
dywgRnJlZUxpc3RlZCwgQWxsb2NhdGVkLCBNYXJrZWQsIFJldGlyZWQgfTsKLSAgICAgICAgdGVt
cGxhdGU8RGVzdHJ1Y3RvclR5cGU+IEZyZWVMaXN0IHN3ZWVwSGVscGVyKFN3ZWVwTW9kZSA9IFN3
ZWVwT25seSk7Ci0KLSAgICAgICAgdHlwZWRlZiBjaGFyIEF0b21bYXRvbVNpemVdOworICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgbWFya0J5dGVTaGlmdEFtb3VudCA9IDM7IC8vIGxvZ18yKHdvcmQg
c2l6ZSBmb3IgbV9tYXJrcykgRklYTUU6IENoYW5nZSB3b3JkIHNpemUgZm9yIG1fbWFya3MgdG8g
dWludDhfdC4KIAotICAgICAgICBNYXJrZWRCbG9jayhSZWdpb24qLCBNYXJrZWRBbGxvY2F0b3Iq
LCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JUeXBlKTsKLSAgICAgICAgQXRvbSogYXRvbXMo
KTsKLSAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIoY29uc3Qgdm9pZCopOwotICAgICAgICB2b2lk
IGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCopOwotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBT
d2VlcE1vZGUsIERlc3RydWN0b3JUeXBlPiBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7Ci0g
ICAgICAgIAotICAgICAgICBzaXplX3QgbV9hdG9tc1BlckNlbGw7Ci0gICAgICAgIHNpemVfdCBt
X2VuZEF0b207IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1fZW5k
QXRvbS4KLSNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgICAgIFdURjo6Qml0bWFwPGF0b21z
UGVyQmxvY2ssIFdURjo6Qml0bWFwQXRvbWljLCB1aW50OF90PiBtX21hcmtzOwotICAgICAgICBX
VEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrLCBXVEY6OkJpdG1hcEF0b21pYywgdWludDhfdD4gbV9y
ZW1lbWJlcmVkU2V0OwotI2Vsc2UKLSAgICAgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaywg
V1RGOjpCaXRtYXBOb3RBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7Ci0gICAgICAgIFdURjo6Qml0
bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwTm90QXRvbWljLCB1aW50OF90PiBtX3JlbWVt
YmVyZWRTZXQ7Ci0jZW5kaWYKLSAgICAgICAgT3duUHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxv
Y2s+PiBtX25ld2x5QWxsb2NhdGVkOwotCi0gICAgICAgIERlc3RydWN0b3JUeXBlIG1fZGVzdHJ1
Y3RvclR5cGU7Ci0gICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7Ci0gICAgICAg
IEJsb2NrU3RhdGUgbV9zdGF0ZTsKLSAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CisgICAgc3Ry
dWN0IEZyZWVDZWxsIHsKKyAgICAgICAgRnJlZUNlbGwqIG5leHQ7CiAgICAgfTsKKyAgICAKKyAg
ICBzdHJ1Y3QgRnJlZUxpc3QgeworICAgICAgICBGcmVlQ2VsbCogaGVhZDsKKyAgICAgICAgc2l6
ZV90IGJ5dGVzOwogCi0gICAgaW5saW5lIE1hcmtlZEJsb2NrOjpGcmVlTGlzdDo6RnJlZUxpc3Qo
KQotICAgICAgICA6IGhlYWQoMCkKLSAgICAgICAgLCBieXRlcygwKQotICAgIHsKLSAgICB9Ci0K
LSAgICBpbmxpbmUgTWFya2VkQmxvY2s6OkZyZWVMaXN0OjpGcmVlTGlzdChGcmVlQ2VsbCogaGVh
ZCwgc2l6ZV90IGJ5dGVzKQotICAgICAgICA6IGhlYWQoaGVhZCkKLSAgICAgICAgLCBieXRlcyhi
eXRlcykKLSAgICB7Ci0gICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6Zmly
c3RBdG9tKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8
YXRvbVNpemU+KHNpemVvZihNYXJrZWRCbG9jaykpIC8gYXRvbVNpemU7Ci0gICAgfQotCi0gICAg
aW5saW5lIE1hcmtlZEJsb2NrOjpBdG9tKiBNYXJrZWRCbG9jazo6YXRvbXMoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXRvbSo+KHRoaXMpOwotICAgIH0KLQotICAg
IGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqIHApCi0g
ICAgewotICAgICAgICByZXR1cm4gIShyZWludGVycHJldF9jYXN0PEJpdHM+KHApICYgYXRvbUFs
aWdubWVudE1hc2spOwotICAgIH0KLQotICAgIGlubGluZSBNYXJrZWRCbG9jayogTWFya2VkQmxv
Y2s6OmJsb2NrRm9yKGNvbnN0IHZvaWQqIHApCi0gICAgewotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxNYXJrZWRCbG9jayo+KHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4ocCkgJiBibG9j
a01hc2spOwotICAgIH0KLQotICAgIGlubGluZSBNYXJrZWRBbGxvY2F0b3IqIE1hcmtlZEJsb2Nr
OjphbGxvY2F0b3IoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYWxsb2NhdG9yOwot
ICAgIH0KLQotICAgIGlubGluZSBIZWFwKiBNYXJrZWRCbG9jazo6aGVhcCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV93ZWFrU2V0LmhlYXAoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUg
Vk0qIE1hcmtlZEJsb2NrOjp2bSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV93ZWFr
U2V0LnZtKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIFdlYWtTZXQmIE1hcmtlZEJsb2NrOjp3ZWFr
U2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3dlYWtTZXQ7Ci0gICAgfQotCi0gICAgaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OnNocmluaygpCi0gICAgewotICAgICAgICBtX3dlYWtTZXQu
c2hyaW5rKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnZpc2l0V2Vh
a1NldChIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikKLSAgICB7Ci0gICAgICAgIG1f
d2Vha1NldC52aXNpdChoZWFwUm9vdFZpc2l0b3IpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lk
IE1hcmtlZEJsb2NrOjpyZWFwV2Vha1NldCgpCi0gICAgewotICAgICAgICBtX3dlYWtTZXQucmVh
cCgpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjp3aWxsUmVtb3ZlQmxv
Y2soKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc3RhdGUgIT0gUmV0aXJlZCk7Ci0gICAgfQot
Ci0gICAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmRpZENvbnN1bWVGcmVlTGlzdCgpCi0gICAg
ewotICAgICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwotCi0gICAg
ICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwotICAgICAgICBtX3N0YXRlID0gQWxs
b2NhdGVkOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpkaWRDb25zdW1l
RW1wdHlGcmVlTGlzdCgpCi0gICAgewotICAgICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFO
U0lUSU9OKHRoaXMpOwotCi0gICAgICAgIEFTU0VSVCghbV9uZXdseUFsbG9jYXRlZCk7Ci0gICAg
ICAgIEFTU0VSVChtX3N0YXRlID09IEZyZWVMaXN0ZWQpOwotICAgICAgICBtX3N0YXRlID0gTWFy
a2VkOwotICAgIH0KLQotICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6Om1hcmtDb3VudCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9tYXJrcy5jb3VudCgpOwotICAgIH0KLQotICAgIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc0VtcHR5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X21hcmtzLmlzRW1wdHkoKSAmJiBtX3dlYWtTZXQuaXNFbXB0eSgpICYmICghbV9uZXdseUFsbG9j
YXRlZCB8fCBtX25ld2x5QWxsb2NhdGVkLT5pc0VtcHR5KCkpOwotICAgIH0KLQotICAgIGlubGlu
ZSBzaXplX3QgTWFya2VkQmxvY2s6OmNlbGxTaXplKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2F0b21zUGVyQ2VsbCAqIGF0b21TaXplOwotICAgIH0KLQotICAgIGlubGluZSBNYXJrZWRCbG9j
azo6RGVzdHJ1Y3RvclR5cGUgTWFya2VkQmxvY2s6OmRlc3RydWN0b3JUeXBlKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2Rlc3RydWN0b3JUeXBlOyAKLSAgICB9Ci0KLSAgICBpbmxpbmUgc2l6
ZV90IE1hcmtlZEJsb2NrOjpzaXplKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYXJrQ291bnQo
KSAqIGNlbGxTaXplKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6
Y2FwYWNpdHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZ2lvbigpLT5ibG9ja1NpemUoKTsK
LSAgICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IE1hcmtlZEJsb2NrOjphdG9tTnVtYmVyKGNvbnN0
IHZvaWQqIHApCi0gICAgewotICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4o
cCkgLSByZWludGVycHJldF9jYXN0PEJpdHM+KHRoaXMpKSAvIGF0b21TaXplOwotICAgIH0KLQot
ICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpzZXRSZW1lbWJlcmVkKGNvbnN0IHZvaWQqIHAp
Ci0gICAgewotICAgICAgICBtX3JlbWVtYmVyZWRTZXQuc2V0KGF0b21OdW1iZXIocCkpOwotICAg
IH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhclJlbWVtYmVyZWQoY29uc3Qg
dm9pZCogcCkKLSAgICB7Ci0gICAgICAgIG1fcmVtZW1iZXJlZFNldC5jbGVhcihhdG9tTnVtYmVy
KHApKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YXRvbWljQ2xlYXJS
ZW1lbWJlcmVkKGNvbnN0IHZvaWQqIHApCi0gICAgewotICAgICAgICBtX3JlbWVtYmVyZWRTZXQu
Y29uY3VycmVudFRlc3RBbmRDbGVhcihhdG9tTnVtYmVyKHApKTsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aXNSZW1lbWJlcmVkKGNvbnN0IHZvaWQqIHApCi0gICAgewot
ICAgICAgICByZXR1cm4gbV9yZW1lbWJlcmVkU2V0LmdldChhdG9tTnVtYmVyKHApKTsKLSAgICB9
Ci0KLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKLSAgICB9
Ci0KLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6dGVzdEFuZFNldE1hcmtlZChjb25zdCB2
b2lkKiBwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbWFya3MuY29uY3VycmVudFRlc3RBbmRT
ZXQoYXRvbU51bWJlcihwKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6
OnNldE1hcmtlZChjb25zdCB2b2lkKiBwKQotICAgIHsKLSAgICAgICAgbV9tYXJrcy5zZXQoYXRv
bU51bWJlcihwKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFy
TWFya2VkKGNvbnN0IHZvaWQqIHApCi0gICAgewotICAgICAgICBBU1NFUlQobV9tYXJrcy5nZXQo
YXRvbU51bWJlcihwKSkpOwotICAgICAgICBtX21hcmtzLmNsZWFyKGF0b21OdW1iZXIocCkpOwot
ICAgIH0KLQotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc05ld2x5QWxsb2NhdGVkKGNv
bnN0IHZvaWQqIHApCi0gICAgewotICAgICAgICByZXR1cm4gbV9uZXdseUFsbG9jYXRlZC0+Z2V0
KGF0b21OdW1iZXIocCkpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpz
ZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKiBwKQotICAgIHsKLSAgICAgICAgbV9uZXdseUFs
bG9jYXRlZC0+c2V0KGF0b21OdW1iZXIocCkpOwotICAgIH0KKyAgICAgICAgRnJlZUxpc3QoKTsK
KyAgICAgICAgRnJlZUxpc3QoRnJlZUNlbGwqLCBzaXplX3QpOworICAgIH07CiAKLSAgICBpbmxp
bmUgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKiBwKQot
ICAgIHsKLSAgICAgICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xlYXIoYXRvbU51bWJlcihwKSk7Ci0g
ICAgfQorICAgIHN0cnVjdCBWb2lkRnVuY3RvciB7CisgICAgICAgIHR5cGVkZWYgdm9pZCBSZXR1
cm5UeXBlOworICAgICAgICB2b2lkIHJldHVyblZhbHVlKCkgeyB9CisgICAgfTsKIAotICAgIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKLSAgICB7Ci0gICAg
ICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgICAgICBtX25ld2x5QWxsb2NhdGVk
LmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGNsYXNzIENvdW50RnVuY3RvciB7CisgICAgcHVibGlj
OgorICAgICAgICB0eXBlZGVmIHNpemVfdCBSZXR1cm5UeXBlOwogCi0gICAgaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OmlzTGl2ZShjb25zdCBKU0NlbGwqIGNlbGwpCi0gICAgewotICAgICAgICBz
d2l0Y2ggKG1fc3RhdGUpIHsKLSAgICAgICAgY2FzZSBBbGxvY2F0ZWQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgICAgICBjYXNlIFJldGlyZWQ6Ci0gICAgICAgIGNhc2UgTWFya2Vk
OgotICAgICAgICAgICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIoY2VsbCkpIHx8ICht
X25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwotCi0gICAgICAgIGNh
c2UgTmV3OgotICAgICAgICBjYXNlIEZyZWVMaXN0ZWQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBD
b3VudEZ1bmN0b3IoKQorICAgICAgICAgICAgOiBtX2NvdW50KDApCisgICAgICAgIHsKICAgICAg
ICAgfQorICAgICAgICB2b2lkIGNvdW50KHNpemVfdCBjb3VudCkgeyBtX2NvdW50ICs9IGNvdW50
OyB9CisgICAgICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKSB7IHJldHVybiBtX2NvdW50OyB9
CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmVDZWxs
KGNvbnN0IHZvaWQqIHApCi0gICAgewotICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmlzQXRv
bUFsaWduZWQocCkpOwotICAgICAgICBzaXplX3QgYXRvbU51bWJlciA9IHRoaXMtPmF0b21OdW1i
ZXIocCk7Ci0gICAgICAgIHNpemVfdCBmaXJzdEF0b20gPSB0aGlzLT5maXJzdEF0b20oKTsKLSAg
ICAgICAgaWYgKGF0b21OdW1iZXIgPCBmaXJzdEF0b20pIC8vIEZpbHRlcnMgcG9pbnRlcnMgaW50
byBNYXJrZWRCbG9jayBtZXRhZGF0YS4KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKChhdG9tTnVtYmVyIC0gZmlyc3RBdG9tKSAlIG1fYXRvbXNQZXJDZWxsKSAvLyBGaWx0
ZXJzIHBvaW50ZXJzIGludG8gY2VsbCBtaWRkbGVzLgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBpZiAoYXRvbU51bWJlciA+PSBtX2VuZEF0b20pIC8vIEZpbHRlcnMgcG9pbnRl
cnMgaW50byBpbnZhbGlkIGNlbGxzIG91dCBvZiB0aGUgcmFuZ2UuCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcHJpdmF0ZToKKyAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OworICAg
IH07CiAKLSAgICAgICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBKU0NlbGwqPihw
KSk7Ci0gICAgfQorICAgIGVudW0gRGVzdHJ1Y3RvclR5cGUgeyBOb25lLCBJbW1vcnRhbFN0cnVj
dHVyZSwgTm9ybWFsIH07CisgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoRGVhZEJsb2Nr
KiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSk7CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6
OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCi0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsK
LSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+
KCZhdG9tcygpW2ldKTsKLSAgICAgICAgICAgIGZ1bmN0b3IoY2VsbCk7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgc3RhdGljIGJvb2wgaXNBdG9tQWxpZ25lZChjb25zdCB2b2lkKik7CisgICAgc3Rh
dGljIE1hcmtlZEJsb2NrKiBibG9ja0Zvcihjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHNpemVf
dCBmaXJzdEF0b20oKTsKKyAgICAKKyAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6
OmZvckVhY2hMaXZlQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQotICAgIHsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxs
KSB7Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0Nl
bGwqPigmYXRvbXMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcigpIGNv
bnN0OworICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKKyAgICBWTSogdm0oKSBjb25zdDsKKyAgICBX
ZWFrU2V0JiB3ZWFrU2V0KCk7CisgICAgCisgICAgZW51bSBTd2VlcE1vZGUgeyBTd2VlcE9ubHks
IFN3ZWVwVG9GcmVlTGlzdCB9OworICAgIEZyZWVMaXN0IHN3ZWVwKFN3ZWVwTW9kZSA9IFN3ZWVw
T25seSk7CiAKLSAgICAgICAgICAgIGZ1bmN0b3IoY2VsbCk7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgdm9pZCBzaHJpbmsoKTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdm9pZCBNYXJrZWRCbG9jazo6Zm9yRWFjaERlYWRDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCi0g
ICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207
IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKLSAgICAgICAgICAgIGlmIChp
c0xpdmUoY2VsbCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgdm9pZCB2aXNpdFdl
YWtTZXQoSGVhcFJvb3RWaXNpdG9yJik7CisgICAgdm9pZCByZWFwV2Vha1NldCgpOwogCi0gICAg
ICAgICAgICBmdW5jdG9yKGNlbGwpOwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIFdoaWxlIGFs
bG9jYXRpbmcgZnJvbSBhIGZyZWUgbGlzdCwgTWFya2VkQmxvY2sgdGVtcG9yYXJpbHkgaGFzIGJv
Z3VzCisgICAgLy8gY2VsbCBsaXZlbmVzcyBkYXRhLiBUbyByZXN0b3JlIGFjY3VyYXRlIGNlbGwg
bGl2ZW5lc3MgZGF0YSwgY2FsbCBvbmUKKyAgICAvLyBvZiB0aGVzZSBmdW5jdGlvbnM6CisgICAg
dm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsgLy8gQ2FsbCB0aGlzIG9uY2UgeW91J3ZlIGFsbG9j
YXRlZCBhbGwgdGhlIGl0ZW1zIGluIHRoZSBmcmVlIGxpc3QuCisgICAgdm9pZCBzdG9wQWxsb2Nh
dGluZyhjb25zdCBGcmVlTGlzdCYpOworICAgIEZyZWVMaXN0IHJlc3VtZUFsbG9jYXRpbmcoKTsg
Ly8gQ2FsbCB0aGlzIGlmIHlvdSBjYW5vbmljYWxpemVkIGEgYmxvY2sgZm9yIHNvbWUgbm9uLWNv
bGxlY3Rpb24gcmVsYXRlZCBwdXJwb3NlLgorICAgIHZvaWQgZGlkQ29uc3VtZUVtcHR5RnJlZUxp
c3QoKTsgLy8gQ2FsbCB0aGlzIGlmIHlvdSBzd2VlcCBhIGJsb2NrLCBidXQgdGhlIHJldHVybmVk
IEZyZWVMaXN0IGlzIGVtcHR5LgorICAgIHZvaWQgZGlkU3dlZXBUb05vQXZhaWwoKTsgLy8gQ2Fs
bCB0aGlzIGlmIHlvdSBzd2VlcCBhIGJsb2NrIGFuZCBnZXQgYW4gZW1wdHkgZnJlZSBsaXN0IGJh
Y2suCisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1h
cCB3YXMgbm9uLW51bGwgCisgICAgLy8gYW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQg
ZmFsc2Ugb3RoZXJ3aXNlLgorICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOworICAgIHZv
aWQgY2xlYXJNYXJrcygpOworICAgIHZvaWQgY2xlYXJSZW1lbWJlcmVkU2V0KCk7CisgICAgdGVt
cGxhdGUgPEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGU+CisgICAgdm9pZCBjbGVhck1hcmtz
V2l0aENvbGxlY3Rpb25UeXBlKCk7CisKKyAgICBzaXplX3QgbWFya0NvdW50KCk7CisgICAgYm9v
bCBpc0VtcHR5KCk7CisKKyAgICBzaXplX3QgY2VsbFNpemUoKTsKKyAgICBEZXN0cnVjdG9yVHlw
ZSBkZXN0cnVjdG9yVHlwZSgpOworCisgICAgc2l6ZV90IHNpemUoKTsKKyAgICBzaXplX3QgY2Fw
YWNpdHkoKTsKKworICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOworICAgIGJvb2wgdGVz
dEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CisgICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxs
Kik7CisgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIHNldE1hcmtl
ZChjb25zdCB2b2lkKik7CisgICAgdm9pZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7CisKKyAg
ICB2b2lkIHNldFJlbWVtYmVyZWQoY29uc3Qgdm9pZCopOworICAgIHZvaWQgY2xlYXJSZW1lbWJl
cmVkKGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGF0b21pY0NsZWFyUmVtZW1iZXJlZChjb25zdCB2
b2lkKik7CisgICAgYm9vbCBpc1JlbWVtYmVyZWQoY29uc3Qgdm9pZCopOworCisgICAgYm9vbCBp
c05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIHNldE5ld2x5QWxsb2NhdGVk
KGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCop
OworCisgICAgYm9vbCBuZWVkc1N3ZWVwaW5nKCk7CisgICAgdm9pZCBkaWRSZXRpcmVCbG9jayhj
b25zdCBGcmVlTGlzdCYpOworICAgIHZvaWQgd2lsbFJlbW92ZUJsb2NrKCk7CisKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQ2VsbChGdW5jdG9yJik7CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExpdmVDZWxsKEZ1bmN0b3Im
KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoRGVhZENlbGwo
RnVuY3RvciYpOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1hcmtzKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX21hcmtzKTsgfQorCitwcml2YXRlOgor
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7
IC8vIGF0b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCisKKyAgICBlbnVtIEJsb2NrU3Rh
dGUgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkLCBSZXRpcmVkIH07CisgICAg
dGVtcGxhdGU8RGVzdHJ1Y3RvclR5cGU+IEZyZWVMaXN0IHN3ZWVwSGVscGVyKFN3ZWVwTW9kZSA9
IFN3ZWVwT25seSk7CisKKyAgICB0eXBlZGVmIGNoYXIgQXRvbVthdG9tU2l6ZV07CisKKyAgICBN
YXJrZWRCbG9jayhSZWdpb24qLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIERl
c3RydWN0b3JUeXBlKTsKKyAgICBBdG9tKiBhdG9tcygpOworICAgIHNpemVfdCBhdG9tTnVtYmVy
KGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCopOworICAgIHRl
bXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3RvclR5cGU+IEZyZWVMaXN0IHNw
ZWNpYWxpemVkU3dlZXAoKTsKKyAgICAKKyAgICBzaXplX3QgbV9hdG9tc1BlckNlbGw7CisgICAg
c2l6ZV90IG1fZW5kQXRvbTsgLy8gVGhpcyBpcyBhIGZ1enp5IGVuZC4gQWx3YXlzIHRlc3QgZm9y
IDwgbV9lbmRBdG9tLgorI2lmIEVOQUJMRShQQVJBTExFTF9HQykKKyAgICBXVEY6OkJpdG1hcDxh
dG9tc1BlckJsb2NrLCBXVEY6OkJpdG1hcEF0b21pYywgdWludDhfdD4gbV9tYXJrczsKKyAgICBX
VEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrLCBXVEY6OkJpdG1hcEF0b21pYywgdWludDhfdD4gbV9y
ZW1lbWJlcmVkU2V0OworI2Vsc2UKKyAgICBXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrLCBXVEY6
OkJpdG1hcE5vdEF0b21pYywgdWludDhfdD4gbV9tYXJrczsKKyAgICBXVEY6OkJpdG1hcDxhdG9t
c1BlckJsb2NrLCBXVEY6OkJpdG1hcE5vdEF0b21pYywgdWludDhfdD4gbV9yZW1lbWJlcmVkU2V0
OworI2VuZGlmCisgICAgT3duUHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PiBtX25ld2x5
QWxsb2NhdGVkOwogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om5lZWRzU3dlZXBpbmco
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhdGUgPT0gTWFya2VkOwotICAgIH0KKyAgICBE
ZXN0cnVjdG9yVHlwZSBtX2Rlc3RydWN0b3JUeXBlOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9h
bGxvY2F0b3I7CisgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOworICAgIFdlYWtTZXQgbV93ZWFrU2V0
OworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgc3Ry
dWN0IE1hcmtlZEJsb2NrSGFzaCA6IFB0ckhhc2g8SlNDOjpNYXJrZWRCbG9jayo+IHsKLSAgICAg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSlNDOjpNYXJrZWRCbG9jayogY29uc3QmIGtleSkKLSAg
ICAgICAgewotICAgICAgICAgICAgLy8gQWxpZ25lZCBWTSByZWdpb25zIHRlbmQgdG8gYmUgbW9u
b3RvbmljYWxseSBpbmNyZWFzaW5nIGludGVnZXJzLAotICAgICAgICAgICAgLy8gd2hpY2ggaXMg
YSBncmVhdCBoYXNoIGZ1bmN0aW9uLCBidXQgd2UgaGF2ZSB0byByZW1vdmUgdGhlIGxvdyBiaXRz
LAotICAgICAgICAgICAgLy8gc2luY2UgdGhleSdyZSBhbHdheXMgemVybywgd2hpY2ggaXMgYSB0
ZXJyaWJsZSBoYXNoIGZ1bmN0aW9uIQotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8SlNDOjpCaXRzPihrZXkpIC8gSlNDOjpNYXJrZWRCbG9jazo6YmxvY2tTaXplOwotICAgICAg
ICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TWFy
a2VkQmxvY2sqPiB7Ci0gICAgICAgIHR5cGVkZWYgTWFya2VkQmxvY2tIYXNoIEhhc2g7Ci0gICAg
fTsKK3N0cnVjdCBNYXJrZWRCbG9ja0hhc2ggOiBQdHJIYXNoPEpTQzo6TWFya2VkQmxvY2sqPiB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSlNDOjpNYXJrZWRCbG9jayogY29uc3QmIGtleSkK
KyAgICB7CisgICAgICAgIC8vIEFsaWduZWQgVk0gcmVnaW9ucyB0ZW5kIHRvIGJlIG1vbm90b25p
Y2FsbHkgaW5jcmVhc2luZyBpbnRlZ2VycywKKyAgICAgICAgLy8gd2hpY2ggaXMgYSBncmVhdCBo
YXNoIGZ1bmN0aW9uLCBidXQgd2UgaGF2ZSB0byByZW1vdmUgdGhlIGxvdyBiaXRzLAorICAgICAg
ICAvLyBzaW5jZSB0aGV5J3JlIGFsd2F5cyB6ZXJvLCB3aGljaCBpcyBhIHRlcnJpYmxlIGhhc2gg
ZnVuY3Rpb24hCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQzo6Qml0cz4oa2V5
KSAvIEpTQzo6TWFya2VkQmxvY2s6OmJsb2NrU2l6ZTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6Ok1hcmtlZEJsb2NrKj4geworICAgIHR5cGVkZWYgTWFy
a2VkQmxvY2tIYXNoIEhhc2g7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
TWFya2VkQmxvY2tJbmxpbmVzX2gKKyNkZWZpbmUgTWFya2VkQmxvY2tJbmxpbmVzX2gKKworI2lu
Y2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlND
IHsKKworaW5saW5lIE1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKERlYWRCbG9jayog
YmxvY2ssIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIERlc3Ry
dWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlKQoreworICAgIEFTU0VSVChyZWludGVycHJldF9jYXN0
PHNpemVfdD4oYmxvY2spID09IChyZWludGVycHJldF9jYXN0PHNpemVfdD4oYmxvY2spICYgYmxv
Y2tNYXNrKSk7CisgICAgUmVnaW9uKiByZWdpb24gPSBibG9jay0+cmVnaW9uKCk7CisgICAgcmV0
dXJuIG5ldyAoTm90TnVsbCwgYmxvY2spIE1hcmtlZEJsb2NrKHJlZ2lvbiwgYWxsb2NhdG9yLCBj
ZWxsU2l6ZSwgZGVzdHJ1Y3RvclR5cGUpOworfQorCitpbmxpbmUgTWFya2VkQmxvY2s6Ok1hcmtl
ZEJsb2NrKFJlZ2lvbiogcmVnaW9uLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90
IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKKyAgICA6IEhlYXBCbG9j
azxNYXJrZWRCbG9jaz4ocmVnaW9uKQorICAgICwgbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsg
YXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQorICAgICwgbV9lbmRBdG9tKChhbGxvY2F0b3ItPmNl
bGxTaXplKCkgPyBhdG9tc1BlckJsb2NrIDogcmVnaW9uLT5ibG9ja1NpemUoKSAvIGF0b21TaXpl
KSAtIG1fYXRvbXNQZXJDZWxsICsgMSkKKyAgICAsIG1fZGVzdHJ1Y3RvclR5cGUoZGVzdHJ1Y3Rv
clR5cGUpCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCisgICAgLCBtX3N0YXRlKE5ldykg
Ly8gQWxsIGNlbGxzIHN0YXJ0IG91dCB1bm1hcmtlZC4KKyAgICAsIG1fd2Vha1NldChhbGxvY2F0
b3ItPmhlYXAoKS0+dm0oKSkKK3sKKyAgICBBU1NFUlQoYWxsb2NhdG9yKTsKKyAgICBIRUFQX0xP
R19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworfQorCitpbmxpbmUgTWFya2VkQmxvY2s6
OkZyZWVMaXN0OjpGcmVlTGlzdCgpCisgICAgOiBoZWFkKDApCisgICAgLCBieXRlcygwKQorewor
fQorCitpbmxpbmUgTWFya2VkQmxvY2s6OkZyZWVMaXN0OjpGcmVlTGlzdChGcmVlQ2VsbCogaGVh
ZCwgc2l6ZV90IGJ5dGVzKQorICAgIDogaGVhZChoZWFkKQorICAgICwgYnl0ZXMoYnl0ZXMpCit7
Cit9CisKK2lubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmZpcnN0QXRvbSgpCit7CisgICAgcmV0
dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxhdG9tU2l6ZT4oc2l6ZW9mKE1hcmtlZEJsb2Nr
KSkgLyBhdG9tU2l6ZTsKK30KKworaW5saW5lIE1hcmtlZEJsb2NrOjpBdG9tKiBNYXJrZWRCbG9j
azo6YXRvbXMoKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEF0b20qPih0aGlzKTsK
K30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCog
cCkKK3sKKyAgICByZXR1cm4gIShyZWludGVycHJldF9jYXN0PEJpdHM+KHApICYgYXRvbUFsaWdu
bWVudE1hc2spOworfQorCitpbmxpbmUgTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpibG9ja0Zv
cihjb25zdCB2b2lkKiBwKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE1hcmtlZEJs
b2NrKj4ocmVpbnRlcnByZXRfY2FzdDxCaXRzPihwKSAmIGJsb2NrTWFzayk7Cit9CisKK2lubGlu
ZSBNYXJrZWRBbGxvY2F0b3IqIE1hcmtlZEJsb2NrOjphbGxvY2F0b3IoKSBjb25zdAoreworICAg
IHJldHVybiBtX2FsbG9jYXRvcjsKK30KKworaW5saW5lIEhlYXAqIE1hcmtlZEJsb2NrOjpoZWFw
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWFrU2V0LmhlYXAoKTsKK30KKworaW5saW5lIFZN
KiBNYXJrZWRCbG9jazo6dm0oKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYWtTZXQudm0oKTsK
K30KKworaW5saW5lIFdlYWtTZXQmIE1hcmtlZEJsb2NrOjp3ZWFrU2V0KCkKK3sKKyAgICByZXR1
cm4gbV93ZWFrU2V0OworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2hyaW5rKCkKK3sK
KyAgICBtX3dlYWtTZXQuc2hyaW5rKCk7Cit9CisKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjp2
aXNpdFdlYWtTZXQoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCit7CisgICAgbV93
ZWFrU2V0LnZpc2l0KGhlYXBSb290VmlzaXRvcik7Cit9CisKK2lubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjpyZWFwV2Vha1NldCgpCit7CisgICAgbV93ZWFrU2V0LnJlYXAoKTsKK30KKworaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OndpbGxSZW1vdmVCbG9jaygpCit7CisgICAgQVNTRVJUKG1fc3Rh
dGUgIT0gUmV0aXJlZCk7Cit9CisKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpkaWRDb25zdW1l
RnJlZUxpc3QoKQoreworICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7
CisKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKKyAgICBtX3N0YXRlID0gQWxs
b2NhdGVkOworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6ZGlkQ29uc3VtZUVtcHR5RnJl
ZUxpc3QoKQoreworICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CisK
KyAgICBBU1NFUlQoIW1fbmV3bHlBbGxvY2F0ZWQpOworICAgIEFTU0VSVChtX3N0YXRlID09IEZy
ZWVMaXN0ZWQpOworICAgIG1fc3RhdGUgPSBNYXJrZWQ7Cit9CisKK2lubGluZSBzaXplX3QgTWFy
a2VkQmxvY2s6Om1hcmtDb3VudCgpCit7CisgICAgcmV0dXJuIG1fbWFya3MuY291bnQoKTsKK30K
KworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzRW1wdHkoKQoreworICAgIHJldHVybiBtX21h
cmtzLmlzRW1wdHkoKSAmJiBtX3dlYWtTZXQuaXNFbXB0eSgpICYmICghbV9uZXdseUFsbG9jYXRl
ZCB8fCBtX25ld2x5QWxsb2NhdGVkLT5pc0VtcHR5KCkpOworfQorCitpbmxpbmUgc2l6ZV90IE1h
cmtlZEJsb2NrOjpjZWxsU2l6ZSgpCit7CisgICAgcmV0dXJuIG1fYXRvbXNQZXJDZWxsICogYXRv
bVNpemU7Cit9CisKK2lubGluZSBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgTWFya2VkQmxv
Y2s6OmRlc3RydWN0b3JUeXBlKCkKK3sKKyAgICByZXR1cm4gbV9kZXN0cnVjdG9yVHlwZTsgCit9
CisKK2lubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OnNpemUoKQoreworICAgIHJldHVybiBtYXJr
Q291bnQoKSAqIGNlbGxTaXplKCk7Cit9CisKK2lubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmNh
cGFjaXR5KCkKK3sKKyAgICByZXR1cm4gcmVnaW9uKCktPmJsb2NrU2l6ZSgpOworfQorCitpbmxp
bmUgc2l6ZV90IE1hcmtlZEJsb2NrOjphdG9tTnVtYmVyKGNvbnN0IHZvaWQqIHApCit7CisgICAg
cmV0dXJuIChyZWludGVycHJldF9jYXN0PEJpdHM+KHApIC0gcmVpbnRlcnByZXRfY2FzdDxCaXRz
Pih0aGlzKSkgLyBhdG9tU2l6ZTsKK30KKworaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnNldFJl
bWVtYmVyZWQoY29uc3Qgdm9pZCogcCkKK3sKKyAgICBtX3JlbWVtYmVyZWRTZXQuc2V0KGF0b21O
dW1iZXIocCkpOworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJSZW1lbWJlcmVk
KGNvbnN0IHZvaWQqIHApCit7CisgICAgbV9yZW1lbWJlcmVkU2V0LmNsZWFyKGF0b21OdW1iZXIo
cCkpOworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YXRvbWljQ2xlYXJSZW1lbWJlcmVk
KGNvbnN0IHZvaWQqIHApCit7CisgICAgbV9yZW1lbWJlcmVkU2V0LmNvbmN1cnJlbnRUZXN0QW5k
Q2xlYXIoYXRvbU51bWJlcihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc1Jl
bWVtYmVyZWQoY29uc3Qgdm9pZCogcCkKK3sKKyAgICByZXR1cm4gbV9yZW1lbWJlcmVkU2V0Lmdl
dChhdG9tTnVtYmVyKHApKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
KGNvbnN0IHZvaWQqIHApCit7CisgICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkp
OworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6dGVzdEFuZFNldE1hcmtlZChjb25zdCB2
b2lkKiBwKQoreworICAgIHJldHVybiBtX21hcmtzLmNvbmN1cnJlbnRUZXN0QW5kU2V0KGF0b21O
dW1iZXIocCkpOworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0TWFya2VkKGNvbnN0
IHZvaWQqIHApCit7CisgICAgbV9tYXJrcy5zZXQoYXRvbU51bWJlcihwKSk7Cit9CisKK2lubGlu
ZSB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtlZChjb25zdCB2b2lkKiBwKQoreworICAgIEFT
U0VSVChtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKSk7CisgICAgbV9tYXJrcy5jbGVhcihhdG9t
TnVtYmVyKHApKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTmV3bHlBbGxvY2F0
ZWQoY29uc3Qgdm9pZCogcCkKK3sKKyAgICByZXR1cm4gbV9uZXdseUFsbG9jYXRlZC0+Z2V0KGF0
b21OdW1iZXIocCkpOworfQorCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0TmV3bHlBbGxv
Y2F0ZWQoY29uc3Qgdm9pZCogcCkKK3sKKyAgICBtX25ld2x5QWxsb2NhdGVkLT5zZXQoYXRvbU51
bWJlcihwKSk7Cit9CisKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck5ld2x5QWxsb2Nh
dGVkKGNvbnN0IHZvaWQqIHApCit7CisgICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xlYXIoYXRvbU51
bWJlcihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpjbGVhck5ld2x5QWxsb2Nh
dGVkKCkKK3sKKyAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkgeworICAgICAgICBtX25ld2x5QWxs
b2NhdGVkLmNsZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmUoY29uc3QgSlNDZWxs
KiBjZWxsKQoreworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgQWxsb2NhdGVkOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgUmV0aXJlZDoKKyAgICBjYXNlIE1hcmtl
ZDoKKyAgICAgICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIoY2VsbCkpIHx8IChtX25l
d2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOworCisgICAgY2FzZSBOZXc6
CisgICAgY2FzZSBGcmVlTGlzdGVkOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIE1hcmtl
ZEJsb2NrOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCit7CisgICAgQVNTRVJUKE1hcmtlZEJs
b2NrOjppc0F0b21BbGlnbmVkKHApKTsKKyAgICBzaXplX3QgYXRvbU51bWJlciA9IHRoaXMtPmF0
b21OdW1iZXIocCk7CisgICAgc2l6ZV90IGZpcnN0QXRvbSA9IHRoaXMtPmZpcnN0QXRvbSgpOwor
ICAgIGlmIChhdG9tTnVtYmVyIDwgZmlyc3RBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGludG8g
TWFya2VkQmxvY2sgbWV0YWRhdGEuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKGF0
b21OdW1iZXIgLSBmaXJzdEF0b20pICUgbV9hdG9tc1BlckNlbGwpIC8vIEZpbHRlcnMgcG9pbnRl
cnMgaW50byBjZWxsIG1pZGRsZXMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXRv
bU51bWJlciA+PSBtX2VuZEF0b20pIC8vIEZpbHRlcnMgcG9pbnRlcnMgaW50byBpbnZhbGlkIGNl
bGxzIG91dCBvZiB0aGUgcmFuZ2UuCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKEZ1
bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwg
bV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEpTQ2VsbCogY2VsbCA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgZnVu
Y3RvcihjZWxsKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdm9pZCBNYXJrZWRCbG9jazo6Zm9yRWFjaExpdmVDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1f
YXRvbXNQZXJDZWxsKSB7CisgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmdW5jdG9yKGNlbGwpOworICAgIH0KK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpm
b3JFYWNoRGVhZENlbGwoRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0g
Zmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICAg
ICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClb
aV0pOworICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgZnVuY3RvcihjZWxsKTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJs
b2NrOjpuZWVkc1N3ZWVwaW5nKCkKK3sKKyAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7Cit9
CisKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhclJlbWVtYmVyZWRTZXQoKQoreworICAg
IG1fcmVtZW1iZXJlZFNldC5jbGVhckFsbCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIE1hcmtlZEJsb2NrSW5saW5lc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lv
biAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0U291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWUuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJEZWJ1
Z2dlckNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKYXZh
U2NyaXB0Q2FsbEZyYW1lLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNB
cmd1bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSW5saW5lcy5oCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNs
dWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01hcC5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRh
LmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTY2Mjk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJKU01hcEl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNNYXAuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lm
IEVOQUJMRShQUk9NSVNFUykKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAJKHJl
dmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZURlZmVycmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShQUk9NSVNFUykKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlRnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAxNjYy
OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VGdW5jdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFBST01JU0VT
KQogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNQcm9taXNlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAKICNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlUmVhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFBST01JU0VTKQogCiAjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRl
cmF0b3IuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1NldEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKIAorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU1NldC5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNX
ZWFrTWFwLmgiCiAKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJX
ZWFrTWFwRGF0YS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcAkocmV2
aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb3BpZWRBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90
eXBlLmgiCiAKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVy
YXRvci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxNjYyOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJKU01hcC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlUYWJsZS5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFi
bGUuaCIKIAorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRv
cklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIlNldENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0
ZXJhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2V0SXRlcmF0
b3JQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJK
U1NldEl0ZXJhdG9yLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIK
ICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTU2V0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE2NjI5NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWFrTWFwQ29uc3RydWN0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcAkocmV2aXNpb24gMTY2Mjk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29waWVkQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
Q29weVZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTY2Mjk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWFrTWFwUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNp
bmNsdWRlICJXZWFrTWFwRGF0YS5oIgo=
</data>
<flag name="review"
          id="252118"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>