<?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>80819</bug_id>
          
          <creation_ts>2012-03-12 00:48:07 -0700</creation_ts>
          <short_desc>Arithmetic use inference should be procedure-global and should run in tandem with type propagation</short_desc>
          <delta_ts>2012-03-12 18:06:27 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80779</dependson>
    
    <dependson>80824</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>575974</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 00:48:07 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575975</commentid>
    <comment_count>1</comment_count>
      <attachid>131288</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 00:51:37 -0700</bug_when>
    <thetext>Created attachment 131288
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576486</commentid>
    <comment_count>2</comment_count>
      <attachid>131402</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 13:56:43 -0700</bug_when>
    <thetext>Created attachment 131402
work in progress

Will wait for https://bugs.webkit.org/show_bug.cgi?id=80824 before r?ing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576690</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 16:24:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/11034006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576723</commentid>
    <comment_count>4</comment_count>
      <attachid>131452</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 16:48:55 -0700</bug_when>
    <thetext>Created attachment 131452
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576835</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 18:06:27 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/110518</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131288</attachid>
            <date>2012-03-12 00:51:37 -0700</date>
            <delta_ts>2012-03-12 16:48:55 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>globalarith_patch_1.diff</filename>
            <type>text/plain</type>
            <size>90395</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEwNDEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMSBA
QAorMjAxMi0wMy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEFyaXRobWV0aWMgdXNlIGluZmVyZW5jZSBzaG91bGQgYmUgcHJvY2VkdXJlLWdsb2JhbCBhbmQg
c2hvdWxkIHJ1biBpbiB0YW5kZW0KKyAgICAgICAgd2l0aCB0eXBlIHByb3BhZ2F0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDgxOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV29yayBp
biBwcm9ncmVzcy4gVGhpcyBwYXRjaCB3aWxsIG5lZWQgdG8gYmUgcmViYXNlZCBhZnRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA3NzkgbGFuZHMu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBkZmcvREZHQXJpdGhOb2RlRmxhZ3NJ
bmZlcmVuY2VQaGFzZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0FyaXRoTm9kZUZs
YWdzSW5mZXJlbmNlUGhhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRUb0dyYXBo
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZVNhZmUpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlRGl2U2FmZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDRkFQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Q0ZBUGhhc2U6OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAg
ICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6ZW5k
SW5kZXhGb3JQdXJlQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cHVyZUNTRSk6
CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmNsb2JiZXJzV29ybGQpOgorICAgICAgICAo
SlNDOjpERkc6OkNTRVBoYXNlOjppbXB1cmVDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBo
YXNlOjpzZXRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmVsaW1p
bmF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAg
ICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybUJsb2NrQ1NFKToKKyAgICAgICAgKENT
RVBoYXNlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjpvcE5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAg
ICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6YXJpdGhOb2RlRmxhZ3NBc1N0cmluZyk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6
bm9kZVVzZWRBc051bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6bm9kZUNhblRydW5jYXRlSW50
ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6bm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bm9kZU1heU92ZXJmbG93KToKKyAgICAgICAgKEpTQzo6REZHOjpu
b2RlQ2FuU3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6ZGVmYXVsdEZsYWdz
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKE5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNldE9wQW5kRGVmYXVsdEZsYWdzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjptdXN0R2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFy
aXRoTm9kZUZsYWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRBcml0aE5vZGVGbGFn
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjptZXJnZUFyaXRoTm9kZUZsYWdzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0ludDMyUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNOdW1iZXJSZXN1
bHQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0pTUmVzdWx0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNCb29sZWFuUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojppc0p1bXApOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpj
aGlsZDEpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNoaWxkMik6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6Y2hpbGQzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpmaXJzdENoaWxk
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpudW1DaGlsZHJlbik6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6aXNOb3ROZWdaZXJvKToKKyAgICAgICAgKFByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6aXNOb3RaZXJvKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZTo6bWVyZ2VEZWZhdWx0QXJpdGhGbGFncyk6CisgICAgICAgIChK
U0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnZvdGUpOgorICAgICAgICAoSlND
OjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdTY29yZUJvYXJkLmg6CisgICAgICAgIChTY29yZUJvYXJkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTY29yZUJvYXJkOjp+U2NvcmVCb2FyZCk6CisgICAgICAgIChKU0M6OkRGRzo6U2Nv
cmVCb2FyZDo6YXNzZXJ0Q2xlYXIpOgorICAgICAgICAoSlNDOjpERkc6OlNjb3JlQm9hcmQ6OnVz
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6dXNlQ2hpbGRyZW4pOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
VmFyaWFibGVBY2Nlc3NEYXRhLmg6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NE
YXRhOjpWYXJpYWJsZUFjY2Vzc0RhdGEpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNj
ZXNzRGF0YTo6ZmxhZ3MpOgorICAgICAgICAoVmFyaWFibGVBY2Nlc3NEYXRhKToKKyAgICAgICAg
KEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6Om1lcmdlRmxhZ3MpOgorICAgICAgICAqIGRm
Zy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZTo6cnVuKToKKworMjAxMi0wMy0xMCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBERkcgbm9kZXMg
c2hvdWxkIGhhdmUgYSBtdXRhYmxlIHNldCBvZiBmbGFncworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzExMDI2MjE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgR290IHJpZCBvZiBOb2RlSWQsIGFuZCBwbGFjZWQgYWxsIG9mIHRoZSBmbGFn
cyB0aGF0IGRpc3Rpbmd1aXNoZWQgTm9kZUlkCisgICAgICAgIGZyb20gTm9kZVR5cGUgaW50byBh
IHNlcGFyYXRlIE5vZGU6OmZsYWdzIGZpZWxkLiBDb21iaW5lZCB3aGF0IHdhcyBwcmV2aW91c2x5
CisgICAgICAgIEFyaXRoTm9kZUZsYWdzIGludG8gTm9kZTo6ZmxhZ3MuCisgICAgICAgIAorICAg
ICAgICBJbiB0aGUgcHJvY2VzcyBvZiBkZWJ1Z2dpbmcsIEkgZm91bmQgdGhhdCB0aGUgZGVidWcg
c3VwcG9ydCBpbiB0aGUgdmlydHVhbAorICAgICAgICByZWdpc3RlciBhbGxvY2F0b3Igd2FzIGxh
Y2tpbmcsIHNvIEkgaW1wcm92ZWQgaXQuIEkgYWxzbyByZWFsaXplZCB0aGF0IHRoZQorICAgICAg
ICB2aXJ0dWFsIHJlZ2lzdGVyIGFsbG9jYXRvciB3YXMgYXNzdW1pbmcgdGhhdCB0aGUgbm9kZXMg
aW4gYSBiYXNpYyBibG9jayB3ZXJlCisgICAgICAgIGNvbnRpZ3VvdXMsIHdoaWNoIGlzIG5vIGxv
bmdlciB0aGUgY2FzZS4gU28gSSBmaXhlZCB0aGF0LiBUaGUgZml4IGFsc28gbWFkZQorICAgICAg
ICBpdCBuYXR1cmFsIHRvIGhhdmUgbW9yZSBleHRyZW1lIGFzc2VydGlvbnMsIHNvIEkgYWRkZWQg
dGhlbS4gSSBzdXNwZWN0IHRoaXMKKyAgICAgICAgd2lsbCBtYWtlIGl0IGVhc2llciB0byBjYXRj
aCB2aXJ0dWFsIHJlZ2lzdGVyIGFsbG9jYXRpb24gYnVncyBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBpcyBtb3N0bHkgcGVyZm9ybWFuY2UgbmV1dHJhbDsgaWYgYW55dGhp
bmcgaXQgbG9va3MgbGlrZSBhIHNsaWdodAorICAgICAgICBzcGVlZC11cC4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBsZWF2ZSBzb21lIHdvcmsgZm9yIGZ1dHVyZSByZWZhY3Rv
cmluZ3M7IGZvciBleGFtcGxlLCBOb2RlOjpvcAorICAgICAgICBpcyB1bmVuY2Fwc3VsYXRlZC4g
VGhpcyB3YXMgYWxyZWFkeSB0aGUgY2FzZSwgdGhvdWdoIG5vdyBpdCBmZWVscyBldmVuIG1vcmUK
KyAgICAgICAgbGlrZSBpdCBzaG91bGQgYmUuIEkgYXZvaWRlZCBkb2luZyB0aGF0IGJlY2F1c2Ug
dGhpcyBwYXRjaCBoYXMgYWxyZWFkeSBncm93bgorICAgICAgICB3YXkgYmlnZ2VyIHRoYW4gSSB3
YW50ZWQuCisgICAgICAgIAorICAgICAgICBGaW5hbGx5LCB0aGlzIHBhdGNoIGNyZWF0ZXMgYSBE
RkdOb2RlLmNwcCBmaWxlIGFuZCBtYWtlcyBhIHNsaWdodCBlZmZvcnQgdG8KKyAgICAgICAgbW92
ZSBzb21lIHVubmVjZXNzYXJpbHkgaW5saW5lIHN0dWZmIG91dCBvZiBERkdOb2RlLmguCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBkZmcvREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVu
Y2VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQ
aGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRUb0dyYXBoKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZVNhZmUpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjptYWtlRGl2U2FmZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpYyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDRkFQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q0ZBUGhhc2U6OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAgICogZGZnL0RGR0NT
RVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6ZW5kSW5kZXhGb3JQdXJl
Q1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cHVyZUNTRSk6CisgICAgICAgIChK
U0M6OkRGRzo6Q1NFUGhhc2U6OmNsb2JiZXJzV29ybGQpOgorICAgICAgICAoSlNDOjpERkc6OkNT
RVBoYXNlOjppbXB1cmVDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpzZXRSZXBs
YWNlbWVudCk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmVsaW1pbmF0ZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKEpTQzo6
REZHOjpDU0VQaGFzZTo6cGVyZm9ybUJsb2NrQ1NFKToKKyAgICAgICAgKENTRVBoYXNlKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpvcE5h
bWUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKERGRyk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAg
IChKU0M6OkRGRzo6YXJpdGhOb2RlRmxhZ3NBc1N0cmluZyk6CisgICAgICAgICogZGZnL0RGR05v
ZGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6bm9kZVVzZWRBc051bWJl
cik6CisgICAgICAgIChKU0M6OkRGRzo6bm9kZUNhblRydW5jYXRlSW50ZWdlcik6CisgICAgICAg
IChKU0M6OkRGRzo6bm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyk6CisgICAgICAgIChKU0M6OkRG
Rzo6bm9kZU1heU92ZXJmbG93KToKKyAgICAgICAgKEpTQzo6REZHOjpub2RlQ2FuU3BlY3VsYXRl
SW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6ZGVmYXVsdEZsYWdzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OnNldE9wQW5kRGVmYXVsdEZsYWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpt
dXN0R2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFyaXRoTm9kZUZsYWdzKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRBcml0aE5vZGVGbGFnKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjptZXJnZUFyaXRoTm9kZUZsYWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0ludDMyUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNOdW1iZXJSZXN1bHQpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0pTUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNCb29sZWFuUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0p1bXApOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjaGlsZDEpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNoaWxkMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2hp
bGQzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpmaXJzdENoaWxkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpudW1DaGlsZHJlbik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6dm90ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR1Njb3JlQm9hcmQuaDoK
KyAgICAgICAgKFNjb3JlQm9hcmQpOgorICAgICAgICAoSlNDOjpERkc6OlNjb3JlQm9hcmQ6On5T
Y29yZUJvYXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpTY29yZUJvYXJkOjphc3NlcnRDbGVhcik6
CisgICAgICAgIChKU0M6OkRGRzo6U2NvcmVCb2FyZDo6dXNlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1
c2VDaGlsZHJlbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZpcnR1YWxSZWdpc3RlckFsbG9jYXRp
b25QaGFzZTo6cnVuKToKKwogMjAxMi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIExMSW50IHNob3VsZCBzdXBwb3J0IEpTVkFMVUU2NApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTEwNDAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2
OCw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR0RyaXZlci5jcHAK
ICAgICBkZmcvREZHR3JhcGguY3BwCiAgICAgZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorICAgIGRm
Zy9ERkdOb2RlLmNwcAogICAgIGRmZy9ERkdPU1JFbnRyeS5jcHAKICAgICBkZmcvREZHT1NSRXhp
dC5jcHAKICAgICBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDExMDQwMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjksNiArMTY5LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlUmVmZXJlbmNlQmxvYi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVVc2UuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24g
MTEwNDAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTk1LDYgKzk1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZGZnL0RGR0RyaXZlci5jcHAg
XAogICAgIGRmZy9ERkdHcmFwaC5jcHAgXAogICAgIGRmZy9ERkdKSVRDb21waWxlci5jcHAgXAor
ICAgIGRmZy9ERkdOb2RlLmNwcCBcCiAgICAgZGZnL0RGR09wZXJhdGlvbnMuY3BwIFwKICAgICBk
ZmcvREZHT1NSRW50cnkuY3BwIFwKICAgICBkZmcvREZHT1NSRXhpdC5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDExMDQwMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBACiAJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAv
KiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYx
NUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdE
IC8qIENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQx
NDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CisJCTBGMUQwODYxMTUwQzVB
ODYwMDc0RDEwOSAvKiBERkdOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMUQwODVGMTUwQzVBODAwMDc0RDEwOSAvKiBERkdOb2RlLmNwcCAq
LzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAw
QURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJu
ZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIx
QzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjFDMjdEMTRCRTcyN0EwMEFE
QzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNjYsOCArMTY3LDYgQEAKIAkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4
IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2
QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9Owog
CQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRC
QTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OwotCQkwRkZG
Qzk1NTE0RUY5MDlBMDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0
OTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHAg
Ki87IH07Ci0JCTBGRkZDOTU2MTRFRjkwOUMwMEM3MjUzMiAvKiBERkdBcml0aE5vZGVGbGFnc0lu
ZmVyZW5jZVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkZGQzk0QTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVu
Y2VQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QjE0RUY5MDk1MDBD
NzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovOyB9OwogCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkZDOTU5MTRF
RjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0RDE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NF
UGhhc2UuY3BwICovOyB9OwpAQCAtNzgzLDYgKzc4Miw3IEBACiAJCTBGMEZDNDU4MTRCRDE1RjEw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMUQwODVGMTUwQzVBODAwMDc0RDEwOSAvKiBE
RkdOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGUu
Y3BwOyBwYXRoID0gZGZnL0RGR05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0
QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4OSw4
ICs4ODksNiBAQAogCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07Ci0JCTBGRkZDOTQ5MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdBcml0aE5vZGVG
bGFnc0luZmVyZW5jZVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0Fy
aXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkZGQzk0QTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVu
Y2VQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcml0aE5vZGVG
bGFnc0luZmVyZW5jZVBoYXNlLmg7IHBhdGggPSBkZmcvREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVu
Y2VQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0QjE0RUY5MDk1
MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHQ0ZBUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R0NGQVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGQVBoYXNl
Lmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NTRVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9E
RkdDU0VQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTA0LDggKzI1
MDIsNyBAQAogCQk4NkVDOURCMzEzMjhERjQ0MDAyQjJBRDcgLyogZGZnICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwRkZGQzk0OTE0RUY5MDk1MDBDNzI1
MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHAgKi8sCi0JCQkJMEZGRkM5
NEExNEVGOTA5NTAwQzcyNTMyIC8qIERGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuaCAq
LywKKwkJCQkwRjFEMDg1RjE1MEM1QTgwMDA3NEQxMDkgLyogREZHTm9kZS5jcHAgKi8sCiAJCQkJ
MEY2MjAxNkQxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovLAogCQkJ
CTBGNjIwMTZFMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmggKi8sCiAJCQkJ
MEY2MjAxNkYxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCAqLywKQEAgLTMw
NzcsNyArMzA3NCw2IEBACiAJCQkJMEY5RkM4QzQxNEUxQjYwMDAwRDUyQUUwIC8qIFBvbHltb3Jw
aGljUHV0QnlJZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1
MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAw
NTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkZGQzk1NjE0RUY5
MDlDMDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3MjUzMiAvKiBERkdQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzA1LDcgKzM3MDEsNiBAQAogCQkJCUMyQjkxNkM1MTRE
QTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY5RkM4RDAxNEU2MTJEODAwRDUyQUUwIC8qIERhdGFMb2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5RkM4QzMxNEUxQjVGRTAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMEZGRkM5NTUxNEVGOTA5QTAwQzcyNTMyIC8qIERGR0FyaXRo
Tm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcx
NEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkZGQzk1QjE0RUY5MEFEMDBDNzI1MzIgLyogREZHUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zNzE1LDYgKzM3MTAsNyBAQAogCQkJCTBGQjU0NjdEMTRGNUNGRDYwMDJDMjk4OSAv
KiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBBNDMzN0JCMTUwNjIxODgwMDk5MUM5NSAvKiBERkdSZWR1bmRhbnRQaGlFbGlt
aW5hdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMUQwODYxMTUwQzVBODYwMDc0
RDEwOSAvKiBERkdOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNl
UGhhc2UuY3BwCShyZXZpc2lvbiAxMTA0MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDIzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdBcml0aE5vZGVGbGFnc0luZmVy
ZW5jZVBoYXNlLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCi0jaW5jbHVkZSAiREZHUGhhc2UuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewotCi1jbGFzcyBBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlIDogcHVibGljIFBoYXNl
IHsKLXB1YmxpYzoKLSAgICBBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlKEdyYXBoJiBncmFw
aCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwgImFyaXRobWV0aWMgbm9kZSBmbGFncyBpbmZlcmVu
Y2UiKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBydW4oKQotICAgIHsKLSNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIG1fY291bnQgPSAwOwot
I2VuZGlmCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICAvLyBVcCBoZXJlIHdlIHN0YXJ0IHdpdGggYSBiYWNrd2Fy
ZCBwYXNzIGJlY2F1c2Ugd2Ugc3VzcGVjdCB0aGF0IHRvIGJlCi0gICAgICAgICAgICAvLyBtb3Jl
IHByb2ZpdGFibGUuCi0gICAgICAgICAgICBwcm9wYWdhdGVCYWNrd2FyZCgpOwotICAgICAgICAg
ICAgaWYgKCFtX2NoYW5nZWQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAgICAgcHJvcGFnYXRlRm9y
d2FyZCgpOwotICAgICAgICB9IHdoaWxlIChtX2NoYW5nZWQpOwotICAgIH0KLSAgICAKLXByaXZh
dGU6Ci0gICAgYm9vbCBpc05vdE5lZ1plcm8oTm9kZUluZGV4IG5vZGVJbmRleCkKLSAgICB7Ci0g
ICAgICAgIGlmICghbV9ncmFwaC5pc051bWJlckNvbnN0YW50KG5vZGVJbmRleCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRvdWJsZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVP
Zk51bWJlckNvbnN0YW50KG5vZGVJbmRleCk7Ci0gICAgICAgIHJldHVybiAhdmFsdWUgJiYgMS4w
IC8gdmFsdWUgPCAwLjA7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNOb3RaZXJvKE5vZGVJbmRl
eCBub2RlSW5kZXgpCi0gICAgewotICAgICAgICBpZiAoIW1fZ3JhcGguaXNOdW1iZXJDb25zdGFu
dChub2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4g
ISFtX2dyYXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2RlSW5kZXgpOwotICAgIH0KLSAgICAK
LSAgICB2b2lkIHByb3BhZ2F0ZShOb2RlJiBub2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFub2Rl
LnNob3VsZEdlbmVyYXRlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAg
ICBOb2RlVHlwZSBvcCA9IG5vZGUub3A7Ci0gICAgICAgIEFyaXRoTm9kZUZsYWdzIGZsYWdzID0g
MDsKLSAgICAgICAgCi0gICAgICAgIGlmIChub2RlLmhhc0FyaXRoTm9kZUZsYWdzKCkpCi0gICAg
ICAgICAgICBmbGFncyA9IG5vZGUucmF3QXJpdGhOb2RlRmxhZ3MoKTsKLSAgICAgICAgCi0jaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nKCIg
ICAlcyBAJXU6ICVzICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCwgYXJpdGhO
b2RlRmxhZ3NBc1N0cmluZyhmbGFncykpOwotI2VuZGlmCi0gICAgICAgIAotICAgICAgICBmbGFn
cyAmPSBOb2RlVXNlZEFzTWFzazsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgY2hhbmdlZCA9IGZh
bHNlOwotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKLSAgICAgICAgY2FzZSBCaXRBbmQ6Ci0gICAgICAgIGNhc2UgQml0T3I6Ci0gICAg
ICAgIGNhc2UgQml0WG9yOgotICAgICAgICBjYXNlIEJpdExTaGlmdDoKLSAgICAgICAgY2FzZSBC
aXRSU2hpZnQ6Ci0gICAgICAgIGNhc2UgQml0VVJTaGlmdDogewotICAgICAgICAgICAgLy8gVGhl
c2Ugb3BlcmF0aW9ucyBhcmUgcGVyZmVjdGx5IGhhcHB5IHdpdGggdHJ1bmNhdGVkIGludGVnZXJz
LAotICAgICAgICAgICAgLy8gc28gd2UgZG9uJ3Qgd2FudCB0byBwcm9wYWdhdGUgYW55dGhpbmcu
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgVUludDMyVG9OdW1iZXI6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcml0aEFkZDoKLSAgICAg
ICAgY2FzZSBWYWx1ZUFkZDogewotICAgICAgICAgICAgaWYgKGlzTm90TmVnWmVybyhub2RlLmNo
aWxkMSgpLmluZGV4KCkpIHx8IGlzTm90TmVnWmVybyhub2RlLmNoaWxkMigpLmluZGV4KCkpKQot
ICAgICAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJvOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0
aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKLSAgICAg
ICAgICAgIGlmIChpc05vdFplcm8obm9kZS5jaGlsZDEoKS5pbmRleCgpKSB8fCBpc05vdFplcm8o
bm9kZS5jaGlsZDIoKS5pbmRleCgpKSkKLSAgICAgICAgICAgICAgICBmbGFncyAmPSB+Tm9kZU5l
ZWRzTmVnWmVybzsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwotICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxh
Z3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAg
ICBjYXNlIEFyaXRoTmVnYXRlOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJpdGhNdWw6Ci0gICAg
ICAgIGNhc2UgQXJpdGhEaXY6IHsKLSAgICAgICAgICAgIC8vIEFzIHNvb24gYXMgYSBtdWx0aXBs
eSBoYXBwZW5zLCB3ZSBjYW4gZWFzaWx5IGVuZCB1cCBpbiB0aGUgcGFydAotICAgICAgICAgICAg
Ly8gb2YgdGhlIGRvdWJsZSBkb21haW4gd2hlcmUgdGhlIHBvaW50IGF0IHdoaWNoIHlvdSBkbyB0
cnVuY2F0aW9uCi0gICAgICAgICAgICAvLyBjYW4gY2hhbmdlIHRoZSBvdXRjb21lLiBTbywgQXJp
dGhNdWwgYWx3YXlzIGNoZWNrcyBmb3Igb3ZlcmZsb3cKLSAgICAgICAgICAgIC8vIG5vIG1hdHRl
ciB3aGF0LCBhbmQgYWx3YXlzIGZvcmNlcyBpdHMgaW5wdXRzIHRvIGNoZWNrIGFzIHdlbGwuCi0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2Rl
TmVlZHNOZWdaZXJvOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBt
X2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFyaXRo
TWluOgotICAgICAgICBjYXNlIEFyaXRoTWF4OiB7Ci0gICAgICAgICAgICBmbGFncyB8PSBOb2Rl
VXNlZEFzTnVtYmVyOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBt
X2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFyaXRo
QWJzOiB7Ci0gICAgICAgICAgICBmbGFncyAmPSB+Tm9kZU5lZWRzTmVnWmVybzsKLSAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdz
KGZsYWdzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBQdXRCeVZhbDogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVy
IHwgTm9kZU5lZWRzTmVnWmVybyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIp
OwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQzKCldLm1lcmdlQXJp
dGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgR2V0QnlWYWw6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlciB8IE5vZGVO
ZWVkc05lZ1plcm8pOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQy
KCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJv
OwotICAgICAgICAgICAgaWYgKG9wICYgTm9kZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwg
bm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCi0gICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW5bY2hpbGRJZHhdXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFub2RlLmNoaWxkMigpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFn
cyhmbGFncyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMygpKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDMoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0jaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nKCIlc1xuIiwgY2hhbmdlZCA/ICJDSEFO
R0VEIiA6ICIiKTsKLSNlbmRpZgotICAgICAgICAKLSAgICAgICAgbV9jaGFuZ2VkIHw9IGNoYW5n
ZWQ7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcHJvcGFnYXRlRm9yd2FyZCgpCi0gICAgewotI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygi
UHJvcGFnYXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGZvcndhcmQgWyV1XVxuIiwgKyttX2Nv
dW50KTsKLSNlbmRpZgotICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxl
SW5kZXggPCBtX2dyYXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKLSAgICAgICAgICAgIHBy
b3BhZ2F0ZShtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQg
cHJvcGFnYXRlQmFja3dhcmQoKQotICAgIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMgbm9k
ZSBmbGFncyBiYWNrd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwotI2VuZGlmCi0gICAgICAgIGZv
ciAobV9jb21waWxlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsgbV9jb21waWxlSW5kZXgtLSA+IDA7
KQotICAgICAgICAgICAgcHJvcGFnYXRlKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdKTsKLSAgICB9
Ci0gICAgCi0gICAgTm9kZUluZGV4IG1fY29tcGlsZUluZGV4OwotICAgIGJvb2wgbV9jaGFuZ2Vk
OwotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICB1bnNpZ25l
ZCBtX2NvdW50OwotI2VuZGlmCi19OwotCi12b2lkIHBlcmZvcm1Bcml0aE5vZGVGbGFnc0luZmVy
ZW5jZShHcmFwaCYgZ3JhcGgpCi17Ci0gICAgcnVuUGhhc2U8QXJpdGhOb2RlRmxhZ3NJbmZlcmVu
Y2VQaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmgJKHJldmlz
aW9uIDExMDQwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhOb2RlRmxh
Z3NJbmZlcmVuY2VQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdBcml0
aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlX2gKLSNkZWZpbmUgREZHQXJpdGhOb2RlRmxhZ3NJbmZl
cmVuY2VQaGFzZV9oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVOQUJMRShE
RkdfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIEdyYXBo
OwotCi0vLyBEZXRlcm1pbmUgd2hpY2ggYXJpdGhtZXRpYyBub2RlcycgcmVzdWx0cyBhcmUgb25s
eSB1c2VkIGluIGEgY29udGV4dCB0aGF0Ci0vLyB0cnVuY2F0ZXMgdG8gaW50ZWdlciBhbnl3YXku
IFRoaXMgaXMgZ3JlYXQgZm9yIG9wdGltaXppbmcgYXdheSBjaGVja3MgZm9yCi0vLyBvdmVyZmxv
dyBhbmQgbmVnYXRpdmUgemVyby4gTkIgdGhlIHdheSB0aGlzIHBoYXNlIGludGVncmF0ZXMgaW50
byB0aGUgcmVzdAotLy8gb2YgdGhlIERGRyBtYWtlcyBpdCBub24tb3B0aW9uYWwuIEluc3RlYWQg
b2YgcHJvdmluZyB0aGF0IGEgbm9kZSBpcyBvbmx5Ci0vLyB1c2VkIGluIGludGVnZXIgY29udGV4
dCwgaXQgYWN0dWFsbHkgZG9lcyB0aGUgb3Bwb3NpdGU6IGZpbmRzIG5vZGVzIHRoYXQKLS8vIGFy
ZSB1c2VkIGluIG5vbi1pbnRlZ2VyIGNvbnRleHRzLiBIZW5jZSBmYWlsaW5nIHRvIHJ1biB0aGlz
IHBoYXNlIHdpbGwgbWFrZQotLy8gdGhlIGNvbXBpbGVyIGFzc3VtZSB0aGF0IGFsbCBub2RlcyBh
cmUganVzdCB1c2VkIGFzIGludGVnZXJzIQotCi12b2lkIHBlcmZvcm1Bcml0aE5vZGVGbGFnc0lu
ZmVyZW5jZShHcmFwaCYpOwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHOjpQaGFzZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdBcml0aE5vZGVGbGFnc0lu
ZmVyZW5jZVBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMTA0MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcyLDcg
KzU3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChvcCAhPSBQaGkpOwogICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kKHJlc3VsdEluZGV4KTsKIAotICAgICAgICBpZiAob3AgJiBO
b2RlTXVzdEdlbmVyYXRlKQorICAgICAgICBpZiAoZGVmYXVsdEZsYWdzKG9wKSAmIE5vZGVNdXN0
R2VuZXJhdGUpCiAgICAgICAgICAgICBtX2dyYXBoLnJlZihyZXN1bHRJbmRleCk7CiAgICAgICAg
IHJldHVybiByZXN1bHRJbmRleDsKICAgICB9CkBAIC01ODUsNyArNTg1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZChyZXN1bHRJ
bmRleCk7CiAKLSAgICAgICAgaWYgKG9wICYgTm9kZU11c3RHZW5lcmF0ZSkKKyAgICAgICAgaWYg
KGRlZmF1bHRGbGFncyhvcCkgJiBOb2RlTXVzdEdlbmVyYXRlKQogICAgICAgICAgICAgbV9ncmFw
aC5yZWYocmVzdWx0SW5kZXgpOwogICAgICAgICByZXR1cm4gcmVzdWx0SW5kZXg7CiAgICAgfQpA
QCAtNTk2LDcgKzU5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChvcCAhPSBQaGkpOwog
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kKHJlc3VsdEluZGV4KTsKIAotICAgICAgICBp
ZiAob3AgJiBOb2RlTXVzdEdlbmVyYXRlKQorICAgICAgICBpZiAoZGVmYXVsdEZsYWdzKG9wKSAm
IE5vZGVNdXN0R2VuZXJhdGUpCiAgICAgICAgICAgICBtX2dyYXBoLnJlZihyZXN1bHRJbmRleCk7
CiAgICAgICAgIHJldHVybiByZXN1bHRJbmRleDsKICAgICB9CkBAIC02MTAsNyArNjEwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fbnVtUGFzc2VkVmFyQXJncyA9IDA7CiAgICAg
ICAgIAotICAgICAgICBpZiAob3AgJiBOb2RlTXVzdEdlbmVyYXRlKQorICAgICAgICBpZiAoZGVm
YXVsdEZsYWdzKG9wKSAmIE5vZGVNdXN0R2VuZXJhdGUpCiAgICAgICAgICAgICBtX2dyYXBoLnJl
ZihyZXN1bHRJbmRleCk7CiAgICAgICAgIHJldHVybiByZXN1bHRJbmRleDsKICAgICB9CkBAIC02
OTksNyArNjk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAg
ICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygi
TWFraW5nICVzIEAldSBzYWZlIGF0IGJjIyV1IGJlY2F1c2Ugc2xvdy1jYXNlIGNvdW50ZXIgaXMg
YXQgJXUgYW5kIGV4aXQgcHJvZmlsZXMgc2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9wTmFtZShtX2dy
YXBoW25vZGVJbmRleF0ub3ApLCBub2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyksIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVy
bykpOworICAgICAgICBkYXRhTG9nKCJNYWtpbmcgJXMgQCV1IHNhZmUgYXQgYmMjJXUgYmVjYXVz
ZSBzbG93LWNhc2UgY291bnRlciBpcyBhdCAldSBhbmQgZXhpdCBwcm9maWxlcyBzYXkgJWQsICVk
XG4iLCBHcmFwaDo6b3BOYW1lKHN0YXRpY19jYXN0PE5vZGVUeXBlPihtX2dyYXBoW25vZGVJbmRl
eF0ub3ApKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJ
bmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKTsKICNlbmRp
ZgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX2dyYXBoW25vZGVJbmRleF0ub3ApIHsKQEAg
LTc1Miw3ICs3NTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsK
ICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9n
KCJNYWtpbmcgJXMgQCV1IHNhZmUgYXQgYmMjJXUgYmVjYXVzZSBzcGVjaWFsIGZhc3QtY2FzZSBj
b3VudGVyIGlzIGF0ICV1IGFuZCBleGl0IHByb2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpv
cE5hbWUobV9ncmFwaFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93
KSwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgTmVnYXRpdmVaZXJvKSk7CisgICAgICAgIGRhdGFMb2coIk1ha2luZyAlcyBAJXUgc2Fm
ZSBhdCBiYyMldSBiZWNhdXNlIHNwZWNpYWwgZmFzdC1jYXNlIGNvdW50ZXIgaXMgYXQgJXUgYW5k
IGV4aXQgcHJvZmlsZXMgc2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9wTmFtZShzdGF0aWNfY2FzdDxO
b2RlVHlwZT4obV9ncmFwaFtub2RlSW5kZXhdLm9wKSksIG5vZGVJbmRleCwgbV9jdXJyZW50SW5k
ZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+c3BlY2lhbEZhc3RDYXNlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVy
ZmxvdyksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICAvLyBG
SVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUgZ3JhbnVsYXIuIFRo
ZSBERkcgY2VydGFpbmx5IGNhbgpAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlTWluTWF4KGJvb2wgdQogICAgIH0KICAgICAKICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPT0gMykgeyAvLyBNYXRoLm1pbih4LCB5KQotICAgICAgICBzZXQo
cmVzdWx0T3BlcmFuZCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBnZXQo
cmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgxKSksIGdldChyZWdpc3Rlck9mZnNl
dCArIGFyZ3VtZW50VG9PcGVyYW5kKDIpKSkpOworICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwg
YWRkVG9HcmFwaChvcCwgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMSkp
LCBnZXQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgyKSkpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtMTI5NSw3ICsxMjk1LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKGJvbwogICAgICAgICBpZiAoIU1hY3JvQXNzZW1i
bGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYWRkVG9HcmFwaChBcml0aEFicywg
T3BJbmZvKE5vZGVVc2VCb3R0b20pLCBnZXQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3Bl
cmFuZCgxKSkpOworICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYWRkVG9HcmFwaChBcml0
aEFicywgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMSkpKTsKICAgICAg
ICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIE92ZXJmbG93KSkKICAgICAgICAgICAgIG1fZ3JhcGhbbm9kZUluZGV4XS5tZXJn
ZUFyaXRoTm9kZUZsYWdzKE5vZGVNYXlPdmVyZmxvdyk7CiAgICAgICAgIHNldChyZXN1bHRPcGVy
YW5kLCBub2RlSW5kZXgpOwpAQCAtMTU2MiwxMSArMTU2MiwxMSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlT2ZJbnQz
MkNvbnN0YW50KG9wMikgJiAweDFmKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBhZGRU
b0dyYXBoKEJpdFVSU2hpZnQsIG9wMSwgb3AyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoVUludDMyVG9OdW1i
ZXIsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwgb3AxKSk7CisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoVUludDMyVG9OdW1iZXIsIG9wMSkpOwogICAgICAg
ICAgICAgfSAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ2Fubm90IG9wdGltaXplIGF0IHRo
aXMgc3RhZ2U7IHNoaWZ0ICYgcG90ZW50aWFsbHkgcmVib3ggYXMgYSBkb3VibGUuCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChCaXRVUlNoaWZ0LCBvcDEsIG9wMik7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVNhZmUoYWRkVG9HcmFwaChVSW50MzJUb051bWJlciwg
T3BJbmZvKE5vZGVVc2VCb3R0b20pLCByZXN1bHQpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBtYWtlU2FmZShhZGRUb0dyYXBoKFVJbnQzMlRvTnVtYmVyLCByZXN1bHQpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBy
ZXN1bHQpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdXJzaGlmdCk7CkBAIC0xNTc3LDcg
KzE1NzcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgIGNhc2Ugb3BfcHJlX2luYzogewogICAgICAgICAgICAgdW5zaWduZWQgc3JjRHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcCA9
IGdldChzcmNEc3QpOwotICAgICAgICAgICAgc2V0KHNyY0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFw
aChBcml0aEFkZCwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcCwgb25lKCkpKSk7CisgICAgICAg
ICAgICBzZXQoc3JjRHN0LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBvcCwgb25lKCkp
KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wcmVfaW5jKTsKICAgICAgICAgfQogCkBA
IC0xNTg3LDE0ICsxNTg3LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gc3JjRHN0KTsgLy8gUmVxdWlyZWQg
Zm9yIGFzc3VtcHRpb25zIHdlIG1ha2UgZHVyaW5nIE9TUi4KICAgICAgICAgICAgIE5vZGVJbmRl
eCBvcCA9IGdldChzcmNEc3QpOwogICAgICAgICAgICAgc2V0KHJlc3VsdCwgb3ApOwotICAgICAg
ICAgICAgc2V0KHNyY0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgT3BJbmZvKE5v
ZGVVc2VCb3R0b20pLCBvcCwgb25lKCkpKSk7CisgICAgICAgICAgICBzZXQoc3JjRHN0LCBtYWtl
U2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBvcCwgb25lKCkpKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wb3N0X2luYyk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3ByZV9k
ZWM6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AgPSBnZXQoc3JjRHN0KTsKLSAg
ICAgICAgICAgIHNldChzcmNEc3QsIG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhTdWIsIE9wSW5m
byhOb2RlVXNlQm90dG9tKSwgb3AsIG9uZSgpKSkpOworICAgICAgICAgICAgc2V0KHNyY0RzdCwg
bWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aFN1Yiwgb3AsIG9uZSgpKSkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHJlX2RlYyk7CiAgICAgICAgIH0KIApAQCAtMTYwMyw3ICsxNjAzLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
dW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAg
ICAgICAgIE5vZGVJbmRleCBvcCA9IGdldChzcmNEc3QpOwogICAgICAgICAgICAgc2V0KHJlc3Vs
dCwgb3ApOwotICAgICAgICAgICAgc2V0KHNyY0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0
aFN1YiwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcCwgb25lKCkpKSk7CisgICAgICAgICAgICBz
ZXQoc3JjRHN0LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoU3ViLCBvcCwgb25lKCkpKSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9wb3N0X2RlYyk7CiAgICAgICAgIH0KIApAQCAtMTYx
MywyMiArMTYxMywyMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoW29wMV0uaGFzTnVt
YmVyUmVzdWx0KCkgJiYgbV9ncmFwaFtvcDJdLmhhc051bWJlclJlc3VsdCgpKQotICAgICAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtYWtlU2FmZShhZGRU
b0dyYXBoKEFyaXRoQWRkLCBPcEluZm8oTm9kZVVzZUJvdHRvbSksIG9wMSwgb3AyKSkpOworICAg
ICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtYWtlU2Fm
ZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBvcDEsIG9wMikpKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNh
ZmUoYWRkVG9HcmFwaChWYWx1ZUFkZCwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcDEsIG9wMikp
KTsKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
bWFrZVNhZmUoYWRkVG9HcmFwaChWYWx1ZUFkZCwgb3AxLCBvcDIpKSk7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9hZGQpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9zdWI6IHsK
ICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhTdWIsIE9wSW5mbyhOb2RlVXNl
Qm90dG9tKSwgb3AxLCBvcDIpKSk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aFN1Yiwgb3AxLCBvcDIpKSk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9zdWIpOwogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBvcF9uZWdhdGU6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICBzZXQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aE5lZ2F0ZSwgT3BJ
bmZvKE5vZGVVc2VCb3R0b20pLCBvcDEpKSk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aE5lZ2F0ZSwgb3Ax
KSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmVnYXRlKTsKICAgICAgICAgfQogCkBA
IC0xNjM2LDIxICsxNjM2LDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgIC8vIE11bHRpcGx5IHJlcXVpcmVzIHRoYXQgdGhlIGlucHV0cyBh
cmUgbm90IHRydW5jYXRlZCwgdW5mb3J0dW5hdGVseS4KICAgICAgICAgICAgIE5vZGVJbmRleCBv
cDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBO
b2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwotICAg
ICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIG1ha2VTYWZlKGFk
ZFRvR3JhcGgoQXJpdGhNdWwsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwgb3AxLCBvcDIpKSk7Cisg
ICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNhZmUo
YWRkVG9HcmFwaChBcml0aE11bCwgb3AxLCBvcDIpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9tdWwpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9tb2Q6IHsKICAgICAgICAg
ICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpOwotICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQsIG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhNb2QsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwg
b3AxLCBvcDIpKSk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aE1vZCwgb3AxLCBvcDIpKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9tb2QpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9k
aXY6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIG1ha2VEaXZTYWZlKGFkZFRvR3JhcGgoQXJpdGhEaXYsIE9wSW5m
byhOb2RlVXNlQm90dG9tKSwgb3AxLCBvcDIpKSk7CisgICAgICAgICAgICBzZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZURpdlNhZmUoYWRkVG9HcmFwaChBcml0aERpdiwg
b3AxLCBvcDIpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kaXYpOwogICAgICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZp
c2lvbiAxMTA0MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
aWYgKCFtX2dyYXBoW25vZGVJbmRleF0uc2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUobV9ncmFw
aFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShzdGF0aWNfY2FzdDxOb2RlVHlwZT4obV9ncmFwaFtu
b2RlSW5kZXhdLm9wKSksIG5vZGVJbmRleCk7CiAgICAgICAgICAgICBtX3N0YXRlLmR1bXAoV1RG
OjpkYXRhRmlsZSgpKTsKICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMTA0
MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHVuc2lnbmVkIGVu
ZEluZGV4Rm9yUHVyZUNTRSgpCiAgICAgewotICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2xh
c3RTZWVuW21fZ3JhcGhbbV9jb21waWxlSW5kZXhdLm9wICYgTm9kZUlkTWFza107CisgICAgICAg
IHVuc2lnbmVkIHJlc3VsdCA9IG1fbGFzdFNlZW5bbV9ncmFwaFttX2NvbXBpbGVJbmRleF0ub3Bd
OwogICAgICAgICBpZiAocmVzdWx0ID09IFVJTlRfTUFYKQogICAgICAgICAgICAgcmVzdWx0ID0g
MDsKICAgICAgICAgZWxzZQpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
aWYgKG5vZGUub3AgIT0gb3RoZXJOb2RlLm9wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9kZS5hcml0aE5vZGVGbGFnc0ZvckNvbXBh
cmUoKSAhPSBvdGhlck5vZGUuYXJpdGhOb2RlRmxhZ3NGb3JDb21wYXJlKCkpCisgICAgICAgICAg
ICBpZiAobm9kZS5hcml0aE5vZGVGbGFncygpICE9IG90aGVyTm9kZS5hcml0aE5vZGVGbGFncygp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBO
b2RlSW5kZXggb3RoZXJDaGlsZCA9IGNhbm9uaWNhbGl6ZShvdGhlck5vZGUuY2hpbGQxKCkpOwpA
QCAtMTQ3LDkgKzE0Nyw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjbG9iYmVyc1dvcmxkKE5vZGVJ
bmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2Rl
SW5kZXhdOwotICAgICAgICBpZiAobm9kZS5vcCAmIE5vZGVDbG9iYmVyc1dvcmxkKQorICAgICAg
ICBpZiAobm9kZS5mbGFncyAmIE5vZGVDbG9iYmVyc1dvcmxkKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIGlmICghKG5vZGUub3AgJiBOb2RlTWlnaHRDbG9iYmVyKSkKKyAgICAg
ICAgaWYgKCEobm9kZS5mbGFncyAmIE5vZGVNaWdodENsb2JiZXIpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBzd2l0Y2ggKG5vZGUub3ApIHsKICAgICAgICAgY2FzZSBWYWx1
ZUFkZDoKQEAgLTE4Miw3ICsxODIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBOb2RlJiBv
dGhlck5vZGUgPSBtX2dyYXBoW2luZGV4XTsKICAgICAgICAgICAgIGlmIChub2RlLm9wID09IG90
aGVyTm9kZS5vcAotICAgICAgICAgICAgICAgICYmIG5vZGUuYXJpdGhOb2RlRmxhZ3NGb3JDb21w
YXJlKCkgPT0gb3RoZXJOb2RlLmFyaXRoTm9kZUZsYWdzRm9yQ29tcGFyZSgpKSB7CisgICAgICAg
ICAgICAgICAgJiYgbm9kZS5hcml0aE5vZGVGbGFncygpID09IG90aGVyTm9kZS5hcml0aE5vZGVG
bGFncygpKSB7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IG90aGVyQ2hpbGQgPSBjYW5vbmlj
YWxpemUob3RoZXJOb2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBpZiAob3RoZXJDaGls
ZCA9PSBOb05vZGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKQEAgLTUwNiw3
ICs1MDYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBOb2RlJiBub2Rl
ID0gbV9ncmFwaFttX2NvbXBpbGVJbmRleF07Ci0gICAgICAgIG5vZGUub3AgPSBQaGFudG9tOwor
ICAgICAgICBub2RlLnNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b20pOwogICAgICAgICBub2Rl
LnNldFJlZkNvdW50KDEpOwogICAgICAgICAKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSB3
aWxsIGVsaW1pbmF0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGlzIG5vZGUuCkBAIC01MjIsMTQgKzUy
MiwxNCBAQCBwcml2YXRlOgogICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFttX2NvbXBpbGVJ
bmRleF07CiAgICAgICAgIEFTU0VSVChub2RlLnJlZkNvdW50KCkgPT0gMSk7CiAgICAgICAgIEFT
U0VSVChub2RlLm11c3RHZW5lcmF0ZSgpKTsKLSAgICAgICAgbm9kZS5vcCA9IFBoYW50b207Cisg
ICAgICAgIG5vZGUuc2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRvbSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgcGVyZm9ybU5vZGVDU0UoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIGJvb2wg
c2hvdWxkR2VuZXJhdGUgPSBub2RlLnNob3VsZEdlbmVyYXRlKCk7CiAKLSAgICAgICAgaWYgKG5v
ZGUub3AgJiBOb2RlSGFzVmFyQXJncykgeworICAgICAgICBpZiAobm9kZS5mbGFncyAmIE5vZGVI
YXNWYXJBcmdzKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5m
aXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxk
cmVuKCk7IGNoaWxkSWR4KyspCiAgICAgICAgICAgICAgICAgcGVyZm9ybVN1YnN0aXR1dGlvbiht
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdLCBzaG91bGRHZW5lcmF0ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC01NDIsNyArNTQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQotICAgICAgICBkYXRhTG9nKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtt
X2NvbXBpbGVJbmRleF0ub3ApLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGRhdGFMb2coIiAg
ICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShzdGF0aWNfY2FzdDxOb2RlVHlwZT4obV9ncmFwaFtt
X2NvbXBpbGVJbmRleF0ub3ApKSwgbV9jb21waWxlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgIAog
ICAgICAgICAvLyBOT1RFOiB0aGVyZSBhcmUgc29tZSBub2RlcyB0aGF0IHdlIGRlbGliZXJhdGVs
eSBkb24ndCBDU0UgZXZlbiB0aG91Z2ggd2UKQEAgLTY2OSw3ICs2NjksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fbGFzdFNl
ZW5bbm9kZS5vcCAmIE5vZGVJZE1hc2tdID0gbV9pbmRleEluQmxvY2s7CisgICAgICAgIG1fbGFz
dFNlZW5bbm9kZS5vcF0gPSBtX2luZGV4SW5CbG9jazsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYKQEAgLTY3
OCw3ICs2NzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybUJsb2NrQ1NFKEJhc2ljQmxv
Y2smIGJsb2NrKQogICAgIHsKICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSAmYmxvY2s7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBMYXN0Tm9kZUlkOyArK2kpCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBMYXN0Tm9kZVR5cGU7ICsraSkKICAgICAgICAgICAgIG1f
bGFzdFNlZW5baV0gPSBVSU5UX01BWDsKIAogICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0g
MDsgbV9pbmRleEluQmxvY2sgPCBibG9jay5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKQEAg
LTY5MSw3ICs2OTEsNyBAQCBwcml2YXRlOgogICAgIE5vZGVJbmRleCBtX2NvbXBpbGVJbmRleDsK
ICAgICB1bnNpZ25lZCBtX2luZGV4SW5CbG9jazsKICAgICBWZWN0b3I8Tm9kZUluZGV4LCAxNj4g
bV9yZXBsYWNlbWVudHM7Ci0gICAgRml4ZWRBcnJheTx1bnNpZ25lZCwgTGFzdE5vZGVJZD4gbV9s
YXN0U2VlbjsKKyAgICBGaXhlZEFycmF5PHVuc2lnbmVkLCBMYXN0Tm9kZVR5cGU+IG1fbGFzdFNl
ZW47CiB9OwogCiB2b2lkIHBlcmZvcm1DU0UoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTEwNDAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR0FyaXRoTm9k
ZUZsYWdzSW5mZXJlbmNlUGhhc2UuaCIKICNpbmNsdWRlICJERkdCeXRlQ29kZVBhcnNlci5oIgog
I2luY2x1ZGUgIkRGR0NGQVBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ1NFUGhhc2UuaCIKQEAgLTYw
LDcgKzU5LDYgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTQogICAg
ICAgICBkZmcucHJlZGljdEFyZ3VtZW50VHlwZXMoKTsKIAogICAgIHBlcmZvcm1SZWR1bmRhbnRQ
aGlFbGltaW5hdGlvbihkZmcpOwotICAgIHBlcmZvcm1Bcml0aE5vZGVGbGFnc0luZmVyZW5jZShk
ZmcpOwogICAgIHBlcmZvcm1QcmVkaWN0aW9uUHJvcGFnYXRpb24oZGZnKTsKICAgICBwZXJmb3Jt
Q1NFKGRmZyk7CiAgICAgcGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24oZGZnKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMTA0MDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0gewog
CiBjb25zdCBjaGFyICpHcmFwaDo6b3BOYW1lKE5vZGVUeXBlIG9wKQogewotICAgIHJldHVybiBk
ZmdPcE5hbWVzW29wICYgTm9kZUlkTWFza107CisgICAgcmV0dXJuIGRmZ09wTmFtZXNbb3BdOwog
fQogCiBjb25zdCBjaGFyKiBHcmFwaDo6bmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhKQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQg
R3JhcGg6OmR1bXBDb2RlT3JpZ2luKE5vZGVJbmRleCBub2QKIHZvaWQgR3JhcGg6OmR1bXAoTm9k
ZUluZGV4IG5vZGVJbmRleCkKIHsKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKLSAg
ICBOb2RlVHlwZSBvcCA9IG5vZGUub3A7CisgICAgTm9kZVR5cGUgb3AgPSBzdGF0aWNfY2FzdDxO
b2RlVHlwZT4obm9kZS5vcCk7CiAKICAgICB1bnNpZ25lZCByZWZDb3VudCA9IG5vZGUucmVmQ291
bnQoKTsKICAgICBib29sIHNraXBwZWQgPSAhcmVmQ291bnQ7CkBAIC0xNTcsNyArMTU3LDcgQEAg
dm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICBkYXRhTG9nKCIt
Iik7CiAgICAgZGF0YUxvZygiPlx0JXMoIiwgb3BOYW1lKG9wKSk7CiAgICAgYm9vbCBoYXNQcmlu
dGVkID0gZmFsc2U7Ci0gICAgaWYgKG9wICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICBpZiAobm9k
ZS5mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJ
ZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5v
ZGUubnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykgewogICAgICAgICAgICAgaWYgKGhhc1ByaW50
ZWQpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiLCAiKTsKQEAgLTE3NSw4ICsxNzUsOCBAQCB2
b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIGhhc1ByaW50ZWQg
PSAhIW5vZGUuY2hpbGQxKCk7CiAgICAgfQogCi0gICAgaWYgKG5vZGUuaGFzQXJpdGhOb2RlRmxh
Z3MoKSkgewotICAgICAgICBkYXRhTG9nKCIlcyVzIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
YXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhub2RlLnJhd0FyaXRoTm9kZUZsYWdzKCkpKTsKKyAgICBp
ZiAobm9kZS5hcml0aE5vZGVGbGFncygpKSB7CisgICAgICAgIGRhdGFMb2coIiVzJXMiLCBoYXNQ
cmludGVkID8gIiwgIiA6ICIiLCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKG5vZGUuYXJpdGhOb2Rl
RmxhZ3MoKSkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKG5v
ZGUuaGFzVmFyTnVtYmVyKCkpIHsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIEdyYXBoOjpkdW1w
KCkKIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYmUgaXRlcmF0aXZlLCBub3QgcmVjdXJzaXZl
LgogI2RlZmluZSBET19UT19DSElMRFJFTihub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgICAgICBOb2RlJiBfbm9kZSA9IChub2RlKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoX25vZGUu
b3AgJiBOb2RlSGFzVmFyQXJncykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBpZiAoX25vZGUuZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBfY2hpbGRJZHggPSBf
bm9kZS5maXJzdENoaWxkKCk7ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICBfY2hp
bGRJZHggPCBfbm9kZS5maXJzdENoaWxkKCkgKyBfbm9kZS5udW1DaGlsZHJlbigpOyAgXAogICAg
ICAgICAgICAgICAgICBfY2hpbGRJZHgrKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHTm9kZS5o
IgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKKworY29uc3QgY2hhciogYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhOb2RlRmxhZ3MgZmxhZ3Mp
Cit7CisgICAgZmxhZ3MgJj0gTm9kZUFyaXRoTWFzazsKKyAgICAKKyAgICBpZiAoIWZsYWdzKQor
ICAgICAgICByZXR1cm4gIjxlbXB0eT4iOworCisgICAgc3RhdGljIGNvbnN0IGludCBzaXplID0g
NjQ7CisgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CisgICAgQm91bmRzQ2hlY2tl
ZFBvaW50ZXI8Y2hhcj4gcHRyKGRlc2NyaXB0aW9uLCBzaXplKTsKKyAgICAKKyAgICBib29sIGhh
c1ByaW50ZWQgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoZmxhZ3MgJiBOb2RlVXNlZEFzTnVtYmVy
KSB7CisgICAgICAgIHB0ci5zdHJjYXQoIlVzZWRBc051bSIpOworICAgICAgICBoYXNQcmludGVk
ID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKGZsYWdzICYgTm9kZU5lZWRzTmVnWmVybykg
eworICAgICAgICBpZiAoaGFzUHJpbnRlZCkKKyAgICAgICAgICAgIHB0ci5zdHJjYXQoInwiKTsK
KyAgICAgICAgcHRyLnN0cmNhdCgiTmVlZHNOZWdaZXJvIik7CisgICAgICAgIGhhc1ByaW50ZWQg
PSB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoZmxhZ3MgJiBOb2RlTWF5T3ZlcmZsb3cpIHsK
KyAgICAgICAgaWYgKGhhc1ByaW50ZWQpCisgICAgICAgICAgICBwdHIuc3RyY2F0KCJ8Iik7Cisg
ICAgICAgIHB0ci5zdHJjYXQoIk1heU92ZXJmbG93Iik7CisgICAgICAgIGhhc1ByaW50ZWQgPSB0
cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoZmxhZ3MgJiBOb2RlTWF5TmVnWmVybykgeworICAg
ICAgICBpZiAoaGFzUHJpbnRlZCkKKyAgICAgICAgICAgIHB0ci5zdHJjYXQoInwiKTsKKyAgICAg
ICAgcHRyLnN0cmNhdCgiTWF5TmVnWmVybyIpOworICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsK
KyAgICB9CisgICAgCisgICAgKnB0cisrID0gMDsKKyAgICAKKyAgICByZXR1cm4gZGVzY3JpcHRp
b247Cit9CisKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxMTA0MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTcsMzYgKzU3LDUwIEBAIHN0cnVjdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSB7
CiAgICAgfQogfTsKIAotdHlwZWRlZiB1bnNpZ25lZCBBcml0aE5vZGVGbGFnczsKLSNkZWZpbmUg
Tm9kZVVzZUJvdHRvbSAgICAgIDB4MDAKLSNkZWZpbmUgTm9kZVVzZWRBc051bWJlciAgIDB4MDEK
LSNkZWZpbmUgTm9kZU5lZWRzTmVnWmVybyAgIDB4MDIKLSNkZWZpbmUgTm9kZVVzZWRBc01hc2sg
ICAgIDB4MDMKLSNkZWZpbmUgTm9kZU1heU92ZXJmbG93ICAgIDB4MDQKLSNkZWZpbmUgTm9kZU1h
eU5lZ1plcm8gICAgIDB4MDgKLSNkZWZpbmUgTm9kZUJlaGF2aW9yTWFzayAgIDB4MGMKKy8vIEVu
dHJpZXMgaW4gdGhlIE5vZGVUeXBlIGVudW0gKGJlbG93KSBhcmUgY29tcG9zZWQgb2YgYW4gaWQs
IGEgcmVzdWx0IHR5cGUgKHBvc3NpYmx5IG5vbmUpCisvLyBhbmQgc29tZSBhZGRpdGlvbmFsIGlu
Zm9ybWF0aXZlIGZsYWdzIChtdXN0IGdlbmVyYXRlLCBpcyBjb25zdGFudCwgZXRjKS4KKyNkZWZp
bmUgTm9kZVJlc3VsdE1hc2sgICAgICAgMHhGCisjZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAgICAg
IDB4MQorI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAweDIKKyNkZWZpbmUgTm9kZVJlc3Vs
dEludDMyICAgICAgMHgzCisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgIDB4NAorI2RlZmlu
ZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAweDUKKyNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAw
eDEwIC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0
cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCisjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAg
MHgyMAorI2RlZmluZSBOb2RlQ2xvYmJlcnNXb3JsZCAgIDB4NDAKKyNkZWZpbmUgTm9kZU1pZ2h0
Q2xvYmJlciAgICAweDgwCisjZGVmaW5lIE5vZGVBcml0aE1hc2sgICAgICAweEYwMAorI2RlZmlu
ZSBOb2RlVXNlQm90dG9tICAgICAgMHgwMDAKKyNkZWZpbmUgTm9kZVVzZWRBc051bWJlciAgIDB4
MTAwCisjZGVmaW5lIE5vZGVOZWVkc05lZ1plcm8gICAweDIwMAorI2RlZmluZSBOb2RlVXNlZEFz
TWFzayAgICAgMHgzMDAKKyNkZWZpbmUgTm9kZU1heU92ZXJmbG93ICAgIDB4NDAwCisjZGVmaW5l
IE5vZGVNYXlOZWdaZXJvICAgICAweDgwMAorI2RlZmluZSBOb2RlQmVoYXZpb3JNYXNrICAgMHhj
MDAKKwordHlwZWRlZiB1aW50MTZfdCBOb2RlRmxhZ3M7CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBu
b2RlVXNlZEFzTnVtYmVyKEFyaXRoTm9kZUZsYWdzIGZsYWdzKQorc3RhdGljIGlubGluZSBib29s
IG5vZGVVc2VkQXNOdW1iZXIoTm9kZUZsYWdzIGZsYWdzKQogewogICAgIHJldHVybiAhIShmbGFn
cyAmIE5vZGVVc2VkQXNOdW1iZXIpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhblRy
dW5jYXRlSW50ZWdlcihBcml0aE5vZGVGbGFncyBmbGFncykKK3N0YXRpYyBpbmxpbmUgYm9vbCBu
b2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKE5vZGVGbGFncyBmbGFncykKIHsKICAgICByZXR1cm4gIW5v
ZGVVc2VkQXNOdW1iZXIoZmxhZ3MpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkln
bm9yZU5lZ2F0aXZlWmVybyhBcml0aE5vZGVGbGFncyBmbGFncykKK3N0YXRpYyBpbmxpbmUgYm9v
bCBub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKE5vZGVGbGFncyBmbGFncykKIHsKICAgICByZXR1
cm4gIShmbGFncyAmIE5vZGVOZWVkc05lZ1plcm8pOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wg
bm9kZU1heU92ZXJmbG93KEFyaXRoTm9kZUZsYWdzIGZsYWdzKQorc3RhdGljIGlubGluZSBib29s
IG5vZGVNYXlPdmVyZmxvdyhOb2RlRmxhZ3MgZmxhZ3MpCiB7CiAgICAgcmV0dXJuICEhKGZsYWdz
ICYgTm9kZU1heU92ZXJmbG93KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIG5vZGVDYW5TcGVj
dWxhdGVJbnRlZ2VyKEFyaXRoTm9kZUZsYWdzIGZsYWdzKQorc3RhdGljIGlubGluZSBib29sIG5v
ZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKE5vZGVGbGFncyBmbGFncykKIHsKICAgICBpZiAoZmxhZ3Mg
JiBOb2RlTWF5T3ZlcmZsb3cpCiAgICAgICAgIHJldHVybiAhbm9kZVVzZWRBc051bWJlcihmbGFn
cyk7CkBAIC05Nyw2NyArMTExLDcgQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVDYW5TcGVjdWxh
dGVJbnRlZwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIq
IGFyaXRoTm9kZUZsYWdzQXNTdHJpbmcoQXJpdGhOb2RlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgaWYg
KCFmbGFncykKLSAgICAgICAgcmV0dXJuICI8ZW1wdHk+IjsKLQotICAgIHN0YXRpYyBjb25zdCBp
bnQgc2l6ZSA9IDY0OwotICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwotICAgIEJv
dW5kc0NoZWNrZWRQb2ludGVyPGNoYXI+IHB0cihkZXNjcmlwdGlvbiwgc2l6ZSk7Ci0gICAgCi0g
ICAgYm9vbCBoYXNQcmludGVkID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKGZsYWdzICYgTm9kZVVz
ZWRBc051bWJlcikgewotICAgICAgICBwdHIuc3RyY2F0KCJVc2VkQXNOdW0iKTsKLSAgICAgICAg
aGFzUHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIGlmIChmbGFncyAmIE5vZGVOZWVk
c05lZ1plcm8pIHsKLSAgICAgICAgaWYgKGhhc1ByaW50ZWQpCi0gICAgICAgICAgICBwdHIuc3Ry
Y2F0KCJ8Iik7Ci0gICAgICAgIHB0ci5zdHJjYXQoIk5lZWRzTmVnWmVybyIpOwotICAgICAgICBo
YXNQcmludGVkID0gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGZsYWdzICYgTm9kZU1heU92
ZXJmbG93KSB7Ci0gICAgICAgIGlmIChoYXNQcmludGVkKQotICAgICAgICAgICAgcHRyLnN0cmNh
dCgifCIpOwotICAgICAgICBwdHIuc3RyY2F0KCJNYXlPdmVyZmxvdyIpOwotICAgICAgICBoYXNQ
cmludGVkID0gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGZsYWdzICYgTm9kZU1heU5lZ1pl
cm8pIHsKLSAgICAgICAgaWYgKGhhc1ByaW50ZWQpCi0gICAgICAgICAgICBwdHIuc3RyY2F0KCJ8
Iik7Ci0gICAgICAgIHB0ci5zdHJjYXQoIk1heU5lZ1plcm8iKTsKLSAgICAgICAgaGFzUHJpbnRl
ZCA9IHRydWU7Ci0gICAgfQotICAgIAotICAgICpwdHIrKyA9IDA7Ci0gICAgCi0gICAgcmV0dXJu
IGRlc2NyaXB0aW9uOwotfQotCi0vLyBFbnRyaWVzIGluIHRoZSBOb2RlVHlwZSBlbnVtIChiZWxv
dykgYXJlIGNvbXBvc2VkIG9mIGFuIGlkLCBhIHJlc3VsdCB0eXBlIChwb3NzaWJseSBub25lKQot
Ly8gYW5kIHNvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGl2ZSBmbGFncyAobXVzdCBnZW5lcmF0ZSwg
aXMgY29uc3RhbnQsIGV0YykuCi0jZGVmaW5lIE5vZGVJZE1hc2sgICAgICAgICAgIDB4RkZGCi0j
ZGVmaW5lIE5vZGVSZXN1bHRNYXNrICAgICAgMHhGMDAwCi0jZGVmaW5lIE5vZGVNdXN0R2VuZXJh
dGUgICAweDEwMDAwIC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQg
bWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCi0jZGVmaW5lIE5vZGVJc0NvbnN0
YW50ICAgICAweDIwMDAwCi0jZGVmaW5lIE5vZGVJc0p1bXAgICAgICAgICAweDQwMDAwCi0jZGVm
aW5lIE5vZGVJc0JyYW5jaCAgICAgICAweDgwMDAwCi0jZGVmaW5lIE5vZGVJc1Rlcm1pbmFsICAg
IDB4MTAwMDAwCi0jZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgIDB4MjAwMDAwCi0jZGVmaW5lIE5v
ZGVDbG9iYmVyc1dvcmxkIDB4NDAwMDAwCi0jZGVmaW5lIE5vZGVNaWdodENsb2JiZXIgIDB4ODAw
MDAwCi0KLS8vIFRoZXNlIHZhbHVlcyByZWNvcmQgdGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBub2Rl
IChhcyBjaGVja2VkIGJ5IE5vZGVSZXN1bHRNYXNrLCBhYm92ZSksIDAgZm9yIG5vIHJlc3VsdC4K
LSNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAweDEwMDAKLSNkZWZpbmUgTm9kZVJlc3VsdE51
bWJlciAgICAweDIwMDAKLSNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAweDMwMDAKLSNkZWZp
bmUgTm9kZVJlc3VsdEJvb2xlYW4gICAweDQwMDAKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2Ug
ICAweDUwMDAKK2NvbnN0IGNoYXIqIGFyaXRoTm9kZUZsYWdzQXNTdHJpbmcoTm9kZUZsYWdzKTsK
IAogLy8gVGhpcyBtYWNybyBkZWZpbmVzIGEgc2V0IG9mIGluZm9ybWF0aW9uIGFib3V0IGFsbCBr
bm93biBub2RlIHR5cGVzLCB1c2VkIHRvIHBvcHVsYXRlIE5vZGVJZCwgTm9kZVR5cGUgYmVsb3cu
CiAjZGVmaW5lIEZPUl9FQUNIX0RGR19PUChtYWNybykgXApAQCAtMzA0LDExICsyNTgsMTEgQEAg
c3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFncwogICAgIG1hY3JvKE5ld0Z1
bmN0aW9uRXhwcmVzc2lvbiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIEJsb2NrIHRl
cm1pbmFscy4gKi9cCi0gICAgbWFjcm8oSnVtcCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVJc1Rl
cm1pbmFsIHwgTm9kZUlzSnVtcCkgXAotICAgIG1hY3JvKEJyYW5jaCwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVJc1Rlcm1pbmFsIHwgTm9kZUlzQnJhbmNoKSBcCi0gICAgbWFjcm8oUmV0dXJuLCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUlzVGVybWluYWwpIFwKLSAgICBtYWNybyhUaHJvdywgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVJc1Rlcm1pbmFsKSBcCi0gICAgbWFjcm8oVGhyb3dSZWZlcmVu
Y2VFcnJvciwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVJc1Rlcm1pbmFsKSBcCisgICAgbWFjcm8o
SnVtcCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEJyYW5jaCwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3Jv
KFRocm93LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oVGhyb3dSZWZlcmVuY2VFcnJv
ciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAgICAvKiBUaGlzIGlzIGEgcHNldWRvLXRl
cm1pbmFsLiBJdCBtZWFucyB0aGF0IGV4ZWN1dGlvbiBzaG91bGQgZmFsbCBvdXQgb2YgREZHIGF0
ICovXAogICAgIC8qIHRoaXMgcG9pbnQsIGJ1dCBleGVjdXRpb24gZG9lcyBjb250aW51ZSBpbiB0
aGUgYmFzaWMgYmxvY2sgLSBqdXN0IGluIGEgKi9cCkBAIC0zMTcsMjAgKzI3MSwyNSBAQCBzdGF0
aWMgaW5saW5lIGNvbnN0IGNoYXIqIGFyaXRoTm9kZUZsYWdzCiAKIC8vIFRoaXMgZW51bSBnZW5l
cmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAog
Ly8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQg
KGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCi1lbnVtIE5vZGVJZCB7Ci0jZGVmaW5l
IERGR19PUF9FTlVNKG9wY29kZSwgZmxhZ3MpIG9wY29kZSMjX2lkLAorZW51bSBOb2RlVHlwZSB7
CisjZGVmaW5lIERGR19PUF9FTlVNKG9wY29kZSwgZmxhZ3MpIG9wY29kZSwKICAgICBGT1JfRUFD
SF9ERkdfT1AoREZHX09QX0VOVU0pCiAjdW5kZWYgREZHX09QX0VOVU0KLSAgICBMYXN0Tm9kZUlk
CisgICAgTGFzdE5vZGVUeXBlCiB9OwogCi0vLyBFbnRyaWVzIGluIHRoaXMgZW51bSBkZXNjcmli
ZSBhbGwgTm9kZSB0eXBlcy4KLS8vIFRoZSBlbnVtIHZhbHVlIGNvbnRhaW5zIGEgbW9ub3Rvbmlj
YWxseSBpbmNyZWFzaW5nIGlkLCBhIHJlc3VsdCB0eXBlLCBhbmQgYWRkaXRpb25hbCBmbGFncy4K
LWVudW0gTm9kZVR5cGUgewotI2RlZmluZSBERkdfT1BfRU5VTShvcGNvZGUsIGZsYWdzKSBvcGNv
ZGUgPSBvcGNvZGUjI19pZCB8IChmbGFncyksCisvLyBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgZmxh
Z3MgZm9yIGVhY2ggbm9kZS4KK2lubGluZSBOb2RlRmxhZ3MgZGVmYXVsdEZsYWdzKE5vZGVUeXBl
IG9wKQoreworICAgIHN3aXRjaCAob3ApIHsKKyNkZWZpbmUgREZHX09QX0VOVU0ob3Bjb2RlLCBm
bGFncykgY2FzZSBvcGNvZGU6IHJldHVybiBmbGFnczsKICAgICBGT1JfRUFDSF9ERkdfT1AoREZH
X09QX0VOVU0pCiAjdW5kZWYgREZHX09QX0VOVU0KLX07CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KIAogLy8g
VGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBj
b25zdHJ1Y3RvcjsKIC8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2Fs
bHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIApAQCAtMzUzLDM0
ICszMTIsMzIgQEAgc3RydWN0IE5vZGUgewogCiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRo
IHVwIHRvIDMgY2hpbGRyZW4sIG5vIGltbWVkaWF0ZSB2YWx1ZS4KICAgICBOb2RlKE5vZGVUeXBl
IG9wLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIE5vZGVJbmRleCBjaGlsZDEgPSBOb05vZGUsIE5v
ZGVJbmRleCBjaGlsZDIgPSBOb05vZGUsIE5vZGVJbmRleCBjaGlsZDMgPSBOb05vZGUpCi0gICAg
ICAgIDogb3Aob3ApCi0gICAgICAgICwgY29kZU9yaWdpbihjb2RlT3JpZ2luKQorICAgICAgICA6
IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKICAgICAgICAgLCBjaGlsZHJlbihOb2RlUmVmZXJlbmNl
QmxvYjo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpCiAgICAgICAgICwgbV92aXJ0dWFs
UmVnaXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgLCBtX3JlZkNvdW50KDAp
CiAgICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKCEob3AgJiBOb2RlSGFzVmFyQXJncykpOwotICAgICAgICBBU1NFUlQoIWhhc0FyaXRoTm9k
ZUZsYWdzKCkpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhvcCk7CisgICAgICAgIEFT
U0VSVCghKGZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICB9CiAKICAgICAvLyBDb25zdHJ1
Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiBhbmQgYW4gaW1tZWRpYXRlIHZhbHVlLgog
ICAgIE5vZGUoTm9kZVR5cGUgb3AsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgT3BJbmZvIGltbSwg
Tm9kZUluZGV4IGNoaWxkMSA9IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxkMiA9IE5vTm9kZSwgTm9k
ZUluZGV4IGNoaWxkMyA9IE5vTm9kZSkKLSAgICAgICAgOiBvcChvcCkKLSAgICAgICAgLCBjb2Rl
T3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAg
ICAgICAsIGNoaWxkcmVuKE5vZGVSZWZlcmVuY2VCbG9iOjpGaXhlZCwgY2hpbGQxLCBjaGlsZDIs
IGNoaWxkMykKICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJlZ2lz
dGVyKQogICAgICAgICAsIG1fcmVmQ291bnQoMCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0ubV92
YWx1ZSkKICAgICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCiAgICAgewotICAgICAg
ICBBU1NFUlQoIShvcCAmIE5vZGVIYXNWYXJBcmdzKSk7CisgICAgICAgIHNldE9wQW5kRGVmYXVs
dEZsYWdzKG9wKTsKKyAgICAgICAgQVNTRVJUKCEoZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOwog
ICAgIH0KIAogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1cCB0byAzIGNoaWxkcmVuIGFu
ZCB0d28gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBOb2RlKE5vZGVUeXBlIG9wLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIE9wSW5mbyBpbW0xLCBPcEluZm8gaW1tMiwgTm9kZUluZGV4IGNoaWxkMSA9
IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxkMiA9IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxkMyA9IE5v
Tm9kZSkKLSAgICAgICAgOiBvcChvcCkKLSAgICAgICAgLCBjb2RlT3JpZ2luKGNvZGVPcmlnaW4p
CisgICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAgICAgICAsIGNoaWxkcmVuKE5v
ZGVSZWZlcmVuY2VCbG9iOjpGaXhlZCwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMykKICAgICAgICAg
LCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgICAgICAsIG1f
cmVmQ291bnQoMCkKQEAgLTM4OCwxMyArMzQ1LDEzIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
LCBtX29wSW5mbzIoc2FmZUNhc3Q8dW5zaWduZWQ+KGltbTIubV92YWx1ZSkpCiAgICAgICAgICwg
bV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCEob3AgJiBO
b2RlSGFzVmFyQXJncykpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhvcCk7CisgICAg
ICAgIEFTU0VSVCghKGZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICB9CiAgICAgCiAgICAg
Ly8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNoaWxkcmVuIGFu
ZCB0d28gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBOb2RlKFZhckFyZ1RhZywgTm9kZVR5cGUgb3As
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgT3BJbmZvIGltbTEsIE9wSW5mbyBpbW0yLCB1bnNpZ25l
ZCBmaXJzdENoaWxkLCB1bnNpZ25lZCBudW1DaGlsZHJlbikKLSAgICAgICAgOiBvcChvcCkKLSAg
ICAgICAgLCBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgIDogY29kZU9yaWdpbihjb2Rl
T3JpZ2luKQogICAgICAgICAsIGNoaWxkcmVuKE5vZGVSZWZlcmVuY2VCbG9iOjpWYXJpYWJsZSwg
Zmlyc3RDaGlsZCwgbnVtQ2hpbGRyZW4pCiAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoSW52
YWxpZFZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgLCBtX3JlZkNvdW50KDApCkBAIC00MDIsMTIg
KzM1OSwxOSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICwgbV9vcEluZm8yKHNhZmVDYXN0PHVu
c2lnbmVkPihpbW0yLm1fdmFsdWUpKQogICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0Tm9u
ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChvcCAmIE5vZGVIYXNWYXJBcmdzKTsKKyAgICAgICAg
c2V0T3BBbmREZWZhdWx0RmxhZ3Mob3ApOworICAgICAgICBBU1NFUlQoZmxhZ3MgJiBOb2RlSGFz
VmFyQXJncyk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTm9k
ZVR5cGUgb3ApCisgICAgeworICAgICAgICB0aGlzLT5vcCA9IG9wOworICAgICAgICBmbGFncyA9
IGRlZmF1bHRGbGFncyhvcCk7CiAgICAgfQogCiAgICAgYm9vbCBtdXN0R2VuZXJhdGUoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG9wICYgTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAgICAgcmV0dXJu
IGZsYWdzICYgTm9kZU11c3RHZW5lcmF0ZTsKICAgICB9CiAKICAgICBib29sIGlzQ29uc3RhbnQo
KQpAQCAtNTQ2LDQ0ICs1MTAsMzIgQEAgc3RydWN0IE5vZGUgewogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIEFyaXRoTm9kZUZsYWdzIHJhd0FyaXRoTm9kZUZsYWdzKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChoYXNBcml0aE5vZGVGbGFncygpKTsKLSAgICAgICAgcmV0dXJuIG1fb3BJbmZv
OwotICAgIH0KLSAgICAKICAgICAvLyBUaGlzIGNvcnJlY3RzIHRoZSBhcml0aG1ldGljIG5vZGUg
ZmxhZ3MsIHNvIHRoYXQgaXJyZWxldmFudCBiaXRzIGFyZQogICAgIC8vIGlnbm9yZWQuIEluIHBh
cnRpY3VsYXIsIGFueXRoaW5nIG90aGVyIHRoYW4gQXJpdGhNdWwgZG9lcyBub3QgbmVlZAogICAg
IC8vIHRvIGtub3cgaWYgaXQgY2FuIHNwZWN1bGF0ZSBvbiBuZWdhdGl2ZSB6ZXJvLgotICAgIEFy
aXRoTm9kZUZsYWdzIGFyaXRoTm9kZUZsYWdzKCkKKyAgICBOb2RlRmxhZ3MgYXJpdGhOb2RlRmxh
Z3MoKQogICAgIHsKLSAgICAgICAgQXJpdGhOb2RlRmxhZ3MgcmVzdWx0ID0gcmF3QXJpdGhOb2Rl
RmxhZ3MoKTsKKyAgICAgICAgTm9kZUZsYWdzIHJlc3VsdCA9IGZsYWdzICYgTm9kZUFyaXRoTWFz
azsKICAgICAgICAgaWYgKG9wID09IEFyaXRoTXVsKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgcmV0dXJuIHJlc3VsdCAmIH5Ob2RlTmVlZHNOZWdaZXJvOwogICAgIH0KICAg
ICAKLSAgICBBcml0aE5vZGVGbGFncyBhcml0aE5vZGVGbGFnc0ZvckNvbXBhcmUoKQorICAgIHZv
aWQgc2V0QXJpdGhOb2RlRmxhZyhOb2RlRmxhZ3MgbmV3RmxhZ3MpCiAgICAgewotICAgICAgICBp
ZiAoaGFzQXJpdGhOb2RlRmxhZ3MoKSkKLSAgICAgICAgICAgIHJldHVybiBhcml0aE5vZGVGbGFn
cygpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzZXRBcml0aE5v
ZGVGbGFnKEFyaXRoTm9kZUZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0Fy
aXRoTm9kZUZsYWdzKCkpOwotICAgICAgICBtX29wSW5mbyA9IGZsYWdzOworICAgICAgICBBU1NF
UlQoIShuZXdGbGFncyAmIH5Ob2RlQXJpdGhNYXNrKSk7CisgICAgICAgIAorICAgICAgICBmbGFn
cyAmPSB+Tm9kZUFyaXRoTWFzazsKKyAgICAgICAgZmxhZ3MgfD0gbmV3RmxhZ3M7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgbWVyZ2VBcml0aE5vZGVGbGFncyhBcml0aE5vZGVGbGFncyBmbGFncykK
KyAgICBib29sIG1lcmdlQXJpdGhOb2RlRmxhZ3MoTm9kZUZsYWdzIG5ld0ZsYWdzKQogICAgIHsK
LSAgICAgICAgaWYgKCFoYXNBcml0aE5vZGVGbGFncygpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBBcml0aE5vZGVGbGFncyBuZXdGbGFncyA9IG1fb3BJbmZvIHwgZmxhZ3M7
Ci0gICAgICAgIGlmIChuZXdGbGFncyA9PSBtX29wSW5mbykKKyAgICAgICAgQVNTRVJUKCEobmV3
RmxhZ3MgJiB+Tm9kZUFyaXRoTWFzaykpOworICAgICAgICBuZXdGbGFncyA9IGZsYWdzIHwgbmV3
RmxhZ3M7CisgICAgICAgIGlmIChuZXdGbGFncyA9PSBmbGFncykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgbV9vcEluZm8gPSBuZXdGbGFnczsKKyAgICAgICAgZmxhZ3MgPSBu
ZXdGbGFnczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtNjM5LDQyICs1
OTEsNTEgQEAgc3RydWN0IE5vZGUgewogCiAgICAgYm9vbCBoYXNSZXN1bHQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG9wICYgTm9kZVJlc3VsdE1hc2s7CisgICAgICAgIHJldHVybiBmbGFncyAm
IE5vZGVSZXN1bHRNYXNrOwogICAgIH0KIAogICAgIGJvb2wgaGFzSW50MzJSZXN1bHQoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIChvcCAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SW50
MzI7CisgICAgICAgIHJldHVybiAoZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3Vs
dEludDMyOwogICAgIH0KICAgICAKICAgICBib29sIGhhc051bWJlclJlc3VsdCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gKG9wICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHROdW1iZXI7
CisgICAgICAgIHJldHVybiAoZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdE51
bWJlcjsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNKU1Jlc3VsdCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gKG9wICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRKUzsKKyAgICAgICAg
cmV0dXJuIChmbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0SlM7CiAgICAgfQog
ICAgIAogICAgIGJvb2wgaGFzQm9vbGVhblJlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4g
KG9wICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRCb29sZWFuOworICAgICAgICByZXR1
cm4gKGZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRCb29sZWFuOwogICAgIH0K
IAogICAgIGJvb2wgaXNKdW1wKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCAmIE5vZGVJc0p1
bXA7CisgICAgICAgIHJldHVybiBvcCA9PSBKdW1wOwogICAgIH0KIAogICAgIGJvb2wgaXNCcmFu
Y2goKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wICYgTm9kZUlzQnJhbmNoOworICAgICAgICBy
ZXR1cm4gb3AgPT0gQnJhbmNoOwogICAgIH0KIAogICAgIGJvb2wgaXNUZXJtaW5hbCgpCiAgICAg
ewotICAgICAgICByZXR1cm4gb3AgJiBOb2RlSXNUZXJtaW5hbDsKKyAgICAgICAgc3dpdGNoIChv
cCkgeworICAgICAgICBjYXNlIEp1bXA6CisgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBj
YXNlIFJldHVybjoKKyAgICAgICAgY2FzZSBUaHJvdzoKKyAgICAgICAgY2FzZSBUaHJvd1JlZmVy
ZW5jZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICB1bnNpZ25l
ZCB0YWtlbkJ5dGVjb2RlT2Zmc2V0RHVyaW5nUGFyc2luZygpCkBAIC04NzEsNyArODMyLDcgQEAg
c3RydWN0IE5vZGUgewogICAgIAogICAgIE5vZGVVc2UgY2hpbGQxKCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVCghKG9wICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICAgICAgQVNTRVJUKCEoZmxhZ3Mg
JiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICByZXR1cm4gY2hpbGRyZW4uY2hpbGQxKCk7CiAg
ICAgfQogICAgIApAQCAtODg1LDI1ICs4NDYsMjUgQEAgc3RydWN0IE5vZGUgewogCiAgICAgTm9k
ZVVzZSBjaGlsZDIoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCEob3AgJiBOb2RlSGFzVmFyQXJn
cykpOworICAgICAgICBBU1NFUlQoIShmbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgICAg
IHJldHVybiBjaGlsZHJlbi5jaGlsZDIoKTsKICAgICB9CiAKICAgICBOb2RlVXNlIGNoaWxkMygp
CiAgICAgewotICAgICAgICBBU1NFUlQoIShvcCAmIE5vZGVIYXNWYXJBcmdzKSk7CisgICAgICAg
IEFTU0VSVCghKGZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICAgICAgcmV0dXJuIGNoaWxk
cmVuLmNoaWxkMygpOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBmaXJzdENoaWxkKCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChvcCAmIE5vZGVIYXNWYXJBcmdzKTsKKyAgICAgICAgQVNTRVJU
KGZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpOwogICAgICAgICByZXR1cm4gY2hpbGRyZW4uZmlyc3RD
aGlsZCgpOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBudW1DaGlsZHJlbigpCiAgICAgewot
ICAgICAgICBBU1NFUlQob3AgJiBOb2RlSGFzVmFyQXJncyk7CisgICAgICAgIEFTU0VSVChmbGFn
cyAmIE5vZGVIYXNWYXJBcmdzKTsKICAgICAgICAgcmV0dXJuIGNoaWxkcmVuLm51bUNoaWxkcmVu
KCk7CiAgICAgfQogICAgIApAQCAtMTA2OSw4ICsxMDMwLDggQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICBmcHJpbnRmKG91dCwgIiwgQCV1IiwgY2hpbGQzKCkuaW5kZXgoKSk7CiAgICAgfQogICAg
IAotICAgIC8vIFRoaXMgZW51bSB2YWx1ZSBkZXNjcmliZXMgdGhlIHR5cGUgb2YgdGhlIG5vZGUu
Ci0gICAgTm9kZVR5cGUgb3A7CisgICAgdWludDE2X3Qgb3A7IC8vIHJlYWwgdHlwZSBpcyBOb2Rl
VHlwZQorICAgIE5vZGVGbGFncyBmbGFnczsKICAgICAvLyBVc2VkIHRvIGxvb2sgdXAgZXhjZXB0
aW9uIGhhbmRsaW5nIGluZm9ybWF0aW9uIChjdXJyZW50bHkgaW1wbGVtZW50ZWQgYXMgYSBieXRl
Y29kZSBpbmRleCkuCiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOwogICAgIC8vIFJlZmVyZW5j
ZXMgdG8gdXAgdG8gMyBjaGlsZHJlbiwgb3IgbGlua3MgdG8gYSB2YXJpYWJsZSBsZW5ndGggc2V0
IG9mIGNoaWxkcmVuLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDExMDQw
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDAsMTcgKzEwMCwzNSBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gbV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdChwcmVkaWN0aW9uKTsK
ICAgICB9CiAgICAgCisgICAgYm9vbCBpc05vdE5lZ1plcm8oTm9kZUluZGV4IG5vZGVJbmRleCkK
KyAgICB7CisgICAgICAgIGlmICghbV9ncmFwaC5pc051bWJlckNvbnN0YW50KG5vZGVJbmRleCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IG1fZ3Jh
cGgudmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGVJbmRleCk7CisgICAgICAgIHJldHVybiAhdmFs
dWUgJiYgMS4wIC8gdmFsdWUgPCAwLjA7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNOb3RaZXJv
KE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgeworICAgICAgICBpZiAoIW1fZ3JhcGguaXNOdW1i
ZXJDb25zdGFudChub2RlSW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gISFtX2dyYXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2RlSW5kZXgpOworICAg
IH0KKyAgICAKICAgICB2b2lkIHByb3BhZ2F0ZShOb2RlJiBub2RlKQogICAgIHsKICAgICAgICAg
aWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IAotICAgICAgICBOb2RlVHlwZSBvcCA9IG5vZGUub3A7CisgICAgICAgIE5vZGVUeXBlIG9wID0g
c3RhdGljX2Nhc3Q8Tm9kZVR5cGU+KG5vZGUub3ApOworICAgICAgICBOb2RlRmxhZ3MgZmxhZ3Mg
PSBub2RlLmZsYWdzOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQotICAgICAgICBkYXRhTG9nKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2Nv
bXBpbGVJbmRleCk7CisgICAgICAgIGRhdGFMb2coIiAgICVzIEAldTogJXMgIiwgR3JhcGg6Om9w
TmFtZShvcCksIG1fY29tcGlsZUluZGV4LCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKGZsYWdzKSk7
CiAjZW5kaWYKICAgICAgICAgCisgICAgICAgIGZsYWdzICY9IE5vZGVVc2VkQXNNYXNrOworICAg
ICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBz
d2l0Y2ggKG9wKSB7CkBAIC0xMjEsMTQgKzEzOSwzMCBAQCBwcml2YXRlOgogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRMb2NhbDogewotICAgICAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlv
bigpOworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEg
PSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBw
cmVkaWN0aW9uID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAg
ICBpZiAocHJlZGljdGlvbikKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFtX2dyYXBo
LmlzQ2FwdHVyZWQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpKSkKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhmbGFncyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgU2V0
TG9jYWw6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+cHJlZGljdChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFi
bGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0
YS0+cHJlZGljdChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGguaXNDYXB0dXJlZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkp
KQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJn
ZUFyaXRoTm9kZUZsYWdzKHZhcmlhYmxlQWNjZXNzRGF0YS0+ZmxhZ3MoKSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8p
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEZsdXNoOiB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYW5hbHlzaXMg
a25vd3MgdGhhdCBmbHVzaGVkIGxvY2FscyBlc2NhcGUuCisgICAgICAgICAgICBBU1NFUlQobV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5vcCA9PSBTZXRMb2NhbCk7CisgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1fZ3JhcGhbbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5v
ZGVGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNDMsMTUgKzE3NywyMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICBjYXNlIEFycmF5UG9wOgorICAgICAgICBjYXNlIEFycmF5UG9wOiB7CisgICAgICAgICAg
ICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAg
ICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQogICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQz
Mik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwg
ZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTY1LDYgKzIwNiw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZs
YWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTE3Myw2ICsyMTYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0TnVtYmVyKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIApAQCAtMTkyLDEwICsyMzcsMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGlj
dFN0cmluZyB8IFByZWRpY3RJbnQzMiB8IFByZWRpY3REb3VibGUpOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaXNOb3ROZWdaZXJvKG5vZGUuY2hpbGQxKCku
aW5kZXgoKSkgfHwgaXNOb3ROZWdaZXJvKG5vZGUuY2hpbGQyKCkuaW5kZXgoKSkpCisgICAgICAg
ICAgICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVkc05lZ1plcm87CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZs
YWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigp
XS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBcml0aEFkZDogeworICAgICAgICAgICAg
UHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7
CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigp
XS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJp
Z2h0KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50
ZWdlcihub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaXNOb3ROZWdaZXJvKG5vZGUuY2hp
bGQxKCkuaW5kZXgoKSkgfHwgaXNOb3ROZWdaZXJvKG5vZGUuY2hpbGQyKCkuaW5kZXgoKSkpCisg
ICAgICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVkc05lZ1plcm87CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRo
Tm9kZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMigpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcml0aEFkZDoKICAgICAgICAg
Y2FzZSBBcml0aFN1YjogewogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBl
IHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CkBAIC0yMDYsNiAr
Mjc1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGlzTm90WmVybyhub2RlLmNoaWxkMSgpLmluZGV4KCkp
IHx8IGlzTm90WmVybyhub2RlLmNoaWxkMigpLmluZGV4KCkpKQorICAgICAgICAgICAgICAgIGZs
YWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJvOworICAgICAgICAgICAgCisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0
aE5vZGVGbGFncyhmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC0yMTYsMTEgKzI5MSwyOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGlj
dERvdWJsZSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJpdGhNdWw6CiAgICAgICAgIGNh
c2UgQXJpdGhNaW46Ci0gICAgICAgIGNhc2UgQXJpdGhNYXg6CisgICAgICAgIGNhc2UgQXJpdGhN
YXg6IHsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1f
Z3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAobGVmdCAmJiByaWdodCkgeworICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJl
ZGljdGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkgJiYgbm9kZUNhblNwZWN1bGF0
ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRp
Y3REb3VibGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNl
ZEFzTnVtYmVyOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoTXVs
OgogICAgICAgICBjYXNlIEFyaXRoRGl2OiB7CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxl
ZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIFBy
ZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsK
QEAgLTIzMSwxMSArMzI0LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91Ymxl
KTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQXMgc29vbiBhcyBhIG11bHRpcGx5
IGhhcHBlbnMsIHdlIGNhbiBlYXNpbHkgZW5kIHVwIGluIHRoZSBwYXJ0CisgICAgICAgICAgICAv
LyBvZiB0aGUgZG91YmxlIGRvbWFpbiB3aGVyZSB0aGUgcG9pbnQgYXQgd2hpY2ggeW91IGRvIHRy
dW5jYXRpb24KKyAgICAgICAgICAgIC8vIGNhbiBjaGFuZ2UgdGhlIG91dGNvbWUuIFNvLCBBcml0
aE11bCBhbHdheXMgY2hlY2tzIGZvciBvdmVyZmxvdworICAgICAgICAgICAgLy8gbm8gbWF0dGVy
IHdoYXQsIGFuZCBhbHdheXMgZm9yY2VzIGl0cyBpbnB1dHMgdG8gY2hlY2sgYXMgd2VsbC4KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVO
ZWVkc05lZ1plcm87CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1f
Z3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhT
cXJ0OiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdERvdWJs
ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwg
ZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAt
MjQ3LDYgKzM1MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJvOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2Rl
RmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtMjU5LDYgKzM2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmlj
dEVxOgogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0g
c2V0UHJlZGljdGlvbihQcmVkaWN0Qm9vbGVhbik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjgzLDEyICszOTAsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBpZiAoaXNBcnJheSB8fCBpc1N0cmluZyB8fCBpc0J5dGVBcnJheSB8fCBp
c0ludDhBcnJheSB8fCBpc0ludDE2QXJyYXkgfHwgaXNJbnQzMkFycmF5IHx8IGlzVWludDhBcnJh
eSB8fCBpc1VpbnQ4Q2xhbXBlZEFycmF5IHx8IGlzVWludDE2QXJyYXkgfHwgaXNVaW50MzJBcnJh
eSB8fCBpc0Zsb2F0MzJBcnJheSB8fCBpc0Zsb2F0NjRBcnJheSkKICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBm
bGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRp
Y3Rpb24oKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2Rl
LmdldEhlYXBQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1
bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2UgR2V0QnlWYWw6IHsKQEAgLTI5NiwxOCArNDA1LDIzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERv
dWJsZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJl
ZGljdGlvbigpKTsKKworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5l
ZWRzTmVnWmVybyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldFBy
b3BlcnR5U3RvcmFnZTogCiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTog
ewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RPdGhlcik7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3Mp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEdldEJ5T2Zm
c2V0OiB7CiAgICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQogICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rp
b24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9k
ZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApA
QCAtMzE1LDYgKzQyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OiB7CiAg
ICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQogICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3Mp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzI3LDYg
KzQ0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTMzOSw2ICs0
NTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFy
OiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGgucHJlZGljdEdsb2JhbFZhcihub2Rl
LnZhck51bWJlcigpLCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzY2LDEyICs0
ODMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNl
IE5ld09iamVjdDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRp
Y3RGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRo
RmxhZ3Mobm9kZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIE5ld0FycmF5OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVm
ZmVyOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEFycmF5
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBm
bGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0z
ODMsNiArNTAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAg
ICAgIGNhc2UgU3RyQ2F0OiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
UHJlZGljdFN0cmluZyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRo
RmxhZ3Mobm9kZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtNDAzLDYgKzUyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxk
KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQzNiw3ICs1NTcsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIEZsdXNo
OgorICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVt
YmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhb
bm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1i
ZXIpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQzKCldLm1lcmdl
QXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVy
byk7CiAgICAgICAgICAgICBicmVhazsKIAogI2lmbmRlZiBOREVCVUcKQEAgLTQ1Miw3ICs1NzYs
NiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAg
IGNhc2UgRm9yY2VPU1JFeGl0OgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgotICAgICAgICBj
YXNlIFB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgIGNhc2Ug
UHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpAQCAtNDYxLDYgKzU4NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFB1dEJ5
T2Zmc2V0OgogICAgICAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOgorICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoZXNlIGdldHMgaWdub3JlZCBiZWNh
dXNlIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcuCkBAIC00NjgsOCArNTkyLDEzIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSW5saW5lU3RhcnQ6CiAgICAgICAgIGNhc2UgTm9wOgogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UK
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJp
dGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAg
ICB9CkBAIC00ODEsNiArNjEwLDI3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY2hhbmdlZCB8PSBj
aGFuZ2VkOwogICAgIH0KICAgICAKKyAgICBib29sIG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3MoTm9k
ZSYgbm9kZSwgTm9kZUZsYWdzIGZsYWdzKQorICAgIHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0g
ZmFsc2U7CisgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWda
ZXJvOworICAgICAgICBpZiAobm9kZS5mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSB7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4
IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCisg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW21fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bltjaGlsZElkeF1dLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBjaGFuZ2VkOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxk
MigpKQorICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwor
ICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMygpKQorICAgICAgICAgICAgICAgIHJldHVybiBj
aGFuZ2VkOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQzKCldLm1l
cmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjaGFu
Z2VkOworICAgIH0KKyAgICAKICAgICB2b2lkIHByb3BhZ2F0ZUZvcndhcmQoKQogICAgIHsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCkBAIC01MTYsNyArNjY2LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHZvdGUoTm9kZSYgbm9kZSwgVmFyaWFibGVBY2Nl
c3NEYXRhOjpCYWxsb3QgYmFsbG90KQogICAgIHsKLSAgICAgICAgaWYgKG5vZGUub3AgJiBOb2Rl
SGFzVmFyQXJncykgeworICAgICAgICBpZiAobm9kZS5mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSB7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7
IGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxk
SWR4KyspCiAgICAgICAgICAgICAgICAgdm90ZShtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hp
bGRJZHhdLCBiYWxsb3QpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjI0LDcgKzc3NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wOworICAg
ICAgICBOb2RlVHlwZSBvcCA9IHN0YXRpY19jYXN0PE5vZGVUeXBlPihub2RlLm9wKTsKIAogI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgZGF0YUxvZygi
ICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxlSW5kZXgpOwpAQCAtNjgw
LDEzICs4MzAsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBub2RlLm9wID0gR2V0Rmxv
YXQ2NEFycmF5TGVuZ3RoOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgbV9ncmFwaC5kZXJlZihtX2NvbXBpbGVJbmRl
eCk7IC8vIE5vIGxvbmdlciBNdXN0R2VuZXJhdGUKKyAgICAgICAgICAgIC8vIE5vIGxvbmdlciBN
dXN0R2VuZXJhdGUKKyAgICAgICAgICAgIEFTU0VSVChub2RlLmZsYWdzICYgTm9kZU11c3RHZW5l
cmF0ZSk7CisgICAgICAgICAgICBub2RlLmZsYWdzICY9IH5Ob2RlTXVzdEdlbmVyYXRlOworICAg
ICAgICAgICAgbV9ncmFwaC5kZXJlZihtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsK
ICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUu
Y2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmICghKGJhc2VQcmVkaWN0aW9u
ICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlvbikgewotICAgICAgICAgICAgICAgIG5v
ZGUub3AgPSBOb3A7CisgICAgICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhO
b3ApOwogICAgICAgICAgICAgICAgIG1fZ3JhcGguY2xlYXJBbmREZXJlZkNoaWxkMShub2RlKTsK
ICAgICAgICAgICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVyZWZDaGlsZDIobm9kZSk7CiAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERlcmVmQ2hpbGQzKG5vZGUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJkLmgJKHJldmlzaW9uIDExMDQwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OCwxNCArNTgsMjcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0jaWYg
REZHX0VOQUJMRShDT05TSVNURU5DWV9DSEVDSykKICAgICB+U2NvcmVCb2FyZCgpCiAgICAgewot
ICAgICAgICAvLyBGb3IgZXZlcnkgZW50cnkgaW4gdGhlIHVzZWQgbGlzdCB0aGUgdXNlIGNvdW50
IG9mIHRoZSB2aXJ0dWFsIHJlZ2lzdGVyIHNob3VsZCBiZSB6ZXJvLgotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fZnJlZS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIEFTU0VSVCgh
bV91c2VkW2ldIHx8IG1fdXNlZFtpXSA9PSBtYXgoKSk7CisgICAgICAgIGFzc2VydENsZWFyKCk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgYXNzZXJ0Q2xlYXIoKQorICAgIHsKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgICAgIC8vIEZvciBldmVyeSBlbnRyeSBpbiB0aGUgdXNlZCBsaXN0IHRo
ZSB1c2UgY291bnQgb2YgdGhlIHZpcnR1YWwgcmVnaXN0ZXIgc2hvdWxkIGJlIHplcm8sIG9yIG1h
eCwgZHVlIHRvIGl0IGJlaW5nIGEgcHJlc2VydmVkIGxvY2FsLgorICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fdXNlZC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIEFTU0VSVCghbV91
c2VkW2ldIHx8IG1fdXNlZFtpXSA9PSBtYXgoKSk7CisgICAgICAgIC8vIEZvciBldmVyeSBlbnRy
eSBpbiB0aGUgZnJlZSBsaXN0LCB0aGUgdXNlIGNvdW50IHNob3VsZCBiZSB6ZXJvLgorICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJlZS5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IEFTU0VSVCghbV91c2VkW21fZnJlZVtpXV0pOworICAgICAgICAvLyBUaGVyZSBtdXN0IG5vdCBi
ZSBkdXBsaWNhdGVzIGluIHRoZSBmcmVlIGxpc3QuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9mcmVlLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0g
aSArIDE7IGogPCBtX2ZyZWUuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgQVNTRVJUKG1f
ZnJlZVtpXSAhPSBtX2ZyZWVbal0pOworICAgICAgICB9CiAjZW5kaWYKKyAgICB9CiAKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYWxsb2NhdGUoKQogICAgIHsKQEAgLTk5LDYgKzExMiw5IEBAIHB1Ymxp
YzoKICAgICAgICAgdWludDMyX3QgaW5kZXggPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwogICAg
ICAgICBBU1NFUlQobV91c2VkW2luZGV4XSAhPSBtYXgoKSk7CiAgICAgICAgIGlmIChub2RlLnJl
ZkNvdW50KCkgPT0gKyttX3VzZWRbaW5kZXhdKSB7CisjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgZGF0YUxvZygiIEZyZWVpbmcgdmlydHVhbCBy
ZWdpc3RlciAldS4iLCBpbmRleCk7CisjZW5kaWYKICAgICAgICAgICAgIC8vIElmIHRoZSB1c2Ug
Y291bnQgaW4gdGhlIHNjb3JlYm9hcmQgcmVhY2hlcyB0aGUgdXNlIGNvdW50IGZvciB0aGUgbm9k
ZSwKICAgICAgICAgICAgIC8vIHRoZW4gdGhpcyB3YXMgaXRzIGxhc3QgdXNlOyB0aGUgdmlydHVh
bCByZWdpc3RlciBpcyBub3cgZnJlZS4KICAgICAgICAgICAgIC8vIENsZWFyIHRoZSB1c2UgY291
bnQgJiBhZGQgdG8gdGhlIGZyZWUgbGlzdC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTEwNDAx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEJyYW5jaChOb2RlJiBubwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiB7Ci0gICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wOworICAgIE5vZGVUeXBlIG9w
ID0gc3RhdGljX2Nhc3Q8Tm9kZVR5cGU+KG5vZGUub3ApOwogCiAgICAgc3dpdGNoIChvcCkgewog
ICAgIGNhc2UgSlNDb25zdGFudDoKQEAgLTM1NzgsNiArMzU3OCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgIGNhc2UgSW5saW5lU3RhcnQ6CiAgICAg
Y2FzZSBOb3A6CisgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDExMDQwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NDQsNyArMTc0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRCcmFuY2goTm9kZSYgbm8KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogewotICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcDsKKyAgICBOb2RlVHlwZSBvcCA9IHN0
YXRpY19jYXN0PE5vZGVUeXBlPihub2RlLm9wKTsKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBj
YXNlIEpTQ29uc3RhbnQ6CkBAIC0zNTUyLDYgKzM1NTIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIGNhc2UgTm9wOgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgTGFzdE5vZGVU
eXBlOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogCiAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDExMDQwMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw3ICs4Myw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFN0b3JhZ2Uo
Tm9kZUkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6dXNlQ2hpbGRyZW4oTm9kZSYgbm9kZSkKIHsK
LSAgICBpZiAobm9kZS5vcCAmIE5vZGVIYXNWYXJBcmdzKSB7CisgICAgaWYgKG5vZGUuZmxhZ3Mg
JiBOb2RlSGFzVmFyQXJncykgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9k
ZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNo
aWxkcmVuKCk7IGNoaWxkSWR4KyspCiAgICAgICAgICAgICB1c2UobV9qaXQuZ3JhcGgoKS5tX3Zh
ckFyZ0NoaWxkcmVuW2NoaWxkSWR4XSk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24g
MTEwNDAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKCkKICAgICAgICAgOiBtX2xvY2FsKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdp
c3Rlcj4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkpCiAgICAgICAgICwgbV9wcmVk
aWN0aW9uKFByZWRpY3ROb25lKQorICAgICAgICAsIG1fZmxhZ3MoMCkKICAgICAgICAgLCBtX3No
b3VsZFVzZURvdWJsZUZvcm1hdChmYWxzZSkKICAgICB7CiAgICAgICAgIGNsZWFyVm90ZXMoKTsK
QEAgLTQ5LDYgKzUwLDcgQEAgcHVibGljOgogICAgIFZhcmlhYmxlQWNjZXNzRGF0YShWaXJ0dWFs
UmVnaXN0ZXIgbG9jYWwpCiAgICAgICAgIDogbV9sb2NhbChsb2NhbCkKICAgICAgICAgLCBtX3By
ZWRpY3Rpb24oUHJlZGljdE5vbmUpCisgICAgICAgICwgbV9mbGFncygwKQogICAgICAgICAsIG1f
c2hvdWxkVXNlRG91YmxlRm9ybWF0KGZhbHNlKQogICAgIHsKICAgICAgICAgY2xlYXJWb3Rlcygp
OwpAQCAtMTMwLDYgKzEzMiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICAKKyAgICB1bnNpZ25lZCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0K
KyAgICAKKyAgICBib29sIG1lcmdlRmxhZ3ModW5zaWduZWQgbmV3RmxhZ3MpCisgICAgeworICAg
ICAgICBuZXdGbGFncyB8PSBtX2ZsYWdzOworICAgICAgICBpZiAobmV3RmxhZ3MgPT0gbV9mbGFn
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9mbGFncyA9IG5ld0ZsYWdz
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiBwcml2YXRlOgogICAgIC8vIFRo
aXMgaXMgc2xpZ2h0bHkgc3BhY2UtaW5lZmZpY2llbnQsIHNpbmNlIGFueXRoaW5nIHdlJ3JlIHVu
aWZpZWQgd2l0aAogICAgIC8vIHdpbGwgaGF2ZSB0aGUgc2FtZSBvcGVyYW5kIGFuZCBzaG91bGQg
aGF2ZSB0aGUgc2FtZSBwcmVkaWN0aW9uLiBCdXQKQEAgLTEzOCw2ICsxNTEsNyBAQCBwcml2YXRl
OgogCiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fbG9jYWw7CiAgICAgUHJlZGljdGVkVHlwZSBtX3By
ZWRpY3Rpb247CisgICAgdW5zaWduZWQgbV9mbGFnczsKICAgICAKICAgICBmbG9hdCBtX3ZvdGVz
WzJdOwogICAgIGJvb2wgbV9zaG91bGRVc2VEb3VibGVGb3JtYXQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJB
bGxvY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTA0MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDM4ICs0OCw2MiBAQCBwdWJsaWM6CiAgICAgICAgIGRhdGFMb2coIlxuIik7
CiAjZW5kaWYKICAgICAgICAgU2NvcmVCb2FyZCBzY29yZUJvYXJkKG1fZ3JhcGgsIG1fZ3JhcGgu
bV9wcmVzZXJ2ZWRWYXJzKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBo
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpXTsKKyAg
ICAgICAgc2NvcmVCb2FyZC5hc3NlcnRDbGVhcigpOworI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAgYm9vbCBuZWVkc05ld0xpbmUgPSBmYWxzZTsKKyNl
bmRpZgorICAgICAgICBmb3IgKHNpemVfdCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1f
Z3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKTsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGluZGV4SW5CbG9jayA9IDA7IGluZGV4SW5CbG9jayA8IGJsb2Nr
LT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IG5v
ZGVJbmRleCA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOworI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAgICAgICAgICBpZiAobmVlZHNOZXdMaW5lKQor
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgIEAldToiLCBub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIG5lZWRzTmV3TGluZSA9
IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2Rl
SW5kZXhdOwogICAgICAgICAKLSAgICAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgp
IHx8IG5vZGUub3AgPT0gUGhpIHx8IG5vZGUub3AgPT0gRmx1c2gpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkgfHwg
bm9kZS5vcCA9PSBQaGkgfHwgbm9kZS5vcCA9PSBGbHVzaCkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIEdldExvY2FsIG5vZGVzIGFy
ZSBlZmZlY3RpdmVseSBwaGkgbm9kZXMgaW4gdGhlIGdyYXBoLCByZWZlcmVuY2luZwotICAgICAg
ICAgICAgLy8gcmVzdWx0cyBmcm9tIHByaW9yIGJsb2Nrcy4KLSAgICAgICAgICAgIGlmIChub2Rl
Lm9wICE9IEdldExvY2FsKSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlyc3QsIGNhbGwgdXNlIG9u
IGFsbCBvZiB0aGUgY3VycmVudCBub2RlJ3MgY2hpbGRyZW4sIHRoZW4KLSAgICAgICAgICAgICAg
ICAvLyBhbGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhpcyBub2RlLiBXZSBkbyBzbyBp
biB0aGlzCi0gICAgICAgICAgICAgICAgLy8gb3JkZXIgc28gdGhhdCBpZiBhIGNoaWxkIGlzIG9u
IGl0cyBsYXN0IHVzZSwgYW5kIGEKLSAgICAgICAgICAgICAgICAvLyBWaXJ0dWFsUmVnaXN0ZXIg
aXMgZnJlZWQsIHRoZW4gaXQgbWF5IGJlIHJldXNlZCBmb3Igbm9kZS4KLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS5vcCAmIE5vZGVIYXNWYXJBcmdzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2Rl
LmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlKG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltj
aGlsZElkeF0pOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNjb3JlQm9hcmQudXNlKG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgICAgICAgICBzY29y
ZUJvYXJkLnVzZShub2RlLmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcmVCb2Fy
ZC51c2Uobm9kZS5jaGlsZDMoKSk7CisgICAgICAgICAgICAgICAgLy8gR2V0TG9jYWwgbm9kZXMg
YXJlIGVmZmVjdGl2ZWx5IHBoaSBub2RlcyBpbiB0aGUgZ3JhcGgsIHJlZmVyZW5jaW5nCisgICAg
ICAgICAgICAgICAgLy8gcmVzdWx0cyBmcm9tIHByaW9yIGJsb2Nrcy4KKyAgICAgICAgICAgICAg
ICBpZiAobm9kZS5vcCAhPSBHZXRMb2NhbCkgeworICAgICAgICAgICAgICAgICAgICAvLyBGaXJz
dCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUncyBjaGlsZHJlbiwgdGhlbgor
ICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0ZSBhIFZpcnR1YWxSZWdpc3RlciBmb3IgdGhp
cyBub2RlLiBXZSBkbyBzbyBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgIC8vIG9yZGVyIHNv
IHRoYXQgaWYgYSBjaGlsZCBpcyBvbiBpdHMgbGFzdCB1c2UsIGFuZCBhCisgICAgICAgICAgICAg
ICAgICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwgdGhlbiBpdCBtYXkgYmUgcmV1c2Vk
IGZvciBub2RlLgorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5mbGFncyAmIE5vZGVIYXNW
YXJBcmdzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4
ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2Rl
Lm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2NvcmVCb2FyZC51c2UobV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XSk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY29yZUJv
YXJkLnVzZShub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JlQm9h
cmQudXNlKG5vZGUuY2hpbGQyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVCb2Fy
ZC51c2Uobm9kZS5jaGlsZDMoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghbm9kZS5oYXNSZXN1bHQo
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUu
aGFzUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBub2RlLnNldFZpcnR1YWxSZWdpc3RlcihzY29yZUJvYXJkLmFsbG9jYXRlKCkpOwotICAgICAg
ICAgICAgLy8gJ211c3RHZW5lcmF0ZScgbm9kZXMgaGF2ZSB0aGVpciB1c2VDb3VudCBhcnRpZmlj
aWFsbHkgZWxldmF0ZWQsCi0gICAgICAgICAgICAvLyBjYWxsIHVzZSBub3cgdG8gYWNjb3VudCBm
b3IgdGhpcy4KLSAgICAgICAgICAgIGlmIChub2RlLm11c3RHZW5lcmF0ZSgpKQotICAgICAgICAg
ICAgICAgIHNjb3JlQm9hcmQudXNlKGkpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIgPSBzY29yZUJvYXJkLmFsbG9jYXRlKCk7CisjaWYgREZHX0VOQUJM
RShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIiBB
c3NpZ25pbmcgdmlydHVhbCByZWdpc3RlciAldSB0byBub2RlICV1LiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXIsIG5vZGVJbmRleCk7CisjZW5kaWYKKyAgICAgICAg
ICAgICAgICBub2RlLnNldFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAg
ICAgICAgICAgIC8vICdtdXN0R2VuZXJhdGUnIG5vZGVzIGhhdmUgdGhlaXIgdXNlQ291bnQgYXJ0
aWZpY2lhbGx5IGVsZXZhdGVkLAorICAgICAgICAgICAgICAgIC8vIGNhbGwgdXNlIG5vdyB0byBh
Y2NvdW50IGZvciB0aGlzLgorICAgICAgICAgICAgICAgIGlmIChub2RlLm11c3RHZW5lcmF0ZSgp
KQorICAgICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnVzZShub2RlSW5kZXgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgc2NvcmVCb2FyZC5hc3NlcnRDbGVhcigpOwogICAgICAgICB9
CisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICBpZiAo
bmVlZHNOZXdMaW5lKQorICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsKKyNlbmRpZgogCiAgICAg
ICAgIC8vICdtX251bUNhbGxlZVJlZ2lzdGVycycgaXMgdGhlIG51bWJlciBvZiBsb2NhbHMgYW5k
IHRlbXBvcmFyaWVzIGFsbG9jYXRlZAogICAgICAgICAvLyBmb3IgdGhlIGZ1bmN0aW9uIChhbmQg
Y2hlY2tlZCBmb3Igb24gZW50cnkpLiBTaW5jZSB3ZSBwZXJmb3JtIGEgbmV3IGFuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131402</attachid>
            <date>2012-03-12 13:56:43 -0700</date>
            <delta_ts>2012-03-12 16:48:55 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>globalarith_patch_2.diff</filename>
            <type>text/plain</type>
            <size>34081</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEwNDY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDEyLTAzLTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJpdGhtZXRpYyB1c2UgaW5mZXJlbmNlIHNob3VsZCBiZSBwcm9jZWR1cmUtZ2xvYmFsIGFuZCBz
aG91bGQgcnVuIGluIHRhbmRlbQorICAgICAgICB3aXRoIHR5cGUgcHJvcGFnYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGlu
IHByb2dyZXNzLiBUaGlzIHBhdGNoIHdpbGwgbmVlZCB0byBiZSByZWJhc2VkIGFmdGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDgyNCBsYW5kcy4K
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZGZnL0RGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGRmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmg6IFJlbW92
ZWQuCisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6aXNOb3ROZWda
ZXJvKToKKyAgICAgICAgKFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6aXNOb3RaZXJvKToKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6bWVyZ2VEZWZhdWx0QXJp
dGhGbGFncyk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6VmFyaWFibGVBY2Nlc3NEYXRhKToKKyAg
ICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OmZsYWdzKToKKyAgICAgICAgKFZh
cmlhYmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRh
OjptZXJnZUZsYWdzKToKKwogMjAxMi0wMy0xMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdv
bWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgTWlub3IgRGF0YUxvZyBmaXhlcwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDExMDQxOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjcsOCArMTY3LDYgQEAKIAkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4
IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2
QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9Owog
CQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRC
QTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OwotCQkwRkZG
Qzk1NTE0RUY5MDlBMDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0
OTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHAg
Ki87IH07Ci0JCTBGRkZDOTU2MTRFRjkwOUMwMEM3MjUzMiAvKiBERkdBcml0aE5vZGVGbGFnc0lu
ZmVyZW5jZVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkZGQzk0QTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVu
Y2VQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QjE0RUY5MDk1MDBD
NzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovOyB9OwogCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkZDOTU5MTRF
RjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0RDE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NF
UGhhc2UuY3BwICovOyB9OwpAQCAtODkxLDggKzg4OSw2IEBACiAJCTBGRTIyOEVBMTQzNkFCMjMw
MDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkUyMjhFQjE0
MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRG
NDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0
YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMEZGRkM5NDkxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQ
aGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRkZDOTRBMTRFRjkwOTUwMEM3MjUzMiAv
KiBERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuaDsgcGF0aCA9IGRm
Zy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZG
Qzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0RDE0RUY5MDk1MDBDNzI1MzIgLyog
REZHQ1NFUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
Q1NFUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NTRVBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI1MDcsOCArMjUwMyw2IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTBGMUQwODVGMTUwQzVBODAwMDc0RDEwOSAvKiBERkdOb2RlLmNw
cCAqLywKLQkJCQkwRkZGQzk0OTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJ
bmZlcmVuY2VQaGFzZS5jcHAgKi8sCi0JCQkJMEZGRkM5NEExNEVGOTA5NTAwQzcyNTMyIC8qIERG
R0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuaCAqLywKIAkJCQkwRjYyMDE2RDE0M0ZDRDJG
MDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8sCiAJCQkJMEY2MjAxNkUxNDNGQ0Qy
RjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuaCAqLywKIAkJCQkwRjYyMDE2RjE0M0ZDRDJG
MDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oICovLApAQCAtMzA4MCw3ICszMDc0LDYgQEAK
IAkJCQkwRjlGQzhDNDE0RTFCNjAwMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FFMTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2Vy
dGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRkZDOTU2MTRFRjkwOUMwMEM3MjUzMiAvKiBE
RkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZG
Qzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3MDgsNyArMzcwMSw2IEBACiAJCQkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8q
IE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlGQzhEMDE0RTYxMkQ4
MDBENTJBRTAgLyogRGF0YUxvZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlGQzhDMzE0RTFC
NUZFMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkwRkZGQzk1NTE0RUY5MDlBMDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVu
Y2VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAw
QzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVCMTRF
RjkwQUQwMEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE5vZGVGbGFn
c0luZmVyZW5jZVBoYXNlLmNwcAkocmV2aXNpb24gMTEwNDE5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwyMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHQXJpdGhOb2Rl
RmxhZ3NJbmZlcmVuY2VQaGFzZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRl
ICJERkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotY2xhc3MgQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7Ci1wdWJsaWM6Ci0gICAgQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZShH
cmFwaCYgZ3JhcGgpCi0gICAgICAgIDogUGhhc2UoZ3JhcGgsICJhcml0aG1ldGljIG5vZGUgZmxh
Z3MgaW5mZXJlbmNlIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcnVuKCkKLSAgICB7
Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBtX2Nv
dW50ID0gMDsKLSNlbmRpZgotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBtX2NoYW5nZWQgPSBm
YWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gVXAgaGVyZSB3ZSBzdGFydCB3aXRo
IGEgYmFja3dhcmQgcGFzcyBiZWNhdXNlIHdlIHN1c3BlY3QgdGhhdCB0byBiZQotICAgICAgICAg
ICAgLy8gbW9yZSBwcm9maXRhYmxlLgotICAgICAgICAgICAgcHJvcGFnYXRlQmFja3dhcmQoKTsK
LSAgICAgICAgICAgIGlmICghbV9jaGFuZ2VkKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBtX2NoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHBy
b3BhZ2F0ZUZvcndhcmQoKTsKLSAgICAgICAgfSB3aGlsZSAobV9jaGFuZ2VkKTsKLSAgICB9Ci0g
ICAgCi1wcml2YXRlOgotICAgIGJvb2wgaXNOb3ROZWdaZXJvKE5vZGVJbmRleCBub2RlSW5kZXgp
Ci0gICAgewotICAgICAgICBpZiAoIW1fZ3JhcGguaXNOdW1iZXJDb25zdGFudChub2RlSW5kZXgp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkb3VibGUgdmFsdWUgPSBtX2dy
YXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2RlSW5kZXgpOwotICAgICAgICByZXR1cm4gIXZh
bHVlICYmIDEuMCAvIHZhbHVlIDwgMC4wOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzTm90WmVy
byhOb2RlSW5kZXggbm9kZUluZGV4KQotICAgIHsKLSAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVt
YmVyQ29uc3RhbnQobm9kZUluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuICEhbV9ncmFwaC52YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZUluZGV4KTsKLSAg
ICB9Ci0gICAgCi0gICAgdm9pZCBwcm9wYWdhdGUoTm9kZSYgbm9kZSkKLSAgICB7Ci0gICAgICAg
IGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKLSAgICAgICAgTm9kZVR5cGUgb3AgPSBzdGF0aWNfY2FzdDxOb2RlVHlwZT4obm9kZS5vcCk7
Ci0gICAgICAgIE5vZGVGbGFncyBmbGFncyA9IG5vZGUuZmxhZ3M7Ci0gICAgICAgIAotI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygiICAg
JXMgQCV1OiAlcyAiLCBHcmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxlSW5kZXgsIGFyaXRoTm9k
ZUZsYWdzQXNTdHJpbmcoZmxhZ3MpKTsKLSNlbmRpZgotICAgICAgICAKLSAgICAgICAgZmxhZ3Mg
Jj0gTm9kZVVzZWRBc01hc2s7Ci0gICAgICAgIAotICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxz
ZTsKLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAob3ApIHsKLSAgICAgICAgY2FzZSBWYWx1ZVRv
SW50MzI6Ci0gICAgICAgIGNhc2UgQml0QW5kOgotICAgICAgICBjYXNlIEJpdE9yOgotICAgICAg
ICBjYXNlIEJpdFhvcjoKLSAgICAgICAgY2FzZSBCaXRMU2hpZnQ6Ci0gICAgICAgIGNhc2UgQml0
UlNoaWZ0OgotICAgICAgICBjYXNlIEJpdFVSU2hpZnQ6IHsKLSAgICAgICAgICAgIC8vIFRoZXNl
IG9wZXJhdGlvbnMgYXJlIHBlcmZlY3RseSBoYXBweSB3aXRoIHRydW5jYXRlZCBpbnRlZ2VycywK
LSAgICAgICAgICAgIC8vIHNvIHdlIGRvbid0IHdhbnQgdG8gcHJvcGFnYXRlIGFueXRoaW5nLgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNl
IFVJbnQzMlRvTnVtYmVyOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAgICAg
IGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgICAgIGlmIChpc05vdE5lZ1plcm8obm9kZS5jaGls
ZDEoKS5pbmRleCgpKSB8fCBpc05vdE5lZ1plcm8obm9kZS5jaGlsZDIoKS5pbmRleCgpKSkKLSAg
ICAgICAgICAgICAgICBmbGFncyAmPSB+Tm9kZU5lZWRzTmVnWmVybzsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhO
b2RlRmxhZ3MoZmxhZ3MpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFyaXRoU3ViOiB7Ci0gICAgICAg
ICAgICBpZiAoaXNOb3RaZXJvKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkgfHwgaXNOb3RaZXJvKG5v
ZGUuY2hpbGQyKCkuaW5kZXgoKSkpCi0gICAgICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVk
c05lZ1plcm87Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdz
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBBcml0aE5lZ2F0ZTogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFyaXRoTXVsOgotICAgICAg
ICBjYXNlIEFyaXRoRGl2OiB7Ci0gICAgICAgICAgICAvLyBBcyBzb29uIGFzIGEgbXVsdGlwbHkg
aGFwcGVucywgd2UgY2FuIGVhc2lseSBlbmQgdXAgaW4gdGhlIHBhcnQKLSAgICAgICAgICAgIC8v
IG9mIHRoZSBkb3VibGUgZG9tYWluIHdoZXJlIHRoZSBwb2ludCBhdCB3aGljaCB5b3UgZG8gdHJ1
bmNhdGlvbgotICAgICAgICAgICAgLy8gY2FuIGNoYW5nZSB0aGUgb3V0Y29tZS4gU28sIEFyaXRo
TXVsIGFsd2F5cyBjaGVja3MgZm9yIG92ZXJmbG93Ci0gICAgICAgICAgICAvLyBubyBtYXR0ZXIg
d2hhdCwgYW5kIGFsd2F5cyBmb3JjZXMgaXRzIGlucHV0cyB0byBjaGVjayBhcyB3ZWxsLgotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5l
ZWRzTmVnWmVybzsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9n
cmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcml0aE1p
bjoKLSAgICAgICAgY2FzZSBBcml0aE1heDogewotICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZVVz
ZWRBc051bWJlcjsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9n
cmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcml0aEFi
czogewotICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVkc05lZ1plcm87Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhm
bGFncyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAg
ICAgIGNhc2UgUHV0QnlWYWw6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlciB8
IE5vZGVOZWVkc05lZ1plcm8pOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUu
Y2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyKTsK
LSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJnZUFyaXRo
Tm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNl
IEdldEJ5VmFsOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVl
ZHNOZWdaZXJvKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigp
XS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlcik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybzsK
LSAgICAgICAgICAgIGlmIChub2RlLmZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxk
SWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4Kysp
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW5bY2hpbGRJZHhdXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFub2RlLmNoaWxkMigpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5v
ZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMygpKQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0jaWYgREZHX0VOQUJMRShERUJV
R19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nKCIlc1xuIiwgY2hhbmdlZCA/
ICJDSEFOR0VEIiA6ICIiKTsKLSNlbmRpZgotICAgICAgICAKLSAgICAgICAgbV9jaGFuZ2VkIHw9
IGNoYW5nZWQ7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcHJvcGFnYXRlRm9yd2FyZCgpCi0gICAg
ewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0
YUxvZygiUHJvcGFnYXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGZvcndhcmQgWyV1XVxuIiwg
KyttX2NvdW50KTsKLSNlbmRpZgotICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9j
b21waWxlSW5kZXggPCBtX2dyYXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKLSAgICAgICAg
ICAgIHByb3BhZ2F0ZShtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgcHJvcGFnYXRlQmFja3dhcmQoKQotICAgIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coIlByb3BhZ2F0aW5nIGFyaXRobWV0
aWMgbm9kZSBmbGFncyBiYWNrd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwotI2VuZGlmCi0gICAg
ICAgIGZvciAobV9jb21waWxlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsgbV9jb21waWxlSW5kZXgt
LSA+IDA7KQotICAgICAgICAgICAgcHJvcGFnYXRlKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdKTsK
LSAgICB9Ci0gICAgCi0gICAgTm9kZUluZGV4IG1fY29tcGlsZUluZGV4OwotICAgIGJvb2wgbV9j
aGFuZ2VkOwotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICB1
bnNpZ25lZCBtX2NvdW50OwotI2VuZGlmCi19OwotCi12b2lkIHBlcmZvcm1Bcml0aE5vZGVGbGFn
c0luZmVyZW5jZShHcmFwaCYgZ3JhcGgpCi17Ci0gICAgcnVuUGhhc2U8QXJpdGhOb2RlRmxhZ3NJ
bmZlcmVuY2VQaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0K
LSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmgJ
KHJldmlzaW9uIDExMDQxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhO
b2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBE
RkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlX2gKLSNkZWZpbmUgREZHQXJpdGhOb2RlRmxh
Z3NJbmZlcmVuY2VQaGFzZV9oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVO
QUJMRShERkdfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNz
IEdyYXBoOwotCi0vLyBEZXRlcm1pbmUgd2hpY2ggYXJpdGhtZXRpYyBub2RlcycgcmVzdWx0cyBh
cmUgb25seSB1c2VkIGluIGEgY29udGV4dCB0aGF0Ci0vLyB0cnVuY2F0ZXMgdG8gaW50ZWdlciBh
bnl3YXkuIFRoaXMgaXMgZ3JlYXQgZm9yIG9wdGltaXppbmcgYXdheSBjaGVja3MgZm9yCi0vLyBv
dmVyZmxvdyBhbmQgbmVnYXRpdmUgemVyby4gTkIgdGhlIHdheSB0aGlzIHBoYXNlIGludGVncmF0
ZXMgaW50byB0aGUgcmVzdAotLy8gb2YgdGhlIERGRyBtYWtlcyBpdCBub24tb3B0aW9uYWwuIElu
c3RlYWQgb2YgcHJvdmluZyB0aGF0IGEgbm9kZSBpcyBvbmx5Ci0vLyB1c2VkIGluIGludGVnZXIg
Y29udGV4dCwgaXQgYWN0dWFsbHkgZG9lcyB0aGUgb3Bwb3NpdGU6IGZpbmRzIG5vZGVzIHRoYXQK
LS8vIGFyZSB1c2VkIGluIG5vbi1pbnRlZ2VyIGNvbnRleHRzLiBIZW5jZSBmYWlsaW5nIHRvIHJ1
biB0aGlzIHBoYXNlIHdpbGwgbWFrZQotLy8gdGhlIGNvbXBpbGVyIGFzc3VtZSB0aGF0IGFsbCBu
b2RlcyBhcmUganVzdCB1c2VkIGFzIGludGVnZXJzIQotCi12b2lkIHBlcmZvcm1Bcml0aE5vZGVG
bGFnc0luZmVyZW5jZShHcmFwaCYpOwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHOjpQaGFz
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdBcml0aE5vZGVG
bGFnc0luZmVyZW5jZVBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ry
aXZlci5jcHAJKHJldmlzaW9uIDExMDQxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNl
LmgiCiAjaW5jbHVkZSAiREZHQnl0ZUNvZGVQYXJzZXIuaCIKICNpbmNsdWRlICJERkdDRkFQaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR0NTRVBoYXNlLmgiCkBAIC02MCw3ICs1OSw2IEBAIGlubGluZSBi
b29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU0KICAgICAgICAgZGZnLnByZWRpY3RBcmd1
bWVudFR5cGVzKCk7CiAKICAgICBwZXJmb3JtUmVkdW5kYW50UGhpRWxpbWluYXRpb24oZGZnKTsK
LSAgICBwZXJmb3JtQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2UoZGZnKTsKICAgICBwZXJmb3JtUHJl
ZGljdGlvblByb3BhZ2F0aW9uKGRmZyk7CiAgICAgcGVyZm9ybUNTRShkZmcpOwogICAgIHBlcmZv
cm1WaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uKGRmZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTEwNDE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMCwxNyArMTAw
LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2dyYXBoW21fY29tcGlsZUluZGV4XS5w
cmVkaWN0KHByZWRpY3Rpb24pOwogICAgIH0KICAgICAKKyAgICBib29sIGlzTm90TmVnWmVybyhO
b2RlSW5kZXggbm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVy
Q29uc3RhbnQobm9kZUluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ZG91YmxlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZUluZGV4KTsK
KyAgICAgICAgcmV0dXJuICF2YWx1ZSAmJiAxLjAgLyB2YWx1ZSA8IDAuMDsKKyAgICB9CisgICAg
CisgICAgYm9vbCBpc05vdFplcm8oTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAg
IGlmICghbV9ncmFwaC5pc051bWJlckNvbnN0YW50KG5vZGVJbmRleCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiAhIW1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0
YW50KG5vZGVJbmRleCk7CisgICAgfQorICAgIAogICAgIHZvaWQgcHJvcGFnYXRlKE5vZGUmIG5v
ZGUpCiAgICAgewogICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIE5vZGVUeXBlIG9wID0gc3RhdGljX2Nhc3Q8
Tm9kZVR5cGU+KG5vZGUub3ApOworICAgICAgICBOb2RlRmxhZ3MgZmxhZ3MgPSBub2RlLmZsYWdz
OwogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBk
YXRhTG9nKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCk7
CisgICAgICAgIGRhdGFMb2coIiAgICVzIEAldTogJXMgIiwgR3JhcGg6Om9wTmFtZShvcCksIG1f
Y29tcGlsZUluZGV4LCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKGZsYWdzKSk7CiAjZW5kaWYKICAg
ICAgICAgCisgICAgICAgIGZsYWdzICY9IE5vZGVVc2VkQXNNYXNrOworICAgICAgICAKICAgICAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG9wKSB7
CkBAIC0xMjEsMTQgKzEzOSwyNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBHZXRMb2NhbDogewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVk
aWN0aW9uID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpOworICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlh
YmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0g
dmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAocHJlZGlj
dGlvbikKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0
aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vz
c0RhdGEtPm1lcmdlRmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFNldExvY2FsOiB7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2
YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3QobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3ModmFyaWFibGVBY2Nlc3NEYXRhLT5mbGFn
cygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBGbHVzaDogeworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGFuYWx5
c2lzIGtub3dzIHRoYXQgZmx1c2hlZCBsb2NhbHMgZXNjYXBlLgorICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0
YSgpOworICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKE5vZGVVc2Vk
QXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTE0MywxNSArMTczLDIyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJyYXlQ
b3A6CisgICAgICAgIGNhc2UgQXJyYXlQb3A6IHsKKyAgICAgICAgICAgIGlmIChub2RlLmdldEhl
YXBQcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKICAgICAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgICAgIGlmIChub2RlLmdl
dEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDogewogICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xNjUsNiArMjAyLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3Mp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTczLDYg
KzIxMiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0
aW9uKFByZWRpY3RJbnQzMik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVG
bGFncyhmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xOTIsMTAg
KzIzMywzNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0U3RyaW5nIHwgUHJlZGlj
dEludDMyIHwgUHJlZGljdERvdWJsZSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChpc05vdE5lZ1plcm8obm9kZS5jaGlsZDEoKS5pbmRleCgpKSB8fCBpc05v
dE5lZ1plcm8obm9kZS5jaGlsZDIoKS5pbmRleCgpKSkKKyAgICAgICAgICAgICAgICBmbGFncyAm
PSB+Tm9kZU5lZWRzTmVnWmVybzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2hhbmdlZCB8
PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2Rl
RmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEFyaXRoQWRkOiB7CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxl
ZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFBy
ZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQorICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChpc05vdE5lZ1plcm8obm9kZS5jaGlsZDEoKS5pbmRleCgpKSB8
fCBpc05vdE5lZ1plcm8obm9kZS5jaGlsZDIoKS5pbmRleCgpKSkKKyAgICAgICAgICAgICAgICBm
bGFncyAmPSB+Tm9kZU5lZWRzTmVnWmVybzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2hh
bmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3Mp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJp
dGhOb2RlRmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAotICAgICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7
CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBo
W25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKQEAgLTIwNiw2ICsyNzEsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoaXNOb3RaZXJvKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkgfHwgaXNOb3RaZXJvKG5v
ZGUuY2hpbGQyKCkuaW5kZXgoKSkpCisgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVk
c05lZ1plcm87CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdz
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxNiwx
MSArMjg3LDI5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBBcml0aE11bDoKICAgICAgICAgY2FzZSBBcml0aE1pbjoKLSAg
ICAgICAgY2FzZSBBcml0aE1heDoKKyAgICAgICAgY2FzZSBBcml0aE1heDogeworICAgICAgICAg
ICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9u
KCk7CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxk
MigpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsZWZ0ICYm
IHJpZ2h0KSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJl
ZGljdGlvbnMobGVmdCwgcmlnaHQpKSAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFy
aXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1iZXI7CisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVG
bGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhNdWw6CiAgICAgICAgIGNhc2Ug
QXJpdGhEaXY6IHsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdo
dCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwpAQCAtMjMxLDExICszMjAs
MjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwogICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBBcyBzb29uIGFzIGEgbXVsdGlwbHkgaGFwcGVucywgd2UgY2Fu
IGVhc2lseSBlbmQgdXAgaW4gdGhlIHBhcnQKKyAgICAgICAgICAgIC8vIG9mIHRoZSBkb3VibGUg
ZG9tYWluIHdoZXJlIHRoZSBwb2ludCBhdCB3aGljaCB5b3UgZG8gdHJ1bmNhdGlvbgorICAgICAg
ICAgICAgLy8gY2FuIGNoYW5nZSB0aGUgb3V0Y29tZS4gU28sIEFyaXRoTXVsIGFsd2F5cyBjaGVj
a3MgZm9yIG92ZXJmbG93CisgICAgICAgICAgICAvLyBubyBtYXR0ZXIgd2hhdCwgYW5kIGFsd2F5
cyBmb3JjZXMgaXRzIGlucHV0cyB0byBjaGVjayBhcyB3ZWxsLgorICAgICAgICAgICAgCisgICAg
ICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybzsKKyAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9k
ZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxk
MigpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aFNxcnQ6IHsKICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yNDcsNiArMzQ2LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVkc05lZ1plcm87CisgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yNTksNiArMzYx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGNh
c2UgSW5zdGFuY2VPZjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFBy
ZWRpY3RCb29sZWFuKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhG
bGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC0yODMsMTIgKzM4NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlm
IChpc0FycmF5IHx8IGlzU3RyaW5nIHx8IGlzQnl0ZUFycmF5IHx8IGlzSW50OEFycmF5IHx8IGlz
SW50MTZBcnJheSB8fCBpc0ludDMyQXJyYXkgfHwgaXNVaW50OEFycmF5IHx8IGlzVWludDhDbGFt
cGVkQXJyYXkgfHwgaXNVaW50MTZBcnJheSB8fCBpc1VpbnQzMkFycmF5IHx8IGlzRmxvYXQzMkFy
cmF5IHx8IGlzRmxvYXQ2NEFycmF5KQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRCeUlk
Rmx1c2g6CiAgICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQogICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rp
b24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9k
ZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBHZXRCeVZhbDogewpAQCAtMjk2LDE4ICs0MDEsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOworCisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5v
ZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKKyAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9k
ZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0UHJvcGVydHlTdG9yYWdlOiAK
ICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdE90aGVyKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6IHsKICAgICAgICAg
ICAgIGlmIChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0zMTUsNiArNDI1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgIGlmIChu
b2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0zMjcsNiArNDM4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzM5LDYgKzQ1MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6IHsKICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaC5wcmVkaWN0R2xvYmFsVmFyKG5vZGUudmFyTnVtYmVyKCksIG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0zNjYsMTIgKzQ3OSwxNCBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEZpbmFsT2JqZWN0KTsK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgTmV3QXJyYXk6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsKICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0QXJyYXkpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTM4Myw2ICs0OTgsNyBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBTdHJDYXQ6
IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0U3RyaW5nKTsK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00MDMs
NiArNTE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oY2hpbGQpOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJp
dGhOb2RlRmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtNDM2LDcgKzU1MywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgRmx1c2g6CisgICAgICAgIGNhc2Ug
UHV0QnlWYWw6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
bWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNO
ZWdaZXJvKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5t
ZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlcik7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhm
bGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKICAgICAgICAgICAg
IGJyZWFrOwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNDUyLDcgKzU3Miw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4
aXQ6CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6Ci0gICAgICAgIGNhc2UgUHV0QnlWYWw6CiAg
ICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAg
ICBjYXNlIFB1dEJ5SWREaXJlY3Q6CkBAIC00NjEsNiArNTgwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgICAg
IGNhc2UgVGVhck9mZkFjdGl2YXRpb246CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVm
YXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICAgICAgICAgLy8gVGhlc2UgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgZG9lc24ndCBk
byBhbnl0aGluZy4KQEAgLTQ3NCw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAgICAgICAgIH0KQEAgLTQ4NSw2ICs2MDYsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9j
aGFuZ2VkIHw9IGNoYW5nZWQ7CiAgICAgfQogICAgIAorICAgIGJvb2wgbWVyZ2VEZWZhdWx0QXJp
dGhGbGFncyhOb2RlJiBub2RlLCBOb2RlRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBib29s
IGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5v
ZGVOZWVkc05lZ1plcm87CisgICAgICAgIGlmIChub2RlLmZsYWdzICYgTm9kZUhhc1ZhckFyZ3Mp
IHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQo
KTsgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsgY2hp
bGRJZHgrKykKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuW2NoaWxkSWR4XV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGQxKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CisgICAgICAgICAgICBpZiAo
IW5vZGUuY2hpbGQyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFn
cyhmbGFncyk7CisgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGQzKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDMoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGNoYW5nZWQ7CisgICAgfQorICAgIAogICAgIHZvaWQgcHJvcGFnYXRlRm9yd2FyZCgp
CiAgICAgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEu
aAkocmV2aXNpb24gMTEwNDE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6
CiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKCkKICAgICAgICAgOiBtX2xvY2FsKHN0YXRpY19jYXN0
PFZpcnR1YWxSZWdpc3Rlcj4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkpCiAgICAg
ICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQorICAgICAgICAsIG1fZmxhZ3MoMCkKICAg
ICAgICAgLCBtX3Nob3VsZFVzZURvdWJsZUZvcm1hdChmYWxzZSkKICAgICB7CiAgICAgICAgIGNs
ZWFyVm90ZXMoKTsKQEAgLTQ5LDYgKzUwLDcgQEAgcHVibGljOgogICAgIFZhcmlhYmxlQWNjZXNz
RGF0YShWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwpCiAgICAgICAgIDogbV9sb2NhbChsb2NhbCkKICAg
ICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCisgICAgICAgICwgbV9mbGFncygwKQog
ICAgICAgICAsIG1fc2hvdWxkVXNlRG91YmxlRm9ybWF0KGZhbHNlKQogICAgIHsKICAgICAgICAg
Y2xlYXJWb3RlcygpOwpAQCAtMTMwLDYgKzEzMiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICAKKyAgICB1bnNpZ25lZCBmbGFncygpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3M7IH0KKyAgICAKKyAgICBib29sIG1lcmdlRmxhZ3ModW5zaWduZWQgbmV3RmxhZ3Mp
CisgICAgeworICAgICAgICBuZXdGbGFncyB8PSBtX2ZsYWdzOworICAgICAgICBpZiAobmV3Rmxh
Z3MgPT0gbV9mbGFncykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9mbGFn
cyA9IG5ld0ZsYWdzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiBwcml2YXRl
OgogICAgIC8vIFRoaXMgaXMgc2xpZ2h0bHkgc3BhY2UtaW5lZmZpY2llbnQsIHNpbmNlIGFueXRo
aW5nIHdlJ3JlIHVuaWZpZWQgd2l0aAogICAgIC8vIHdpbGwgaGF2ZSB0aGUgc2FtZSBvcGVyYW5k
IGFuZCBzaG91bGQgaGF2ZSB0aGUgc2FtZSBwcmVkaWN0aW9uLiBCdXQKQEAgLTEzOCw2ICsxNTEs
NyBAQCBwcml2YXRlOgogCiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fbG9jYWw7CiAgICAgUHJlZGlj
dGVkVHlwZSBtX3ByZWRpY3Rpb247CisgICAgdW5zaWduZWQgbV9mbGFnczsKICAgICAKICAgICBm
bG9hdCBtX3ZvdGVzWzJdOwogICAgIGJvb2wgbV9zaG91bGRVc2VEb3VibGVGb3JtYXQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131452</attachid>
            <date>2012-03-12 16:48:55 -0700</date>
            <delta_ts>2012-03-12 17:29:10 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>globalarith_patch_3.diff</filename>
            <type>text/plain</type>
            <size>35911</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEwNTAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEyLTAzLTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJpdGhtZXRpYyB1c2UgaW5mZXJlbmNlIHNob3VsZCBiZSBwcm9jZWR1cmUtZ2xvYmFsIGFuZCBz
aG91bGQgcnVuIGluIHRhbmRlbQorICAgICAgICB3aXRoIHR5cGUgcHJvcGFnYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODE5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xMTAzNDAwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogZGZnL0RG
R0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRm
Zy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
ZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6aXNOb3ROZWdaZXJvKToKKyAgICAgICAg
KFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZTo6aXNOb3RaZXJvKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6bWVyZ2VEZWZhdWx0QXJpdGhGbGFncyk6CisgICAg
ICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6OlZh
cmlhYmxlQWNjZXNzRGF0YTo6VmFyaWFibGVBY2Nlc3NEYXRhKToKKyAgICAgICAgKEpTQzo6REZH
OjpWYXJpYWJsZUFjY2Vzc0RhdGE6OmZsYWdzKToKKyAgICAgICAgKFZhcmlhYmxlQWNjZXNzRGF0
YSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjptZXJnZUZsYWdzKToK
KwogMjAxMi0wMy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IE5vZGU6Om9wIGFuZCBOb2RlOjpmbGFncyBzaG91bGQgYmUgcHJpdmF0ZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTEwNDk4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw2
IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKIAogICAgIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAotICAgIGRmZy9ERkdBcml0
aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmNwcAogICAgIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMu
Y3BwCiAgICAgZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAogICAgIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
cmV2aXNpb24gMTEwNDk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Miw4ICsxNDIsNiBAQCBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmggXAotCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHAgXAot
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFz
ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMTA0OTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNiBAQCBTT1VSQ0VTICs9
IFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgXAogICAgIGRmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcCBcCiAgICAgZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAgXAotICAgIGRmZy9ERkdBcml0
aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBcCiAgICAgZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgXAogICAgIGRmZy9ERkdDRkFQaGFz
ZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDExMDQ5
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksOCArMTY5LDYgQEAKIAkJMEZFMjI4
RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZF
MjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9w
dGlvbnMuY3BwICovOyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwICovOyB9OwotCQkwRkZGQzk1NTE0RUY5MDlBMDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxh
Z3NJbmZlcmVuY2VQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkZGQzk0OTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJ
bmZlcmVuY2VQaGFzZS5jcHAgKi87IH07Ci0JCTBGRkZDOTU2MTRFRjkwOUMwMEM3MjUzMiAvKiBE
RkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQXJp
dGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovOyB9OwogCQkwRkZG
Qzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0RDE0RUY5MDk1
MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwICovOyB9OwpAQCAtODk1LDggKzg5Myw2IEBACiAJ
CTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
LQkJMEZGRkM5NDkxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNl
UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXJpdGhO
b2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQXJpdGhOb2RlRmxhZ3NJ
bmZlcmVuY2VQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRkZDOTRB
MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNl
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdD
RkFQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRm
Zy9ERkdDRkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0RDE0
RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQ1NFUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NTRVBoYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MTAsOCArMjUwNiw2IEBACiAJCTg2
RUM5REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTBGRkZDOTQ5MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdBcml0
aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmNwcCAqLywKLQkJCQkwRkZGQzk0QTE0RUY5MDk1MDBD
NzI1MzIgLyogREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5oICovLAogCQkJCTBGNjIw
MTZEMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLywKIAkJCQkwRjYy
MDE2RTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5oICovLAogCQkJCTBGNjIw
MTZGMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggKi8sCkBAIC0zMDg2LDcg
KzMwODAsNiBAQAogCQkJCTBGOUZDOEM0MTRFMUI2MDAwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1
dEJ5SWRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAg
LyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FE
IC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZGRkM5NTYxNEVGOTA5QzAw
QzcyNTMyIC8qIERGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyogREZHUGhhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtMzcxNiw3ICszNzA5LDYgQEAKIAkJCQlDMkI5MTZDNTE0REEwNDBD
MDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUZD
OEQwMTRFNjEyRDgwMEQ1MkFFMCAvKiBEYXRhTG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
OUZDOEMzMTRFMUI1RkUwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTBGRkZDOTU1MTRFRjkwOUEwMEM3MjUzMiAvKiBERkdBcml0aE5vZGVG
bGFnc0luZmVyZW5jZVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkw
QTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1
OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGRkM5NUIxNEVGOTBBRDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5j
ZVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
aXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwCShyZXZpc2lvbiAxMTA0OTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJE
RkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkK
LQotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHUGhhc2UuaCIKLQotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBBcml0aE5vZGVGbGFnc0luZmVyZW5j
ZVBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBBcml0aE5vZGVGbGFnc0luZmVy
ZW5jZVBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwgImFyaXRobWV0
aWMgbm9kZSBmbGFncyBpbmZlcmVuY2UiKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBy
dW4oKQotICAgIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgIG1fY291bnQgPSAwOwotI2VuZGlmCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBVcCBoZXJlIHdl
IHN0YXJ0IHdpdGggYSBiYWNrd2FyZCBwYXNzIGJlY2F1c2Ugd2Ugc3VzcGVjdCB0aGF0IHRvIGJl
Ci0gICAgICAgICAgICAvLyBtb3JlIHByb2ZpdGFibGUuCi0gICAgICAgICAgICBwcm9wYWdhdGVC
YWNrd2FyZCgpOwotICAgICAgICAgICAgaWYgKCFtX2NoYW5nZWQpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOwotICAg
ICAgICAgICAgcHJvcGFnYXRlRm9yd2FyZCgpOwotICAgICAgICB9IHdoaWxlIChtX2NoYW5nZWQp
OwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgYm9vbCBpc05vdE5lZ1plcm8oTm9kZUluZGV4
IG5vZGVJbmRleCkKLSAgICB7Ci0gICAgICAgIGlmICghbV9ncmFwaC5pc051bWJlckNvbnN0YW50
KG5vZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRvdWJsZSB2
YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGVJbmRleCk7Ci0gICAgICAg
IHJldHVybiAhdmFsdWUgJiYgMS4wIC8gdmFsdWUgPCAwLjA7Ci0gICAgfQotICAgIAotICAgIGJv
b2wgaXNOb3RaZXJvKE5vZGVJbmRleCBub2RlSW5kZXgpCi0gICAgewotICAgICAgICBpZiAoIW1f
Z3JhcGguaXNOdW1iZXJDb25zdGFudChub2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXR1cm4gISFtX2dyYXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2Rl
SW5kZXgpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHByb3BhZ2F0ZShOb2RlJiBub2RlKQotICAg
IHsKLSAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIAotICAgICAgICBOb2RlVHlwZSBvcCA9IG5vZGUub3AoKTsKLSAgICAgICAg
Tm9kZUZsYWdzIGZsYWdzID0gbm9kZS5mbGFncygpOwotICAgICAgICAKLSNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coIiAgICVzIEAldTog
JXMgIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4LCBhcml0aE5vZGVGbGFnc0Fz
U3RyaW5nKGZsYWdzKSk7Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIGZsYWdzICY9IE5vZGVV
c2VkQXNNYXNrOwotICAgICAgICAKLSAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7Ci0gICAg
ICAgIAotICAgICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgot
ICAgICAgICBjYXNlIEJpdEFuZDoKLSAgICAgICAgY2FzZSBCaXRPcjoKLSAgICAgICAgY2FzZSBC
aXRYb3I6Ci0gICAgICAgIGNhc2UgQml0TFNoaWZ0OgotICAgICAgICBjYXNlIEJpdFJTaGlmdDoK
LSAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OiB7Ci0gICAgICAgICAgICAvLyBUaGVzZSBvcGVyYXRp
b25zIGFyZSBwZXJmZWN0bHkgaGFwcHkgd2l0aCB0cnVuY2F0ZWQgaW50ZWdlcnMsCi0gICAgICAg
ICAgICAvLyBzbyB3ZSBkb24ndCB3YW50IHRvIHByb3BhZ2F0ZSBhbnl0aGluZy4KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBVSW50MzJU
b051bWJlcjogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAgICAgICBjYXNlIFZh
bHVlQWRkOiB7Ci0gICAgICAgICAgICBpZiAoaXNOb3ROZWdaZXJvKG5vZGUuY2hpbGQxKCkuaW5k
ZXgoKSkgfHwgaXNOb3ROZWdaZXJvKG5vZGUuY2hpbGQyKCkuaW5kZXgoKSkpCi0gICAgICAgICAg
ICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVkc05lZ1plcm87Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdz
KGZsYWdzKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5t
ZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcml0aFN1YjogewotICAgICAgICAgICAgaWYg
KGlzTm90WmVybyhub2RlLmNoaWxkMSgpLmluZGV4KCkpIHx8IGlzTm90WmVybyhub2RlLmNoaWxk
MigpLmluZGV4KCkpKQotICAgICAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJv
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJp
dGhOZWdhdGU6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcml0aE11bDoKLSAgICAgICAgY2FzZSBB
cml0aERpdjogewotICAgICAgICAgICAgLy8gQXMgc29vbiBhcyBhIG11bHRpcGx5IGhhcHBlbnMs
IHdlIGNhbiBlYXNpbHkgZW5kIHVwIGluIHRoZSBwYXJ0Ci0gICAgICAgICAgICAvLyBvZiB0aGUg
ZG91YmxlIGRvbWFpbiB3aGVyZSB0aGUgcG9pbnQgYXQgd2hpY2ggeW91IGRvIHRydW5jYXRpb24K
LSAgICAgICAgICAgIC8vIGNhbiBjaGFuZ2UgdGhlIG91dGNvbWUuIFNvLCBBcml0aE11bCBhbHdh
eXMgY2hlY2tzIGZvciBvdmVyZmxvdwotICAgICAgICAgICAgLy8gbm8gbWF0dGVyIHdoYXQsIGFu
ZCBhbHdheXMgZm9yY2VzIGl0cyBpbnB1dHMgdG8gY2hlY2sgYXMgd2VsbC4KLSAgICAgICAgICAg
IAotICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1pl
cm87Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VB
cml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJpdGhNaW46Ci0gICAg
ICAgIGNhc2UgQXJpdGhNYXg6IHsKLSAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1i
ZXI7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VB
cml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJpdGhBYnM6IHsKLSAg
ICAgICAgICAgIGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJvOwotICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNl
IFB1dEJ5VmFsOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVl
ZHNOZWdaZXJvKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigp
XS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlcik7Ci0gICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VBcml0aE5vZGVGbGFn
cyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBHZXRCeVZh
bDogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdl
QXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVy
byk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VB
cml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm87Ci0gICAgICAg
ICAgICBpZiAobm9kZS5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwg
bm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCi0gICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW5bY2hpbGRJZHhdXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFub2RlLmNoaWxkMigpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFn
cyhmbGFncyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMygpKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDMoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0jaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nKCIlc1xuIiwgY2hhbmdlZCA/ICJDSEFO
R0VEIiA6ICIiKTsKLSNlbmRpZgotICAgICAgICAKLSAgICAgICAgbV9jaGFuZ2VkIHw9IGNoYW5n
ZWQ7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcHJvcGFnYXRlRm9yd2FyZCgpCi0gICAgewotI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygi
UHJvcGFnYXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGZvcndhcmQgWyV1XVxuIiwgKyttX2Nv
dW50KTsKLSNlbmRpZgotICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxl
SW5kZXggPCBtX2dyYXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKLSAgICAgICAgICAgIHBy
b3BhZ2F0ZShtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQg
cHJvcGFnYXRlQmFja3dhcmQoKQotICAgIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMgbm9k
ZSBmbGFncyBiYWNrd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwotI2VuZGlmCi0gICAgICAgIGZv
ciAobV9jb21waWxlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsgbV9jb21waWxlSW5kZXgtLSA+IDA7
KQotICAgICAgICAgICAgcHJvcGFnYXRlKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdKTsKLSAgICB9
Ci0gICAgCi0gICAgTm9kZUluZGV4IG1fY29tcGlsZUluZGV4OwotICAgIGJvb2wgbV9jaGFuZ2Vk
OwotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICB1bnNpZ25l
ZCBtX2NvdW50OwotI2VuZGlmCi19OwotCi12b2lkIHBlcmZvcm1Bcml0aE5vZGVGbGFnc0luZmVy
ZW5jZShHcmFwaCYgZ3JhcGgpCi17Ci0gICAgcnVuUGhhc2U8QXJpdGhOb2RlRmxhZ3NJbmZlcmVu
Y2VQaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmgJKHJldmlz
aW9uIDExMDQ5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhOb2RlRmxh
Z3NJbmZlcmVuY2VQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdBcml0
aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlX2gKLSNkZWZpbmUgREZHQXJpdGhOb2RlRmxhZ3NJbmZl
cmVuY2VQaGFzZV9oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVOQUJMRShE
RkdfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIEdyYXBo
OwotCi0vLyBEZXRlcm1pbmUgd2hpY2ggYXJpdGhtZXRpYyBub2RlcycgcmVzdWx0cyBhcmUgb25s
eSB1c2VkIGluIGEgY29udGV4dCB0aGF0Ci0vLyB0cnVuY2F0ZXMgdG8gaW50ZWdlciBhbnl3YXku
IFRoaXMgaXMgZ3JlYXQgZm9yIG9wdGltaXppbmcgYXdheSBjaGVja3MgZm9yCi0vLyBvdmVyZmxv
dyBhbmQgbmVnYXRpdmUgemVyby4gTkIgdGhlIHdheSB0aGlzIHBoYXNlIGludGVncmF0ZXMgaW50
byB0aGUgcmVzdAotLy8gb2YgdGhlIERGRyBtYWtlcyBpdCBub24tb3B0aW9uYWwuIEluc3RlYWQg
b2YgcHJvdmluZyB0aGF0IGEgbm9kZSBpcyBvbmx5Ci0vLyB1c2VkIGluIGludGVnZXIgY29udGV4
dCwgaXQgYWN0dWFsbHkgZG9lcyB0aGUgb3Bwb3NpdGU6IGZpbmRzIG5vZGVzIHRoYXQKLS8vIGFy
ZSB1c2VkIGluIG5vbi1pbnRlZ2VyIGNvbnRleHRzLiBIZW5jZSBmYWlsaW5nIHRvIHJ1biB0aGlz
IHBoYXNlIHdpbGwgbWFrZQotLy8gdGhlIGNvbXBpbGVyIGFzc3VtZSB0aGF0IGFsbCBub2RlcyBh
cmUganVzdCB1c2VkIGFzIGludGVnZXJzIQotCi12b2lkIHBlcmZvcm1Bcml0aE5vZGVGbGFnc0lu
ZmVyZW5jZShHcmFwaCYpOwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHOjpQaGFzZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdBcml0aE5vZGVGbGFnc0lu
ZmVyZW5jZVBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAJKHJldmlzaW9uIDExMDQ5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJp
dmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAKLSNpbmNsdWRlICJERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmgiCiAj
aW5jbHVkZSAiREZHQnl0ZUNvZGVQYXJzZXIuaCIKICNpbmNsdWRlICJERkdDRkFQaGFzZS5oIgog
I2luY2x1ZGUgIkRGR0NTRVBoYXNlLmgiCkBAIC02MCw3ICs1OSw2IEBAIGlubGluZSBib29sIGNv
bXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU0KICAgICAgICAgZGZnLnByZWRpY3RBcmd1bWVudFR5
cGVzKCk7CiAKICAgICBwZXJmb3JtUmVkdW5kYW50UGhpRWxpbWluYXRpb24oZGZnKTsKLSAgICBw
ZXJmb3JtQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2UoZGZnKTsKICAgICBwZXJmb3JtUHJlZGljdGlv
blByb3BhZ2F0aW9uKGRmZyk7CiAgICAgcGVyZm9ybUNTRShkZmcpOwogICAgIHBlcmZvcm1WaXJ0
dWFsUmVnaXN0ZXJBbGxvY2F0aW9uKGRmZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTEwNDk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMCwxNyArMTAwLDM1IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2dyYXBoW21fY29tcGlsZUluZGV4XS5wcmVkaWN0
KHByZWRpY3Rpb24pOwogICAgIH0KICAgICAKKyAgICBib29sIGlzTm90TmVnWmVybyhOb2RlSW5k
ZXggbm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVyQ29uc3Rh
bnQobm9kZUluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZG91Ymxl
IHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZUluZGV4KTsKKyAgICAg
ICAgcmV0dXJuICF2YWx1ZSAmJiAxLjAgLyB2YWx1ZSA8IDAuMDsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBpc05vdFplcm8oTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIGlmICgh
bV9ncmFwaC5pc051bWJlckNvbnN0YW50KG5vZGVJbmRleCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiAhIW1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG5v
ZGVJbmRleCk7CisgICAgfQorICAgIAogICAgIHZvaWQgcHJvcGFnYXRlKE5vZGUmIG5vZGUpCiAg
ICAgewogICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcCgpOworICAgICAg
ICBOb2RlRmxhZ3MgZmxhZ3MgPSBub2RlLmZsYWdzKCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coIiAgICVzIEAldTogIiwgR3Jh
cGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgZGF0YUxvZygiICAgJXMg
QCV1OiAlcyAiLCBHcmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxlSW5kZXgsIGFyaXRoTm9kZUZs
YWdzQXNTdHJpbmcoZmxhZ3MpKTsKICNlbmRpZgogICAgICAgICAKKyAgICAgICAgZmxhZ3MgJj0g
Tm9kZVVzZWRBc01hc2s7CisgICAgICAgIAogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsK
ICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAob3ApIHsKQEAgLTEyMSwxNCArMTM5LDI2IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldExvY2FsOiB7
Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQogICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhmbGFncyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgU2V0TG9jYWw6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbm9kZS52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+cHJlZGljdChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7Cisg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUu
dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNj
ZXNzRGF0YS0+cHJlZGljdChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5v
ZGVGbGFncyh2YXJpYWJsZUFjY2Vzc0RhdGEtPmZsYWdzKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEZsdXNoOiB7CisgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYW5hbHlzaXMga25vd3MgdGhhdCBmbHVzaGVkIGxv
Y2FscyBlc2NhcGUuCisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNj
ZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICB2YXJpYWJs
ZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1pl
cm8pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTQz
LDE1ICsxNzMsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcnJheVBvcDoKKyAgICAgICAgY2FzZSBBcnJheVBv
cDogeworICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKKyAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9u
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEFycmF5
UHVzaDogewogICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0
aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5v
ZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBTdHJpbmdDaGFyQ29kZUF0OiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRB
cml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
QEAgLTE2NSw2ICsyMDIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNzMsNiArMjEyLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJl
ZGljdE51bWJlcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKQEAgLTE5MiwxMCArMjMzLDM0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFByZWRpY3RTdHJpbmcgfCBQcmVkaWN0SW50MzIgfCBQcmVkaWN0RG91YmxlKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzTm90TmVnWmVy
byhub2RlLmNoaWxkMSgpLmluZGV4KCkpIHx8IGlzTm90TmVnWmVybyhub2RlLmNoaWxkMigpLmlu
ZGV4KCkpKQorICAgICAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJvOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
bWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhBZGQ6
IHsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCkgeworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNo
b3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSkpCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91
YmxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzTm90
TmVnWmVybyhub2RlLmNoaWxkMSgpLmluZGV4KCkpIHx8IGlzTm90TmVnWmVybyhub2RlLmNoaWxk
MigpLmluZGV4KCkpKQorICAgICAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJv
OworICAgICAgICAgICAgCisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQXJp
dGhBZGQ6CiAgICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKICAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAg
ICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlv
bigpOwpAQCAtMjA2LDYgKzI3MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERv
dWJsZSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc05vdFplcm8obm9kZS5j
aGlsZDEoKS5pbmRleCgpKSB8fCBpc05vdFplcm8obm9kZS5jaGlsZDIoKS5pbmRleCgpKSkKKyAg
ICAgICAgICAgICAgICBmbGFncyAmPSB+Tm9kZU5lZWRzTmVnWmVybzsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhO
b2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE2LDExICsyODcsMjkgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFyaXRo
TXVsOgogICAgICAgICBjYXNlIEFyaXRoTWluOgotICAgICAgICBjYXNlIEFyaXRoTWF4OgorICAg
ICAgICBjYXNlIEFyaXRoTWF4OiB7CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBt
X2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFByZWRpY3Rl
ZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpICYm
IG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCisgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlcjsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZs
YWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBBcml0aE11bDoKICAgICAgICAgY2FzZSBBcml0aERpdjogewogICAgICAgICAgICAg
UHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7
CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigp
XS5wcmVkaWN0aW9uKCk7CkBAIC0yMzEsMTEgKzMyMCwyMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oUHJlZGljdERvdWJsZSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFzIHNv
b24gYXMgYSBtdWx0aXBseSBoYXBwZW5zLCB3ZSBjYW4gZWFzaWx5IGVuZCB1cCBpbiB0aGUgcGFy
dAorICAgICAgICAgICAgLy8gb2YgdGhlIGRvdWJsZSBkb21haW4gd2hlcmUgdGhlIHBvaW50IGF0
IHdoaWNoIHlvdSBkbyB0cnVuY2F0aW9uCisgICAgICAgICAgICAvLyBjYW4gY2hhbmdlIHRoZSBv
dXRjb21lLiBTbywgQXJpdGhNdWwgYWx3YXlzIGNoZWNrcyBmb3Igb3ZlcmZsb3cKKyAgICAgICAg
ICAgIC8vIG5vIG1hdHRlciB3aGF0LCBhbmQgYWx3YXlzIGZvcmNlcyBpdHMgaW5wdXRzIHRvIGNo
ZWNrIGFzIHdlbGwuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2Vk
QXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3Mo
ZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIEFyaXRoU3FydDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0
aW9uKFByZWRpY3REb3VibGUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRB
cml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKQEAgLTI0Nyw2ICszNDYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRp
Y3REb3VibGUpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmbGFncyAmPSB+Tm9kZU5l
ZWRzTmVnWmVybzsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTI1OSw2ICszNjEsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIENvbXBhcmVTdHJpY3RFcToKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mOiB7CiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEJvb2xlYW4pOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI4MywxMiArMzg2LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkgfHwgaXNTdHJpbmcgfHwg
aXNCeXRlQXJyYXkgfHwgaXNJbnQ4QXJyYXkgfHwgaXNJbnQxNkFycmF5IHx8IGlzSW50MzJBcnJh
eSB8fCBpc1VpbnQ4QXJyYXkgfHwgaXNVaW50OENsYW1wZWRBcnJheSB8fCBpc1VpbnQxNkFycmF5
IHx8IGlzVWludDMyQXJyYXkgfHwgaXNGbG9hdDMyQXJyYXkgfHwgaXNGbG9hdDY0QXJyYXkpCiAg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQz
Mik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFy
aXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAgICAgIGlmIChu
b2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7CkBAIC0yOTYsMTgg
KzQwMSwyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFByZWRpY3REb3VibGUpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS5nZXRIZWFw
UHJlZGljdGlvbigpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CisKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRB
c051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFz
TnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3JhZ2U6IAogICAgICAgICBjYXNlIEdldEluZGV4ZWRQ
cm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQ
cmVkaWN0T3RoZXIpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZs
YWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBHZXRCeU9mZnNldDogewogICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRp
Y3Rpb24oKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2Rl
LmdldEhlYXBQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1
bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTMxNSw2ICs0MjUsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENvbnN0cnVjdDogewogICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkK
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQ
cmVkaWN0aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZs
YWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTMyNyw2ICs0MzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFn
cyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC0zMzksNiArNDUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIFB1dEdsb2JhbFZhcjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoLnByZWRp
Y3RHbG9iYWxWYXIobm9kZS52YXJOdW1iZXIoKSwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVk
aWN0aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdz
KG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTM2NiwxMiArNDc5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhp
czoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0
UHJlZGljdGlvbihQcmVkaWN0RmluYWxPYmplY3QpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAg
Y2FzZSBOZXdBcnJheUJ1ZmZlcjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0
aW9uKFByZWRpY3RBcnJheSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFy
aXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApAQCAtMzgzLDYgKzQ5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3Ry
aW5nQ2hhckF0OgogICAgICAgICBjYXNlIFN0ckNhdDogewogICAgICAgICAgICAgY2hhbmdlZCB8
PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RTdHJpbmcpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQwMyw2ICs1MTksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihjaGlsZCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00MzYsNyArNTUzLDEw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgY2FzZSBGbHVzaDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdz
IHwgTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOworICAgICAgICAgICAgY2hh
bmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3Mg
fCBOb2RlVXNlZEFzTnVtYmVyKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2Rl
LmNoaWxkMygpXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlciB8
IE5vZGVOZWVkc05lZ1plcm8pOwogICAgICAgICAgICAgYnJlYWs7CiAKICNpZm5kZWYgTkRFQlVH
CkBAIC00NTIsNyArNTcyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUaHJvd1JlZmVyZW5j
ZUVycm9yOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICAgICAgY2FzZSBTZXRBcmd1
bWVudDoKLSAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFz
OgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKQEAg
LTQ2MSw2ICs1ODAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAg
ICAgICAgY2FzZSBQdXRCeU9mZnNldDoKICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGVzZSBn
ZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBkb2Vzbid0IGRvIGFueXRoaW5nLgpAQCAtNDc0LDYgKzU5
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwg
ZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgfQpAQCAtNDg1LDYg
KzYwNiwyNyBAQCBwcml2YXRlOgogICAgICAgICBtX2NoYW5nZWQgfD0gY2hhbmdlZDsKICAgICB9
CiAgICAgCisgICAgYm9vbCBtZXJnZURlZmF1bHRBcml0aEZsYWdzKE5vZGUmIG5vZGUsIE5vZGVG
bGFncyBmbGFncykKKyAgICB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAg
ICBmbGFncyB8PSBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybzsKKyAgICAgICAg
aWYgKG5vZGUuZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS5maXJz
dENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCisgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoW21fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF1d
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKCFub2RlLmNoaWxkMSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkOwor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhO
b2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMigpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQyKCldLm1lcmdlQXJpdGhOb2RlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAg
aWYgKCFub2RlLmNoaWxkMygpKQorICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQzKCldLm1lcmdlQXJpdGhOb2Rl
RmxhZ3MoZmxhZ3MpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0K
KyAgICAKICAgICB2b2lkIHByb3BhZ2F0ZUZvcndhcmQoKQogICAgIHsKICNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJldmlzaW9uIDExMDQ5OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgREZHVmFyaWFibGVBY2Nlc3NEYXRh
X2gKICNkZWZpbmUgREZHVmFyaWFibGVBY2Nlc3NEYXRhX2gKIAorI2luY2x1ZGUgIkRGR05vZGVG
bGFncy5oIgogI2luY2x1ZGUgIkRGR09wZXJhbmRzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGVkVHlw
ZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtNDEsNiArNDIsNyBAQCBwdWJs
aWM6CiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKCkKICAgICAgICAgOiBtX2xvY2FsKHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkpCiAg
ICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQorICAgICAgICAsIG1fZmxhZ3MoMCkK
ICAgICAgICAgLCBtX3Nob3VsZFVzZURvdWJsZUZvcm1hdChmYWxzZSkKICAgICB7CiAgICAgICAg
IGNsZWFyVm90ZXMoKTsKQEAgLTQ5LDYgKzUxLDcgQEAgcHVibGljOgogICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YShWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwpCiAgICAgICAgIDogbV9sb2NhbChsb2NhbCkK
ICAgICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCisgICAgICAgICwgbV9mbGFncygw
KQogICAgICAgICAsIG1fc2hvdWxkVXNlRG91YmxlRm9ybWF0KGZhbHNlKQogICAgIHsKICAgICAg
ICAgY2xlYXJWb3RlcygpOwpAQCAtMTMwLDYgKzEzMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICAKKyAgICBOb2RlRmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzOyB9CisgICAgCisgICAgYm9vbCBtZXJnZUZsYWdzKE5vZGVGbGFncyBuZXdG
bGFncykKKyAgICB7CisgICAgICAgIG5ld0ZsYWdzIHw9IG1fZmxhZ3M7CisgICAgICAgIGlmIChu
ZXdGbGFncyA9PSBtX2ZsYWdzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBt
X2ZsYWdzID0gbmV3RmxhZ3M7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKIHBy
aXZhdGU6CiAgICAgLy8gVGhpcyBpcyBzbGlnaHRseSBzcGFjZS1pbmVmZmljaWVudCwgc2luY2Ug
YW55dGhpbmcgd2UncmUgdW5pZmllZCB3aXRoCiAgICAgLy8gd2lsbCBoYXZlIHRoZSBzYW1lIG9w
ZXJhbmQgYW5kIHNob3VsZCBoYXZlIHRoZSBzYW1lIHByZWRpY3Rpb24uIEJ1dApAQCAtMTM4LDYg
KzE1Miw3IEBAIHByaXZhdGU6CiAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9sb2NhbDsKICAgICBQ
cmVkaWN0ZWRUeXBlIG1fcHJlZGljdGlvbjsKKyAgICBOb2RlRmxhZ3MgbV9mbGFnczsKICAgICAK
ICAgICBmbG9hdCBtX3ZvdGVzWzJdOwogICAgIGJvb2wgbV9zaG91bGRVc2VEb3VibGVGb3JtYXQ7
Cg==
</data>
<flag name="review"
          id="134773"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>