<?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>176137</bug_id>
          
          <creation_ts>2017-08-30 17:07:09 -0700</creation_ts>
          <short_desc>Introduce CacheStorageEngineCache to handle cache records</short_desc>
          <delta_ts>2017-09-27 12:51:29 -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>WebCore Misc.</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343802</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-30 17:07:09 -0700</bug_when>
    <thetext>This will ease management of records to encapsulate it into its own class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343804</commentid>
    <comment_count>1</comment_count>
      <attachid>319425</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-30 17:14:41 -0700</bug_when>
    <thetext>Created attachment 319425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343805</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-30 17:16:50 -0700</bug_when>
    <thetext>Attachment 319425 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:254:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:105:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:128:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 6 in 6 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>1343806</commentid>
    <comment_count>3</comment_count>
      <attachid>319426</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-30 17:17:49 -0700</bug_when>
    <thetext>Created attachment 319426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343808</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-30 17:19:58 -0700</bug_when>
    <thetext>Attachment 319426 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:84:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:254:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:105:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:128:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 7 in 7 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>1344009</commentid>
    <comment_count>5</comment_count>
      <attachid>319426</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 11:16:16 -0700</bug_when>
    <thetext>Comment on attachment 319426
Patch

Rejecting attachment 319426 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 319426, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
WebKit/NetworkProcess/cache/CacheStorageEngine.h
patching file Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp
patching file Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.h
patching file Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp
patching file Source/WebKit/WebKit.xcodeproj/project.pbxproj

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Alex Christensen&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4417668</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344066</commentid>
    <comment_count>6</comment_count>
      <attachid>319500</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-31 12:37:38 -0700</bug_when>
    <thetext>Created attachment 319500
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344069</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 12:39:12 -0700</bug_when>
    <thetext>Attachment 319500 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:84:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:104:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:110:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:114:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:137:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 8 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>1344105</commentid>
    <comment_count>8</comment_count>
      <attachid>319512</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-31 13:36:37 -0700</bug_when>
    <thetext>Created attachment 319512
Fixing debug build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344110</commentid>
    <comment_count>9</comment_count>
      <attachid>319515</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-31 13:43:36 -0700</bug_when>
    <thetext>Created attachment 319515
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344112</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 13:46:08 -0700</bug_when>
    <thetext>Attachment 319515 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:84:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:104:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:110:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:114:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:137:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp:140:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 6 in 7 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>1344148</commentid>
    <comment_count>11</comment_count>
      <attachid>319515</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 14:55:20 -0700</bug_when>
    <thetext>Comment on attachment 319515
Rebasing

Clearing flags on attachment: 319515

Committed r221447: &lt;http://trac.webkit.org/changeset/221447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344149</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 14:55:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353688</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:51:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694153&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319425</attachid>
            <date>2017-08-30 17:14:41 -0700</date>
            <delta_ts>2017-08-30 17:17:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176137-20170830171440.patch</filename>
            <type>text/plain</type>
            <size>20608</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJhOTA3ZDQzODA1ZmRiZjRi
NGYxZGYwOGRjMjkyMTM0MGZiZDAyOTYuLjkyNGNjNDVlNjdlYTg2NTQ2NGM0YmUzYjQ1MmIxZmY5
MzQ1MDI4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDEgQEAKIDIwMTctMDgtMzAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAgICAgIEludHJvZHVjZSBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZSB0byBoYW5kbGUgY2FjaGUgcmVjb3JkcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUgaXMg
dGhlIGVxdWl2YWxlbnQgb2YgV2ViQ29yZSBDYWNoZS4KKyAgICAgICAgSXQgY29udGFpbnMgYSBs
aXN0IG9mIHJlY29yZHMgdGhhdCBpdCBuZWVkcyB0byBtYW5hZ2UgKGFkZCwgdXBkYXRlLCByZW1v
dmUpLgorICAgICAgICBNb3ZpbmcgdGhlIGxvZ2ljIG9mIHRoaXMgbWFuYWdlbWVudCBmcm9tIENh
Y2hlU3RvcmFnZUVuZ2luZSB0byB0aGlzIG5ldyBjbGFzcyBzbyBhcyB0byBlYXNlIGZ1dHVyZSBk
ZXZlbG9wbWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6cHV0UmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
OjpkZWxldGVNYXRjaGluZ1JlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
d3JpdGVDYWNoZVJlY29yZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVtb3ZlQ2FjaGVSZWNvcmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnF1ZXJ5Q2FjaGUpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmg6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6aW5mbyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmZpbmQpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlczo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2Fj
aGVzOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmVuY29kZUNhY2hl
TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6cmVhZENhY2hl
c0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmNhY2hl
SW5mb3MgY29uc3QpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCisyMDE3LTA4LTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAg
ICAgICBbQ2FjaGUgQVBJXSBTdXBwb3J0IGNhY2hlIG5hbWVzIHBlcnNpc3RlbmN5CiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKaW5kZXggMjRkNjM2Nzc0M2M2NDkxNTJmMzI5YmU1ZWJjM2QzMmUzNjI3ZjgxNS4u
OTZhYTRkNDIyN2FhMDFhNzA5ZWYxM2M3NGZmZWY5ODVmZWJjMDhkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CkBAIC0xMTcsNiArMTE3LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIE5ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmNwcAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcAppbmRleCBhNDVmNzNmMDA5YzliMWMwYjc4MDVlZDk5NWIzMjZiZDc2MDAw
OTZiLi40ZjNmMjJmY2QxMzg5ZjJmMmFiYjQ1ZTQ2MmQ3M2RiYTAyNGY4ODNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRW5naW5lOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlmaWVyCiAgICAg
ICAgIENhY2hlcyYgY2FjaGVzID0gY2FjaGVzT3JFcnJvci52YWx1ZSgpOwogCiAgICAgICAgIGlm
IChhdXRvKiBjYWNoZSA9IGNhY2hlcy5maW5kKGNhY2hlTmFtZSkpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKGNhY2hlLT5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlLT5p
ZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEwOCw3
ICsxMDgsNyBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjawogICAgICAgICB9CiAgICAgfQogICAg
IGlmICghY2FjaGVzVG9Nb2RpZnkpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fcmVtb3Zl
ZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0u
aWRlbnRpZmllciA9PSBjYWNoZUlkZW50aWZpZXI7IH0pOworICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyBy
ZXR1cm4gaXRlbS5pZGVudGlmaWVyKCkgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsKICAgICAgICAg
aWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5l
eHBlY3RlZChFcnJvcjo6SW50ZXJuYWwpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NSw5
MyArMTQ1LDMyIEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjCiAgICAgICAgICAgICBjYWxsYmFj
ayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBQYXNzIHJlY29yZHMgYnkgcmVmZXJlbmNlLgot
ICAgICAgICBhdXRvJiByZWNvcmRzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3JkczsKIAot
ICAgICAgICBWZWN0b3I8UmVjb3JkPiBjb3B5OwotICAgICAgICBjb3B5LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJl
Y29yZHMpCi0gICAgICAgICAgICBjb3B5LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsK
LQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNvcHkpKTsKKyAgICAgICAgY2FsbGJhY2socmVz
dWx0LnZhbHVlKCkuZ2V0KCkucmVjb3JkcygpKTsKICAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6
OnB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJl
Y29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICByZWFk
Q2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgY2FjaGVJZGVudGlmaWVyLCByZWNvcmRzID0g
V1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVPckVy
cm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBb
dGhpcywgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVz
dWx0Lmhhc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKHJl
c3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBDYWNoZSYgY2FjaGUgPSByZXN1bHQudmFsdWUoKTsKLQotICAgICAgICBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyBvcHRpb25zOwotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHJlY29yZElk
ZW50aWZpZXJzOwotICAgICAgICByZWNvcmRJZGVudGlmaWVycy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHJlY29yZHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZWNvcmRz
KSB7Ci0gICAgICAgICAgICBhdXRvIG1hdGNoaW5nUmVjb3JkcyA9IEVuZ2luZTo6cXVlcnlDYWNo
ZShjYWNoZS5yZWNvcmRzLCByZWNvcmQucmVxdWVzdCwgb3B0aW9ucyk7Ci0gICAgICAgICAgICBp
ZiAobWF0Y2hpbmdSZWNvcmRzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHJlY29yZC5p
ZGVudGlmaWVyID0gKytjYWNoZS5uZXh0UmVjb3JkSWRlbnRpZmllcjsKLSAgICAgICAgICAgICAg
ICByZWNvcmRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLmlkZW50aWZpZXIpOwot
ICAgICAgICAgICAgICAgIGNhY2hlLnJlY29yZHMuYXBwZW5kKFdURk1vdmUocmVjb3JkKSk7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1h
dGNoaW5nUmVjb3Jkc1swXTsKLSAgICAgICAgICAgICAgICBhdXRvIHBvc2l0aW9uID0gY2FjaGUu
cmVjb3Jkcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0u
aWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocG9z
aXRpb24gIT0gbm90Rm91bmQpOwotICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiAhPSBub3RG
b3VuZCkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBleGlzdGluZ1JlY29yZCA9IGNhY2hl
LnJlY29yZHNbcG9zaXRpb25dOwotICAgICAgICAgICAgICAgICAgICByZWNvcmRJZGVudGlmaWVy
cy51bmNoZWNrZWRBcHBlbmQoaWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgICAgIGV4aXN0
aW5nUmVjb3JkLnJlc3BvbnNlSGVhZGVyc0d1YXJkID0gcmVjb3JkLnJlc3BvbnNlSGVhZGVyc0d1
YXJkOwotICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZSA9IFdURk1v
dmUocmVjb3JkLnJlc3BvbnNlKTsKLSAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdSZWNvcmQu
cmVzcG9uc2VCb2R5ID0gV1RGTW92ZShyZWNvcmQucmVzcG9uc2VCb2R5KTsKLSAgICAgICAgICAg
ICAgICAgICAgKytleGlzdGluZ1JlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHdyaXRlQ2FjaGVS
ZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRJZGVudGlmaWVycyksIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1
bHQpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKLSAg
ICAgICAgfSk7CisgICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgpLnB1dChXVEZNb3ZlKHJlY29y
ZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRW5naW5lOjpkZWxl
dGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlv
bnMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICByZWFkQ2Fj
aGUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgcmVh
ZENhY2hlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oQ2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQu
aGFzVmFsdWUoKSkgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0
LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1
dG8mIGN1cnJlbnRSZWNvcmRzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3JkczsKLQotICAg
ICAgICBhdXRvIHJlY29yZHNUb1JlbW92ZSA9IHF1ZXJ5Q2FjaGUoY3VycmVudFJlY29yZHMsIHJl
cXVlc3QsIG9wdGlvbnMpOwotICAgICAgICBpZiAocmVjb3Jkc1RvUmVtb3ZlLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIFZlY3RvcjxSZWNvcmQ+IHJlY29yZHNUb0tlZXA7Ci0gICAgICAgIGZv
ciAoYXV0byYgcmVjb3JkIDogY3VycmVudFJlY29yZHMpIHsKLSAgICAgICAgICAgIGlmIChyZWNv
cmRzVG9SZW1vdmUuZmluZE1hdGNoaW5nKFsmXShhdXRvIGl0ZW0pIHsgcmV0dXJuIGl0ZW0gPT0g
cmVjb3JkLmlkZW50aWZpZXI7IH0pID09IG5vdEZvdW5kKQotICAgICAgICAgICAgICAgIHJlY29y
ZHNUb0tlZXAuYXBwZW5kKHJlY29yZC5jb3B5KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJlbW92
ZUNhY2hlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3Jkc1RvUmVtb3ZlKSwg
W3RoaXMsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkc1RvS2VlcCA9IFdURk1vdmUocmVjb3Jkc1Rv
S2VlcCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZElkZW50aWZpZXJzT3JF
cnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVy
cm9yKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGF1dG8qIHdyaXR0ZW5DYWNoZSA9IGNhY2hlKGNhY2hlSWRlbnRpZmllcik7Ci0gICAg
ICAgICAgICBpZiAoIXdyaXR0ZW5DYWNoZSkgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1h
a2VVbmV4cGVjdGVkKEVycm9yOjpJbnRlcm5hbCkpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdyaXR0ZW5DYWNoZS0+cmVjb3JkcyA9IFdURk1v
dmUocmVjb3Jkc1RvS2VlcCk7Ci0KLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0
LnZhbHVlKCkpKTsKLSAgICAgICAgfSk7CisgICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgpLnJl
bW92ZShXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgfSk7CiB9CiAKQEAgLTMwNCwxOCArMjQzLDYgQEAgdm9pZCBFbmdpbmU6OnJlYWRD
YWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlQ2FsbGJhY2smJiBjYWxsYmFjaykK
ICAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlPiB7ICpjYWNoZSB9KTsK
IH0KIAotdm9pZCBFbmdpbmU6OndyaXRlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHNJZGVudGlmaWVycywgUmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd3Jp
dGluZy4KLSAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZHNJZGVudGlmaWVycykpOwotfQotCi12
b2lkIEVuZ2luZTo6cmVtb3ZlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
VmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHNJZGVudGlmaWVycywgUmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd3JpdGluZy4K
LSAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZHNJZGVudGlmaWVycykpOwotfQotCiBDYWNoZSog
RW5naW5lOjpjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAgQ2FjaGUqIHJl
c3VsdCA9IG51bGxwdHI7CkBAIC0zMjQsMjYgKzI1MSwxMyBAQCBDYWNoZSogRW5naW5lOjpjYWNo
ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fcmVtb3ZlZENhY2hl
cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRp
ZmllciA9PSBjYWNoZUlkZW50aWZpZXI7IH0pOworICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9y
ZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4g
aXRlbS5pZGVudGlmaWVyKCkgPT0gY2FjaGVJZGVudGlmaWVyOyB9KTsKICAgICAgICAgaWYgKHBv
c2l0aW9uICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgcmVzdWx0ID0gJm1fcmVtb3ZlZENhY2hl
c1twb3NpdGlvbl07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVZlY3Rvcjx1aW50
NjRfdD4gRW5naW5lOjpxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+JiByZWNvcmRzLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OkNh
Y2hlUXVlcnlPcHRpb25zJiBvcHRpb25zKQotewotICAgIGlmICghb3B0aW9ucy5pZ25vcmVNZXRo
b2QgJiYgcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCi0gICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICBWZWN0b3I8dWludDY0X3Q+IHJlc3VsdHM7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBy
ZWNvcmQgOiByZWNvcmRzKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpET01DYWNoZTo6cXVlcnlD
YWNoZU1hdGNoKHJlcXVlc3QsIHJlY29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2UsIG9wdGlv
bnMpKQotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVjb3JkLmlkZW50aWZpZXIpOwotICAg
IH0KLSAgICByZXR1cm4gcmVzdWx0czsKLX0KLQogdm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3JlOjpE
T01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFzaG91
bGRQZXJzaXN0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDkzYTc0YzFiMWE1NmJjNGQ5MjNmZDVh
MjhlYTVjNTUyOWRhNDc3ODEuLjI3YjBiZGZjNjliZjViN2I0MzM5NTIxOTM3NjUxZTVhNmZhMWQw
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtODMsMTEgKzgzLDYgQEAgcHJpdmF0ZToKICAgICB1c2lu
ZyBDYWNoZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlT3JFcnJvciYmKT47CiAg
ICAgdm9pZCByZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUNhbGxiYWNr
JiYpOwogCi0gICAgdm9pZCB3cml0ZUNhY2hlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZp
ZXJzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCByZW1vdmVDYWNoZVJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNv
cmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwotCi0gICAgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNh
Y2hlKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJik7
Ci0KICAgICBDYWNoZSogY2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAogICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWY8Q2FjaGVzPj4gbV9jYWNoZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmgKaW5kZXggOTY2YjUxNDRlYzdkYjFjN2E5YTE3YTQ2ZjZhM2MwZjRhMzNjMzAyZC4uZTMzYTk2
NzBmOWZlMWUwMWUxZjMxM2U1YzcxZThhMjhhZjE0M2Y5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuaApAQCAtMzMsMTEgKzMzLDMwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2Ug
Q2FjaGVTdG9yYWdlIHsKIAotc3RydWN0IENhY2hlIHsKLSAgICB1aW50NjRfdCBpZGVudGlmaWVy
IHsgMCB9OwotICAgIFN0cmluZyBuYW1lOwotICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6
UmVjb3JkPiByZWNvcmRzOwotICAgIHVpbnQ2NF90IG5leHRSZWNvcmRJZGVudGlmaWVyIHsgMCB9
OworY2xhc3MgQ2FjaGUgeworcHVibGljOgorICAgIENhY2hlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IFN0cmluZyYmIG5hbWUpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQorCisgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IHJl
Y29yZHMoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvIGluZm8oKSBj
b25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0KKworICAgIHZvaWQgcHV0
KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZTo6
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6
RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAg
VmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJik7CisKKyAgICB2b2lkIHdyaXRl
UmVjb3Jkc0xpc3QoV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAg
ICB2b2lkIHdyaXRlUmVjb3JkVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQmKTsKKyAg
ICB2b2lkIHJlbW92ZVJlY29yZEZyb21EaXNrKFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQmKTsK
KworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllciB7IDAgfTsKKyAgICBTdHJpbmcgbV9uYW1lOwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiBtX3JlY29yZHM7CisgICAgdWlu
dDY0X3QgbV9uZXh0UmVjb3JkSWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IENhY2hlU3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDkwZDZhMTA3
OWQ4OWJmODMyYWRjMmY3ZDFmNTU4YWFlZjRiODg0NTcuLjc2YTk2NTVmNjQ2Mzk2NjMxMTljZmQy
NDJkMDBjOTQwNWE3NmY2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTky
LDE3ICs5MiwxNyBAQCB2b2lkIENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAKIENhY2hlKiBDYWNoZXM6OmZpbmQoY29u
c3QgU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0
Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSA9PSBuYW1lOyB9
KTsKKyAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBh
dXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLm5hbWUoKSA9PSBuYW1lOyB9KTsKICAgICByZXR1cm4g
KHBvc2l0aW9uICE9IG5vdEZvdW5kKSA/ICZtX2NhY2hlc1twb3NpdGlvbl0gOiBudWxscHRyOwog
fQogCiBDYWNoZSogQ2FjaGVzOjpmaW5kKHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0
byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkg
eyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIGF1dG8gcG9z
aXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0uaWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7IH0pOwogICAgIGlmIChwb3NpdGlv
biAhPSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuICZtX2NhY2hlc1twb3NpdGlvbl07CiAKLSAg
ICBwb3NpdGlvbiA9IG1fcmVtb3ZlZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICBw
b3NpdGlvbiA9IG1fcmVtb3ZlZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0
ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7IH0pOwogICAgIHJl
dHVybiAocG9zaXRpb24gIT0gbm90Rm91bmQpID8gJm1fcmVtb3ZlZENhY2hlc1twb3NpdGlvbl0g
OiBudWxscHRyOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBDYWNoZXM6Om9wZW4oU3Ry
aW5nJiYgbmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICBBU1NF
UlQobV9lbmdpbmUpOwogCiAgICAgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyID0gbV9lbmdpbmUt
Pm5leHRDYWNoZUlkZW50aWZpZXIoKTsKLSAgICBtX2NhY2hlcy5hcHBlbmQoQ2FjaGUgeyBjYWNo
ZUlkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHsgfSwgMCB9KTsKKyAgICBtX2NhY2hlcy5hcHBl
bmQoQ2FjaGUgeyBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUobmFtZSkgfSk7CiAgICAgd3JpdGVD
YWNoZXNUb0Rpc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlSWRlbnRpZmll
cl0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChl
cnJvcikgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUo
KSkpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQ2FjaGVzOjpyZW1vdmUodWludDY0X3QgaWRl
bnRpZmllciwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1f
ZW5naW5lKTsKIAotICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZd
KGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVy
OyB9KTsKKyAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOyB9
KTsKIAogICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7CiAKQEAgLTE0Myw3ICsxNDMs
NyBAQCBzdGF0aWMgaW5saW5lIERhdGEgZW5jb2RlQ2FjaGVOYW1lcyhjb25zdCBWZWN0b3I8Q2Fj
aGU+JiBjYWNoZXMpCiAgICAgdWludDY0X3Qgc2l6ZSA9IGNhY2hlcy5zaXplKCk7CiAgICAgZW5j
b2RlciA8PCBzaXplOwogICAgIGZvciAoYXV0byYgY2FjaGUgOiBjYWNoZXMpCi0gICAgICAgIGVu
Y29kZXIgPDwgY2FjaGUubmFtZTsKKyAgICAgICAgZW5jb2RlciA8PCBjYWNoZS5uYW1lKCk7CiAK
ICAgICByZXR1cm4gRGF0YSB7IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgp
IH07CiB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlz
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3IKICAgICAg
ICAgVmVjdG9yPENhY2hlPiBjYWNoZXM7CiAgICAgICAgIGNhY2hlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHJlc3VsdC52YWx1ZSgpLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6
IHJlc3VsdC52YWx1ZSgpKQotICAgICAgICAgICAgY2FjaGVzLnVuY2hlY2tlZEFwcGVuZChDYWNo
ZSB7IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVyKCksIFdURk1vdmUobmFtZSksIHsgfSwg
MCB9KTsKKyAgICAgICAgICAgIGNhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGUgeyBtX2VuZ2lu
ZS0+bmV4dENhY2hlSWRlbnRpZmllcigpLCBXVEZNb3ZlKG5hbWUpIH0pOwogCiAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY2FjaGVzKSk7CiAgICAgfSk7CkBAIC0yMzksNyArMjM5LDcgQEAgVmVj
dG9yPENhY2hlSW5mbz4gQ2FjaGVzOjpjYWNoZUluZm9zKCkgY29uc3QKICAgICBWZWN0b3I8Q2Fj
aGVJbmZvPiBjYWNoZUluZm9zOwogICAgIGNhY2hlSW5mb3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtX2NhY2hlcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX2NhY2hlcykKLSAg
ICAgICAgY2FjaGVJbmZvcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRp
ZmllciwgY2FjaGUubmFtZSB9KTsKKyAgICAgICAgY2FjaGVJbmZvcy51bmNoZWNrZWRBcHBlbmQo
Q2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllcigpLCBjYWNoZS5uYW1lKCkgfSk7CiAgICAgcmV0
dXJuIGNhY2hlSW5mb3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDgzMWRiNzM3YjUwMmE3MDYyZThmZjI1YmEzZGJiMmFhZmQy
NGZmNTAuLjQ5ZDM3NTlhMThhN2Y5MDc5ZjcyZGU4Nzg2NDk3NGI1ZTdlNjMzNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODk5LDYg
Kzg5OSw3IEBACiAJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3
RUQyMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCAqLzsgfTsKIAkJNDE4
OTdFRDkxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFRDMx
RjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwICovOyB9
OwogCQk0MTg5N0VEQTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4
OTdFRDQxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCAq
LzsgfTsKKwkJNDFDODU4MUExRjUxMzZDQTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
Qzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi87
IH07CiAJCTQxRDEyOURBMUYzRDEwMTgwMEQxNUU0NyAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTI5
RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi87IH07CiAJ
CTQxREM0NTk2MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREM0NTk0MUUzRDZFMUUw
MEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuaCAqLzsgfTsKIAkJNDFEQzQ1OTcxRTNENkUy
MjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURDNDU5NTFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0
d29ya1JUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsKQEAgLTMxNzUsNiArMzE3Niw3IEBACiAJCTQxODk3
RUQ1MUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUQ2MUY0MTVEODYwMDE2RkE0MiAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBQzg2ODExRTA0MkU1MzAw
MzAzMDc0IC8qIFdlYlJUQ1Jlc29sdmVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbGlu
ZUVuZGluZyA9IDA7IG5hbWUgPSBXZWJSVENSZXNvbHZlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5l
dHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSAiPG5vbmU+IjsgfTsK
KwkJNDFDODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMTI5RDkxRjNEMTAx
NDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNhY2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
REM0NTk0MUUzRDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Byb3ZpZGVyLmg7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxREM0NTk1MUUzRDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1By
b3ZpZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIwMyw2ICs4MjA1LDcgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxODk3RUQ2MUY0MTVEODYwMDE2RkE0MiAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwICovLAogCQkJCTQxODk3RUQyMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmUuaCAqLywKKwkJCQk0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovLAogCQkJCTQxRkFCRDI4MUY0RERGREMwMDZBNkM5
NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oICovLAogCQkJCTQxMzVGQkNGMUY0RkI3RjIw
MDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwICovLAogCQkJCTQxMzVGQkQw
MUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLywKQEAgLTEw
NTk0LDYgKzEwNTk3LDcgQEAKIAkJCQk1MTdBNTMwQTFGNDc5RTM2MDBEQ0RDMEEgLyogV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0E1MkQ4MUY0M0E5REEw
MERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNDNTcxNUMxMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3RlbUludGVy
ZmFjZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxQzg1ODFBMUY1MTM2Q0EwMDY1RTA4NSAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTE4RTk5QjFG
Mjk1MjY2MDAzRUY5RjUgLyogV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzAzMzdERDgxMjdBNTFCNjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0QTMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRv
dWNoRXZlbnRJT1MuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319426</attachid>
            <date>2017-08-30 17:17:49 -0700</date>
            <delta_ts>2017-08-31 12:37:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176137-20170830171748.patch</filename>
            <type>text/plain</type>
            <size>27051</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJhOTA3ZDQzODA1ZmRiZjRi
NGYxZGYwOGRjMjkyMTM0MGZiZDAyOTYuLjQ0NGU5NjU3MmZmNmZmMTFlYzcxYjhkMzJhYWIxNzBk
ODgxZDVmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDIgQEAKIDIwMTctMDgtMzAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAgICAgIEludHJvZHVjZSBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZSB0byBoYW5kbGUgY2FjaGUgcmVjb3JkcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUgaXMg
dGhlIGVxdWl2YWxlbnQgb2YgV2ViQ29yZSBDYWNoZS4KKyAgICAgICAgSXQgY29udGFpbnMgYSBs
aXN0IG9mIHJlY29yZHMgdGhhdCBpdCBuZWVkcyB0byBtYW5hZ2UgKGFkZCwgdXBkYXRlLCByZW1v
dmUpLgorICAgICAgICBNb3ZpbmcgdGhlIGxvZ2ljIG9mIHRoaXMgbWFuYWdlbWVudCBmcm9tIENh
Y2hlU3RvcmFnZUVuZ2luZSB0byB0aGlzIG5ldyBjbGFzcyBzbyBhcyB0byBlYXNlIGZ1dHVyZSBk
ZXZlbG9wbWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6cHV0UmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
OjpkZWxldGVNYXRjaGluZ1JlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
d3JpdGVDYWNoZVJlY29yZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVtb3ZlQ2FjaGVSZWNvcmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnF1ZXJ5Q2FjaGUpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDogQWRkZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaDoK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6aWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6Om5hbWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjppbmZvIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6ZmluZCk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpDYWNoZXM6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
ZW5jb2RlQ2FjaGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVz
OjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlczo6Y2FjaGVJbmZvcyBjb25zdCk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKKzIwMTctMDgtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCiAgICAgICAgIFtDYWNoZSBBUEldIFN1cHBvcnQgY2FjaGUgbmFtZXMgcGVyc2lzdGVu
Y3kKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk5
NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAyNGQ2MzY3NzQzYzY0OTE1MmYzMjliZTVlYmMzZDMy
ZTM2MjdmODE1Li45NmFhNGQ0MjI3YWEwMWE3MDllZjEzYzc0ZmZlZjk4NWZlYmMwOGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQKQEAgLTExNyw2ICsxMTcsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGE0NWY3M2YwMDljOWIxYzBiNzgwNWVkOTk1
YjMyNmJkNzYwMDA5NmIuLjRmM2YyMmZjZDEzODlmMmYyYWJiNDVlNDYyZDczZGJhMDI0Zjg4M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBFbmdpbmU6Om9wZW4o
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50
aWZpZXIKICAgICAgICAgQ2FjaGVzJiBjYWNoZXMgPSBjYWNoZXNPckVycm9yLnZhbHVlKCk7CiAK
ICAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0gY2FjaGVzLmZpbmQoY2FjaGVOYW1lKSkgewotICAg
ICAgICAgICAgY2FsbGJhY2soY2FjaGUtPmlkZW50aWZpZXIpOworICAgICAgICAgICAgY2FsbGJh
Y2soY2FjaGUtPmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgRW5naW5lOjpyZW1vdmUodWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrCiAgICAgICAgIH0K
ICAgICB9CiAgICAgaWYgKCFjYWNoZXNUb01vZGlmeSkgewotICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyBy
ZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7CisgICAgICAgIGF1
dG8gcG9zaXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRv
JiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIoKSA9PSBjYWNoZUlkZW50aWZpZXI7IH0p
OwogICAgICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIGNhbGxi
YWNrKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpJbnRlcm5hbCkpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTQ1LDkzICsxNDUsMzIgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWMKICAgICAgICAg
ICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IFBhc3MgcmVjb3JkcyBieSBy
ZWZlcmVuY2UuCi0gICAgICAgIGF1dG8mIHJlY29yZHMgPSByZXN1bHQudmFsdWUoKS5nZXQoKS5y
ZWNvcmRzOwogCi0gICAgICAgIFZlY3RvcjxSZWNvcmQ+IGNvcHk7Ci0gICAgICAgIGNvcHkucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYg
cmVjb3JkIDogcmVjb3JkcykKLSAgICAgICAgICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKHJlY29y
ZC5jb3B5KCkpOwotCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY29weSkpOworICAgICAgICBj
YWxsYmFjayhyZXN1bHQudmFsdWUoKS5nZXQoKS5yZWNvcmRzKCkpOwogICAgIH0pOwogfQogCiB2
b2lkIEVuZ2luZTo6cHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxS
ZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewotICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBjYWNoZUlkZW50aWZpZXIs
IHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIHJlYWRDYWNoZShjYWNoZUlk
ZW50aWZpZXIsIFt0aGlzLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVu
ZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIENhY2hlJiBjYWNoZSA9IHJlc3VsdC52YWx1ZSgpOwotCi0gICAgICAgIFdl
YkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnM7Ci0gICAgICAgIFZlY3Rvcjx1aW50NjRf
dD4gcmVjb3JkSWRlbnRpZmllcnM7Ci0gICAgICAgIHJlY29yZElkZW50aWZpZXJzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJlY29y
ZCA6IHJlY29yZHMpIHsKLSAgICAgICAgICAgIGF1dG8gbWF0Y2hpbmdSZWNvcmRzID0gRW5naW5l
OjpxdWVyeUNhY2hlKGNhY2hlLnJlY29yZHMsIHJlY29yZC5yZXF1ZXN0LCBvcHRpb25zKTsKLSAg
ICAgICAgICAgIGlmIChtYXRjaGluZ1JlY29yZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAg
ICAgcmVjb3JkLmlkZW50aWZpZXIgPSArK2NhY2hlLm5leHRSZWNvcmRJZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgIHJlY29yZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuaWRl
bnRpZmllcik7Ci0gICAgICAgICAgICAgICAgY2FjaGUucmVjb3Jkcy5hcHBlbmQoV1RGTW92ZShy
ZWNvcmQpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpZGVu
dGlmaWVyID0gbWF0Y2hpbmdSZWNvcmRzWzBdOwotICAgICAgICAgICAgICAgIGF1dG8gcG9zaXRp
b24gPSBjYWNoZS5yZWNvcmRzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyBy
ZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOwotICAgICAgICAgICAgICAg
IEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBvc2l0
aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8mIGV4aXN0aW5nUmVj
b3JkID0gY2FjaGUucmVjb3Jkc1twb3NpdGlvbl07Ci0gICAgICAgICAgICAgICAgICAgIHJlY29y
ZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChpZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAg
ICAgICAgZXhpc3RpbmdSZWNvcmQucmVzcG9uc2VIZWFkZXJzR3VhcmQgPSByZWNvcmQucmVzcG9u
c2VIZWFkZXJzR3VhcmQ7Ci0gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUmVjb3JkLnJlc3Bv
bnNlID0gV1RGTW92ZShyZWNvcmQucmVzcG9uc2UpOwotICAgICAgICAgICAgICAgICAgICBleGlz
dGluZ1JlY29yZC5yZXNwb25zZUJvZHkgPSBXVEZNb3ZlKHJlY29yZC5yZXNwb25zZUJvZHkpOwot
ICAgICAgICAgICAgICAgICAgICArK2V4aXN0aW5nUmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRl
cjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
d3JpdGVDYWNoZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZElkZW50aWZp
ZXJzKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZElkZW50aWZpZXJzT3JF
cnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJl
c3VsdCkpOwotICAgICAgICB9KTsKKyAgICAgICAgcmVzdWx0LnZhbHVlKCkuZ2V0KCkucHV0KFdU
Rk1vdmUocmVjb3JkcyksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAogdm9pZCBF
bmdpbmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zJiYgb3B0aW9ucywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewot
ICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBjYWNoZUlkZW50aWZpZXIsIHJl
cXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBp
ZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBl
Y3RlZChyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgYXV0byYgY3VycmVudFJlY29yZHMgPSByZXN1bHQudmFsdWUoKS5nZXQoKS5yZWNv
cmRzOwotCi0gICAgICAgIGF1dG8gcmVjb3Jkc1RvUmVtb3ZlID0gcXVlcnlDYWNoZShjdXJyZW50
UmVjb3JkcywgcmVxdWVzdCwgb3B0aW9ucyk7Ci0gICAgICAgIGlmIChyZWNvcmRzVG9SZW1vdmUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh7IH0pOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgVmVjdG9yPFJlY29yZD4gcmVjb3Jkc1RvS2VlcDsK
LSAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBjdXJyZW50UmVjb3JkcykgewotICAgICAgICAg
ICAgaWYgKHJlY29yZHNUb1JlbW92ZS5maW5kTWF0Y2hpbmcoWyZdKGF1dG8gaXRlbSkgeyByZXR1
cm4gaXRlbSA9PSByZWNvcmQuaWRlbnRpZmllcjsgfSkgPT0gbm90Rm91bmQpCi0gICAgICAgICAg
ICAgICAgcmVjb3Jkc1RvS2VlcC5hcHBlbmQocmVjb3JkLmNvcHkoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmVtb3ZlQ2FjaGVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRz
VG9SZW1vdmUpLCBbdGhpcywgY2FjaGVJZGVudGlmaWVyLCByZWNvcmRzVG9LZWVwID0gV1RGTW92
ZShyZWNvcmRzVG9LZWVwKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3JkSWRl
bnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghcmVz
dWx0Lmhhc1ZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChyZXN1bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgYXV0byogd3JpdHRlbkNhY2hlID0gY2FjaGUoY2FjaGVJZGVudGlm
aWVyKTsKLSAgICAgICAgICAgIGlmICghd3JpdHRlbkNhY2hlKSB7Ci0gICAgICAgICAgICAgICAg
Y2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkludGVybmFsKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd3JpdHRlbkNhY2hlLT5yZWNv
cmRzID0gV1RGTW92ZShyZWNvcmRzVG9LZWVwKTsKLQotICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXN1bHQudmFsdWUoKSkpOwotICAgICAgICB9KTsKKyAgICAgICAgcmVzdWx0LnZhbHVl
KCkuZ2V0KCkucmVtb3ZlKFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFdURk1v
dmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIApAQCAtMzA0LDE4ICsyNDMsNiBAQCB2b2lkIEVu
Z2luZTo6cmVhZENhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVDYWxsYmFjayYm
IGNhbGxiYWNrKQogICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGU+IHsg
KmNhY2hlIH0pOwogfQogCi12b2lkIEVuZ2luZTo6d3JpdGVDYWNoZVJlY29yZHModWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3Jkc0lkZW50aWZpZXJzLCBS
ZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudCB3cml0aW5nLgotICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3Jkc0lkZW50aWZpZXJz
KSk7Ci19Ci0KLXZvaWQgRW5naW5lOjpyZW1vdmVDYWNoZVJlY29yZHModWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3Jkc0lkZW50aWZpZXJzLCBSZWNvcmRJ
ZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVu
dCB3cml0aW5nLgotICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3Jkc0lkZW50aWZpZXJzKSk7Ci19
Ci0KIENhY2hlKiBFbmdpbmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAg
ICBDYWNoZSogcmVzdWx0ID0gbnVsbHB0cjsKQEAgLTMyNCwyNiArMjUxLDEzIEBAIENhY2hlKiBF
bmdpbmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKICAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9y
ZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4g
aXRlbS5pZGVudGlmaWVyID09IGNhY2hlSWRlbnRpZmllcjsgfSk7CisgICAgICAgIGF1dG8gcG9z
aXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVt
KSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIoKSA9PSBjYWNoZUlkZW50aWZpZXI7IH0pOwogICAg
ICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXN1bHQgPSAmbV9y
ZW1vdmVkQ2FjaGVzW3Bvc2l0aW9uXTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
VmVjdG9yPHVpbnQ2NF90PiBFbmdpbmU6OnF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9yPFJlY29yZD4m
IHJlY29yZHMsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgaWYgKCFvcHRpb25z
Lmlnbm9yZU1ldGhvZCAmJiByZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikKLSAgICAgICAg
cmV0dXJuIHsgfTsKLQotICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVzdWx0czsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIHJlY29yZCA6IHJlY29yZHMpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OkRPTUNh
Y2hlOjpxdWVyeUNhY2hlTWF0Y2gocmVxdWVzdCwgcmVjb3JkLnJlcXVlc3QsIHJlY29yZC5yZXNw
b25zZSwgb3B0aW9ucykpCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZWNvcmQuaWRlbnRp
Zmllcik7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHRzOwotfQotCiB2b2lkIEVuZ2luZTo6d3Jp
dGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEs
IFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICBpZiAoIXNob3VsZFBlcnNpc3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5kZXggOTNhNzRjMWIxYTU2
YmM0ZDkyM2ZkNWEyOGVhNWM1NTI5ZGE0Nzc4MS4uMjdiMGJkZmM2OWJmNWI3YjQzMzk1MjE5Mzc2
NTFlNWE2ZmExZDBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC04MywxMSArODMsNiBAQCBwcml2YXRl
OgogICAgIHVzaW5nIENhY2hlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVPckVy
cm9yJiYpPjsKICAgICB2b2lkIHJlYWRDYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENh
Y2hlQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHdyaXRlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBXZWJDb3JlOjpET01DYWNoZTo6UmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKLSAgICB2b2lkIHJlbW92ZUNhY2hlUmVjb3Jkcyh1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgV2ViQ29yZTo6RE9N
Q2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7Ci0KLSAgICBWZWN0b3I8dWludDY0
X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnMmKTsKLQogICAgIENhY2hlKiBjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIp
OwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxDYWNoZXM+PiBtX2NhY2hlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTllMTJkOTdkMTllOThkZjk2NTNlNGZkOTli
ZWUwZGYzZGI4NTdhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKKworI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUtleS5oIgor
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5
T3B0aW9ucy5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29k
ZXJzLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KKworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OjpET01DYWNoZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgeworCitDYWNoZTo6Q2Fj
aGUodWludDY0X3QgaWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSkKKyAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQorICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCit7Cit9CisKK1ZlY3Rv
cjxSZWNvcmQ+IENhY2hlOjpyZWNvcmRzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVjb3JkPiBy
ZWNvcmRzOworICAgIHJlY29yZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3JlY29yZHMuc2l6
ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykKKyAgICAgICAgcmVjb3Jk
cy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLmNvcHkoKSk7CisgICAgcmV0dXJuIHJlY29yZHM7Cit9
CisKK3ZvaWQgQ2FjaGU6OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBib29sIHNob3VsZFdyaXRlUmVjb3Jk
TGlzdCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMgb3B0aW9uczsK
KyAgICBWZWN0b3I8dWludDY0X3Q+IHJlY29yZElkZW50aWZpZXJzOworICAgIHJlY29yZElkZW50
aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOworICAgIGZvciAo
YXV0byYgcmVjb3JkIDogcmVjb3JkcykgeworICAgICAgICBhdXRvIG1hdGNoaW5nUmVjb3JkcyA9
IHF1ZXJ5Q2FjaGUocmVjb3JkLnJlcXVlc3QsIG9wdGlvbnMpOworICAgICAgICBpZiAobWF0Y2hp
bmdSZWNvcmRzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmVjb3JkLmlkZW50aWZpZXIgPSAr
K21fbmV4dFJlY29yZElkZW50aWZpZXI7CisgICAgICAgICAgICByZWNvcmRJZGVudGlmaWVycy51
bmNoZWNrZWRBcHBlbmQocmVjb3JkLmlkZW50aWZpZXIpOworICAgICAgICAgICAgbV9yZWNvcmRz
LmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOworCisgICAgICAgICAgICBzaG91bGRXcml0ZVJlY29y
ZExpc3QgPSB0cnVlOworICAgICAgICAgICAgd3JpdGVSZWNvcmRUb0Rpc2sobV9yZWNvcmRzLmxh
c3QoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBt
YXRjaGluZ1JlY29yZHNbMF07CisgICAgICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9yZWNvcmRz
LmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlm
aWVyID09IGlkZW50aWZpZXI7IH0pOworICAgICAgICAgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5v
dEZvdW5kKTsKKyAgICAgICAgICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgeworICAgICAg
ICAgICAgICAgIGF1dG8mIGV4aXN0aW5nUmVjb3JkID0gbV9yZWNvcmRzW3Bvc2l0aW9uXTsKKyAg
ICAgICAgICAgICAgICByZWNvcmRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoaWRlbnRpZmll
cik7CisgICAgICAgICAgICAgICAgZXhpc3RpbmdSZWNvcmQucmVzcG9uc2VIZWFkZXJzR3VhcmQg
PSByZWNvcmQucmVzcG9uc2VIZWFkZXJzR3VhcmQ7CisgICAgICAgICAgICAgICAgZXhpc3RpbmdS
ZWNvcmQucmVzcG9uc2UgPSBXVEZNb3ZlKHJlY29yZC5yZXNwb25zZSk7CisgICAgICAgICAgICAg
ICAgZXhpc3RpbmdSZWNvcmQucmVzcG9uc2VCb2R5ID0gV1RGTW92ZShyZWNvcmQucmVzcG9uc2VC
b2R5KTsKKyAgICAgICAgICAgICAgICArK2V4aXN0aW5nUmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291
bnRlcjsKKworICAgICAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKGV4aXN0aW5nUmVjb3Jk
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghc2hvdWxkV3Jp
dGVSZWNvcmRMaXN0KSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3JkSWRlbnRpZmll
cnMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3cml0ZVJlY29yZHNMaXN0KFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZWNvcmRJZGVudGlmaWVycyA9IFdURk1vdmUocmVj
b3JkSWRlbnRpZmllcnMpXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShyZWNvcmRJZGVudGlmaWVycykpOworICAgIH0pOworfQorCit2
b2lkIENhY2hlOjpyZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vi
Q29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgYXV0byByZWNvcmRJZGVudGlmaWVycyA9IHF1ZXJ5Q2Fj
aGUocmVxdWVzdCwgb3B0aW9ucyk7CisgICAgaWYgKHJlY29yZElkZW50aWZpZXJzLmlzRW1wdHko
KSkgeworICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgVmVjdG9yPFJlY29yZD4gcmVjb3Jkc1RvS2VlcDsKKyAgICBmb3IgKGF1dG8mIHJlY29yZCA6
IG1fcmVjb3JkcykgeworICAgICAgICBpZiAocmVjb3JkSWRlbnRpZmllcnMuZmluZE1hdGNoaW5n
KFsmXShhdXRvIGl0ZW0pIHsgcmV0dXJuIGl0ZW0gPT0gcmVjb3JkLmlkZW50aWZpZXI7IH0pID09
IG5vdEZvdW5kKQorICAgICAgICAgICAgcmVjb3Jkc1RvS2VlcC5hcHBlbmQoV1RGTW92ZShyZWNv
cmQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlUmVjb3JkRnJvbURpc2socmVj
b3JkKTsKKyAgICB9CisgICAgbV9yZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzVG9LZWVwKTsKKwor
ICAgIHdyaXRlUmVjb3Jkc0xpc3QoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlY29y
ZElkZW50aWZpZXJzID0gV1RGTW92ZShyZWNvcmRJZGVudGlmaWVycyldKHN0ZDo6b3B0aW9uYWw8
RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZElkZW50
aWZpZXJzKSk7CisgICAgfSk7Cit9CisKK1ZlY3Rvcjx1aW50NjRfdD4gQ2FjaGU6OnF1ZXJ5Q2Fj
aGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9u
cyYgb3B0aW9ucykKK3sKKyAgICBpZiAoIW9wdGlvbnMuaWdub3JlTWV0aG9kICYmIHJlcXVlc3Qu
aHR0cE1ldGhvZCgpICE9ICJHRVQiKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9y
PHVpbnQ2NF90PiByZXN1bHRzOworICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkIDogbV9yZWNv
cmRzKSB7CisgICAgICAgIGlmIChXZWJDb3JlOjpET01DYWNoZTo6cXVlcnlDYWNoZU1hdGNoKHJl
cXVlc3QsIHJlY29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2UsIG9wdGlvbnMpKQorICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVjb3JkLmlkZW50aWZpZXIpOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0czsKK30KKwordm9pZCBDYWNoZTo6d3JpdGVSZWNvcmRzTGlzdChDb21wbGV0aW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisg
ICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKK30KKwordm9pZCBDYWNoZTo6d3JpdGVSZWNvcmRU
b0Rpc2soUmVjb3JkJiByZWNvcmQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgor
fQorCit2b2lkIENhY2hlOjpyZW1vdmVSZWNvcmRGcm9tRGlzayhSZWNvcmQmIHJlY29yZCkKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCit9CisKK30gLy8gbmFtZXNwYWNlIENhY2hl
U3RvcmFnZQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaApp
bmRleCA5NjZiNTE0NGVjN2RiMWM3YTlhMTdhNDZmNmEzYzBmNGEzM2MzMDJkLi5lMzNhOTY3MGY5
ZmUxZTAxZTFmMzEzZTVjNzFlOGEyOGFmMTQzZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
CkBAIC0zMywxMSArMzMsMzAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBDYWNo
ZVN0b3JhZ2UgewogCi1zdHJ1Y3QgQ2FjaGUgewotICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgeyAw
IH07Ci0gICAgU3RyaW5nIG5hbWU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNv
cmQ+IHJlY29yZHM7Ci0gICAgdWludDY0X3QgbmV4dFJlY29yZElkZW50aWZpZXIgeyAwIH07Citj
bGFzcyBDYWNoZSB7CitwdWJsaWM6CisgICAgQ2FjaGUodWludDY0X3QgaWRlbnRpZmllciwgU3Ry
aW5nJiYgbmFtZSk7CisKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyOyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4gcmVjb3Jk
cygpIGNvbnN0OworICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUluZm8gaW5mbygpIGNvbnN0
IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQorCisgICAgdm9pZCBwdXQoVmVj
dG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNv
cmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01D
YWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKworcHJpdmF0ZToKKyAgICBWZWN0
b3I8dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmKTsKKworICAgIHZvaWQgd3JpdGVSZWNv
cmRzTGlzdChXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworICAgIHZv
aWQgd3JpdGVSZWNvcmRUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZCYpOworICAgIHZv
aWQgcmVtb3ZlUmVjb3JkRnJvbURpc2soV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZCYpOworCisg
ICAgdWludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OworICAgIFN0cmluZyBtX25hbWU7CisgICAg
VmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IG1fcmVjb3JkczsKKyAgICB1aW50NjRf
dCBtX25leHRSZWNvcmRJZGVudGlmaWVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQ2Fj
aGVTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggOTBkNmExMDc5ZDg5
YmY4MzJhZGMyZjdkMWY1NThhYWVmNGI4ODQ1Ny4uNzZhOTY1NWY2NDYzOTY2MzExOWNmZDI0MmQw
MGM5NDA1YTc2ZjY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtOTIsMTcg
KzkyLDE3IEBAIHZvaWQgQ2FjaGVzOjppbml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlOjpDb21w
bGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogQ2FjaGUqIENhY2hlczo6ZmluZChjb25zdCBT
dHJpbmcmIG5hbWUpCiB7Ci0gICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGlu
ZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5uYW1lID09IG5hbWU7IH0pOwor
ICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSgpID09IG5hbWU7IH0pOwogICAgIHJldHVybiAocG9z
aXRpb24gIT0gbm90Rm91bmQpID8gJm1fY2FjaGVzW3Bvc2l0aW9uXSA6IG51bGxwdHI7CiB9CiAK
IENhY2hlKiBDYWNoZXM6OmZpbmQodWludDY0X3QgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHBv
c2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJl
dHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgYXV0byBwb3NpdGlv
biA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4g
aXRlbS5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcjsgfSk7CiAgICAgaWYgKHBvc2l0aW9uICE9
IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gJm1fY2FjaGVzW3Bvc2l0aW9uXTsKIAotICAgIHBv
c2l0aW9uID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRl
bSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIHBvc2l0
aW9uID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkg
eyByZXR1cm4gaXRlbS5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcjsgfSk7CiAgICAgcmV0dXJu
IChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyAmbV9yZW1vdmVkQ2FjaGVzW3Bvc2l0aW9uXSA6IG51
bGxwdHI7CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIENhY2hlczo6b3BlbihTdHJpbmcm
JiBuYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIEFTU0VSVCht
X2VuZ2luZSk7CiAKICAgICB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIgPSBtX2VuZ2luZS0+bmV4
dENhY2hlSWRlbnRpZmllcigpOwotICAgIG1fY2FjaGVzLmFwcGVuZChDYWNoZSB7IGNhY2hlSWRl
bnRpZmllciwgV1RGTW92ZShuYW1lKSwgeyB9LCAwIH0pOworICAgIG1fY2FjaGVzLmFwcGVuZChD
YWNoZSB7IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSB9KTsKICAgICB3cml0ZUNhY2hl
c1RvRGlzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2FjaGVJZGVudGlmaWVyXShz
dGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBDYWNoZXM6OnJlbW92ZSh1aW50NjRfdCBpZGVudGlm
aWVyLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQobV9lbmdp
bmUpOwogCi0gICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29u
c3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0p
OworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1
dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7IH0pOwog
CiAgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5vdEZvdW5kKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBA
IHN0YXRpYyBpbmxpbmUgRGF0YSBlbmNvZGVDYWNoZU5hbWVzKGNvbnN0IFZlY3RvcjxDYWNoZT4m
IGNhY2hlcykKICAgICB1aW50NjRfdCBzaXplID0gY2FjaGVzLnNpemUoKTsKICAgICBlbmNvZGVy
IDw8IHNpemU7CiAgICAgZm9yIChhdXRvJiBjYWNoZSA6IGNhY2hlcykKLSAgICAgICAgZW5jb2Rl
ciA8PCBjYWNoZS5uYW1lOworICAgICAgICBlbmNvZGVyIDw8IGNhY2hlLm5hbWUoKTsKIAogICAg
IHJldHVybiBEYXRhIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfTsK
IH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENhY2hlczo6cmVhZENhY2hlc0Zyb21EaXNrKFdU
Rjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcgogICAgICAgICBW
ZWN0b3I8Q2FjaGU+IGNhY2hlczsKICAgICAgICAgY2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocmVzdWx0LnZhbHVlKCkuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogcmVz
dWx0LnZhbHVlKCkpCi0gICAgICAgICAgICBjYWNoZXMudW5jaGVja2VkQXBwZW5kKENhY2hlIHsg
bV9lbmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKSwgV1RGTW92ZShuYW1lKSwgeyB9LCAwIH0p
OworICAgICAgICAgICAgY2FjaGVzLnVuY2hlY2tlZEFwcGVuZChDYWNoZSB7IG1fZW5naW5lLT5u
ZXh0Q2FjaGVJZGVudGlmaWVyKCksIFdURk1vdmUobmFtZSkgfSk7CiAKICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShjYWNoZXMpKTsKICAgICB9KTsKQEAgLTIzOSw3ICsyMzksNyBAQCBWZWN0b3I8
Q2FjaGVJbmZvPiBDYWNoZXM6OmNhY2hlSW5mb3MoKSBjb25zdAogICAgIFZlY3RvcjxDYWNoZUlu
Zm8+IGNhY2hlSW5mb3M7CiAgICAgY2FjaGVJbmZvcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
Y2FjaGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjYWNoZSA6IG1fY2FjaGVzKQotICAgICAg
ICBjYWNoZUluZm9zLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVudGlmaWVy
LCBjYWNoZS5uYW1lIH0pOworICAgICAgICBjYWNoZUluZm9zLnVuY2hlY2tlZEFwcGVuZChDYWNo
ZUluZm8geyBjYWNoZS5pZGVudGlmaWVyKCksIGNhY2hlLm5hbWUoKSB9KTsKICAgICByZXR1cm4g
Y2FjaGVJbmZvczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODMxZGI3MzdiNTAyYTcwNjJlOGZmMjViYTNkYmIyYWFmZDI0ZmY1
MC4uMGU3Y2EzNjc2NGU1NGNlYTFkYTM4MjY2OTU3YWVkZWMzY2FhYjE3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5
LDcgQEAKIAkJNDE4OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFRDIx
RjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oICovOyB9OwogCQk0MTg5N0VE
OTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5N0VEMzFGNDE1
RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJ
CTQxODk3RURBMUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5N0VE
NDFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oICovOyB9
OworCQk0MUM4NTgxQTFGNTEzNkNBMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDODU4
MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCAqLzsgfTsK
IAkJNDFEMTI5REExRjNEMTAxODAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxMjlEOTFG
M0QxMDE0MDBEMTVFNDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLzsgfTsKIAkJNDFE
QzQ1OTYxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEQzQ1OTQxRTNENkUxRTAwQjEx
RjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5oICovOyB9OwogCQk0MURDNDU5NzFFM0Q2RTIyMDBC
MTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREM0NTk1MUUzRDZFMUUwMEIxMUY1MSAvKiBOZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwICovOyB9OwpAQCAtMzE3NSw2ICszMTc2LDcgQEAKIAkJNDE4OTdFRDUx
RjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFRDYxRjQxNUQ4NjAwMTZGQTQyIC8qIENhY2hl
U3RvcmFnZUVuZ2luZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUFDODY4MTFFMDQyRTUzMDAzMDMw
NzQgLyogV2ViUlRDUmVzb2x2ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBsaW5lRW5k
aW5nID0gMDsgbmFtZSA9IFdlYlJUQ1Jlc29sdmVyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29y
ay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9ICI8bm9uZT4iOyB9OworCQk0
MUM4NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQxMjlEOTFGM0QxMDE0MDBE
MTVFNDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2Fj
aGVTdG9yYWdlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1
OTQxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUHJvdmlkZXIuaDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFEQzQ1OTUxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjAzLDYgKzgyMDUsNyBAQAogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJNDE4OTdFRDYxRjQxNUQ4NjAwMTZGQTQyIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZS5jcHAgKi8sCiAJCQkJNDE4OTdFRDIxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3Rv
cmFnZUVuZ2luZS5oICovLAorCQkJCTQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8sCiAJCQkJNDFGQUJEMjgxRjREREZEQzAwNkE2Qzk3IC8q
IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggKi8sCiAJCQkJNDEzNUZCQ0YxRjRGQjdGMjAwNzRD
NDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi8sCiAJCQkJNDEzNUZCRDAxRjRG
QjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICovLApAQCAtOTk5Niw2
ICs5OTk5LDcgQEAKIAkJCQlFMTcwODc2QjE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMTg2MzgxNjdEMDcxRTAwQTFBODVBIC8q
IENhY2hlTW9kZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4OTdFRDcxRjQxNUQ4QTAwMTZG
QTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUM4NTgx
QTFGNTEzNkNBMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzNUZCRDExRjRGQjgwOTAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg5N0VEOTFGNDE1RDhBMDAxNkZBNDIg
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319500</attachid>
            <date>2017-08-31 12:37:38 -0700</date>
            <delta_ts>2017-08-31 13:36:36 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-176137-20170831123738.patch</filename>
            <type>text/plain</type>
            <size>27582</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiNmIyZDljZTM3OGUxOTVi
YjQwNTlmNDVkODJlOWMwNzkzZTA4MTUuLjYyNGNlNDVkOGM1NDFjYTQ3MWEzYWI4YzMzZDY0MGFj
MDExNzIzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTctMDgtMzEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZSB0byBoYW5kbGUgY2FjaGUgcmVjb3JkcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZSBp
cyB0aGUgZXF1aXZhbGVudCBvZiBXZWJDb3JlIENhY2hlLgorICAgICAgICBJdCBjb250YWlucyBh
IGxpc3Qgb2YgcmVjb3JkcyB0aGF0IGl0IG5lZWRzIHRvIG1hbmFnZSAoYWRkLCB1cGRhdGUsIHJl
bW92ZSkuCisgICAgICAgIE1vdmluZyB0aGUgbG9naWMgb2YgdGhpcyBtYW5hZ2VtZW50IGZyb20g
Q2FjaGVTdG9yYWdlRW5naW5lIHRvIHRoaXMgbmV3IGNsYXNzIHNvIGFzIHRvIGVhc2UgZnV0dXJl
IGRldmVsb3BtZW50LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpwdXRSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
Ojp3cml0ZUNhY2hlUmVjb3Jkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpyZW1vdmVDYWNoZVJlY29yZHMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cXVlcnlDYWNoZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjppZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6bmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmluZm8gY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpmaW5kKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlczo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjplbmNvZGVDYWNoZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6OnJlYWRDYWNoZXNGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGVzOjpjYWNoZUluZm9zIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNy0wOC0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2
YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBkaWRDbGlja0F1dG9GaWxsQnV0dG9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWYy
ZTM1NGI1YzM0YTY5OWMzZmEyZjc3MzJkZGViOTYwYjgxODcyNi4uYjE5OGU4ZjI0NDZkNTcyNTc2
YzFiYzE1OGY1ZmJkYzFiNDY2MGQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE4MzcsNyArMzE4MzcsNiBAQAogCQkJCUE4
NzFERTI1MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSGVhZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThFQTdDQUUwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxIZWFkaW5nRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0NCMzBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTEhS
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDFGQTlCOTFGNTc1OEZGMDAzMzg1OEEg
LyogUmVuZGVyVHJlZVVwZGF0ZXJNdWx0aUNvbHVtbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODcxREUyNjBBMTUyQUM4MDBCMTJBNjggLyogSFRNTEh0bWxFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4NzFERTI0MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSUZyYW1lRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0QzMTBBMTkzODU1MDBBOEVGNUYgLyogSFRNTElt
YWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNDQ0LDYgKzMzNDQzLDcgQEAKIAkJ
CQlFNDgyODQwODFGNDQ1OTRDMDA4NjNBQzMgLyogUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDhFMzMzMTFGNDc0MzcwMDBCQUIwRUYgLyogUmVu
ZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0
OEUzMzJEMUY0NzAzODAwMEJBQjBFRiAvKiBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUU0MUZBOUI5MUY1NzU4RkYwMDMzODU4QSAvKiBSZW5kZXJUcmVl
VXBkYXRlck11bHRpQ29sdW1uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDUxMENENjhB
MzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg2
NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
RTIwNTA3RDE4QTQ1OEJGMDA4MDY0N0UgLyogUmVuZGVyVlRUQ3VlLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKaW5kZXggMjRkNjM2Nzc0M2M2NDkxNTJmMzI5YmU1ZWJjM2QzMmUz
NjI3ZjgxNS4uOTZhYTRkNDIyN2FhMDFhNzA5ZWYxM2M3NGZmZWY5ODVmZWJjMDhkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CkBAIC0xMTcsNiArMTE3LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAg
IE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCAwMDEwNTEwZTg3MDM2MWIzNTY5YWIwMTBkYzY5
ZGY3MjZjMTJlOTgzLi4zMDA4MWExZDcwMmExNzA0NjZiNDQ5MzEyYmM2YjM1MWZkMjA0YTFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgRW5naW5lOjpvcGVuKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlm
aWVyCiAgICAgICAgIENhY2hlcyYgY2FjaGVzID0gY2FjaGVzT3JFcnJvci52YWx1ZSgpOwogCiAg
ICAgICAgIGlmIChhdXRvKiBjYWNoZSA9IGNhY2hlcy5maW5kKGNhY2hlTmFtZSkpIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKGNhY2hlLT5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KGNhY2hlLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTE0Niw5MyArMTQ2LDMyIEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjCiAgICAgICAgICAg
ICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBQYXNzIHJlY29yZHMgYnkgcmVm
ZXJlbmNlLgotICAgICAgICBhdXRvJiByZWNvcmRzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVj
b3JkczsKIAotICAgICAgICBWZWN0b3I8UmVjb3JkPiBjb3B5OwotICAgICAgICBjb3B5LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJl
Y29yZCA6IHJlY29yZHMpCi0gICAgICAgICAgICBjb3B5LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQu
Y29weSgpKTsKLQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNvcHkpKTsKKyAgICAgICAgY2Fs
bGJhY2socmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3JkcygpKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBFbmdpbmU6OnB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVj
b3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
LSAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgY2FjaGVJZGVudGlmaWVyLCBy
ZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Q2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICByZWFkQ2FjaGUoY2FjaGVJZGVu
dGlmaWVyLCBbdGhpcywgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBDYWNoZSYgY2FjaGUgPSByZXN1bHQudmFsdWUoKTsKLQotICAgICAgICBXZWJD
b3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zOwotICAgICAgICBWZWN0b3I8dWludDY0X3Q+
IHJlY29yZElkZW50aWZpZXJzOwotICAgICAgICByZWNvcmRJZGVudGlmaWVycy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByZWNvcmQg
OiByZWNvcmRzKSB7Ci0gICAgICAgICAgICBhdXRvIG1hdGNoaW5nUmVjb3JkcyA9IEVuZ2luZTo6
cXVlcnlDYWNoZShjYWNoZS5yZWNvcmRzLCByZWNvcmQucmVxdWVzdCwgb3B0aW9ucyk7Ci0gICAg
ICAgICAgICBpZiAobWF0Y2hpbmdSZWNvcmRzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
IHJlY29yZC5pZGVudGlmaWVyID0gKytjYWNoZS5uZXh0UmVjb3JkSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICByZWNvcmRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLmlkZW50
aWZpZXIpOwotICAgICAgICAgICAgICAgIGNhY2hlLnJlY29yZHMuYXBwZW5kKFdURk1vdmUocmVj
b3JkKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gaWRlbnRp
ZmllciA9IG1hdGNoaW5nUmVjb3Jkc1swXTsKLSAgICAgICAgICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gY2FjaGUucmVjb3Jkcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocG9zaXRpb24gIT0gbm90Rm91bmQpOwotICAgICAgICAgICAgICAgIGlmIChwb3NpdGlv
biAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBleGlzdGluZ1JlY29y
ZCA9IGNhY2hlLnJlY29yZHNbcG9zaXRpb25dOwotICAgICAgICAgICAgICAgICAgICByZWNvcmRJ
ZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoaWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAg
ICAgIGV4aXN0aW5nUmVjb3JkLnJlc3BvbnNlSGVhZGVyc0d1YXJkID0gcmVjb3JkLnJlc3BvbnNl
SGVhZGVyc0d1YXJkOwotICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25z
ZSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlKTsKLSAgICAgICAgICAgICAgICAgICAgZXhpc3Rp
bmdSZWNvcmQucmVzcG9uc2VCb2R5ID0gV1RGTW92ZShyZWNvcmQucmVzcG9uc2VCb2R5KTsKLSAg
ICAgICAgICAgICAgICAgICAgKytleGlzdGluZ1JlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHdy
aXRlQ2FjaGVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRJZGVudGlmaWVy
cyksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShSZWNvcmRJZGVudGlmaWVyc09yRXJy
b3ImJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpKTsKLSAgICAgICAgfSk7CisgICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgpLnB1dChXVEZN
b3ZlKHJlY29yZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRW5n
aW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAg
ICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgY2FjaGVJZGVudGlmaWVyLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgcmVhZENhY2hlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oQ2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFyZXN1bHQuaGFzVmFsdWUoKSkgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0
ZWQocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8mIGN1cnJlbnRSZWNvcmRzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3Jk
czsKLQotICAgICAgICBhdXRvIHJlY29yZHNUb1JlbW92ZSA9IHF1ZXJ5Q2FjaGUoY3VycmVudFJl
Y29yZHMsIHJlcXVlc3QsIG9wdGlvbnMpOwotICAgICAgICBpZiAocmVjb3Jkc1RvUmVtb3ZlLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxSZWNvcmQ+IHJlY29yZHNUb0tlZXA7Ci0g
ICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogY3VycmVudFJlY29yZHMpIHsKLSAgICAgICAgICAg
IGlmIChyZWNvcmRzVG9SZW1vdmUuZmluZE1hdGNoaW5nKFsmXShhdXRvIGl0ZW0pIHsgcmV0dXJu
IGl0ZW0gPT0gcmVjb3JkLmlkZW50aWZpZXI7IH0pID09IG5vdEZvdW5kKQotICAgICAgICAgICAg
ICAgIHJlY29yZHNUb0tlZXAuYXBwZW5kKHJlY29yZC5jb3B5KCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJlbW92ZUNhY2hlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3Jkc1Rv
UmVtb3ZlKSwgW3RoaXMsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkc1RvS2VlcCA9IFdURk1vdmUo
cmVjb3Jkc1RvS2VlcCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZElkZW50
aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
cmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGF1dG8qIHdyaXR0ZW5DYWNoZSA9IGNhY2hlKGNhY2hlSWRlbnRpZmll
cik7Ci0gICAgICAgICAgICBpZiAoIXdyaXR0ZW5DYWNoZSkgewotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpJbnRlcm5hbCkpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdyaXR0ZW5DYWNoZS0+cmVjb3Jk
cyA9IFdURk1vdmUocmVjb3Jkc1RvS2VlcCk7Ci0KLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUocmVzdWx0LnZhbHVlKCkpKTsKLSAgICAgICAgfSk7CisgICAgICAgIHJlc3VsdC52YWx1ZSgp
LmdldCgpLnJlbW92ZShXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKQEAgLTMwNCwxOCArMjQzLDYgQEAgdm9pZCBFbmdp
bmU6OnJlYWRDYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlQ2FsbGJhY2smJiBj
YWxsYmFjaykKICAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlPiB7ICpj
YWNoZSB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OndyaXRlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHNJZGVudGlmaWVycywgUmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgd3JpdGluZy4KLSAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZHNJZGVudGlmaWVycykp
OwotfQotCi12b2lkIEVuZ2luZTo6cmVtb3ZlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHNJZGVudGlmaWVycywgUmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
d3JpdGluZy4KLSAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZHNJZGVudGlmaWVycykpOwotfQot
CiBDYWNoZSogRW5naW5lOjpjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAg
Q2FjaGUqIHJlc3VsdCA9IG51bGxwdHI7CkBAIC0zMjYsMTkgKzI1Myw2IEBAIENhY2hlKiBFbmdp
bmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1WZWN0b3I8dWludDY0X3Q+IEVuZ2luZTo6cXVlcnlDYWNoZShjb25zdCBWZWN0b3I8UmVj
b3JkPiYgcmVjb3JkcywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpZiAoIW9w
dGlvbnMuaWdub3JlTWV0aG9kICYmIHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgVmVjdG9yPHVpbnQ2NF90PiByZXN1bHRzOwotICAgIGZv
ciAoY29uc3QgYXV0byYgcmVjb3JkIDogcmVjb3JkcykgewotICAgICAgICBpZiAoV2ViQ29yZTo6
RE9NQ2FjaGU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LCByZWNvcmQucmVxdWVzdCwgcmVjb3Jk
LnJlc3BvbnNlLCBvcHRpb25zKSkKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlY29yZC5p
ZGVudGlmaWVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci19Ci0KIHZvaWQgRW5naW5l
Ojp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYg
ZGF0YSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCBkODI5NzM1
Mzc3ZTY3ZDRkZWIwMTIwOGM4NDYxNDExZGNjY2IxZDdkLi5lNmU1YTBiYTlhYTIyNmM1NjUxMDIx
ZDM0MmM3NTcxMDNkZjBmNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTg1LDExICs4NSw2IEBAIHBy
aXZhdGU6CiAgICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDYWNo
ZU9yRXJyb3ImJik+OwogICAgIHZvaWQgcmVhZENhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgQ2FjaGVDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgd3JpdGVDYWNoZVJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYsIFdlYkNvcmU6OkRPTUNhY2hl
OjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwotICAgIHZvaWQgcmVtb3ZlQ2FjaGVSZWNv
cmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBXZWJDb3Jl
OjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKLQotICAgIFZlY3Rvcjx1
aW50NjRfdD4gcXVlcnlDYWNoZShjb25zdCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29y
ZD4mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyYpOwotCiAgICAgQ2FjaGUqIGNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRp
Zmllcik7CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmPENhY2hlcz4+IG1fY2FjaGVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWUxMmQ5N2QxOWU5OGRmOTY1M2U0
ZmQ5OWJlZTBkZjNkYjg1N2FhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTAsMCArMSwx
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgorCisjaW5j
bHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlS2V5
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
UXVlcnlPcHRpb25zLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRDb2RlcnMuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIu
aD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU6OkRPTUNhY2hlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CisKK0NhY2hl
OjpDYWNoZSh1aW50NjRfdCBpZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lKQorICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKK3sKK30KKwor
VmVjdG9yPFJlY29yZD4gQ2FjaGU6OnJlY29yZHMoKSBjb25zdAoreworICAgIFZlY3RvcjxSZWNv
cmQ+IHJlY29yZHM7CisgICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jk
cy5zaXplKCkpOworICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKQorICAgICAgICBy
ZWNvcmRzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsKKyAgICByZXR1cm4gcmVjb3Jk
czsKK30KKwordm9pZCBDYWNoZTo6cHV0KFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3Jk
SWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGJvb2wgc2hvdWxkV3JpdGVS
ZWNvcmRMaXN0IHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRp
b25zOworICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVjb3JkSWRlbnRpZmllcnM7CisgICAgcmVjb3Jk
SWRlbnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7CisgICAg
Zm9yIChhdXRvJiByZWNvcmQgOiByZWNvcmRzKSB7CisgICAgICAgIGF1dG8gbWF0Y2hpbmdSZWNv
cmRzID0gcXVlcnlDYWNoZShyZWNvcmQucmVxdWVzdCwgb3B0aW9ucyk7CisgICAgICAgIGlmICht
YXRjaGluZ1JlY29yZHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZWNvcmQuaWRlbnRpZmll
ciA9ICsrbV9uZXh0UmVjb3JkSWRlbnRpZmllcjsKKyAgICAgICAgICAgIHJlY29yZElkZW50aWZp
ZXJzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuaWRlbnRpZmllcik7CisgICAgICAgICAgICBtX3Jl
Y29yZHMuYXBwZW5kKFdURk1vdmUocmVjb3JkKSk7CisKKyAgICAgICAgICAgIHNob3VsZFdyaXRl
UmVjb3JkTGlzdCA9IHRydWU7CisgICAgICAgICAgICB3cml0ZVJlY29yZFRvRGlzayhtX3JlY29y
ZHMubGFzdCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1hdGNoaW5nUmVjb3Jkc1swXTsKKyAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBtX3Jl
Y29yZHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlk
ZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgICAgICAgICBBU1NFUlQocG9zaXRpb24g
IT0gbm90Rm91bmQpOworICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byYgZXhpc3RpbmdSZWNvcmQgPSBtX3JlY29yZHNbcG9zaXRpb25d
OworICAgICAgICAgICAgICAgIHJlY29yZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChpZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZUhlYWRlcnNH
dWFyZCA9IHJlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZDsKKyAgICAgICAgICAgICAgICBleGlz
dGluZ1JlY29yZC5yZXNwb25zZSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlKTsKKyAgICAgICAg
ICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZUJvZHkgPSBXVEZNb3ZlKHJlY29yZC5yZXNw
b25zZUJvZHkpOworICAgICAgICAgICAgICAgICsrZXhpc3RpbmdSZWNvcmQudXBkYXRlUmVzcG9u
c2VDb3VudGVyOworCisgICAgICAgICAgICAgICAgd3JpdGVSZWNvcmRUb0Rpc2soZXhpc3RpbmdS
ZWNvcmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzaG91
bGRXcml0ZVJlY29yZExpc3QpIHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZWNvcmRJZGVu
dGlmaWVycykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdyaXRlUmVjb3Jkc0xpc3Qo
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlY29yZElkZW50aWZpZXJzID0gV1RGTW92
ZShyZWNvcmRJZGVudGlmaWVycyldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgQ2FjaGU6OnJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHJlY29yZElkZW50aWZpZXJzID0gcXVl
cnlDYWNoZShyZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBpZiAocmVjb3JkSWRlbnRpZmllcnMuaXNF
bXB0eSgpKSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBWZWN0b3I8UmVjb3JkPiByZWNvcmRzVG9LZWVwOworICAgIGZvciAoYXV0byYgcmVj
b3JkIDogbV9yZWNvcmRzKSB7CisgICAgICAgIGlmIChyZWNvcmRJZGVudGlmaWVycy5maW5kTWF0
Y2hpbmcoWyZdKGF1dG8gaXRlbSkgeyByZXR1cm4gaXRlbSA9PSByZWNvcmQuaWRlbnRpZmllcjsg
fSkgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZWNvcmRzVG9LZWVwLmFwcGVuZChXVEZNb3Zl
KHJlY29yZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVSZWNvcmRGcm9tRGlz
ayhyZWNvcmQpOworICAgIH0KKyAgICBtX3JlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHNUb0tlZXAp
OworCisgICAgd3JpdGVSZWNvcmRzTGlzdChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
cmVjb3JkSWRlbnRpZmllcnMgPSBXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKV0oc3RkOjpvcHRp
b25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3Jk
SWRlbnRpZmllcnMpKTsKKyAgICB9KTsKK30KKworVmVjdG9yPHVpbnQ2NF90PiBDYWNoZTo6cXVl
cnlDYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENhY2hlUXVlcnlP
cHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICghb3B0aW9ucy5pZ25vcmVNZXRob2QgJiYgcmVx
dWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBW
ZWN0b3I8dWludDY0X3Q+IHJlc3VsdHM7CisgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmQgOiBt
X3JlY29yZHMpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OkRPTUNhY2hlOjpxdWVyeUNhY2hlTWF0
Y2gocmVxdWVzdCwgcmVjb3JkLnJlcXVlc3QsIHJlY29yZC5yZXNwb25zZSwgb3B0aW9ucykpCisg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZWNvcmQuaWRlbnRpZmllcik7CisgICAgfQorICAg
IHJldHVybiByZXN1bHRzOworfQorCit2b2lkIENhY2hlOjp3cml0ZVJlY29yZHNMaXN0KENvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cy4KKyAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworfQorCit2b2lkIENhY2hlOjp3cml0ZVJl
Y29yZFRvRGlzayhSZWNvcmQmIHJlY29yZCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCit9CisKK3ZvaWQgQ2FjaGU6OnJlbW92ZVJlY29yZEZyb21EaXNrKFJlY29yZCYgcmVjb3Jk
KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKworfSAvLyBuYW1lc3BhY2Ug
Q2FjaGVTdG9yYWdlCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5oCmluZGV4IDk2NmI1MTQ0ZWM3ZGIxYzdhOWExN2E0NmY2YTNjMGY0YTMzYzMwMmQuLmUzM2E5
NjcwZjlmZTFlMDFlMWYzMTNlNWM3MWU4YTI4YWYxNDNmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmgKQEAgLTMzLDExICszMywzMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNl
IENhY2hlU3RvcmFnZSB7CiAKLXN0cnVjdCBDYWNoZSB7Ci0gICAgdWludDY0X3QgaWRlbnRpZmll
ciB7IDAgfTsKLSAgICBTdHJpbmcgbmFtZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6
OlJlY29yZD4gcmVjb3JkczsKLSAgICB1aW50NjRfdCBuZXh0UmVjb3JkSWRlbnRpZmllciB7IDAg
fTsKK2NsYXNzIENhY2hlIHsKK3B1YmxpYzoKKyAgICBDYWNoZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBTdHJpbmcmJiBuYW1lKTsKKworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KKworICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiBy
ZWNvcmRzKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mbyBpbmZvKCkg
Y29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFtZSB9OyB9CisKKyAgICB2b2lkIHB1
dChWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGU6
OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6
OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworCitwcml2YXRlOgorICAg
IFZlY3Rvcjx1aW50NjRfdD4gcXVlcnlDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYpOworCisgICAgdm9pZCB3cml0
ZVJlY29yZHNMaXN0KFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCB3cml0ZVJlY29yZFRvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkJik7Cisg
ICAgdm9pZCByZW1vdmVSZWNvcmRGcm9tRGlzayhXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkJik7
CisKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgU3RyaW5nIG1fbmFtZTsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4gbV9yZWNvcmRzOworICAgIHVp
bnQ2NF90IG1fbmV4dFJlY29yZElkZW50aWZpZXIgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBDYWNoZVN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCBmNjUyNWNm
MzM2ZDg4ZmYwZTRmNjc0YmRhNTY5YjQ5NDdlMGEwOTQ0Li42NDgxMzNlNzc2NGY3Y2Q5MzRmYTE0
Yjk3YTYzNWU3NzM5MmUyMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC0x
MDEsMTcgKzEwMSwxNyBAQCB2b2lkIENhY2hlczo6ZGV0YWNoKCkKIAogQ2FjaGUqIENhY2hlczo6
ZmluZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVz
LmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5uYW1lID09
IG5hbWU7IH0pOworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZd
KGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSgpID09IG5hbWU7IH0pOwogICAg
IHJldHVybiAocG9zaXRpb24gIT0gbm90Rm91bmQpID8gJm1fY2FjaGVzW3Bvc2l0aW9uXSA6IG51
bGxwdHI7CiB9CiAKIENhY2hlKiBDYWNoZXM6OmZpbmQodWludDY0X3QgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRv
JiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAg
YXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRl
bSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcjsgfSk7CiAgICAgaWYg
KHBvc2l0aW9uICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gJm1fY2FjaGVzW3Bvc2l0aW9u
XTsKIAotICAgIHBvc2l0aW9uID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29u
c3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0p
OworICAgIHBvc2l0aW9uID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3Qg
YXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcjsgfSk7
CiAgICAgcmV0dXJuIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyAmbV9yZW1vdmVkQ2FjaGVzW3Bv
c2l0aW9uXSA6IG51bGxwdHI7CiB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENhY2hlczo6
b3BlbihTdHJpbmcmJiBuYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQog
ICAgIEFTU0VSVChtX2VuZ2luZSk7CiAKICAgICB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIgPSBt
X2VuZ2luZS0+bmV4dENhY2hlSWRlbnRpZmllcigpOwotICAgIG1fY2FjaGVzLmFwcGVuZChDYWNo
ZSB7IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgeyB9LCAwIH0pOworICAgIG1fY2Fj
aGVzLmFwcGVuZChDYWNoZSB7IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSB9KTsKICAg
ICB3cml0ZUNhY2hlc1RvRGlzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2FjaGVJ
ZGVudGlmaWVyXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJv
ci52YWx1ZSgpKSk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBDYWNoZXM6OnJlbW92ZSh1aW50
NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBB
U1NFUlQobV9lbmdpbmUpOwogCi0gICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRj
aGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlk
ZW50aWZpZXI7IH0pOworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmco
WyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllcigpID09IGlkZW50
aWZpZXI7IH0pOwogCiAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7CiAgICAgICAgIEFT
U0VSVChtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7
IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSkgIT0gbm90Rm91bmQpOwpA
QCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBpbmxpbmUgRGF0YSBlbmNvZGVDYWNoZU5hbWVzKGNv
bnN0IFZlY3RvcjxDYWNoZT4mIGNhY2hlcykKICAgICB1aW50NjRfdCBzaXplID0gY2FjaGVzLnNp
emUoKTsKICAgICBlbmNvZGVyIDw8IHNpemU7CiAgICAgZm9yIChhdXRvJiBjYWNoZSA6IGNhY2hl
cykKLSAgICAgICAgZW5jb2RlciA8PCBjYWNoZS5uYW1lOworICAgICAgICBlbmNvZGVyIDw8IGNh
Y2hlLm5hbWUoKTsKIAogICAgIHJldHVybiBEYXRhIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rl
ci5idWZmZXJTaXplKCkgfTsKIH0KQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIENhY2hlczo6cmVh
ZENhY2hlc0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+
LCBFcnJvcgogICAgICAgICBWZWN0b3I8Q2FjaGU+IGNhY2hlczsKICAgICAgICAgY2FjaGVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkocmVzdWx0LnZhbHVlKCkuc2l6ZSgpKTsKICAgICAgICAgZm9y
IChhdXRvJiBuYW1lIDogcmVzdWx0LnZhbHVlKCkpCi0gICAgICAgICAgICBjYWNoZXMudW5jaGVj
a2VkQXBwZW5kKENhY2hlIHsgbV9lbmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKSwgV1RGTW92
ZShuYW1lKSwgeyB9LCAwIH0pOworICAgICAgICAgICAgY2FjaGVzLnVuY2hlY2tlZEFwcGVuZChD
YWNoZSB7IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVyKCksIFdURk1vdmUobmFtZSkgfSk7
CiAKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjYWNoZXMpKTsKICAgICB9KTsKQEAgLTI1Miw3
ICsyNTIsNyBAQCBWZWN0b3I8Q2FjaGVJbmZvPiBDYWNoZXM6OmNhY2hlSW5mb3MoKSBjb25zdAog
ICAgIFZlY3RvcjxDYWNoZUluZm8+IGNhY2hlSW5mb3M7CiAgICAgY2FjaGVJbmZvcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fY2FjaGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjYWNoZSA6
IG1fY2FjaGVzKQotICAgICAgICBjYWNoZUluZm9zLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8g
eyBjYWNoZS5pZGVudGlmaWVyLCBjYWNoZS5uYW1lIH0pOworICAgICAgICBjYWNoZUluZm9zLnVu
Y2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVudGlmaWVyKCksIGNhY2hlLm5hbWUo
KSB9KTsKICAgICByZXR1cm4gY2FjaGVJbmZvczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODMxZGI3MzdiNTAyYTcwNjJlOGZm
MjViYTNkYmIyYWFmZDI0ZmY1MC4uMGU3Y2EzNjc2NGU1NGNlYTFkYTM4MjY2OTU3YWVkZWMzY2Fh
YjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04OTksNiArODk5LDcgQEAKIAkJNDE4OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENh
Y2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4OTdFRDIxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5o
ICovOyB9OwogCQk0MTg5N0VEOTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTg5N0VEMzFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5jcHAgKi87IH07CiAJCTQxODk3RURBMUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTg5N0VENDFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5oICovOyB9OworCQk0MUM4NTgxQTFGNTEzNkNBMDA2NUUwODUgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFDODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcCAqLzsgfTsKIAkJNDFEMTI5REExRjNEMTAxODAwRDE1RTQ3IC8qIFdlYkNhY2hl
U3RvcmFnZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUQxMjlEOTFGM0QxMDE0MDBEMTVFNDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlk
ZXIuaCAqLzsgfTsKIAkJNDFEQzQ1OTYxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFE
QzQ1OTQxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5oICovOyB9OwogCQk0
MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREM0NTk1MUUzRDZFMUUw
MEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwICovOyB9OwpAQCAtMzE3NSw2ICszMTc2
LDcgQEAKIAkJNDE4OTdFRDUxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFRDYxRjQxNUQ4
NjAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUFD
ODY4MTFFMDQyRTUzMDAzMDMwNzQgLyogV2ViUlRDUmVzb2x2ZXIubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IFdlYlJUQ1Jlc29sdmVyLm1lc3NhZ2Vz
LmluOyBwYXRoID0gTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9
ICI8bm9uZT4iOyB9OworCQk0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUQxMjlEOTFGM0QxMDE0MDBEMTVFNDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFEQzQ1OTQxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUHJvdmlkZXIu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1OTUxRTNENkUxRTAwQjExRjUxIC8qIE5l
dHdvcmtSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjAz
LDYgKzgyMDUsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDE4OTdFRDYxRjQxNUQ4NjAwMTZG
QTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgKi8sCiAJCQkJNDE4OTdFRDIxRjQxNUQ4NTAw
MTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oICovLAorCQkJCTQxQzg1ODE5MUY1MTBERUUw
MDY1RTA4NSAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8sCiAJCQkJNDFGQUJEMjgx
RjREREZEQzAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggKi8sCiAJCQkJNDEz
NUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi8s
CiAJCQkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5oICovLApAQCAtOTk5Niw2ICs5OTk5LDcgQEAKIAkJCQlFMTcwODc2QjE2RDZDQTY5MDBGOTky
MjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMTg2Mzgx
NjdEMDcxRTAwQTFBODVBIC8qIENhY2hlTW9kZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4
OTdFRDcxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MUM4NTgxQTFGNTEzNkNBMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzNUZCRDExRjRGQjgwOTAwNzRDNDdCIC8q
IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg5N0VE
OTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319512</attachid>
            <date>2017-08-31 13:36:37 -0700</date>
            <delta_ts>2017-08-31 13:43:35 -0700</delta_ts>
            <desc>Fixing debug build</desc>
            <filename>bug-176137-20170831133637.patch</filename>
            <type>text/plain</type>
            <size>27767</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiNmIyZDljZTM3OGUxOTVi
YjQwNTlmNDVkODJlOWMwNzkzZTA4MTUuLjYyNGNlNDVkOGM1NDFjYTQ3MWEzYWI4YzMzZDY0MGFj
MDExNzIzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTctMDgtMzEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZSB0byBoYW5kbGUgY2FjaGUgcmVjb3JkcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZSBp
cyB0aGUgZXF1aXZhbGVudCBvZiBXZWJDb3JlIENhY2hlLgorICAgICAgICBJdCBjb250YWlucyBh
IGxpc3Qgb2YgcmVjb3JkcyB0aGF0IGl0IG5lZWRzIHRvIG1hbmFnZSAoYWRkLCB1cGRhdGUsIHJl
bW92ZSkuCisgICAgICAgIE1vdmluZyB0aGUgbG9naWMgb2YgdGhpcyBtYW5hZ2VtZW50IGZyb20g
Q2FjaGVTdG9yYWdlRW5naW5lIHRvIHRoaXMgbmV3IGNsYXNzIHNvIGFzIHRvIGVhc2UgZnV0dXJl
IGRldmVsb3BtZW50LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpwdXRSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
Ojp3cml0ZUNhY2hlUmVjb3Jkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpyZW1vdmVDYWNoZVJlY29yZHMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cXVlcnlDYWNoZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjppZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6bmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmluZm8gY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpmaW5kKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlczo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjplbmNvZGVDYWNoZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6OnJlYWRDYWNoZXNGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGVzOjpjYWNoZUluZm9zIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNy0wOC0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2
YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBkaWRDbGlja0F1dG9GaWxsQnV0dG9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWYy
ZTM1NGI1YzM0YTY5OWMzZmEyZjc3MzJkZGViOTYwYjgxODcyNi4uYjE5OGU4ZjI0NDZkNTcyNTc2
YzFiYzE1OGY1ZmJkYzFiNDY2MGQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE4MzcsNyArMzE4MzcsNiBAQAogCQkJCUE4
NzFERTI1MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSGVhZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThFQTdDQUUwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxIZWFkaW5nRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0NCMzBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTEhS
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDFGQTlCOTFGNTc1OEZGMDAzMzg1OEEg
LyogUmVuZGVyVHJlZVVwZGF0ZXJNdWx0aUNvbHVtbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODcxREUyNjBBMTUyQUM4MDBCMTJBNjggLyogSFRNTEh0bWxFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4NzFERTI0MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSUZyYW1lRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0QzMTBBMTkzODU1MDBBOEVGNUYgLyogSFRNTElt
YWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNDQ0LDYgKzMzNDQzLDcgQEAKIAkJ
CQlFNDgyODQwODFGNDQ1OTRDMDA4NjNBQzMgLyogUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDhFMzMzMTFGNDc0MzcwMDBCQUIwRUYgLyogUmVu
ZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0
OEUzMzJEMUY0NzAzODAwMEJBQjBFRiAvKiBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUU0MUZBOUI5MUY1NzU4RkYwMDMzODU4QSAvKiBSZW5kZXJUcmVl
VXBkYXRlck11bHRpQ29sdW1uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDUxMENENjhB
MzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg2
NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
RTIwNTA3RDE4QTQ1OEJGMDA4MDY0N0UgLyogUmVuZGVyVlRUQ3VlLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKaW5kZXggMjRkNjM2Nzc0M2M2NDkxNTJmMzI5YmU1ZWJjM2QzMmUz
NjI3ZjgxNS4uOTZhYTRkNDIyN2FhMDFhNzA5ZWYxM2M3NGZmZWY5ODVmZWJjMDhkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CkBAIC0xMTcsNiArMTE3LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAg
IE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAogCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCAwMDEwNTEwZTg3MDM2MWIzNTY5YWIwMTBkYzY5
ZGY3MjZjMTJlOTgzLi4zMDA4MWExZDcwMmExNzA0NjZiNDQ5MzEyYmM2YjM1MWZkMjA0YTFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgRW5naW5lOjpvcGVuKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlm
aWVyCiAgICAgICAgIENhY2hlcyYgY2FjaGVzID0gY2FjaGVzT3JFcnJvci52YWx1ZSgpOwogCiAg
ICAgICAgIGlmIChhdXRvKiBjYWNoZSA9IGNhY2hlcy5maW5kKGNhY2hlTmFtZSkpIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKGNhY2hlLT5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KGNhY2hlLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTE0Niw5MyArMTQ2LDMyIEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjCiAgICAgICAgICAg
ICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBQYXNzIHJlY29yZHMgYnkgcmVm
ZXJlbmNlLgotICAgICAgICBhdXRvJiByZWNvcmRzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVj
b3JkczsKIAotICAgICAgICBWZWN0b3I8UmVjb3JkPiBjb3B5OwotICAgICAgICBjb3B5LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJl
Y29yZCA6IHJlY29yZHMpCi0gICAgICAgICAgICBjb3B5LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQu
Y29weSgpKTsKLQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNvcHkpKTsKKyAgICAgICAgY2Fs
bGJhY2socmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3JkcygpKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBFbmdpbmU6OnB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVj
b3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
LSAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgY2FjaGVJZGVudGlmaWVyLCBy
ZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Q2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICByZWFkQ2FjaGUoY2FjaGVJZGVu
dGlmaWVyLCBbdGhpcywgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBDYWNoZSYgY2FjaGUgPSByZXN1bHQudmFsdWUoKTsKLQotICAgICAgICBXZWJD
b3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zOwotICAgICAgICBWZWN0b3I8dWludDY0X3Q+
IHJlY29yZElkZW50aWZpZXJzOwotICAgICAgICByZWNvcmRJZGVudGlmaWVycy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByZWNvcmQg
OiByZWNvcmRzKSB7Ci0gICAgICAgICAgICBhdXRvIG1hdGNoaW5nUmVjb3JkcyA9IEVuZ2luZTo6
cXVlcnlDYWNoZShjYWNoZS5yZWNvcmRzLCByZWNvcmQucmVxdWVzdCwgb3B0aW9ucyk7Ci0gICAg
ICAgICAgICBpZiAobWF0Y2hpbmdSZWNvcmRzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
IHJlY29yZC5pZGVudGlmaWVyID0gKytjYWNoZS5uZXh0UmVjb3JkSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgICAgICByZWNvcmRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLmlkZW50
aWZpZXIpOwotICAgICAgICAgICAgICAgIGNhY2hlLnJlY29yZHMuYXBwZW5kKFdURk1vdmUocmVj
b3JkKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gaWRlbnRp
ZmllciA9IG1hdGNoaW5nUmVjb3Jkc1swXTsKLSAgICAgICAgICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gY2FjaGUucmVjb3Jkcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocG9zaXRpb24gIT0gbm90Rm91bmQpOwotICAgICAgICAgICAgICAgIGlmIChwb3NpdGlv
biAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBleGlzdGluZ1JlY29y
ZCA9IGNhY2hlLnJlY29yZHNbcG9zaXRpb25dOwotICAgICAgICAgICAgICAgICAgICByZWNvcmRJ
ZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoaWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAg
ICAgIGV4aXN0aW5nUmVjb3JkLnJlc3BvbnNlSGVhZGVyc0d1YXJkID0gcmVjb3JkLnJlc3BvbnNl
SGVhZGVyc0d1YXJkOwotICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25z
ZSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlKTsKLSAgICAgICAgICAgICAgICAgICAgZXhpc3Rp
bmdSZWNvcmQucmVzcG9uc2VCb2R5ID0gV1RGTW92ZShyZWNvcmQucmVzcG9uc2VCb2R5KTsKLSAg
ICAgICAgICAgICAgICAgICAgKytleGlzdGluZ1JlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHdy
aXRlQ2FjaGVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRJZGVudGlmaWVy
cyksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShSZWNvcmRJZGVudGlmaWVyc09yRXJy
b3ImJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpKTsKLSAgICAgICAgfSk7CisgICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgpLnB1dChXVEZN
b3ZlKHJlY29yZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRW5n
aW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAg
ICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgY2FjaGVJZGVudGlmaWVyLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgcmVhZENhY2hlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oQ2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFyZXN1bHQuaGFzVmFsdWUoKSkgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0
ZWQocmVzdWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8mIGN1cnJlbnRSZWNvcmRzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3Jk
czsKLQotICAgICAgICBhdXRvIHJlY29yZHNUb1JlbW92ZSA9IHF1ZXJ5Q2FjaGUoY3VycmVudFJl
Y29yZHMsIHJlcXVlc3QsIG9wdGlvbnMpOwotICAgICAgICBpZiAocmVjb3Jkc1RvUmVtb3ZlLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxSZWNvcmQ+IHJlY29yZHNUb0tlZXA7Ci0g
ICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogY3VycmVudFJlY29yZHMpIHsKLSAgICAgICAgICAg
IGlmIChyZWNvcmRzVG9SZW1vdmUuZmluZE1hdGNoaW5nKFsmXShhdXRvIGl0ZW0pIHsgcmV0dXJu
IGl0ZW0gPT0gcmVjb3JkLmlkZW50aWZpZXI7IH0pID09IG5vdEZvdW5kKQotICAgICAgICAgICAg
ICAgIHJlY29yZHNUb0tlZXAuYXBwZW5kKHJlY29yZC5jb3B5KCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHJlbW92ZUNhY2hlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3Jkc1Rv
UmVtb3ZlKSwgW3RoaXMsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkc1RvS2VlcCA9IFdURk1vdmUo
cmVjb3Jkc1RvS2VlcCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZElkZW50
aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
cmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGF1dG8qIHdyaXR0ZW5DYWNoZSA9IGNhY2hlKGNhY2hlSWRlbnRpZmll
cik7Ci0gICAgICAgICAgICBpZiAoIXdyaXR0ZW5DYWNoZSkgewotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpJbnRlcm5hbCkpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdyaXR0ZW5DYWNoZS0+cmVjb3Jk
cyA9IFdURk1vdmUocmVjb3Jkc1RvS2VlcCk7Ci0KLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUocmVzdWx0LnZhbHVlKCkpKTsKLSAgICAgICAgfSk7CisgICAgICAgIHJlc3VsdC52YWx1ZSgp
LmdldCgpLnJlbW92ZShXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKQEAgLTMwNCwxOCArMjQzLDYgQEAgdm9pZCBFbmdp
bmU6OnJlYWRDYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlQ2FsbGJhY2smJiBj
YWxsYmFjaykKICAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlPiB7ICpj
YWNoZSB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OndyaXRlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHNJZGVudGlmaWVycywgUmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgd3JpdGluZy4KLSAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZHNJZGVudGlmaWVycykp
OwotfQotCi12b2lkIEVuZ2luZTo6cmVtb3ZlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHNJZGVudGlmaWVycywgUmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
d3JpdGluZy4KLSAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZHNJZGVudGlmaWVycykpOwotfQot
CiBDYWNoZSogRW5naW5lOjpjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAg
Q2FjaGUqIHJlc3VsdCA9IG51bGxwdHI7CkBAIC0zMjYsMTkgKzI1Myw2IEBAIENhY2hlKiBFbmdp
bmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1WZWN0b3I8dWludDY0X3Q+IEVuZ2luZTo6cXVlcnlDYWNoZShjb25zdCBWZWN0b3I8UmVj
b3JkPiYgcmVjb3JkcywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpZiAoIW9w
dGlvbnMuaWdub3JlTWV0aG9kICYmIHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgVmVjdG9yPHVpbnQ2NF90PiByZXN1bHRzOwotICAgIGZv
ciAoY29uc3QgYXV0byYgcmVjb3JkIDogcmVjb3JkcykgewotICAgICAgICBpZiAoV2ViQ29yZTo6
RE9NQ2FjaGU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LCByZWNvcmQucmVxdWVzdCwgcmVjb3Jk
LnJlc3BvbnNlLCBvcHRpb25zKSkKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlY29yZC5p
ZGVudGlmaWVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci19Ci0KIHZvaWQgRW5naW5l
Ojp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYg
ZGF0YSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCBkODI5NzM1
Mzc3ZTY3ZDRkZWIwMTIwOGM4NDYxNDExZGNjY2IxZDdkLi5lNmU1YTBiYTlhYTIyNmM1NjUxMDIx
ZDM0MmM3NTcxMDNkZjBmNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTg1LDExICs4NSw2IEBAIHBy
aXZhdGU6CiAgICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDYWNo
ZU9yRXJyb3ImJik+OwogICAgIHZvaWQgcmVhZENhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgQ2FjaGVDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgd3JpdGVDYWNoZVJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYsIFdlYkNvcmU6OkRPTUNhY2hl
OjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwotICAgIHZvaWQgcmVtb3ZlQ2FjaGVSZWNv
cmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBXZWJDb3Jl
OjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKLQotICAgIFZlY3Rvcjx1
aW50NjRfdD4gcXVlcnlDYWNoZShjb25zdCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29y
ZD4mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyYpOwotCiAgICAgQ2FjaGUqIGNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRp
Zmllcik7CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmPENhY2hlcz4+IG1fY2FjaGVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWUxMmQ5N2QxOWU5OGRmOTY1M2U0
ZmQ5OWJlZTBkZjNkYjg1N2FhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTAsMCArMSwx
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZS5oIgorCisjaW5j
bHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlS2V5
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
UXVlcnlPcHRpb25zLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRDb2RlcnMuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIu
aD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU6OkRPTUNhY2hlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CisKK0NhY2hl
OjpDYWNoZSh1aW50NjRfdCBpZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lKQorICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKK3sKK30KKwor
VmVjdG9yPFJlY29yZD4gQ2FjaGU6OnJlY29yZHMoKSBjb25zdAoreworICAgIFZlY3RvcjxSZWNv
cmQ+IHJlY29yZHM7CisgICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jk
cy5zaXplKCkpOworICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKQorICAgICAgICBy
ZWNvcmRzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsKKyAgICByZXR1cm4gcmVjb3Jk
czsKK30KKwordm9pZCBDYWNoZTo6cHV0KFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3Jk
SWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGJvb2wgc2hvdWxkV3JpdGVS
ZWNvcmRMaXN0IHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRp
b25zOworICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVjb3JkSWRlbnRpZmllcnM7CisgICAgcmVjb3Jk
SWRlbnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7CisgICAg
Zm9yIChhdXRvJiByZWNvcmQgOiByZWNvcmRzKSB7CisgICAgICAgIGF1dG8gbWF0Y2hpbmdSZWNv
cmRzID0gcXVlcnlDYWNoZShyZWNvcmQucmVxdWVzdCwgb3B0aW9ucyk7CisgICAgICAgIGlmICht
YXRjaGluZ1JlY29yZHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZWNvcmQuaWRlbnRpZmll
ciA9ICsrbV9uZXh0UmVjb3JkSWRlbnRpZmllcjsKKyAgICAgICAgICAgIHJlY29yZElkZW50aWZp
ZXJzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuaWRlbnRpZmllcik7CisgICAgICAgICAgICBtX3Jl
Y29yZHMuYXBwZW5kKFdURk1vdmUocmVjb3JkKSk7CisKKyAgICAgICAgICAgIHNob3VsZFdyaXRl
UmVjb3JkTGlzdCA9IHRydWU7CisgICAgICAgICAgICB3cml0ZVJlY29yZFRvRGlzayhtX3JlY29y
ZHMubGFzdCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1hdGNoaW5nUmVjb3Jkc1swXTsKKyAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBtX3Jl
Y29yZHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlk
ZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgICAgICAgICBBU1NFUlQocG9zaXRpb24g
IT0gbm90Rm91bmQpOworICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byYgZXhpc3RpbmdSZWNvcmQgPSBtX3JlY29yZHNbcG9zaXRpb25d
OworICAgICAgICAgICAgICAgIHJlY29yZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChpZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZUhlYWRlcnNH
dWFyZCA9IHJlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZDsKKyAgICAgICAgICAgICAgICBleGlz
dGluZ1JlY29yZC5yZXNwb25zZSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlKTsKKyAgICAgICAg
ICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZUJvZHkgPSBXVEZNb3ZlKHJlY29yZC5yZXNw
b25zZUJvZHkpOworICAgICAgICAgICAgICAgICsrZXhpc3RpbmdSZWNvcmQudXBkYXRlUmVzcG9u
c2VDb3VudGVyOworCisgICAgICAgICAgICAgICAgd3JpdGVSZWNvcmRUb0Rpc2soZXhpc3RpbmdS
ZWNvcmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzaG91
bGRXcml0ZVJlY29yZExpc3QpIHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZWNvcmRJZGVu
dGlmaWVycykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdyaXRlUmVjb3Jkc0xpc3Qo
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlY29yZElkZW50aWZpZXJzID0gV1RGTW92
ZShyZWNvcmRJZGVudGlmaWVycyldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgQ2FjaGU6OnJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHJlY29yZElkZW50aWZpZXJzID0gcXVl
cnlDYWNoZShyZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBpZiAocmVjb3JkSWRlbnRpZmllcnMuaXNF
bXB0eSgpKSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBWZWN0b3I8UmVjb3JkPiByZWNvcmRzVG9LZWVwOworICAgIGZvciAoYXV0byYgcmVj
b3JkIDogbV9yZWNvcmRzKSB7CisgICAgICAgIGlmIChyZWNvcmRJZGVudGlmaWVycy5maW5kTWF0
Y2hpbmcoWyZdKGF1dG8gaXRlbSkgeyByZXR1cm4gaXRlbSA9PSByZWNvcmQuaWRlbnRpZmllcjsg
fSkgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZWNvcmRzVG9LZWVwLmFwcGVuZChXVEZNb3Zl
KHJlY29yZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVSZWNvcmRGcm9tRGlz
ayhyZWNvcmQpOworICAgIH0KKyAgICBtX3JlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHNUb0tlZXAp
OworCisgICAgd3JpdGVSZWNvcmRzTGlzdChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
cmVjb3JkSWRlbnRpZmllcnMgPSBXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKV0oc3RkOjpvcHRp
b25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3Jk
SWRlbnRpZmllcnMpKTsKKyAgICB9KTsKK30KKworVmVjdG9yPHVpbnQ2NF90PiBDYWNoZTo6cXVl
cnlDYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENhY2hlUXVlcnlP
cHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICghb3B0aW9ucy5pZ25vcmVNZXRob2QgJiYgcmVx
dWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBW
ZWN0b3I8dWludDY0X3Q+IHJlc3VsdHM7CisgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmQgOiBt
X3JlY29yZHMpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OkRPTUNhY2hlOjpxdWVyeUNhY2hlTWF0
Y2gocmVxdWVzdCwgcmVjb3JkLnJlcXVlc3QsIHJlY29yZC5yZXNwb25zZSwgb3B0aW9ucykpCisg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZWNvcmQuaWRlbnRpZmllcik7CisgICAgfQorICAg
IHJldHVybiByZXN1bHRzOworfQorCit2b2lkIENhY2hlOjp3cml0ZVJlY29yZHNMaXN0KENvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cy4KKyAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworfQorCit2b2lkIENhY2hlOjp3cml0ZVJl
Y29yZFRvRGlzayhSZWNvcmQmIHJlY29yZCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCit9CisKK3ZvaWQgQ2FjaGU6OnJlbW92ZVJlY29yZEZyb21EaXNrKFJlY29yZCYgcmVjb3Jk
KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKworfSAvLyBuYW1lc3BhY2Ug
Q2FjaGVTdG9yYWdlCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5oCmluZGV4IDk2NmI1MTQ0ZWM3ZGIxYzdhOWExN2E0NmY2YTNjMGY0YTMzYzMwMmQuLmUzM2E5
NjcwZjlmZTFlMDFlMWYzMTNlNWM3MWU4YTI4YWYxNDNmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmgKQEAgLTMzLDExICszMywzMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNl
IENhY2hlU3RvcmFnZSB7CiAKLXN0cnVjdCBDYWNoZSB7Ci0gICAgdWludDY0X3QgaWRlbnRpZmll
ciB7IDAgfTsKLSAgICBTdHJpbmcgbmFtZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6
OlJlY29yZD4gcmVjb3JkczsKLSAgICB1aW50NjRfdCBuZXh0UmVjb3JkSWRlbnRpZmllciB7IDAg
fTsKK2NsYXNzIENhY2hlIHsKK3B1YmxpYzoKKyAgICBDYWNoZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBTdHJpbmcmJiBuYW1lKTsKKworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KKworICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiBy
ZWNvcmRzKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mbyBpbmZvKCkg
Y29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFtZSB9OyB9CisKKyAgICB2b2lkIHB1
dChWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGU6
OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6
OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworCitwcml2YXRlOgorICAg
IFZlY3Rvcjx1aW50NjRfdD4gcXVlcnlDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYpOworCisgICAgdm9pZCB3cml0
ZVJlY29yZHNMaXN0KFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCB3cml0ZVJlY29yZFRvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkJik7Cisg
ICAgdm9pZCByZW1vdmVSZWNvcmRGcm9tRGlzayhXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkJik7
CisKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgU3RyaW5nIG1fbmFtZTsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4gbV9yZWNvcmRzOworICAgIHVp
bnQ2NF90IG1fbmV4dFJlY29yZElkZW50aWZpZXIgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBDYWNoZVN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCBmNjUyNWNm
MzM2ZDg4ZmYwZTRmNjc0YmRhNTY5YjQ5NDdlMGEwOTQ0Li4wNTUxYjhjNTE3NTlhNDRkYmM2NGQ2
Njg2MzM1OTBlNmFiYzY1NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC0x
MDEsMTcgKzEwMSwxNyBAQCB2b2lkIENhY2hlczo6ZGV0YWNoKCkKIAogQ2FjaGUqIENhY2hlczo6
ZmluZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVz
LmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5uYW1lID09
IG5hbWU7IH0pOworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZd
KGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0ubmFtZSgpID09IG5hbWU7IH0pOwogICAg
IHJldHVybiAocG9zaXRpb24gIT0gbm90Rm91bmQpID8gJm1fY2FjaGVzW3Bvc2l0aW9uXSA6IG51
bGxwdHI7CiB9CiAKIENhY2hlKiBDYWNoZXM6OmZpbmQodWludDY0X3QgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRv
JiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAg
YXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRl
bSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcjsgfSk7CiAgICAgaWYg
KHBvc2l0aW9uICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gJm1fY2FjaGVzW3Bvc2l0aW9u
XTsKIAotICAgIHBvc2l0aW9uID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29u
c3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0p
OworICAgIHBvc2l0aW9uID0gbV9yZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3Qg
YXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcjsgfSk7
CiAgICAgcmV0dXJuIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyAmbV9yZW1vdmVkQ2FjaGVzW3Bv
c2l0aW9uXSA6IG51bGxwdHI7CiB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENhY2hlczo6
b3BlbihTdHJpbmcmJiBuYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQog
ICAgIEFTU0VSVChtX2VuZ2luZSk7CiAKICAgICB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIgPSBt
X2VuZ2luZS0+bmV4dENhY2hlSWRlbnRpZmllcigpOwotICAgIG1fY2FjaGVzLmFwcGVuZChDYWNo
ZSB7IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgeyB9LCAwIH0pOworICAgIG1fY2Fj
aGVzLmFwcGVuZChDYWNoZSB7IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSB9KTsKICAg
ICB3cml0ZUNhY2hlc1RvRGlzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2FjaGVJ
ZGVudGlmaWVyXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJv
ci52YWx1ZSgpKSk7CkBAIC0xMzQsMTAgKzEzNCwxMCBAQCB2b2lkIENhY2hlczo6cmVtb3ZlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChtX2VuZ2luZSk7CiAKLSAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1h
dGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0g
aWRlbnRpZmllcjsgfSk7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGlu
ZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyKCkgPT0gaWRl
bnRpZmllcjsgfSk7CiAKICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAg
QVNTRVJUKG1fcmVtb3ZlZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0p
IHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KSAhPSBub3RGb3VuZCk7
CisgICAgICAgIEFTU0VSVChtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBh
dXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOyB9KSAh
PSBub3RGb3VuZCk7CiAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIGlubGluZSBEYXRhIGVuY29k
ZUNhY2hlTmFtZXMoY29uc3QgVmVjdG9yPENhY2hlPiYgY2FjaGVzKQogICAgIHVpbnQ2NF90IHNp
emUgPSBjYWNoZXMuc2l6ZSgpOwogICAgIGVuY29kZXIgPDwgc2l6ZTsKICAgICBmb3IgKGF1dG8m
IGNhY2hlIDogY2FjaGVzKQotICAgICAgICBlbmNvZGVyIDw8IGNhY2hlLm5hbWU7CisgICAgICAg
IGVuY29kZXIgPDwgY2FjaGUubmFtZSgpOwogCiAgICAgcmV0dXJuIERhdGEgeyBlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSB9OwogfQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZv
aWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVk
PFZlY3RvcjxDYWNoZT4sIEVycm9yCiAgICAgICAgIFZlY3RvcjxDYWNoZT4gY2FjaGVzOwogICAg
ICAgICBjYWNoZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZXN1bHQudmFsdWUoKS5zaXplKCkp
OwogICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiByZXN1bHQudmFsdWUoKSkKLSAgICAgICAgICAg
IGNhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGUgeyBtX2VuZ2luZS0+bmV4dENhY2hlSWRlbnRp
ZmllcigpLCBXVEZNb3ZlKG5hbWUpLCB7IH0sIDAgfSk7CisgICAgICAgICAgICBjYWNoZXMudW5j
aGVja2VkQXBwZW5kKENhY2hlIHsgbV9lbmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKSwgV1RG
TW92ZShuYW1lKSB9KTsKIAogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNhY2hlcykpOwogICAg
IH0pOwpAQCAtMjUyLDcgKzI1Miw3IEBAIFZlY3RvcjxDYWNoZUluZm8+IENhY2hlczo6Y2FjaGVJ
bmZvcygpIGNvbnN0CiAgICAgVmVjdG9yPENhY2hlSW5mbz4gY2FjaGVJbmZvczsKICAgICBjYWNo
ZUluZm9zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jYWNoZXMuc2l6ZSgpKTsKICAgICBmb3Ig
KGF1dG8mIGNhY2hlIDogbV9jYWNoZXMpCi0gICAgICAgIGNhY2hlSW5mb3MudW5jaGVja2VkQXBw
ZW5kKENhY2hlSW5mbyB7IGNhY2hlLmlkZW50aWZpZXIsIGNhY2hlLm5hbWUgfSk7CisgICAgICAg
IGNhY2hlSW5mb3MudW5jaGVja2VkQXBwZW5kKENhY2hlSW5mbyB7IGNhY2hlLmlkZW50aWZpZXIo
KSwgY2FjaGUubmFtZSgpIH0pOwogICAgIHJldHVybiBjYWNoZUluZm9zOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MzFkYjcz
N2I1MDJhNzA2MmU4ZmYyNWJhM2RiYjJhYWZkMjRmZjUwLi4wZTdjYTM2NzY0ZTU0Y2VhMWRhMzgy
NjY5NTdhZWRlYzNjYWFiMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTg5OSw2ICs4OTksNyBAQAogCQk0MTg5N0VEODFGNDE1RDhB
MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5N0VEMjFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVT
dG9yYWdlRW5naW5lLmggKi87IH07CiAJCTQxODk3RUQ5MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUQzMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDE4OTdFREExRjQxNUQ4QTAwMTZGQTQy
IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUQ0MUY0MTVEODUwMDE2RkE0MiAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggKi87IH07CisJCTQxQzg1ODFBMUY1MTM2Q0EwMDY1
RTA4NSAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovOyB9OwogCQk0MUQxMjlEQTFGM0QxMDE4MDBEMTVF
NDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDEyOUQ5MUYzRDEwMTQwMEQxNUU0NyAvKiBXZWJDYWNo
ZVN0b3JhZ2VQcm92aWRlci5oICovOyB9OwogCQk0MURDNDU5NjFFM0Q2RTIyMDBCMTFGNTEgLyog
TmV0d29ya1JUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MURDNDU5NDFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVy
LmggKi87IH07CiAJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFE
QzQ1OTUxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgKi87IH07CkBA
IC0zMTc1LDYgKzMxNzYsNyBAQAogCQk0MTg5N0VENTFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTg5N0VENjFGNDE1RDg2MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQUM4NjgxMUUwNDJFNTMwMDMwMzA3NCAvKiBXZWJSVENSZXNvbHZlci5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gV2ViUlRDUmVz
b2x2ZXIubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlci5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRp
b25JZGVudGlmaWVyID0gIjxub25lPiI7IH07CisJCTQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRDEyOUQ5MUYzRDEwMTQwMEQxNUU0NyAvKiBXZWJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5NDFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0
d29ya1JUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdv
cmtSVENQcm92aWRlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5NTFFM0Q2RTFF
MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENQcm92aWRlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTgyMDMsNiArODIwNSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTg5N0VE
NjFGNDE1RDg2MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCAqLywKIAkJCQk0MTg5
N0VEMjFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggKi8sCisJCQkJNDFD
ODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCAqLywK
IAkJCQk0MUZBQkQyODFGNERERkRDMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
aCAqLywKIAkJCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcCAqLywKIAkJCQk0MTM1RkJEMDFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmggKi8sCkBAIC05OTk2LDYgKzk5OTksNyBAQAogCQkJCUUxNzA4NzZC
MTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0YxODYzODE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0MTg5N0VENzFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxQzg1ODFBMUY1MTM2Q0EwMDY1RTA4NSAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTM1RkJEMTFGNEZC
ODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxODk3RUQ5MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319515</attachid>
            <date>2017-08-31 13:43:36 -0700</date>
            <delta_ts>2017-08-31 14:55:20 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-176137-20170831134335.patch</filename>
            <type>text/plain</type>
            <size>26389</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiNmIyZDljZTM3OGUxOTVi
YjQwNTlmNDVkODJlOWMwNzkzZTA4MTUuLjYyNGNlNDVkOGM1NDFjYTQ3MWEzYWI4YzMzZDY0MGFj
MDExNzIzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTctMDgtMzEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZSB0byBoYW5kbGUgY2FjaGUgcmVjb3JkcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZSBp
cyB0aGUgZXF1aXZhbGVudCBvZiBXZWJDb3JlIENhY2hlLgorICAgICAgICBJdCBjb250YWlucyBh
IGxpc3Qgb2YgcmVjb3JkcyB0aGF0IGl0IG5lZWRzIHRvIG1hbmFnZSAoYWRkLCB1cGRhdGUsIHJl
bW92ZSkuCisgICAgICAgIE1vdmluZyB0aGUgbG9naWMgb2YgdGhpcyBtYW5hZ2VtZW50IGZyb20g
Q2FjaGVTdG9yYWdlRW5naW5lIHRvIHRoaXMgbmV3IGNsYXNzIHNvIGFzIHRvIGVhc2UgZnV0dXJl
IGRldmVsb3BtZW50LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpwdXRSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
Ojp3cml0ZUNhY2hlUmVjb3Jkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpyZW1vdmVDYWNoZVJlY29yZHMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cXVlcnlDYWNoZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjppZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6bmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmluZm8gY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpmaW5kKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlczo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjplbmNvZGVDYWNoZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6OnJlYWRDYWNoZXNGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGVzOjpjYWNoZUluZm9zIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNy0wOC0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2
YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBkaWRDbGlja0F1dG9GaWxsQnV0dG9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAppbmRleCAyNGQ2MzY3NzQzYzY0OTE1MmYzMjliZTVlYmMzZDMyZTM2MjdmODE1Li45
NmFhNGQ0MjI3YWEwMWE3MDllZjEzYzc0ZmZlZjk4NWZlYmMwOGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQKQEAgLTExNyw2ICsxMTcsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24uY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCmluZGV4IDAwMTA1MTBlODcwMzYxYjM1NjlhYjAxMGRjNjlkZjcyNmMxMmU5
ODMuLjMwMDgxYTFkNzAyYTE3MDQ2NmI0NDkzMTJiYzZiMzUxZmQyMDRhMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBFbmdpbmU6Om9wZW4oY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXIKICAgICAg
ICAgQ2FjaGVzJiBjYWNoZXMgPSBjYWNoZXNPckVycm9yLnZhbHVlKCk7CiAKICAgICAgICAgaWYg
KGF1dG8qIGNhY2hlID0gY2FjaGVzLmZpbmQoY2FjaGVOYW1lKSkgewotICAgICAgICAgICAgY2Fs
bGJhY2soY2FjaGUtPmlkZW50aWZpZXIpOworICAgICAgICAgICAgY2FsbGJhY2soY2FjaGUtPmlk
ZW50aWZpZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQ2LDkz
ICsxNDYsMzIgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWMKICAgICAgICAgICAgIGNhbGxiYWNr
KG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IFBhc3MgcmVjb3JkcyBieSByZWZlcmVuY2UuCi0g
ICAgICAgIGF1dG8mIHJlY29yZHMgPSByZXN1bHQudmFsdWUoKS5nZXQoKS5yZWNvcmRzOwogCi0g
ICAgICAgIFZlY3RvcjxSZWNvcmQ+IGNvcHk7Ci0gICAgICAgIGNvcHkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShyZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVj
b3JkcykKLSAgICAgICAgICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOwot
Ci0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY29weSkpOworICAgICAgICBjYWxsYmFjayhyZXN1
bHQudmFsdWUoKS5nZXQoKS5yZWNvcmRzKCkpOwogICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6
cHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVj
b3JkcywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHJlYWRD
YWNoZShjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMgPSBX
VEZNb3ZlKHJlY29yZHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJy
b3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt0
aGlzLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oQ2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1
bHQuaGFzVmFsdWUoKSkgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQocmVz
dWx0LmVycm9yKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IENhY2hlJiBjYWNoZSA9IHJlc3VsdC52YWx1ZSgpOwotCi0gICAgICAgIFdlYkNvcmU6OkNhY2hl
UXVlcnlPcHRpb25zIG9wdGlvbnM7Ci0gICAgICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVjb3JkSWRl
bnRpZmllcnM7Ci0gICAgICAgIHJlY29yZElkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocmVjb3Jkcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlY29yZHMp
IHsKLSAgICAgICAgICAgIGF1dG8gbWF0Y2hpbmdSZWNvcmRzID0gRW5naW5lOjpxdWVyeUNhY2hl
KGNhY2hlLnJlY29yZHMsIHJlY29yZC5yZXF1ZXN0LCBvcHRpb25zKTsKLSAgICAgICAgICAgIGlm
IChtYXRjaGluZ1JlY29yZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcmVjb3JkLmlk
ZW50aWZpZXIgPSArK2NhY2hlLm5leHRSZWNvcmRJZGVudGlmaWVyOwotICAgICAgICAgICAgICAg
IHJlY29yZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuaWRlbnRpZmllcik7Ci0g
ICAgICAgICAgICAgICAgY2FjaGUucmVjb3Jkcy5hcHBlbmQoV1RGTW92ZShyZWNvcmQpKTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbWF0
Y2hpbmdSZWNvcmRzWzBdOwotICAgICAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBjYWNoZS5y
ZWNvcmRzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5p
ZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOwotICAgICAgICAgICAgICAgIEFTU0VSVChwb3Np
dGlvbiAhPSBub3RGb3VuZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZv
dW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8mIGV4aXN0aW5nUmVjb3JkID0gY2FjaGUu
cmVjb3Jkc1twb3NpdGlvbl07Ci0gICAgICAgICAgICAgICAgICAgIHJlY29yZElkZW50aWZpZXJz
LnVuY2hlY2tlZEFwcGVuZChpZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXhpc3Rp
bmdSZWNvcmQucmVzcG9uc2VIZWFkZXJzR3VhcmQgPSByZWNvcmQucmVzcG9uc2VIZWFkZXJzR3Vh
cmQ7Ci0gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUmVjb3JkLnJlc3BvbnNlID0gV1RGTW92
ZShyZWNvcmQucmVzcG9uc2UpOwotICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5y
ZXNwb25zZUJvZHkgPSBXVEZNb3ZlKHJlY29yZC5yZXNwb25zZUJvZHkpOwotICAgICAgICAgICAg
ICAgICAgICArK2V4aXN0aW5nUmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdGVDYWNoZVJl
Y29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3Vs
dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwotICAg
ICAgICB9KTsKKyAgICAgICAgcmVzdWx0LnZhbHVlKCkuZ2V0KCkucHV0KFdURk1vdmUocmVjb3Jk
cyksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OmRlbGV0
ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHJlYWRDYWNo
ZShjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oQ2FjaGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICByZWFk
Q2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5o
YXNWYWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQu
ZXJyb3IoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byYgY3VycmVudFJlY29yZHMgPSByZXN1bHQudmFsdWUoKS5nZXQoKS5yZWNvcmRzOwotCi0gICAg
ICAgIGF1dG8gcmVjb3Jkc1RvUmVtb3ZlID0gcXVlcnlDYWNoZShjdXJyZW50UmVjb3JkcywgcmVx
dWVzdCwgb3B0aW9ucyk7Ci0gICAgICAgIGlmIChyZWNvcmRzVG9SZW1vdmUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjayh7IH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgVmVjdG9yPFJlY29yZD4gcmVjb3Jkc1RvS2VlcDsKLSAgICAgICAgZm9y
IChhdXRvJiByZWNvcmQgOiBjdXJyZW50UmVjb3JkcykgewotICAgICAgICAgICAgaWYgKHJlY29y
ZHNUb1JlbW92ZS5maW5kTWF0Y2hpbmcoWyZdKGF1dG8gaXRlbSkgeyByZXR1cm4gaXRlbSA9PSBy
ZWNvcmQuaWRlbnRpZmllcjsgfSkgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICAgICAgcmVjb3Jk
c1RvS2VlcC5hcHBlbmQocmVjb3JkLmNvcHkoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVtb3Zl
Q2FjaGVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzVG9SZW1vdmUpLCBb
dGhpcywgY2FjaGVJZGVudGlmaWVyLCByZWNvcmRzVG9LZWVwID0gV1RGTW92ZShyZWNvcmRzVG9L
ZWVwKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3JkSWRlbnRpZmllcnNPckVy
cm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVl
KCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJy
b3IoKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgYXV0byogd3JpdHRlbkNhY2hlID0gY2FjaGUoY2FjaGVJZGVudGlmaWVyKTsKLSAgICAg
ICAgICAgIGlmICghd3JpdHRlbkNhY2hlKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobWFr
ZVVuZXhwZWN0ZWQoRXJyb3I6OkludGVybmFsKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgd3JpdHRlbkNhY2hlLT5yZWNvcmRzID0gV1RGTW92
ZShyZWNvcmRzVG9LZWVwKTsKLQotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQu
dmFsdWUoKSkpOwotICAgICAgICB9KTsKKyAgICAgICAgcmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVt
b3ZlKFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICB9KTsKIH0KIApAQCAtMzA0LDE4ICsyNDMsNiBAQCB2b2lkIEVuZ2luZTo6cmVhZENh
Y2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVDYWxsYmFjayYmIGNhbGxiYWNrKQog
ICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGU+IHsgKmNhY2hlIH0pOwog
fQogCi12b2lkIEVuZ2luZTo6d3JpdGVDYWNoZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3Jkc0lkZW50aWZpZXJzLCBSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3cml0
aW5nLgotICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3Jkc0lkZW50aWZpZXJzKSk7Ci19Ci0KLXZv
aWQgRW5naW5lOjpyZW1vdmVDYWNoZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBW
ZWN0b3I8dWludDY0X3Q+JiYgcmVjb3Jkc0lkZW50aWZpZXJzLCBSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3cml0aW5nLgot
ICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3Jkc0lkZW50aWZpZXJzKSk7Ci19Ci0KIENhY2hlKiBF
bmdpbmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAgICBDYWNoZSogcmVz
dWx0ID0gbnVsbHB0cjsKQEAgLTMyNiwxOSArMjUzLDYgQEAgQ2FjaGUqIEVuZ2luZTo6Y2FjaGUo
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVZlY3Rv
cjx1aW50NjRfdD4gRW5naW5lOjpxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+JiByZWNv
cmRzLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OkNhY2hlUXVlcnlPcHRpb25zJiBvcHRpb25zKQotewotICAgIGlmICghb3B0aW9ucy5pZ25v
cmVNZXRob2QgJiYgcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCi0gICAgICAgIHJldHVy
biB7IH07Ci0KLSAgICBWZWN0b3I8dWludDY0X3Q+IHJlc3VsdHM7Ci0gICAgZm9yIChjb25zdCBh
dXRvJiByZWNvcmQgOiByZWNvcmRzKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpET01DYWNoZTo6
cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3QsIHJlY29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2Us
IG9wdGlvbnMpKQotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVjb3JkLmlkZW50aWZpZXIp
OwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0czsKLX0KLQogdm9pZCBFbmdpbmU6OndyaXRlRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJD
b3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFzaG91bGRQZXJzaXN0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IGQ4Mjk3MzUzNzdlNjdkNGRl
YjAxMjA4Yzg0NjE0MTFkY2NjYjFkN2QuLmU2ZTVhMGJhOWFhMjI2YzU2NTEwMjFkMzQyYzc1NzEw
M2RmMGY3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtODUsMTEgKzg1LDYgQEAgcHJpdmF0ZToKICAg
ICB1c2luZyBDYWNoZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlT3JFcnJvciYm
KT47CiAgICAgdm9pZCByZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUNh
bGxiYWNrJiYpOwogCi0gICAgdm9pZCB3cml0ZUNhY2hlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCByZW1vdmVDYWNoZVJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYsIFdlYkNvcmU6OkRPTUNhY2hl
OjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwotCi0gICAgVmVjdG9yPHVpbnQ2NF90PiBx
dWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zJik7Ci0KICAgICBDYWNoZSogY2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8Q2FjaGVzPj4gbV9jYWNoZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZTEyZDk3ZDE5ZTk4ZGY5NjUzZTRmZDk5YmVlMGRm
M2RiODU3YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtMCwwICsxLDE2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCisKKyNpbmNsdWRlICJOZXR3
b3JrQ2FjaGVJT0NoYW5uZWwuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVLZXkuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlv
bnMuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5o
PgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgorI2luY2x1
ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9N
Q2FjaGU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCituYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKKworQ2FjaGU6OkNhY2hlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUpCisgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQoreworfQorCitWZWN0b3I8UmVj
b3JkPiBDYWNoZTo6cmVjb3JkcygpIGNvbnN0Cit7CisgICAgVmVjdG9yPFJlY29yZD4gcmVjb3Jk
czsKKyAgICByZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZWNvcmRzLnNpemUoKSk7
CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCisgICAgICAgIHJlY29yZHMudW5j
aGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOworICAgIHJldHVybiByZWNvcmRzOworfQorCit2
b2lkIENhY2hlOjpwdXQoVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVy
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgYm9vbCBzaG91bGRXcml0ZVJlY29yZExpc3Qg
eyBmYWxzZSB9OworICAgIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnM7CisgICAg
VmVjdG9yPHVpbnQ2NF90PiByZWNvcmRJZGVudGlmaWVyczsKKyAgICByZWNvcmRJZGVudGlmaWVy
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8m
IHJlY29yZCA6IHJlY29yZHMpIHsKKyAgICAgICAgYXV0byBtYXRjaGluZ1JlY29yZHMgPSBxdWVy
eUNhY2hlKHJlY29yZC5yZXF1ZXN0LCBvcHRpb25zKTsKKyAgICAgICAgaWYgKG1hdGNoaW5nUmVj
b3Jkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHJlY29yZC5pZGVudGlmaWVyID0gKyttX25l
eHRSZWNvcmRJZGVudGlmaWVyOworICAgICAgICAgICAgcmVjb3JkSWRlbnRpZmllcnMudW5jaGVj
a2VkQXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcmVjb3Jkcy5hcHBl
bmQoV1RGTW92ZShyZWNvcmQpKTsKKworICAgICAgICAgICAgc2hvdWxkV3JpdGVSZWNvcmRMaXN0
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKG1fcmVjb3Jkcy5sYXN0KCkp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbWF0Y2hp
bmdSZWNvcmRzWzBdOworICAgICAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fcmVjb3Jkcy5maW5k
TWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9
PSBpZGVudGlmaWVyOyB9KTsKKyAgICAgICAgICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3Vu
ZCk7CisgICAgICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvJiBleGlzdGluZ1JlY29yZCA9IG1fcmVjb3Jkc1twb3NpdGlvbl07CisgICAgICAg
ICAgICAgICAgcmVjb3JkSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKGlkZW50aWZpZXIpOwor
ICAgICAgICAgICAgICAgIGV4aXN0aW5nUmVjb3JkLnJlc3BvbnNlSGVhZGVyc0d1YXJkID0gcmVj
b3JkLnJlc3BvbnNlSGVhZGVyc0d1YXJkOworICAgICAgICAgICAgICAgIGV4aXN0aW5nUmVjb3Jk
LnJlc3BvbnNlID0gV1RGTW92ZShyZWNvcmQucmVzcG9uc2UpOworICAgICAgICAgICAgICAgIGV4
aXN0aW5nUmVjb3JkLnJlc3BvbnNlQm9keSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlQm9keSk7
CisgICAgICAgICAgICAgICAgKytleGlzdGluZ1JlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7
CisKKyAgICAgICAgICAgICAgICB3cml0ZVJlY29yZFRvRGlzayhleGlzdGluZ1JlY29yZCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXNob3VsZFdyaXRlUmVj
b3JkTGlzdCkgeworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd3JpdGVSZWNvcmRzTGlzdChbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVjb3JkSWRlbnRpZmllcnMgPSBXVEZNb3ZlKHJlY29yZElk
ZW50aWZpZXJzKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJy
b3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUocmVjb3JkSWRlbnRpZmllcnMpKTsKKyAgICB9KTsKK30KKwordm9pZCBD
YWNoZTo6cmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6
OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYm
IGNhbGxiYWNrKQoreworICAgIGF1dG8gcmVjb3JkSWRlbnRpZmllcnMgPSBxdWVyeUNhY2hlKHJl
cXVlc3QsIG9wdGlvbnMpOworICAgIGlmIChyZWNvcmRJZGVudGlmaWVycy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZl
Y3RvcjxSZWNvcmQ+IHJlY29yZHNUb0tlZXA7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3Jl
Y29yZHMpIHsKKyAgICAgICAgaWYgKHJlY29yZElkZW50aWZpZXJzLmZpbmRNYXRjaGluZyhbJl0o
YXV0byBpdGVtKSB7IHJldHVybiBpdGVtID09IHJlY29yZC5pZGVudGlmaWVyOyB9KSA9PSBub3RG
b3VuZCkKKyAgICAgICAgICAgIHJlY29yZHNUb0tlZXAuYXBwZW5kKFdURk1vdmUocmVjb3JkKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZVJlY29yZEZyb21EaXNrKHJlY29yZCk7
CisgICAgfQorICAgIG1fcmVjb3JkcyA9IFdURk1vdmUocmVjb3Jkc1RvS2VlcCk7CisKKyAgICB3
cml0ZVJlY29yZHNMaXN0KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZWNvcmRJZGVu
dGlmaWVycyA9IFdURk1vdmUocmVjb3JkSWRlbnRpZmllcnMpXShzdGQ6Om9wdGlvbmFsPEVycm9y
PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZWNvcmRJZGVudGlmaWVy
cykpOworICAgIH0pOworfQorCitWZWN0b3I8dWludDY0X3Q+IENhY2hlOjpxdWVyeUNhY2hlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9w
dGlvbnMpCit7CisgICAgaWYgKCFvcHRpb25zLmlnbm9yZU1ldGhvZCAmJiByZXF1ZXN0Lmh0dHBN
ZXRob2QoKSAhPSAiR0VUIikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3Rvcjx1aW50
NjRfdD4gcmVzdWx0czsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IG1fcmVjb3Jkcykg
eworICAgICAgICBpZiAoV2ViQ29yZTo6RE9NQ2FjaGU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0
LCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25zKSkKKyAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdHM7Cit9CisKK3ZvaWQgQ2FjaGU6OndyaXRlUmVjb3Jkc0xpc3QoQ29tcGxldGlvbkNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cit9CisKK3ZvaWQgQ2FjaGU6OndyaXRlUmVjb3JkVG9EaXNr
KFJlY29yZCYgcmVjb3JkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwor
dm9pZCBDYWNoZTo6cmVtb3ZlUmVjb3JkRnJvbURpc2soUmVjb3JkJiByZWNvcmQpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorfQorCit9IC8vIG5hbWVzcGFjZSBDYWNoZVN0b3Jh
Z2UKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKaW5kZXgg
OTY2YjUxNDRlYzdkYjFjN2E5YTE3YTQ2ZjZhM2MwZjRhMzNjMzAyZC4uZTMzYTk2NzBmOWZlMWUw
MWUxZjMxM2U1YzcxZThhMjhhZjE0M2Y5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaApAQCAt
MzMsMTEgKzMzLDMwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgQ2FjaGVTdG9y
YWdlIHsKIAotc3RydWN0IENhY2hlIHsKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyIHsgMCB9Owot
ICAgIFN0cmluZyBuYW1lOwotICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiBy
ZWNvcmRzOwotICAgIHVpbnQ2NF90IG5leHRSZWNvcmRJZGVudGlmaWVyIHsgMCB9OworY2xhc3Mg
Q2FjaGUgeworcHVibGljOgorICAgIENhY2hlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFN0cmluZyYm
IG5hbWUpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQorCisgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IHJlY29yZHMoKSBj
b25zdDsKKyAgICBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvIGluZm8oKSBjb25zdCB7IHJl
dHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0KKworICAgIHZvaWQgcHV0KFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGU6
OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHVp
bnQ2NF90PiBxdWVyeUNhY2hlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJik7CisKKyAgICB2b2lkIHdyaXRlUmVjb3Jkc0xp
c3QoV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHdy
aXRlUmVjb3JkVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQmKTsKKyAgICB2b2lkIHJl
bW92ZVJlY29yZEZyb21EaXNrKFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQmKTsKKworICAgIHVp
bnQ2NF90IG1faWRlbnRpZmllciB7IDAgfTsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFZlY3Rv
cjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiBtX3JlY29yZHM7CisgICAgdWludDY0X3QgbV9u
ZXh0UmVjb3JkSWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENhY2hlU3Rv
cmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IGY2NTI1Y2YzMzZkODhmZjBl
NGY2NzRiZGE1NjliNDk0N2UwYTA5NDQuLjA1NTFiOGM1MTc1OWE0NGRiYzY0ZDY2ODYzMzU5MGU2
YWJjNjU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTEwMSwxNyArMTAx
LDE3IEBAIHZvaWQgQ2FjaGVzOjpkZXRhY2goKQogCiBDYWNoZSogQ2FjaGVzOjpmaW5kKGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKLSAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNo
aW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLm5hbWUgPT0gbmFtZTsgfSk7
CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0
byYgaXRlbSkgeyByZXR1cm4gaXRlbS5uYW1lKCkgPT0gbmFtZTsgfSk7CiAgICAgcmV0dXJuIChw
b3NpdGlvbiAhPSBub3RGb3VuZCkgPyAmbV9jYWNoZXNbcG9zaXRpb25dIDogbnVsbHB0cjsKIH0K
IAogQ2FjaGUqIENhY2hlczo6ZmluZCh1aW50NjRfdCBpZGVudGlmaWVyKQogewotICAgIGF1dG8g
cG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsg
cmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICBhdXRvIHBvc2l0
aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVy
biBpdGVtLmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOyB9KTsKICAgICBpZiAocG9zaXRpb24g
IT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiAmbV9jYWNoZXNbcG9zaXRpb25dOwogCi0gICAg
cG9zaXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBp
dGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgcG9z
aXRpb24gPSBtX3JlbW92ZWRDYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVt
KSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOyB9KTsKICAgICByZXR1
cm4gKHBvc2l0aW9uICE9IG5vdEZvdW5kKSA/ICZtX3JlbW92ZWRDYWNoZXNbcG9zaXRpb25dIDog
bnVsbHB0cjsKIH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgQ2FjaGVzOjpvcGVuKFN0cmlu
ZyYmIG5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgQVNTRVJU
KG1fZW5naW5lKTsKIAogICAgIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciA9IG1fZW5naW5lLT5u
ZXh0Q2FjaGVJZGVudGlmaWVyKCk7Ci0gICAgbV9jYWNoZXMuYXBwZW5kKENhY2hlIHsgY2FjaGVJ
ZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCB7IH0sIDAgfSk7CisgICAgbV9jYWNoZXMuYXBwZW5k
KENhY2hlIHsgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpIH0pOwogICAgIHdyaXRlQ2Fj
aGVzVG9EaXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZUlkZW50aWZpZXJd
KHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkp
KTsKQEAgLTEzNCwxMCArMTM0LDEwIEBAIHZvaWQgQ2FjaGVzOjpyZW1vdmUodWludDY0X3QgaWRl
bnRpZmllciwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1f
ZW5naW5lKTsKIAotICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZd
KGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVy
OyB9KTsKKyAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOyB9
KTsKIAogICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkgewotICAgICAgICBBU1NFUlQobV9y
ZW1vdmVkQ2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4g
aXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pICE9IG5vdEZvdW5kKTsKKyAgICAgICAg
QVNTRVJUKG1fcmVtb3ZlZENhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0p
IHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7IH0pICE9IG5vdEZvdW5k
KTsKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgaW5saW5lIERhdGEgZW5jb2RlQ2FjaGVOYW1l
cyhjb25zdCBWZWN0b3I8Q2FjaGU+JiBjYWNoZXMpCiAgICAgdWludDY0X3Qgc2l6ZSA9IGNhY2hl
cy5zaXplKCk7CiAgICAgZW5jb2RlciA8PCBzaXplOwogICAgIGZvciAoYXV0byYgY2FjaGUgOiBj
YWNoZXMpCi0gICAgICAgIGVuY29kZXIgPDwgY2FjaGUubmFtZTsKKyAgICAgICAgZW5jb2RlciA8
PCBjYWNoZS5uYW1lKCk7CiAKICAgICByZXR1cm4gRGF0YSB7IGVuY29kZXIuYnVmZmVyKCksIGVu
Y29kZXIuYnVmZmVyU2l6ZSgpIH07CiB9CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBDYWNoZXM6
OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENh
Y2hlPiwgRXJyb3IKICAgICAgICAgVmVjdG9yPENhY2hlPiBjYWNoZXM7CiAgICAgICAgIGNhY2hl
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdC52YWx1ZSgpLnNpemUoKSk7CiAgICAgICAg
IGZvciAoYXV0byYgbmFtZSA6IHJlc3VsdC52YWx1ZSgpKQotICAgICAgICAgICAgY2FjaGVzLnVu
Y2hlY2tlZEFwcGVuZChDYWNoZSB7IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVyKCksIFdU
Rk1vdmUobmFtZSksIHsgfSwgMCB9KTsKKyAgICAgICAgICAgIGNhY2hlcy51bmNoZWNrZWRBcHBl
bmQoQ2FjaGUgeyBtX2VuZ2luZS0+bmV4dENhY2hlSWRlbnRpZmllcigpLCBXVEZNb3ZlKG5hbWUp
IH0pOwogCiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzKSk7CiAgICAgfSk7CkBAIC0y
NTIsNyArMjUyLDcgQEAgVmVjdG9yPENhY2hlSW5mbz4gQ2FjaGVzOjpjYWNoZUluZm9zKCkgY29u
c3QKICAgICBWZWN0b3I8Q2FjaGVJbmZvPiBjYWNoZUluZm9zOwogICAgIGNhY2hlSW5mb3MucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2NhY2hlcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2Fj
aGUgOiBtX2NhY2hlcykKLSAgICAgICAgY2FjaGVJbmZvcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJ
bmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZSB9KTsKKyAgICAgICAgY2FjaGVJbmZv
cy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllcigpLCBjYWNoZS5u
YW1lKCkgfSk7CiAgICAgcmV0dXJuIGNhY2hlSW5mb3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgzMWRiNzM3YjUwMmE3MDYy
ZThmZjI1YmEzZGJiMmFhZmQyNGZmNTAuLjBlN2NhMzY3NjRlNTRjZWExZGEzODI2Njk1N2FlZGVj
M2NhYWIxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtODk5LDYgKzg5OSw3IEBACiAJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxODk3RUQyMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmUuaCAqLzsgfTsKIAkJNDE4OTdFRDkxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4OTdFRDMxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwICovOyB9OwogCQk0MTg5N0VEQTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE4OTdFRDQxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJNDFDODU4MUExRjUxMzZDQTAwNjVFMDg1IC8qIENh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBDYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAgKi87IH07CiAJCTQxRDEyOURBMUYzRDEwMTgwMEQxNUU0NyAvKiBXZWJD
YWNoZVN0b3JhZ2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmggKi87IH07CiAJCTQxREM0NTk2MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRD
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxREM0NTk0MUUzRDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuaCAqLzsgfTsK
IAkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURDNDU5NTFFM0Q2
RTFFMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsKQEAgLTMxNzUsNiAr
MzE3Niw3IEBACiAJCTQxODk3RUQ1MUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUQ2MUY0
MTVEODYwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFBQzg2ODExRTA0MkU1MzAwMzAzMDc0IC8qIFdlYlJUQ1Jlc29sdmVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBXZWJSVENSZXNvbHZlci5tZXNz
YWdlcy5pbjsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSAiPG5vbmU+IjsgfTsKKwkJNDFDODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxREM0NTk0MUUzRDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Byb3Zp
ZGVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTk1MUUzRDZFMUUwMEIxMUY1MSAv
KiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODIwMyw2ICs4MjA1LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQxODk3RUQ2MUY0MTVEODYw
MDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwICovLAogCQkJCTQxODk3RUQyMUY0MTVE
ODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCAqLywKKwkJCQk0MUM4NTgxOTFGNTEw
REVFMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovLAogCQkJCTQxRkFC
RDI4MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oICovLAogCQkJ
CTQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
ICovLAogCQkJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuaCAqLywKQEAgLTk5OTYsNiArOTk5OSw3IEBACiAJCQkJRTE3MDg3NkIxNkQ2Q0E2OTAw
Rjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjE4
NjM4MTY3RDA3MUUwMEExQTg1QSAvKiBDYWNoZU1vZGVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQxODk3RUQ3MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFDODU4MUExRjUxMzZDQTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzVGQkQxMUY0RkI4MDkwMDc0QzQ3
QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4
OTdFRDkxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>