<?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>176181</bug_id>
          
          <creation_ts>2017-08-31 13:23:28 -0700</creation_ts>
          <short_desc>Remove newBlockInsideInlineModel and anonymous inline block</short_desc>
          <delta_ts>2017-09-27 12:59:53 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344101</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-08-31 13:23:28 -0700</bug_when>
    <thetext>Anonymous inline block exists to support newBlockInsideInlineModel which was planned to replace continuations. It has never been enabled and it is time to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344103</commentid>
    <comment_count>1</comment_count>
      <attachid>319511</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-08-31 13:28:14 -0700</bug_when>
    <thetext>Created attachment 319511
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344130</commentid>
    <comment_count>2</comment_count>
      <attachid>319521</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-08-31 14:16:48 -0700</bug_when>
    <thetext>Created attachment 319521
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344131</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 14:18:54 -0700</bug_when>
    <thetext>Attachment 319521 did not pass style-queue:


ERROR: /Volumes/Data/StyleQueue/WebKit/LayoutTests/platform/ios-wk1/TestExpectations:1421:  Path does not exist.  [test/expectations] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344144</commentid>
    <comment_count>4</comment_count>
      <attachid>319525</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-08-31 14:43:19 -0700</bug_when>
    <thetext>Created attachment 319525
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344185</commentid>
    <comment_count>5</comment_count>
      <attachid>319525</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 16:27:07 -0700</bug_when>
    <thetext>Comment on attachment 319525
patch

Clearing flags on attachment: 319525

Committed r221456: &lt;http://trac.webkit.org/changeset/221456&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344186</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 16:27:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344270</commentid>
    <comment_count>7</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-08-31 18:49:16 -0700</bug_when>
    <thetext>This broke AppleWin and WinCairo is having the same issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353757</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:59:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694451&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319511</attachid>
            <date>2017-08-31 13:28:14 -0700</date>
            <delta_ts>2017-08-31 14:16:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>anon-inline-block-remove.patch</filename>
            <type>text/plain</type>
            <size>54996</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE3LTA4LTMxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbmV3QmxvY2tJbnNp
ZGVJbmxpbmVNb2RlbCBhbmQgYW5vbnltb3VzIGlubGluZSBibG9jaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vbnltb3VzIGlubGluZSBibG9jayBl
eGlzdHMgdG8gc3VwcG9ydCBuZXdCbG9ja0luc2lkZUlubGluZU1vZGVsIHdoaWNoIHdhcyBwbGFu
bmVkIGFzIHRoZSByZXBsYWNlbWVudCBmb3IgY29udGludWF0aW9ucy4KKyAgICAgICAgSXQgaGFz
IG5ldmVyIGJlZW4gZW5hYmxlZCBhbmQgaXQgaXMgdGltZSB0byByZW1vdmUgaXQuCisKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVFbGVtZW50
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUVsZW1lbnRCb3g6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUVsZW1lbnRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVG
bG93Qm94OjphZGRUb0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGxh
Y2VCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YW5vbnltb3VzSW5saW5lQmxvY2sg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpJbmxpbmVGbG93Qm94KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6Omhhc0Fub255bW91c0lubGluZUJsb2NrIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnNldEhhc0Fub255bW91
c0lubGluZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlbmRlck5hbWUgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjpyZWJ1aWxkRmxvYXRpbmdPYmplY3RTZXRGcm9tSW50cnVkaW5nRmxvYXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y2hpbGRyZW5QcmV2ZW50U2Vs
ZkNvbGxhcHNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojph
ZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxv
Z2ljYWxJbmxpbmVQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVCb3hlcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjptYXRjaGVkRW5kTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Om1hcmdpbkNvbGxhcHNlTGluZXNGcm9tU3RhcnQp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmF2b2lkc0Zsb2F0cyBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojppc0Fub255bW91c0lubGluZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmlzQW5vbnltb3VzQmxvY2sgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFsaWduQm94ZXNJ
bkJsb2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFzY2Vu
dEFuZERlc2NlbnRGb3JCb3ggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFr
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpCcmVha2lu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVSZXBs
YWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6Om5leHRMaW5lQnJlYWspOgorICAgICAgICAqIHJlbmRl
cmluZy9saW5lL0xpbmVCcmVha2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6Om1hcmdpbklu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpwcmV2RmxvYXRCb3R0b21G
cm9tQW5vbnltb3VzSW5saW5lQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZUxheW91dFN0YXRlOjptYXhGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jayk6IERl
bGV0ZWQuCisKIDIwMTctMDgtMzEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIyMTIyNik6IFtTT1VQXSBsaWJzb3VwLUNS
SVRJQ0FMICoqOiBzb3VwX2Nvb2tpZXNfdG9fY29va2llX2hlYWRlcjogYXNzZXJ0aW9uICdjb29r
aWVzICE9IE5VTEwnIGZhaWxlZApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCShyZXZpc2lv
biAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDQsOCArMjQ0LDYgQEAgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCBp
bml0aWFsPQogCiBhdHRhY2htZW50RWxlbWVudEVuYWJsZWQgaW5pdGlhbD10cnVlLCBjb25kaXRp
b25hbD1BVFRBQ0hNRU5UX0VMRU1FTlQKIAotbmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJs
ZWQgaW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKLQogZGVm
ZXJyZWRDU1NQYXJzZXJFbmFibGVkIGluaXRpYWw9ZmFsc2UKIAogcmVwYWludE91dHNpZGVMYXlv
dXRFbmFibGVkIGluaXRpYWw9ZmFsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVFbGVtZW50Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRWxlbWVudEJveC5jcHAJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgs
MTkgKzY4LDYgQEAgdm9pZCBJbmxpbmVFbGVtZW50Qm94OjpwYWludChQYWludEluZm8mIAogICAg
IGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKHJlbmRlcmVyKCkuaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygp
KSB7Ci0gICAgICAgIC8vIFRyZWF0IHBhaW50aW5nIG9mIGEgc3BlY2lhbCBpbmxpbmUtYmxvY2sg
bGluZSBsaWtlIHRoZSBwYWludGluZyBvZiBhIG5vcm1hbCBibG9jayBhbmQgZ28gdGhyb3VnaCBh
bGwgcGhhc2VzLgotICAgICAgICBQYWludFBoYXNlIG5ld1BoYXNlID0gKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlQ2hpbGRPdXRsaW5lcykgPyBQYWludFBoYXNlT3V0bGluZSA6IHBhaW50
SW5mby5waGFzZTsKLSAgICAgICAgbmV3UGhhc2UgPSAobmV3UGhhc2UgPT0gUGFpbnRQaGFzZUNo
aWxkQmxvY2tCYWNrZ3JvdW5kcykgPyBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQgOiBu
ZXdQaGFzZTsKLSAgICAgICAgCi0gICAgICAgIFBhaW50SW5mbyBpbmZvKHBhaW50SW5mbyk7Ci0g
ICAgICAgIGluZm8ucGhhc2UgPSBuZXdQaGFzZTsKLSAgICAgICAgaW5mby51cGRhdGVTdWJ0cmVl
UGFpbnRSb290Rm9yQ2hpbGRyZW4oJnJlbmRlcmVyKCkpOwotICAgICAgICBBU1NFUlQoIXJlbmRl
cmVyKCkuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSk7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnQo
aW5mbywgcGFpbnRPZmZzZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCkBAIC05MiwxNyArNzks
OSBAQCB2b2lkIElubGluZUVsZW1lbnRCb3g6OnBhaW50KFBhaW50SW5mbyYgCiB9CiAKIGJvb2wg
SW5saW5lRWxlbWVudEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91
dFVuaXQgLyogbGluZVRvcCAqLywgTGF5b3V0VW5pdCAvKmxpbmVCb3R0b20qLywKLSAgICBIaXRU
ZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCisgICAgSGl0VGVzdEFjdGlvbikKIHsKLSAgICAvLyBJ
ZiB3ZSBhcmUgYW4gYW5vbnltb3VzIGlubGluZSBibG9jaywgaG9ub3IgaGl0IHRlc3QgcGhhc2Vz
LgotICAgIGlmIChyZW5kZXJlcigpLmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgewotICAgICAg
ICBIaXRUZXN0QWN0aW9uIGNoaWxkSGl0VGVzdCA9IGhpdFRlc3RBY3Rpb247Ci0gICAgICAgIGlm
IChoaXRUZXN0QWN0aW9uID09IEhpdFRlc3RDaGlsZEJsb2NrQmFja2dyb3VuZHMpCi0gICAgICAg
ICAgICBjaGlsZEhpdFRlc3QgPSBIaXRUZXN0Q2hpbGRCbG9ja0JhY2tncm91bmQ7Ci0gICAgICAg
IHJldHVybiByZW5kZXJlcigpLm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGNoaWxkSGl0VGVzdCk7Ci0gICAgfQotCi0g
ICAgLy8gT3RoZXJ3aXNlIGhpdCB0ZXN0IGFsbCBwaGFzZXMgb2YgcmVwbGFjZWQgZWxlbWVudHMg
YXRvbWljYWxseSwgYXMgdGhvdWdoIHRoZSByZXBsYWNlZCBlbGVtZW50IGVzdGFibGlzaGVkIGl0
cworICAgIC8vIEhpdCB0ZXN0IGFsbCBwaGFzZXMgb2YgcmVwbGFjZWQgZWxlbWVudHMgYXRvbWlj
YWxseSwgYXMgdGhvdWdoIHRoZSByZXBsYWNlZCBlbGVtZW50IGVzdGFibGlzaGVkIGl0cwogICAg
IC8vIG93biBzdGFja2luZyBjb250ZXh0LiAgKFNlZSBBcHBlbmRpeCBFLjIsIHNlY3Rpb24gNi40
IG9uIGlubGluZSBibG9jay90YWJsZSBlbGVtZW50cyBpbiB0aGUgQ1NTMi4xCiAgICAgLy8gc3Bl
Y2lmaWNhdGlvbi4pCiAgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9IGFjY3VtdWxhdGVkT2Zm
c2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAko
cmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNyArNjksNiBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnNldEhhc0JhZENoaWxkTGlzdCgpCiAKICNlbmRpZgogCi1SZW5kZXJCbG9ja0Zsb3cqIElu
bGluZUZsb3dCb3g6OmFub255bW91c0lubGluZUJsb2NrKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
aGFzQW5vbnltb3VzSW5saW5lQmxvY2sgfHwgIWZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpmaXJzdENoaWxkKCkpKQotICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmZpcnN0Q2hpbGQoKSkuYW5vbnlt
b3VzSW5saW5lQmxvY2soKTsKLSAgICBpZiAoZmlyc3RDaGlsZCgpLT5yZW5kZXJlcigpLmlzQW5v
bnltb3VzSW5saW5lQmxvY2soKSkKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJCbG9j
a0Zsb3c+KGZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19
Ci0KIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Z2V0Rmxvd1NwYWNpbmdMb2dpY2FsV2lkdGgo
KQogewogICAgIExheW91dFVuaXQgdG90YWxXaWR0aCA9IG1hcmdpbkJvcmRlclBhZGRpbmdMb2dp
Y2FsTGVmdCgpICsgbWFyZ2luQm9yZGVyUGFkZGluZ0xvZ2ljYWxSaWdodCgpOwpAQCAtMTIzLDEy
ICsxMTIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqCiAgICAg
fSBlbHNlIGlmIChpczxJbmxpbmVGbG93Qm94PigqY2hpbGQpKSB7CiAgICAgICAgIGlmIChkb3du
Y2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLmhhc1RleHREZXNjZW5kYW50cygpKQogICAgICAg
ICAgICAgc2V0SGFzVGV4dERlc2NlbmRhbnRzT25BbmNlc3RvcnModGhpcyk7Ci0gICAgICAgIGlm
IChkb3duY2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLmhhc0Fub255bW91c0lubGluZUJsb2Nr
KCkpCi0gICAgICAgICAgICBzZXRIYXNBbm9ueW1vdXNJbmxpbmVCbG9jayh0cnVlKTsKICAgICB9
Ci0gICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkKLSAg
ICAgICAgc2V0SGFzQW5vbnltb3VzSW5saW5lQmxvY2sodHJ1ZSk7Ci0KICAgICBpZiAoZGVzY2Vu
ZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpICYmICFjaGlsZC0+cmVuZGVyZXIo
KS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUgPSBsaW5lU3R5bGUoKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNo
aWxkU3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7CkBAIC02NjMsMTEgKzY0Nyw2IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXIKICAgICAgICAgICAgIExheW91dFVu
aXQgcG9zQWRqdXN0ID0gbWF4QXNjZW50IC0gY2hpbGQtPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxp
bmVUeXBlKTsKICAgICAgICAgICAgIGNoaWxkLT5zZXRMb2dpY2FsVG9wKGNoaWxkLT5sb2dpY2Fs
VG9wKCkgKyB0b3AgKyBwb3NBZGp1c3QpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBp
ZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBhdXRvJiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGNoaWxkLT5yZW5kZXJl
cigpKTsKLSAgICAgICAgICAgIGNoaWxkLT5zZXRMb2dpY2FsVG9wKGJveC5sb2dpY2FsVG9wKCkp
OwotICAgICAgICB9CiAKICAgICAgICAgTGF5b3V0VW5pdCBuZXdMb2dpY2FsVG9wID0gY2hpbGQt
PmxvZ2ljYWxUb3AoKTsKICAgICAgICAgTGF5b3V0VW5pdCBuZXdMb2dpY2FsVG9wSW5jbHVkaW5n
TWFyZ2lucyA9IG5ld0xvZ2ljYWxUb3A7CkBAIC02ODUsNyArNjY0LDcgQEAgdm9pZCBJbmxpbmVG
bG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcgogICAgICAgICAgICAgICAgICAgICA6IGJveE9i
amVjdC5ib3JkZXJSaWdodCgpICsgYm94T2JqZWN0LnBhZGRpbmdSaWdodCgpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01hcmdpbnMgPSBuZXdMb2dp
Y2FsVG9wOwotICAgICAgICB9IGVsc2UgaWYgKCFjaGlsZC0+cmVuZGVyZXIoKS5pc0JSKCkgJiYg
IWNoaWxkLT5yZW5kZXJlcigpLmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgeworICAgICAgICB9
IGVsc2UgaWYgKCFjaGlsZC0+cmVuZGVyZXIoKS5pc0JSKCkpIHsKICAgICAgICAgICAgIGNvbnN0
IGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oY2hpbGQtPnJlbmRlcmVyKCkpOwogICAg
ICAgICAgICAgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01hcmdpbnMgPSBuZXdMb2dpY2FsVG9wOwog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBvdmVyU2lkZU1hcmdpbiA9IGNoaWxkLT5pc0hvcml6b250
YWwoKSA/IGJveC5tYXJnaW5Ub3AoKSA6IGJveC5tYXJnaW5SaWdodCgpOwpAQCAtNzQ0LDcgKzcy
Myw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXIKICAgICB9CiAK
ICAgICBpZiAoaXNSb290Qm94KSB7Ci0gICAgICAgIGlmICghaGFzQW5vbnltb3VzSW5saW5lQmxv
Y2soKSAmJiAoc3RyaWN0TW9kZSB8fCBoYXNUZXh0Q2hpbGRyZW4oKSB8fCAoZGVzY2VuZGFudHNI
YXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpICYmIGhhc1RleHREZXNjZW5kYW50cygpKSkp
IHsKKyAgICAgICAgaWYgKHN0cmljdE1vZGUgfHwgaGFzVGV4dENoaWxkcmVuKCkgfHwgKGRlc2Nl
bmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiBoYXNUZXh0RGVzY2VuZGFu
dHMoKSkpIHsKICAgICAgICAgICAgIGlmICghc2V0TGluZVRvcCkgewogICAgICAgICAgICAgICAg
IHNldExpbmVUb3AgPSB0cnVlOwogICAgICAgICAgICAgICAgIGxpbmVUb3AgPSBsb2dpY2FsVG9w
KCk7CkBAIC0xMDY0LDggKzEwNDMsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnNldE92ZXJmbG93
RnJvbUxvZ2ljCiAKIGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRU
ZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgLy8gQXMgbG9uZyBhcyB3ZSBkb24ndCBo
YXZlIGFuIGFub255bW91cyBpbmxpbmUgYmxvY2sgb24gb3VyIGxpbmUsIHdlIHJlc3RyaWN0IG91
ciBoaXQgdGVzdGluZyBvbmx5IHRvIHRoZSBmb3JlZ3JvdW5kIHBoYXNlLgotICAgIGlmICghaGFz
QW5vbnltb3VzSW5saW5lQmxvY2soKSAmJiBoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3Jv
dW5kKQorICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3JvdW5kKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBMYXlvdXRSZWN0IG92ZXJmbG93UmVjdCh2aXN1YWxPdmVy
Zmxvd1JlY3QobGluZVRvcCwgbGluZUJvdHRvbSkpOwpAQCAtMTE1OSw4ICsxMTM3LDcgQEAgYm9v
bCBJbmxpbmVGbG93Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaQogCiB2b2lkIElubGluZUZsb3dC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQogewotICAg
IC8vIEFzIGxvbmcgYXMgd2UgZG9uJ3QgaGF2ZSBhbiBhbm9ueW1vdXMgaW5saW5lIGJsb2NrIG9u
IG91ciBsaW5lLCB3ZSByZXN0cmljdCBvdXIgcGFpbnRpbmcgb25seSB0byBhIGZldyBwaGFzZXMu
Ci0gICAgaWYgKCFoYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpICYmIChwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VT
ZWxlY3Rpb24gJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VPdXRsaW5lICYmIHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZk91dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9
IFBhaW50UGhhc2VDaGlsZE91dGxpbmVzICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
VGV4dENsaXAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrKSkKKyAgICBpZiAo
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
T3V0bGluZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lICYmIHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2hpbGRPdXRsaW5lcyAmJiBwYWludEluZm8ucGhh
c2UgIT0gUGFpbnRQaGFzZVRleHRDbGlwICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
TWFzaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd1JlY3Qodmlz
dWFsT3ZlcmZsb3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKQEAgLTEyMDQsMTQgKzExODEs
MTEgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaQogICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUZsb3cuaXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby5vdXRsaW5lT2JqZWN0cy0+YWRkKCZp
bmxpbmVGbG93KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spIHsKLSAgICAgICAgICAgIGlmICghaGFzQW5vbnltb3Vz
SW5saW5lQmxvY2soKSkKLSAgICAgICAgICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCBwYWlu
dE9mZnNldCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAg
IH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VNYXNrKQorICAgICAgICAg
ICAgcGFpbnRNYXNrKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIC8vIFBhaW50IG91ciBiYWNrZ3JvdW5kLCBib3JkZXIgYW5kIGJveC1zaGFkb3cu
Ci0gICAgICAgICAgICBpZiAoIWhhc0Fub255bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgICAg
ICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICAg
ICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAg
ICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guaAkocmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAg
ICAgICwgbV9oYXNBbm5vdGF0aW9uc0JlZm9yZShmYWxzZSkKICAgICAgICAgLCBtX2hhc0Fubm90
YXRpb25zQWZ0ZXIoZmFsc2UpCiAgICAgICAgICwgbV9pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoZmFs
c2UpCi0gICAgICAgICwgbV9oYXNBbm9ueW1vdXNJbmxpbmVCbG9jayhmYWxzZSkKICNpZiAhQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKICAgICAgICAgLCBtX2hhc0Jh
ZENoaWxkTGlzdChmYWxzZSkKICNlbmRpZgpAQCAtMjExLDEwICsyMTAsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRIYXNUZXh0Q2hpbGRyZW4oKSB7IG1faGFzVGV4dENoaWxkcmVuID0gdHJ1ZTsg
c2V0SGFzVGV4dERlc2NlbmRhbnRzKCk7IH0KICAgICB2b2lkIHNldEhhc1RleHREZXNjZW5kYW50
cygpIHsgbV9oYXNUZXh0RGVzY2VuZGFudHMgPSB0cnVlOyB9CiAgICAgCi0gICAgYm9vbCBoYXNB
bm9ueW1vdXNJbmxpbmVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQW5vbnltb3VzSW5saW5l
QmxvY2s7IH0KLSAgICB2b2lkIHNldEhhc0Fub255bW91c0lubGluZUJsb2NrKGJvb2wgYikgeyBt
X2hhc0Fub255bW91c0lubGluZUJsb2NrID0gYjsgfQotICAgIFJlbmRlckJsb2NrRmxvdyogYW5v
bnltb3VzSW5saW5lQmxvY2soKSBjb25zdDsKLSAgICAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKSBjb25zdDsKICAgICB2b2lkIHNldEhhc0JhZENoaWxkTGlzdCgpOwogCkBAIC0zNDMsNyAr
MzM4LDYgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1fbGluZUJyZWFrQmlkaVN0YXR1c0xh
c3QgOiA1OyAvLyBVQ2hhckRpcmVjdGlvbgogCiAgICAgdW5zaWduZWQgbV9pc0ZpcnN0QWZ0ZXJQ
YWdlQnJlYWsgOiAxOwotICAgIHVuc2lnbmVkIG1faGFzQW5vbnltb3VzSW5saW5lQmxvY2sgOiAx
OwogCiAgICAgLy8gRW5kIG9mIFJvb3RJbmxpbmVCb3gtc3BlY2lmaWMgbWVtYmVycy4KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMjE0
MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTM0LDEwICsyOTM0LDYgQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzTGluZUlm
RW1wdHkoKSBjb25zdAogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUg
bGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKLSAgICAvLyBBbm9ueW1vdXMgaW5saW5lIGJsb2Nr
cyBkb24ndCBpbmNsdWRlIG1hcmdpbnMgb3IgYW55IHJlYWwgbGluZSBoZWlnaHQuCi0gICAgaWYg
KGlzQW5vbnltb3VzSW5saW5lQmxvY2soKSAmJiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9u
T25Db250YWluaW5nTGluZSkKLSAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBIb3Jpem9udGFs
TGluZSA/IGhlaWdodCgpIDogd2lkdGgoKTsKLSAgICAKICAgICAvLyBJbmxpbmUgYmxvY2tzIGFy
ZSByZXBsYWNlZCBlbGVtZW50cy4gT3RoZXJ3aXNlLCBqdXN0IHBhc3Mgb2ZmIHRvCiAgICAgLy8g
dGhlIGJhc2UgY2xhc3MuICBJZiB3ZSdyZSBiZWluZyBxdWVyaWVkIGFzIHRob3VnaCB3ZSdyZSB0
aGUgcm9vdCBsaW5lCiAgICAgLy8gYm94LCB0aGVuIHRoZSBmYWN0IHRoYXQgd2UncmUgYW4gaW5s
aW5lLWJsb2NrIGlzIGlycmVsZXZhbnQsIGFuZCB3ZSBiZWhhdmUKQEAgLTI5NjEsOSArMjk1Nyw2
IEBAIGludCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmEKICAgICAvLyBib3gs
IHRoZW4gdGhlIGZhY3QgdGhhdCB3ZSdyZSBhbiBpbmxpbmUtYmxvY2sgaXMgaXJyZWxldmFudCwg
YW5kIHdlIGJlaGF2ZQogICAgIC8vIGp1c3QgbGlrZSBhIGJsb2NrLgogICAgIGlmIChpc1JlcGxh
Y2VkKCkgJiYgbGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIHsK
LSAgICAgICAgaWYgKGlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVy
biBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBoZWlnaHQoKSA6IHdpZHRoKCk7Ci0gICAg
ICAgIAogICAgICAgICAvLyBGb3IgImxlYWYiIHRoZW1lIG9iamVjdHMsIGxldCB0aGUgdGhlbWUg
ZGVjaWRlIHdoYXQgdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGlzLgogICAgICAgICAvLyBGSVhNRTog
TWlnaHQgYmUgYmV0dGVyIHRvIGhhdmUgYSBjdXN0b20gQ1NTIHByb3BlcnR5IGluc3RlYWQsIHNv
IHRoYXQgaWYgdGhlIHRoZW1lCiAgICAgICAgIC8vIGlzIHR1cm5lZCBvZmYsIGNoZWNrYm94ZXMv
cmFkaW9zIHdpbGwgc3RpbGwgaGF2ZSBkZWNlbnQgYmFzZWxpbmVzLgpAQCAtMzYwOCw4ICszNjAx
LDYgQEAgY29uc3QgY2hhciogUmVuZGVyQmxvY2s6OnJlbmRlck5hbWUoKSBjbwogICAgICAgICBy
ZXR1cm4gIlJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSI7CiAgICAgaWYgKGlzQW5vbnltb3VzQmxv
Y2soKSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAoYW5vbnltb3VzKSI7Ci0gICAgaWYg
KGlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAo
YW5vbnltb3VzIGlubGluZS1ibG9jaykiOwogICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB3
aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBsZW1lbnRl
ZC4KICAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxv
Y2sgKGdlbmVyYXRlZCkiOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsMTcgKzI0MSwx
NCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVidWlsZEZsb2F0aW5nT2JqCiAgICAgLy8gV2Ug
c2hvdWxkIG5vdCBwcm9jZXNzIGZsb2F0cyBpZiB0aGUgcGFyZW50IG5vZGUgaXMgbm90IGEgUmVu
ZGVyQmxvY2suIE90aGVyd2lzZSwgd2Ugd2lsbCBhZGQgCiAgICAgLy8gZmxvYXRzIGluIGFuIGlu
dmFsaWQgY29udGV4dC4gVGhpcyB3aWxsIGNhdXNlIGEgY3Jhc2ggYXJpc2luZyBmcm9tIGEgYmFk
IGNhc3Qgb24gdGhlIHBhcmVudC4KICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzgwNDk3NTM+
LCB3aGVyZSBmbG9hdCBwcm9wZXJ0eSBpcyBhcHBsaWVkIG9uIGEgdGV4dCBub2RlIGluIGEgU1ZH
LgotICAgIGJvb2wgaXNCbG9ja0luc2lkZUlubGluZSA9IGlzQW5vbnltb3VzSW5saW5lQmxvY2so
KTsKLSAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KCkpICYmICFpc0Jsb2NrSW5z
aWRlSW5saW5lKQorICAgIGlmICghaXM8UmVuZGVyQmxvY2tGbG93PihwYXJlbnQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIEZpcnN0IGFkZCBpbiBmbG9hdHMgZnJvbSB0aGUgcGFyZW50
LiBTZWxmLWNvbGxhcHNpbmcgYmxvY2tzIGxldCB0aGVpciBwYXJlbnQgdHJhY2sgYW55IGZsb2F0
cyB0aGF0IGludHJ1ZGUgaW50bwogICAgIC8vIHRoZW0gKGFzIG9wcG9zZWQgdG8gZmxvYXRzIHRo
ZXkgY29udGFpbiB0aGVtc2VsdmVzKSBzbyBjaGVjayBmb3IgdGhvc2UgaGVyZSB0b28uCi0gICAg
UmVuZGVyQmxvY2tGbG93JiBwYXJlbnRCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4o
aXNCbG9ja0luc2lkZUlubGluZSA/ICpjb250YWluaW5nQmxvY2soKSA6ICpwYXJlbnQoKSk7Ci0g
ICAgYm9vbCBwYXJlbnRIYXNGbG9hdHMgPSBpc0Jsb2NrSW5zaWRlSW5saW5lID8gcGFyZW50Qmxv
Y2suY29udGFpbnNGbG9hdHMoKSA6IGZhbHNlOwotICAgIFJlbmRlckJsb2NrRmxvdyogcHJldmlv
dXNCbG9jayA9IG51bGxwdHI7Ci0gICAgaWYgKCFpc0Jsb2NrSW5zaWRlSW5saW5lKQotICAgICAg
ICBwcmV2aW91c0Jsb2NrID0gcHJldmlvdXNTaWJsaW5nV2l0aE92ZXJoYW5naW5nRmxvYXRzKHBh
cmVudEhhc0Zsb2F0cyk7CisgICAgYXV0byYgcGFyZW50QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJC
bG9ja0Zsb3c+KCpwYXJlbnQoKSk7CisgICAgYm9vbCBwYXJlbnRIYXNGbG9hdHMgPSBmYWxzZTsK
KyAgICBSZW5kZXJCbG9ja0Zsb3cqIHByZXZpb3VzQmxvY2sgPSBwcmV2aW91c1NpYmxpbmdXaXRo
T3ZlcmhhbmdpbmdGbG9hdHMocGFyZW50SGFzRmxvYXRzKTsKICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxUb3BPZmZzZXQgPSBsb2dpY2FsVG9wKCk7CiAgICAgaWYgKHBhcmVudEhhc0Zsb2F0cyB8fCAo
cGFyZW50QmxvY2subG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKCkgPiBsb2dpY2FsVG9wT2Zmc2V0
ICYmIHByZXZpb3VzQmxvY2sgJiYgcHJldmlvdXNCbG9jay0+aXNTZWxmQ29sbGFwc2luZ0Jsb2Nr
KCkpKQogICAgICAgICBhZGRJbnRydWRpbmdGbG9hdHMoJnBhcmVudEJsb2NrLCAmcGFyZW50Qmxv
Y2ssIHBhcmVudEJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudCgpLCBsb2dpY2FsVG9w
T2Zmc2V0KTsKQEAgLTk5NSwyMCArOTkyLDcgQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OmNoaWxk
cmVuUHJldmVudFNlbAogICAgIGlmICghY2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgcmV0dXJu
IFJlbmRlckJsb2NrOjpjaGlsZHJlblByZXZlbnRTZWxmQ29sbGFwc2luZygpOwogCi0gICAgLy8g
SWYgdGhlIGJsb2NrIGhhcyBpbmxpbmUgY2hpbGRyZW4sIHNlZSBpZiB3ZSBnZW5lcmF0ZWQgYW55
IGxpbmUgYm94ZXMuIElmIHdlIGhhdmUgYW55Ci0gICAgLy8gbGluZSBib3hlcywgdGhlbiB3ZSBj
YW4gb25seSBiZSBzZWxmLWNvbGxhcHNpbmcgaWYgd2UgaGF2ZSBub3RoaW5nIGJ1dCBhbm9ueW1v
dXMgaW5saW5lIGJsb2NrcwotICAgIC8vIHRoYXQgYXJlIGFsc28gc2VsZi1jb2xsYXBzaW5nIGlu
c2lkZSB1cy4KLSAgICBpZiAoIWhhc0xpbmVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICBpZiAoc2ltcGxlTGluZUxheW91dCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsgLy8g
V2UgaGF2ZSBzaW1wbGUgbGluZSBsYXlvdXQgbGluZXMsIHNvIHdlIGNhbid0IGJlIHNlbGYtY29s
bGFwc2luZy4KLSAgICAKLSAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RSb290Qm94KCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgIGlmICghY2hpbGQt
Pmhhc0Fub255bW91c0lubGluZUJsb2NrKCkgfHwgIWNoaWxkLT5hbm9ueW1vdXNJbmxpbmVCbG9j
aygpLT5pc1NlbGZDb2xsYXBzaW5nQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7IC8vIFdlIGhhdmUgbm8gbGluZSBib3hlcywgc28gd2Ug
bXVzdCBiZSBzZWxmLWNvbGxhcHNpbmcuCisgICAgcmV0dXJuIGhhc0xpbmVzKCk7CiB9CiAKIExh
eW91dFVuaXQgUmVuZGVyQmxvY2tGbG93Ojpjb2xsYXBzZU1hcmdpbnMoUmVuZGVyQm94JiBjaGls
ZCwgTWFyZ2luSW5mbyYgbWFyZ2luSW5mbykKQEAgLTE3MDQsOCArMTY4OCw2IEBAIHN0YXRpYyB2
b2lkIGNsZWFyU2hvdWxkQnJlYWtBdExpbmVUb0F2b2kKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmFkanVzdExpbmVQb3NpdGlvbkZvclBhZ2luYXRpb24oUm9vdElubGluZUJveCogbGluZUJveCwg
TGF5b3V0VW5pdCYgZGVsdGEsIGJvb2wmIG92ZXJmbG93c1JlZ2lvbiwgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCkKIHsKLSAgICAvLyBGSVhNRTogSWdub3JlIGFub255bW91cyBpbmxpbmUg
YmxvY2tzLiBIYW5kbGUgdGhlIGRlbHRhIGFscmVhZHkgaGF2aW5nIGJlZW4gc2V0IGJlY2F1c2Ug
b2YKLSAgICAvLyBjb2xsYXBzaW5nIG1hcmdpbnMgZnJvbSBhIHByZXZpb3VzIGFub255bW91cyBp
bmxpbmUgYmxvY2suCiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgcGFnaW5hdGUgdXNpbmcgbGlu
ZSBvdmVyZmxvdy4gVGhpcyBlbnN1cmVzIHRoYXQgbGluZXMgZG9uJ3Qgb3ZlcmxhcCBhdCBhbGwg
d2hlbiB3ZQogICAgIC8vIHB1dCBhIHN0cnV0IGJldHdlZW4gdGhlbSBmb3IgcGFnaW5hdGlvbiBw
dXJwb3Nlcy4gSG93ZXZlciwgdGhpcyByZWFsbHkgaXNuJ3QgdGhlIGRlc2lyZWQgcmVuZGVyaW5n
LCBzaW5jZQogICAgIC8vIHRoZSBsaW5lIG9uIHRoZSB0b3Agb2YgdGhlIG5leHQgcGFnZSB3aWxs
IGFwcGVhciB0b28gZmFyIGRvd24gcmVsYXRpdmUgdG8gdGhlIHNhbWUga2luZCBvZiBsaW5lIGF0
IHRoZSB0b3AKQEAgLTQyMjMsOCArNDIwNSw2IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21w
dXRlSW5saW5lUHJlZmUKICAgICB3aGlsZSAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGNoaWxkSXRl
cmF0b3IubmV4dCgpKSB7CiAgICAgICAgIGJvb2wgYXV0b1dyYXAgPSBjaGlsZC0+aXNSZXBsYWNl
ZCgpID8gY2hpbGQtPnBhcmVudCgpLT5zdHlsZSgpLmF1dG9XcmFwKCkgOgogICAgICAgICAgICAg
Y2hpbGQtPnN0eWxlKCkuYXV0b1dyYXAoKTsKLSAgICAgICAgYm9vbCBpc0Fub255bW91c0lubGlu
ZUJsb2NrID0gY2hpbGQtPmlzQW5vbnltb3VzSW5saW5lQmxvY2soKTsKLSAgICAgICAgCiAgICAg
ICAgIGlmICghY2hpbGQtPmlzQlIoKSkgewogICAgICAgICAgICAgLy8gU3RlcCBPbmU6IGRldGVy
bWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBuZWVkIHRvIHRlcm1pbmF0ZSBvdXIgY3VycmVudCBsaW5l
LgogICAgICAgICAgICAgLy8gRWFjaCBkaXNjcmV0ZSBjaHVuayBjYW4gYmVjb21lIHRoZSBuZXcg
bWluLXdpZHRoLCBpZiBpdCBpcyB0aGUgd2lkZXN0IGNodW5rCkBAIC00MzE1LDIxICs0Mjk1LDE5
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmUKICAgICAgICAgICAg
ICAgICAgICAgY2xlYXJQcmV2aW91c0Zsb2F0ID0gZmFsc2U7CiAKICAgICAgICAgICAgICAgICBi
b29sIGNhbkJyZWFrUmVwbGFjZWRFbGVtZW50ID0gIWNoaWxkLT5pc0ltYWdlKCkgfHwgYWxsb3dJ
bWFnZXNUb0JyZWFrOwotICAgICAgICAgICAgICAgIGlmICgoKGNhbkJyZWFrUmVwbGFjZWRFbGVt
ZW50ICYmIChhdXRvV3JhcCB8fCBvbGRBdXRvV3JhcCkgJiYgKCFpc1ByZXZDaGlsZElubGluZUZs
b3cgfHwgc2hvdWxkQnJlYWtMaW5lQWZ0ZXJUZXh0KSkgfHwgY2xlYXJQcmV2aW91c0Zsb2F0KSB8
fCBpc0Fub255bW91c0lubGluZUJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGls
ZC0+aXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpICYmIHN0eWxlVG9Vc2UuY29sbGFwc2VXaGl0ZVNw
YWNlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpcFRyYWlsaW5nU3BhY2UoaW5saW5l
TWF4LCBpbmxpbmVNaW4sIHRyYWlsaW5nU3BhY2VDaGlsZCk7CisgICAgICAgICAgICAgICAgaWYg
KCgoY2FuQnJlYWtSZXBsYWNlZEVsZW1lbnQgJiYgKGF1dG9XcmFwIHx8IG9sZEF1dG9XcmFwKSAm
JiAoIWlzUHJldkNoaWxkSW5saW5lRmxvdyB8fCBzaG91bGRCcmVha0xpbmVBZnRlclRleHQpKSB8
fCBjbGVhclByZXZpb3VzRmxvYXQpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxX
aWR0aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKICAgICAg
ICAgICAgICAgICAgICAgaW5saW5lTWluID0gMDsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSdyZSBzdXBwb3NlZCB0byBjbGVhciB0aGUgcHJldmlvdXMgZmxv
YXQsIHRoZW4gdGVybWluYXRlIG1heHdpZHRoIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgaWYg
KGNsZWFyUHJldmlvdXNGbG9hdCB8fCBpc0Fub255bW91c0lubGluZUJsb2NrKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGNsZWFyUHJldmlvdXNGbG9hdCkgewogICAgICAgICAgICAgICAgICAgICBt
YXhMb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtYXhMb2dpY2FsV2lkdGgsIGlubGluZU1h
eCk7CiAgICAgICAgICAgICAgICAgICAgIGlubGluZU1heCA9IDA7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgLy8gQWRkIGluIHRleHQtaW5kZW50LiBUaGlzIGlzIGFkZGVk
IGluIG9ubHkgb25jZS4KLSAgICAgICAgICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVudCAmJiAh
Y2hpbGQtPmlzRmxvYXRpbmcoKSAmJiAhaXNBbm9ueW1vdXNJbmxpbmVCbG9jaykgeworICAgICAg
ICAgICAgICAgIGlmICghYWRkZWRUZXh0SW5kZW50ICYmICFjaGlsZC0+aXNGbG9hdGluZygpKSB7
CiAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgY2VpbGVkSW5kZW50ID0gdGV4dEluZGVu
dC5jZWlsVG9GbG9hdCgpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1pbiArPSBjZWlsZWRJ
bmRlbnQ7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4ICs9IGNlaWxlZEluZGVudDsKQEAg
LTQzNDAsMTMgKzQzMTgsMTMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQ
cmVmZQogICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWRUZXh0SW5kZW50ID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGNh
bkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgJiYgIWFkZGVkU3RhcnRQdW5jdHVhdGlvbkhhbmcgJiYg
IWNoaWxkLT5pc0Zsb2F0aW5nKCkgJiYgIWlzQW5vbnltb3VzSW5saW5lQmxvY2spCisgICAgICAg
ICAgICAgICAgaWYgKGNhbkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgJiYgIWFkZGVkU3RhcnRQdW5j
dHVhdGlvbkhhbmcgJiYgIWNoaWxkLT5pc0Zsb2F0aW5nKCkpCiAgICAgICAgICAgICAgICAgICAg
IGFkZGVkU3RhcnRQdW5jdHVhdGlvbkhhbmcgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgLy8g
QWRkIG91ciB3aWR0aCB0byB0aGUgbWF4LgogICAgICAgICAgICAgICAgIGlubGluZU1heCArPSBz
dGQ6Om1heDxmbG9hdD4oMCwgY2hpbGRNYXgpOwogCi0gICAgICAgICAgICAgICAgaWYgKCghYXV0
b1dyYXAgfHwgIWNhbkJyZWFrUmVwbGFjZWRFbGVtZW50IHx8IChpc1ByZXZDaGlsZElubGluZUZs
b3cgJiYgIXNob3VsZEJyZWFrTGluZUFmdGVyVGV4dCkpICYmICFpc0Fub255bW91c0lubGluZUJs
b2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKCghYXV0b1dyYXAgfHwgIWNhbkJyZWFrUmVwbGFj
ZWRFbGVtZW50IHx8IChpc1ByZXZDaGlsZElubGluZUZsb3cgJiYgIXNob3VsZEJyZWFrTGluZUFm
dGVyVGV4dCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNGbG9hdGluZygp
KQogICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lk
dGgobWluTG9naWNhbFdpZHRoLCBjaGlsZE1pbik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UK
QEAgLTQzNTYsMTMgKzQzMzQsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGlu
ZVByZWZlCiAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdp
ZHRoKG1pbkxvZ2ljYWxXaWR0aCwgY2hpbGRNaW4pOwogCiAgICAgICAgICAgICAgICAgICAgIC8v
IE5vdyBzdGFydCBhIG5ldyBsaW5lLgotICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSAw
OwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5p
c0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRl
cm1pbmF0ZSBtYXggd2lkdGggYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIG1heExv
Z2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1heExvZ2ljYWxXaWR0aCwgY2hpbGRNYXgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWF4ID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSAwOyAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG9XcmFwICYm
IGNhbkJyZWFrUmVwbGFjZWRFbGVtZW50ICYmIGlzUHJldkNoaWxkSW5saW5lRmxvdykgewpAQCAt
NDQ4OCw4ICs0NDYwLDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVm
ZQogICAgICAgICAgICAgICAgICAgICBpbmxpbmVNYXggKz0gc3RkOjptYXg8ZmxvYXQ+KDAsIGNo
aWxkTWF4KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gSWdub3JlIHNwYWNlcyBh
ZnRlciBhIGxpc3QgbWFya2VyIGFuZCBhbHNvIGFmdGVyIGFuIGFub255bW91cyBpbmxpbmUgYmxv
Y2suCi0gICAgICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdE1hcmtlcigpIHx8IGlzQW5vbnltb3Vz
SW5saW5lQmxvY2spCisgICAgICAgICAgICAvLyBJZ25vcmUgc3BhY2VzIGFmdGVyIGEgbGlzdCBt
YXJrZXIuCisgICAgICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdE1hcmtlcigpKQogICAgICAgICAg
ICAgICAgIHN0cmlwRnJvbnRTcGFjZXMgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWluTG9naWNhbFdpZHRoLCBp
bmxpbmVNaW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaAkocmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTIsNyArNTkyLDYgQEAgcHJpdmF0ZTog
ICAgICAgIAogICAgIC8vIGxpbmUsIGkuZS4sIHRoYXQgaXQgY2FuJ3QgYmUgcmUtdXNlZC4KICAg
ICBib29sIGxpbmVXaWR0aEZvclBhZ2luYXRlZExpbmVDaGFuZ2VkKFJvb3RJbmxpbmVCb3gqLCBM
YXlvdXRVbml0IGxpbmVEZWx0YSwgUmVuZGVyRmxvd1RocmVhZCopIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KGNvbnN0IEVUZXh0QWxpZ24mLCBjb25zdCBS
b290SW5saW5lQm94KiwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxM
ZWZ0LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KTsKLSAgICB2b2lkIG1hcmdpbkNvbGxh
cHNlTGluZXNGcm9tU3RhcnQoTGluZUxheW91dFN0YXRlJiwgUm9vdElubGluZUJveCogc3RvcExp
bmUpOwogLy8gRU5EIE1FVEhPRFMgREVGSU5FRCBJTiBSZW5kZXJCbG9ja0xpbmVMYXlvdXQKIAog
ICAgIGJvb2wgbmFtZWRGbG93RnJhZ21lbnROZWVkc1VwZGF0ZSgpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJ
KHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjksMTYgKzY2OSwxMSBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoCiB9CiAKIHN0YXRpYyB2b2lkIHVw
ZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMoUmVuZGVyQmxvY2tGbG93JiBibG9jaywgZmxvYXQm
IGxpbmVMb2dpY2FsTGVmdCwgZmxvYXQmIGxpbmVMb2dpY2FsUmlnaHQsIGZsb2F0JiBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgsIGJvb2wgZmlyc3RMaW5lLAotICAgIEluZGVudFRleHRPck5vdCBzaG91
bGRJbmRlbnRUZXh0LCBMYXlvdXRVbml0IGJveExvZ2ljYWxIZWlnaHQsIFJvb3RJbmxpbmVCb3gq
IHJvb3RCb3gpCisgICAgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsIExheW91dFVu
aXQgYm94TG9naWNhbEhlaWdodCkKIHsKICAgICBMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0
ID0gYmxvY2subWluTGluZUhlaWdodEZvclJlcGxhY2VkUmVuZGVyZXIoZmlyc3RMaW5lLCBib3hM
b2dpY2FsSGVpZ2h0KTsKLSAgICBpZiAocm9vdEJveC0+aGFzQW5vbnltb3VzSW5saW5lQmxvY2so
KSkgewotICAgICAgICBsaW5lTG9naWNhbExlZnQgPSBibG9jay5sb2dpY2FsTGVmdE9mZnNldEZv
ckNvbnRlbnQoYmxvY2subG9naWNhbEhlaWdodCgpKTsKLSAgICAgICAgbGluZUxvZ2ljYWxSaWdo
dCA9IGJsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQoYmxvY2subG9naWNhbEhlaWdo
dCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBsaW5lTG9naWNhbExlZnQgPSBibG9jay5sb2dp
Y2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdodCgpLCBzaG91bGRJbmRlbnRU
ZXh0LCBsaW5lTG9naWNhbEhlaWdodCk7Ci0gICAgICAgIGxpbmVMb2dpY2FsUmlnaHQgPSBibG9j
ay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgc2hvdWxk
SW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOwotICAgIH0KKyAgICBsaW5lTG9naWNhbExl
ZnQgPSBibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdodCgp
LCBzaG91bGRJbmRlbnRUZXh0LCBsaW5lTG9naWNhbEhlaWdodCk7CisgICAgbGluZUxvZ2ljYWxS
aWdodCA9IGJsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdo
dCgpLCBzaG91bGRJbmRlbnRUZXh0LCBsaW5lTG9naWNhbEhlaWdodCk7CiAgICAgYXZhaWxhYmxl
TG9naWNhbFdpZHRoID0gbGluZUxvZ2ljYWxSaWdodCAtIGxpbmVMb2dpY2FsTGVmdDsKIH0KIApA
QCAtNjk2LDEyICs2OTEsMTIgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVE
aXJlYwogICAgIGZsb2F0IGxpbmVMb2dpY2FsTGVmdDsKICAgICBmbG9hdCBsaW5lTG9naWNhbFJp
Z2h0OwogICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aDsKLSAgICB1cGRhdGVMb2dpY2Fs
SW5saW5lUG9zaXRpb25zKCp0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQs
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQsIDAs
IGxpbmVCb3gpOworICAgIHVwZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMoKnRoaXMsIGxpbmVM
b2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxSaWdodCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpc0Zp
cnN0TGluZSwgc2hvdWxkSW5kZW50VGV4dCwgMCk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5n
OwogCiAgICAgaWYgKGZpcnN0UnVuICYmIGZpcnN0UnVuLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQo
KSkgewogICAgICAgICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4o
Zmlyc3RSdW4tPnJlbmRlcmVyKCkpOwotICAgICAgICB1cGRhdGVMb2dpY2FsSW5saW5lUG9zaXRp
b25zKCp0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQsIHJlbmRlckJveC5sb2dp
Y2FsSGVpZ2h0KCksIGxpbmVCb3gpOworICAgICAgICB1cGRhdGVMb2dpY2FsSW5saW5lUG9zaXRp
b25zKCp0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQsIHJlbmRlckJveC5sb2dp
Y2FsSGVpZ2h0KCkpOwogICAgIH0KIAogICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KGxpbmVCb3gsIGxpbmVJbmZvLCB0ZXh0QWxpZ24sIGxpbmVMb2dpY2FsTGVm
dCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1biwgdGV4
dEJveERhdGFNYXAsIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgd29yZE1lYXN1cmVtZW50cyk7CkBA
IC0xMjY3LDkgKzEyNjIsNiBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0UnVuc0FuZEZs
b2F0CiAgICAgSW5saW5lQmlkaVJlc29sdmVyIHJlc29sdmVyOwogICAgIFJvb3RJbmxpbmVCb3gq
IHN0YXJ0TGluZSA9IGRldGVybWluZVN0YXJ0UG9zaXRpb24obGF5b3V0U3RhdGUsIHJlc29sdmVy
KTsKICAgICAKLSAgICBpZiAoc3RhcnRMaW5lKQotICAgICAgICBtYXJnaW5Db2xsYXBzZUxpbmVz
RnJvbVN0YXJ0KGxheW91dFN0YXRlLCBzdGFydExpbmUpOwotCiAgICAgdW5zaWduZWQgY29uc2Vj
dXRpdmVIeXBoZW5hdGVkTGluZXMgPSAwOwogICAgIGlmIChzdGFydExpbmUpIHsKICAgICAgICAg
Zm9yIChSb290SW5saW5lQm94KiBsaW5lID0gc3RhcnRMaW5lLT5wcmV2Um9vdEJveCgpOyBsaW5l
ICYmIGxpbmUtPmlzSHlwaGVuYXRlZCgpOyBsaW5lID0gbGluZS0+cHJldlJvb3RCb3goKSkKQEAg
LTEzNjksNyArMTM2MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRSdW5zQW5kRmxv
YXQKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUgPSAo
Y29udGFpbnNGbG9hdHMoKSkgPyBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkubGFzdCgpLmdldCgp
IDogbnVsbHB0cjsKIAogICAgICAgICBXb3JkTWVhc3VyZW1lbnRzIHdvcmRNZWFzdXJlbWVudHM7
Ci0gICAgICAgIGVuZCA9IGxpbmVCcmVha2VyLm5leHRMaW5lQnJlYWsocmVzb2x2ZXIsIGxheW91
dFN0YXRlLmxpbmVJbmZvKCksIGxheW91dFN0YXRlLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0
RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJl
bWVudHMpOworICAgICAgICBlbmQgPSBsaW5lQnJlYWtlci5uZXh0TGluZUJyZWFrKHJlc29sdmVy
LCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVBy
ZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMp
OwogICAgICAgICBjYWNoZVByaW9yQ2hhcmFjdGVyc0lmTmVlZGVkKHJlbmRlclRleHRJbmZvLmxp
bmVCcmVha0l0ZXJhdG9yKTsKICAgICAgICAgcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0
b3IucmVzZXRQcmlvckNvbnRleHQoKTsKICAgICAgICAgaWYgKHJlc29sdmVyLnBvc2l0aW9uKCku
YXRFbmQoKSkgewpAQCAtMTQyNywyMSArMTQxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojps
YXlvdXRSdW5zQW5kRmxvYXQKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFkanVzdG1lbnQg
PSAwOwogICAgICAgICAgICAgICAgIGJvb2wgb3ZlcmZsb3dzUmVnaW9uID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSWYgb3VyIHByZXZpb3VzIGxpbmUgd2Fz
IGFuIGFub255bW91cyBibG9jayBhbmQgd2UgYXJlIG5vdCBhbiBhbm9ueW1vdXMgYmxvY2ssCi0g
ICAgICAgICAgICAgICAgLy8gc2ltdWxhdGUgYSBtYXJnaW4gY29sbGFwc2Ugbm93IHNvIHRoYXQg
d2UgZ2V0IHRoZSBwcm9wZXIKLSAgICAgICAgICAgICAgICAvLyBpbmNyZWFzZWQgaGVpZ2h0LiBX
ZSBhbHNvIGhhdmUgdG8gc2ltdWxhdGUgYSBtYXJnaW4gY29sbGFwc2UgdG8gcHJvcGFnYXRlIG1h
cmdpbnMKLSAgICAgICAgICAgICAgICAvLyB0aHJvdWdoIHRvIHRoZSB0b3Agb2Ygb3VyIGJsb2Nr
LgotICAgICAgICAgICAgICAgIGlmICghbGluZUJveC0+aGFzQW5vbnltb3VzSW5saW5lQmxvY2so
KSkgewotICAgICAgICAgICAgICAgICAgICBSb290SW5saW5lQm94KiBwcmV2Um9vdCA9IGxpbmVC
b3gtPnByZXZSb290Qm94KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2Um9vdCAmJiBw
cmV2Um9vdC0+aGFzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQob2xkTG9naWNhbEhlaWdo
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZU1hcmdpbnNXaXRoQ2hpbGRJbmZv
KG51bGxwdHIsIG51bGxwdHIsIGxheW91dFN0YXRlLm1hcmdpbkluZm8oKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhZGp1c3RtZW50ID0gbG9naWNhbEhlaWdodCgpIC0gb2xkTG9naWNhbEhl
aWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoY3VycmVudExv
Z2ljYWxIZWlnaHQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGxheW91dFN0YXRlLm1hcmdpbkluZm8oKS5zZXRBdEJlZm9yZVNpZGVPZkJsb2NrKGZhbHNlKTsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGF5b3V0U3RhdGUubWFyZ2luSW5m
bygpLnNldEF0QmVmb3JlU2lkZU9mQmxvY2soZmFsc2UpOwogCiAgICAgICAgICAgICAgICAgaWYg
KHBhZ2luYXRlZCkKICAgICAgICAgICAgICAgICAgICAgYWRqdXN0TGluZVBvc2l0aW9uRm9yUGFn
aW5hdGlvbihsaW5lQm94LCBhZGp1c3RtZW50LCBvdmVyZmxvd3NSZWdpb24sIGxheW91dFN0YXRl
LmZsb3dUaHJlYWQoKSk7CkBAIC0xNzM1LDEyICsxNzEzLDEwIEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjpsYXlvdXRMaW5lQm94ZXMoYm8KICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hcmdp
bkVuZEZvckNoaWxkKGJveCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgYm94LmRpcnR5TGluZUJveGVzKGlzRnVsbExheW91dCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghby5pc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc0Z1bGxMYXlvdXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZWRDaGlsZHJlbi5hcHBlbmQoJmJveCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LmxheW91dElmTmVlZGVkKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVsbExheW91
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkQ2hpbGRyZW4uYXBwZW5kKCZib3gp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBib3gu
bGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKG8uaXNUZXh0T3JMaW5lQnJlYWsoKSB8fCAoaXM8UmVuZGVySW5saW5lPihvKSAmJiAhd2Fs
a2VyLmF0RW5kT2ZJbmxpbmUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVySW5s
aW5lPihvKSkKQEAgLTE3NzEsMTIgKzE3NDcsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0TGluZUJveGVzKGJvCiAgICAgLy8gZGV0ZXJtaW5pbmcgdGhlIGNvcnJlY3QgY29sbGFwc2Vk
IGJvdHRvbSBtYXJnaW4gaW5mb3JtYXRpb24uIFRoaXMgY29sbGFwc2UgaXMgb25seSBuZWNlc3Nh
cnkKICAgICAvLyBpZiBvdXIgbGFzdCBjaGlsZCB3YXMgYW4gYW5vbnltb3VzIGlubGluZSBibG9j
ayB0aGF0IG1pZ2h0IG5lZWQgdG8gcHJvcGFnYXRlIG1hcmdpbiBpbmZvcm1hdGlvbiBvdXQgdG8K
ICAgICAvLyB1cy4KLSAgICBMYXlvdXRVbml0IGJlZm9yZUVkZ2UgPSBib3JkZXJBbmRQYWRkaW5n
QmVmb3JlKCk7CiAgICAgTGF5b3V0VW5pdCBhZnRlckVkZ2UgPSBib3JkZXJBbmRQYWRkaW5nQWZ0
ZXIoKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSArIGxhc3RMaW5lQW5ub3RhdGlvbnNBZGp1
c3RtZW50OwotICAgIGlmIChsYXN0Um9vdEJveCgpICYmIGxhc3RSb290Qm94KCktPmhhc0Fub255
bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgIGhhbmRsZUFmdGVyU2lkZU9mQmxvY2soYmVmb3Jl
RWRnZSwgYWZ0ZXJFZGdlLCBsYXlvdXRTdGF0ZS5tYXJnaW5JbmZvKCkpOwotICAgIGVsc2UKLSAg
ICAgICAgc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCkgKyBhZnRlckVkZ2UpOworICAg
IHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpICsgYWZ0ZXJFZGdlKTsKIAogICAgIGlm
ICghZmlyc3RSb290Qm94KCkgJiYgaGFzTGluZUlmRW1wdHkoKSkKICAgICAgICAgc2V0TG9naWNh
bEhlaWdodChsb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZklu
dGVyaW9yTGluZUJveGVzKSk7CkBAIC0xODg0LDcgKzE4NTYsNyBAQCBSb290SW5saW5lQm94KiBS
ZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluCiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgZGlydHkg
bGluZS4KICAgICAgICAgICAgIGlmIChSb290SW5saW5lQm94KiBwcmV2Um9vdEJveCA9IGN1cnJl
bnRMaW5lLT5wcmV2Um9vdEJveCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIHBy
ZXZpb3VzIGxpbmUuCi0gICAgICAgICAgICAgICAgaWYgKCFkaXJ0aWVkQnlGbG9hdCAmJiAhY3Vy
cmVudExpbmUtPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkgJiYgKCFwcmV2Um9vdEJveC0+ZW5k
c1dpdGhCcmVhaygpCisgICAgICAgICAgICAgICAgaWYgKCFkaXJ0aWVkQnlGbG9hdCAmJiAoIXBy
ZXZSb290Qm94LT5lbmRzV2l0aEJyZWFrKCkKICAgICAgICAgICAgICAgICAgICAgfHwgIXByZXZS
b290Qm94LT5saW5lQnJlYWtPYmooKQogICAgICAgICAgICAgICAgICAgICB8fCAoaXM8UmVuZGVy
VGV4dD4oKnByZXZSb290Qm94LT5saW5lQnJlYWtPYmooKSkKICAgICAgICAgICAgICAgICAgICAg
JiYgcHJldlJvb3RCb3gtPmxpbmVCcmVha1BvcygpID49IGRvd25jYXN0PFJlbmRlclRleHQ+KCpw
cmV2Um9vdEJveC0+bGluZUJyZWFrT2JqKCkpLnRleHRMZW5ndGgoKSkpKSB7CkBAIC0yMDYyLDcg
KzIwMzQsNyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6bWF0Y2hlZEVuZExpbmUoTGluCiAgICAg
Um9vdElubGluZUJveCogb3JpZ2luYWxFbmRMaW5lID0gbGF5b3V0U3RhdGUuZW5kTGluZSgpOwog
ICAgIFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBvcmlnaW5hbEVuZExpbmU7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1MaW5lcyAmJiBsaW5lOyBpKyssIGxpbmUgPSBsaW5lLT5uZXh0Um9vdEJv
eCgpKSB7Ci0gICAgICAgIGlmIChsaW5lLT5saW5lQnJlYWtPYmooKSA9PSByZXNvbHZlci5wb3Np
dGlvbigpLnJlbmRlcmVyKCkgJiYgbGluZS0+bGluZUJyZWFrUG9zKCkgPT0gcmVzb2x2ZXIucG9z
aXRpb24oKS5vZmZzZXQoKSAmJiAhbGluZS0+aGFzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgewor
ICAgICAgICBpZiAobGluZS0+bGluZUJyZWFrT2JqKCkgPT0gcmVzb2x2ZXIucG9zaXRpb24oKS5y
ZW5kZXJlcigpICYmIGxpbmUtPmxpbmVCcmVha1BvcygpID09IHJlc29sdmVyLnBvc2l0aW9uKCku
b2Zmc2V0KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXRjaC4KICAgICAgICAgICAg
IGlmIChsaW5lLT5saW5lQnJlYWtCaWRpU3RhdHVzKCkgIT0gcmVzb2x2ZXIuc3RhdHVzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyAuLi5idXQgdGhlIGJpZGkgc3RhdGUgZG9l
c24ndCBtYXRjaC4KQEAgLTIzMDksNDYgKzIyODEsNCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
dXBkYXRlUmVnaW9uRm9yTGluCiAgICAgICAgIGxpbmVCb3gtPnNldElzRmlyc3RBZnRlclBhZ2VC
cmVhayh0cnVlKTsKIH0KIAotdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hcmdpbkNvbGxhcHNlTGlu
ZXNGcm9tU3RhcnQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgUm9vdElubGluZUJveCog
c3RvcExpbmUpCi17Ci0gICAgLy8gV2UgaGF2ZSB0byBoYW5kbGUgYW4gYW5vbnltb3VzIGlubGlu
ZSBibG9jayBzdHJlYWsgYXQgdGhlIHN0YXJ0IG9mIHRoZSBibG9jayBpbiBvcmRlciB0byBtYWtl
IHN1cmUgb3VyIG93biBtYXJnaW5zIGFyZQotICAgIC8vIGNvcnJlY3QuIFdlIG9ubHkgaGF2ZSB0
byBkbyB0aGlzIGlmIHRoZSBjaGlsZHJlbiBjYW4gcHJvcGFnYXRlIG1hcmdpbnMgb3V0IHRvIHVz
LgotICAgIGJvb2wgcmVzZXRMb2dpY2FsSGVpZ2h0ID0gZmFsc2U7Ci0gICAgaWYgKGxheW91dFN0
YXRlLm1hcmdpbkluZm8oKS5jYW5Db2xsYXBzZVdpdGhNYXJnaW5CZWZvcmUoKSkgewotICAgICAg
ICBSb290SW5saW5lQm94KiBzdGFydExpbmUgPSBmaXJzdFJvb3RCb3goKTsKLSAgICAgICAgUm9v
dElubGluZUJveCogY3VycjsKLSAgICAgICAgZm9yIChjdXJyID0gc3RhcnRMaW5lOyBjdXJyICYm
IGN1cnItPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkgJiYgbGF5b3V0U3RhdGUubWFyZ2luSW5m
bygpLmNhbkNvbGxhcHNlV2l0aE1hcmdpbkJlZm9yZSgpOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RC
b3goKSkgewotICAgICAgICAgICAgaWYgKGN1cnIgPT0gc3RvcExpbmUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKCFyZXNldExvZ2ljYWxIZWlnaHQpIHsKLSAgICAg
ICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSk7Ci0g
ICAgICAgICAgICAgICAgcmVzZXRMb2dpY2FsSGVpZ2h0ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGxheW91dEJsb2NrQ2hpbGQoKmN1cnItPmFub255bW91c0lubGluZUJsb2Nr
KCksIGxheW91dFN0YXRlLm1hcmdpbkluZm8oKSwKLSAgICAgICAgICAgICAgICBsYXlvdXRTdGF0
ZS5wcmV2RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2soKSwgbGF5b3V0U3RhdGUu
bWF4RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2soKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCi0gICAgLy8gTm93IHRoYXQgd2UndmUgaGFuZGxlZCB0aGUgdG9wIG9mIHRoZSBi
bG9jaywgaWYgdGhlIHN0b3BMaW5lIGlzbid0IGFuIGFub255bW91cyBibG9jaywgdGhlbiB3ZSdy
ZSBkb25lLgotICAgIGlmICghc3RvcExpbmUtPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIGFscmVhZHkgaGFuZGxlZCB0b3Agb2YgYmxvY2sg
d2l0aCBzdGFydExpbmUuCi0gICAgaWYgKHN0b3BMaW5lID09IGZpcnN0Um9vdEJveCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBSZS1ydW4gbWFyZ2luIGNvbGxhcHNpbmcgb24gdGhlIGJs
b2NrIHNlcXVlbmNlIHRoYXQgc3RvcExpbmUgaXMgYSBwYXJ0IG9mLgotICAgIC8vIEZpcnN0IGdv
IGJhY2t3YXJkcyB0byBnZXQgdGhlIGVudGlyZSBzZXF1ZW5jZS4KLSAgICBSb290SW5saW5lQm94
KiBwcmV2ID0gc3RvcExpbmU7Ci0gICAgZm9yICggOyBwcmV2LT5oYXNBbm9ueW1vdXNJbmxpbmVC
bG9jaygpOyBwcmV2ID0gcHJldi0+cHJldlJvb3RCb3goKSkgewotICAgIH07Ci0KLSAgICAvLyBV
cGRhdGUgdGhlIGJsb2NrIGhlaWdodCB0byB0aGUgY29ycmVjdCBzdGF0ZS4KLSAgICBzZXRMb2dp
Y2FsSGVpZ2h0KHByZXYtPmxpbmVCb3R0b21XaXRoTGVhZGluZygpKTsKLSAgICAKLSAgICAvLyBO
b3cgcnVuIG1hcmdpbiBjb2xsYXBzaW5nIG9uIHRob3NlIGxpbmVzLgotICAgIGZvciAocHJldiA9
IHByZXYtPm5leHRSb290Qm94KCk7IHByZXYgIT0gc3RvcExpbmU7IHByZXYgPSBwcmV2LT5uZXh0
Um9vdEJveCgpKQotICAgICAgICBsYXlvdXRCbG9ja0NoaWxkKCpwcmV2LT5hbm9ueW1vdXNJbmxp
bmVCbG9jaygpLCBsYXlvdXRTdGF0ZS5tYXJnaW5JbmZvKCksIGxheW91dFN0YXRlLnByZXZGbG9h
dEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jaygpLCBsYXlvdXRTdGF0ZS5tYXhGbG9hdEJv
dHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jaygpKTsKLX0KLQogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYxLDEw
ICsyNTYxLDYgQEAgYm9vbCBSZW5kZXJCb3g6Omhhc1N0cmV0Y2hlZExvZ2ljYWxXaWR0aAogCiBi
b29sIFJlbmRlckJveDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQoU2l6ZVR5cGUgd2lk
dGhUeXBlKSBjb25zdAogewotICAgIC8vIEFub255bW91cyBpbmxpbmUgYmxvY2tzIGFsd2F5cyBm
aWxsIHRoZSB3aWR0aCBvZiB0aGVpciBjb250YWluaW5nIGJsb2NrLgotICAgIGlmIChpc0Fub255
bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIC8vIE1hcnF1
ZWVzIGluIFdpbklFIGFyZSBsaWtlIGEgbWl4dHVyZSBvZiBibG9ja3MgYW5kIGlubGluZS1ibG9j
a3MuICBUaGV5IHNpemUgYXMgdGhvdWdoIHRoZXkncmUgYmxvY2tzLAogICAgIC8vIGJ1dCB0aGV5
IGFsbG93IHRleHQgdG8gc2l0IG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIG1hcnF1ZWUuCiAgICAg
aWYgKGlzRmxvYXRpbmcoKSB8fCAoaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSAmJiAhaXNI
VE1MTWFycXVlZSgpKSkKQEAgLTQ1ODIsMTQgKzQ1NzgsMTQgQEAgYm9vbCBSZW5kZXJCb3g6OnNo
cmlua1RvQXZvaWRGbG9hdHMoKSBjbwogCiBib29sIFJlbmRlckJveDo6Y3JlYXRlc05ld0Zvcm1h
dHRpbmdDb250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKGlzSW5saW5lQmxvY2tPcklubGlu
ZVRhYmxlKCkgJiYgIWlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgfHwgaXNGbG9hdGluZ09yT3V0
T2ZGbG93UG9zaXRpb25lZCgpIHx8IGhhc092ZXJmbG93Q2xpcCgpIHx8IGlzRmxleEl0ZW1JbmNs
dWRpbmdEZXByZWNhdGVkKCkKKyAgICByZXR1cm4gaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUo
KSB8fCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaGFzT3ZlcmZsb3dDbGlw
KCkgfHwgaXNGbGV4SXRlbUluY2x1ZGluZ0RlcHJlY2F0ZWQoKQogICAgICAgICB8fCBpc1RhYmxl
Q2VsbCgpIHx8IGlzVGFibGVDYXB0aW9uKCkgfHwgaXNGaWVsZHNldCgpIHx8IGlzV3JpdGluZ01v
ZGVSb290KCkgfHwgaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIHx8IGlzUmVuZGVyRmxvd1Ro
cmVhZCgpIHx8IGlzUmVuZGVyUmVnaW9uKCkKICAgICAgICAgfHwgaXNHcmlkSXRlbSgpIHx8IHN0
eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpIHx8IHN0eWxlKCkuY29sdW1uU3BhbigpOwogfQogCiBi
b29sIFJlbmRlckJveDo6YXZvaWRzRmxvYXRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKGlzUmVw
bGFjZWQoKSAmJiAhaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKSB8fCBpc0hSKCkgfHwgaXNMZWdl
bmQoKSB8fCBpc0ZpZWxkc2V0KCkgfHwgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCk7Cisg
ICAgcmV0dXJuIGlzUmVwbGFjZWQoKSB8fCBpc0hSKCkgfHwgaXNMZWdlbmQoKSB8fCBpc0ZpZWxk
c2V0KCkgfHwgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCk7CiB9CiAKIHZvaWQgUmVuZGVy
Qm94OjphZGRWaXN1YWxFZmZlY3RPdmVyZmxvdygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiwxMCAr
MzI2LDkgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogICAgIGlm
ICghYmVmb3JlQ2hpbGQgJiYgaXNBZnRlckNvbnRlbnQobGFzdENoaWxkKCkpKQogICAgICAgICBi
ZWZvcmVDaGlsZCA9IGxhc3RDaGlsZCgpOwogICAgIAotICAgIGJvb2wgdXNlTmV3QmxvY2tJbnNp
ZGVJbmxpbmVNb2RlbCA9IHNldHRpbmdzKCkubmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJs
ZWQoKTsKICAgICBib29sIGNoaWxkSW5saW5lID0gbmV3Q2hpbGRJc0lubGluZSgqbmV3Q2hpbGQs
ICp0aGlzKTsKICAgICAvLyBUaGlzIGNvZGUgaXMgZm9yIHRoZSBvbGQgYmxvY2staW5zaWRlLWlu
bGluZSBtb2RlbCB0aGF0IHVzZXMgY29udGludWF0aW9ucy4KLSAgICBpZiAoIXVzZU5ld0Jsb2Nr
SW5zaWRlSW5saW5lTW9kZWwgJiYgIWNoaWxkSW5saW5lICYmICFuZXdDaGlsZC0+aXNGbG9hdGlu
Z09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgaWYgKCFjaGlsZElubGluZSAmJiAhbmV3
Q2hpbGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAvLyBX
ZSBhcmUgcGxhY2luZyBhIGJsb2NrIGluc2lkZSBhbiBpbmxpbmUuIFdlIGhhdmUgdG8gcGVyZm9y
bSBhIHNwbGl0IG9mIHRoaXMKICAgICAgICAgLy8gaW5saW5lIGludG8gY29udGludWF0aW9ucy4g
IFRoaXMgaW52b2x2ZXMgY3JlYXRpbmcgYW4gYW5vbnltb3VzIGJsb2NrIGJveCB0byBob2xkCiAg
ICAgICAgIC8vIHxuZXdDaGlsZHwuICBXZSB0aGVuIG1ha2UgdGhhdCBibG9jayBib3ggYSBjb250
aW51YXRpb24gb2YgdGhpcyBpbmxpbmUuICBXZSB0YWtlIGFsbCBvZgpAQCAtMzUwLDY3ICszNDks
NyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKCF1c2VOZXdCbG9ja0luc2lkZUlubGluZU1vZGVs
KSB7Ci0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0OjphZGRDaGlsZChuZXdDaGlsZCwgYmVm
b3JlQ2hpbGQpOwotICAgICAgICBuZXdDaGlsZC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhz
UmVjYWxjKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGNvZGUgaXMg
Zm9yIHRoZSBuZXcgYmxvY2staW5zaWRlLWlubGluZSBtb2RlbCB0aGF0IHVzZXMgYW5vbnltb3Vz
IGlubGluZSBibG9ja3MuCi0gICAgLy8gSWYgdGhlIHJlcXVlc3RlZCBiZWZvcmVDaGlsZCBpcyBu
b3Qgb25lIG9mIG91ciBjaGlsZHJlbiwgdGhlbiB0aGlzIGlzIG1vc3QgbGlrZWx5IGJlY2F1c2UK
LSAgICAvLyB0aGVyZSBpcyBhbiBhbm9ueW1vdXMgaW5saW5lLWJsb2NrIGJveCB3aXRoaW4gdGhp
cyBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgYmVmb3JlQ2hpbGQuCi0gICAgLy8gSW5zZXJ0IHRo
ZSBjaGlsZCBpbnRvIHRoZSBhbm9ueW1vdXMgaW5saW5lLWJsb2NrIGJveCBpbnN0ZWFkIG9mIGhl
cmUuCi0gICAgLy8gQSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdGhhdCB0aGUgYmVmb3JlQ2hpbGQg
aXMgYW4gYW5vbnltb3VzIGJsb2NrIGluc2lkZSB0aGUgYW5vbnltb3VzIGlubGluZSBibG9jay4K
LSAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgaW5saW5lcyBhcmUgaW5zZXJ0ZWQgaW4gYmV0d2Vl
biB0d28gb2YgdGhlIGFub255bW91cyBpbmxpbmUgYmxvY2sncyBibG9jay1sZXZlbAotICAgIC8v
IGNoaWxkcmVuIGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQuCi0gICAgaWYgKGJlZm9yZUNoaWxk
ICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIEFTU0VSVChiZWZv
cmVDaGlsZC0+cGFyZW50KCkpOwotICAgICAgICBBU1NFUlQoYmVmb3JlQ2hpbGQtPnBhcmVudCgp
LT5pc0Fub255bW91c0lubGluZUJsb2NrKCkgfHwgYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5pc0Fu
b255bW91c0Jsb2NrKCkpOwotICAgICAgICBpZiAoYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5pc0Fu
b255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGlmICghY2hpbGRJbmxpbmUgfHwg
KGNoaWxkSW5saW5lICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+Zmlyc3RDaGlsZCgpICE9IGJl
Zm9yZUNoaWxkKSkKLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZC0+cGFyZW50KCktPmFkZENo
aWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5pc0Fub255bW91c0Jsb2NrKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVCghYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5wYXJlbnQoKSB8fCBi
ZWZvcmVDaGlsZC0+cGFyZW50KCktPnBhcmVudCgpLT5pc0Fub255bW91c0lubGluZUJsb2NrKCkp
OwotICAgICAgICAgICAgQVNTRVJUKGNoaWxkSW5saW5lKTsKLSAgICAgICAgICAgIGlmIChjaGls
ZElubGluZSB8fCAoIWNoaWxkSW5saW5lICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+Zmlyc3RD
aGlsZCgpICE9IGJlZm9yZUNoaWxkKSkKLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZC0+cGFy
ZW50KCktPmFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZCk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgYWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkLT5wYXJlbnQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghY2hpbGRJ
bmxpbmUpIHsKLSAgICAgICAgLy8gV2UgYXJlIHBsYWNpbmcgYSBibG9jayBpbnNpZGUgYW4gaW5s
aW5lLiBXZSBoYXZlIHRvIHBsYWNlIHRoZSBibG9jayBpbnNpZGUgYW4gYW5vbnltb3VzIGlubGlu
ZS1ibG9jay4KLSAgICAgICAgLy8gVGhpcyBpbmxpbmUtYmxvY2sgY2FuIGhvdXNlIGEgc2VxdWVu
Y2Ugb2YgY29udGlndW91cyBibG9jay1sZXZlbCBjaGlsZHJlbiwgYW5kIHRoZXkgd2lsbCBhbGwg
c2l0IG9uIHRoZQotICAgICAgICAvLyBzYW1lICJsaW5lIiB0b2dldGhlci4gV2UgdHJ5IHRvIHJl
dXNlIGFuIGV4aXN0aW5nIGlubGluZS1ibG9jayBpZiBwb3NzaWJsZS4KLSAgICAgICAgaWYgKGJl
Zm9yZUNoaWxkKSB7Ci0gICAgICAgICAgICBpZiAoYmVmb3JlQ2hpbGQtPnByZXZpb3VzU2libGlu
ZygpICYmIGJlZm9yZUNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKS0+aXNBbm9ueW1vdXNJbmxpbmVC
bG9jaygpKSB7Ci0gICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihiZWZv
cmVDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpLT5hZGRDaGlsZChuZXdDaGlsZCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKGxhc3RDaGlsZCgpICYmIGxhc3RDaGlsZCgpLT5pc0Fub255bW91c0lubGluZUJs
b2NrKCkpIHsKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGxhc3RD
aGlsZCgpKS0+YWRkQ2hpbGQobmV3Q2hpbGQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotIAotICAgICAgICBpZiAoIW5ld0NoaWxkLT5pc0Zsb2F0
aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBu
byBzdWl0YWJsZSBleGlzdGluZyBhbm9ueW1vdXMgaW5saW5lLWJsb2NrLiBDcmVhdGUgYSBuZXcg
b25lLgotICAgICAgICAgICAgUmVuZGVyQmxvY2tGbG93KiBhbm9ueW1vdXNJbmxpbmVCbG9jayA9
IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgSU5MSU5FX0JMT0NLKSk7Ci0gICAgICAgICAg
ICBhbm9ueW1vdXNJbmxpbmVCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7Ci0gICAgCi0gICAgICAg
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRkQ2hpbGQoYW5vbnltb3VzSW5saW5lQmxvY2ss
IGJlZm9yZUNoaWxkKTsKLSAgICAgICAgICAgIGFub255bW91c0lubGluZUJsb2NrLT5hZGRDaGls
ZChuZXdDaGlsZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsK
LQogICAgIG5ld0NoaWxkLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlz
aW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTk1LDExICsxNTk1LDYgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
OmlzQ29tcG9zaXRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGhhc0xheWVyKCkgJiYgZG93bmNhc3Q8
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwog
fQogCi1ib29sIFJlbmRlck9iamVjdDo6aXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGlzQW5vbnltb3VzKCkgJiYgc3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5F
X0JMT0NLICYmIHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8gJiYgaXNSZW5kZXJCbG9j
a0Zsb3coKSAmJiAhaXNSdWJ5UnVuKCkgJiYgIWlzUnVieUJhc2UoKSAmJiAhaXNSdWJ5KHBhcmVu
dCgpKTsKLX0KLQogYm9vbCBSZW5kZXJPYmplY3Q6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIEhpdFRlc3RGaWx0ZXIgaGl0VGVzdEZpbHRlcikKIHsKICAgICBib29sIGluc2lkZSA9IGZh
bHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNp
b24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAg
ICAgICA7CiAgICAgfQotICAgIGJvb2wgaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpIGNvbnN0Owog
ICAgIGJvb2wgaXNFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbm9kZSgpICYm
IG5vZGUoKS0+cmVuZGVyZXIoKSAhPSB0aGlzOyB9CiAgICAgYm9vbCBpc0lubGluZUVsZW1lbnRD
b250aW51YXRpb24oKSBjb25zdCB7IHJldHVybiBpc0VsZW1lbnRDb250aW51YXRpb24oKSAmJiBp
c0lubGluZSgpOyB9CiAgICAgYm9vbCBpc0Jsb2NrRWxlbWVudENvbnRpbnVhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGlzRWxlbWVudENvbnRpbnVhdGlvbigpICYmICFpc0lubGluZSgpOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAy
MjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4NCw4ICsyODQsOCBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6
OmFsaWduQm94ZXNJbkJsCiAgICAgCiAgICAgbWF4SGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5p
dD4oMCwgbWF4SGVpZ2h0KTsgLy8gRklYTUU6IElzIHRoaXMgcmVhbGx5IG5lY2Vzc2FyeT8KIAot
ICAgIExheW91dFVuaXQgbGluZVRvcFdpdGhMZWFkaW5nID0gIWhhc0Fub255bW91c0lubGluZUJs
b2NrKCkgPyBoZWlnaHRPZkJsb2NrIDogbGluZVRvcDsKLSAgICBMYXlvdXRVbml0IGxpbmVCb3R0
b21XaXRoTGVhZGluZyA9ICFoYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpID8gaGVpZ2h0T2ZCbG9j
ayArIG1heEhlaWdodCA6IGxpbmVCb3R0b207CisgICAgTGF5b3V0VW5pdCBsaW5lVG9wV2l0aExl
YWRpbmcgPSBoZWlnaHRPZkJsb2NrOworICAgIExheW91dFVuaXQgbGluZUJvdHRvbVdpdGhMZWFk
aW5nID0gaGVpZ2h0T2ZCbG9jayArIG1heEhlaWdodDsKICAgICBzZXRMaW5lVG9wQm90dG9tUG9z
aXRpb25zKGxpbmVUb3AsIGxpbmVCb3R0b20sIGxpbmVUb3BXaXRoTGVhZGluZywgbGluZUJvdHRv
bVdpdGhMZWFkaW5nKTsKICAgICBzZXRQYWdpbmF0ZWRMaW5lV2lkdGgoYmxvY2tGbG93KCkuYXZh
aWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudChoZWlnaHRPZkJsb2NrKSk7CiAKQEAgLTg5MCwx
NCArODkwLDYgQEAgdm9pZCBSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQgogICAg
IC8vIFJlcGxhY2VkIGJveGVzIHdpbGwgcmV0dXJuIDAgZm9yIHRoZSBsaW5lLWhlaWdodCBpZiBs
aW5lLWJveC1jb250YWluIHNheXMgdGhleSBhcmUKICAgICAvLyBub3QgdG8gYmUgaW5jbHVkZWQu
CiAgICAgaWYgKGJveC5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkgewotICAgICAgICBpZiAoaGFz
QW5vbnltb3VzSW5saW5lQmxvY2soKSkgewotICAgICAgICAgICAgYXNjZW50ID0gMDsgLy8gTWFy
Z2lucyBleGlzdCAib3V0c2lkZSIgdGhlIGxpbmUsIHNpbmNlIHRoZXkgaGF2ZSB0byBjb2xsYXBz
ZS4KLSAgICAgICAgICAgIGRlc2NlbnQgPSAwOwotICAgICAgICAgICAgYWZmZWN0c0FzY2VudCA9
IHRydWU7Ci0gICAgICAgICAgICBhZmZlY3RzRGVzY2VudCA9IHRydWU7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICBpZiAobGluZVN0eWxlKCku
bGluZUJveENvbnRhaW4oKSAmIExpbmVCb3hDb250YWluUmVwbGFjZWQpIHsKICAgICAgICAgICAg
IGFzY2VudCA9IGJveC5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSgpKTsKICAgICAgICAg
ICAgIGRlc2NlbnQgPSBib3gubGluZUhlaWdodCgpIC0gYXNjZW50OwpAQCAtOTA4LDkgKzkwMCw2
IEBAIHZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckIKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGlmIChoYXNBbm9ueW1vdXNJbmxpbmVC
bG9jaygpKQotICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8Y29uc3QgRm9udCo+KiB1c2Vk
Rm9udHMgPSBudWxscHRyOwogICAgIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cgPSBudWxs
cHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHBy
aXZhdGU6CiAKIGNsYXNzIEJyZWFraW5nQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgQnJlYWtpbmdD
b250ZXh0KExpbmVCcmVha2VyJiBsaW5lQnJlYWtlciwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNv
bHZlciwgTGluZUluZm8mIGluTGluZUluZm8sIExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IExpbmVXaWR0aCYgbGluZVdpZHRoLCBSZW5kZXJUZXh0SW5mbyYgaW5SZW5kZXJUZXh0SW5mbywg
RmxvYXRpbmdPYmplY3QqIGluTGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgYm9vbCBhcHBsaWVk
U3RhcnRXaWR0aCwgUmVuZGVyQmxvY2tGbG93JiBibG9jaykKKyAgICBCcmVha2luZ0NvbnRleHQo
TGluZUJyZWFrZXImIGxpbmVCcmVha2VyLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBM
aW5lSW5mbyYgaW5MaW5lSW5mbywgTGluZVdpZHRoJiBsaW5lV2lkdGgsIFJlbmRlclRleHRJbmZv
JiBpblJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVjdCogaW5MYXN0RmxvYXRGcm9tUHJldmlv
dXNMaW5lLCBib29sIGFwcGxpZWRTdGFydFdpZHRoLCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrKQog
ICAgICAgICA6IG1fbGluZUJyZWFrZXIobGluZUJyZWFrZXIpCiAgICAgICAgICwgbV9yZXNvbHZl
cihyZXNvbHZlcikKICAgICAgICAgLCBtX2N1cnJlbnQocmVzb2x2ZXIucG9zaXRpb24oKSkKQEAg
LTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9yZW5kZXJUZXh0SW5mbyhpblJl
bmRlclRleHRJbmZvKQogICAgICAgICAsIG1fbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZShpbkxh
c3RGbG9hdEZyb21QcmV2aW91c0xpbmUpCiAgICAgICAgICwgbV93aWR0aChsaW5lV2lkdGgpCi0g
ICAgICAgICwgbV9saW5lTGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpCiAgICAgICAgICwgbV9jdXJy
V1MoTk9STUFMKQogICAgICAgICAsIG1fbGFzdFdTKE5PUk1BTCkKICAgICAgICAgLCBtX3ByZXNl
cnZlc05ld2xpbmUoZmFsc2UpCkBAIC0yNjgsOCArMjY3LDYgQEAgcHJpdmF0ZToKICAgICBGbG9h
dGluZ09iamVjdCogbV9sYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lOwogCiAgICAgTGluZVdpZHRo
IG1fd2lkdGg7Ci0gICAgCi0gICAgTGluZUxheW91dFN0YXRlJiBtX2xpbmVMYXlvdXRTdGF0ZTsK
IAogICAgIEVXaGl0ZVNwYWNlIG1fY3VycldTOwogICAgIEVXaGl0ZVNwYWNlIG1fbGFzdFdTOwpA
QCAtNTQyLDI0ICs1MzksMTQgQEAgaW5saW5lIHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVS
ZXBsYQogICAgICAgICBtX3dpZHRoLnVwZGF0ZUF2YWlsYWJsZVdpZHRoKHJlcGxhY2VkQm94Lmxv
Z2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBCcmVhayBvbiByZXBsYWNlZCBlbGVtZW50cyBpZiBl
aXRoZXIgaGFzIG5vcm1hbCB3aGl0ZS1zcGFjZS4KLSAgICBpZiAoKChtX2F1dG9XcmFwIHx8IFJl
bmRlclN0eWxlOjphdXRvV3JhcChtX2xhc3RXUykpICYmICghcmVwbGFjZWRCb3guaXNJbWFnZSgp
IHx8IG1fYWxsb3dJbWFnZXNUb0JyZWFrKQotICAgICAgICAmJiAoIWlzPFJlbmRlclJ1YnlSdW4+
KHJlcGxhY2VkQm94KSB8fCBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihyZXBsYWNlZEJveCkuY2Fu
QnJlYWtCZWZvcmUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvcikpKSB8fCByZXBs
YWNlZEJveC5pc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKKyAgICBpZiAoKG1fYXV0b1dyYXAg
fHwgUmVuZGVyU3R5bGU6OmF1dG9XcmFwKG1fbGFzdFdTKSkgJiYgKCFyZXBsYWNlZEJveC5pc0lt
YWdlKCkgfHwgbV9hbGxvd0ltYWdlc1RvQnJlYWspCisgICAgICAgICYmICghaXM8UmVuZGVyUnVi
eVJ1bj4ocmVwbGFjZWRCb3gpIHx8IGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KHJlcGxhY2VkQm94
KS5jYW5CcmVha0JlZm9yZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yKSkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gbV9jdXJyZW50LnJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aCgqcmVuZGVyZXIpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb21taXRMaW5lQnJlYWtDbGVhcigpOwotICAgICAgICBpZiAo
bV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmIHJlcGxhY2VkQm94LmlzQW5vbnltb3VzSW5saW5l
QmxvY2soKSkgewotICAgICAgICAgICAgLy8gQWx3YXlzIGZvcmNlIGEgYnJlYWsgYmVmb3JlIGFu
IGFub255bW91cyBpbmxpbmUgYmxvY2sgaWYgdGhlcmUgaXMgY29udGVudCBvbiB0aGUgbGluZQot
ICAgICAgICAgICAgLy8gYWxyZWFkeS4KLSAgICAgICAgICAgIG1fYXRFbmQgPSB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG1faGFuZ3NB
dEVuZCA9IGZhbHNlOwotICAgIAotICAgIGlmIChyZXBsYWNlZEJveC5pc0Fub255bW91c0lubGlu
ZUJsb2NrKCkpCi0gICAgICAgIG1fYmxvY2subGF5b3V0QmxvY2tDaGlsZChyZXBsYWNlZEJveCwg
bV9saW5lTGF5b3V0U3RhdGUubWFyZ2luSW5mbygpLAotICAgICAgICAgICAgbV9saW5lTGF5b3V0
U3RhdGUucHJldkZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCksIG1fbGluZUxh
eW91dFN0YXRlLm1heEZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCkpOwogCiAg
ICAgaWYgKG1faWdub3JpbmdTcGFjZXMpCiAgICAgICAgIG1fbGluZVdoaXRlc3BhY2VDb2xsYXBz
aW5nU3RhdGUuc3RvcElnbm9yaW5nU3BhY2VzKElubGluZUl0ZXJhdG9yKDAsICZyZXBsYWNlZEJv
eCwgMCkpOwpAQCAtNTkxLDEyICs1NzgsNyBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6
OmhhbmRsZVJlcGxhCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVXBkYXRlIHByaW9yIGxpbmUg
YnJlYWsgY29udGV4dCBjaGFyYWN0ZXJzLCB1c2luZyBVK0ZGRkQgKE9CSkVDVCBSRVBMQUNFTUVO
VCBDSEFSQUNURVIpIGZvciByZXBsYWNlZCBlbGVtZW50LgogICAgICAgICBtX3JlbmRlclRleHRJ
bmZvLmxpbmVCcmVha0l0ZXJhdG9yLnVwZGF0ZVByaW9yQ29udGV4dChyZXBsYWNlbWVudENoYXJh
Y3Rlcik7Ci0gICAgfQotICAgIAotICAgIGlmIChyZXBsYWNlZEJveC5pc0Fub255bW91c0lubGlu
ZUJsb2NrKCkpIHsKLSAgICAgICAgbV9hdEVuZCA9IHRydWU7Ci0gICAgICAgIG1fbGluZUluZm8u
c2V0UHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KHRydWUpOwotICAgIH0KKyAgICB9ICAgIAogfQog
CiBpbmxpbmUgZmxvYXQgZmlyc3RQb3NpdGl2ZVdpZHRoKGNvbnN0IFdvcmRNZWFzdXJlbWVudHMm
IHdvcmRNZWFzdXJlbWVudHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lQnJlYWtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUJyZWFrZXIuY3BwCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3
LDcgQEAgdm9pZCBMaW5lQnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNwYWNlKAogICAgIHJlc29s
dmVyLmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCk7CiB9CiAKLUlubGluZUl0ZXJhdG9yIExpbmVC
cmVha2VyOjpuZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJ
bmZvJiBsaW5lSW5mbywgTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgUmVuZGVyVGV4dElu
Zm8mIHJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3Vz
TGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVu
dHMmIHdvcmRNZWFzdXJlbWVudHMpCitJbmxpbmVJdGVyYXRvciBMaW5lQnJlYWtlcjo6bmV4dExp
bmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYgbGluZUluZm8s
IFJlbmRlclRleHRJbmZvJiByZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9h
dEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBX
b3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogewogICAgIHJlc2V0KCk7CiAKQEAg
LTkyLDcgKzkyLDcgQEAgSW5saW5lSXRlcmF0b3IgTGluZUJyZWFrZXI6Om5leHRMaW5lQnJlYQog
ICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiByZXNv
bHZlci5wb3NpdGlvbigpOwogCi0gICAgQnJlYWtpbmdDb250ZXh0IGNvbnRleHQoKnRoaXMsIHJl
c29sdmVyLCBsaW5lSW5mbywgbGF5b3V0U3RhdGUsIHdpZHRoLCByZW5kZXJUZXh0SW5mbywgbGFz
dEZsb2F0RnJvbVByZXZpb3VzTGluZSwgYXBwbGllZFN0YXJ0V2lkdGgsIG1fYmxvY2spOworICAg
IEJyZWFraW5nQ29udGV4dCBjb250ZXh0KCp0aGlzLCByZXNvbHZlciwgbGluZUluZm8sIHdpZHRo
LCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgYXBwbGllZFN0YXJ0
V2lkdGgsIG1fYmxvY2spOwogCiAgICAgd2hpbGUgKGNvbnRleHQuY3VycmVudE9iamVjdCgpKSB7
CiAgICAgICAgIGNvbnRleHQuaW5pdGlhbGl6ZUZvckN1cnJlbnRPYmplY3QoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaAkocmV2aXNpb24gMjIx
NDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJlc2V0KCk7CiAg
ICAgfQogCi0gICAgSW5saW5lSXRlcmF0b3IgbmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2
ZXImLCBMaW5lSW5mbyYsIExpbmVMYXlvdXRTdGF0ZSYsIFJlbmRlclRleHRJbmZvJiwgRmxvYXRp
bmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZl
SHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJik7CisgICAgSW5saW5lSXRlcmF0b3Ig
bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImLCBMaW5lSW5mbyYsIFJlbmRlclRleHRJ
bmZvJiwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVk
IGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJik7CiAKICAgICBi
b29sIGxpbmVXYXNIeXBoZW5hdGVkKCkgeyByZXR1cm4gbV9oeXBoZW5hdGVkOyB9CiAgICAgY29u
c3QgVmVjdG9yPFJlbmRlckJveCo+JiBwb3NpdGlvbmVkT2JqZWN0cygpIHsgcmV0dXJuIG1fcG9z
aXRpb25lZE9iamVjdHM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVMYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUy
LDggKzE1Miw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBSZW5kZXJCbG9ja0Zsb3c6Ok1hcmdp
bkluZm8mIG1hcmdpbkluZm8oKSB7IHJldHVybiBtX21hcmdpbkluZm87IH0KLSAgICBMYXlvdXRV
bml0JiBwcmV2RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2soKSB7IHJldHVybiBt
X3ByZXZGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jazsgfQotICAgIExheW91dFVu
aXQmIG1heEZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCkgeyByZXR1cm4gbV9t
YXhGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jazsgfQogCiAgICAgRmxvYXRMaXN0
JiBmbG9hdExpc3QoKSB7IHJldHVybiBtX2Zsb2F0TGlzdDsgfQogCkBAIC0xNzIsOCArMTcwLDYg
QEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0JiBtX3JlcGFpbnRMb2dpY2FsQm90dG9tOwogCiAg
ICAgUmVuZGVyQmxvY2tGbG93OjpNYXJnaW5JbmZvIG1fbWFyZ2luSW5mbzsKLSAgICBMYXlvdXRV
bml0IG1fcHJldkZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrOwotICAgIExheW91
dFVuaXQgbV9tYXhGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jazsKIAogICAgIGJv
b2wgbV9lbmRMaW5lTWF0Y2hlZCA6IDE7CiAgICAgYm9vbCBtX2NoZWNrRm9yRmxvYXRzRnJvbUxh
c3RMaW5lIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
aW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlc0RlZmluaXRpb25zLmgJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDcg
KzI1OCw2IEBACiAgICAgbWFjcm8oSW1hZ2VDb250cm9sc0VuYWJsZWQsIGltYWdlQ29udHJvbHNF
bmFibGVkLCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCiAgICAgbWFjcm8oRW5hYmxlSW5o
ZXJpdFVSSVF1ZXJ5Q29tcG9uZW50LCBlbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQsIEJv
b2wsIGJvb2wsIGZhbHNlLCAiIiwgIiIpIFwKICAgICBtYWNybyhTZXJ2aWNlQ29udHJvbHNFbmFi
bGVkLCBzZXJ2aWNlQ29udHJvbHNFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBc
Ci0gICAgbWFjcm8oTmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQsIG5ld0Jsb2NrSW5z
aWRlSW5saW5lTW9kZWxFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCiAgICAg
bWFjcm8oRGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkLCBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQs
IEJvb2wsIGJvb2wsIGZhbHNlLCAiIiwgIiIpIFwKICAgICBtYWNybyhIVFRQRXF1aXZFbmFibGVk
LCBodHRwRXF1aXZFbmFibGVkLCBCb29sLCBib29sLCB0cnVlLCAiIiwgIiIpIFwKICAgICBtYWNy
byhNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkLCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjIxNDA5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMjksMTYgKzEzMjksNiBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRTaW1wbGVMaW5l
TGF5b3V0RGViCiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNpbXBsZUxpbmVM
YXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldE5l
d0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5j
ZXNSZWYsIGJvb2wgZmxhZykKLXsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXROZXdC
bG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZChmbGFnKTsKLX0KLQotYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZikKLXsKLSAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+bmV3
QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQoKTsKLX0KLQogdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGJvb2wgZmxhZykKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXREZWZlcnJl
ZENTU1BhcnNlckVuYWJsZWQoZmxhZyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDIy
MTQwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0NCwxMCArMzQ0LDYgQEAgV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldFNpbXBsZUxpbgogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNl
c0dldFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYp
OwogCiAvLyBEZWZhdWx0cyB0byBmYWxzZS4KLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmLCBib29s
KTsKLVdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXROZXdCbG9ja0luc2lkZUlubGluZU1v
ZGVsRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKLQotLy8gRGVmYXVsdHMgdG8gZmFsc2UuCiBX
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYsIGJvb2wpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldERl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyMTQw
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjU0LDcgKzMyNTQsNiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxheW91dEVuYWJsZWQo
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzaW1wbGVMaW5lTGF5
b3V0RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxheW91dERlYnVn
Qm9yZGVyc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpzaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZEtleSgpKSk7CiAgICAgCi0gICAg
c2V0dGluZ3Muc2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpuZXdCbG9ja0luc2lkZUlubGluZU1vZGVs
RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGVmZXJyZWRDU1NQ
YXJzZXJFbmFibGVkS2V5KCkpKTsKIAogICAgIHNldHRpbmdzLnNldFN1YnBpeGVsQ1NTT01FbGVt
ZW50TWV0cmljc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjpzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkS2V5KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319521</attachid>
            <date>2017-08-31 14:16:48 -0700</date>
            <delta_ts>2017-08-31 14:43:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>anon-inline-block-remove-2.patch</filename>
            <type>text/plain</type>
            <size>81272</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE3LTA4LTMxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbmV3QmxvY2tJbnNp
ZGVJbmxpbmVNb2RlbCBhbmQgYW5vbnltb3VzIGlubGluZSBibG9jaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vbnltb3VzIGlubGluZSBibG9jayBl
eGlzdHMgdG8gc3VwcG9ydCBuZXdCbG9ja0luc2lkZUlubGluZU1vZGVsIHdoaWNoIHdhcyBwbGFu
bmVkIGFzIHRoZSByZXBsYWNlbWVudCBmb3IgY29udGludWF0aW9ucy4KKyAgICAgICAgSXQgaGFz
IG5ldmVyIGJlZW4gZW5hYmxlZCBhbmQgaXQgaXMgdGltZSB0byByZW1vdmUgaXQuCisKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVFbGVtZW50
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUVsZW1lbnRCb3g6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUVsZW1lbnRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVG
bG93Qm94OjphZGRUb0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGxh
Y2VCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YW5vbnltb3VzSW5saW5lQmxvY2sg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpJbmxpbmVGbG93Qm94KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6Omhhc0Fub255bW91c0lubGluZUJsb2NrIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnNldEhhc0Fub255bW91
c0lubGluZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlbmRlck5hbWUgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjpyZWJ1aWxkRmxvYXRpbmdPYmplY3RTZXRGcm9tSW50cnVkaW5nRmxvYXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y2hpbGRyZW5QcmV2ZW50U2Vs
ZkNvbGxhcHNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojph
ZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxv
Z2ljYWxJbmxpbmVQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVCb3hlcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjptYXRjaGVkRW5kTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Om1hcmdpbkNvbGxhcHNlTGluZXNGcm9tU3RhcnQp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmF2b2lkc0Zsb2F0cyBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojppc0Fub255bW91c0lubGluZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmlzQW5vbnltb3VzQmxvY2sgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFsaWduQm94ZXNJ
bkJsb2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFzY2Vu
dEFuZERlc2NlbnRGb3JCb3ggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFr
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpCcmVha2lu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVSZXBs
YWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6Om5leHRMaW5lQnJlYWspOgorICAgICAgICAqIHJlbmRl
cmluZy9saW5lL0xpbmVCcmVha2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6Om1hcmdpbklu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpwcmV2RmxvYXRCb3R0b21G
cm9tQW5vbnltb3VzSW5saW5lQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZUxheW91dFN0YXRlOjptYXhGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jayk6IERl
bGV0ZWQuCisKIDIwMTctMDgtMzEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIyMTIyNik6IFtTT1VQXSBsaWJzb3VwLUNS
SVRJQ0FMICoqOiBzb3VwX2Nvb2tpZXNfdG9fY29va2llX2hlYWRlcjogYXNzZXJ0aW9uICdjb29r
aWVzICE9IE5VTEwnIGZhaWxlZApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCShyZXZpc2lv
biAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDQsOCArMjQ0LDYgQEAgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCBp
bml0aWFsPQogCiBhdHRhY2htZW50RWxlbWVudEVuYWJsZWQgaW5pdGlhbD10cnVlLCBjb25kaXRp
b25hbD1BVFRBQ0hNRU5UX0VMRU1FTlQKIAotbmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJs
ZWQgaW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKLQogZGVm
ZXJyZWRDU1NQYXJzZXJFbmFibGVkIGluaXRpYWw9ZmFsc2UKIAogcmVwYWludE91dHNpZGVMYXlv
dXRFbmFibGVkIGluaXRpYWw9ZmFsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVFbGVtZW50Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRWxlbWVudEJveC5jcHAJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgs
MTkgKzY4LDYgQEAgdm9pZCBJbmxpbmVFbGVtZW50Qm94OjpwYWludChQYWludEluZm8mIAogICAg
IGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKHJlbmRlcmVyKCkuaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygp
KSB7Ci0gICAgICAgIC8vIFRyZWF0IHBhaW50aW5nIG9mIGEgc3BlY2lhbCBpbmxpbmUtYmxvY2sg
bGluZSBsaWtlIHRoZSBwYWludGluZyBvZiBhIG5vcm1hbCBibG9jayBhbmQgZ28gdGhyb3VnaCBh
bGwgcGhhc2VzLgotICAgICAgICBQYWludFBoYXNlIG5ld1BoYXNlID0gKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlQ2hpbGRPdXRsaW5lcykgPyBQYWludFBoYXNlT3V0bGluZSA6IHBhaW50
SW5mby5waGFzZTsKLSAgICAgICAgbmV3UGhhc2UgPSAobmV3UGhhc2UgPT0gUGFpbnRQaGFzZUNo
aWxkQmxvY2tCYWNrZ3JvdW5kcykgPyBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQgOiBu
ZXdQaGFzZTsKLSAgICAgICAgCi0gICAgICAgIFBhaW50SW5mbyBpbmZvKHBhaW50SW5mbyk7Ci0g
ICAgICAgIGluZm8ucGhhc2UgPSBuZXdQaGFzZTsKLSAgICAgICAgaW5mby51cGRhdGVTdWJ0cmVl
UGFpbnRSb290Rm9yQ2hpbGRyZW4oJnJlbmRlcmVyKCkpOwotICAgICAgICBBU1NFUlQoIXJlbmRl
cmVyKCkuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSk7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnQo
aW5mbywgcGFpbnRPZmZzZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCkBAIC05MiwxNyArNzks
OSBAQCB2b2lkIElubGluZUVsZW1lbnRCb3g6OnBhaW50KFBhaW50SW5mbyYgCiB9CiAKIGJvb2wg
SW5saW5lRWxlbWVudEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91
dFVuaXQgLyogbGluZVRvcCAqLywgTGF5b3V0VW5pdCAvKmxpbmVCb3R0b20qLywKLSAgICBIaXRU
ZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCisgICAgSGl0VGVzdEFjdGlvbikKIHsKLSAgICAvLyBJ
ZiB3ZSBhcmUgYW4gYW5vbnltb3VzIGlubGluZSBibG9jaywgaG9ub3IgaGl0IHRlc3QgcGhhc2Vz
LgotICAgIGlmIChyZW5kZXJlcigpLmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgewotICAgICAg
ICBIaXRUZXN0QWN0aW9uIGNoaWxkSGl0VGVzdCA9IGhpdFRlc3RBY3Rpb247Ci0gICAgICAgIGlm
IChoaXRUZXN0QWN0aW9uID09IEhpdFRlc3RDaGlsZEJsb2NrQmFja2dyb3VuZHMpCi0gICAgICAg
ICAgICBjaGlsZEhpdFRlc3QgPSBIaXRUZXN0Q2hpbGRCbG9ja0JhY2tncm91bmQ7Ci0gICAgICAg
IHJldHVybiByZW5kZXJlcigpLm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGNoaWxkSGl0VGVzdCk7Ci0gICAgfQotCi0g
ICAgLy8gT3RoZXJ3aXNlIGhpdCB0ZXN0IGFsbCBwaGFzZXMgb2YgcmVwbGFjZWQgZWxlbWVudHMg
YXRvbWljYWxseSwgYXMgdGhvdWdoIHRoZSByZXBsYWNlZCBlbGVtZW50IGVzdGFibGlzaGVkIGl0
cworICAgIC8vIEhpdCB0ZXN0IGFsbCBwaGFzZXMgb2YgcmVwbGFjZWQgZWxlbWVudHMgYXRvbWlj
YWxseSwgYXMgdGhvdWdoIHRoZSByZXBsYWNlZCBlbGVtZW50IGVzdGFibGlzaGVkIGl0cwogICAg
IC8vIG93biBzdGFja2luZyBjb250ZXh0LiAgKFNlZSBBcHBlbmRpeCBFLjIsIHNlY3Rpb24gNi40
IG9uIGlubGluZSBibG9jay90YWJsZSBlbGVtZW50cyBpbiB0aGUgQ1NTMi4xCiAgICAgLy8gc3Bl
Y2lmaWNhdGlvbi4pCiAgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9IGFjY3VtdWxhdGVkT2Zm
c2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAko
cmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNyArNjksNiBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnNldEhhc0JhZENoaWxkTGlzdCgpCiAKICNlbmRpZgogCi1SZW5kZXJCbG9ja0Zsb3cqIElu
bGluZUZsb3dCb3g6OmFub255bW91c0lubGluZUJsb2NrKCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
aGFzQW5vbnltb3VzSW5saW5lQmxvY2sgfHwgIWZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpmaXJzdENoaWxkKCkpKQotICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmZpcnN0Q2hpbGQoKSkuYW5vbnlt
b3VzSW5saW5lQmxvY2soKTsKLSAgICBpZiAoZmlyc3RDaGlsZCgpLT5yZW5kZXJlcigpLmlzQW5v
bnltb3VzSW5saW5lQmxvY2soKSkKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJCbG9j
a0Zsb3c+KGZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19
Ci0KIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Z2V0Rmxvd1NwYWNpbmdMb2dpY2FsV2lkdGgo
KQogewogICAgIExheW91dFVuaXQgdG90YWxXaWR0aCA9IG1hcmdpbkJvcmRlclBhZGRpbmdMb2dp
Y2FsTGVmdCgpICsgbWFyZ2luQm9yZGVyUGFkZGluZ0xvZ2ljYWxSaWdodCgpOwpAQCAtMTIzLDEy
ICsxMTIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqCiAgICAg
fSBlbHNlIGlmIChpczxJbmxpbmVGbG93Qm94PigqY2hpbGQpKSB7CiAgICAgICAgIGlmIChkb3du
Y2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLmhhc1RleHREZXNjZW5kYW50cygpKQogICAgICAg
ICAgICAgc2V0SGFzVGV4dERlc2NlbmRhbnRzT25BbmNlc3RvcnModGhpcyk7Ci0gICAgICAgIGlm
IChkb3duY2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLmhhc0Fub255bW91c0lubGluZUJsb2Nr
KCkpCi0gICAgICAgICAgICBzZXRIYXNBbm9ueW1vdXNJbmxpbmVCbG9jayh0cnVlKTsKICAgICB9
Ci0gICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkKLSAg
ICAgICAgc2V0SGFzQW5vbnltb3VzSW5saW5lQmxvY2sodHJ1ZSk7Ci0KICAgICBpZiAoZGVzY2Vu
ZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpICYmICFjaGlsZC0+cmVuZGVyZXIo
KS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUgPSBsaW5lU3R5bGUoKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNo
aWxkU3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7CkBAIC02NjMsMTEgKzY0Nyw2IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXIKICAgICAgICAgICAgIExheW91dFVu
aXQgcG9zQWRqdXN0ID0gbWF4QXNjZW50IC0gY2hpbGQtPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxp
bmVUeXBlKTsKICAgICAgICAgICAgIGNoaWxkLT5zZXRMb2dpY2FsVG9wKGNoaWxkLT5sb2dpY2Fs
VG9wKCkgKyB0b3AgKyBwb3NBZGp1c3QpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBp
ZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBhdXRvJiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGNoaWxkLT5yZW5kZXJl
cigpKTsKLSAgICAgICAgICAgIGNoaWxkLT5zZXRMb2dpY2FsVG9wKGJveC5sb2dpY2FsVG9wKCkp
OwotICAgICAgICB9CiAKICAgICAgICAgTGF5b3V0VW5pdCBuZXdMb2dpY2FsVG9wID0gY2hpbGQt
PmxvZ2ljYWxUb3AoKTsKICAgICAgICAgTGF5b3V0VW5pdCBuZXdMb2dpY2FsVG9wSW5jbHVkaW5n
TWFyZ2lucyA9IG5ld0xvZ2ljYWxUb3A7CkBAIC02ODUsNyArNjY0LDcgQEAgdm9pZCBJbmxpbmVG
bG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcgogICAgICAgICAgICAgICAgICAgICA6IGJveE9i
amVjdC5ib3JkZXJSaWdodCgpICsgYm94T2JqZWN0LnBhZGRpbmdSaWdodCgpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01hcmdpbnMgPSBuZXdMb2dp
Y2FsVG9wOwotICAgICAgICB9IGVsc2UgaWYgKCFjaGlsZC0+cmVuZGVyZXIoKS5pc0JSKCkgJiYg
IWNoaWxkLT5yZW5kZXJlcigpLmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgeworICAgICAgICB9
IGVsc2UgaWYgKCFjaGlsZC0+cmVuZGVyZXIoKS5pc0JSKCkpIHsKICAgICAgICAgICAgIGNvbnN0
IGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oY2hpbGQtPnJlbmRlcmVyKCkpOwogICAg
ICAgICAgICAgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01hcmdpbnMgPSBuZXdMb2dpY2FsVG9wOwog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBvdmVyU2lkZU1hcmdpbiA9IGNoaWxkLT5pc0hvcml6b250
YWwoKSA/IGJveC5tYXJnaW5Ub3AoKSA6IGJveC5tYXJnaW5SaWdodCgpOwpAQCAtNzQ0LDcgKzcy
Myw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXIKICAgICB9CiAK
ICAgICBpZiAoaXNSb290Qm94KSB7Ci0gICAgICAgIGlmICghaGFzQW5vbnltb3VzSW5saW5lQmxv
Y2soKSAmJiAoc3RyaWN0TW9kZSB8fCBoYXNUZXh0Q2hpbGRyZW4oKSB8fCAoZGVzY2VuZGFudHNI
YXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpICYmIGhhc1RleHREZXNjZW5kYW50cygpKSkp
IHsKKyAgICAgICAgaWYgKHN0cmljdE1vZGUgfHwgaGFzVGV4dENoaWxkcmVuKCkgfHwgKGRlc2Nl
bmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiBoYXNUZXh0RGVzY2VuZGFu
dHMoKSkpIHsKICAgICAgICAgICAgIGlmICghc2V0TGluZVRvcCkgewogICAgICAgICAgICAgICAg
IHNldExpbmVUb3AgPSB0cnVlOwogICAgICAgICAgICAgICAgIGxpbmVUb3AgPSBsb2dpY2FsVG9w
KCk7CkBAIC0xMDY0LDggKzEwNDMsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnNldE92ZXJmbG93
RnJvbUxvZ2ljCiAKIGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRU
ZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgLy8gQXMgbG9uZyBhcyB3ZSBkb24ndCBo
YXZlIGFuIGFub255bW91cyBpbmxpbmUgYmxvY2sgb24gb3VyIGxpbmUsIHdlIHJlc3RyaWN0IG91
ciBoaXQgdGVzdGluZyBvbmx5IHRvIHRoZSBmb3JlZ3JvdW5kIHBoYXNlLgotICAgIGlmICghaGFz
QW5vbnltb3VzSW5saW5lQmxvY2soKSAmJiBoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3Jv
dW5kKQorICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3JvdW5kKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBMYXlvdXRSZWN0IG92ZXJmbG93UmVjdCh2aXN1YWxPdmVy
Zmxvd1JlY3QobGluZVRvcCwgbGluZUJvdHRvbSkpOwpAQCAtMTE1OSw4ICsxMTM3LDcgQEAgYm9v
bCBJbmxpbmVGbG93Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaQogCiB2b2lkIElubGluZUZsb3dC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQogewotICAg
IC8vIEFzIGxvbmcgYXMgd2UgZG9uJ3QgaGF2ZSBhbiBhbm9ueW1vdXMgaW5saW5lIGJsb2NrIG9u
IG91ciBsaW5lLCB3ZSByZXN0cmljdCBvdXIgcGFpbnRpbmcgb25seSB0byBhIGZldyBwaGFzZXMu
Ci0gICAgaWYgKCFoYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpICYmIChwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VT
ZWxlY3Rpb24gJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VPdXRsaW5lICYmIHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZk91dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9
IFBhaW50UGhhc2VDaGlsZE91dGxpbmVzICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
VGV4dENsaXAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrKSkKKyAgICBpZiAo
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
T3V0bGluZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lICYmIHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2hpbGRPdXRsaW5lcyAmJiBwYWludEluZm8ucGhh
c2UgIT0gUGFpbnRQaGFzZVRleHRDbGlwICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
TWFzaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd1JlY3Qodmlz
dWFsT3ZlcmZsb3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKQEAgLTEyMDQsMTQgKzExODEs
MTEgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaQogICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUZsb3cuaXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby5vdXRsaW5lT2JqZWN0cy0+YWRkKCZp
bmxpbmVGbG93KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spIHsKLSAgICAgICAgICAgIGlmICghaGFzQW5vbnltb3Vz
SW5saW5lQmxvY2soKSkKLSAgICAgICAgICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCBwYWlu
dE9mZnNldCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAg
IH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VNYXNrKQorICAgICAgICAg
ICAgcGFpbnRNYXNrKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIC8vIFBhaW50IG91ciBiYWNrZ3JvdW5kLCBib3JkZXIgYW5kIGJveC1zaGFkb3cu
Ci0gICAgICAgICAgICBpZiAoIWhhc0Fub255bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgICAg
ICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICAg
ICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAg
ICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guaAkocmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAg
ICAgICwgbV9oYXNBbm5vdGF0aW9uc0JlZm9yZShmYWxzZSkKICAgICAgICAgLCBtX2hhc0Fubm90
YXRpb25zQWZ0ZXIoZmFsc2UpCiAgICAgICAgICwgbV9pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoZmFs
c2UpCi0gICAgICAgICwgbV9oYXNBbm9ueW1vdXNJbmxpbmVCbG9jayhmYWxzZSkKICNpZiAhQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKICAgICAgICAgLCBtX2hhc0Jh
ZENoaWxkTGlzdChmYWxzZSkKICNlbmRpZgpAQCAtMjExLDEwICsyMTAsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRIYXNUZXh0Q2hpbGRyZW4oKSB7IG1faGFzVGV4dENoaWxkcmVuID0gdHJ1ZTsg
c2V0SGFzVGV4dERlc2NlbmRhbnRzKCk7IH0KICAgICB2b2lkIHNldEhhc1RleHREZXNjZW5kYW50
cygpIHsgbV9oYXNUZXh0RGVzY2VuZGFudHMgPSB0cnVlOyB9CiAgICAgCi0gICAgYm9vbCBoYXNB
bm9ueW1vdXNJbmxpbmVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQW5vbnltb3VzSW5saW5l
QmxvY2s7IH0KLSAgICB2b2lkIHNldEhhc0Fub255bW91c0lubGluZUJsb2NrKGJvb2wgYikgeyBt
X2hhc0Fub255bW91c0lubGluZUJsb2NrID0gYjsgfQotICAgIFJlbmRlckJsb2NrRmxvdyogYW5v
bnltb3VzSW5saW5lQmxvY2soKSBjb25zdDsKLSAgICAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKSBjb25zdDsKICAgICB2b2lkIHNldEhhc0JhZENoaWxkTGlzdCgpOwogCkBAIC0zNDMsNyAr
MzM4LDYgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1fbGluZUJyZWFrQmlkaVN0YXR1c0xh
c3QgOiA1OyAvLyBVQ2hhckRpcmVjdGlvbgogCiAgICAgdW5zaWduZWQgbV9pc0ZpcnN0QWZ0ZXJQ
YWdlQnJlYWsgOiAxOwotICAgIHVuc2lnbmVkIG1faGFzQW5vbnltb3VzSW5saW5lQmxvY2sgOiAx
OwogCiAgICAgLy8gRW5kIG9mIFJvb3RJbmxpbmVCb3gtc3BlY2lmaWMgbWVtYmVycy4KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMjE0
MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTM0LDEwICsyOTM0LDYgQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzTGluZUlm
RW1wdHkoKSBjb25zdAogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUg
bGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKLSAgICAvLyBBbm9ueW1vdXMgaW5saW5lIGJsb2Nr
cyBkb24ndCBpbmNsdWRlIG1hcmdpbnMgb3IgYW55IHJlYWwgbGluZSBoZWlnaHQuCi0gICAgaWYg
KGlzQW5vbnltb3VzSW5saW5lQmxvY2soKSAmJiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9u
T25Db250YWluaW5nTGluZSkKLSAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBIb3Jpem9udGFs
TGluZSA/IGhlaWdodCgpIDogd2lkdGgoKTsKLSAgICAKICAgICAvLyBJbmxpbmUgYmxvY2tzIGFy
ZSByZXBsYWNlZCBlbGVtZW50cy4gT3RoZXJ3aXNlLCBqdXN0IHBhc3Mgb2ZmIHRvCiAgICAgLy8g
dGhlIGJhc2UgY2xhc3MuICBJZiB3ZSdyZSBiZWluZyBxdWVyaWVkIGFzIHRob3VnaCB3ZSdyZSB0
aGUgcm9vdCBsaW5lCiAgICAgLy8gYm94LCB0aGVuIHRoZSBmYWN0IHRoYXQgd2UncmUgYW4gaW5s
aW5lLWJsb2NrIGlzIGlycmVsZXZhbnQsIGFuZCB3ZSBiZWhhdmUKQEAgLTI5NjEsOSArMjk1Nyw2
IEBAIGludCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmEKICAgICAvLyBib3gs
IHRoZW4gdGhlIGZhY3QgdGhhdCB3ZSdyZSBhbiBpbmxpbmUtYmxvY2sgaXMgaXJyZWxldmFudCwg
YW5kIHdlIGJlaGF2ZQogICAgIC8vIGp1c3QgbGlrZSBhIGJsb2NrLgogICAgIGlmIChpc1JlcGxh
Y2VkKCkgJiYgbGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIHsK
LSAgICAgICAgaWYgKGlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVy
biBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBoZWlnaHQoKSA6IHdpZHRoKCk7Ci0gICAg
ICAgIAogICAgICAgICAvLyBGb3IgImxlYWYiIHRoZW1lIG9iamVjdHMsIGxldCB0aGUgdGhlbWUg
ZGVjaWRlIHdoYXQgdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGlzLgogICAgICAgICAvLyBGSVhNRTog
TWlnaHQgYmUgYmV0dGVyIHRvIGhhdmUgYSBjdXN0b20gQ1NTIHByb3BlcnR5IGluc3RlYWQsIHNv
IHRoYXQgaWYgdGhlIHRoZW1lCiAgICAgICAgIC8vIGlzIHR1cm5lZCBvZmYsIGNoZWNrYm94ZXMv
cmFkaW9zIHdpbGwgc3RpbGwgaGF2ZSBkZWNlbnQgYmFzZWxpbmVzLgpAQCAtMzYwOCw4ICszNjAx
LDYgQEAgY29uc3QgY2hhciogUmVuZGVyQmxvY2s6OnJlbmRlck5hbWUoKSBjbwogICAgICAgICBy
ZXR1cm4gIlJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSI7CiAgICAgaWYgKGlzQW5vbnltb3VzQmxv
Y2soKSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAoYW5vbnltb3VzKSI7Ci0gICAgaWYg
KGlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAo
YW5vbnltb3VzIGlubGluZS1ibG9jaykiOwogICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB3
aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBsZW1lbnRl
ZC4KICAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxv
Y2sgKGdlbmVyYXRlZCkiOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsMTcgKzI0MSwx
NCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVidWlsZEZsb2F0aW5nT2JqCiAgICAgLy8gV2Ug
c2hvdWxkIG5vdCBwcm9jZXNzIGZsb2F0cyBpZiB0aGUgcGFyZW50IG5vZGUgaXMgbm90IGEgUmVu
ZGVyQmxvY2suIE90aGVyd2lzZSwgd2Ugd2lsbCBhZGQgCiAgICAgLy8gZmxvYXRzIGluIGFuIGlu
dmFsaWQgY29udGV4dC4gVGhpcyB3aWxsIGNhdXNlIGEgY3Jhc2ggYXJpc2luZyBmcm9tIGEgYmFk
IGNhc3Qgb24gdGhlIHBhcmVudC4KICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzgwNDk3NTM+
LCB3aGVyZSBmbG9hdCBwcm9wZXJ0eSBpcyBhcHBsaWVkIG9uIGEgdGV4dCBub2RlIGluIGEgU1ZH
LgotICAgIGJvb2wgaXNCbG9ja0luc2lkZUlubGluZSA9IGlzQW5vbnltb3VzSW5saW5lQmxvY2so
KTsKLSAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KCkpICYmICFpc0Jsb2NrSW5z
aWRlSW5saW5lKQorICAgIGlmICghaXM8UmVuZGVyQmxvY2tGbG93PihwYXJlbnQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIEZpcnN0IGFkZCBpbiBmbG9hdHMgZnJvbSB0aGUgcGFyZW50
LiBTZWxmLWNvbGxhcHNpbmcgYmxvY2tzIGxldCB0aGVpciBwYXJlbnQgdHJhY2sgYW55IGZsb2F0
cyB0aGF0IGludHJ1ZGUgaW50bwogICAgIC8vIHRoZW0gKGFzIG9wcG9zZWQgdG8gZmxvYXRzIHRo
ZXkgY29udGFpbiB0aGVtc2VsdmVzKSBzbyBjaGVjayBmb3IgdGhvc2UgaGVyZSB0b28uCi0gICAg
UmVuZGVyQmxvY2tGbG93JiBwYXJlbnRCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4o
aXNCbG9ja0luc2lkZUlubGluZSA/ICpjb250YWluaW5nQmxvY2soKSA6ICpwYXJlbnQoKSk7Ci0g
ICAgYm9vbCBwYXJlbnRIYXNGbG9hdHMgPSBpc0Jsb2NrSW5zaWRlSW5saW5lID8gcGFyZW50Qmxv
Y2suY29udGFpbnNGbG9hdHMoKSA6IGZhbHNlOwotICAgIFJlbmRlckJsb2NrRmxvdyogcHJldmlv
dXNCbG9jayA9IG51bGxwdHI7Ci0gICAgaWYgKCFpc0Jsb2NrSW5zaWRlSW5saW5lKQotICAgICAg
ICBwcmV2aW91c0Jsb2NrID0gcHJldmlvdXNTaWJsaW5nV2l0aE92ZXJoYW5naW5nRmxvYXRzKHBh
cmVudEhhc0Zsb2F0cyk7CisgICAgYXV0byYgcGFyZW50QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJC
bG9ja0Zsb3c+KCpwYXJlbnQoKSk7CisgICAgYm9vbCBwYXJlbnRIYXNGbG9hdHMgPSBmYWxzZTsK
KyAgICBSZW5kZXJCbG9ja0Zsb3cqIHByZXZpb3VzQmxvY2sgPSBwcmV2aW91c1NpYmxpbmdXaXRo
T3ZlcmhhbmdpbmdGbG9hdHMocGFyZW50SGFzRmxvYXRzKTsKICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxUb3BPZmZzZXQgPSBsb2dpY2FsVG9wKCk7CiAgICAgaWYgKHBhcmVudEhhc0Zsb2F0cyB8fCAo
cGFyZW50QmxvY2subG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKCkgPiBsb2dpY2FsVG9wT2Zmc2V0
ICYmIHByZXZpb3VzQmxvY2sgJiYgcHJldmlvdXNCbG9jay0+aXNTZWxmQ29sbGFwc2luZ0Jsb2Nr
KCkpKQogICAgICAgICBhZGRJbnRydWRpbmdGbG9hdHMoJnBhcmVudEJsb2NrLCAmcGFyZW50Qmxv
Y2ssIHBhcmVudEJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudCgpLCBsb2dpY2FsVG9w
T2Zmc2V0KTsKQEAgLTk5NSwyMCArOTkyLDcgQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OmNoaWxk
cmVuUHJldmVudFNlbAogICAgIGlmICghY2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgcmV0dXJu
IFJlbmRlckJsb2NrOjpjaGlsZHJlblByZXZlbnRTZWxmQ29sbGFwc2luZygpOwogCi0gICAgLy8g
SWYgdGhlIGJsb2NrIGhhcyBpbmxpbmUgY2hpbGRyZW4sIHNlZSBpZiB3ZSBnZW5lcmF0ZWQgYW55
IGxpbmUgYm94ZXMuIElmIHdlIGhhdmUgYW55Ci0gICAgLy8gbGluZSBib3hlcywgdGhlbiB3ZSBj
YW4gb25seSBiZSBzZWxmLWNvbGxhcHNpbmcgaWYgd2UgaGF2ZSBub3RoaW5nIGJ1dCBhbm9ueW1v
dXMgaW5saW5lIGJsb2NrcwotICAgIC8vIHRoYXQgYXJlIGFsc28gc2VsZi1jb2xsYXBzaW5nIGlu
c2lkZSB1cy4KLSAgICBpZiAoIWhhc0xpbmVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICBpZiAoc2ltcGxlTGluZUxheW91dCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsgLy8g
V2UgaGF2ZSBzaW1wbGUgbGluZSBsYXlvdXQgbGluZXMsIHNvIHdlIGNhbid0IGJlIHNlbGYtY29s
bGFwc2luZy4KLSAgICAKLSAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RSb290Qm94KCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgIGlmICghY2hpbGQt
Pmhhc0Fub255bW91c0lubGluZUJsb2NrKCkgfHwgIWNoaWxkLT5hbm9ueW1vdXNJbmxpbmVCbG9j
aygpLT5pc1NlbGZDb2xsYXBzaW5nQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7IC8vIFdlIGhhdmUgbm8gbGluZSBib3hlcywgc28gd2Ug
bXVzdCBiZSBzZWxmLWNvbGxhcHNpbmcuCisgICAgcmV0dXJuIGhhc0xpbmVzKCk7CiB9CiAKIExh
eW91dFVuaXQgUmVuZGVyQmxvY2tGbG93Ojpjb2xsYXBzZU1hcmdpbnMoUmVuZGVyQm94JiBjaGls
ZCwgTWFyZ2luSW5mbyYgbWFyZ2luSW5mbykKQEAgLTE3MDQsOCArMTY4OCw2IEBAIHN0YXRpYyB2
b2lkIGNsZWFyU2hvdWxkQnJlYWtBdExpbmVUb0F2b2kKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmFkanVzdExpbmVQb3NpdGlvbkZvclBhZ2luYXRpb24oUm9vdElubGluZUJveCogbGluZUJveCwg
TGF5b3V0VW5pdCYgZGVsdGEsIGJvb2wmIG92ZXJmbG93c1JlZ2lvbiwgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCkKIHsKLSAgICAvLyBGSVhNRTogSWdub3JlIGFub255bW91cyBpbmxpbmUg
YmxvY2tzLiBIYW5kbGUgdGhlIGRlbHRhIGFscmVhZHkgaGF2aW5nIGJlZW4gc2V0IGJlY2F1c2Ug
b2YKLSAgICAvLyBjb2xsYXBzaW5nIG1hcmdpbnMgZnJvbSBhIHByZXZpb3VzIGFub255bW91cyBp
bmxpbmUgYmxvY2suCiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgcGFnaW5hdGUgdXNpbmcgbGlu
ZSBvdmVyZmxvdy4gVGhpcyBlbnN1cmVzIHRoYXQgbGluZXMgZG9uJ3Qgb3ZlcmxhcCBhdCBhbGwg
d2hlbiB3ZQogICAgIC8vIHB1dCBhIHN0cnV0IGJldHdlZW4gdGhlbSBmb3IgcGFnaW5hdGlvbiBw
dXJwb3Nlcy4gSG93ZXZlciwgdGhpcyByZWFsbHkgaXNuJ3QgdGhlIGRlc2lyZWQgcmVuZGVyaW5n
LCBzaW5jZQogICAgIC8vIHRoZSBsaW5lIG9uIHRoZSB0b3Agb2YgdGhlIG5leHQgcGFnZSB3aWxs
IGFwcGVhciB0b28gZmFyIGRvd24gcmVsYXRpdmUgdG8gdGhlIHNhbWUga2luZCBvZiBsaW5lIGF0
IHRoZSB0b3AKQEAgLTQyMjMsOCArNDIwNSw2IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21w
dXRlSW5saW5lUHJlZmUKICAgICB3aGlsZSAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGNoaWxkSXRl
cmF0b3IubmV4dCgpKSB7CiAgICAgICAgIGJvb2wgYXV0b1dyYXAgPSBjaGlsZC0+aXNSZXBsYWNl
ZCgpID8gY2hpbGQtPnBhcmVudCgpLT5zdHlsZSgpLmF1dG9XcmFwKCkgOgogICAgICAgICAgICAg
Y2hpbGQtPnN0eWxlKCkuYXV0b1dyYXAoKTsKLSAgICAgICAgYm9vbCBpc0Fub255bW91c0lubGlu
ZUJsb2NrID0gY2hpbGQtPmlzQW5vbnltb3VzSW5saW5lQmxvY2soKTsKLSAgICAgICAgCiAgICAg
ICAgIGlmICghY2hpbGQtPmlzQlIoKSkgewogICAgICAgICAgICAgLy8gU3RlcCBPbmU6IGRldGVy
bWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBuZWVkIHRvIHRlcm1pbmF0ZSBvdXIgY3VycmVudCBsaW5l
LgogICAgICAgICAgICAgLy8gRWFjaCBkaXNjcmV0ZSBjaHVuayBjYW4gYmVjb21lIHRoZSBuZXcg
bWluLXdpZHRoLCBpZiBpdCBpcyB0aGUgd2lkZXN0IGNodW5rCkBAIC00MzE1LDIxICs0Mjk1LDE5
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmUKICAgICAgICAgICAg
ICAgICAgICAgY2xlYXJQcmV2aW91c0Zsb2F0ID0gZmFsc2U7CiAKICAgICAgICAgICAgICAgICBi
b29sIGNhbkJyZWFrUmVwbGFjZWRFbGVtZW50ID0gIWNoaWxkLT5pc0ltYWdlKCkgfHwgYWxsb3dJ
bWFnZXNUb0JyZWFrOwotICAgICAgICAgICAgICAgIGlmICgoKGNhbkJyZWFrUmVwbGFjZWRFbGVt
ZW50ICYmIChhdXRvV3JhcCB8fCBvbGRBdXRvV3JhcCkgJiYgKCFpc1ByZXZDaGlsZElubGluZUZs
b3cgfHwgc2hvdWxkQnJlYWtMaW5lQWZ0ZXJUZXh0KSkgfHwgY2xlYXJQcmV2aW91c0Zsb2F0KSB8
fCBpc0Fub255bW91c0lubGluZUJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGls
ZC0+aXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpICYmIHN0eWxlVG9Vc2UuY29sbGFwc2VXaGl0ZVNw
YWNlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpcFRyYWlsaW5nU3BhY2UoaW5saW5l
TWF4LCBpbmxpbmVNaW4sIHRyYWlsaW5nU3BhY2VDaGlsZCk7CisgICAgICAgICAgICAgICAgaWYg
KCgoY2FuQnJlYWtSZXBsYWNlZEVsZW1lbnQgJiYgKGF1dG9XcmFwIHx8IG9sZEF1dG9XcmFwKSAm
JiAoIWlzUHJldkNoaWxkSW5saW5lRmxvdyB8fCBzaG91bGRCcmVha0xpbmVBZnRlclRleHQpKSB8
fCBjbGVhclByZXZpb3VzRmxvYXQpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxX
aWR0aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKICAgICAg
ICAgICAgICAgICAgICAgaW5saW5lTWluID0gMDsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSdyZSBzdXBwb3NlZCB0byBjbGVhciB0aGUgcHJldmlvdXMgZmxv
YXQsIHRoZW4gdGVybWluYXRlIG1heHdpZHRoIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgaWYg
KGNsZWFyUHJldmlvdXNGbG9hdCB8fCBpc0Fub255bW91c0lubGluZUJsb2NrKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGNsZWFyUHJldmlvdXNGbG9hdCkgewogICAgICAgICAgICAgICAgICAgICBt
YXhMb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtYXhMb2dpY2FsV2lkdGgsIGlubGluZU1h
eCk7CiAgICAgICAgICAgICAgICAgICAgIGlubGluZU1heCA9IDA7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgLy8gQWRkIGluIHRleHQtaW5kZW50LiBUaGlzIGlzIGFkZGVk
IGluIG9ubHkgb25jZS4KLSAgICAgICAgICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVudCAmJiAh
Y2hpbGQtPmlzRmxvYXRpbmcoKSAmJiAhaXNBbm9ueW1vdXNJbmxpbmVCbG9jaykgeworICAgICAg
ICAgICAgICAgIGlmICghYWRkZWRUZXh0SW5kZW50ICYmICFjaGlsZC0+aXNGbG9hdGluZygpKSB7
CiAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgY2VpbGVkSW5kZW50ID0gdGV4dEluZGVu
dC5jZWlsVG9GbG9hdCgpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1pbiArPSBjZWlsZWRJ
bmRlbnQ7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4ICs9IGNlaWxlZEluZGVudDsKQEAg
LTQzNDAsMTMgKzQzMTgsMTMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQ
cmVmZQogICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWRUZXh0SW5kZW50ID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGNh
bkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgJiYgIWFkZGVkU3RhcnRQdW5jdHVhdGlvbkhhbmcgJiYg
IWNoaWxkLT5pc0Zsb2F0aW5nKCkgJiYgIWlzQW5vbnltb3VzSW5saW5lQmxvY2spCisgICAgICAg
ICAgICAgICAgaWYgKGNhbkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgJiYgIWFkZGVkU3RhcnRQdW5j
dHVhdGlvbkhhbmcgJiYgIWNoaWxkLT5pc0Zsb2F0aW5nKCkpCiAgICAgICAgICAgICAgICAgICAg
IGFkZGVkU3RhcnRQdW5jdHVhdGlvbkhhbmcgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgLy8g
QWRkIG91ciB3aWR0aCB0byB0aGUgbWF4LgogICAgICAgICAgICAgICAgIGlubGluZU1heCArPSBz
dGQ6Om1heDxmbG9hdD4oMCwgY2hpbGRNYXgpOwogCi0gICAgICAgICAgICAgICAgaWYgKCghYXV0
b1dyYXAgfHwgIWNhbkJyZWFrUmVwbGFjZWRFbGVtZW50IHx8IChpc1ByZXZDaGlsZElubGluZUZs
b3cgJiYgIXNob3VsZEJyZWFrTGluZUFmdGVyVGV4dCkpICYmICFpc0Fub255bW91c0lubGluZUJs
b2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKCghYXV0b1dyYXAgfHwgIWNhbkJyZWFrUmVwbGFj
ZWRFbGVtZW50IHx8IChpc1ByZXZDaGlsZElubGluZUZsb3cgJiYgIXNob3VsZEJyZWFrTGluZUFm
dGVyVGV4dCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNGbG9hdGluZygp
KQogICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lk
dGgobWluTG9naWNhbFdpZHRoLCBjaGlsZE1pbik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UK
QEAgLTQzNTYsMTMgKzQzMzQsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGlu
ZVByZWZlCiAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdp
ZHRoKG1pbkxvZ2ljYWxXaWR0aCwgY2hpbGRNaW4pOwogCiAgICAgICAgICAgICAgICAgICAgIC8v
IE5vdyBzdGFydCBhIG5ldyBsaW5lLgotICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSAw
OwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5p
c0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRl
cm1pbmF0ZSBtYXggd2lkdGggYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIG1heExv
Z2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1heExvZ2ljYWxXaWR0aCwgY2hpbGRNYXgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWF4ID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSAwOyAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG9XcmFwICYm
IGNhbkJyZWFrUmVwbGFjZWRFbGVtZW50ICYmIGlzUHJldkNoaWxkSW5saW5lRmxvdykgewpAQCAt
NDQ4OCw4ICs0NDYwLDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVm
ZQogICAgICAgICAgICAgICAgICAgICBpbmxpbmVNYXggKz0gc3RkOjptYXg8ZmxvYXQ+KDAsIGNo
aWxkTWF4KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gSWdub3JlIHNwYWNlcyBh
ZnRlciBhIGxpc3QgbWFya2VyIGFuZCBhbHNvIGFmdGVyIGFuIGFub255bW91cyBpbmxpbmUgYmxv
Y2suCi0gICAgICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdE1hcmtlcigpIHx8IGlzQW5vbnltb3Vz
SW5saW5lQmxvY2spCisgICAgICAgICAgICAvLyBJZ25vcmUgc3BhY2VzIGFmdGVyIGEgbGlzdCBt
YXJrZXIuCisgICAgICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdE1hcmtlcigpKQogICAgICAgICAg
ICAgICAgIHN0cmlwRnJvbnRTcGFjZXMgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWluTG9naWNhbFdpZHRoLCBp
bmxpbmVNaW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaAkocmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTIsNyArNTkyLDYgQEAgcHJpdmF0ZTog
ICAgICAgIAogICAgIC8vIGxpbmUsIGkuZS4sIHRoYXQgaXQgY2FuJ3QgYmUgcmUtdXNlZC4KICAg
ICBib29sIGxpbmVXaWR0aEZvclBhZ2luYXRlZExpbmVDaGFuZ2VkKFJvb3RJbmxpbmVCb3gqLCBM
YXlvdXRVbml0IGxpbmVEZWx0YSwgUmVuZGVyRmxvd1RocmVhZCopIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KGNvbnN0IEVUZXh0QWxpZ24mLCBjb25zdCBS
b290SW5saW5lQm94KiwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxM
ZWZ0LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KTsKLSAgICB2b2lkIG1hcmdpbkNvbGxh
cHNlTGluZXNGcm9tU3RhcnQoTGluZUxheW91dFN0YXRlJiwgUm9vdElubGluZUJveCogc3RvcExp
bmUpOwogLy8gRU5EIE1FVEhPRFMgREVGSU5FRCBJTiBSZW5kZXJCbG9ja0xpbmVMYXlvdXQKIAog
ICAgIGJvb2wgbmFtZWRGbG93RnJhZ21lbnROZWVkc1VwZGF0ZSgpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJ
KHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjksMTYgKzY2OSwxMSBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoCiB9CiAKIHN0YXRpYyB2b2lkIHVw
ZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMoUmVuZGVyQmxvY2tGbG93JiBibG9jaywgZmxvYXQm
IGxpbmVMb2dpY2FsTGVmdCwgZmxvYXQmIGxpbmVMb2dpY2FsUmlnaHQsIGZsb2F0JiBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgsIGJvb2wgZmlyc3RMaW5lLAotICAgIEluZGVudFRleHRPck5vdCBzaG91
bGRJbmRlbnRUZXh0LCBMYXlvdXRVbml0IGJveExvZ2ljYWxIZWlnaHQsIFJvb3RJbmxpbmVCb3gq
IHJvb3RCb3gpCisgICAgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsIExheW91dFVu
aXQgYm94TG9naWNhbEhlaWdodCkKIHsKICAgICBMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0
ID0gYmxvY2subWluTGluZUhlaWdodEZvclJlcGxhY2VkUmVuZGVyZXIoZmlyc3RMaW5lLCBib3hM
b2dpY2FsSGVpZ2h0KTsKLSAgICBpZiAocm9vdEJveC0+aGFzQW5vbnltb3VzSW5saW5lQmxvY2so
KSkgewotICAgICAgICBsaW5lTG9naWNhbExlZnQgPSBibG9jay5sb2dpY2FsTGVmdE9mZnNldEZv
ckNvbnRlbnQoYmxvY2subG9naWNhbEhlaWdodCgpKTsKLSAgICAgICAgbGluZUxvZ2ljYWxSaWdo
dCA9IGJsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQoYmxvY2subG9naWNhbEhlaWdo
dCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBsaW5lTG9naWNhbExlZnQgPSBibG9jay5sb2dp
Y2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdodCgpLCBzaG91bGRJbmRlbnRU
ZXh0LCBsaW5lTG9naWNhbEhlaWdodCk7Ci0gICAgICAgIGxpbmVMb2dpY2FsUmlnaHQgPSBibG9j
ay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgc2hvdWxk
SW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOwotICAgIH0KKyAgICBsaW5lTG9naWNhbExl
ZnQgPSBibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdodCgp
LCBzaG91bGRJbmRlbnRUZXh0LCBsaW5lTG9naWNhbEhlaWdodCk7CisgICAgbGluZUxvZ2ljYWxS
aWdodCA9IGJsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdo
dCgpLCBzaG91bGRJbmRlbnRUZXh0LCBsaW5lTG9naWNhbEhlaWdodCk7CiAgICAgYXZhaWxhYmxl
TG9naWNhbFdpZHRoID0gbGluZUxvZ2ljYWxSaWdodCAtIGxpbmVMb2dpY2FsTGVmdDsKIH0KIApA
QCAtNjk2LDEyICs2OTEsMTIgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVE
aXJlYwogICAgIGZsb2F0IGxpbmVMb2dpY2FsTGVmdDsKICAgICBmbG9hdCBsaW5lTG9naWNhbFJp
Z2h0OwogICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aDsKLSAgICB1cGRhdGVMb2dpY2Fs
SW5saW5lUG9zaXRpb25zKCp0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQs
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQsIDAs
IGxpbmVCb3gpOworICAgIHVwZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMoKnRoaXMsIGxpbmVM
b2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxSaWdodCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpc0Zp
cnN0TGluZSwgc2hvdWxkSW5kZW50VGV4dCwgMCk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5n
OwogCiAgICAgaWYgKGZpcnN0UnVuICYmIGZpcnN0UnVuLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQo
KSkgewogICAgICAgICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4o
Zmlyc3RSdW4tPnJlbmRlcmVyKCkpOwotICAgICAgICB1cGRhdGVMb2dpY2FsSW5saW5lUG9zaXRp
b25zKCp0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQsIHJlbmRlckJveC5sb2dp
Y2FsSGVpZ2h0KCksIGxpbmVCb3gpOworICAgICAgICB1cGRhdGVMb2dpY2FsSW5saW5lUG9zaXRp
b25zKCp0aGlzLCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVudFRleHQsIHJlbmRlckJveC5sb2dp
Y2FsSGVpZ2h0KCkpOwogICAgIH0KIAogICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KGxpbmVCb3gsIGxpbmVJbmZvLCB0ZXh0QWxpZ24sIGxpbmVMb2dpY2FsTGVm
dCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1biwgdGV4
dEJveERhdGFNYXAsIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgd29yZE1lYXN1cmVtZW50cyk7CkBA
IC0xMjY3LDkgKzEyNjIsNiBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0UnVuc0FuZEZs
b2F0CiAgICAgSW5saW5lQmlkaVJlc29sdmVyIHJlc29sdmVyOwogICAgIFJvb3RJbmxpbmVCb3gq
IHN0YXJ0TGluZSA9IGRldGVybWluZVN0YXJ0UG9zaXRpb24obGF5b3V0U3RhdGUsIHJlc29sdmVy
KTsKICAgICAKLSAgICBpZiAoc3RhcnRMaW5lKQotICAgICAgICBtYXJnaW5Db2xsYXBzZUxpbmVz
RnJvbVN0YXJ0KGxheW91dFN0YXRlLCBzdGFydExpbmUpOwotCiAgICAgdW5zaWduZWQgY29uc2Vj
dXRpdmVIeXBoZW5hdGVkTGluZXMgPSAwOwogICAgIGlmIChzdGFydExpbmUpIHsKICAgICAgICAg
Zm9yIChSb290SW5saW5lQm94KiBsaW5lID0gc3RhcnRMaW5lLT5wcmV2Um9vdEJveCgpOyBsaW5l
ICYmIGxpbmUtPmlzSHlwaGVuYXRlZCgpOyBsaW5lID0gbGluZS0+cHJldlJvb3RCb3goKSkKQEAg
LTEzNjksNyArMTM2MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRSdW5zQW5kRmxv
YXQKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUgPSAo
Y29udGFpbnNGbG9hdHMoKSkgPyBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkubGFzdCgpLmdldCgp
IDogbnVsbHB0cjsKIAogICAgICAgICBXb3JkTWVhc3VyZW1lbnRzIHdvcmRNZWFzdXJlbWVudHM7
Ci0gICAgICAgIGVuZCA9IGxpbmVCcmVha2VyLm5leHRMaW5lQnJlYWsocmVzb2x2ZXIsIGxheW91
dFN0YXRlLmxpbmVJbmZvKCksIGxheW91dFN0YXRlLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0
RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJl
bWVudHMpOworICAgICAgICBlbmQgPSBsaW5lQnJlYWtlci5uZXh0TGluZUJyZWFrKHJlc29sdmVy
LCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVBy
ZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMp
OwogICAgICAgICBjYWNoZVByaW9yQ2hhcmFjdGVyc0lmTmVlZGVkKHJlbmRlclRleHRJbmZvLmxp
bmVCcmVha0l0ZXJhdG9yKTsKICAgICAgICAgcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0
b3IucmVzZXRQcmlvckNvbnRleHQoKTsKICAgICAgICAgaWYgKHJlc29sdmVyLnBvc2l0aW9uKCku
YXRFbmQoKSkgewpAQCAtMTQyNywyMSArMTQxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojps
YXlvdXRSdW5zQW5kRmxvYXQKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFkanVzdG1lbnQg
PSAwOwogICAgICAgICAgICAgICAgIGJvb2wgb3ZlcmZsb3dzUmVnaW9uID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSWYgb3VyIHByZXZpb3VzIGxpbmUgd2Fz
IGFuIGFub255bW91cyBibG9jayBhbmQgd2UgYXJlIG5vdCBhbiBhbm9ueW1vdXMgYmxvY2ssCi0g
ICAgICAgICAgICAgICAgLy8gc2ltdWxhdGUgYSBtYXJnaW4gY29sbGFwc2Ugbm93IHNvIHRoYXQg
d2UgZ2V0IHRoZSBwcm9wZXIKLSAgICAgICAgICAgICAgICAvLyBpbmNyZWFzZWQgaGVpZ2h0LiBX
ZSBhbHNvIGhhdmUgdG8gc2ltdWxhdGUgYSBtYXJnaW4gY29sbGFwc2UgdG8gcHJvcGFnYXRlIG1h
cmdpbnMKLSAgICAgICAgICAgICAgICAvLyB0aHJvdWdoIHRvIHRoZSB0b3Agb2Ygb3VyIGJsb2Nr
LgotICAgICAgICAgICAgICAgIGlmICghbGluZUJveC0+aGFzQW5vbnltb3VzSW5saW5lQmxvY2so
KSkgewotICAgICAgICAgICAgICAgICAgICBSb290SW5saW5lQm94KiBwcmV2Um9vdCA9IGxpbmVC
b3gtPnByZXZSb290Qm94KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2Um9vdCAmJiBw
cmV2Um9vdC0+aGFzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQob2xkTG9naWNhbEhlaWdo
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZU1hcmdpbnNXaXRoQ2hpbGRJbmZv
KG51bGxwdHIsIG51bGxwdHIsIGxheW91dFN0YXRlLm1hcmdpbkluZm8oKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhZGp1c3RtZW50ID0gbG9naWNhbEhlaWdodCgpIC0gb2xkTG9naWNhbEhl
aWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoY3VycmVudExv
Z2ljYWxIZWlnaHQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGxheW91dFN0YXRlLm1hcmdpbkluZm8oKS5zZXRBdEJlZm9yZVNpZGVPZkJsb2NrKGZhbHNlKTsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGF5b3V0U3RhdGUubWFyZ2luSW5m
bygpLnNldEF0QmVmb3JlU2lkZU9mQmxvY2soZmFsc2UpOwogCiAgICAgICAgICAgICAgICAgaWYg
KHBhZ2luYXRlZCkKICAgICAgICAgICAgICAgICAgICAgYWRqdXN0TGluZVBvc2l0aW9uRm9yUGFn
aW5hdGlvbihsaW5lQm94LCBhZGp1c3RtZW50LCBvdmVyZmxvd3NSZWdpb24sIGxheW91dFN0YXRl
LmZsb3dUaHJlYWQoKSk7CkBAIC0xNzM1LDEyICsxNzEzLDEwIEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjpsYXlvdXRMaW5lQm94ZXMoYm8KICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hcmdp
bkVuZEZvckNoaWxkKGJveCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgYm94LmRpcnR5TGluZUJveGVzKGlzRnVsbExheW91dCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghby5pc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc0Z1bGxMYXlvdXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZWRDaGlsZHJlbi5hcHBlbmQoJmJveCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LmxheW91dElmTmVlZGVkKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVsbExheW91
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkQ2hpbGRyZW4uYXBwZW5kKCZib3gp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBib3gu
bGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKG8uaXNUZXh0T3JMaW5lQnJlYWsoKSB8fCAoaXM8UmVuZGVySW5saW5lPihvKSAmJiAhd2Fs
a2VyLmF0RW5kT2ZJbmxpbmUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVySW5s
aW5lPihvKSkKQEAgLTE3NzEsMTIgKzE3NDcsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0TGluZUJveGVzKGJvCiAgICAgLy8gZGV0ZXJtaW5pbmcgdGhlIGNvcnJlY3QgY29sbGFwc2Vk
IGJvdHRvbSBtYXJnaW4gaW5mb3JtYXRpb24uIFRoaXMgY29sbGFwc2UgaXMgb25seSBuZWNlc3Nh
cnkKICAgICAvLyBpZiBvdXIgbGFzdCBjaGlsZCB3YXMgYW4gYW5vbnltb3VzIGlubGluZSBibG9j
ayB0aGF0IG1pZ2h0IG5lZWQgdG8gcHJvcGFnYXRlIG1hcmdpbiBpbmZvcm1hdGlvbiBvdXQgdG8K
ICAgICAvLyB1cy4KLSAgICBMYXlvdXRVbml0IGJlZm9yZUVkZ2UgPSBib3JkZXJBbmRQYWRkaW5n
QmVmb3JlKCk7CiAgICAgTGF5b3V0VW5pdCBhZnRlckVkZ2UgPSBib3JkZXJBbmRQYWRkaW5nQWZ0
ZXIoKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSArIGxhc3RMaW5lQW5ub3RhdGlvbnNBZGp1
c3RtZW50OwotICAgIGlmIChsYXN0Um9vdEJveCgpICYmIGxhc3RSb290Qm94KCktPmhhc0Fub255
bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgIGhhbmRsZUFmdGVyU2lkZU9mQmxvY2soYmVmb3Jl
RWRnZSwgYWZ0ZXJFZGdlLCBsYXlvdXRTdGF0ZS5tYXJnaW5JbmZvKCkpOwotICAgIGVsc2UKLSAg
ICAgICAgc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCkgKyBhZnRlckVkZ2UpOworICAg
IHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpICsgYWZ0ZXJFZGdlKTsKIAogICAgIGlm
ICghZmlyc3RSb290Qm94KCkgJiYgaGFzTGluZUlmRW1wdHkoKSkKICAgICAgICAgc2V0TG9naWNh
bEhlaWdodChsb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZklu
dGVyaW9yTGluZUJveGVzKSk7CkBAIC0xODg0LDcgKzE4NTYsNyBAQCBSb290SW5saW5lQm94KiBS
ZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluCiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgZGlydHkg
bGluZS4KICAgICAgICAgICAgIGlmIChSb290SW5saW5lQm94KiBwcmV2Um9vdEJveCA9IGN1cnJl
bnRMaW5lLT5wcmV2Um9vdEJveCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIHBy
ZXZpb3VzIGxpbmUuCi0gICAgICAgICAgICAgICAgaWYgKCFkaXJ0aWVkQnlGbG9hdCAmJiAhY3Vy
cmVudExpbmUtPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkgJiYgKCFwcmV2Um9vdEJveC0+ZW5k
c1dpdGhCcmVhaygpCisgICAgICAgICAgICAgICAgaWYgKCFkaXJ0aWVkQnlGbG9hdCAmJiAoIXBy
ZXZSb290Qm94LT5lbmRzV2l0aEJyZWFrKCkKICAgICAgICAgICAgICAgICAgICAgfHwgIXByZXZS
b290Qm94LT5saW5lQnJlYWtPYmooKQogICAgICAgICAgICAgICAgICAgICB8fCAoaXM8UmVuZGVy
VGV4dD4oKnByZXZSb290Qm94LT5saW5lQnJlYWtPYmooKSkKICAgICAgICAgICAgICAgICAgICAg
JiYgcHJldlJvb3RCb3gtPmxpbmVCcmVha1BvcygpID49IGRvd25jYXN0PFJlbmRlclRleHQ+KCpw
cmV2Um9vdEJveC0+bGluZUJyZWFrT2JqKCkpLnRleHRMZW5ndGgoKSkpKSB7CkBAIC0yMDYyLDcg
KzIwMzQsNyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6bWF0Y2hlZEVuZExpbmUoTGluCiAgICAg
Um9vdElubGluZUJveCogb3JpZ2luYWxFbmRMaW5lID0gbGF5b3V0U3RhdGUuZW5kTGluZSgpOwog
ICAgIFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBvcmlnaW5hbEVuZExpbmU7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1MaW5lcyAmJiBsaW5lOyBpKyssIGxpbmUgPSBsaW5lLT5uZXh0Um9vdEJv
eCgpKSB7Ci0gICAgICAgIGlmIChsaW5lLT5saW5lQnJlYWtPYmooKSA9PSByZXNvbHZlci5wb3Np
dGlvbigpLnJlbmRlcmVyKCkgJiYgbGluZS0+bGluZUJyZWFrUG9zKCkgPT0gcmVzb2x2ZXIucG9z
aXRpb24oKS5vZmZzZXQoKSAmJiAhbGluZS0+aGFzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgewor
ICAgICAgICBpZiAobGluZS0+bGluZUJyZWFrT2JqKCkgPT0gcmVzb2x2ZXIucG9zaXRpb24oKS5y
ZW5kZXJlcigpICYmIGxpbmUtPmxpbmVCcmVha1BvcygpID09IHJlc29sdmVyLnBvc2l0aW9uKCku
b2Zmc2V0KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXRjaC4KICAgICAgICAgICAg
IGlmIChsaW5lLT5saW5lQnJlYWtCaWRpU3RhdHVzKCkgIT0gcmVzb2x2ZXIuc3RhdHVzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyAuLi5idXQgdGhlIGJpZGkgc3RhdGUgZG9l
c24ndCBtYXRjaC4KQEAgLTIzMDksNDYgKzIyODEsNCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
dXBkYXRlUmVnaW9uRm9yTGluCiAgICAgICAgIGxpbmVCb3gtPnNldElzRmlyc3RBZnRlclBhZ2VC
cmVhayh0cnVlKTsKIH0KIAotdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hcmdpbkNvbGxhcHNlTGlu
ZXNGcm9tU3RhcnQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgUm9vdElubGluZUJveCog
c3RvcExpbmUpCi17Ci0gICAgLy8gV2UgaGF2ZSB0byBoYW5kbGUgYW4gYW5vbnltb3VzIGlubGlu
ZSBibG9jayBzdHJlYWsgYXQgdGhlIHN0YXJ0IG9mIHRoZSBibG9jayBpbiBvcmRlciB0byBtYWtl
IHN1cmUgb3VyIG93biBtYXJnaW5zIGFyZQotICAgIC8vIGNvcnJlY3QuIFdlIG9ubHkgaGF2ZSB0
byBkbyB0aGlzIGlmIHRoZSBjaGlsZHJlbiBjYW4gcHJvcGFnYXRlIG1hcmdpbnMgb3V0IHRvIHVz
LgotICAgIGJvb2wgcmVzZXRMb2dpY2FsSGVpZ2h0ID0gZmFsc2U7Ci0gICAgaWYgKGxheW91dFN0
YXRlLm1hcmdpbkluZm8oKS5jYW5Db2xsYXBzZVdpdGhNYXJnaW5CZWZvcmUoKSkgewotICAgICAg
ICBSb290SW5saW5lQm94KiBzdGFydExpbmUgPSBmaXJzdFJvb3RCb3goKTsKLSAgICAgICAgUm9v
dElubGluZUJveCogY3VycjsKLSAgICAgICAgZm9yIChjdXJyID0gc3RhcnRMaW5lOyBjdXJyICYm
IGN1cnItPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkgJiYgbGF5b3V0U3RhdGUubWFyZ2luSW5m
bygpLmNhbkNvbGxhcHNlV2l0aE1hcmdpbkJlZm9yZSgpOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RC
b3goKSkgewotICAgICAgICAgICAgaWYgKGN1cnIgPT0gc3RvcExpbmUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKCFyZXNldExvZ2ljYWxIZWlnaHQpIHsKLSAgICAg
ICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSk7Ci0g
ICAgICAgICAgICAgICAgcmVzZXRMb2dpY2FsSGVpZ2h0ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGxheW91dEJsb2NrQ2hpbGQoKmN1cnItPmFub255bW91c0lubGluZUJsb2Nr
KCksIGxheW91dFN0YXRlLm1hcmdpbkluZm8oKSwKLSAgICAgICAgICAgICAgICBsYXlvdXRTdGF0
ZS5wcmV2RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2soKSwgbGF5b3V0U3RhdGUu
bWF4RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2soKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCi0gICAgLy8gTm93IHRoYXQgd2UndmUgaGFuZGxlZCB0aGUgdG9wIG9mIHRoZSBi
bG9jaywgaWYgdGhlIHN0b3BMaW5lIGlzbid0IGFuIGFub255bW91cyBibG9jaywgdGhlbiB3ZSdy
ZSBkb25lLgotICAgIGlmICghc3RvcExpbmUtPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIGFscmVhZHkgaGFuZGxlZCB0b3Agb2YgYmxvY2sg
d2l0aCBzdGFydExpbmUuCi0gICAgaWYgKHN0b3BMaW5lID09IGZpcnN0Um9vdEJveCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBSZS1ydW4gbWFyZ2luIGNvbGxhcHNpbmcgb24gdGhlIGJs
b2NrIHNlcXVlbmNlIHRoYXQgc3RvcExpbmUgaXMgYSBwYXJ0IG9mLgotICAgIC8vIEZpcnN0IGdv
IGJhY2t3YXJkcyB0byBnZXQgdGhlIGVudGlyZSBzZXF1ZW5jZS4KLSAgICBSb290SW5saW5lQm94
KiBwcmV2ID0gc3RvcExpbmU7Ci0gICAgZm9yICggOyBwcmV2LT5oYXNBbm9ueW1vdXNJbmxpbmVC
bG9jaygpOyBwcmV2ID0gcHJldi0+cHJldlJvb3RCb3goKSkgewotICAgIH07Ci0KLSAgICAvLyBV
cGRhdGUgdGhlIGJsb2NrIGhlaWdodCB0byB0aGUgY29ycmVjdCBzdGF0ZS4KLSAgICBzZXRMb2dp
Y2FsSGVpZ2h0KHByZXYtPmxpbmVCb3R0b21XaXRoTGVhZGluZygpKTsKLSAgICAKLSAgICAvLyBO
b3cgcnVuIG1hcmdpbiBjb2xsYXBzaW5nIG9uIHRob3NlIGxpbmVzLgotICAgIGZvciAocHJldiA9
IHByZXYtPm5leHRSb290Qm94KCk7IHByZXYgIT0gc3RvcExpbmU7IHByZXYgPSBwcmV2LT5uZXh0
Um9vdEJveCgpKQotICAgICAgICBsYXlvdXRCbG9ja0NoaWxkKCpwcmV2LT5hbm9ueW1vdXNJbmxp
bmVCbG9jaygpLCBsYXlvdXRTdGF0ZS5tYXJnaW5JbmZvKCksIGxheW91dFN0YXRlLnByZXZGbG9h
dEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jaygpLCBsYXlvdXRTdGF0ZS5tYXhGbG9hdEJv
dHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jaygpKTsKLX0KLQogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYxLDEw
ICsyNTYxLDYgQEAgYm9vbCBSZW5kZXJCb3g6Omhhc1N0cmV0Y2hlZExvZ2ljYWxXaWR0aAogCiBi
b29sIFJlbmRlckJveDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQoU2l6ZVR5cGUgd2lk
dGhUeXBlKSBjb25zdAogewotICAgIC8vIEFub255bW91cyBpbmxpbmUgYmxvY2tzIGFsd2F5cyBm
aWxsIHRoZSB3aWR0aCBvZiB0aGVpciBjb250YWluaW5nIGJsb2NrLgotICAgIGlmIChpc0Fub255
bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIC8vIE1hcnF1
ZWVzIGluIFdpbklFIGFyZSBsaWtlIGEgbWl4dHVyZSBvZiBibG9ja3MgYW5kIGlubGluZS1ibG9j
a3MuICBUaGV5IHNpemUgYXMgdGhvdWdoIHRoZXkncmUgYmxvY2tzLAogICAgIC8vIGJ1dCB0aGV5
IGFsbG93IHRleHQgdG8gc2l0IG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIG1hcnF1ZWUuCiAgICAg
aWYgKGlzRmxvYXRpbmcoKSB8fCAoaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSAmJiAhaXNI
VE1MTWFycXVlZSgpKSkKQEAgLTQ1ODIsMTQgKzQ1NzgsMTQgQEAgYm9vbCBSZW5kZXJCb3g6OnNo
cmlua1RvQXZvaWRGbG9hdHMoKSBjbwogCiBib29sIFJlbmRlckJveDo6Y3JlYXRlc05ld0Zvcm1h
dHRpbmdDb250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKGlzSW5saW5lQmxvY2tPcklubGlu
ZVRhYmxlKCkgJiYgIWlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgfHwgaXNGbG9hdGluZ09yT3V0
T2ZGbG93UG9zaXRpb25lZCgpIHx8IGhhc092ZXJmbG93Q2xpcCgpIHx8IGlzRmxleEl0ZW1JbmNs
dWRpbmdEZXByZWNhdGVkKCkKKyAgICByZXR1cm4gaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUo
KSB8fCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaGFzT3ZlcmZsb3dDbGlw
KCkgfHwgaXNGbGV4SXRlbUluY2x1ZGluZ0RlcHJlY2F0ZWQoKQogICAgICAgICB8fCBpc1RhYmxl
Q2VsbCgpIHx8IGlzVGFibGVDYXB0aW9uKCkgfHwgaXNGaWVsZHNldCgpIHx8IGlzV3JpdGluZ01v
ZGVSb290KCkgfHwgaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIHx8IGlzUmVuZGVyRmxvd1Ro
cmVhZCgpIHx8IGlzUmVuZGVyUmVnaW9uKCkKICAgICAgICAgfHwgaXNHcmlkSXRlbSgpIHx8IHN0
eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpIHx8IHN0eWxlKCkuY29sdW1uU3BhbigpOwogfQogCiBi
b29sIFJlbmRlckJveDo6YXZvaWRzRmxvYXRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKGlzUmVw
bGFjZWQoKSAmJiAhaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKSB8fCBpc0hSKCkgfHwgaXNMZWdl
bmQoKSB8fCBpc0ZpZWxkc2V0KCkgfHwgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCk7Cisg
ICAgcmV0dXJuIGlzUmVwbGFjZWQoKSB8fCBpc0hSKCkgfHwgaXNMZWdlbmQoKSB8fCBpc0ZpZWxk
c2V0KCkgfHwgY3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCk7CiB9CiAKIHZvaWQgUmVuZGVy
Qm94OjphZGRWaXN1YWxFZmZlY3RPdmVyZmxvdygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiwxMCAr
MzI2LDkgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogICAgIGlm
ICghYmVmb3JlQ2hpbGQgJiYgaXNBZnRlckNvbnRlbnQobGFzdENoaWxkKCkpKQogICAgICAgICBi
ZWZvcmVDaGlsZCA9IGxhc3RDaGlsZCgpOwogICAgIAotICAgIGJvb2wgdXNlTmV3QmxvY2tJbnNp
ZGVJbmxpbmVNb2RlbCA9IHNldHRpbmdzKCkubmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJs
ZWQoKTsKICAgICBib29sIGNoaWxkSW5saW5lID0gbmV3Q2hpbGRJc0lubGluZSgqbmV3Q2hpbGQs
ICp0aGlzKTsKICAgICAvLyBUaGlzIGNvZGUgaXMgZm9yIHRoZSBvbGQgYmxvY2staW5zaWRlLWlu
bGluZSBtb2RlbCB0aGF0IHVzZXMgY29udGludWF0aW9ucy4KLSAgICBpZiAoIXVzZU5ld0Jsb2Nr
SW5zaWRlSW5saW5lTW9kZWwgJiYgIWNoaWxkSW5saW5lICYmICFuZXdDaGlsZC0+aXNGbG9hdGlu
Z09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgaWYgKCFjaGlsZElubGluZSAmJiAhbmV3
Q2hpbGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAvLyBX
ZSBhcmUgcGxhY2luZyBhIGJsb2NrIGluc2lkZSBhbiBpbmxpbmUuIFdlIGhhdmUgdG8gcGVyZm9y
bSBhIHNwbGl0IG9mIHRoaXMKICAgICAgICAgLy8gaW5saW5lIGludG8gY29udGludWF0aW9ucy4g
IFRoaXMgaW52b2x2ZXMgY3JlYXRpbmcgYW4gYW5vbnltb3VzIGJsb2NrIGJveCB0byBob2xkCiAg
ICAgICAgIC8vIHxuZXdDaGlsZHwuICBXZSB0aGVuIG1ha2UgdGhhdCBibG9jayBib3ggYSBjb250
aW51YXRpb24gb2YgdGhpcyBpbmxpbmUuICBXZSB0YWtlIGFsbCBvZgpAQCAtMzUwLDY3ICszNDks
NyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKCF1c2VOZXdCbG9ja0luc2lkZUlubGluZU1vZGVs
KSB7Ci0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0OjphZGRDaGlsZChuZXdDaGlsZCwgYmVm
b3JlQ2hpbGQpOwotICAgICAgICBuZXdDaGlsZC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhz
UmVjYWxjKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGNvZGUgaXMg
Zm9yIHRoZSBuZXcgYmxvY2staW5zaWRlLWlubGluZSBtb2RlbCB0aGF0IHVzZXMgYW5vbnltb3Vz
IGlubGluZSBibG9ja3MuCi0gICAgLy8gSWYgdGhlIHJlcXVlc3RlZCBiZWZvcmVDaGlsZCBpcyBu
b3Qgb25lIG9mIG91ciBjaGlsZHJlbiwgdGhlbiB0aGlzIGlzIG1vc3QgbGlrZWx5IGJlY2F1c2UK
LSAgICAvLyB0aGVyZSBpcyBhbiBhbm9ueW1vdXMgaW5saW5lLWJsb2NrIGJveCB3aXRoaW4gdGhp
cyBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgYmVmb3JlQ2hpbGQuCi0gICAgLy8gSW5zZXJ0IHRo
ZSBjaGlsZCBpbnRvIHRoZSBhbm9ueW1vdXMgaW5saW5lLWJsb2NrIGJveCBpbnN0ZWFkIG9mIGhl
cmUuCi0gICAgLy8gQSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdGhhdCB0aGUgYmVmb3JlQ2hpbGQg
aXMgYW4gYW5vbnltb3VzIGJsb2NrIGluc2lkZSB0aGUgYW5vbnltb3VzIGlubGluZSBibG9jay4K
LSAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgaW5saW5lcyBhcmUgaW5zZXJ0ZWQgaW4gYmV0d2Vl
biB0d28gb2YgdGhlIGFub255bW91cyBpbmxpbmUgYmxvY2sncyBibG9jay1sZXZlbAotICAgIC8v
IGNoaWxkcmVuIGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQuCi0gICAgaWYgKGJlZm9yZUNoaWxk
ICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIEFTU0VSVChiZWZv
cmVDaGlsZC0+cGFyZW50KCkpOwotICAgICAgICBBU1NFUlQoYmVmb3JlQ2hpbGQtPnBhcmVudCgp
LT5pc0Fub255bW91c0lubGluZUJsb2NrKCkgfHwgYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5pc0Fu
b255bW91c0Jsb2NrKCkpOwotICAgICAgICBpZiAoYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5pc0Fu
b255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGlmICghY2hpbGRJbmxpbmUgfHwg
KGNoaWxkSW5saW5lICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+Zmlyc3RDaGlsZCgpICE9IGJl
Zm9yZUNoaWxkKSkKLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZC0+cGFyZW50KCktPmFkZENo
aWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5pc0Fub255bW91c0Jsb2NrKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVCghYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5wYXJlbnQoKSB8fCBi
ZWZvcmVDaGlsZC0+cGFyZW50KCktPnBhcmVudCgpLT5pc0Fub255bW91c0lubGluZUJsb2NrKCkp
OwotICAgICAgICAgICAgQVNTRVJUKGNoaWxkSW5saW5lKTsKLSAgICAgICAgICAgIGlmIChjaGls
ZElubGluZSB8fCAoIWNoaWxkSW5saW5lICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+Zmlyc3RD
aGlsZCgpICE9IGJlZm9yZUNoaWxkKSkKLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZC0+cGFy
ZW50KCktPmFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZCk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgYWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkLT5wYXJlbnQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghY2hpbGRJ
bmxpbmUpIHsKLSAgICAgICAgLy8gV2UgYXJlIHBsYWNpbmcgYSBibG9jayBpbnNpZGUgYW4gaW5s
aW5lLiBXZSBoYXZlIHRvIHBsYWNlIHRoZSBibG9jayBpbnNpZGUgYW4gYW5vbnltb3VzIGlubGlu
ZS1ibG9jay4KLSAgICAgICAgLy8gVGhpcyBpbmxpbmUtYmxvY2sgY2FuIGhvdXNlIGEgc2VxdWVu
Y2Ugb2YgY29udGlndW91cyBibG9jay1sZXZlbCBjaGlsZHJlbiwgYW5kIHRoZXkgd2lsbCBhbGwg
c2l0IG9uIHRoZQotICAgICAgICAvLyBzYW1lICJsaW5lIiB0b2dldGhlci4gV2UgdHJ5IHRvIHJl
dXNlIGFuIGV4aXN0aW5nIGlubGluZS1ibG9jayBpZiBwb3NzaWJsZS4KLSAgICAgICAgaWYgKGJl
Zm9yZUNoaWxkKSB7Ci0gICAgICAgICAgICBpZiAoYmVmb3JlQ2hpbGQtPnByZXZpb3VzU2libGlu
ZygpICYmIGJlZm9yZUNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKS0+aXNBbm9ueW1vdXNJbmxpbmVC
bG9jaygpKSB7Ci0gICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihiZWZv
cmVDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpLT5hZGRDaGlsZChuZXdDaGlsZCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKGxhc3RDaGlsZCgpICYmIGxhc3RDaGlsZCgpLT5pc0Fub255bW91c0lubGluZUJs
b2NrKCkpIHsKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGxhc3RD
aGlsZCgpKS0+YWRkQ2hpbGQobmV3Q2hpbGQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotIAotICAgICAgICBpZiAoIW5ld0NoaWxkLT5pc0Zsb2F0
aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBu
byBzdWl0YWJsZSBleGlzdGluZyBhbm9ueW1vdXMgaW5saW5lLWJsb2NrLiBDcmVhdGUgYSBuZXcg
b25lLgotICAgICAgICAgICAgUmVuZGVyQmxvY2tGbG93KiBhbm9ueW1vdXNJbmxpbmVCbG9jayA9
IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgSU5MSU5FX0JMT0NLKSk7Ci0gICAgICAgICAg
ICBhbm9ueW1vdXNJbmxpbmVCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7Ci0gICAgCi0gICAgICAg
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRkQ2hpbGQoYW5vbnltb3VzSW5saW5lQmxvY2ss
IGJlZm9yZUNoaWxkKTsKLSAgICAgICAgICAgIGFub255bW91c0lubGluZUJsb2NrLT5hZGRDaGls
ZChuZXdDaGlsZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsK
LQogICAgIG5ld0NoaWxkLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlz
aW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTk1LDExICsxNTk1LDYgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
OmlzQ29tcG9zaXRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGhhc0xheWVyKCkgJiYgZG93bmNhc3Q8
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwog
fQogCi1ib29sIFJlbmRlck9iamVjdDo6aXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGlzQW5vbnltb3VzKCkgJiYgc3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5F
X0JMT0NLICYmIHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8gJiYgaXNSZW5kZXJCbG9j
a0Zsb3coKSAmJiAhaXNSdWJ5UnVuKCkgJiYgIWlzUnVieUJhc2UoKSAmJiAhaXNSdWJ5KHBhcmVu
dCgpKTsKLX0KLQogYm9vbCBSZW5kZXJPYmplY3Q6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIEhpdFRlc3RGaWx0ZXIgaGl0VGVzdEZpbHRlcikKIHsKICAgICBib29sIGluc2lkZSA9IGZh
bHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNp
b24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAg
ICAgICA7CiAgICAgfQotICAgIGJvb2wgaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpIGNvbnN0Owog
ICAgIGJvb2wgaXNFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbm9kZSgpICYm
IG5vZGUoKS0+cmVuZGVyZXIoKSAhPSB0aGlzOyB9CiAgICAgYm9vbCBpc0lubGluZUVsZW1lbnRD
b250aW51YXRpb24oKSBjb25zdCB7IHJldHVybiBpc0VsZW1lbnRDb250aW51YXRpb24oKSAmJiBp
c0lubGluZSgpOyB9CiAgICAgYm9vbCBpc0Jsb2NrRWxlbWVudENvbnRpbnVhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGlzRWxlbWVudENvbnRpbnVhdGlvbigpICYmICFpc0lubGluZSgpOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAy
MjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4NCw4ICsyODQsOCBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6
OmFsaWduQm94ZXNJbkJsCiAgICAgCiAgICAgbWF4SGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5p
dD4oMCwgbWF4SGVpZ2h0KTsgLy8gRklYTUU6IElzIHRoaXMgcmVhbGx5IG5lY2Vzc2FyeT8KIAot
ICAgIExheW91dFVuaXQgbGluZVRvcFdpdGhMZWFkaW5nID0gIWhhc0Fub255bW91c0lubGluZUJs
b2NrKCkgPyBoZWlnaHRPZkJsb2NrIDogbGluZVRvcDsKLSAgICBMYXlvdXRVbml0IGxpbmVCb3R0
b21XaXRoTGVhZGluZyA9ICFoYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpID8gaGVpZ2h0T2ZCbG9j
ayArIG1heEhlaWdodCA6IGxpbmVCb3R0b207CisgICAgTGF5b3V0VW5pdCBsaW5lVG9wV2l0aExl
YWRpbmcgPSBoZWlnaHRPZkJsb2NrOworICAgIExheW91dFVuaXQgbGluZUJvdHRvbVdpdGhMZWFk
aW5nID0gaGVpZ2h0T2ZCbG9jayArIG1heEhlaWdodDsKICAgICBzZXRMaW5lVG9wQm90dG9tUG9z
aXRpb25zKGxpbmVUb3AsIGxpbmVCb3R0b20sIGxpbmVUb3BXaXRoTGVhZGluZywgbGluZUJvdHRv
bVdpdGhMZWFkaW5nKTsKICAgICBzZXRQYWdpbmF0ZWRMaW5lV2lkdGgoYmxvY2tGbG93KCkuYXZh
aWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudChoZWlnaHRPZkJsb2NrKSk7CiAKQEAgLTg5MCwx
NCArODkwLDYgQEAgdm9pZCBSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQgogICAg
IC8vIFJlcGxhY2VkIGJveGVzIHdpbGwgcmV0dXJuIDAgZm9yIHRoZSBsaW5lLWhlaWdodCBpZiBs
aW5lLWJveC1jb250YWluIHNheXMgdGhleSBhcmUKICAgICAvLyBub3QgdG8gYmUgaW5jbHVkZWQu
CiAgICAgaWYgKGJveC5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkgewotICAgICAgICBpZiAoaGFz
QW5vbnltb3VzSW5saW5lQmxvY2soKSkgewotICAgICAgICAgICAgYXNjZW50ID0gMDsgLy8gTWFy
Z2lucyBleGlzdCAib3V0c2lkZSIgdGhlIGxpbmUsIHNpbmNlIHRoZXkgaGF2ZSB0byBjb2xsYXBz
ZS4KLSAgICAgICAgICAgIGRlc2NlbnQgPSAwOwotICAgICAgICAgICAgYWZmZWN0c0FzY2VudCA9
IHRydWU7Ci0gICAgICAgICAgICBhZmZlY3RzRGVzY2VudCA9IHRydWU7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICBpZiAobGluZVN0eWxlKCku
bGluZUJveENvbnRhaW4oKSAmIExpbmVCb3hDb250YWluUmVwbGFjZWQpIHsKICAgICAgICAgICAg
IGFzY2VudCA9IGJveC5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSgpKTsKICAgICAgICAg
ICAgIGRlc2NlbnQgPSBib3gubGluZUhlaWdodCgpIC0gYXNjZW50OwpAQCAtOTA4LDkgKzkwMCw2
IEBAIHZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckIKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGlmIChoYXNBbm9ueW1vdXNJbmxpbmVC
bG9jaygpKQotICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8Y29uc3QgRm9udCo+KiB1c2Vk
Rm9udHMgPSBudWxscHRyOwogICAgIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cgPSBudWxs
cHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHBy
aXZhdGU6CiAKIGNsYXNzIEJyZWFraW5nQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgQnJlYWtpbmdD
b250ZXh0KExpbmVCcmVha2VyJiBsaW5lQnJlYWtlciwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNv
bHZlciwgTGluZUluZm8mIGluTGluZUluZm8sIExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IExpbmVXaWR0aCYgbGluZVdpZHRoLCBSZW5kZXJUZXh0SW5mbyYgaW5SZW5kZXJUZXh0SW5mbywg
RmxvYXRpbmdPYmplY3QqIGluTGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgYm9vbCBhcHBsaWVk
U3RhcnRXaWR0aCwgUmVuZGVyQmxvY2tGbG93JiBibG9jaykKKyAgICBCcmVha2luZ0NvbnRleHQo
TGluZUJyZWFrZXImIGxpbmVCcmVha2VyLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBM
aW5lSW5mbyYgaW5MaW5lSW5mbywgTGluZVdpZHRoJiBsaW5lV2lkdGgsIFJlbmRlclRleHRJbmZv
JiBpblJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVjdCogaW5MYXN0RmxvYXRGcm9tUHJldmlv
dXNMaW5lLCBib29sIGFwcGxpZWRTdGFydFdpZHRoLCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrKQog
ICAgICAgICA6IG1fbGluZUJyZWFrZXIobGluZUJyZWFrZXIpCiAgICAgICAgICwgbV9yZXNvbHZl
cihyZXNvbHZlcikKICAgICAgICAgLCBtX2N1cnJlbnQocmVzb2x2ZXIucG9zaXRpb24oKSkKQEAg
LTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9yZW5kZXJUZXh0SW5mbyhpblJl
bmRlclRleHRJbmZvKQogICAgICAgICAsIG1fbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZShpbkxh
c3RGbG9hdEZyb21QcmV2aW91c0xpbmUpCiAgICAgICAgICwgbV93aWR0aChsaW5lV2lkdGgpCi0g
ICAgICAgICwgbV9saW5lTGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpCiAgICAgICAgICwgbV9jdXJy
V1MoTk9STUFMKQogICAgICAgICAsIG1fbGFzdFdTKE5PUk1BTCkKICAgICAgICAgLCBtX3ByZXNl
cnZlc05ld2xpbmUoZmFsc2UpCkBAIC0yNjgsOCArMjY3LDYgQEAgcHJpdmF0ZToKICAgICBGbG9h
dGluZ09iamVjdCogbV9sYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lOwogCiAgICAgTGluZVdpZHRo
IG1fd2lkdGg7Ci0gICAgCi0gICAgTGluZUxheW91dFN0YXRlJiBtX2xpbmVMYXlvdXRTdGF0ZTsK
IAogICAgIEVXaGl0ZVNwYWNlIG1fY3VycldTOwogICAgIEVXaGl0ZVNwYWNlIG1fbGFzdFdTOwpA
QCAtNTQyLDI0ICs1MzksMTQgQEAgaW5saW5lIHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVS
ZXBsYQogICAgICAgICBtX3dpZHRoLnVwZGF0ZUF2YWlsYWJsZVdpZHRoKHJlcGxhY2VkQm94Lmxv
Z2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBCcmVhayBvbiByZXBsYWNlZCBlbGVtZW50cyBpZiBl
aXRoZXIgaGFzIG5vcm1hbCB3aGl0ZS1zcGFjZS4KLSAgICBpZiAoKChtX2F1dG9XcmFwIHx8IFJl
bmRlclN0eWxlOjphdXRvV3JhcChtX2xhc3RXUykpICYmICghcmVwbGFjZWRCb3guaXNJbWFnZSgp
IHx8IG1fYWxsb3dJbWFnZXNUb0JyZWFrKQotICAgICAgICAmJiAoIWlzPFJlbmRlclJ1YnlSdW4+
KHJlcGxhY2VkQm94KSB8fCBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihyZXBsYWNlZEJveCkuY2Fu
QnJlYWtCZWZvcmUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvcikpKSB8fCByZXBs
YWNlZEJveC5pc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKKyAgICBpZiAoKG1fYXV0b1dyYXAg
fHwgUmVuZGVyU3R5bGU6OmF1dG9XcmFwKG1fbGFzdFdTKSkgJiYgKCFyZXBsYWNlZEJveC5pc0lt
YWdlKCkgfHwgbV9hbGxvd0ltYWdlc1RvQnJlYWspCisgICAgICAgICYmICghaXM8UmVuZGVyUnVi
eVJ1bj4ocmVwbGFjZWRCb3gpIHx8IGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KHJlcGxhY2VkQm94
KS5jYW5CcmVha0JlZm9yZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yKSkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gbV9jdXJyZW50LnJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aCgqcmVuZGVyZXIpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb21taXRMaW5lQnJlYWtDbGVhcigpOwotICAgICAgICBpZiAo
bV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmIHJlcGxhY2VkQm94LmlzQW5vbnltb3VzSW5saW5l
QmxvY2soKSkgewotICAgICAgICAgICAgLy8gQWx3YXlzIGZvcmNlIGEgYnJlYWsgYmVmb3JlIGFu
IGFub255bW91cyBpbmxpbmUgYmxvY2sgaWYgdGhlcmUgaXMgY29udGVudCBvbiB0aGUgbGluZQot
ICAgICAgICAgICAgLy8gYWxyZWFkeS4KLSAgICAgICAgICAgIG1fYXRFbmQgPSB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG1faGFuZ3NB
dEVuZCA9IGZhbHNlOwotICAgIAotICAgIGlmIChyZXBsYWNlZEJveC5pc0Fub255bW91c0lubGlu
ZUJsb2NrKCkpCi0gICAgICAgIG1fYmxvY2subGF5b3V0QmxvY2tDaGlsZChyZXBsYWNlZEJveCwg
bV9saW5lTGF5b3V0U3RhdGUubWFyZ2luSW5mbygpLAotICAgICAgICAgICAgbV9saW5lTGF5b3V0
U3RhdGUucHJldkZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCksIG1fbGluZUxh
eW91dFN0YXRlLm1heEZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCkpOwogCiAg
ICAgaWYgKG1faWdub3JpbmdTcGFjZXMpCiAgICAgICAgIG1fbGluZVdoaXRlc3BhY2VDb2xsYXBz
aW5nU3RhdGUuc3RvcElnbm9yaW5nU3BhY2VzKElubGluZUl0ZXJhdG9yKDAsICZyZXBsYWNlZEJv
eCwgMCkpOwpAQCAtNTkxLDEyICs1NzgsNyBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6
OmhhbmRsZVJlcGxhCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVXBkYXRlIHByaW9yIGxpbmUg
YnJlYWsgY29udGV4dCBjaGFyYWN0ZXJzLCB1c2luZyBVK0ZGRkQgKE9CSkVDVCBSRVBMQUNFTUVO
VCBDSEFSQUNURVIpIGZvciByZXBsYWNlZCBlbGVtZW50LgogICAgICAgICBtX3JlbmRlclRleHRJ
bmZvLmxpbmVCcmVha0l0ZXJhdG9yLnVwZGF0ZVByaW9yQ29udGV4dChyZXBsYWNlbWVudENoYXJh
Y3Rlcik7Ci0gICAgfQotICAgIAotICAgIGlmIChyZXBsYWNlZEJveC5pc0Fub255bW91c0lubGlu
ZUJsb2NrKCkpIHsKLSAgICAgICAgbV9hdEVuZCA9IHRydWU7Ci0gICAgICAgIG1fbGluZUluZm8u
c2V0UHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KHRydWUpOwotICAgIH0KKyAgICB9ICAgIAogfQog
CiBpbmxpbmUgZmxvYXQgZmlyc3RQb3NpdGl2ZVdpZHRoKGNvbnN0IFdvcmRNZWFzdXJlbWVudHMm
IHdvcmRNZWFzdXJlbWVudHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lQnJlYWtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUJyZWFrZXIuY3BwCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3
LDcgQEAgdm9pZCBMaW5lQnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNwYWNlKAogICAgIHJlc29s
dmVyLmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCk7CiB9CiAKLUlubGluZUl0ZXJhdG9yIExpbmVC
cmVha2VyOjpuZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJ
bmZvJiBsaW5lSW5mbywgTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgUmVuZGVyVGV4dElu
Zm8mIHJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3Vz
TGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVu
dHMmIHdvcmRNZWFzdXJlbWVudHMpCitJbmxpbmVJdGVyYXRvciBMaW5lQnJlYWtlcjo6bmV4dExp
bmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYgbGluZUluZm8s
IFJlbmRlclRleHRJbmZvJiByZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9h
dEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBX
b3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogewogICAgIHJlc2V0KCk7CiAKQEAg
LTkyLDcgKzkyLDcgQEAgSW5saW5lSXRlcmF0b3IgTGluZUJyZWFrZXI6Om5leHRMaW5lQnJlYQog
ICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiByZXNv
bHZlci5wb3NpdGlvbigpOwogCi0gICAgQnJlYWtpbmdDb250ZXh0IGNvbnRleHQoKnRoaXMsIHJl
c29sdmVyLCBsaW5lSW5mbywgbGF5b3V0U3RhdGUsIHdpZHRoLCByZW5kZXJUZXh0SW5mbywgbGFz
dEZsb2F0RnJvbVByZXZpb3VzTGluZSwgYXBwbGllZFN0YXJ0V2lkdGgsIG1fYmxvY2spOworICAg
IEJyZWFraW5nQ29udGV4dCBjb250ZXh0KCp0aGlzLCByZXNvbHZlciwgbGluZUluZm8sIHdpZHRo
LCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgYXBwbGllZFN0YXJ0
V2lkdGgsIG1fYmxvY2spOwogCiAgICAgd2hpbGUgKGNvbnRleHQuY3VycmVudE9iamVjdCgpKSB7
CiAgICAgICAgIGNvbnRleHQuaW5pdGlhbGl6ZUZvckN1cnJlbnRPYmplY3QoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaAkocmV2aXNpb24gMjIx
NDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJlc2V0KCk7CiAg
ICAgfQogCi0gICAgSW5saW5lSXRlcmF0b3IgbmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2
ZXImLCBMaW5lSW5mbyYsIExpbmVMYXlvdXRTdGF0ZSYsIFJlbmRlclRleHRJbmZvJiwgRmxvYXRp
bmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZl
SHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJik7CisgICAgSW5saW5lSXRlcmF0b3Ig
bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImLCBMaW5lSW5mbyYsIFJlbmRlclRleHRJ
bmZvJiwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVk
IGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJik7CiAKICAgICBi
b29sIGxpbmVXYXNIeXBoZW5hdGVkKCkgeyByZXR1cm4gbV9oeXBoZW5hdGVkOyB9CiAgICAgY29u
c3QgVmVjdG9yPFJlbmRlckJveCo+JiBwb3NpdGlvbmVkT2JqZWN0cygpIHsgcmV0dXJuIG1fcG9z
aXRpb25lZE9iamVjdHM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVMYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUy
LDggKzE1Miw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBSZW5kZXJCbG9ja0Zsb3c6Ok1hcmdp
bkluZm8mIG1hcmdpbkluZm8oKSB7IHJldHVybiBtX21hcmdpbkluZm87IH0KLSAgICBMYXlvdXRV
bml0JiBwcmV2RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2soKSB7IHJldHVybiBt
X3ByZXZGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jazsgfQotICAgIExheW91dFVu
aXQmIG1heEZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCkgeyByZXR1cm4gbV9t
YXhGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jazsgfQogCiAgICAgRmxvYXRMaXN0
JiBmbG9hdExpc3QoKSB7IHJldHVybiBtX2Zsb2F0TGlzdDsgfQogCkBAIC0xNzIsOCArMTcwLDYg
QEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0JiBtX3JlcGFpbnRMb2dpY2FsQm90dG9tOwogCiAg
ICAgUmVuZGVyQmxvY2tGbG93OjpNYXJnaW5JbmZvIG1fbWFyZ2luSW5mbzsKLSAgICBMYXlvdXRV
bml0IG1fcHJldkZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrOwotICAgIExheW91
dFVuaXQgbV9tYXhGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jazsKIAogICAgIGJv
b2wgbV9lbmRMaW5lTWF0Y2hlZCA6IDE7CiAgICAgYm9vbCBtX2NoZWNrRm9yRmxvYXRzRnJvbUxh
c3RMaW5lIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
aW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlc0RlZmluaXRpb25zLmgJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDcg
KzI1OCw2IEBACiAgICAgbWFjcm8oSW1hZ2VDb250cm9sc0VuYWJsZWQsIGltYWdlQ29udHJvbHNF
bmFibGVkLCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCiAgICAgbWFjcm8oRW5hYmxlSW5o
ZXJpdFVSSVF1ZXJ5Q29tcG9uZW50LCBlbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQsIEJv
b2wsIGJvb2wsIGZhbHNlLCAiIiwgIiIpIFwKICAgICBtYWNybyhTZXJ2aWNlQ29udHJvbHNFbmFi
bGVkLCBzZXJ2aWNlQ29udHJvbHNFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBc
Ci0gICAgbWFjcm8oTmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQsIG5ld0Jsb2NrSW5z
aWRlSW5saW5lTW9kZWxFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCiAgICAg
bWFjcm8oRGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkLCBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQs
IEJvb2wsIGJvb2wsIGZhbHNlLCAiIiwgIiIpIFwKICAgICBtYWNybyhIVFRQRXF1aXZFbmFibGVk
LCBodHRwRXF1aXZFbmFibGVkLCBCb29sLCBib29sLCB0cnVlLCAiIiwgIiIpIFwKICAgICBtYWNy
byhNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkLCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjIxNDA5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMjksMTYgKzEzMjksNiBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRTaW1wbGVMaW5l
TGF5b3V0RGViCiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNpbXBsZUxpbmVM
YXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldE5l
d0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5j
ZXNSZWYsIGJvb2wgZmxhZykKLXsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXROZXdC
bG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZChmbGFnKTsKLX0KLQotYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZikKLXsKLSAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+bmV3
QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQoKTsKLX0KLQogdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGJvb2wgZmxhZykKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXREZWZlcnJl
ZENTU1BhcnNlckVuYWJsZWQoZmxhZyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDIy
MTQwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0NCwxMCArMzQ0LDYgQEAgV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldFNpbXBsZUxpbgogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNl
c0dldFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYp
OwogCiAvLyBEZWZhdWx0cyB0byBmYWxzZS4KLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmLCBib29s
KTsKLVdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXROZXdCbG9ja0luc2lkZUlubGluZU1v
ZGVsRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKLQotLy8gRGVmYXVsdHMgdG8gZmFsc2UuCiBX
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYsIGJvb2wpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldERl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyMTQw
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjU0LDcgKzMyNTQsNiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxheW91dEVuYWJsZWQo
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzaW1wbGVMaW5lTGF5
b3V0RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxheW91dERlYnVn
Qm9yZGVyc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpzaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZEtleSgpKSk7CiAgICAgCi0gICAg
c2V0dGluZ3Muc2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpuZXdCbG9ja0luc2lkZUlubGluZU1vZGVs
RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGVmZXJyZWRDU1NQ
YXJzZXJFbmFibGVkS2V5KCkpKTsKIAogICAgIHNldHRpbmdzLnNldFN1YnBpeGVsQ1NTT01FbGVt
ZW50TWV0cmljc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjpzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkS2V5KCkpKTsKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIyMTQ0MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbCBhbmQg
YW5vbnltb3VzIGlubGluZSBibG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2MTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGZhc3QvYmxvY2sv
aW5zaWRlLWlubGluZXMvY3Jhc2gtb24tZmlyc3QtbGluZS1jaGFuZ2UuaHRtbDoKKworICAgICAg
ICAgICAgRG9uJ3Qgc2V0IG5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWwuCisKKyAgICAgICAgKiBm
YXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
YXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9iYXNpYy1mbG9hdC1pbnRydXNpb24t
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxp
bmVzL25ldy1tb2RlbC9iYXNpYy1mbG9hdC1pbnRydXNpb24uaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9ibG9jay13aWR0aC1jaGVj
ay1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvYmxvY2svaW5zaWRlLWlu
bGluZXMvbmV3LW1vZGVsL2Jsb2NrLXdpZHRoLWNoZWNrLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYnJlYWtpbmctYmVoYXZpb3It
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxp
bmVzL25ldy1tb2RlbC9icmVha2luZy1iZWhhdmlvci5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2VtcHR5LWJsb2NrLWV4cGVjdGVk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXct
bW9kZWwvZW1wdHktYmxvY2suaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL2lu
c2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2U6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAw
MS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvYmxvY2svaW5zaWRlLWlu
bGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDEuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2Uv
MDAyLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUt
aW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMi5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBz
ZS8wMDMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lk
ZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDAzLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxh
cHNlLzAwNC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvYmxvY2svaW5z
aWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW5zLXB1
c2hpbmctYmVsb3ctZmxvYXQtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0
L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW5zLXB1c2hpbmctYmVsb3ctZmxv
YXQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25l
dy1tb2RlbC9wYWludC1vcmRlci1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZh
c3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL3BhaW50LW9yZGVyLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvc2VsZi1j
b2xsYXBzaW5nLXRlc3QtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Js
b2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9zZWxmLWNvbGxhcHNpbmctdGVzdC5odG1sOiBS
ZW1vdmVkLgorCisgICAgICAgICAgICBUaGVzZSBhcmUgcmVmdGVzdHMgY29tcGFyaW5nIG5ld0Js
b2NrSW5zaWRlSW5saW5lTW9kZWwgYW5kIHRoZSBjdXJyZW50IG1vZGVsIGFuZCBkb24ndCBoYXZl
IHZhbHVlIGFueW1vcmUuCisKKyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL29w
YWNpdHktb24taW5saW5lLmh0bWw6CisKKyAgICAgICAgICAgIERvbid0IHNldCBuZXdCbG9ja0lu
c2lkZUlubGluZU1vZGVsLgorICAgICAgICAgICAgTWFya2VkIHRoaXMgYXMgZmFpbGluZyBzaW5j
ZSBpdCBvbmx5IHdvcmtlZCB3aXRoIG5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWwgZW5hYmxlZC4K
KyAgICAgICAgICAgIFRoZSB0ZXN0IHBhc3NlcyBpbiBGaXJlZm94IGFuZCBmYWlscyBpbiBDaHJv
bWUuCisKIDIwMTctMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZXF1ZXN0IGJvZHkgc3RyZWFtIGNsb25pbmcKSW5kZXg6
IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTQ1NywzICsxNDU3LDUgQEAgaW5zcGVjdG9y
L2RvbS9jb250ZW50LW5vZGUtcmVnaW9uLWluZm8uaAogZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lk
ZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtbGF5b3V0LWFmdGVyLWluaXRpYWwtbGF5b3V0
LXBhc3MuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTcxOTQ1IHBlcmYvY2xhc3MtbGlz
dC1yZW1vdmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KKword2Via2l0Lm9yZy9iLzE3
NjE4MyBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL29wYWNpdHktb24taW5saW5lLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlu
bGluZXMvY3Jhc2gtb24tZmlyc3QtbGluZS1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL2NyYXNoLW9uLWZpcnN0LWxpbmUtY2hh
bmdlLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5z
aWRlLWlubGluZXMvY3Jhc2gtb24tZmlyc3QtbGluZS1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTcsOSArMTcsNiBAQCBkaXYgewogUEFTUyBpZiBubyBjcmFzaC4KIDxkaXYgY2xhc3M9
Y29udGFpbmVyPjxzcGFuPjxkaXYgaWQ9Zm9vPjwvZGl2PjwvZGl2PjwvZGl2PgogPHNjcmlwdD4K
LWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXROZXdCbG9j
a0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCh0cnVlKQotCiBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9u
ZXctbW9kZWwvYmFzaWMtZmxvYXQtaW50cnVzaW9uLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYmFzaWMt
ZmxvYXQtaW50cnVzaW9uLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91
dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2Jhc2ljLWZsb2F0LWlu
dHJ1c2lvbi1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTQgKzAsMCBAQAotPCFk
b2N0eXBlIGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5ib3ggeyBib3JkZXI6MXB4IHNvbGlkIGJs
YWNrOyBwYWRkaW5nOjNweDsgbWFyZ2luOjNweCB9Ci0ubm93cmFwIHsgd2hpdGUtc3BhY2U6IG5v
d3JhcDsgfQotLmZsb2F0IHsgZmxvYXQ6IGxlZnQ7IH0KLS5ib3ggZGl2IHsgaGVpZ2h0OjQwcHg7
ICB9Ci0uZmxvYXQgeyB3aWR0aDoxMDBweDsgaGVpZ2h0OjEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9y
OmN5YW4gfQotPC9zdHlsZT4KLTxib2R5PgotCi08ZGl2IGNsYXNzPSJmbG9hdCI+PC9kaXY+Ci0K
LTxkaXYgY2xhc3M9ImJveCI+PGRpdj5Bdm9pZCB0aGUgZmxvYXQhPC9kaXY+PC9kaXY+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9iYXNpYy1m
bG9hdC1pbnRydXNpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2Nr
L2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9iYXNpYy1mbG9hdC1pbnRydXNpb24uaHRtbAkocmV2
aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9u
ZXctbW9kZWwvYmFzaWMtZmxvYXQtaW50cnVzaW9uLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
OCArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxoZWFkPgotPHN0eWxlPgotLmJveCB7IGJvcmRl
cjoxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6M3B4OyBtYXJnaW46M3B4IH0KLS5ub3dyYXAgeyB3
aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci0uZmxvYXQgeyBmbG9hdDogbGVmdDsgfQotLmJveCBkaXYg
eyBoZWlnaHQ6NDBweDsgIH0KLS5mbG9hdCB7IHdpZHRoOjEwMHB4OyBoZWlnaHQ6MTAwcHg7IGJh
Y2tncm91bmQtY29sb3I6Y3lhbiB9Ci08L3N0eWxlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TmV3QmxvY2tJbnNpZGVJ
bmxpbmVNb2RlbEVuYWJsZWQodHJ1ZSkKLTwvc2NyaXB0PgotPGJvZHk+Ci0KLTxkaXYgY2xhc3M9
ImZsb2F0Ij48L2Rpdj4KLQotPGRpdiBjbGFzcz0iYm94Ij48YT48ZGl2PkF2b2lkIHRoZSBmbG9h
dCE8L2Rpdj48L2E+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1p
bmxpbmVzL25ldy1tb2RlbC9ibG9jay13aWR0aC1jaGVjay1leHBlY3RlZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2Js
b2NrLXdpZHRoLWNoZWNrLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91
dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2Jsb2NrLXdpZHRoLWNo
ZWNrLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNSArMCwwIEBACi08IWRvY3R5
cGUgaHRtbD4KLTxoZWFkPgotPHN0eWxlPgotLmJveCB7IGJvcmRlcjoxcHggc29saWQgYmxhY2s7
IHBhZGRpbmc6M3B4OyBtYXJnaW46M3B4IH0KLS5ub3dyYXAgeyB3aGl0ZS1zcGFjZTogbm93cmFw
OyB9Ci0uZmxvYXQgeyBmbG9hdDogbGVmdDsgfQotLmNvbnQgeyBiYWNrZ3JvdW5kLWNvbG9yOmxp
bWU7IGhlaWdodDo0MHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrIH0KLTwvc3R5bGU+Ci08Ym9k
eT4KLQotPGRpdiBjbGFzcz0iYm94Ij48ZGl2PjxhPk9uZSA8L2E+PC9kaXY+PGRpdiBjbGFzcz0i
Y29udCI+PC9kaXY+PGRpdj48YT4gVHdvPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJi
b3giPjxkaXY+PGE+T25lPGJyPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJjb250Ij48L2Rpdj48ZGl2
PjxhPjxicj5Ud288L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImJveCBmbG9hdCI+PGRp
dj48YT5PbmUgPC9hPjwvZGl2PjxkaXYgY2xhc3M9ImNvbnQiPjwvZGl2PjxkaXY+PGE+IFR3bzwv
YT48L2Rpdj48L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9ibG9jay13aWR0aC1jaGVj
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGlu
ZXMvbmV3LW1vZGVsL2Jsb2NrLXdpZHRoLWNoZWNrLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysr
IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2Jsb2NrLXdp
ZHRoLWNoZWNrLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOSArMCwwIEBACi08IWRvY3R5cGUg
aHRtbD4KLTxoZWFkPgotPHN0eWxlPgotLmJveCB7IGJvcmRlcjoxcHggc29saWQgYmxhY2s7IHBh
ZGRpbmc6M3B4OyBtYXJnaW46M3B4IH0KLS5ub3dyYXAgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9
Ci0uZmxvYXQgeyBmbG9hdDogbGVmdDsgfQotLmJveCBkaXYgeyBiYWNrZ3JvdW5kLWNvbG9yOmxp
bWU7IGhlaWdodDo0MHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrIH0KLTwvc3R5bGU+Ci08c2Ny
aXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCh0cnVlKQotPC9zY3JpcHQ+Ci08
Ym9keT4KLQotPGRpdiBjbGFzcz0iYm94Ij48YT5PbmUgPGRpdj48L2Rpdj4gVHdvPC9hPjwvZGl2
PgotCi08ZGl2IGNsYXNzPSJib3giPjxhPk9uZTxicj48ZGl2PjwvZGl2Pjxicj5Ud288L2E+PC9k
aXY+Ci0KLTxkaXYgY2xhc3M9ImJveCBmbG9hdCI+PGE+T25lIDxkaXY+PC9kaXY+IFR3bzwvYT48
L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9icmVha2luZy1iZWhhdmlvci1leHBlY3Rl
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGlu
ZXMvbmV3LW1vZGVsL2JyZWFraW5nLWJlaGF2aW9yLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDIy
MTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVs
L2JyZWFraW5nLWJlaGF2aW9yLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNiAr
MCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxoZWFkPgotPHN0eWxlPgotLmJveCB7IGJvcmRlcjox
cHggc29saWQgYmxhY2s7IHBhZGRpbmc6M3B4OyBtYXJnaW46M3B4IH0KLS5ub3dyYXAgeyB3aGl0
ZS1zcGFjZTogbm93cmFwOyB9Ci0uZmxvYXQgeyBmbG9hdDogbGVmdDsgfQotPC9zdHlsZT4KLTxi
b2R5PgotCi08ZGl2IGNsYXNzPSJib3giPjxhPk9uZSA8YnI+IFR3bzwvYT48L2Rpdj4KLQotPGRp
diBjbGFzcz0iYm94Ij48YT5PbmU8YnI+PGJyPlR3bzwvYT48L2Rpdj4KLQotPGRpdiBjbGFzcz0i
Ym94IG5vd3JhcCI+PGE+T25lIDxicj4gVHdvPC9hPjwvZGl2PgotCi08ZGl2IGNsYXNzPSJib3gg
ZmxvYXQiPjxhPk9uZTxicj4gVHdvPC9hPjwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVs
L2JyZWFraW5nLWJlaGF2aW9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9i
bG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYnJlYWtpbmctYmVoYXZpb3IuaHRtbAkocmV2
aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9u
ZXctbW9kZWwvYnJlYWtpbmctYmVoYXZpb3IuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDIxICsw
LDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci0uYm94IHsgYm9yZGVyOjFw
eCBzb2xpZCBibGFjazsgcGFkZGluZzozcHg7IG1hcmdpbjozcHggfQotLm5vd3JhcCB7IHdoaXRl
LXNwYWNlOiBub3dyYXA7IH0KLS5mbG9hdCB7IGZsb2F0OiBsZWZ0OyB9Ci08L3N0eWxlPgotPHNj
cmlwdD4KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQodHJ1ZSkKLTwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci0KLTxkaXYgY2xhc3M9ImJveCI+PGE+T25lIDxkaXY+PC9kaXY+IFR3
bzwvYT48L2Rpdj4KLQotPGRpdiBjbGFzcz0iYm94Ij48YT5PbmU8YnI+PGRpdj48L2Rpdj48YnI+
VHdvPC9hPjwvZGl2PgotCi08ZGl2IGNsYXNzPSJib3ggbm93cmFwIj48YT5PbmUgPGRpdj48L2Rp
dj4gVHdvPC9hPjwvZGl2PgotCi08ZGl2IGNsYXNzPSJib3ggZmxvYXQiPjxhPk9uZSA8ZGl2Pjwv
ZGl2PiBUd288L2E+PC9kaXY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvZW1wdHktYmxvY2st
ZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lk
ZS1pbmxpbmVzL25ldy1tb2RlbC9lbXB0eS1ibG9jay1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAy
MjE0MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2Rl
bC9lbXB0eS1ibG9jay1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsOSArMCwwIEBA
Ci08IWRvY3R5cGUgaHRtbD4KLQotVGhlIHR3byBsaW5lcyBiZWxvdyBzaG91bGQgbG9vayBpZGVu
dGljYWwuCi0KLTxkaXY+Ci0KLTxhIHN0eWxlPSJsaW5lLWhlaWdodDoyOyBiYWNrZ3JvdW5kLWNv
bG9yOmdyZWVuOyBwYWRkaW5nOjAgMTAwcHgiPiZuYnNwOyZuYnNwOzxicj4KLSZuYnNwOyZuYnNw
OzwvYT4KLTwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2VtcHR5LWJsb2NrLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXct
bW9kZWwvZW1wdHktYmxvY2suaHRtbAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvZW1wdHktYmxvY2suaHRtbAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDE1ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCh0cnVlKQotPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci0KLVRoZSB0d28gbGluZXMgYmVsb3cgc2hvdWxkIGxvb2sgaWRlbnRpY2FsLgotCi08
ZGl2PgotCi08YSBzdHlsZT0ibGluZS1oZWlnaHQ6MjsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsg
cGFkZGluZzowIDEwMHB4Ij4mbmJzcDsmbmJzcDs8YnI+Ci08ZGl2PjwvZGl2PiZuYnNwOyZuYnNw
OzwvYT4KLTwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8w
MDEtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2lu
c2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDAxLWV4cGVjdGVkLmh0bWwJ
KHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGlu
ZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDEtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDQwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAvL0VOIj4KLTxodG1sIGxhbmc9ImVuIj4KLSA8aGVhZD4KLSAgPHRpdGxlPk1hcmdp
biBDb2xsYXBzaW5nOiBpbiBmbG93IChibG9jay1pbnNpZGUtaW5saW5lIHZlcnNpb24pPC90aXRs
ZT4KLSAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLSAgIHRhYmxlIHsgYm9yZGVyLXNwYWNpbmc6
IDA7IGZvbnQtc2l6ZTogNTBweDsgYm9yZGVyOiBzb2xpZDsgfQotICAgdGQgeyBiYWNrZ3JvdW5k
OiBvcmFuZ2U7IHBhZGRpbmc6IDA7IH0KLSAgIGRpdiB7IG1hcmdpbjogMWVtIDA7IH0KLSAgIC5h
IHsgYmFja2dyb3VuZDogeWVsbG93OyB9Ci0gICAuYiB7IGJhY2tncm91bmQ6IGxpbWU7IH0KLSAg
IC5jIHsgYmFja2dyb3VuZDogYXF1YTsgfQotICAgLmQgeyBiYWNrZ3JvdW5kOiBibHVlOyB9Ci0g
ICAucmVkIHsgYmFja2dyb3VuZDogcmVkOyB9Ci0gIDwvc3R5bGU+Ci0gPC9oZWFkPgotIDxib2R5
PgotICA8cD5UaGUgZm9sbG93aW5nIHR3byBjb2x1bW5zIHNob3VsZCBiZSBwaXhlbCBwZXJmZWN0
IGlkZW50aWNhbCB3aXRoIG5vIHJlZCB2aXNpYmxlLjwvcD4KLSAgPHRhYmxlPgotICAgPHRyPgot
ICAgIDx0ZCBjbGFzcz0idGVzdCI+Ci0gICAgIDxzcGFuPjxkaXYgY2xhc3M9ImQiPgotICAgICAg
PHNwYW4+PGRpdiBjbGFzcz0icmVkIj48c3Bhbj48ZGl2IGNsYXNzPSJyZWQiPjxzcGFuPjxkaXYg
Y2xhc3M9ImEiPkE8L2Rpdj48L3NwYW4+PC9kaXY+PHNwYW4+PGRpdiBjbGFzcz0icmVkIj48L2Rp
dj48L3NwYW4+PC9kaXY+PC9zcGFuPgotICAgICAgPHNwYW4+PGRpdiBjbGFzcz0icmVkIj48L2Rp
dj48L3NwYW4+Ci0gICAgICA8c3Bhbj48ZGl2IGNsYXNzPSJyZWQiPjxzcGFuPjxkaXYgY2xhc3M9
InJlZCI+PC9kaXY+PC9zcGFuPjwvZGl2Pjwvc3Bhbj4KLSAgICAgIDxzcGFuPjxkaXYgY2xhc3M9
InJlZCI+PHNwYW4+PGRpdiBjbGFzcz0iYiI+PHNwYW4+PGRpdiBjbGFzcz0icmVkIj48L2Rpdj48
L3NwYW4+QjwvZGl2Pjwvc3Bhbj48L2Rpdj48L3NwYW4+Ci0gICAgICA8c3Bhbj48ZGl2IGNsYXNz
PSJjIj5DPC9kaXY+PC9zcGFuPgotICAgICA8L2Rpdj48L3NwYW4+Ci0gICAgPC90ZD4KLSAgICA8
dGQgY2xhc3M9ImNvbnRyb2wiPgotICAgICA8ZGl2IGNsYXNzPSJkIj4KLSAgICAgIDxkaXYgY2xh
c3M9ImEiPkE8L2Rpdj4KLSAgICAgIDxkaXYgY2xhc3M9ImIiPkI8L2Rpdj4KLSAgICAgIDxkaXYg
Y2xhc3M9ImMiPkM8L2Rpdj4KLSAgICAgPC9kaXY+Ci0gICAgPC90ZD4KLSAgIDwvdHI+Ci0gIDwv
dGFibGU+Ci0gIDxwPlRoaXMgdGVzdCBpcyBtZWFuaW5nbGVzcyBpZiB5b3UgZG9uJ3QgcGFzcyA8
YSBocmVmPSIwMDYuaHRtbCMiPnRlc3QgMDA2PC9hPi48L3A+Ci0gPC9ib2R5PgotPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFy
Z2luLWNvbGxhcHNlLzAwMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxv
Y2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDEuaHRtbAkocmV2
aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9u
ZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMS5odG1sCShub25leGlzdGVudCkKQEAgLTEsNDQg
KzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4i
PgotPGh0bWwgbGFuZz0iZW4iPgotIDxoZWFkPgotICA8dGl0bGU+TWFyZ2luIENvbGxhcHNpbmc6
IGluIGZsb3cgKGJsb2NrLWluc2lkZS1pbmxpbmUgdmVyc2lvbik8L3RpdGxlPgotICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgotICAgdGFibGUgeyBib3JkZXItc3BhY2luZzogMDsgZm9udC1zaXpl
OiA1MHB4OyBib3JkZXI6IHNvbGlkOyB9Ci0gICB0ZCB7IGJhY2tncm91bmQ6IG9yYW5nZTsgcGFk
ZGluZzogMDsgfQotICAgZGl2IHsgbWFyZ2luOiAxZW0gMDsgfQotICAgLmEgeyBiYWNrZ3JvdW5k
OiB5ZWxsb3c7IH0KLSAgIC5iIHsgYmFja2dyb3VuZDogbGltZTsgfQotICAgLmMgeyBiYWNrZ3Jv
dW5kOiBhcXVhOyB9Ci0gICAuZCB7IGJhY2tncm91bmQ6IGJsdWU7IH0KLSAgIC5yZWQgeyBiYWNr
Z3JvdW5kOiByZWQ7IH0KLSAgPC9zdHlsZT4KLSAgICA8c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXROZXdCbG9ja0luc2lkZUlu
bGluZU1vZGVsRW5hYmxlZCh0cnVlKQotPC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICA8
cD5UaGUgZm9sbG93aW5nIHR3byBjb2x1bW5zIHNob3VsZCBiZSBwaXhlbCBwZXJmZWN0IGlkZW50
aWNhbCB3aXRoIG5vIHJlZCB2aXNpYmxlLjwvcD4KLSAgPHRhYmxlPgotICAgPHRyPgotICAgIDx0
ZCBjbGFzcz0idGVzdCI+Ci0gICAgIDxzcGFuPjxkaXYgY2xhc3M9ImQiPgotICAgICAgPHNwYW4+
PGRpdiBjbGFzcz0icmVkIj48c3Bhbj48ZGl2IGNsYXNzPSJyZWQiPjxzcGFuPjxkaXYgY2xhc3M9
ImEiPkE8L2Rpdj48L3NwYW4+PC9kaXY+PHNwYW4+PGRpdiBjbGFzcz0icmVkIj48L2Rpdj48L3Nw
YW4+PC9kaXY+PC9zcGFuPgotICAgICAgPHNwYW4+PGRpdiBjbGFzcz0icmVkIj48L2Rpdj48L3Nw
YW4+Ci0gICAgICA8c3Bhbj48ZGl2IGNsYXNzPSJyZWQiPjxzcGFuPjxkaXYgY2xhc3M9InJlZCI+
PC9kaXY+PC9zcGFuPjwvZGl2Pjwvc3Bhbj4KLSAgICAgIDxzcGFuPjxkaXYgY2xhc3M9InJlZCI+
PHNwYW4+PGRpdiBjbGFzcz0iYiI+PHNwYW4+PGRpdiBjbGFzcz0icmVkIj48L2Rpdj48L3NwYW4+
QjwvZGl2Pjwvc3Bhbj48L2Rpdj48L3NwYW4+Ci0gICAgICA8c3Bhbj48ZGl2IGNsYXNzPSJjIj5D
PC9kaXY+PC9zcGFuPgotICAgICA8L2Rpdj48L3NwYW4+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xh
c3M9ImNvbnRyb2wiPgotICAgICA8ZGl2IGNsYXNzPSJkIj4KLSAgICAgIDxkaXYgY2xhc3M9ImEi
PkE8L2Rpdj4KLSAgICAgIDxkaXYgY2xhc3M9ImIiPkI8L2Rpdj4KLSAgICAgIDxkaXYgY2xhc3M9
ImMiPkM8L2Rpdj4KLSAgICAgPC9kaXY+Ci0gICAgPC90ZD4KLSAgIDwvdHI+Ci0gIDwvdGFibGU+
Ci0gIDxwPlRoaXMgdGVzdCBpcyBtZWFuaW5nbGVzcyBpZiB5b3UgZG9uJ3QgcGFzcyA8YSBocmVm
PSIwMDYuaHRtbCMiPnRlc3QgMDA2PC9hPi48L3A+Ci0gPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNv
bGxhcHNlLzAwMi1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
YmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDItZXhwZWN0
ZWQuaHRtbAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNp
ZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMi1leHBlY3RlZC5odG1sCShu
b25leGlzdGVudCkKQEAgLTEsMTYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9X
M0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPGh0bWwgbGFuZz0iZW4iPgotIDxoZWFkPgotICA8dGl0
bGU+TWFyZ2luIENvbGxhcHNpbmc6IGFic29sdXRlbHkgcG9zaXRpb25lZCAoYmxvY2staW5zaWRl
LWlubGluZSB2ZXJzaW9uKTwvdGl0bGU+Ci0gIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci0gICBk
aXYudGVzdCB7IGJhY2tncm91bmQ6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IH0KLSAgIGRp
di50ZXN0IGRpdiB7IGJhY2tncm91bmQ6IHJlZDsgbWFyZ2luOiA1ZW0gMi41ZW07IH0KLSAgIGRp
di5jb250cm9sIHsgaGVpZ2h0OiA1ZW07IHdpZHRoOiA1ZW07IGJhY2tncm91bmQ6IHJlZDsgcG9z
aXRpb246IGFic29sdXRlOyB9Ci0gIDwvc3R5bGU+Ci0gPC9oZWFkPgotIDxib2R5PgotICA8cD5U
aGlzIHBhZ2Ugc2hvdWxkIGhhdmUgb25lIHNxdWFyZSBncmVlbiBibG9jayBhbmQgbm8gcmVkLjwv
cD4KLSAgPGRpdiBjbGFzcz0iY29udHJvbCI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9InRlc3QiPjxz
cGFuPjxkaXY+PC9kaXY+PC9zcGFuPjwvZGl2PgotIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xs
YXBzZS8wMDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lk
ZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDAyLmh0bWwJKHJldmlzaW9uIDIy
MTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVs
L21hcmdpbi1jb2xsYXBzZS8wMDIuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwICswLDAgQEAK
LTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxodG1s
IGxhbmc9ImVuIj4KLSA8aGVhZD4KLSAgPHRpdGxlPk1hcmdpbiBDb2xsYXBzaW5nOiBhYnNvbHV0
ZWx5IHBvc2l0aW9uZWQgKGJsb2NrLWluc2lkZS1pbmxpbmUgdmVyc2lvbik8L3RpdGxlPgotICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotICAgZGl2LnRlc3QgeyBiYWNrZ3JvdW5kOiBncmVlbjsg
cG9zaXRpb246IGFic29sdXRlOyB9Ci0gICBkaXYudGVzdCBkaXYgeyBiYWNrZ3JvdW5kOiByZWQ7
IG1hcmdpbjogNWVtIDIuNWVtOyB9Ci0gICBkaXYuY29udHJvbCB7IGhlaWdodDogNWVtOyB3aWR0
aDogNWVtOyBiYWNrZ3JvdW5kOiByZWQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfQotICA8L3N0eWxl
PgotICAgIDxzY3JpcHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldE5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkKHRydWUpCi08
L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gIDxwPlRoaXMgcGFnZSBzaG91bGQgaGF2ZSBv
bmUgc3F1YXJlIGdyZWVuIGJsb2NrIGFuZCBubyByZWQuPC9wPgotICA8ZGl2IGNsYXNzPSJjb250
cm9sIj48L2Rpdj4KLSAgPGRpdiBjbGFzcz0idGVzdCI+PHNwYW4+PGRpdj48L2Rpdj48L3NwYW4+
PC9kaXY+Ci0gPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9p
bnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMy1leHBlY3RlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3
LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDMtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjIxNDA5
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFy
Z2luLWNvbGxhcHNlLzAwMy1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTkgKzAs
MCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgot
PGh0bWwgbGFuZz0iZW4iPgotIDxoZWFkPgotICA8dGl0bGU+TWFyZ2luIENvbGxhcHNpbmc6IGZp
eGVkIHBvc2l0aW9uZWQgKGJsb2NrLWluc2lkZS1pbmxpbmUgdmVyc2lvbik8L3RpdGxlPgotICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotICAgZGl2LnRlc3QgeyBiYWNrZ3JvdW5kOiBncmVlbjsg
cG9zaXRpb246IGZpeGVkOyB0b3A6IDRlbTsgfQotICAgZGl2LnRlc3QgZGl2IHsgYmFja2dyb3Vu
ZDogcmVkOyBtYXJnaW46IDVlbSAyLjVlbTsgfQotICAgZGl2LmNvbnRyb2wgeyBoZWlnaHQ6IDVl
bTsgd2lkdGg6IDVlbTsgYmFja2dyb3VuZDogcmVkOyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogNGVt
OyB9Ci0gIDwvc3R5bGU+Ci0gPC9oZWFkPgotIDxib2R5PgotICA8cD5UaGlzIHBhZ2Ugc2hvdWxk
IGhhdmUgb25lIHNxdWFyZSBncmVlbiBibG9jayBhbmQgbm8gcmVkLjwvcD4KLSAgPGRpdiBjbGFz
cz0iY29udHJvbCI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9InRlc3QiPjxzcGFuPgotICAgPGRpdj48
L2Rpdj4KLSAgPC9zcGFuPiAgIAotICA8L2Rpdj4KLSA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29s
bGFwc2UvMDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNp
ZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMy5odG1sCShyZXZpc2lvbiAy
MjE0MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2Rl
bC9tYXJnaW4tY29sbGFwc2UvMDAzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMyArMCwwIEBA
Ci08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRt
bCBsYW5nPSJlbiI+Ci0gPGhlYWQ+Ci0gIDx0aXRsZT5NYXJnaW4gQ29sbGFwc2luZzogZml4ZWQg
cG9zaXRpb25lZCAoYmxvY2staW5zaWRlLWlubGluZSB2ZXJzaW9uKTwvdGl0bGU+Ci0gIDxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+Ci0gICBkaXYudGVzdCB7IGJhY2tncm91bmQ6IGdyZWVuOyBwb3Np
dGlvbjogZml4ZWQ7IHRvcDogNGVtOyB9Ci0gICBkaXYudGVzdCBkaXYgeyBiYWNrZ3JvdW5kOiBy
ZWQ7IG1hcmdpbjogNWVtIDIuNWVtOyB9Ci0gICBkaXYuY29udHJvbCB7IGhlaWdodDogNWVtOyB3
aWR0aDogNWVtOyBiYWNrZ3JvdW5kOiByZWQ7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiA0ZW07IH0K
LSAgPC9zdHlsZT4KLSAgICA8c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxl
ZCh0cnVlKQotPC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICA8cD5UaGlzIHBhZ2Ugc2hv
dWxkIGhhdmUgb25lIHNxdWFyZSBncmVlbiBibG9jayBhbmQgbm8gcmVkLjwvcD4KLSAgPGRpdiBj
bGFzcz0iY29udHJvbCI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9InRlc3QiPjxzcGFuPgotICAgPGRp
dj48L2Rpdj4KLSAgPC9zcGFuPiAgIAotICA8L2Rpdj4KLSA8L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4t
Y29sbGFwc2UvMDA0LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwNC1leHBl
Y3RlZC5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2lu
c2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDA0LWV4cGVjdGVkLmh0bWwJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbCBsYW5nPSJlbiI+Ci0gPGhlYWQ+Ci0gIDx0
aXRsZT5NYXJnaW4gQ29sbGFwc2luZzogZmxvYXRzIChibG9jay1pbnNpZGUtaW5saW5lIHZlcnNp
b24pPC90aXRsZT4KLSAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLSAgIGRpdi50ZXN0IHsgYmFj
a2dyb3VuZDogZ3JlZW47IGZsb2F0OiBsZWZ0OyB9Ci0gICBkaXYudGVzdCBkaXYgeyBiYWNrZ3Jv
dW5kOiByZWQ7IG1hcmdpbjogNWVtIDIuNWVtOyB9Ci0gICBkaXYuY29udHJvbCB7IGhlaWdodDog
NWVtOyB3aWR0aDogNWVtOyBtYXJnaW46IDAgMCAtNWVtIDA7IGJhY2tncm91bmQ6IHJlZDsgfQot
ICA8L3N0eWxlPgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgPHA+VGhpcyBwYWdlIHNob3VsZCBoYXZl
IG9uZSBzcXVhcmUgZ3JlZW4gYmxvY2sgYW5kIG5vIHJlZC48L3A+Ci0gIDxkaXYgY2xhc3M9ImNv
bnRyb2wiPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJ0ZXN0Ij4KLSAgIDxzcGFuPjxkaXY+PC9kaXY+
PC9zcGFuPgotICA8L2Rpdj4KLSA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDA0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9u
ZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwNC5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29s
bGFwc2UvMDA0Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMiArMCwwIEBACi08IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbCBsYW5nPSJlbiI+
Ci0gPGhlYWQ+Ci0gIDx0aXRsZT5NYXJnaW4gQ29sbGFwc2luZzogZmxvYXRzIChibG9jay1pbnNp
ZGUtaW5saW5lIHZlcnNpb24pPC90aXRsZT4KLSAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLSAg
IGRpdi50ZXN0IHsgYmFja2dyb3VuZDogZ3JlZW47IGZsb2F0OiBsZWZ0OyB9Ci0gICBkaXYudGVz
dCBkaXYgeyBiYWNrZ3JvdW5kOiByZWQ7IG1hcmdpbjogNWVtIDIuNWVtOyB9Ci0gICBkaXYuY29u
dHJvbCB7IGhlaWdodDogNWVtOyB3aWR0aDogNWVtOyBtYXJnaW46IDAgMCAtNWVtIDA7IGJhY2tn
cm91bmQ6IHJlZDsgfQotICA8L3N0eWxlPgotICA8c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXROZXdCbG9ja0luc2lkZUlubGlu
ZU1vZGVsRW5hYmxlZCh0cnVlKQotPC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICA8cD5U
aGlzIHBhZ2Ugc2hvdWxkIGhhdmUgb25lIHNxdWFyZSBncmVlbiBibG9jayBhbmQgbm8gcmVkLjwv
cD4KLSAgPGRpdiBjbGFzcz0iY29udHJvbCI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9InRlc3QiPgot
ICAgPHNwYW4+PGRpdj48L2Rpdj48L3NwYW4+Ci0gIDwvZGl2PgotIDwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21h
cmdpbnMtcHVzaGluZy1iZWxvdy1mbG9hdC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbnMtcHVz
aGluZy1iZWxvdy1mbG9hdC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW5zLXB1c2hp
bmctYmVsb3ctZmxvYXQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE0ICswLDAg
QEAKLTwhZG9jdHlwZSBodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci0uZmxvYXQgeyBmbG9hdDpsZWZ0
OyBoZWlnaHQ6MTAwcHg7IHdpZHRoOjEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuIH0KLS5o
YWxmIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHdpZHRoOjUwcHg7IGJhY2tncm91bmQtY29sb3I6
bGltZTsgaGVpZ2h0OjUwcHggfQotLmJvcmRlcmVkIHsgd2lkdGg6MTUwcHg7IGJvcmRlcjoycHgg
c29saWQgYmxhY2s7IH0KLS5tYXJnaW5zIHsgaGVpZ2h0OjUwcHg7IG1hcmdpbi1ib3R0b206NTBw
eCB9Ci08L3N0eWxlPgotPGJvZHk+Ci0KLTxkaXYgY2xhc3M9ImJvcmRlcmVkIj4KLTxkaXYgY2xh
c3M9ImZsb2F0Ij48L2Rpdj4KLTxkaXYgY2xhc3M9Im1hcmdpbnMiPjwvZGl2PjxkaXYgY2xhc3M9
ImhhbGYiPjwvZGl2PjxkaXYgY2xhc3M9ImhhbGYiPjwvZGl2PgotPC9kaXY+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW5zLXB1c2hp
bmctYmVsb3ctZmxvYXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2Nr
L2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW5zLXB1c2hpbmctYmVsb3ctZmxvYXQuaHRt
bAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5s
aW5lcy9uZXctbW9kZWwvbWFyZ2lucy1wdXNoaW5nLWJlbG93LWZsb2F0Lmh0bWwJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxOCArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxoZWFkPgotPHN0eWxlPgot
LmZsb2F0IHsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjEwMHB4OyB3aWR0aDoxMDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjpncmVlbiB9Ci0uaGFsZiB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDo1MHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOmxpbWU7IGhlaWdodDo1MHB4IH0KLS5ib3JkZXJlZCB7IHdpZHRo
OjE1MHB4OyBib3JkZXI6MnB4IHNvbGlkIGJsYWNrOyB9Ci0ubWFyZ2lucyB7IGhlaWdodDo1MHB4
OyBtYXJnaW4tYm90dG9tOjUwcHggfQotPC9zdHlsZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93Lmlu
dGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE5ld0Jsb2NrSW5zaWRl
SW5saW5lTW9kZWxFbmFibGVkKHRydWUpCi08L3NjcmlwdD4KLTxib2R5PgotCi08ZGl2IGNsYXNz
PSJib3JkZXJlZCI+Ci08ZGl2IGNsYXNzPSJmbG9hdCI+PC9kaXY+Ci08c3Bhbj48ZGl2IGNsYXNz
PSJtYXJnaW5zIj48L2Rpdj48L3NwYW4+PGRpdiBjbGFzcz0iaGFsZiI+PC9kaXY+PGRpdiBjbGFz
cz0iaGFsZiI+PC9kaXY+Ci08L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5z
aWRlLWlubGluZXMvbmV3LW1vZGVsL3BhaW50LW9yZGVyLWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvcGFp
bnQtb3JkZXItZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvcGFpbnQtb3JkZXItZXhwZWN0ZWQu
aHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGhl
YWQ+Ci08c3R5bGU+Ci0uYm94IHsgcGFkZGluZzozcHg7IG1hcmdpbjozcHggfQotLm5vd3JhcCB7
IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KLS5mbG9hdCB7IGZsb2F0OiBsZWZ0OyB9Ci0uYm94IGRp
diB7IGhlaWdodDo0MHB4OyBib3JkZXI6MnB4IHNvbGlkIGJsYWNrIH0KLS5mbG9hdCB7IHdpZHRo
OjEwMHB4OyBoZWlnaHQ6MTAwcHg7IGJhY2tncm91bmQtY29sb3I6eWVsbG93IH0KLS5zaGlmdCB7
IG1hcmdpbi10b3A6LTQ4cHg7IGhlaWdodDo0MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOm9yYW5nZTsg
bWFyZ2luLXJpZ2h0OjhweCB9Ci08L3N0eWxlPgotPGJvZHk+Ci0KLTxkaXYgY2xhc3M9ImZsb2F0
Ij48L2Rpdj4KLQotPGRpdiBjbGFzcz0iYm94Ij48ZGl2PlRoaXMgbGluZSBvZiB0ZXh0IHNob3Vs
ZCBhdm9pZCB0aGUgZmxvYXQgYW5kIHBhaW50IG9uIHRvcCBvZiB0aGUgb3JhbmdlIGJhY2tncm91
bmQuICBUaGUgYmxhY2sgYm9yZGVyIHNob3VsZCBwYWludCBiZWhpbmQgdGhlIGZsb2F0LjwvZGl2
PjwvZGl2PgotPGRpdiBjbGFzcz0ic2hpZnQiPjwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1v
ZGVsL3BhaW50LW9yZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9j
ay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvcGFpbnQtb3JkZXIuaHRtbAkocmV2aXNpb24gMjIx
NDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwv
cGFpbnQtb3JkZXIuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwICswLDAgQEAKLTwhZG9jdHlw
ZSBodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci0uYm94IHsgcGFkZGluZzozcHg7IG1hcmdpbjozcHgg
fQotLm5vd3JhcCB7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KLS5mbG9hdCB7IGZsb2F0OiBsZWZ0
OyB9Ci0uYm94IGRpdiB7IGhlaWdodDo0MHB4OyBib3JkZXI6MnB4IHNvbGlkIGJsYWNrOyBiYWNr
Z3JvdW5kLWNvbG9yOnJlZCB9Ci0uZmxvYXQgeyB3aWR0aDoxMDBweDsgaGVpZ2h0OjEwMHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOnllbGxvdyB9Ci0uc2hpZnQgeyBtYXJnaW4tdG9wOi00OHB4OyBoZWln
aHQ6NDBweDsgYmFja2dyb3VuZC1jb2xvcjpvcmFuZ2U7IG1hcmdpbi1yaWdodDo4cHggfQotPC9z
dHlsZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldE5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkKHRydWUpCi08
L3NjcmlwdD4KLTxib2R5PgotCi08ZGl2IGNsYXNzPSJmbG9hdCI+PC9kaXY+Ci0KLTxkaXYgY2xh
c3M9ImJveCI+PGE+PGRpdj5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgYXZvaWQgdGhlIGZsb2F0
IGFuZCBwYWludCBvbiB0b3Agb2YgdGhlIG9yYW5nZSBiYWNrZ3JvdW5kLiBUaGUgYmxhY2sgYm9y
ZGVyIHNob3VsZCBwYWludCBiZWhpbmQgdGhlIGZsb2F0LjwvZGl2PjwvYT48L2Rpdj4KLTxkaXYg
Y2xhc3M9InNoaWZ0Ij48L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9zZWxmLWNvbGxh
cHNpbmctdGVzdC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
YmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL3NlbGYtY29sbGFwc2luZy10ZXN0LWV4cGVj
dGVkLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5z
aWRlLWlubGluZXMvbmV3LW1vZGVsL3NlbGYtY29sbGFwc2luZy10ZXN0LWV4cGVjdGVkLmh0bWwJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxMyArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxoZWFkPgot
PHN0eWxlPgotLm1hcmdpbiB7IG1hcmdpbjoyMHB4IDAgfQotcCB7IG1hcmdpbjowIH0KLXNwYW4g
eyBjbGVhcjpsZWZ0OyBmbG9hdDpsZWZ0OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjBweDsgYmFja2dy
b3VuZC1jb2xvcjpncmVlbiB9Ci08L3N0eWxlPgotPGJvZHk+Ci1UaGUgdHdvIGdyZWVuIGZsb2F0
cyBzaG91bGQgYmUgc3RhY2tlZCByaWdodCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuCi08ZGl2Pgot
PHNwYW4+PC9zcGFuPgotPHNwYW4+PC9zcGFuPgotPC9kaXY+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXct
bW9kZWwvc2VsZi1jb2xsYXBzaW5nLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9zZWxmLWNvbGxhcHNpbmctdGVz
dC5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lk
ZS1pbmxpbmVzL25ldy1tb2RlbC9zZWxmLWNvbGxhcHNpbmctdGVzdC5odG1sCShub25leGlzdGVu
dCkKQEAgLTEsMjAgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5t
YXJnaW4geyBtYXJnaW46MjBweCAwIH0KLXAgeyBtYXJnaW46MCB9Ci1zcGFuIHsgZmxvYXQ6bGVm
dDsgd2lkdGg6MjBweDsgaGVpZ2h0OjIwcHg7IGJhY2tncm91bmQtY29sb3I6Z3JlZW4gfQotPC9z
dHlsZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldE5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkKHRydWUpCi08
L3NjcmlwdD4KLTxib2R5PgotVGhlIHR3byBncmVlbiBmbG9hdHMgc2hvdWxkIGJlIHN0YWNrZWQg
cmlnaHQgb24gdG9wIG9mIG9uZSBhbm90aGVyLgotPHA+PHNwYW4+PC9zcGFuPjwvcD4KLTxkaXYg
Y2xhc3M9Im1hcmdpbiI+Ci08aT4KLTxkaXY+PC9kaXY+Ci08L2k+Ci08L2Rpdj4KLTxwPjxzcGFu
Pjwvc3Bhbj48L3A+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9vcGFjaXR5LW9uLWlubGluZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvb3BhY2l0eS1v
bi1pbmxpbmUuaHRtbAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9j
ay9pbnNpZGUtaW5saW5lcy9vcGFjaXR5LW9uLWlubGluZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC01LDEwICs1LDYgQEAKIC5ib3ggZGl2IHsgaGVpZ2h0OjQwcHg7IGJvcmRlcjoycHggc29saWQg
YmxhY2s7IGJhY2tncm91bmQtY29sb3I6b3JhbmdlIH0KIGEgeyBvcGFjaXR5OjAuNSB9CiA8L3N0
eWxlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQodHJ1ZSkKLTwv
c2NyaXB0PgogPGJvZHk+CiAKIDxkaXYgY2xhc3M9ImJveCI+PGE+PGRpdj5UaGlzIGJsb2NrIHNo
b3VsZCBiZSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQuPC9kaXY+PC9hPjwvZGl2Pgo=
</data>
<flag name="review"
          id="339789"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319525</attachid>
            <date>2017-08-31 14:43:19 -0700</date>
            <delta_ts>2017-08-31 16:27:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>anon-inline-block-remove-3.patch</filename>
            <type>text/plain</type>
            <size>81513</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE3LTA4LTMxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbmV3QmxvY2tJbnNp
ZGVJbmxpbmVNb2RlbCBhbmQgYW5vbnltb3VzIGlubGluZSBibG9jaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAgICAgIEFub255bW91cyBpbmxpbmUgYmxvY2sgZXhp
c3RzIHRvIHN1cHBvcnQgbmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbCB3aGljaCB3YXMgcGxhbm5l
ZCBhcyB0aGUgcmVwbGFjZW1lbnQgZm9yIGNvbnRpbnVhdGlvbnMuCisgICAgICAgIEl0IGhhcyBu
ZXZlciBiZWVuIGVuYWJsZWQgYW5kIGl0IGlzIHRpbWUgdG8gcmVtb3ZlIGl0LgorCisgICAgICAg
ICogcGFnZS9TZXR0aW5ncy5pbjoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVFbGVtZW50Qm94OjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVFbGVtZW50Qm94Ojpub2RlQXRQb2ludCk6CisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxv
d0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNl
Qm94ZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFub255bW91c0lubGluZUJsb2NrIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6SW5saW5lRmxvd0JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpoYXNBbm9ueW1vdXNJbmxpbmVCbG9jayBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpzZXRIYXNBbm9ueW1vdXNJ
bmxpbmVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZW5kZXJOYW1lIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6cmVidWlsZEZsb2F0aW5nT2JqZWN0U2V0RnJvbUludHJ1ZGluZ0Zsb2F0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNoaWxkcmVuUHJldmVudFNlbGZD
b2xsYXBzaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YWRq
dXN0TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVMb2dp
Y2FsSW5saW5lUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRSdW5zQW5kRmxvYXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lQm94ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpkZXRlcm1pbmVTdGFydFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0Y2hlZEVuZExpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjptYXJnaW5Db2xsYXBzZUxpbmVzRnJvbVN0YXJ0KTog
RGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjcmVhdGVzTmV3Rm9ybWF0dGluZ0NvbnRleHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojphdm9pZHNGbG9hdHMgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6aXNBbm9ueW1vdXNJbmxpbmVCbG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojppc0Fub255bW91c0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphbGlnbkJveGVzSW5C
bG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojphc2NlbnRB
bmREZXNjZW50Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9CcmVha2lu
Z0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6QnJlYWtpbmdD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxlUmVwbGFj
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9MaW5lQnJlYWtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVMYXlv
dXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjptYXJnaW5JbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6cHJldkZsb2F0Qm90dG9tRnJv
bUFub255bW91c0lubGluZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRTdGF0ZTo6bWF4RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2spOiBEZWxl
dGVkLgorCiAyMDE3LTA4LTMxICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjEyMjYpOiBbU09VUF0gbGlic291cC1DUklU
SUNBTCAqKjogc291cF9jb29raWVzX3RvX2Nvb2tpZV9oZWFkZXI6IGFzc2VydGlvbiAnY29va2ll
cyAhPSBOVUxMJyBmYWlsZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkocmV2aXNpb24g
MjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMjQ0LDggKzI0NCw2IEBAIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQgaW5p
dGlhbD0KIAogYXR0YWNobWVudEVsZW1lbnRFbmFibGVkIGluaXRpYWw9dHJ1ZSwgY29uZGl0aW9u
YWw9QVRUQUNITUVOVF9FTEVNRU5UCiAKLW5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVk
IGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcz0xCi0KIGRlZmVy
cmVkQ1NTUGFyc2VyRW5hYmxlZCBpbml0aWFsPWZhbHNlCiAKIHJlcGFpbnRPdXRzaWRlTGF5b3V0
RW5hYmxlZCBpbml0aWFsPWZhbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRWxlbWVudEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUVsZW1lbnRCb3guY3BwCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDE5
ICs2OCw2IEBAIHZvaWQgSW5saW5lRWxlbWVudEJveDo6cGFpbnQoUGFpbnRJbmZvJiAKICAgICBp
ZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChyZW5kZXJlcigpLmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkg
ewotICAgICAgICAvLyBUcmVhdCBwYWludGluZyBvZiBhIHNwZWNpYWwgaW5saW5lLWJsb2NrIGxp
bmUgbGlrZSB0aGUgcGFpbnRpbmcgb2YgYSBub3JtYWwgYmxvY2sgYW5kIGdvIHRocm91Z2ggYWxs
IHBoYXNlcy4KLSAgICAgICAgUGFpbnRQaGFzZSBuZXdQaGFzZSA9IChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpID8gUGFpbnRQaGFzZU91dGxpbmUgOiBwYWludElu
Zm8ucGhhc2U7Ci0gICAgICAgIG5ld1BoYXNlID0gKG5ld1BoYXNlID09IFBhaW50UGhhc2VDaGls
ZEJsb2NrQmFja2dyb3VuZHMpID8gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kIDogbmV3
UGhhc2U7Ci0gICAgICAgIAotICAgICAgICBQYWludEluZm8gaW5mbyhwYWludEluZm8pOwotICAg
ICAgICBpbmZvLnBoYXNlID0gbmV3UGhhc2U7Ci0gICAgICAgIGluZm8udXBkYXRlU3VidHJlZVBh
aW50Um9vdEZvckNoaWxkcmVuKCZyZW5kZXJlcigpKTsKLSAgICAgICAgQVNTRVJUKCFyZW5kZXJl
cigpLmhhc1NlbGZQYWludGluZ0xheWVyKCkpOwotICAgICAgICByZW5kZXJlcigpLnBhaW50KGlu
Zm8sIHBhaW50T2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9
IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtOTIsMTcgKzc5LDkg
QEAgdm9pZCBJbmxpbmVFbGVtZW50Qm94OjpwYWludChQYWludEluZm8mIAogfQogCiBib29sIElu
bGluZUVsZW1lbnRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRV
bml0IC8qIGxpbmVUb3AgKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8sCi0gICAgSGl0VGVz
dEFjdGlvbiBoaXRUZXN0QWN0aW9uKQorICAgIEhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgLy8gSWYg
d2UgYXJlIGFuIGFub255bW91cyBpbmxpbmUgYmxvY2ssIGhvbm9yIGhpdCB0ZXN0IHBoYXNlcy4K
LSAgICBpZiAocmVuZGVyZXIoKS5pc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAg
SGl0VGVzdEFjdGlvbiBjaGlsZEhpdFRlc3QgPSBoaXRUZXN0QWN0aW9uOwotICAgICAgICBpZiAo
aGl0VGVzdEFjdGlvbiA9PSBIaXRUZXN0Q2hpbGRCbG9ja0JhY2tncm91bmRzKQotICAgICAgICAg
ICAgY2hpbGRIaXRUZXN0ID0gSGl0VGVzdENoaWxkQmxvY2tCYWNrZ3JvdW5kOwotICAgICAgICBy
ZXR1cm4gcmVuZGVyZXIoKS5ub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5D
b250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0LCBjaGlsZEhpdFRlc3QpOwotICAgIH0KLQotICAg
IC8vIE90aGVyd2lzZSBoaXQgdGVzdCBhbGwgcGhhc2VzIG9mIHJlcGxhY2VkIGVsZW1lbnRzIGF0
b21pY2FsbHksIGFzIHRob3VnaCB0aGUgcmVwbGFjZWQgZWxlbWVudCBlc3RhYmxpc2hlZCBpdHMK
KyAgICAvLyBIaXQgdGVzdCBhbGwgcGhhc2VzIG9mIHJlcGxhY2VkIGVsZW1lbnRzIGF0b21pY2Fs
bHksIGFzIHRob3VnaCB0aGUgcmVwbGFjZWQgZWxlbWVudCBlc3RhYmxpc2hlZCBpdHMKICAgICAv
LyBvd24gc3RhY2tpbmcgY29udGV4dC4gIChTZWUgQXBwZW5kaXggRS4yLCBzZWN0aW9uIDYuNCBv
biBpbmxpbmUgYmxvY2svdGFibGUgZWxlbWVudHMgaW4gdGhlIENTUzIuMQogICAgIC8vIHNwZWNp
ZmljYXRpb24uKQogICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBhY2N1bXVsYXRlZE9mZnNl
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHJl
dmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksMTcgKzY5LDYgQEAgdm9pZCBJbmxpbmVGbG93Qm94
OjpzZXRIYXNCYWRDaGlsZExpc3QoKQogCiAjZW5kaWYKIAotUmVuZGVyQmxvY2tGbG93KiBJbmxp
bmVGbG93Qm94Ojphbm9ueW1vdXNJbmxpbmVCbG9jaygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2hh
c0Fub255bW91c0lubGluZUJsb2NrIHx8ICFmaXJzdENoaWxkKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGlmIChpczxJbmxpbmVGbG93Qm94PigqZmlyc3RDaGlsZCgpKSkKLSAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpmaXJzdENoaWxkKCkpLmFub255bW91
c0lubGluZUJsb2NrKCk7Ci0gICAgaWYgKGZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKS5pc0Fub255
bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PihmaXJzdENoaWxkKCktPnJlbmRlcmVyKCkpOwotICAgIHJldHVybiBudWxscHRyOwotfQot
CiBMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmdldEZsb3dTcGFjaW5nTG9naWNhbFdpZHRoKCkK
IHsKICAgICBMYXlvdXRVbml0IHRvdGFsV2lkdGggPSBtYXJnaW5Cb3JkZXJQYWRkaW5nTG9naWNh
bExlZnQoKSArIG1hcmdpbkJvcmRlclBhZGRpbmdMb2dpY2FsUmlnaHQoKTsKQEAgLTEyMywxMiAr
MTEyLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoSW5saW5lQm94KgogICAgIH0g
ZWxzZSBpZiAoaXM8SW5saW5lRmxvd0JveD4oKmNoaWxkKSkgewogICAgICAgICBpZiAoZG93bmNh
c3Q8SW5saW5lRmxvd0JveD4oKmNoaWxkKS5oYXNUZXh0RGVzY2VuZGFudHMoKSkKICAgICAgICAg
ICAgIHNldEhhc1RleHREZXNjZW5kYW50c09uQW5jZXN0b3JzKHRoaXMpOwotICAgICAgICBpZiAo
ZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmNoaWxkKS5oYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygp
KQotICAgICAgICAgICAgc2V0SGFzQW5vbnltb3VzSW5saW5lQmxvY2sodHJ1ZSk7CiAgICAgfQot
ICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc0Fub255bW91c0lubGluZUJsb2NrKCkpCi0gICAg
ICAgIHNldEhhc0Fub255bW91c0lubGluZUJsb2NrKHRydWUpOwotCiAgICAgaWYgKGRlc2NlbmRh
bnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiAhY2hpbGQtPnJlbmRlcmVyKCku
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlID0gbGluZVN0eWxlKCk7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGls
ZFN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwpAQCAtNjYzLDExICs2NDcsNiBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyCiAgICAgICAgICAgICBMYXlvdXRVbml0
IHBvc0FkanVzdCA9IG1heEFzY2VudCAtIGNoaWxkLT5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5l
VHlwZSk7CiAgICAgICAgICAgICBjaGlsZC0+c2V0TG9naWNhbFRvcChjaGlsZC0+bG9naWNhbFRv
cCgpICsgdG9wICsgcG9zQWRqdXN0KTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYg
KGNoaWxkLT5yZW5kZXJlcigpLmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgewotICAgICAgICAg
ICAgY29uc3QgYXV0byYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihjaGlsZC0+cmVuZGVyZXIo
KSk7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TG9naWNhbFRvcChib3gubG9naWNhbFRvcCgpKTsK
LSAgICAgICAgfQogCiAgICAgICAgIExheW91dFVuaXQgbmV3TG9naWNhbFRvcCA9IGNoaWxkLT5s
b2dpY2FsVG9wKCk7CiAgICAgICAgIExheW91dFVuaXQgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01h
cmdpbnMgPSBuZXdMb2dpY2FsVG9wOwpAQCAtNjg1LDcgKzY2NCw3IEBAIHZvaWQgSW5saW5lRmxv
d0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXIKICAgICAgICAgICAgICAgICAgICAgOiBib3hPYmpl
Y3QuYm9yZGVyUmlnaHQoKSArIGJveE9iamVjdC5wYWRkaW5nUmlnaHQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIG5ld0xvZ2ljYWxUb3BJbmNsdWRpbmdNYXJnaW5zID0gbmV3TG9naWNh
bFRvcDsKLSAgICAgICAgfSBlbHNlIGlmICghY2hpbGQtPnJlbmRlcmVyKCkuaXNCUigpICYmICFj
aGlsZC0+cmVuZGVyZXIoKS5pc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKKyAgICAgICAgfSBl
bHNlIGlmICghY2hpbGQtPnJlbmRlcmVyKCkuaXNCUigpKSB7CiAgICAgICAgICAgICBjb25zdCBh
dXRvJiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGNoaWxkLT5yZW5kZXJlcigpKTsKICAgICAg
ICAgICAgIG5ld0xvZ2ljYWxUb3BJbmNsdWRpbmdNYXJnaW5zID0gbmV3TG9naWNhbFRvcDsKICAg
ICAgICAgICAgIExheW91dFVuaXQgb3ZlclNpZGVNYXJnaW4gPSBjaGlsZC0+aXNIb3Jpem9udGFs
KCkgPyBib3gubWFyZ2luVG9wKCkgOiBib3gubWFyZ2luUmlnaHQoKTsKQEAgLTc0NCw3ICs3MjMs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyCiAgICAgfQogCiAg
ICAgaWYgKGlzUm9vdEJveCkgewotICAgICAgICBpZiAoIWhhc0Fub255bW91c0lubGluZUJsb2Nr
KCkgJiYgKHN0cmljdE1vZGUgfHwgaGFzVGV4dENoaWxkcmVuKCkgfHwgKGRlc2NlbmRhbnRzSGF2
ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiBoYXNUZXh0RGVzY2VuZGFudHMoKSkpKSB7
CisgICAgICAgIGlmIChzdHJpY3RNb2RlIHx8IGhhc1RleHRDaGlsZHJlbigpIHx8IChkZXNjZW5k
YW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCkgJiYgaGFzVGV4dERlc2NlbmRhbnRz
KCkpKSB7CiAgICAgICAgICAgICBpZiAoIXNldExpbmVUb3ApIHsKICAgICAgICAgICAgICAgICBz
ZXRMaW5lVG9wID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBsaW5lVG9wID0gbG9naWNhbFRvcCgp
OwpAQCAtMTA2NCw4ICsxMDQzLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpzZXRPdmVyZmxvd0Zy
b21Mb2dpYwogCiBib29sIElubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVz
dEFjdGlvbiBoaXRUZXN0QWN0aW9uKQogewotICAgIC8vIEFzIGxvbmcgYXMgd2UgZG9uJ3QgaGF2
ZSBhbiBhbm9ueW1vdXMgaW5saW5lIGJsb2NrIG9uIG91ciBsaW5lLCB3ZSByZXN0cmljdCBvdXIg
aGl0IHRlc3Rpbmcgb25seSB0byB0aGUgZm9yZWdyb3VuZCBwaGFzZS4KLSAgICBpZiAoIWhhc0Fu
b255bW91c0lubGluZUJsb2NrKCkgJiYgaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3Vu
ZCkKKyAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd1JlY3QodmlzdWFsT3ZlcmZs
b3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKQEAgLTExNTksOCArMTEzNyw3IEBAIGJvb2wg
SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGkKIAogdm9pZCBJbmxpbmVGbG93Qm94
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKLSAgICAv
LyBBcyBsb25nIGFzIHdlIGRvbid0IGhhdmUgYW4gYW5vbnltb3VzIGlubGluZSBibG9jayBvbiBv
dXIgbGluZSwgd2UgcmVzdHJpY3Qgb3VyIHBhaW50aW5nIG9ubHkgdG8gYSBmZXcgcGhhc2VzLgot
ICAgIGlmICghaGFzQW5vbnltb3VzSW5saW5lQmxvY2soKSAmJiAocGFpbnRJbmZvLnBoYXNlICE9
IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2Vs
ZWN0aW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlT3V0bGluZSAmJiBwYWludElu
Zm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlQ2hpbGRPdXRsaW5lcyAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVRl
eHRDbGlwICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykpCisgICAgaWYgKHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZVNlbGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU91
dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxmT3V0bGluZSAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMgJiYgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VUZXh0Q2xpcCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1h
c2spCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3Qgb3ZlcmZsb3dSZWN0KHZpc3Vh
bE92ZXJmbG93UmVjdChsaW5lVG9wLCBsaW5lQm90dG9tKSk7CkBAIC0xMjA0LDE0ICsxMTgxLDEx
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCFpbmxpbmVGbG93LmlzSW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigp
KQogICAgICAgICAgICAgICAgICAgICBwYWludEluZm8ub3V0bGluZU9iamVjdHMtPmFkZCgmaW5s
aW5lRmxvdyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VNYXNrKSB7Ci0gICAgICAgICAgICBpZiAoIWhhc0Fub255bW91c0lu
bGluZUJsb2NrKCkpCi0gICAgICAgICAgICAgICAgcGFpbnRNYXNrKHBhaW50SW5mbywgcGFpbnRP
ZmZzZXQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9
IGVsc2UgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlTWFzaykKKyAgICAgICAgICAg
IHBhaW50TWFzayhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAvLyBQYWludCBvdXIgYmFja2dyb3VuZCwgYm9yZGVyIGFuZCBib3gtc2hhZG93Lgot
ICAgICAgICAgICAgaWYgKCFoYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKQotICAgICAgICAgICAg
ICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgICAg
ICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAg
ICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmgJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgcHVibGljOgogICAgICAg
ICAsIG1faGFzQW5ub3RhdGlvbnNCZWZvcmUoZmFsc2UpCiAgICAgICAgICwgbV9oYXNBbm5vdGF0
aW9uc0FmdGVyKGZhbHNlKQogICAgICAgICAsIG1faXNGaXJzdEFmdGVyUGFnZUJyZWFrKGZhbHNl
KQotICAgICAgICAsIG1faGFzQW5vbnltb3VzSW5saW5lQmxvY2soZmFsc2UpCiAjaWYgIUFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0RJU0FCTEVECiAgICAgICAgICwgbV9oYXNCYWRD
aGlsZExpc3QoZmFsc2UpCiAjZW5kaWYKQEAgLTIxMSwxMCArMjEwLDYgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SGFzVGV4dENoaWxkcmVuKCkgeyBtX2hhc1RleHRDaGlsZHJlbiA9IHRydWU7IHNl
dEhhc1RleHREZXNjZW5kYW50cygpOyB9CiAgICAgdm9pZCBzZXRIYXNUZXh0RGVzY2VuZGFudHMo
KSB7IG1faGFzVGV4dERlc2NlbmRhbnRzID0gdHJ1ZTsgfQogICAgIAotICAgIGJvb2wgaGFzQW5v
bnltb3VzSW5saW5lQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2hhc0Fub255bW91c0lubGluZUJs
b2NrOyB9Ci0gICAgdm9pZCBzZXRIYXNBbm9ueW1vdXNJbmxpbmVCbG9jayhib29sIGIpIHsgbV9o
YXNBbm9ueW1vdXNJbmxpbmVCbG9jayA9IGI7IH0KLSAgICBSZW5kZXJCbG9ja0Zsb3cqIGFub255
bW91c0lubGluZUJsb2NrKCkgY29uc3Q7Ci0gICAgCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIYXNCYWRDaGlsZExpc3QoKTsKIApAQCAtMzQzLDcgKzMz
OCw2IEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0
IDogNTsgLy8gVUNoYXJEaXJlY3Rpb24KIAogICAgIHVuc2lnbmVkIG1faXNGaXJzdEFmdGVyUGFn
ZUJyZWFrIDogMTsKLSAgICB1bnNpZ25lZCBtX2hhc0Fub255bW91c0lubGluZUJsb2NrIDogMTsK
IAogICAgIC8vIEVuZCBvZiBSb290SW5saW5lQm94LXNwZWNpZmljIG1lbWJlcnMuCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMjIxNDA5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjkzNCwxMCArMjkzNCw2IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhhc0xpbmVJZkVt
cHR5KCkgY29uc3QKIAogTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bGluZUhlaWdodChib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxp
bmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7Ci0gICAgLy8gQW5vbnltb3VzIGlubGluZSBibG9ja3Mg
ZG9uJ3QgaW5jbHVkZSBtYXJnaW5zIG9yIGFueSByZWFsIGxpbmUgaGVpZ2h0LgotICAgIGlmIChp
c0Fub255bW91c0lubGluZUJsb2NrKCkgJiYgbGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpCi0gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExp
bmUgPyBoZWlnaHQoKSA6IHdpZHRoKCk7Ci0gICAgCiAgICAgLy8gSW5saW5lIGJsb2NrcyBhcmUg
cmVwbGFjZWQgZWxlbWVudHMuIE90aGVyd2lzZSwganVzdCBwYXNzIG9mZiB0bwogICAgIC8vIHRo
ZSBiYXNlIGNsYXNzLiAgSWYgd2UncmUgYmVpbmcgcXVlcmllZCBhcyB0aG91Z2ggd2UncmUgdGhl
IHJvb3QgbGluZQogICAgIC8vIGJveCwgdGhlbiB0aGUgZmFjdCB0aGF0IHdlJ3JlIGFuIGlubGlu
ZS1ibG9jayBpcyBpcnJlbGV2YW50LCBhbmQgd2UgYmVoYXZlCkBAIC0yOTYxLDkgKzI5NTcsNiBA
QCBpbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhCiAgICAgLy8gYm94LCB0
aGVuIHRoZSBmYWN0IHRoYXQgd2UncmUgYW4gaW5saW5lLWJsb2NrIGlzIGlycmVsZXZhbnQsIGFu
ZCB3ZSBiZWhhdmUKICAgICAvLyBqdXN0IGxpa2UgYSBibG9jay4KICAgICBpZiAoaXNSZXBsYWNl
ZCgpICYmIGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSB7Ci0g
ICAgICAgIGlmIChpc0Fub255bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgICAgICByZXR1cm4g
ZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gaGVpZ2h0KCkgOiB3aWR0aCgpOwotICAgICAg
ICAKICAgICAgICAgLy8gRm9yICJsZWFmIiB0aGVtZSBvYmplY3RzLCBsZXQgdGhlIHRoZW1lIGRl
Y2lkZSB3aGF0IHRoZSBiYXNlbGluZSBwb3NpdGlvbiBpcy4KICAgICAgICAgLy8gRklYTUU6IE1p
Z2h0IGJlIGJldHRlciB0byBoYXZlIGEgY3VzdG9tIENTUyBwcm9wZXJ0eSBpbnN0ZWFkLCBzbyB0
aGF0IGlmIHRoZSB0aGVtZQogICAgICAgICAvLyBpcyB0dXJuZWQgb2ZmLCBjaGVja2JveGVzL3Jh
ZGlvcyB3aWxsIHN0aWxsIGhhdmUgZGVjZW50IGJhc2VsaW5lcy4KQEAgLTM2MDgsOCArMzYwMSw2
IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkgY28KICAgICAgICAgcmV0
dXJuICJSZW5kZXJCbG9jayAocG9zaXRpb25lZCkiOwogICAgIGlmIChpc0Fub255bW91c0Jsb2Nr
KCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGFub255bW91cykiOwotICAgIGlmIChp
c0Fub255bW91c0lubGluZUJsb2NrKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGFu
b255bW91cyBpbmxpbmUtYmxvY2spIjsKICAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IGhhY2sgd2hp
bGUgdGhlIG5ldyBnZW5lcmF0ZWQgY29udGVudCBzeXN0ZW0gaXMgYmVpbmcgaW1wbGVtZW50ZWQu
CiAgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gIlJlbmRlckJsb2Nr
IChnZW5lcmF0ZWQpIjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDE3ICsyNDEsMTQg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlYnVpbGRGbG9hdGluZ09iagogICAgIC8vIFdlIHNo
b3VsZCBub3QgcHJvY2VzcyBmbG9hdHMgaWYgdGhlIHBhcmVudCBub2RlIGlzIG5vdCBhIFJlbmRl
ckJsb2NrLiBPdGhlcndpc2UsIHdlIHdpbGwgYWRkIAogICAgIC8vIGZsb2F0cyBpbiBhbiBpbnZh
bGlkIGNvbnRleHQuIFRoaXMgd2lsbCBjYXVzZSBhIGNyYXNoIGFyaXNpbmcgZnJvbSBhIGJhZCBj
YXN0IG9uIHRoZSBwYXJlbnQuCiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS84MDQ5NzUzPiwg
d2hlcmUgZmxvYXQgcHJvcGVydHkgaXMgYXBwbGllZCBvbiBhIHRleHQgbm9kZSBpbiBhIFNWRy4K
LSAgICBib29sIGlzQmxvY2tJbnNpZGVJbmxpbmUgPSBpc0Fub255bW91c0lubGluZUJsb2NrKCk7
Ci0gICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCgpKSAmJiAhaXNCbG9ja0luc2lk
ZUlubGluZSkKKyAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KCkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBGaXJzdCBhZGQgaW4gZmxvYXRzIGZyb20gdGhlIHBhcmVudC4g
U2VsZi1jb2xsYXBzaW5nIGJsb2NrcyBsZXQgdGhlaXIgcGFyZW50IHRyYWNrIGFueSBmbG9hdHMg
dGhhdCBpbnRydWRlIGludG8KICAgICAvLyB0aGVtIChhcyBvcHBvc2VkIHRvIGZsb2F0cyB0aGV5
IGNvbnRhaW4gdGhlbXNlbHZlcykgc28gY2hlY2sgZm9yIHRob3NlIGhlcmUgdG9vLgotICAgIFJl
bmRlckJsb2NrRmxvdyYgcGFyZW50QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGlz
QmxvY2tJbnNpZGVJbmxpbmUgPyAqY29udGFpbmluZ0Jsb2NrKCkgOiAqcGFyZW50KCkpOwotICAg
IGJvb2wgcGFyZW50SGFzRmxvYXRzID0gaXNCbG9ja0luc2lkZUlubGluZSA/IHBhcmVudEJsb2Nr
LmNvbnRhaW5zRmxvYXRzKCkgOiBmYWxzZTsKLSAgICBSZW5kZXJCbG9ja0Zsb3cqIHByZXZpb3Vz
QmxvY2sgPSBudWxscHRyOwotICAgIGlmICghaXNCbG9ja0luc2lkZUlubGluZSkKLSAgICAgICAg
cHJldmlvdXNCbG9jayA9IHByZXZpb3VzU2libGluZ1dpdGhPdmVyaGFuZ2luZ0Zsb2F0cyhwYXJl
bnRIYXNGbG9hdHMpOworICAgIGF1dG8mIHBhcmVudEJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxv
Y2tGbG93PigqcGFyZW50KCkpOworICAgIGJvb2wgcGFyZW50SGFzRmxvYXRzID0gZmFsc2U7Cisg
ICAgUmVuZGVyQmxvY2tGbG93KiBwcmV2aW91c0Jsb2NrID0gcHJldmlvdXNTaWJsaW5nV2l0aE92
ZXJoYW5naW5nRmxvYXRzKHBhcmVudEhhc0Zsb2F0cyk7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wT2Zmc2V0ID0gbG9naWNhbFRvcCgpOwogICAgIGlmIChwYXJlbnRIYXNGbG9hdHMgfHwgKHBh
cmVudEJsb2NrLmxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbSgpID4gbG9naWNhbFRvcE9mZnNldCAm
JiBwcmV2aW91c0Jsb2NrICYmIHByZXZpb3VzQmxvY2stPmlzU2VsZkNvbGxhcHNpbmdCbG9jaygp
KSkKICAgICAgICAgYWRkSW50cnVkaW5nRmxvYXRzKCZwYXJlbnRCbG9jaywgJnBhcmVudEJsb2Nr
LCBwYXJlbnRCbG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQoKSwgbG9naWNhbFRvcE9m
ZnNldCk7CkBAIC05OTUsMjAgKzk5Miw3IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93OjpjaGlsZHJl
blByZXZlbnRTZWwKICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJCbG9jazo6Y2hpbGRyZW5QcmV2ZW50U2VsZkNvbGxhcHNpbmcoKTsKIAotICAgIC8vIElm
IHRoZSBibG9jayBoYXMgaW5saW5lIGNoaWxkcmVuLCBzZWUgaWYgd2UgZ2VuZXJhdGVkIGFueSBs
aW5lIGJveGVzLiBJZiB3ZSBoYXZlIGFueQotICAgIC8vIGxpbmUgYm94ZXMsIHRoZW4gd2UgY2Fu
IG9ubHkgYmUgc2VsZi1jb2xsYXBzaW5nIGlmIHdlIGhhdmUgbm90aGluZyBidXQgYW5vbnltb3Vz
IGlubGluZSBibG9ja3MKLSAgICAvLyB0aGF0IGFyZSBhbHNvIHNlbGYtY29sbGFwc2luZyBpbnNp
ZGUgdXMuCi0gICAgaWYgKCFoYXNMaW5lcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgaWYgKHNpbXBsZUxpbmVMYXlvdXQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7IC8vIFdl
IGhhdmUgc2ltcGxlIGxpbmUgbGF5b3V0IGxpbmVzLCBzbyB3ZSBjYW4ndCBiZSBzZWxmLWNvbGxh
cHNpbmcuCi0gICAgCi0gICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Um9vdEJveCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFJvb3RCb3goKSkgewotICAgICAgICBpZiAoIWNoaWxkLT5o
YXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpIHx8ICFjaGlsZC0+YW5vbnltb3VzSW5saW5lQmxvY2so
KS0+aXNTZWxmQ29sbGFwc2luZ0Jsb2NrKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZhbHNlOyAvLyBXZSBoYXZlIG5vIGxpbmUgYm94ZXMsIHNvIHdlIG11
c3QgYmUgc2VsZi1jb2xsYXBzaW5nLgorICAgIHJldHVybiBoYXNMaW5lcygpOwogfQogCiBMYXlv
dXRVbml0IFJlbmRlckJsb2NrRmxvdzo6Y29sbGFwc2VNYXJnaW5zKFJlbmRlckJveCYgY2hpbGQs
IE1hcmdpbkluZm8mIG1hcmdpbkluZm8pCkBAIC0xNzA0LDggKzE2ODgsNiBAQCBzdGF0aWMgdm9p
ZCBjbGVhclNob3VsZEJyZWFrQXRMaW5lVG9Bdm9pCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojph
ZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIExh
eW91dFVuaXQmIGRlbHRhLCBib29sJiBvdmVyZmxvd3NSZWdpb24sIFJlbmRlckZsb3dUaHJlYWQq
IGZsb3dUaHJlYWQpCiB7Ci0gICAgLy8gRklYTUU6IElnbm9yZSBhbm9ueW1vdXMgaW5saW5lIGJs
b2Nrcy4gSGFuZGxlIHRoZSBkZWx0YSBhbHJlYWR5IGhhdmluZyBiZWVuIHNldCBiZWNhdXNlIG9m
Ci0gICAgLy8gY29sbGFwc2luZyBtYXJnaW5zIGZyb20gYSBwcmV2aW91cyBhbm9ueW1vdXMgaW5s
aW5lIGJsb2NrLgogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIHBhZ2luYXRlIHVzaW5nIGxpbmUg
b3ZlcmZsb3cuIFRoaXMgZW5zdXJlcyB0aGF0IGxpbmVzIGRvbid0IG92ZXJsYXAgYXQgYWxsIHdo
ZW4gd2UKICAgICAvLyBwdXQgYSBzdHJ1dCBiZXR3ZWVuIHRoZW0gZm9yIHBhZ2luYXRpb24gcHVy
cG9zZXMuIEhvd2V2ZXIsIHRoaXMgcmVhbGx5IGlzbid0IHRoZSBkZXNpcmVkIHJlbmRlcmluZywg
c2luY2UKICAgICAvLyB0aGUgbGluZSBvbiB0aGUgdG9wIG9mIHRoZSBuZXh0IHBhZ2Ugd2lsbCBh
cHBlYXIgdG9vIGZhciBkb3duIHJlbGF0aXZlIHRvIHRoZSBzYW1lIGtpbmQgb2YgbGluZSBhdCB0
aGUgdG9wCkBAIC00MjIzLDggKzQyMDUsNiBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0
ZUlubGluZVByZWZlCiAgICAgd2hpbGUgKFJlbmRlck9iamVjdCogY2hpbGQgPSBjaGlsZEl0ZXJh
dG9yLm5leHQoKSkgewogICAgICAgICBib29sIGF1dG9XcmFwID0gY2hpbGQtPmlzUmVwbGFjZWQo
KSA/IGNoaWxkLT5wYXJlbnQoKS0+c3R5bGUoKS5hdXRvV3JhcCgpIDoKICAgICAgICAgICAgIGNo
aWxkLT5zdHlsZSgpLmF1dG9XcmFwKCk7Ci0gICAgICAgIGJvb2wgaXNBbm9ueW1vdXNJbmxpbmVC
bG9jayA9IGNoaWxkLT5pc0Fub255bW91c0lubGluZUJsb2NrKCk7Ci0gICAgICAgIAogICAgICAg
ICBpZiAoIWNoaWxkLT5pc0JSKCkpIHsKICAgICAgICAgICAgIC8vIFN0ZXAgT25lOiBkZXRlcm1p
bmUgd2hldGhlciBvciBub3Qgd2UgbmVlZCB0byB0ZXJtaW5hdGUgb3VyIGN1cnJlbnQgbGluZS4K
ICAgICAgICAgICAgIC8vIEVhY2ggZGlzY3JldGUgY2h1bmsgY2FuIGJlY29tZSB0aGUgbmV3IG1p
bi13aWR0aCwgaWYgaXQgaXMgdGhlIHdpZGVzdCBjaHVuawpAQCAtNDMxNSwyMSArNDI5NSwxOSBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlCiAgICAgICAgICAgICAg
ICAgICAgIGNsZWFyUHJldmlvdXNGbG9hdCA9IGZhbHNlOwogCiAgICAgICAgICAgICAgICAgYm9v
bCBjYW5CcmVha1JlcGxhY2VkRWxlbWVudCA9ICFjaGlsZC0+aXNJbWFnZSgpIHx8IGFsbG93SW1h
Z2VzVG9CcmVhazsKLSAgICAgICAgICAgICAgICBpZiAoKChjYW5CcmVha1JlcGxhY2VkRWxlbWVu
dCAmJiAoYXV0b1dyYXAgfHwgb2xkQXV0b1dyYXApICYmICghaXNQcmV2Q2hpbGRJbmxpbmVGbG93
IHx8IHNob3VsZEJyZWFrTGluZUFmdGVyVGV4dCkpIHx8IGNsZWFyUHJldmlvdXNGbG9hdCkgfHwg
aXNBbm9ueW1vdXNJbmxpbmVCbG9jaykgewotICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQt
PmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSAmJiBzdHlsZVRvVXNlLmNvbGxhcHNlV2hpdGVTcGFj
ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBUcmFpbGluZ1NwYWNlKGlubGluZU1h
eCwgaW5saW5lTWluLCB0cmFpbGluZ1NwYWNlQ2hpbGQpOworICAgICAgICAgICAgICAgIGlmICgo
KGNhbkJyZWFrUmVwbGFjZWRFbGVtZW50ICYmIChhdXRvV3JhcCB8fCBvbGRBdXRvV3JhcCkgJiYg
KCFpc1ByZXZDaGlsZElubGluZUZsb3cgfHwgc2hvdWxkQnJlYWtMaW5lQWZ0ZXJUZXh0KSkgfHwg
Y2xlYXJQcmV2aW91c0Zsb2F0KSkgewogICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lk
dGggPSBwcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7CiAgICAgICAg
ICAgICAgICAgICAgIGlubGluZU1pbiA9IDA7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgLy8gSWYgd2UncmUgc3VwcG9zZWQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZsb2F0
LCB0aGVuIHRlcm1pbmF0ZSBtYXh3aWR0aCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgIGlmIChj
bGVhclByZXZpb3VzRmxvYXQgfHwgaXNBbm9ueW1vdXNJbmxpbmVCbG9jaykgeworICAgICAgICAg
ICAgICAgIGlmIChjbGVhclByZXZpb3VzRmxvYXQpIHsKICAgICAgICAgICAgICAgICAgICAgbWF4
TG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWF4TG9naWNhbFdpZHRoLCBpbmxpbmVNYXgp
OwogICAgICAgICAgICAgICAgICAgICBpbmxpbmVNYXggPSAwOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIC8vIEFkZCBpbiB0ZXh0LWluZGVudC4gVGhpcyBpcyBhZGRlZCBp
biBvbmx5IG9uY2UuCi0gICAgICAgICAgICAgICAgaWYgKCFhZGRlZFRleHRJbmRlbnQgJiYgIWNo
aWxkLT5pc0Zsb2F0aW5nKCkgJiYgIWlzQW5vbnltb3VzSW5saW5lQmxvY2spIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVudCAmJiAhY2hpbGQtPmlzRmxvYXRpbmcoKSkgewog
ICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNlaWxlZEluZGVudCA9IHRleHRJbmRlbnQu
Y2VpbFRvRmxvYXQoKTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4gKz0gY2VpbGVkSW5k
ZW50OwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1heCArPSBjZWlsZWRJbmRlbnQ7CkBAIC00
MzQwLDEzICs0MzE4LDEzIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJl
ZmUKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkVGV4dEluZGVudCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChjYW5I
YW5nUHVuY3R1YXRpb25BdFN0YXJ0ICYmICFhZGRlZFN0YXJ0UHVuY3R1YXRpb25IYW5nICYmICFj
aGlsZC0+aXNGbG9hdGluZygpICYmICFpc0Fub255bW91c0lubGluZUJsb2NrKQorICAgICAgICAg
ICAgICAgIGlmIChjYW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0ICYmICFhZGRlZFN0YXJ0UHVuY3R1
YXRpb25IYW5nICYmICFjaGlsZC0+aXNGbG9hdGluZygpKQogICAgICAgICAgICAgICAgICAgICBh
ZGRlZFN0YXJ0UHVuY3R1YXRpb25IYW5nID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAgIC8vIEFk
ZCBvdXIgd2lkdGggdG8gdGhlIG1heC4KICAgICAgICAgICAgICAgICBpbmxpbmVNYXggKz0gc3Rk
OjptYXg8ZmxvYXQ+KDAsIGNoaWxkTWF4KTsKIAotICAgICAgICAgICAgICAgIGlmICgoIWF1dG9X
cmFwIHx8ICFjYW5CcmVha1JlcGxhY2VkRWxlbWVudCB8fCAoaXNQcmV2Q2hpbGRJbmxpbmVGbG93
ICYmICFzaG91bGRCcmVha0xpbmVBZnRlclRleHQpKSAmJiAhaXNBbm9ueW1vdXNJbmxpbmVCbG9j
aykgeworICAgICAgICAgICAgICAgIGlmICgoIWF1dG9XcmFwIHx8ICFjYW5CcmVha1JlcGxhY2Vk
RWxlbWVudCB8fCAoaXNQcmV2Q2hpbGRJbmxpbmVGbG93ICYmICFzaG91bGRCcmVha0xpbmVBZnRl
clRleHQpKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzRmxvYXRpbmcoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRo
KG1pbkxvZ2ljYWxXaWR0aCwgY2hpbGRNaW4pOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBA
IC00MzU2LDEzICs0MzM0LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQ
cmVmZQogICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0
aChtaW5Mb2dpY2FsV2lkdGgsIGNoaWxkTWluKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBO
b3cgc3RhcnQgYSBuZXcgbGluZS4KLSAgICAgICAgICAgICAgICAgICAgaW5saW5lTWluID0gMDsK
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNB
bm9ueW1vdXNJbmxpbmVCbG9jaygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXJt
aW5hdGUgbWF4IHdpZHRoIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXhMb2dp
Y2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtYXhMb2dpY2FsV2lkdGgsIGNoaWxkTWF4KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlubGluZU1heCA9IDA7Ci0gICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaW5saW5lTWluID0gMDsgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRvV3JhcCAmJiBj
YW5CcmVha1JlcGxhY2VkRWxlbWVudCAmJiBpc1ByZXZDaGlsZElubGluZUZsb3cpIHsKQEAgLTQ0
ODgsOCArNDQ2MCw4IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmUK
ICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWF4ICs9IHN0ZDo6bWF4PGZsb2F0PigwLCBjaGls
ZE1heCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIElnbm9yZSBzcGFjZXMgYWZ0
ZXIgYSBsaXN0IG1hcmtlciBhbmQgYWxzbyBhZnRlciBhbiBhbm9ueW1vdXMgaW5saW5lIGJsb2Nr
LgotICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0xpc3RNYXJrZXIoKSB8fCBpc0Fub255bW91c0lu
bGluZUJsb2NrKQorICAgICAgICAgICAgLy8gSWdub3JlIHNwYWNlcyBhZnRlciBhIGxpc3QgbWFy
a2VyLgorICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0xpc3RNYXJrZXIoKSkKICAgICAgICAgICAg
ICAgICBzdHJpcEZyb250U3BhY2VzID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5s
aW5lTWluKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmgJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTkyLDcgKzU5Miw2IEBAIHByaXZhdGU6ICAg
ICAgICAKICAgICAvLyBsaW5lLCBpLmUuLCB0aGF0IGl0IGNhbid0IGJlIHJlLXVzZWQuCiAgICAg
Ym9vbCBsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5lQ2hhbmdlZChSb290SW5saW5lQm94KiwgTGF5
b3V0VW5pdCBsaW5lRGVsdGEsIFJlbmRlckZsb3dUaHJlYWQqKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChjb25zdCBFVGV4dEFsaWduJiwgY29uc3QgUm9v
dElubGluZUJveCosIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGZsb2F0JiBsb2dpY2FsTGVm
dCwgZmxvYXQmIHRvdGFsTG9naWNhbFdpZHRoLCBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCBpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk7Ci0gICAgdm9pZCBtYXJnaW5Db2xsYXBz
ZUxpbmVzRnJvbVN0YXJ0KExpbmVMYXlvdXRTdGF0ZSYsIFJvb3RJbmxpbmVCb3gqIHN0b3BMaW5l
KTsKIC8vIEVORCBNRVRIT0RTIERFRklORUQgSU4gUmVuZGVyQmxvY2tMaW5lTGF5b3V0CiAKICAg
ICBib29sIG5hbWVkRmxvd0ZyYWdtZW50TmVlZHNVcGRhdGUoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShy
ZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY5LDE2ICs2NjksMTEgQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0aAogfQogCiBzdGF0aWMgdm9pZCB1cGRh
dGVMb2dpY2FsSW5saW5lUG9zaXRpb25zKFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGZsb2F0JiBs
aW5lTG9naWNhbExlZnQsIGZsb2F0JiBsaW5lTG9naWNhbFJpZ2h0LCBmbG9hdCYgYXZhaWxhYmxl
TG9naWNhbFdpZHRoLCBib29sIGZpcnN0TGluZSwKLSAgICBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxk
SW5kZW50VGV4dCwgTGF5b3V0VW5pdCBib3hMb2dpY2FsSGVpZ2h0LCBSb290SW5saW5lQm94KiBy
b290Qm94KQorICAgIEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0LCBMYXlvdXRVbml0
IGJveExvZ2ljYWxIZWlnaHQpCiB7CiAgICAgTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCA9
IGJsb2NrLm1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGZpcnN0TGluZSwgYm94TG9n
aWNhbEhlaWdodCk7Ci0gICAgaWYgKHJvb3RCb3gtPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkp
IHsKLSAgICAgICAgbGluZUxvZ2ljYWxMZWZ0ID0gYmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JD
b250ZW50KGJsb2NrLmxvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgIGxpbmVMb2dpY2FsUmlnaHQg
PSBibG9jay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KGJsb2NrLmxvZ2ljYWxIZWlnaHQo
KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbGluZUxvZ2ljYWxMZWZ0ID0gYmxvY2subG9naWNh
bExlZnRPZmZzZXRGb3JMaW5lKGJsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgc2hvdWxkSW5kZW50VGV4
dCwgbGluZUxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsaW5lTG9naWNhbFJpZ2h0ID0gYmxvY2su
bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShibG9jay5sb2dpY2FsSGVpZ2h0KCksIHNob3VsZElu
ZGVudFRleHQsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKLSAgICB9CisgICAgbGluZUxvZ2ljYWxMZWZ0
ID0gYmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGJsb2NrLmxvZ2ljYWxIZWlnaHQoKSwg
c2hvdWxkSW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIGxpbmVMb2dpY2FsUmln
aHQgPSBibG9jay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrLmxvZ2ljYWxIZWlnaHQo
KSwgc2hvdWxkSW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOwogICAgIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCA9IGxpbmVMb2dpY2FsUmlnaHQgLSBsaW5lTG9naWNhbExlZnQ7CiB9CiAKQEAg
LTY5NiwxMiArNjkxLDEyIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGly
ZWMKICAgICBmbG9hdCBsaW5lTG9naWNhbExlZnQ7CiAgICAgZmxvYXQgbGluZUxvZ2ljYWxSaWdo
dDsKICAgICBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGg7Ci0gICAgdXBkYXRlTG9naWNhbElu
bGluZVBvc2l0aW9ucygqdGhpcywgbGluZUxvZ2ljYWxMZWZ0LCBsaW5lTG9naWNhbFJpZ2h0LCBh
dmFpbGFibGVMb2dpY2FsV2lkdGgsIGlzRmlyc3RMaW5lLCBzaG91bGRJbmRlbnRUZXh0LCAwLCBs
aW5lQm94KTsKKyAgICB1cGRhdGVMb2dpY2FsSW5saW5lUG9zaXRpb25zKCp0aGlzLCBsaW5lTG9n
aWNhbExlZnQsIGxpbmVMb2dpY2FsUmlnaHQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaXNGaXJz
dExpbmUsIHNob3VsZEluZGVudFRleHQsIDApOwogICAgIGJvb2wgbmVlZHNXb3JkU3BhY2luZzsK
IAogICAgIGlmIChmaXJzdFJ1biAmJiBmaXJzdFJ1bi0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkp
IHsKICAgICAgICAgUmVuZGVyQm94JiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGZp
cnN0UnVuLT5yZW5kZXJlcigpKTsKLSAgICAgICAgdXBkYXRlTG9naWNhbElubGluZVBvc2l0aW9u
cygqdGhpcywgbGluZUxvZ2ljYWxMZWZ0LCBsaW5lTG9naWNhbFJpZ2h0LCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgsIGlzRmlyc3RMaW5lLCBzaG91bGRJbmRlbnRUZXh0LCByZW5kZXJCb3gubG9naWNh
bEhlaWdodCgpLCBsaW5lQm94KTsKKyAgICAgICAgdXBkYXRlTG9naWNhbElubGluZVBvc2l0aW9u
cygqdGhpcywgbGluZUxvZ2ljYWxMZWZ0LCBsaW5lTG9naWNhbFJpZ2h0LCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgsIGlzRmlyc3RMaW5lLCBzaG91bGRJbmRlbnRUZXh0LCByZW5kZXJCb3gubG9naWNh
bEhlaWdodCgpKTsKICAgICB9CiAKICAgICBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yU2VnbWVudChsaW5lQm94LCBsaW5lSW5mbywgdGV4dEFsaWduLCBsaW5lTG9naWNhbExlZnQs
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgZmlyc3RSdW4sIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRC
b3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOwpAQCAt
MTI2Nyw5ICsxMjYyLDYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9h
dAogICAgIElubGluZUJpZGlSZXNvbHZlciByZXNvbHZlcjsKICAgICBSb290SW5saW5lQm94KiBz
dGFydExpbmUgPSBkZXRlcm1pbmVTdGFydFBvc2l0aW9uKGxheW91dFN0YXRlLCByZXNvbHZlcik7
CiAgICAgCi0gICAgaWYgKHN0YXJ0TGluZSkKLSAgICAgICAgbWFyZ2luQ29sbGFwc2VMaW5lc0Zy
b21TdGFydChsYXlvdXRTdGF0ZSwgc3RhcnRMaW5lKTsKLQogICAgIHVuc2lnbmVkIGNvbnNlY3V0
aXZlSHlwaGVuYXRlZExpbmVzID0gMDsKICAgICBpZiAoc3RhcnRMaW5lKSB7CiAgICAgICAgIGZv
ciAoUm9vdElubGluZUJveCogbGluZSA9IHN0YXJ0TGluZS0+cHJldlJvb3RCb3goKTsgbGluZSAm
JiBsaW5lLT5pc0h5cGhlbmF0ZWQoKTsgbGluZSA9IGxpbmUtPnByZXZSb290Qm94KCkpCkBAIC0x
MzY5LDcgKzEzNjEsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0UnVuc0FuZEZsb2F0
CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lID0gKGNv
bnRhaW5zRmxvYXRzKCkpID8gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmxhc3QoKS5nZXQoKSA6
IG51bGxwdHI7CiAKICAgICAgICAgV29yZE1lYXN1cmVtZW50cyB3b3JkTWVhc3VyZW1lbnRzOwot
ICAgICAgICBlbmQgPSBsaW5lQnJlYWtlci5uZXh0TGluZUJyZWFrKHJlc29sdmVyLCBsYXlvdXRT
dGF0ZS5saW5lSW5mbygpLCBsYXlvdXRTdGF0ZSwgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZy
b21QcmV2aW91c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1l
bnRzKTsKKyAgICAgICAgZW5kID0gbGluZUJyZWFrZXIubmV4dExpbmVCcmVhayhyZXNvbHZlciwg
bGF5b3V0U3RhdGUubGluZUluZm8oKSwgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2
aW91c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1lbnRzKTsK
ICAgICAgICAgY2FjaGVQcmlvckNoYXJhY3RlcnNJZk5lZWRlZChyZW5kZXJUZXh0SW5mby5saW5l
QnJlYWtJdGVyYXRvcik7CiAgICAgICAgIHJlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9y
LnJlc2V0UHJpb3JDb250ZXh0KCk7CiAgICAgICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0
RW5kKCkpIHsKQEAgLTE0MjcsMjEgKzE0MTksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0UnVuc0FuZEZsb2F0CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhZGp1c3RtZW50ID0g
MDsKICAgICAgICAgICAgICAgICBib29sIG92ZXJmbG93c1JlZ2lvbiA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIElmIG91ciBwcmV2aW91cyBsaW5lIHdhcyBh
biBhbm9ueW1vdXMgYmxvY2sgYW5kIHdlIGFyZSBub3QgYW4gYW5vbnltb3VzIGJsb2NrLAotICAg
ICAgICAgICAgICAgIC8vIHNpbXVsYXRlIGEgbWFyZ2luIGNvbGxhcHNlIG5vdyBzbyB0aGF0IHdl
IGdldCB0aGUgcHJvcGVyCi0gICAgICAgICAgICAgICAgLy8gaW5jcmVhc2VkIGhlaWdodC4gV2Ug
YWxzbyBoYXZlIHRvIHNpbXVsYXRlIGEgbWFyZ2luIGNvbGxhcHNlIHRvIHByb3BhZ2F0ZSBtYXJn
aW5zCi0gICAgICAgICAgICAgICAgLy8gdGhyb3VnaCB0byB0aGUgdG9wIG9mIG91ciBibG9jay4K
LSAgICAgICAgICAgICAgICBpZiAoIWxpbmVCb3gtPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgUm9vdElubGluZUJveCogcHJldlJvb3QgPSBsaW5lQm94
LT5wcmV2Um9vdEJveCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJldlJvb3QgJiYgcHJl
dlJvb3QtPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgY3VycmVudExvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KG9sZExvZ2ljYWxIZWlnaHQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VNYXJnaW5zV2l0aENoaWxkSW5mbyhu
dWxscHRyLCBudWxscHRyLCBsYXlvdXRTdGF0ZS5tYXJnaW5JbmZvKCkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYWRqdXN0bWVudCA9IGxvZ2ljYWxIZWlnaHQoKSAtIG9sZExvZ2ljYWxIZWln
aHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGN1cnJlbnRMb2dp
Y2FsSGVpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBs
YXlvdXRTdGF0ZS5tYXJnaW5JbmZvKCkuc2V0QXRCZWZvcmVTaWRlT2ZCbG9jayhmYWxzZSk7Ci0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxheW91dFN0YXRlLm1hcmdpbkluZm8o
KS5zZXRBdEJlZm9yZVNpZGVPZkJsb2NrKGZhbHNlKTsKIAogICAgICAgICAgICAgICAgIGlmIChw
YWdpbmF0ZWQpCiAgICAgICAgICAgICAgICAgICAgIGFkanVzdExpbmVQb3NpdGlvbkZvclBhZ2lu
YXRpb24obGluZUJveCwgYWRqdXN0bWVudCwgb3ZlcmZsb3dzUmVnaW9uLCBsYXlvdXRTdGF0ZS5m
bG93VGhyZWFkKCkpOwpAQCAtMTczNSwxMiArMTcxMywxMCBAQCB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6bGF5b3V0TGluZUJveGVzKGJvCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXJnaW5F
bmRGb3JDaGlsZChib3gsIDApOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGJveC5kaXJ0eUxpbmVCb3hlcyhpc0Z1bGxMYXlvdXQpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIW8uaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNGdWxsTGF5b3V0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cGxhY2VkQ2hpbGRyZW4uYXBwZW5kKCZib3gpOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC5sYXlvdXRJZk5lZWRlZCgpOwotICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxMYXlvdXQp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlZENoaWxkcmVuLmFwcGVuZCgmYm94KTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYm94Lmxh
eW91dElmTmVlZGVkKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlm
IChvLmlzVGV4dE9yTGluZUJyZWFrKCkgfHwgKGlzPFJlbmRlcklubGluZT4obykgJiYgIXdhbGtl
ci5hdEVuZE9mSW5saW5lKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzPFJlbmRlcklubGlu
ZT4obykpCkBAIC0xNzcxLDEyICsxNzQ3LDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91
dExpbmVCb3hlcyhibwogICAgIC8vIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IGNvbGxhcHNlZCBi
b3R0b20gbWFyZ2luIGluZm9ybWF0aW9uLiBUaGlzIGNvbGxhcHNlIGlzIG9ubHkgbmVjZXNzYXJ5
CiAgICAgLy8gaWYgb3VyIGxhc3QgY2hpbGQgd2FzIGFuIGFub255bW91cyBpbmxpbmUgYmxvY2sg
dGhhdCBtaWdodCBuZWVkIHRvIHByb3BhZ2F0ZSBtYXJnaW4gaW5mb3JtYXRpb24gb3V0IHRvCiAg
ICAgLy8gdXMuCi0gICAgTGF5b3V0VW5pdCBiZWZvcmVFZGdlID0gYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpOwogICAgIExheW91dFVuaXQgYWZ0ZXJFZGdlID0gYm9yZGVyQW5kUGFkZGluZ0FmdGVy
KCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkgKyBsYXN0TGluZUFubm90YXRpb25zQWRqdXN0
bWVudDsKLSAgICBpZiAobGFzdFJvb3RCb3goKSAmJiBsYXN0Um9vdEJveCgpLT5oYXNBbm9ueW1v
dXNJbmxpbmVCbG9jaygpKQotICAgICAgICBoYW5kbGVBZnRlclNpZGVPZkJsb2NrKGJlZm9yZUVk
Z2UsIGFmdGVyRWRnZSwgbGF5b3V0U3RhdGUubWFyZ2luSW5mbygpKTsKLSAgICBlbHNlCi0gICAg
ICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpICsgYWZ0ZXJFZGdlKTsKKyAgICBz
ZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSArIGFmdGVyRWRnZSk7CiAKICAgICBpZiAo
IWZpcnN0Um9vdEJveCgpICYmIGhhc0xpbmVJZkVtcHR5KCkpCiAgICAgICAgIHNldExvZ2ljYWxI
ZWlnaHQobG9naWNhbEhlaWdodCgpICsgbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRl
cmlvckxpbmVCb3hlcykpOwpAQCAtMTg4NCw3ICsxODU2LDcgQEAgUm9vdElubGluZUJveCogUmVu
ZGVyQmxvY2tGbG93OjpkZXRlcm1pbgogICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGRpcnR5IGxp
bmUuCiAgICAgICAgICAgICBpZiAoUm9vdElubGluZUJveCogcHJldlJvb3RCb3ggPSBjdXJyZW50
TGluZS0+cHJldlJvb3RCb3goKSkgewogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBwcmV2
aW91cyBsaW5lLgotICAgICAgICAgICAgICAgIGlmICghZGlydGllZEJ5RmxvYXQgJiYgIWN1cnJl
bnRMaW5lLT5oYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpICYmICghcHJldlJvb3RCb3gtPmVuZHNX
aXRoQnJlYWsoKQorICAgICAgICAgICAgICAgIGlmICghZGlydGllZEJ5RmxvYXQgJiYgKCFwcmV2
Um9vdEJveC0+ZW5kc1dpdGhCcmVhaygpCiAgICAgICAgICAgICAgICAgICAgIHx8ICFwcmV2Um9v
dEJveC0+bGluZUJyZWFrT2JqKCkKICAgICAgICAgICAgICAgICAgICAgfHwgKGlzPFJlbmRlclRl
eHQ+KCpwcmV2Um9vdEJveC0+bGluZUJyZWFrT2JqKCkpCiAgICAgICAgICAgICAgICAgICAgICYm
IHByZXZSb290Qm94LT5saW5lQnJlYWtQb3MoKSA+PSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcHJl
dlJvb3RCb3gtPmxpbmVCcmVha09iaigpKS50ZXh0TGVuZ3RoKCkpKSkgewpAQCAtMjA2Miw3ICsy
MDM0LDcgQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6Om1hdGNoZWRFbmRMaW5lKExpbgogICAgIFJv
b3RJbmxpbmVCb3gqIG9yaWdpbmFsRW5kTGluZSA9IGxheW91dFN0YXRlLmVuZExpbmUoKTsKICAg
ICBSb290SW5saW5lQm94KiBsaW5lID0gb3JpZ2luYWxFbmRMaW5lOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtTGluZXMgJiYgbGluZTsgaSsrLCBsaW5lID0gbGluZS0+bmV4dFJvb3RCb3go
KSkgewotICAgICAgICBpZiAobGluZS0+bGluZUJyZWFrT2JqKCkgPT0gcmVzb2x2ZXIucG9zaXRp
b24oKS5yZW5kZXJlcigpICYmIGxpbmUtPmxpbmVCcmVha1BvcygpID09IHJlc29sdmVyLnBvc2l0
aW9uKCkub2Zmc2V0KCkgJiYgIWxpbmUtPmhhc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKKyAg
ICAgICAgaWYgKGxpbmUtPmxpbmVCcmVha09iaigpID09IHJlc29sdmVyLnBvc2l0aW9uKCkucmVu
ZGVyZXIoKSAmJiBsaW5lLT5saW5lQnJlYWtQb3MoKSA9PSByZXNvbHZlci5wb3NpdGlvbigpLm9m
ZnNldCgpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgbWF0Y2guCiAgICAgICAgICAgICBp
ZiAobGluZS0+bGluZUJyZWFrQmlkaVN0YXR1cygpICE9IHJlc29sdmVyLnN0YXR1cygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gLi4uYnV0IHRoZSBiaWRpIHN0YXRlIGRvZXNu
J3QgbWF0Y2guCkBAIC0yMzA5LDQ2ICsyMjgxLDQgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVw
ZGF0ZVJlZ2lvbkZvckxpbgogICAgICAgICBsaW5lQm94LT5zZXRJc0ZpcnN0QWZ0ZXJQYWdlQnJl
YWsodHJ1ZSk7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXJnaW5Db2xsYXBzZUxpbmVz
RnJvbVN0YXJ0KExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIFJvb3RJbmxpbmVCb3gqIHN0
b3BMaW5lKQotewotICAgIC8vIFdlIGhhdmUgdG8gaGFuZGxlIGFuIGFub255bW91cyBpbmxpbmUg
YmxvY2sgc3RyZWFrIGF0IHRoZSBzdGFydCBvZiB0aGUgYmxvY2sgaW4gb3JkZXIgdG8gbWFrZSBz
dXJlIG91ciBvd24gbWFyZ2lucyBhcmUKLSAgICAvLyBjb3JyZWN0LiBXZSBvbmx5IGhhdmUgdG8g
ZG8gdGhpcyBpZiB0aGUgY2hpbGRyZW4gY2FuIHByb3BhZ2F0ZSBtYXJnaW5zIG91dCB0byB1cy4K
LSAgICBib29sIHJlc2V0TG9naWNhbEhlaWdodCA9IGZhbHNlOwotICAgIGlmIChsYXlvdXRTdGF0
ZS5tYXJnaW5JbmZvKCkuY2FuQ29sbGFwc2VXaXRoTWFyZ2luQmVmb3JlKCkpIHsKLSAgICAgICAg
Um9vdElubGluZUJveCogc3RhcnRMaW5lID0gZmlyc3RSb290Qm94KCk7Ci0gICAgICAgIFJvb3RJ
bmxpbmVCb3gqIGN1cnI7Ci0gICAgICAgIGZvciAoY3VyciA9IHN0YXJ0TGluZTsgY3VyciAmJiBj
dXJyLT5oYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpICYmIGxheW91dFN0YXRlLm1hcmdpbkluZm8o
KS5jYW5Db2xsYXBzZVdpdGhNYXJnaW5CZWZvcmUoKTsgY3VyciA9IGN1cnItPm5leHRSb290Qm94
KCkpIHsKLSAgICAgICAgICAgIGlmIChjdXJyID09IHN0b3BMaW5lKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGlmICghcmVzZXRMb2dpY2FsSGVpZ2h0KSB7Ci0gICAgICAg
ICAgICAgICAgc2V0TG9naWNhbEhlaWdodChib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkpOwotICAg
ICAgICAgICAgICAgIHJlc2V0TG9naWNhbEhlaWdodCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBsYXlvdXRCbG9ja0NoaWxkKCpjdXJyLT5hbm9ueW1vdXNJbmxpbmVCbG9jaygp
LCBsYXlvdXRTdGF0ZS5tYXJnaW5JbmZvKCksCi0gICAgICAgICAgICAgICAgbGF5b3V0U3RhdGUu
cHJldkZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCksIGxheW91dFN0YXRlLm1h
eEZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCkpOwotICAgICAgICB9Ci0gICAg
fQotICAgIAotICAgIC8vIE5vdyB0aGF0IHdlJ3ZlIGhhbmRsZWQgdGhlIHRvcCBvZiB0aGUgYmxv
Y2ssIGlmIHRoZSBzdG9wTGluZSBpc24ndCBhbiBhbm9ueW1vdXMgYmxvY2ssIHRoZW4gd2UncmUg
ZG9uZS4KLSAgICBpZiAoIXN0b3BMaW5lLT5oYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBhbHJlYWR5IGhhbmRsZWQgdG9wIG9mIGJsb2NrIHdp
dGggc3RhcnRMaW5lLgotICAgIGlmIChzdG9wTGluZSA9PSBmaXJzdFJvb3RCb3goKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gUmUtcnVuIG1hcmdpbiBjb2xsYXBzaW5nIG9uIHRoZSBibG9j
ayBzZXF1ZW5jZSB0aGF0IHN0b3BMaW5lIGlzIGEgcGFydCBvZi4KLSAgICAvLyBGaXJzdCBnbyBi
YWNrd2FyZHMgdG8gZ2V0IHRoZSBlbnRpcmUgc2VxdWVuY2UuCi0gICAgUm9vdElubGluZUJveCog
cHJldiA9IHN0b3BMaW5lOwotICAgIGZvciAoIDsgcHJldi0+aGFzQW5vbnltb3VzSW5saW5lQmxv
Y2soKTsgcHJldiA9IHByZXYtPnByZXZSb290Qm94KCkpIHsKLSAgICB9OwotCi0gICAgLy8gVXBk
YXRlIHRoZSBibG9jayBoZWlnaHQgdG8gdGhlIGNvcnJlY3Qgc3RhdGUuCi0gICAgc2V0TG9naWNh
bEhlaWdodChwcmV2LT5saW5lQm90dG9tV2l0aExlYWRpbmcoKSk7Ci0gICAgCi0gICAgLy8gTm93
IHJ1biBtYXJnaW4gY29sbGFwc2luZyBvbiB0aG9zZSBsaW5lcy4KLSAgICBmb3IgKHByZXYgPSBw
cmV2LT5uZXh0Um9vdEJveCgpOyBwcmV2ICE9IHN0b3BMaW5lOyBwcmV2ID0gcHJldi0+bmV4dFJv
b3RCb3goKSkKLSAgICAgICAgbGF5b3V0QmxvY2tDaGlsZCgqcHJldi0+YW5vbnltb3VzSW5saW5l
QmxvY2soKSwgbGF5b3V0U3RhdGUubWFyZ2luSW5mbygpLCBsYXlvdXRTdGF0ZS5wcmV2RmxvYXRC
b3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2soKSwgbGF5b3V0U3RhdGUubWF4RmxvYXRCb3R0
b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2soKSk7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2MSwxMCAr
MjU2MSw2IEBAIGJvb2wgUmVuZGVyQm94OjpoYXNTdHJldGNoZWRMb2dpY2FsV2lkdGgKIAogYm9v
bCBSZW5kZXJCb3g6OnNpemVzTG9naWNhbFdpZHRoVG9GaXRDb250ZW50KFNpemVUeXBlIHdpZHRo
VHlwZSkgY29uc3QKIHsKLSAgICAvLyBBbm9ueW1vdXMgaW5saW5lIGJsb2NrcyBhbHdheXMgZmls
bCB0aGUgd2lkdGggb2YgdGhlaXIgY29udGFpbmluZyBibG9jay4KLSAgICBpZiAoaXNBbm9ueW1v
dXNJbmxpbmVCbG9jaygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBNYXJxdWVl
cyBpbiBXaW5JRSBhcmUgbGlrZSBhIG1peHR1cmUgb2YgYmxvY2tzIGFuZCBpbmxpbmUtYmxvY2tz
LiAgVGhleSBzaXplIGFzIHRob3VnaCB0aGV5J3JlIGJsb2NrcywKICAgICAvLyBidXQgdGhleSBh
bGxvdyB0ZXh0IHRvIHNpdCBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBtYXJxdWVlLgogICAgIGlm
IChpc0Zsb2F0aW5nKCkgfHwgKGlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkgJiYgIWlzSFRN
TE1hcnF1ZWUoKSkpCkBAIC00NTgyLDE0ICs0NTc4LDE0IEBAIGJvb2wgUmVuZGVyQm94OjpzaHJp
bmtUb0F2b2lkRmxvYXRzKCkgY28KIAogYm9vbCBSZW5kZXJCb3g6OmNyZWF0ZXNOZXdGb3JtYXR0
aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChpc0lubGluZUJsb2NrT3JJbmxpbmVU
YWJsZSgpICYmICFpc0Fub255bW91c0lubGluZUJsb2NrKCkpIHx8IGlzRmxvYXRpbmdPck91dE9m
Rmxvd1Bvc2l0aW9uZWQoKSB8fCBoYXNPdmVyZmxvd0NsaXAoKSB8fCBpc0ZsZXhJdGVtSW5jbHVk
aW5nRGVwcmVjYXRlZCgpCisgICAgcmV0dXJuIGlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkg
fHwgaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGhhc092ZXJmbG93Q2xpcCgp
IHx8IGlzRmxleEl0ZW1JbmNsdWRpbmdEZXByZWNhdGVkKCkKICAgICAgICAgfHwgaXNUYWJsZUNl
bGwoKSB8fCBpc1RhYmxlQ2FwdGlvbigpIHx8IGlzRmllbGRzZXQoKSB8fCBpc1dyaXRpbmdNb2Rl
Um9vdCgpIHx8IGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSB8fCBpc1JlbmRlckZsb3dUaHJl
YWQoKSB8fCBpc1JlbmRlclJlZ2lvbigpCiAgICAgICAgIHx8IGlzR3JpZEl0ZW0oKSB8fCBzdHls
ZSgpLnNwZWNpZmllc0NvbHVtbnMoKSB8fCBzdHlsZSgpLmNvbHVtblNwYW4oKTsKIH0KIAogYm9v
bCBSZW5kZXJCb3g6OmF2b2lkc0Zsb2F0cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChpc1JlcGxh
Y2VkKCkgJiYgIWlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgfHwgaXNIUigpIHx8IGlzTGVnZW5k
KCkgfHwgaXNGaWVsZHNldCgpIHx8IGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpOworICAg
IHJldHVybiBpc1JlcGxhY2VkKCkgfHwgaXNIUigpIHx8IGlzTGVnZW5kKCkgfHwgaXNGaWVsZHNl
dCgpIHx8IGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpOwogfQogCiB2b2lkIFJlbmRlckJv
eDo6YWRkVmlzdWFsRWZmZWN0T3ZlcmZsb3coKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsMTAgKzMy
Niw5IEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGkKICAgICBpZiAo
IWJlZm9yZUNoaWxkICYmIGlzQWZ0ZXJDb250ZW50KGxhc3RDaGlsZCgpKSkKICAgICAgICAgYmVm
b3JlQ2hpbGQgPSBsYXN0Q2hpbGQoKTsKICAgICAKLSAgICBib29sIHVzZU5ld0Jsb2NrSW5zaWRl
SW5saW5lTW9kZWwgPSBzZXR0aW5ncygpLm5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVk
KCk7CiAgICAgYm9vbCBjaGlsZElubGluZSA9IG5ld0NoaWxkSXNJbmxpbmUoKm5ld0NoaWxkLCAq
dGhpcyk7CiAgICAgLy8gVGhpcyBjb2RlIGlzIGZvciB0aGUgb2xkIGJsb2NrLWluc2lkZS1pbmxp
bmUgbW9kZWwgdGhhdCB1c2VzIGNvbnRpbnVhdGlvbnMuCi0gICAgaWYgKCF1c2VOZXdCbG9ja0lu
c2lkZUlubGluZU1vZGVsICYmICFjaGlsZElubGluZSAmJiAhbmV3Q2hpbGQtPmlzRmxvYXRpbmdP
ck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgIGlmICghY2hpbGRJbmxpbmUgJiYgIW5ld0No
aWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgLy8gV2Ug
YXJlIHBsYWNpbmcgYSBibG9jayBpbnNpZGUgYW4gaW5saW5lLiBXZSBoYXZlIHRvIHBlcmZvcm0g
YSBzcGxpdCBvZiB0aGlzCiAgICAgICAgIC8vIGlubGluZSBpbnRvIGNvbnRpbnVhdGlvbnMuICBU
aGlzIGludm9sdmVzIGNyZWF0aW5nIGFuIGFub255bW91cyBibG9jayBib3ggdG8gaG9sZAogICAg
ICAgICAvLyB8bmV3Q2hpbGR8LiAgV2UgdGhlbiBtYWtlIHRoYXQgYmxvY2sgYm94IGEgY29udGlu
dWF0aW9uIG9mIHRoaXMgaW5saW5lLiAgV2UgdGFrZSBhbGwgb2YKQEAgLTM1MCw2NyArMzQ5LDcg
QEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIGlmICghdXNlTmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbCkg
ewotICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9y
ZUNoaWxkKTsKLSAgICAgICAgbmV3Q2hpbGQtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1Jl
Y2FsYygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhpcyBjb2RlIGlzIGZv
ciB0aGUgbmV3IGJsb2NrLWluc2lkZS1pbmxpbmUgbW9kZWwgdGhhdCB1c2VzIGFub255bW91cyBp
bmxpbmUgYmxvY2tzLgotICAgIC8vIElmIHRoZSByZXF1ZXN0ZWQgYmVmb3JlQ2hpbGQgaXMgbm90
IG9uZSBvZiBvdXIgY2hpbGRyZW4sIHRoZW4gdGhpcyBpcyBtb3N0IGxpa2VseSBiZWNhdXNlCi0g
ICAgLy8gdGhlcmUgaXMgYW4gYW5vbnltb3VzIGlubGluZS1ibG9jayBib3ggd2l0aGluIHRoaXMg
b2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGJlZm9yZUNoaWxkLgotICAgIC8vIEluc2VydCB0aGUg
Y2hpbGQgaW50byB0aGUgYW5vbnltb3VzIGlubGluZS1ibG9jayBib3ggaW5zdGVhZCBvZiBoZXJl
LgotICAgIC8vIEEgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRoYXQgdGhlIGJlZm9yZUNoaWxkIGlz
IGFuIGFub255bW91cyBibG9jayBpbnNpZGUgdGhlIGFub255bW91cyBpbmxpbmUgYmxvY2suCi0g
ICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIGlubGluZXMgYXJlIGluc2VydGVkIGluIGJldHdlZW4g
dHdvIG9mIHRoZSBhbm9ueW1vdXMgaW5saW5lIGJsb2NrJ3MgYmxvY2stbGV2ZWwKLSAgICAvLyBj
aGlsZHJlbiBhZnRlciBpdCBoYXMgYmVlbiBjcmVhdGVkLgotICAgIGlmIChiZWZvcmVDaGlsZCAm
JiBiZWZvcmVDaGlsZC0+cGFyZW50KCkgIT0gdGhpcykgewotICAgICAgICBBU1NFUlQoYmVmb3Jl
Q2hpbGQtPnBhcmVudCgpKTsKLSAgICAgICAgQVNTRVJUKGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+
aXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpIHx8IGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+aXNBbm9u
eW1vdXNCbG9jaygpKTsKLSAgICAgICAgaWYgKGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+aXNBbm9u
eW1vdXNJbmxpbmVCbG9jaygpKSB7Ci0gICAgICAgICAgICBpZiAoIWNoaWxkSW5saW5lIHx8IChj
aGlsZElubGluZSAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCktPmZpcnN0Q2hpbGQoKSAhPSBiZWZv
cmVDaGlsZCkpCi0gICAgICAgICAgICAgICAgYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5hZGRDaGls
ZChuZXdDaGlsZCwgYmVmb3JlQ2hpbGQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZC0+cGFyZW50KCkpOwotICAgICAgICB9
IGVsc2UgaWYgKGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+aXNBbm9ueW1vdXNCbG9jaygpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoIWJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+cGFyZW50KCkgfHwgYmVm
b3JlQ2hpbGQtPnBhcmVudCgpLT5wYXJlbnQoKS0+aXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKTsK
LSAgICAgICAgICAgIEFTU0VSVChjaGlsZElubGluZSk7Ci0gICAgICAgICAgICBpZiAoY2hpbGRJ
bmxpbmUgfHwgKCFjaGlsZElubGluZSAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCktPmZpcnN0Q2hp
bGQoKSAhPSBiZWZvcmVDaGlsZCkpCi0gICAgICAgICAgICAgICAgYmVmb3JlQ2hpbGQtPnBhcmVu
dCgpLT5hZGRDaGlsZChuZXdDaGlsZCwgYmVmb3JlQ2hpbGQpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZC0+cGFyZW50KCkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWNoaWxkSW5s
aW5lKSB7Ci0gICAgICAgIC8vIFdlIGFyZSBwbGFjaW5nIGEgYmxvY2sgaW5zaWRlIGFuIGlubGlu
ZS4gV2UgaGF2ZSB0byBwbGFjZSB0aGUgYmxvY2sgaW5zaWRlIGFuIGFub255bW91cyBpbmxpbmUt
YmxvY2suCi0gICAgICAgIC8vIFRoaXMgaW5saW5lLWJsb2NrIGNhbiBob3VzZSBhIHNlcXVlbmNl
IG9mIGNvbnRpZ3VvdXMgYmxvY2stbGV2ZWwgY2hpbGRyZW4sIGFuZCB0aGV5IHdpbGwgYWxsIHNp
dCBvbiB0aGUKLSAgICAgICAgLy8gc2FtZSAibGluZSIgdG9nZXRoZXIuIFdlIHRyeSB0byByZXVz
ZSBhbiBleGlzdGluZyBpbmxpbmUtYmxvY2sgaWYgcG9zc2libGUuCi0gICAgICAgIGlmIChiZWZv
cmVDaGlsZCkgewotICAgICAgICAgICAgaWYgKGJlZm9yZUNoaWxkLT5wcmV2aW91c1NpYmxpbmco
KSAmJiBiZWZvcmVDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCktPmlzQW5vbnltb3VzSW5saW5lQmxv
Y2soKSkgewotICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oYmVmb3Jl
Q2hpbGQtPnByZXZpb3VzU2libGluZygpKS0+YWRkQ2hpbGQobmV3Q2hpbGQpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChsYXN0Q2hpbGQoKSAmJiBsYXN0Q2hpbGQoKS0+aXNBbm9ueW1vdXNJbmxpbmVCbG9j
aygpKSB7Ci0gICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihsYXN0Q2hp
bGQoKSktPmFkZENoaWxkKG5ld0NoaWxkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAKLSAgICAgICAgaWYgKCFuZXdDaGlsZC0+aXNGbG9hdGlu
Z09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSB3YXMgbm8g
c3VpdGFibGUgZXhpc3RpbmcgYW5vbnltb3VzIGlubGluZS1ibG9jay4gQ3JlYXRlIGEgbmV3IG9u
ZS4KLSAgICAgICAgICAgIFJlbmRlckJsb2NrRmxvdyogYW5vbnltb3VzSW5saW5lQmxvY2sgPSBu
ZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIElOTElORV9CTE9DSykpOwotICAgICAgICAgICAg
YW5vbnltb3VzSW5saW5lQmxvY2stPmluaXRpYWxpemVTdHlsZSgpOwotICAgIAotICAgICAgICAg
ICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmFkZENoaWxkKGFub255bW91c0lubGluZUJsb2NrLCBi
ZWZvcmVDaGlsZCk7Ci0gICAgICAgICAgICBhbm9ueW1vdXNJbmxpbmVCbG9jay0+YWRkQ2hpbGQo
bmV3Q2hpbGQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCiAgICAg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZCk7Ci0K
ICAgICBuZXdDaGlsZC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lv
biAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU5NSwxMSArMTU5NSw2IEBAIGJvb2wgUmVuZGVyT2JqZWN0Ojpp
c0NvbXBvc2l0ZWQoKSBjb25zdAogICAgIHJldHVybiBoYXNMYXllcigpICYmIGRvd25jYXN0PFJl
bmRlckxheWVyTW9kZWxPYmplY3Q+KCp0aGlzKS5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKIH0K
IAotYm9vbCBSZW5kZXJPYmplY3Q6OmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSBjb25zdAotewot
ICAgIHJldHVybiBpc0Fub255bW91cygpICYmIHN0eWxlKCkuZGlzcGxheSgpID09IElOTElORV9C
TE9DSyAmJiBzdHlsZSgpLnN0eWxlVHlwZSgpID09IE5PUFNFVURPICYmIGlzUmVuZGVyQmxvY2tG
bG93KCkgJiYgIWlzUnVieVJ1bigpICYmICFpc1J1YnlCYXNlKCkgJiYgIWlzUnVieShwYXJlbnQo
KSk7Ci19Ci0KIGJvb2wgUmVuZGVyT2JqZWN0OjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
bG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBIaXRUZXN0RmlsdGVyIGhpdFRlc3RGaWx0ZXIpCiB7CiAgICAgYm9vbCBpbnNpZGUgPSBmYWxz
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9u
IDIyMTQwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDE3LDcgKzQxNyw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICAg
ICAgOwogICAgIH0KLSAgICBib29sIGlzQW5vbnltb3VzSW5saW5lQmxvY2soKSBjb25zdDsKICAg
ICBib29sIGlzRWxlbWVudENvbnRpbnVhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG5vZGUoKSAmJiBu
b2RlKCktPnJlbmRlcmVyKCkgIT0gdGhpczsgfQogICAgIGJvb2wgaXNJbmxpbmVFbGVtZW50Q29u
dGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNFbGVtZW50Q29udGludWF0aW9uKCkgJiYgaXNJ
bmxpbmUoKTsgfQogICAgIGJvb2wgaXNCbG9ja0VsZW1lbnRDb250aW51YXRpb24oKSBjb25zdCB7
IHJldHVybiBpc0VsZW1lbnRDb250aW51YXRpb24oKSAmJiAhaXNJbmxpbmUoKTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gMjIx
NDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODQsOCArMjg0LDggQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojph
bGlnbkJveGVzSW5CbAogICAgIAogICAgIG1heEhlaWdodCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+
KDAsIG1heEhlaWdodCk7IC8vIEZJWE1FOiBJcyB0aGlzIHJlYWxseSBuZWNlc3Nhcnk/CiAKLSAg
ICBMYXlvdXRVbml0IGxpbmVUb3BXaXRoTGVhZGluZyA9ICFoYXNBbm9ueW1vdXNJbmxpbmVCbG9j
aygpID8gaGVpZ2h0T2ZCbG9jayA6IGxpbmVUb3A7Ci0gICAgTGF5b3V0VW5pdCBsaW5lQm90dG9t
V2l0aExlYWRpbmcgPSAhaGFzQW5vbnltb3VzSW5saW5lQmxvY2soKSA/IGhlaWdodE9mQmxvY2sg
KyBtYXhIZWlnaHQgOiBsaW5lQm90dG9tOworICAgIExheW91dFVuaXQgbGluZVRvcFdpdGhMZWFk
aW5nID0gaGVpZ2h0T2ZCbG9jazsKKyAgICBMYXlvdXRVbml0IGxpbmVCb3R0b21XaXRoTGVhZGlu
ZyA9IGhlaWdodE9mQmxvY2sgKyBtYXhIZWlnaHQ7CiAgICAgc2V0TGluZVRvcEJvdHRvbVBvc2l0
aW9ucyhsaW5lVG9wLCBsaW5lQm90dG9tLCBsaW5lVG9wV2l0aExlYWRpbmcsIGxpbmVCb3R0b21X
aXRoTGVhZGluZyk7CiAgICAgc2V0UGFnaW5hdGVkTGluZVdpZHRoKGJsb2NrRmxvdygpLmF2YWls
YWJsZUxvZ2ljYWxXaWR0aEZvckNvbnRlbnQoaGVpZ2h0T2ZCbG9jaykpOwogCkBAIC04OTAsMTQg
Kzg5MCw2IEBAIHZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckIKICAgICAv
LyBSZXBsYWNlZCBib3hlcyB3aWxsIHJldHVybiAwIGZvciB0aGUgbGluZS1oZWlnaHQgaWYgbGlu
ZS1ib3gtY29udGFpbiBzYXlzIHRoZXkgYXJlCiAgICAgLy8gbm90IHRvIGJlIGluY2x1ZGVkLgog
ICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgaWYgKGhhc0Fu
b255bW91c0lubGluZUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGFzY2VudCA9IDA7IC8vIE1hcmdp
bnMgZXhpc3QgIm91dHNpZGUiIHRoZSBsaW5lLCBzaW5jZSB0aGV5IGhhdmUgdG8gY29sbGFwc2Uu
Ci0gICAgICAgICAgICBkZXNjZW50ID0gMDsKLSAgICAgICAgICAgIGFmZmVjdHNBc2NlbnQgPSB0
cnVlOwotICAgICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAgICAgaWYgKGxpbmVTdHlsZSgpLmxp
bmVCb3hDb250YWluKCkgJiBMaW5lQm94Q29udGFpblJlcGxhY2VkKSB7CiAgICAgICAgICAgICBh
c2NlbnQgPSBib3guYmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUoKSk7CiAgICAgICAgICAg
ICBkZXNjZW50ID0gYm94LmxpbmVIZWlnaHQoKSAtIGFzY2VudDsKQEAgLTkwOCw5ICs5MDAsNiBA
QCB2b2lkIFJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERlc2NlbnRGb3JCCiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBpZiAoaGFzQW5vbnltb3VzSW5saW5lQmxv
Y2soKSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPGNvbnN0IEZvbnQqPiogdXNlZEZv
bnRzID0gbnVsbHB0cjsKICAgICBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93ID0gbnVsbHB0
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dC5oCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9CcmVha2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBwcml2
YXRlOgogCiBjbGFzcyBCcmVha2luZ0NvbnRleHQgewogcHVibGljOgotICAgIEJyZWFraW5nQ29u
dGV4dChMaW5lQnJlYWtlciYgbGluZUJyZWFrZXIsIElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2
ZXIsIExpbmVJbmZvJiBpbkxpbmVJbmZvLCBMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBM
aW5lV2lkdGgmIGxpbmVXaWR0aCwgUmVuZGVyVGV4dEluZm8mIGluUmVuZGVyVGV4dEluZm8sIEZs
b2F0aW5nT2JqZWN0KiBpbkxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGJvb2wgYXBwbGllZFN0
YXJ0V2lkdGgsIFJlbmRlckJsb2NrRmxvdyYgYmxvY2spCisgICAgQnJlYWtpbmdDb250ZXh0KExp
bmVCcmVha2VyJiBsaW5lQnJlYWtlciwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGlu
ZUluZm8mIGluTGluZUluZm8sIExpbmVXaWR0aCYgbGluZVdpZHRoLCBSZW5kZXJUZXh0SW5mbyYg
aW5SZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGluTGFzdEZsb2F0RnJvbVByZXZpb3Vz
TGluZSwgYm9vbCBhcHBsaWVkU3RhcnRXaWR0aCwgUmVuZGVyQmxvY2tGbG93JiBibG9jaykKICAg
ICAgICAgOiBtX2xpbmVCcmVha2VyKGxpbmVCcmVha2VyKQogICAgICAgICAsIG1fcmVzb2x2ZXIo
cmVzb2x2ZXIpCiAgICAgICAgICwgbV9jdXJyZW50KHJlc29sdmVyLnBvc2l0aW9uKCkpCkBAIC0x
MTEsNyArMTExLDYgQEAgcHVibGljOgogICAgICAgICAsIG1fcmVuZGVyVGV4dEluZm8oaW5SZW5k
ZXJUZXh0SW5mbykKICAgICAgICAgLCBtX2xhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUoaW5MYXN0
RmxvYXRGcm9tUHJldmlvdXNMaW5lKQogICAgICAgICAsIG1fd2lkdGgobGluZVdpZHRoKQotICAg
ICAgICAsIG1fbGluZUxheW91dFN0YXRlKGxheW91dFN0YXRlKQogICAgICAgICAsIG1fY3VycldT
KE5PUk1BTCkKICAgICAgICAgLCBtX2xhc3RXUyhOT1JNQUwpCiAgICAgICAgICwgbV9wcmVzZXJ2
ZXNOZXdsaW5lKGZhbHNlKQpAQCAtMjY4LDggKzI2Nyw2IEBAIHByaXZhdGU6CiAgICAgRmxvYXRp
bmdPYmplY3QqIG1fbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZTsKIAogICAgIExpbmVXaWR0aCBt
X3dpZHRoOwotICAgIAotICAgIExpbmVMYXlvdXRTdGF0ZSYgbV9saW5lTGF5b3V0U3RhdGU7CiAK
ICAgICBFV2hpdGVTcGFjZSBtX2N1cnJXUzsKICAgICBFV2hpdGVTcGFjZSBtX2xhc3RXUzsKQEAg
LTU0MiwyNCArNTM5LDE0IEBAIGlubGluZSB2b2lkIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlUmVw
bGEKICAgICAgICAgbV93aWR0aC51cGRhdGVBdmFpbGFibGVXaWR0aChyZXBsYWNlZEJveC5sb2dp
Y2FsSGVpZ2h0KCkpOwogCiAgICAgLy8gQnJlYWsgb24gcmVwbGFjZWQgZWxlbWVudHMgaWYgZWl0
aGVyIGhhcyBub3JtYWwgd2hpdGUtc3BhY2UuCi0gICAgaWYgKCgobV9hdXRvV3JhcCB8fCBSZW5k
ZXJTdHlsZTo6YXV0b1dyYXAobV9sYXN0V1MpKSAmJiAoIXJlcGxhY2VkQm94LmlzSW1hZ2UoKSB8
fCBtX2FsbG93SW1hZ2VzVG9CcmVhaykKLSAgICAgICAgJiYgKCFpczxSZW5kZXJSdWJ5UnVuPihy
ZXBsYWNlZEJveCkgfHwgZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocmVwbGFjZWRCb3gpLmNhbkJy
ZWFrQmVmb3JlKG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IpKSkgfHwgcmVwbGFj
ZWRCb3guaXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKSB7CisgICAgaWYgKChtX2F1dG9XcmFwIHx8
IFJlbmRlclN0eWxlOjphdXRvV3JhcChtX2xhc3RXUykpICYmICghcmVwbGFjZWRCb3guaXNJbWFn
ZSgpIHx8IG1fYWxsb3dJbWFnZXNUb0JyZWFrKQorICAgICAgICAmJiAoIWlzPFJlbmRlclJ1YnlS
dW4+KHJlcGxhY2VkQm94KSB8fCBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihyZXBsYWNlZEJveCku
Y2FuQnJlYWtCZWZvcmUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvcikpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IG1fY3VycmVudC5yZW5kZXJlcigpKQogICAgICAg
ICAgICAgY29tbWl0TGluZUJyZWFrQXRDdXJyZW50V2lkdGgoKnJlbmRlcmVyKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29tbWl0TGluZUJyZWFrQ2xlYXIoKTsKLSAgICAgICAgaWYgKG1f
d2lkdGguY29tbWl0dGVkV2lkdGgoKSAmJiByZXBsYWNlZEJveC5pc0Fub255bW91c0lubGluZUJs
b2NrKCkpIHsKLSAgICAgICAgICAgIC8vIEFsd2F5cyBmb3JjZSBhIGJyZWFrIGJlZm9yZSBhbiBh
bm9ueW1vdXMgaW5saW5lIGJsb2NrIGlmIHRoZXJlIGlzIGNvbnRlbnQgb24gdGhlIGxpbmUKLSAg
ICAgICAgICAgIC8vIGFscmVhZHkuCi0gICAgICAgICAgICBtX2F0RW5kID0gdHJ1ZTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBtX2hhbmdzQXRF
bmQgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAocmVwbGFjZWRCb3guaXNBbm9ueW1vdXNJbmxpbmVC
bG9jaygpKQotICAgICAgICBtX2Jsb2NrLmxheW91dEJsb2NrQ2hpbGQocmVwbGFjZWRCb3gsIG1f
bGluZUxheW91dFN0YXRlLm1hcmdpbkluZm8oKSwKLSAgICAgICAgICAgIG1fbGluZUxheW91dFN0
YXRlLnByZXZGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jaygpLCBtX2xpbmVMYXlv
dXRTdGF0ZS5tYXhGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jaygpKTsKIAogICAg
IGlmIChtX2lnbm9yaW5nU3BhY2VzKQogICAgICAgICBtX2xpbmVXaGl0ZXNwYWNlQ29sbGFwc2lu
Z1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNlcyhJbmxpbmVJdGVyYXRvcigwLCAmcmVwbGFjZWRCb3gs
IDApKTsKQEAgLTU5MSwxMiArNTc4LDcgQEAgaW5saW5lIHZvaWQgQnJlYWtpbmdDb250ZXh0Ojpo
YW5kbGVSZXBsYQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFVwZGF0ZSBwcmlvciBsaW5lIGJy
ZWFrIGNvbnRleHQgY2hhcmFjdGVycywgdXNpbmcgVStGRkZEIChPQkpFQ1QgUkVQTEFDRU1FTlQg
Q0hBUkFDVEVSKSBmb3IgcmVwbGFjZWQgZWxlbWVudC4KICAgICAgICAgbV9yZW5kZXJUZXh0SW5m
by5saW5lQnJlYWtJdGVyYXRvci51cGRhdGVQcmlvckNvbnRleHQocmVwbGFjZW1lbnRDaGFyYWN0
ZXIpOwotICAgIH0KLSAgICAKLSAgICBpZiAocmVwbGFjZWRCb3guaXNBbm9ueW1vdXNJbmxpbmVC
bG9jaygpKSB7Ci0gICAgICAgIG1fYXRFbmQgPSB0cnVlOwotICAgICAgICBtX2xpbmVJbmZvLnNl
dFByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSh0cnVlKTsKLSAgICB9CisgICAgfSAgICAKIH0KIAog
aW5saW5lIGZsb2F0IGZpcnN0UG9zaXRpdmVXaWR0aChjb25zdCBXb3JkTWVhc3VyZW1lbnRzJiB3
b3JkTWVhc3VyZW1lbnRzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZUJyZWFrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmNwcAkocmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3
IEBAIHZvaWQgTGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZSgKICAgICByZXNvbHZl
ci5jb21taXRFeHBsaWNpdEVtYmVkZGluZygpOwogfQogCi1JbmxpbmVJdGVyYXRvciBMaW5lQnJl
YWtlcjo6bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5m
byYgbGluZUluZm8sIExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIFJlbmRlclRleHRJbmZv
JiByZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xp
bmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRz
JiB3b3JkTWVhc3VyZW1lbnRzKQorSW5saW5lSXRlcmF0b3IgTGluZUJyZWFrZXI6Om5leHRMaW5l
QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mIGxpbmVJbmZvLCBS
ZW5kZXJUZXh0SW5mbyYgcmVuZGVyVGV4dEluZm8sIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRG
cm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgV29y
ZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIHsKICAgICByZXNldCgpOwogCkBAIC05
Miw3ICs5Miw3IEBAIElubGluZUl0ZXJhdG9yIExpbmVCcmVha2VyOjpuZXh0TGluZUJyZWEKICAg
ICBpZiAocmVzb2x2ZXIucG9zaXRpb24oKS5hdEVuZCgpKQogICAgICAgICByZXR1cm4gcmVzb2x2
ZXIucG9zaXRpb24oKTsKIAotICAgIEJyZWFraW5nQ29udGV4dCBjb250ZXh0KCp0aGlzLCByZXNv
bHZlciwgbGluZUluZm8sIGxheW91dFN0YXRlLCB3aWR0aCwgcmVuZGVyVGV4dEluZm8sIGxhc3RG
bG9hdEZyb21QcmV2aW91c0xpbmUsIGFwcGxpZWRTdGFydFdpZHRoLCBtX2Jsb2NrKTsKKyAgICBC
cmVha2luZ0NvbnRleHQgY29udGV4dCgqdGhpcywgcmVzb2x2ZXIsIGxpbmVJbmZvLCB3aWR0aCwg
cmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGFwcGxpZWRTdGFydFdp
ZHRoLCBtX2Jsb2NrKTsKIAogICAgIHdoaWxlIChjb250ZXh0LmN1cnJlbnRPYmplY3QoKSkgewog
ICAgICAgICBjb250ZXh0LmluaXRpYWxpemVGb3JDdXJyZW50T2JqZWN0KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgJKHJldmlzaW9uIDIyMTQw
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICByZXNldCgpOwogICAg
IH0KIAotICAgIElubGluZUl0ZXJhdG9yIG5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVy
JiwgTGluZUluZm8mLCBMaW5lTGF5b3V0U3RhdGUmLCBSZW5kZXJUZXh0SW5mbyYsIEZsb2F0aW5n
T2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5
cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYpOworICAgIElubGluZUl0ZXJhdG9yIG5l
eHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiwgTGluZUluZm8mLCBSZW5kZXJUZXh0SW5m
byYsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBj
b25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYpOwogCiAgICAgYm9v
bCBsaW5lV2FzSHlwaGVuYXRlZCgpIHsgcmV0dXJuIG1faHlwaGVuYXRlZDsgfQogICAgIGNvbnN0
IFZlY3RvcjxSZW5kZXJCb3gqPiYgcG9zaXRpb25lZE9iamVjdHMoKSB7IHJldHVybiBtX3Bvc2l0
aW9uZWRPYmplY3RzOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
TGF5b3V0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9MaW5lTGF5b3V0U3RhdGUuaAkocmV2aXNpb24gMjIxNDA5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw4
ICsxNTIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgUmVuZGVyQmxvY2tGbG93OjpNYXJnaW5J
bmZvJiBtYXJnaW5JbmZvKCkgeyByZXR1cm4gbV9tYXJnaW5JbmZvOyB9Ci0gICAgTGF5b3V0VW5p
dCYgcHJldkZsb2F0Qm90dG9tRnJvbUFub255bW91c0lubGluZUJsb2NrKCkgeyByZXR1cm4gbV9w
cmV2RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2s7IH0KLSAgICBMYXlvdXRVbml0
JiBtYXhGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jaygpIHsgcmV0dXJuIG1fbWF4
RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2s7IH0KIAogICAgIEZsb2F0TGlzdCYg
ZmxvYXRMaXN0KCkgeyByZXR1cm4gbV9mbG9hdExpc3Q7IH0KIApAQCAtMTcyLDggKzE3MCw2IEBA
IHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCYgbV9yZXBhaW50TG9naWNhbEJvdHRvbTsKIAogICAg
IFJlbmRlckJsb2NrRmxvdzo6TWFyZ2luSW5mbyBtX21hcmdpbkluZm87Ci0gICAgTGF5b3V0VW5p
dCBtX3ByZXZGbG9hdEJvdHRvbUZyb21Bbm9ueW1vdXNJbmxpbmVCbG9jazsKLSAgICBMYXlvdXRV
bml0IG1fbWF4RmxvYXRCb3R0b21Gcm9tQW5vbnltb3VzSW5saW5lQmxvY2s7CiAKICAgICBib29s
IG1fZW5kTGluZU1hdGNoZWQgOiAxOwogICAgIGJvb2wgbV9jaGVja0ZvckZsb2F0c0Zyb21MYXN0
TGluZSA6IDE7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmlu
aXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNEZWZpbml0aW9ucy5oCShyZXZpc2lvbiAyMjE0MDkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3ICsy
NTgsNiBAQAogICAgIG1hY3JvKEltYWdlQ29udHJvbHNFbmFibGVkLCBpbWFnZUNvbnRyb2xzRW5h
YmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UsICIiLCAiIikgXAogICAgIG1hY3JvKEVuYWJsZUluaGVy
aXRVUklRdWVyeUNvbXBvbmVudCwgZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50LCBCb29s
LCBib29sLCBmYWxzZSwgIiIsICIiKSBcCiAgICAgbWFjcm8oU2VydmljZUNvbnRyb2xzRW5hYmxl
ZCwgc2VydmljZUNvbnRyb2xzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UsICIiLCAiIikgXAot
ICAgIG1hY3JvKE5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkLCBuZXdCbG9ja0luc2lk
ZUlubGluZU1vZGVsRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UsICIiLCAiIikgXAogICAgIG1h
Y3JvKERlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCwgZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSwgIiIsICIiKSBcCiAgICAgbWFjcm8oSFRUUEVxdWl2RW5hYmxlZCwg
aHR0cEVxdWl2RW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSwgIiIsICIiKSBcCiAgICAgbWFjcm8o
TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCwgbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCwgQm9v
bCwgYm9vbCwgZmFsc2UsICIiLCAiIikgXApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDIyMTQwOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzI5LDE0ICsxMzI5LDE1IEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNpbXBsZUxpbmVM
YXlvdXREZWIKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2ltcGxlTGluZUxh
eW91dERlYnVnQm9yZGVyc0VuYWJsZWQoKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0TmV3
QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgYm9vbCBmbGFnKQordm9pZCBXS1ByZWZlcmVuY2VzU2V0TmV3QmxvY2tJbnNpZGVJbmxp
bmVNb2RlbEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCkKIHsKLSAgICB0b0ltcGwocHJl
ZmVyZW5jZXNSZWYpLT5zZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZChmbGFnKTsK
KyAgICAvLyBGSVhNRTogUmVtb3ZlIFNhZmFyaSBjYWxsIHRvIHRoaXMuCiB9CiAKLWJvb2wgV0tQ
cmVmZXJlbmNlc0dldE5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkKFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZXNSZWYpCitib29sIFdLUHJlZmVyZW5jZXNHZXROZXdCbG9ja0luc2lk
ZUlubGluZU1vZGVsRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5uZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCgpOwor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgU2FmYXJpIGNhbGwgZm9yIHRoaXMuCisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiB2b2lkIFdLUHJlZmVyZW5jZXNTZXREZWZlcnJlZENTU1BhcnNlckVuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBmbGFnKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyMTQw
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjU0LDcgKzMyNTQsNiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxheW91dEVuYWJsZWQo
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzaW1wbGVMaW5lTGF5
b3V0RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxheW91dERlYnVn
Qm9yZGVyc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpzaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZEtleSgpKSk7CiAgICAgCi0gICAg
c2V0dGluZ3Muc2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpuZXdCbG9ja0luc2lkZUlubGluZU1vZGVs
RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0RGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGVmZXJyZWRDU1NQ
YXJzZXJFbmFibGVkS2V5KCkpKTsKIAogICAgIHNldHRpbmdzLnNldFN1YnBpeGVsQ1NTT01FbGVt
ZW50TWV0cmljc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjpzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkS2V5KCkpKTsKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIyMTQ0MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbCBhbmQg
YW5vbnltb3VzIGlubGluZSBibG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2MTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFz
LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L2Jsb2NrL2lu
c2lkZS1pbmxpbmVzL2NyYXNoLW9uLWZpcnN0LWxpbmUtY2hhbmdlLmh0bWw6CisKKyAgICAgICAg
ICAgIERvbid0IHNldCBuZXdCbG9ja0luc2lkZUlubGluZU1vZGVsLgorCisgICAgICAgICogZmFz
dC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWw6IFJlbW92ZWQuCisgICAgICAgICogZmFz
dC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYmFzaWMtZmxvYXQtaW50cnVzaW9uLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5l
cy9uZXctbW9kZWwvYmFzaWMtZmxvYXQtaW50cnVzaW9uLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYmxvY2std2lkdGgtY2hlY2st
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxp
bmVzL25ldy1tb2RlbC9ibG9jay13aWR0aC1jaGVjay5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2JyZWFraW5nLWJlaGF2aW9yLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5l
cy9uZXctbW9kZWwvYnJlYWtpbmctYmVoYXZpb3IuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
YXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9lbXB0eS1ibG9jay1leHBlY3RlZC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1v
ZGVsL2VtcHR5LWJsb2NrLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ibG9jay9pbnNp
ZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlOiBSZW1vdmVkLgorICAgICAgICAq
IGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDEt
ZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxp
bmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDAxLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAw
Mi1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvYmxvY2svaW5zaWRlLWlu
bGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDIuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2Uv
MDAzLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUt
aW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMy5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBz
ZS8wMDQtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL2luc2lk
ZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDA0Lmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2lucy1wdXNo
aW5nLWJlbG93LWZsb2F0LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9i
bG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2lucy1wdXNoaW5nLWJlbG93LWZsb2F0
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXct
bW9kZWwvcGFpbnQtb3JkZXItZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0
L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9wYWludC1vcmRlci5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL3NlbGYtY29s
bGFwc2luZy10ZXN0LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ibG9j
ay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvc2VsZi1jb2xsYXBzaW5nLXRlc3QuaHRtbDogUmVt
b3ZlZC4KKworICAgICAgICAgICAgVGhlc2UgYXJlIHJlZnRlc3RzIGNvbXBhcmluZyBuZXdCbG9j
a0luc2lkZUlubGluZU1vZGVsIGFuZCB0aGUgY3VycmVudCBtb2RlbCBhbmQgZG9uJ3QgaGF2ZSB2
YWx1ZSBhbnltb3JlLgorCisgICAgICAgICogZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9vcGFj
aXR5LW9uLWlubGluZS5odG1sOgorCisgICAgICAgICAgICBEb24ndCBzZXQgbmV3QmxvY2tJbnNp
ZGVJbmxpbmVNb2RlbC4KKyAgICAgICAgICAgIE1hcmtlZCB0aGlzIGFzIGZhaWxpbmcgc2luY2Ug
aXQgb25seSB3b3JrZWQgd2l0aCBuZXdCbG9ja0luc2lkZUlubGluZU1vZGVsIGVuYWJsZWQuCisg
ICAgICAgICAgICBUaGUgdGVzdCBwYXNzZXMgaW4gRmlyZWZveCBhbmQgZmFpbHMgaW4gQ2hyb21l
LgorCiAyMDE3LTA4LTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgUmVxdWVzdCBib2R5IHN0cmVhbSBjbG9uaW5nCkluZGV4OiBM
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTE0NTcsMyArMTQ1Nyw1IEBAIGluc3BlY3Rvci9k
b20vY29udGVudC1ub2RlLXJlZ2lvbi1pbmZvLmgKIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWxheW91dC1hZnRlci1pbml0aWFsLWxheW91dC1w
YXNzLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE3MTk0NSBwZXJmL2NsYXNzLWxpc3Qt
cmVtb3ZlLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCisKK3dlYmtpdC5vcmcvYi8xNzYx
ODMgZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9vcGFjaXR5LW9uLWlubGluZS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxp
bmVzL2NyYXNoLW9uLWZpcnN0LWxpbmUtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9jcmFzaC1vbi1maXJzdC1saW5lLWNoYW5n
ZS5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lk
ZS1pbmxpbmVzL2NyYXNoLW9uLWZpcnN0LWxpbmUtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE3LDkgKzE3LDYgQEAgZGl2IHsKIFBBU1MgaWYgbm8gY3Jhc2guCiA8ZGl2IGNsYXNzPWNv
bnRhaW5lcj48c3Bhbj48ZGl2IGlkPWZvbz48L2Rpdj48L2Rpdj48L2Rpdj4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmludGVybmFscykKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TmV3QmxvY2tJ
bnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQodHJ1ZSkKLQogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7ICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3
LW1vZGVsL2Jhc2ljLWZsb2F0LWludHJ1c2lvbi1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2Jhc2ljLWZs
b2F0LWludHJ1c2lvbi1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9iYXNpYy1mbG9hdC1pbnRy
dXNpb24tZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE0ICswLDAgQEAKLTwhZG9j
dHlwZSBodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci0uYm94IHsgYm9yZGVyOjFweCBzb2xpZCBibGFj
azsgcGFkZGluZzozcHg7IG1hcmdpbjozcHggfQotLm5vd3JhcCB7IHdoaXRlLXNwYWNlOiBub3dy
YXA7IH0KLS5mbG9hdCB7IGZsb2F0OiBsZWZ0OyB9Ci0uYm94IGRpdiB7IGhlaWdodDo0MHB4OyAg
fQotLmZsb2F0IHsgd2lkdGg6MTAwcHg7IGhlaWdodDoxMDBweDsgYmFja2dyb3VuZC1jb2xvcjpj
eWFuIH0KLTwvc3R5bGU+Ci08Ym9keT4KLQotPGRpdiBjbGFzcz0iZmxvYXQiPjwvZGl2PgotCi08
ZGl2IGNsYXNzPSJib3giPjxkaXY+QXZvaWQgdGhlIGZsb2F0ITwvZGl2PjwvZGl2PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYmFzaWMtZmxv
YXQtaW50cnVzaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9p
bnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYmFzaWMtZmxvYXQtaW50cnVzaW9uLmh0bWwJKHJldmlz
aW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3
LW1vZGVsL2Jhc2ljLWZsb2F0LWludHJ1c2lvbi5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTgg
KzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5ib3ggeyBib3JkZXI6
MXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjNweDsgbWFyZ2luOjNweCB9Ci0ubm93cmFwIHsgd2hp
dGUtc3BhY2U6IG5vd3JhcDsgfQotLmZsb2F0IHsgZmxvYXQ6IGxlZnQ7IH0KLS5ib3ggZGl2IHsg
aGVpZ2h0OjQwcHg7ICB9Ci0uZmxvYXQgeyB3aWR0aDoxMDBweDsgaGVpZ2h0OjEwMHB4OyBiYWNr
Z3JvdW5kLWNvbG9yOmN5YW4gfQotPC9zdHlsZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmludGVy
bmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE5ld0Jsb2NrSW5zaWRlSW5s
aW5lTW9kZWxFbmFibGVkKHRydWUpCi08L3NjcmlwdD4KLTxib2R5PgotCi08ZGl2IGNsYXNzPSJm
bG9hdCI+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImJveCI+PGE+PGRpdj5Bdm9pZCB0aGUgZmxvYXQh
PC9kaXY+PC9hPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5s
aW5lcy9uZXctbW9kZWwvYmxvY2std2lkdGgtY2hlY2stZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9ibG9j
ay13aWR0aC1jaGVjay1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9ibG9jay13aWR0aC1jaGVj
ay1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTUgKzAsMCBAQAotPCFkb2N0eXBl
IGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5ib3ggeyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBw
YWRkaW5nOjNweDsgbWFyZ2luOjNweCB9Ci0ubm93cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsg
fQotLmZsb2F0IHsgZmxvYXQ6IGxlZnQ7IH0KLS5jb250IHsgYmFja2dyb3VuZC1jb2xvcjpsaW1l
OyBoZWlnaHQ6NDBweDsgYm9yZGVyOjFweCBzb2xpZCBibGFjayB9Ci08L3N0eWxlPgotPGJvZHk+
Ci0KLTxkaXYgY2xhc3M9ImJveCI+PGRpdj48YT5PbmUgPC9hPjwvZGl2PjxkaXYgY2xhc3M9ImNv
bnQiPjwvZGl2PjxkaXY+PGE+IFR3bzwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0iYm94
Ij48ZGl2PjxhPk9uZTxicj48L2E+PC9kaXY+PGRpdiBjbGFzcz0iY29udCI+PC9kaXY+PGRpdj48
YT48YnI+VHdvPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJib3ggZmxvYXQiPjxkaXY+
PGE+T25lIDwvYT48L2Rpdj48ZGl2IGNsYXNzPSJjb250Ij48L2Rpdj48ZGl2PjxhPiBUd288L2E+
PC9kaXY+PC9kaXY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYmxvY2std2lkdGgtY2hlY2su
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVz
L25ldy1tb2RlbC9ibG9jay13aWR0aC1jaGVjay5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9ibG9jay13aWR0
aC1jaGVjay5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTkgKzAsMCBAQAotPCFkb2N0eXBlIGh0
bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5ib3ggeyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBwYWRk
aW5nOjNweDsgbWFyZ2luOjNweCB9Ci0ubm93cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQot
LmZsb2F0IHsgZmxvYXQ6IGxlZnQ7IH0KLS5ib3ggZGl2IHsgYmFja2dyb3VuZC1jb2xvcjpsaW1l
OyBoZWlnaHQ6NDBweDsgYm9yZGVyOjFweCBzb2xpZCBibGFjayB9Ci08L3N0eWxlPgotPHNjcmlw
dD4KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQodHJ1ZSkKLTwvc2NyaXB0PgotPGJv
ZHk+Ci0KLTxkaXYgY2xhc3M9ImJveCI+PGE+T25lIDxkaXY+PC9kaXY+IFR3bzwvYT48L2Rpdj4K
LQotPGRpdiBjbGFzcz0iYm94Ij48YT5PbmU8YnI+PGRpdj48L2Rpdj48YnI+VHdvPC9hPjwvZGl2
PgotCi08ZGl2IGNsYXNzPSJib3ggZmxvYXQiPjxhPk9uZSA8ZGl2PjwvZGl2PiBUd288L2E+PC9k
aXY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9i
bG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvYnJlYWtpbmctYmVoYXZpb3ItZXhwZWN0ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVz
L25ldy1tb2RlbC9icmVha2luZy1iZWhhdmlvci1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyMjE0
MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9i
cmVha2luZy1iZWhhdmlvci1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTYgKzAs
MCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5ib3ggeyBib3JkZXI6MXB4
IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjNweDsgbWFyZ2luOjNweCB9Ci0ubm93cmFwIHsgd2hpdGUt
c3BhY2U6IG5vd3JhcDsgfQotLmZsb2F0IHsgZmxvYXQ6IGxlZnQ7IH0KLTwvc3R5bGU+Ci08Ym9k
eT4KLQotPGRpdiBjbGFzcz0iYm94Ij48YT5PbmUgPGJyPiBUd288L2E+PC9kaXY+Ci0KLTxkaXYg
Y2xhc3M9ImJveCI+PGE+T25lPGJyPjxicj5Ud288L2E+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImJv
eCBub3dyYXAiPjxhPk9uZSA8YnI+IFR3bzwvYT48L2Rpdj4KLQotPGRpdiBjbGFzcz0iYm94IGZs
b2F0Ij48YT5PbmU8YnI+IFR3bzwvYT48L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9i
cmVha2luZy1iZWhhdmlvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxv
Y2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2JyZWFraW5nLWJlaGF2aW9yLmh0bWwJKHJldmlz
aW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3
LW1vZGVsL2JyZWFraW5nLWJlaGF2aW9yLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMSArMCww
IEBACi08IWRvY3R5cGUgaHRtbD4KLTxoZWFkPgotPHN0eWxlPgotLmJveCB7IGJvcmRlcjoxcHgg
c29saWQgYmxhY2s7IHBhZGRpbmc6M3B4OyBtYXJnaW46M3B4IH0KLS5ub3dyYXAgeyB3aGl0ZS1z
cGFjZTogbm93cmFwOyB9Ci0uZmxvYXQgeyBmbG9hdDogbGVmdDsgfQotPC9zdHlsZT4KLTxzY3Jp
cHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdz
LnNldE5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkKHRydWUpCi08L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotCi08ZGl2IGNsYXNzPSJib3giPjxhPk9uZSA8ZGl2PjwvZGl2PiBUd288
L2E+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImJveCI+PGE+T25lPGJyPjxkaXY+PC9kaXY+PGJyPlR3
bzwvYT48L2Rpdj4KLQotPGRpdiBjbGFzcz0iYm94IG5vd3JhcCI+PGE+T25lIDxkaXY+PC9kaXY+
IFR3bzwvYT48L2Rpdj4KLQotPGRpdiBjbGFzcz0iYm94IGZsb2F0Ij48YT5PbmUgPGRpdj48L2Rp
dj4gVHdvPC9hPjwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2VtcHR5LWJsb2NrLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUt
aW5saW5lcy9uZXctbW9kZWwvZW1wdHktYmxvY2stZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjIx
NDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwv
ZW1wdHktYmxvY2stZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDkgKzAsMCBAQAot
PCFkb2N0eXBlIGh0bWw+Ci0KLVRoZSB0d28gbGluZXMgYmVsb3cgc2hvdWxkIGxvb2sgaWRlbnRp
Y2FsLgotCi08ZGl2PgotCi08YSBzdHlsZT0ibGluZS1oZWlnaHQ6MjsgYmFja2dyb3VuZC1jb2xv
cjpncmVlbjsgcGFkZGluZzowIDEwMHB4Ij4mbmJzcDsmbmJzcDs8YnI+Ci0mbmJzcDsmbmJzcDs8
L2E+Ci08L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9lbXB0eS1ibG9jay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1v
ZGVsL2VtcHR5LWJsb2NrLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zh
c3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL2VtcHR5LWJsb2NrLmh0bWwJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxNSArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxoZWFkPgotPHNjcmlw
dD4KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQodHJ1ZSkKLTwvc2NyaXB0PgotPC9o
ZWFkPgotCi1UaGUgdHdvIGxpbmVzIGJlbG93IHNob3VsZCBsb29rIGlkZW50aWNhbC4KLQotPGRp
dj4KLQotPGEgc3R5bGU9ImxpbmUtaGVpZ2h0OjI7IGJhY2tncm91bmQtY29sb3I6Z3JlZW47IHBh
ZGRpbmc6MCAxMDBweCI+Jm5ic3A7Jm5ic3A7PGJyPgotPGRpdj48L2Rpdj4mbmJzcDsmbmJzcDs8
L2E+Ci08L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDAx
LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNp
ZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMS1leHBlY3RlZC5odG1sCShy
ZXZpc2lvbiAyMjE0MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVz
L25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDAxLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50
KQpAQCAtMSw0MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wLy9FTiI+Ci08aHRtbCBsYW5nPSJlbiI+Ci0gPGhlYWQ+Ci0gIDx0aXRsZT5NYXJnaW4g
Q29sbGFwc2luZzogaW4gZmxvdyAoYmxvY2staW5zaWRlLWlubGluZSB2ZXJzaW9uKTwvdGl0bGU+
Ci0gIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci0gICB0YWJsZSB7IGJvcmRlci1zcGFjaW5nOiAw
OyBmb250LXNpemU6IDUwcHg7IGJvcmRlcjogc29saWQ7IH0KLSAgIHRkIHsgYmFja2dyb3VuZDog
b3JhbmdlOyBwYWRkaW5nOiAwOyB9Ci0gICBkaXYgeyBtYXJnaW46IDFlbSAwOyB9Ci0gICAuYSB7
IGJhY2tncm91bmQ6IHllbGxvdzsgfQotICAgLmIgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9Ci0gICAu
YyB7IGJhY2tncm91bmQ6IGFxdWE7IH0KLSAgIC5kIHsgYmFja2dyb3VuZDogYmx1ZTsgfQotICAg
LnJlZCB7IGJhY2tncm91bmQ6IHJlZDsgfQotICA8L3N0eWxlPgotIDwvaGVhZD4KLSA8Ym9keT4K
LSAgPHA+VGhlIGZvbGxvd2luZyB0d28gY29sdW1ucyBzaG91bGQgYmUgcGl4ZWwgcGVyZmVjdCBp
ZGVudGljYWwgd2l0aCBubyByZWQgdmlzaWJsZS48L3A+Ci0gIDx0YWJsZT4KLSAgIDx0cj4KLSAg
ICA8dGQgY2xhc3M9InRlc3QiPgotICAgICA8c3Bhbj48ZGl2IGNsYXNzPSJkIj4KLSAgICAgIDxz
cGFuPjxkaXYgY2xhc3M9InJlZCI+PHNwYW4+PGRpdiBjbGFzcz0icmVkIj48c3Bhbj48ZGl2IGNs
YXNzPSJhIj5BPC9kaXY+PC9zcGFuPjwvZGl2PjxzcGFuPjxkaXYgY2xhc3M9InJlZCI+PC9kaXY+
PC9zcGFuPjwvZGl2Pjwvc3Bhbj4KLSAgICAgIDxzcGFuPjxkaXYgY2xhc3M9InJlZCI+PC9kaXY+
PC9zcGFuPgotICAgICAgPHNwYW4+PGRpdiBjbGFzcz0icmVkIj48c3Bhbj48ZGl2IGNsYXNzPSJy
ZWQiPjwvZGl2Pjwvc3Bhbj48L2Rpdj48L3NwYW4+Ci0gICAgICA8c3Bhbj48ZGl2IGNsYXNzPSJy
ZWQiPjxzcGFuPjxkaXYgY2xhc3M9ImIiPjxzcGFuPjxkaXYgY2xhc3M9InJlZCI+PC9kaXY+PC9z
cGFuPkI8L2Rpdj48L3NwYW4+PC9kaXY+PC9zcGFuPgotICAgICAgPHNwYW4+PGRpdiBjbGFzcz0i
YyI+QzwvZGl2Pjwvc3Bhbj4KLSAgICAgPC9kaXY+PC9zcGFuPgotICAgIDwvdGQ+Ci0gICAgPHRk
IGNsYXNzPSJjb250cm9sIj4KLSAgICAgPGRpdiBjbGFzcz0iZCI+Ci0gICAgICA8ZGl2IGNsYXNz
PSJhIj5BPC9kaXY+Ci0gICAgICA8ZGl2IGNsYXNzPSJiIj5CPC9kaXY+Ci0gICAgICA8ZGl2IGNs
YXNzPSJjIj5DPC9kaXY+Ci0gICAgIDwvZGl2PgotICAgIDwvdGQ+Ci0gICA8L3RyPgotICA8L3Rh
YmxlPgotICA8cD5UaGlzIHRlc3QgaXMgbWVhbmluZ2xlc3MgaWYgeW91IGRvbid0IHBhc3MgPGEg
aHJlZj0iMDA2Lmh0bWwjIj50ZXN0IDAwNjwvYT4uPC9wPgotIDwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdp
bi1jb2xsYXBzZS8wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2Nr
L2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDAxLmh0bWwJKHJldmlz
aW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3
LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDEuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICsw
LDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4K
LTxodG1sIGxhbmc9ImVuIj4KLSA8aGVhZD4KLSAgPHRpdGxlPk1hcmdpbiBDb2xsYXBzaW5nOiBp
biBmbG93IChibG9jay1pbnNpZGUtaW5saW5lIHZlcnNpb24pPC90aXRsZT4KLSAgPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KLSAgIHRhYmxlIHsgYm9yZGVyLXNwYWNpbmc6IDA7IGZvbnQtc2l6ZTog
NTBweDsgYm9yZGVyOiBzb2xpZDsgfQotICAgdGQgeyBiYWNrZ3JvdW5kOiBvcmFuZ2U7IHBhZGRp
bmc6IDA7IH0KLSAgIGRpdiB7IG1hcmdpbjogMWVtIDA7IH0KLSAgIC5hIHsgYmFja2dyb3VuZDog
eWVsbG93OyB9Ci0gICAuYiB7IGJhY2tncm91bmQ6IGxpbWU7IH0KLSAgIC5jIHsgYmFja2dyb3Vu
ZDogYXF1YTsgfQotICAgLmQgeyBiYWNrZ3JvdW5kOiBibHVlOyB9Ci0gICAucmVkIHsgYmFja2dy
b3VuZDogcmVkOyB9Ci0gIDwvc3R5bGU+Ci0gICAgPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50ZXJu
YWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TmV3QmxvY2tJbnNpZGVJbmxp
bmVNb2RlbEVuYWJsZWQodHJ1ZSkKLTwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgPHA+
VGhlIGZvbGxvd2luZyB0d28gY29sdW1ucyBzaG91bGQgYmUgcGl4ZWwgcGVyZmVjdCBpZGVudGlj
YWwgd2l0aCBubyByZWQgdmlzaWJsZS48L3A+Ci0gIDx0YWJsZT4KLSAgIDx0cj4KLSAgICA8dGQg
Y2xhc3M9InRlc3QiPgotICAgICA8c3Bhbj48ZGl2IGNsYXNzPSJkIj4KLSAgICAgIDxzcGFuPjxk
aXYgY2xhc3M9InJlZCI+PHNwYW4+PGRpdiBjbGFzcz0icmVkIj48c3Bhbj48ZGl2IGNsYXNzPSJh
Ij5BPC9kaXY+PC9zcGFuPjwvZGl2PjxzcGFuPjxkaXYgY2xhc3M9InJlZCI+PC9kaXY+PC9zcGFu
PjwvZGl2Pjwvc3Bhbj4KLSAgICAgIDxzcGFuPjxkaXYgY2xhc3M9InJlZCI+PC9kaXY+PC9zcGFu
PgotICAgICAgPHNwYW4+PGRpdiBjbGFzcz0icmVkIj48c3Bhbj48ZGl2IGNsYXNzPSJyZWQiPjwv
ZGl2Pjwvc3Bhbj48L2Rpdj48L3NwYW4+Ci0gICAgICA8c3Bhbj48ZGl2IGNsYXNzPSJyZWQiPjxz
cGFuPjxkaXYgY2xhc3M9ImIiPjxzcGFuPjxkaXYgY2xhc3M9InJlZCI+PC9kaXY+PC9zcGFuPkI8
L2Rpdj48L3NwYW4+PC9kaXY+PC9zcGFuPgotICAgICAgPHNwYW4+PGRpdiBjbGFzcz0iYyI+Qzwv
ZGl2Pjwvc3Bhbj4KLSAgICAgPC9kaXY+PC9zcGFuPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNz
PSJjb250cm9sIj4KLSAgICAgPGRpdiBjbGFzcz0iZCI+Ci0gICAgICA8ZGl2IGNsYXNzPSJhIj5B
PC9kaXY+Ci0gICAgICA8ZGl2IGNsYXNzPSJiIj5CPC9kaXY+Ci0gICAgICA8ZGl2IGNsYXNzPSJj
Ij5DPC9kaXY+Ci0gICAgIDwvZGl2PgotICAgIDwvdGQ+Ci0gICA8L3RyPgotICA8L3RhYmxlPgot
ICA8cD5UaGlzIHRlc3QgaXMgbWVhbmluZ2xlc3MgaWYgeW91IGRvbid0IHBhc3MgPGEgaHJlZj0i
MDA2Lmh0bWwjIj50ZXN0IDAwNjwvYT4uPC9wPgotIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xs
YXBzZS8wMDItZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Js
b2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFwc2UvMDAyLWV4cGVjdGVk
Lmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRl
LWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDItZXhwZWN0ZWQuaHRtbAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDE2ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzND
Ly9EVEQgSFRNTCA0LjAvL0VOIj4KLTxodG1sIGxhbmc9ImVuIj4KLSA8aGVhZD4KLSAgPHRpdGxl
Pk1hcmdpbiBDb2xsYXBzaW5nOiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgKGJsb2NrLWluc2lkZS1p
bmxpbmUgdmVyc2lvbik8L3RpdGxlPgotICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotICAgZGl2
LnRlc3QgeyBiYWNrZ3JvdW5kOiBncmVlbjsgcG9zaXRpb246IGFic29sdXRlOyB9Ci0gICBkaXYu
dGVzdCBkaXYgeyBiYWNrZ3JvdW5kOiByZWQ7IG1hcmdpbjogNWVtIDIuNWVtOyB9Ci0gICBkaXYu
Y29udHJvbCB7IGhlaWdodDogNWVtOyB3aWR0aDogNWVtOyBiYWNrZ3JvdW5kOiByZWQ7IHBvc2l0
aW9uOiBhYnNvbHV0ZTsgfQotICA8L3N0eWxlPgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgPHA+VGhp
cyBwYWdlIHNob3VsZCBoYXZlIG9uZSBzcXVhcmUgZ3JlZW4gYmxvY2sgYW5kIG5vIHJlZC48L3A+
Ci0gIDxkaXYgY2xhc3M9ImNvbnRyb2wiPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48c3Bh
bj48ZGl2PjwvZGl2Pjwvc3Bhbj48L2Rpdj4KLSA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW4tY29sbGFw
c2UvMDAyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUt
aW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMi5odG1sCShyZXZpc2lvbiAyMjE0
MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9t
YXJnaW4tY29sbGFwc2UvMDAyLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMCArMCwwIEBACi08
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbCBs
YW5nPSJlbiI+Ci0gPGhlYWQ+Ci0gIDx0aXRsZT5NYXJnaW4gQ29sbGFwc2luZzogYWJzb2x1dGVs
eSBwb3NpdGlvbmVkIChibG9jay1pbnNpZGUtaW5saW5lIHZlcnNpb24pPC90aXRsZT4KLSAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KLSAgIGRpdi50ZXN0IHsgYmFja2dyb3VuZDogZ3JlZW47IHBv
c2l0aW9uOiBhYnNvbHV0ZTsgfQotICAgZGl2LnRlc3QgZGl2IHsgYmFja2dyb3VuZDogcmVkOyBt
YXJnaW46IDVlbSAyLjVlbTsgfQotICAgZGl2LmNvbnRyb2wgeyBoZWlnaHQ6IDVlbTsgd2lkdGg6
IDVlbTsgYmFja2dyb3VuZDogcmVkOyBwb3NpdGlvbjogYWJzb2x1dGU7IH0KLSAgPC9zdHlsZT4K
LSAgICA8c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCh0cnVlKQotPC9z
Y3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICA8cD5UaGlzIHBhZ2Ugc2hvdWxkIGhhdmUgb25l
IHNxdWFyZSBncmVlbiBibG9jayBhbmQgbm8gcmVkLjwvcD4KLSAgPGRpdiBjbGFzcz0iY29udHJv
bCI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9InRlc3QiPjxzcGFuPjxkaXY+PC9kaXY+PC9zcGFuPjwv
ZGl2PgotIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5z
aWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDMtZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1t
b2RlbC9tYXJnaW4tY29sbGFwc2UvMDAzLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkK
KysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdp
bi1jb2xsYXBzZS8wMDMtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICswLDAg
QEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxo
dG1sIGxhbmc9ImVuIj4KLSA8aGVhZD4KLSAgPHRpdGxlPk1hcmdpbiBDb2xsYXBzaW5nOiBmaXhl
ZCBwb3NpdGlvbmVkIChibG9jay1pbnNpZGUtaW5saW5lIHZlcnNpb24pPC90aXRsZT4KLSAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KLSAgIGRpdi50ZXN0IHsgYmFja2dyb3VuZDogZ3JlZW47IHBv
c2l0aW9uOiBmaXhlZDsgdG9wOiA0ZW07IH0KLSAgIGRpdi50ZXN0IGRpdiB7IGJhY2tncm91bmQ6
IHJlZDsgbWFyZ2luOiA1ZW0gMi41ZW07IH0KLSAgIGRpdi5jb250cm9sIHsgaGVpZ2h0OiA1ZW07
IHdpZHRoOiA1ZW07IGJhY2tncm91bmQ6IHJlZDsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDRlbTsg
fQotICA8L3N0eWxlPgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgPHA+VGhpcyBwYWdlIHNob3VsZCBo
YXZlIG9uZSBzcXVhcmUgZ3JlZW4gYmxvY2sgYW5kIG5vIHJlZC48L3A+Ci0gIDxkaXYgY2xhc3M9
ImNvbnRyb2wiPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48c3Bhbj4KLSAgIDxkaXY+PC9k
aXY+Ci0gIDwvc3Bhbj4gICAKLSAgPC9kaXY+Ci0gPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxh
cHNlLzAwMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRl
LWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDMuaHRtbAkocmV2aXNpb24gMjIx
NDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwv
bWFyZ2luLWNvbGxhcHNlLzAwMy5odG1sCShub25leGlzdGVudCkKQEAgLTEsMjMgKzAsMCBAQAot
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPGh0bWwg
bGFuZz0iZW4iPgotIDxoZWFkPgotICA8dGl0bGU+TWFyZ2luIENvbGxhcHNpbmc6IGZpeGVkIHBv
c2l0aW9uZWQgKGJsb2NrLWluc2lkZS1pbmxpbmUgdmVyc2lvbik8L3RpdGxlPgotICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgotICAgZGl2LnRlc3QgeyBiYWNrZ3JvdW5kOiBncmVlbjsgcG9zaXRp
b246IGZpeGVkOyB0b3A6IDRlbTsgfQotICAgZGl2LnRlc3QgZGl2IHsgYmFja2dyb3VuZDogcmVk
OyBtYXJnaW46IDVlbSAyLjVlbTsgfQotICAgZGl2LmNvbnRyb2wgeyBoZWlnaHQ6IDVlbTsgd2lk
dGg6IDVlbTsgYmFja2dyb3VuZDogcmVkOyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogNGVtOyB9Ci0g
IDwvc3R5bGU+Ci0gICAgPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVNb2RlbEVuYWJsZWQo
dHJ1ZSkKLTwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgPHA+VGhpcyBwYWdlIHNob3Vs
ZCBoYXZlIG9uZSBzcXVhcmUgZ3JlZW4gYmxvY2sgYW5kIG5vIHJlZC48L3A+Ci0gIDxkaXYgY2xh
c3M9ImNvbnRyb2wiPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48c3Bhbj4KLSAgIDxkaXY+
PC9kaXY+Ci0gIDwvc3Bhbj4gICAKLSAgPC9kaXY+Ci0gPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNv
bGxhcHNlLzAwNC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
YmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDQtZXhwZWN0
ZWQuaHRtbAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNp
ZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwNC1leHBlY3RlZC5odG1sCShu
b25leGlzdGVudCkKQEAgLTEsMTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9X
M0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPGh0bWwgbGFuZz0iZW4iPgotIDxoZWFkPgotICA8dGl0
bGU+TWFyZ2luIENvbGxhcHNpbmc6IGZsb2F0cyAoYmxvY2staW5zaWRlLWlubGluZSB2ZXJzaW9u
KTwvdGl0bGU+Ci0gIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci0gICBkaXYudGVzdCB7IGJhY2tn
cm91bmQ6IGdyZWVuOyBmbG9hdDogbGVmdDsgfQotICAgZGl2LnRlc3QgZGl2IHsgYmFja2dyb3Vu
ZDogcmVkOyBtYXJnaW46IDVlbSAyLjVlbTsgfQotICAgZGl2LmNvbnRyb2wgeyBoZWlnaHQ6IDVl
bTsgd2lkdGg6IDVlbTsgbWFyZ2luOiAwIDAgLTVlbSAwOyBiYWNrZ3JvdW5kOiByZWQ7IH0KLSAg
PC9zdHlsZT4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gIDxwPlRoaXMgcGFnZSBzaG91bGQgaGF2ZSBv
bmUgc3F1YXJlIGdyZWVuIGJsb2NrIGFuZCBubyByZWQuPC9wPgotICA8ZGl2IGNsYXNzPSJjb250
cm9sIj48L2Rpdj4KLSAgPGRpdiBjbGFzcz0idGVzdCI+Ci0gICA8c3Bhbj48ZGl2PjwvZGl2Pjwv
c3Bhbj4KLSAgPC9kaXY+Ci0gPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwNC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3
LW1vZGVsL21hcmdpbi1jb2xsYXBzZS8wMDQuaHRtbAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxh
cHNlLzAwNC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMjIgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPGh0bWwgbGFuZz0iZW4iPgot
IDxoZWFkPgotICA8dGl0bGU+TWFyZ2luIENvbGxhcHNpbmc6IGZsb2F0cyAoYmxvY2staW5zaWRl
LWlubGluZSB2ZXJzaW9uKTwvdGl0bGU+Ci0gIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci0gICBk
aXYudGVzdCB7IGJhY2tncm91bmQ6IGdyZWVuOyBmbG9hdDogbGVmdDsgfQotICAgZGl2LnRlc3Qg
ZGl2IHsgYmFja2dyb3VuZDogcmVkOyBtYXJnaW46IDVlbSAyLjVlbTsgfQotICAgZGl2LmNvbnRy
b2wgeyBoZWlnaHQ6IDVlbTsgd2lkdGg6IDVlbTsgbWFyZ2luOiAwIDAgLTVlbSAwOyBiYWNrZ3Jv
dW5kOiByZWQ7IH0KLSAgPC9zdHlsZT4KLSAgPHNjcmlwdD4KLWlmICh3aW5kb3cuaW50ZXJuYWxz
KQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TmV3QmxvY2tJbnNpZGVJbmxpbmVN
b2RlbEVuYWJsZWQodHJ1ZSkKLTwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgPHA+VGhp
cyBwYWdlIHNob3VsZCBoYXZlIG9uZSBzcXVhcmUgZ3JlZW4gYmxvY2sgYW5kIG5vIHJlZC48L3A+
Ci0gIDxkaXYgY2xhc3M9ImNvbnRyb2wiPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJ0ZXN0Ij4KLSAg
IDxzcGFuPjxkaXY+PC9kaXY+PC9zcGFuPgotICA8L2Rpdj4KLSA8L2JvZHk+Ci08L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJn
aW5zLXB1c2hpbmctYmVsb3ctZmxvYXQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9tYXJnaW5zLXB1c2hp
bmctYmVsb3ctZmxvYXQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2lucy1wdXNoaW5n
LWJlbG93LWZsb2F0LWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNCArMCwwIEBA
Ci08IWRvY3R5cGUgaHRtbD4KLTxoZWFkPgotPHN0eWxlPgotLmZsb2F0IHsgZmxvYXQ6bGVmdDsg
aGVpZ2h0OjEwMHB4OyB3aWR0aDoxMDBweDsgYmFja2dyb3VuZC1jb2xvcjpncmVlbiB9Ci0uaGFs
ZiB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDo1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOmxp
bWU7IGhlaWdodDo1MHB4IH0KLS5ib3JkZXJlZCB7IHdpZHRoOjE1MHB4OyBib3JkZXI6MnB4IHNv
bGlkIGJsYWNrOyB9Ci0ubWFyZ2lucyB7IGhlaWdodDo1MHB4OyBtYXJnaW4tYm90dG9tOjUwcHgg
fQotPC9zdHlsZT4KLTxib2R5PgotCi08ZGl2IGNsYXNzPSJib3JkZXJlZCI+Ci08ZGl2IGNsYXNz
PSJmbG9hdCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJtYXJnaW5zIj48L2Rpdj48ZGl2IGNsYXNzPSJo
YWxmIj48L2Rpdj48ZGl2IGNsYXNzPSJoYWxmIj48L2Rpdj4KLTwvZGl2PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2lucy1wdXNoaW5n
LWJlbG93LWZsb2F0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9p
bnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2lucy1wdXNoaW5nLWJlbG93LWZsb2F0Lmh0bWwJ
KHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGlu
ZXMvbmV3LW1vZGVsL21hcmdpbnMtcHVzaGluZy1iZWxvdy1mbG9hdC5odG1sCShub25leGlzdGVu
dCkKQEAgLTEsMTggKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5m
bG9hdCB7IGZsb2F0OmxlZnQ7IGhlaWdodDoxMDBweDsgd2lkdGg6MTAwcHg7IGJhY2tncm91bmQt
Y29sb3I6Z3JlZW4gfQotLmhhbGYgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgd2lkdGg6NTBweDsg
YmFja2dyb3VuZC1jb2xvcjpsaW1lOyBoZWlnaHQ6NTBweCB9Ci0uYm9yZGVyZWQgeyB3aWR0aDox
NTBweDsgYm9yZGVyOjJweCBzb2xpZCBibGFjazsgfQotLm1hcmdpbnMgeyBoZWlnaHQ6NTBweDsg
bWFyZ2luLWJvdHRvbTo1MHB4IH0KLTwvc3R5bGU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXROZXdCbG9ja0luc2lkZUlu
bGluZU1vZGVsRW5hYmxlZCh0cnVlKQotPC9zY3JpcHQ+Ci08Ym9keT4KLQotPGRpdiBjbGFzcz0i
Ym9yZGVyZWQiPgotPGRpdiBjbGFzcz0iZmxvYXQiPjwvZGl2PgotPHNwYW4+PGRpdiBjbGFzcz0i
bWFyZ2lucyI+PC9kaXY+PC9zcGFuPjxkaXYgY2xhc3M9ImhhbGYiPjwvZGl2PjxkaXYgY2xhc3M9
ImhhbGYiPjwvZGl2PgotPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lk
ZS1pbmxpbmVzL25ldy1tb2RlbC9wYWludC1vcmRlci1leHBlY3RlZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL3BhaW50
LW9yZGVyLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zh
c3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL3BhaW50LW9yZGVyLWV4cGVjdGVkLmh0
bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNiArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxoZWFk
PgotPHN0eWxlPgotLmJveCB7IHBhZGRpbmc6M3B4OyBtYXJnaW46M3B4IH0KLS5ub3dyYXAgeyB3
aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci0uZmxvYXQgeyBmbG9hdDogbGVmdDsgfQotLmJveCBkaXYg
eyBoZWlnaHQ6NDBweDsgYm9yZGVyOjJweCBzb2xpZCBibGFjayB9Ci0uZmxvYXQgeyB3aWR0aDox
MDBweDsgaGVpZ2h0OjEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOnllbGxvdyB9Ci0uc2hpZnQgeyBt
YXJnaW4tdG9wOi00OHB4OyBoZWlnaHQ6NDBweDsgYmFja2dyb3VuZC1jb2xvcjpvcmFuZ2U7IG1h
cmdpbi1yaWdodDo4cHggfQotPC9zdHlsZT4KLTxib2R5PgotCi08ZGl2IGNsYXNzPSJmbG9hdCI+
PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImJveCI+PGRpdj5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQg
YXZvaWQgdGhlIGZsb2F0IGFuZCBwYWludCBvbiB0b3Agb2YgdGhlIG9yYW5nZSBiYWNrZ3JvdW5k
LiAgVGhlIGJsYWNrIGJvcmRlciBzaG91bGQgcGFpbnQgYmVoaW5kIHRoZSBmbG9hdC48L2Rpdj48
L2Rpdj4KLTxkaXYgY2xhc3M9InNoaWZ0Ij48L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2Rl
bC9wYWludC1vcmRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2sv
aW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL3BhaW50LW9yZGVyLmh0bWwJKHJldmlzaW9uIDIyMTQw
OSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1vZGVsL3Bh
aW50LW9yZGVyLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMCArMCwwIEBACi08IWRvY3R5cGUg
aHRtbD4KLTxoZWFkPgotPHN0eWxlPgotLmJveCB7IHBhZGRpbmc6M3B4OyBtYXJnaW46M3B4IH0K
LS5ub3dyYXAgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci0uZmxvYXQgeyBmbG9hdDogbGVmdDsg
fQotLmJveCBkaXYgeyBoZWlnaHQ6NDBweDsgYm9yZGVyOjJweCBzb2xpZCBibGFjazsgYmFja2dy
b3VuZC1jb2xvcjpyZWQgfQotLmZsb2F0IHsgd2lkdGg6MTAwcHg7IGhlaWdodDoxMDBweDsgYmFj
a2dyb3VuZC1jb2xvcjp5ZWxsb3cgfQotLnNoaWZ0IHsgbWFyZ2luLXRvcDotNDhweDsgaGVpZ2h0
OjQwcHg7IGJhY2tncm91bmQtY29sb3I6b3JhbmdlOyBtYXJnaW4tcmlnaHQ6OHB4IH0KLTwvc3R5
bGU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCh0cnVlKQotPC9z
Y3JpcHQ+Ci08Ym9keT4KLQotPGRpdiBjbGFzcz0iZmxvYXQiPjwvZGl2PgotCi08ZGl2IGNsYXNz
PSJib3giPjxhPjxkaXY+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIGF2b2lkIHRoZSBmbG9hdCBh
bmQgcGFpbnQgb24gdG9wIG9mIHRoZSBvcmFuZ2UgYmFja2dyb3VuZC4gVGhlIGJsYWNrIGJvcmRl
ciBzaG91bGQgcGFpbnQgYmVoaW5kIHRoZSBmbG9hdC48L2Rpdj48L2E+PC9kaXY+Ci08ZGl2IGNs
YXNzPSJzaGlmdCI+PC9kaXY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvc2VsZi1jb2xsYXBz
aW5nLXRlc3QtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Js
b2NrL2luc2lkZS1pbmxpbmVzL25ldy1tb2RlbC9zZWxmLWNvbGxhcHNpbmctdGVzdC1leHBlY3Rl
ZC5odG1sCShyZXZpc2lvbiAyMjE0MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lk
ZS1pbmxpbmVzL25ldy1tb2RlbC9zZWxmLWNvbGxhcHNpbmctdGVzdC1leHBlY3RlZC5odG1sCShu
b25leGlzdGVudCkKQEAgLTEsMTMgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aGVhZD4KLTxz
dHlsZT4KLS5tYXJnaW4geyBtYXJnaW46MjBweCAwIH0KLXAgeyBtYXJnaW46MCB9Ci1zcGFuIHsg
Y2xlYXI6bGVmdDsgZmxvYXQ6bGVmdDsgd2lkdGg6MjBweDsgaGVpZ2h0OjIwcHg7IGJhY2tncm91
bmQtY29sb3I6Z3JlZW4gfQotPC9zdHlsZT4KLTxib2R5PgotVGhlIHR3byBncmVlbiBmbG9hdHMg
c2hvdWxkIGJlIHN0YWNrZWQgcmlnaHQgb24gdG9wIG9mIG9uZSBhbm90aGVyLgotPGRpdj4KLTxz
cGFuPjwvc3Bhbj4KLTxzcGFuPjwvc3Bhbj4KLTwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvbmV3LW1v
ZGVsL3NlbGYtY29sbGFwc2luZy10ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvc2VsZi1jb2xsYXBzaW5nLXRlc3Qu
aHRtbAkocmV2aXNpb24gMjIxNDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9pbnNpZGUt
aW5saW5lcy9uZXctbW9kZWwvc2VsZi1jb2xsYXBzaW5nLXRlc3QuaHRtbAkobm9uZXhpc3RlbnQp
CkBAIC0xLDIwICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci0ubWFy
Z2luIHsgbWFyZ2luOjIwcHggMCB9Ci1wIHsgbWFyZ2luOjAgfQotc3BhbiB7IGZsb2F0OmxlZnQ7
IHdpZHRoOjIwcHg7IGhlaWdodDoyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuIH0KLTwvc3R5
bGU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXROZXdCbG9ja0luc2lkZUlubGluZU1vZGVsRW5hYmxlZCh0cnVlKQotPC9z
Y3JpcHQ+Ci08Ym9keT4KLVRoZSB0d28gZ3JlZW4gZmxvYXRzIHNob3VsZCBiZSBzdGFja2VkIHJp
Z2h0IG9uIHRvcCBvZiBvbmUgYW5vdGhlci4KLTxwPjxzcGFuPjwvc3Bhbj48L3A+Ci08ZGl2IGNs
YXNzPSJtYXJnaW4iPgotPGk+Ci08ZGl2PjwvZGl2PgotPC9pPgotPC9kaXY+Ci08cD48c3Bhbj48
L3NwYW4+PC9wPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvYmxvY2svaW5zaWRlLWlubGluZXMvb3BhY2l0eS1vbi1pbmxpbmUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2luc2lkZS1pbmxpbmVzL29wYWNpdHktb24t
aW5saW5lLmh0bWwJKHJldmlzaW9uIDIyMTQwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2sv
aW5zaWRlLWlubGluZXMvb3BhY2l0eS1vbi1pbmxpbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NSwxMCArNSw2IEBACiAuYm94IGRpdiB7IGhlaWdodDo0MHB4OyBib3JkZXI6MnB4IHNvbGlkIGJs
YWNrOyBiYWNrZ3JvdW5kLWNvbG9yOm9yYW5nZSB9CiBhIHsgb3BhY2l0eTowLjUgfQogPC9zdHls
ZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldE5ld0Jsb2NrSW5zaWRlSW5saW5lTW9kZWxFbmFibGVkKHRydWUpCi08L3Nj
cmlwdD4KIDxib2R5PgogCiA8ZGl2IGNsYXNzPSJib3giPjxhPjxkaXY+VGhpcyBibG9jayBzaG91
bGQgYmUgcGFydGlhbGx5IHRyYW5zcGFyZW50LjwvZGl2PjwvYT48L2Rpdj4KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIy
MTQwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucwko
d29ya2luZyBjb3B5KQpAQCAtMTQxOCw3ICsxNDE4LDYgQEAgY29tcG9zaXRpbmcvc2Nyb2xsaW5n
L3RvdWNoLXNjcm9sbGluZy1yZQogY29tcG9zaXRpbmcvdGlsaW5nL29mZnNjcmVlbi10aWxlZC1s
YXllci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIGNvbXBvc2l0aW5nL3Zpc2libGUtcmVjdC9iYWNr
aW5nLWNoYW5nZS1oZWlnaHQtZnJvbS16ZXJvLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogY3NzMy9j
YWxjL3RyYW5zZm9ybXMtdHJhbnNsYXRlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQot
ZmFzdC9ibG9jay9pbnNpZGUtaW5saW5lcy9uZXctbW9kZWwvbWFyZ2luLWNvbGxhcHNlLzAwMy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50
L2FmdGVyLXdpdGgtaW5saW5lLWNvbnRpbnVhdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQ
YXNzIF0KIGZhc3QvY3NzL2Nhc2NhZGUvYmFja2dyb3VuZC1jbGlwLWFuZC13ZWJraXQtYmFja2dy
b3VuZC1jbGlwLWNhc2NhZGUtb3JkZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiBm
YXN0L2NzczMtdGV4dC9mb250LXN5bnRoZXNpcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNz
IF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>