<?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>172448</bug_id>
          
          <creation_ts>2017-05-22 07:32:41 -0700</creation_ts>
          <short_desc>[ThreadedCompositor] Improve composition and update state handling</short_desc>
          <delta_ts>2017-08-14 03:24:10 -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>New Bugs</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="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>magomez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1311337</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-22 07:32:41 -0700</bug_when>
    <thetext>[ThreadedCompositor] Improve composition and update state handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311340</commentid>
    <comment_count>1</comment_count>
      <attachid>310868</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-22 07:33:30 -0700</bug_when>
    <thetext>Created attachment 310868
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336917</commentid>
    <comment_count>2</comment_count>
      <attachid>317691</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-09 03:08:38 -0700</bug_when>
    <thetext>Created attachment 317691
WIP

Needs comments, ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337862</commentid>
    <comment_count>3</comment_count>
      <attachid>317924</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-11 04:39:23 -0700</bug_when>
    <thetext>Created attachment 317924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337863</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-11 04:41:30 -0700</bug_when>
    <thetext>Attachment 317924 did not pass style-queue:


ERROR: Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:362:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 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>1338291</commentid>
    <comment_count>5</comment_count>
      <attachid>317924</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-13 23:42:54 -0700</bug_when>
    <thetext>Comment on attachment 317924
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=317924&amp;action=review

Excellent comments, it&apos;s a lot easier to follow now. Thanks!

&gt; Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:186
&gt; +void CompositingRunLoop::compositionCompleted(LockHolder&amp; stateLocker)

Why does this receive the lock if it&apos;s unused, is it just to make sure the caller always calls this with the lock held?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338302</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-14 03:22:38 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #5)
&gt; &gt; Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:186
&gt; &gt; +void CompositingRunLoop::compositionCompleted(LockHolder&amp; stateLocker)
&gt; 
&gt; Why does this receive the lock if it&apos;s unused, is it just to make sure the
&gt; caller always calls this with the lock held?

Yes, that&apos;s the reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338303</commentid>
    <comment_count>7</comment_count>
      <attachid>317924</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-14 03:23:38 -0700</bug_when>
    <thetext>Comment on attachment 317924
Patch

Clearing flags on attachment: 317924

Committed r220672: &lt;http://trac.webkit.org/changeset/220672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338304</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-14 03:23:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338305</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-14 03:24:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/33873222&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310868</attachid>
            <date>2017-05-22 07:33:30 -0700</date>
            <delta_ts>2017-08-09 03:08:35 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-172448-20170522163329.patch</filename>
            <type>text/plain</type>
            <size>13304</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmIzNWM1ZWU2ZGM2ZDgw
NGMzOGFlYWU2ZjZmYWUyMjdjNTc0YzgxZi4uOTM0MjUwYjM0NDE1MjU1MDY0YTVhYmRmYzM2ZDU0
MjA0ZTA1ODUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTA1LTIyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGhyZWFkZWRDb21w
b3NpdG9yXSBJbXByb3ZlIGNvbXBvc2l0aW9uIGFuZCB1cGRhdGUgc3RhdGUgaGFuZGxpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjQ0OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5M
b29wKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzY2hlZHVsZVVwZGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVwZGF0ZXMpOgor
ICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZUNvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6Y29tcG9zaXRpb25Db21wbGV0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OmlzQWN0aXZlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmg6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVu
TG9vcDo6c3RhdGVMb2NrKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKToKKyAgICAgICAgKFdl
YktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpyZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBk
YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpoYW5kbGVEaXNwbGF5
UmVmcmVzaE1vbml0b3JVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0
b3I6OnJlbmRlck5leHRGcmFtZUlmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGhyZWFkZWRDb21wb3NpdG9yOjpjb21wbGV0ZUNvb3JkaW5hdGVkVXBkYXRlSWZOZWVkZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OmNvb3JkaW5hdGVV
cGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5o
OgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRo
cmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlSZWZy
ZXNoQ2FsbGJhY2spOgorCiAyMDE3LTA1LTIyICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtDb29yZGluYXRlZEdyYXBoaWNzXSBDbGVhciBVcGRhdGVBdGxh
c2VzIGZvciBlYWNoIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCmluZGV4IGVkNTJmNDNjMDhjYWQyZDczZjM0
NzhjNzRkODhlYjM5MWQ5OTE1NTEuLmZjYThhM2NkNzBlZTNiNTMxMzY4MzQzZTEyNjQwN2I2MGRi
N2FmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9D
b21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0xMDksOCArMTA5LDYgQEAgQ29tcG9zaXRpbmdSdW5M
b29wOjpDb21wb3NpdGluZ1J1bkxvb3Aoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIHVwZGF0ZUZ1
bmN0aW9uKQogICAgIDogbV91cGRhdGVUaW1lcihXb3JrUXVldWVQb29sOjpzaW5nbGV0b24oKS5y
dW5Mb29wKHRoaXMpLCB0aGlzLCAmQ29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVUaW1lckZpcmVk
KQogICAgICwgbV91cGRhdGVGdW5jdGlvbihXVEZNb3ZlKHVwZGF0ZUZ1bmN0aW9uKSkKIHsKLSAg
ICBtX3VwZGF0ZVN0YXRlLnN0b3JlKFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQpOwotCiAjaWYgVVNF
KEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX3VwZGF0ZVRpbWVyLnNldFByaW9yaXR5KFJ1bkxvb3BT
b3VyY2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVUaW1lcik7CiAgICAgbV91cGRh
dGVUaW1lci5zZXROYW1lKCJbV2ViS2l0XSBDb21wb3NpdGluZ1J1bkxvb3AiKTsKQEAgLTE0NCw0
MyArMTQyLDk4IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpwZXJmb3JtVGFza1N5bmMoRnVu
Y3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbi53
YWl0KG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXgpOwogfQogCi1ib29sIENvbXBvc2l0aW5n
UnVuTG9vcDo6aXNBY3RpdmUoKQordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxlVXBk
YXRlKCkKIHsKLSAgICByZXR1cm4gbV91cGRhdGVTdGF0ZS5sb2FkKCkgIT0gVXBkYXRlU3RhdGU6
OkNvbXBsZXRlZDsKKyAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fc3RhdGUubG9jayk7Cisg
ICAgc2NoZWR1bGVVcGRhdGUoc3RhdGVMb2NrZXIpOwogfQogCi12b2lkIENvbXBvc2l0aW5nUnVu
TG9vcDo6c2NoZWR1bGVVcGRhdGUoKQordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxl
VXBkYXRlKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogewotICAgIGlmIChtX3VwZGF0ZVN0YXRl
LmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVTdGF0ZTo6Q29tcGxldGVkLCBVcGRhdGVTdGF0
ZTo6SW5Qcm9ncmVzcykgPT0gVXBkYXRlU3RhdGU6OkNvbXBsZXRlZCkgeworICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZUxvY2tlcik7CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUudXBkYXRlU3RhdGUpIHsK
KyAgICBjYXNlIFVwZGF0ZVN0YXRlOjpJZGxlOgorICAgICAgICBtX3N0YXRlLnVwZGF0ZVN0YXRl
ID0gVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDsKICAgICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9u
ZVNob3QoMCk7CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV91cGRhdGVTdGF0
ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MsIFVwZGF0ZVN0
YXRlOjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uKSA9PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykK
KyAgICBjYXNlIFVwZGF0ZVN0YXRlOjpTY2hlZHVsZWQ6CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzOgorICAgIGNhc2UgVXBkYXRlU3RhdGU6OlBlbmRp
bmdDb21wbGV0aW9uOgorICAgICAgICBtX3N0YXRlLnBlbmRpbmdVcGRhdGUgPSB0cnVlOwogICAg
ICAgICByZXR1cm47CisgICAgfQogfQogCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVw
ZGF0ZXMoKQogeworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3RhdGUubG9jayk7CiAgICAgbV91
cGRhdGVUaW1lci5zdG9wKCk7Ci0gICAgbV91cGRhdGVTdGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6
Q29tcGxldGVkKTsKKyAgICBtX3N0YXRlLmNvbXBvc2l0aW9uU3RhdGUgPSBDb21wb3NpdGlvblN0
YXRlOjpJZGxlOworICAgIG1fc3RhdGUudXBkYXRlU3RhdGUgPSBVcGRhdGVTdGF0ZTo6SWRsZTsK
KyAgICBtX3N0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBDb21wb3NpdGlu
Z1J1bkxvb3A6OnVwZGF0ZUNvbXBsZXRlZCgpCit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6dXBk
YXRlQ29tcGxldGVkKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogewotICAgIGlmIChtX3VwZGF0
ZVN0YXRlLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcywgVXBk
YXRlU3RhdGU6OkNvbXBsZXRlZCkgPT0gVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MpCisgICAgVU5V
U0VEX1BBUkFNKHN0YXRlTG9ja2VyKTsKKworICAgIHN3aXRjaCAobV9zdGF0ZS51cGRhdGVTdGF0
ZSkgeworICAgIGNhc2UgVXBkYXRlU3RhdGU6OklkbGU6CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6
U2NoZWR1bGVkOgogICAgICAgICByZXR1cm47CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6SW5Qcm9n
cmVzczoKKyAgICAgICAgaWYgKG1fc3RhdGUuY29tcG9zaXRpb25TdGF0ZSA9PSBDb21wb3NpdGlv
blN0YXRlOjpJblByb2dyZXNzKSB7CisgICAgICAgICAgICBtX3N0YXRlLnVwZGF0ZVN0YXRlID0g
VXBkYXRlU3RhdGU6OlBlbmRpbmdDb21wbGV0aW9uOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAKLSAgICBpZiAobV91cGRhdGVTdGF0ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBk
YXRlU3RhdGU6OlBlbmRpbmdBZnRlckNvbXBsZXRpb24sIFVwZGF0ZVN0YXRlOjpJblByb2dyZXNz
KSA9PSBVcGRhdGVTdGF0ZTo6UGVuZGluZ0FmdGVyQ29tcGxldGlvbikgewotICAgICAgICBtX3Vw
ZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgaWYgKG1fc3RhdGUucGVuZGluZ1Vw
ZGF0ZSkgeworICAgICAgICAgICAgbV9zdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CisgICAg
ICAgICAgICBtX3N0YXRlLnVwZGF0ZVN0YXRlID0gVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDsKKyAg
ICAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9zdGF0ZS51cGRhdGVTdGF0ZSA9IFVwZGF0ZVN0
YXRlOjpJZGxlOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6UGVuZGlu
Z0NvbXBsZXRpb246CiAgICAgICAgIHJldHVybjsKICAgICB9Cit9CisKK3ZvaWQgQ29tcG9zaXRp
bmdSdW5Mb29wOjpjb21wb3NpdGlvbkNvbXBsZXRlZChMb2NrSG9sZGVyJiBzdGF0ZUxvY2tlcikK
K3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGVMb2NrZXIpOworCisgICAgbV9zdGF0ZS5jb21wb3Np
dGlvblN0YXRlID0gQ29tcG9zaXRpb25TdGF0ZTo6SWRsZTsKKworICAgIHN3aXRjaCAobV9zdGF0
ZS51cGRhdGVTdGF0ZSkgeworICAgIGNhc2UgVXBkYXRlU3RhdGU6OklkbGU6CisgICAgY2FzZSBV
cGRhdGVTdGF0ZTo6U2NoZWR1bGVkOgorICAgIGNhc2UgVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3M6
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFVwZGF0ZVN0YXRlOjpQZW5kaW5nQ29tcGxldGlv
bjoKKyAgICAgICAgaWYgKG1fc3RhdGUucGVuZGluZ1VwZGF0ZSkgeworICAgICAgICAgICAgbV9z
dGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICBtX3N0YXRlLnVwZGF0ZVN0
YXRlID0gVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDsKKyAgICAgICAgICAgIG1fdXBkYXRlVGltZXIu
c3RhcnRPbmVTaG90KDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgbV9zdGF0ZS51cGRhdGVTdGF0ZSA9IFVwZGF0
ZVN0YXRlOjpJZGxlOworICAgICAgICByZXR1cm47CisgICAgfQogfQogCiB2b2lkIENvbXBvc2l0
aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCgpCiB7CisgICAgeworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBtX3N0YXRlLmNvbXBvc2l0aW9uU3Rh
dGUgPSBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzOworICAgICAgICBtX3N0YXRlLnVwZGF0
ZVN0YXRlID0gVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3M7CisgICAgfQogICAgIG1fdXBkYXRlRnVu
Y3Rpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4IGZiODE1MTg0NDg1NWRjMDIxNDc0YjM5OWMxMzZi
OTdmOTlhZTYwZGUuLmQzNzA5MDFhODMyZjU0ZGUwZjg1ZjQ0OTMwM2JjYjhjYzZkM2JiOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdS
dW5Mb29wLmgKQEAgLTQ5LDI2ICs0OSw0MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtVGFz
ayhGdW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB2b2lkIHBlcmZvcm1UYXNrU3luYyhGdW5jdGlv
bjx2b2lkICgpPiYmKTsKIAotICAgIGJvb2wgaXNBY3RpdmUoKTsKKworICAgIExvY2smIHN0YXRl
TG9jaygpIHsgcmV0dXJuIG1fc3RhdGUubG9jazsgfQorCiAgICAgdm9pZCBzY2hlZHVsZVVwZGF0
ZSgpOworICAgIHZvaWQgc2NoZWR1bGVVcGRhdGUoTG9ja0hvbGRlciYpOwogICAgIHZvaWQgc3Rv
cFVwZGF0ZXMoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcGxldGVkKCk7CisgICAgdm9pZCB1cGRh
dGVDb21wbGV0ZWQoTG9ja0hvbGRlciYpOworICAgIHZvaWQgY29tcG9zaXRpb25Db21wbGV0ZWQo
TG9ja0hvbGRlciYpOwogCiBwcml2YXRlOgorICAgIGVudW0gY2xhc3MgQ29tcG9zaXRpb25TdGF0
ZSB7CisgICAgICAgIElkbGUsCisgICAgICAgIEluUHJvZ3Jlc3MsCisgICAgfTsKICAgICBlbnVt
IGNsYXNzIFVwZGF0ZVN0YXRlIHsKLSAgICAgICAgQ29tcGxldGVkLAorICAgICAgICBJZGxlLAor
ICAgICAgICBTY2hlZHVsZWQsCiAgICAgICAgIEluUHJvZ3Jlc3MsCi0gICAgICAgIFBlbmRpbmdB
ZnRlckNvbXBsZXRpb24sCisgICAgICAgIFBlbmRpbmdDb21wbGV0aW9uLAogICAgIH07CiAKICAg
ICB2b2lkIHVwZGF0ZVRpbWVyRmlyZWQoKTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPENvbXBvc2l0
aW5nUnVuTG9vcD4gbV91cGRhdGVUaW1lcjsKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1f
dXBkYXRlRnVuY3Rpb247Ci0gICAgQXRvbWljPFVwZGF0ZVN0YXRlPiBtX3VwZGF0ZVN0YXRlOwog
ICAgIExvY2sgbV9kaXNwYXRjaFN5bmNDb25kaXRpb25NdXRleDsKICAgICBDb25kaXRpb24gbV9k
aXNwYXRjaFN5bmNDb25kaXRpb247CisKKyAgICBzdHJ1Y3QgeworICAgICAgICBMb2NrIGxvY2s7
CisgICAgICAgIENvbXBvc2l0aW9uU3RhdGUgY29tcG9zaXRpb25TdGF0ZSB7IENvbXBvc2l0aW9u
U3RhdGU6OklkbGUgfTsKKyAgICAgICAgVXBkYXRlU3RhdGUgdXBkYXRlU3RhdGUgeyBVcGRhdGVT
dGF0ZTo6SWRsZSB9OworICAgICAgICBib29sIHBlbmRpbmdVcGRhdGUgeyBmYWxzZSB9OworICAg
IH0gbV9zdGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRl
eCA5NDZmNjM2MDI4NjRjZWYxZjEzM2E2NWU4ZGRjODNhYTM5YzcwOGMzLi5jMWFhMTI0Mzg5OWYw
YjVmODQyZWRlYmJlNzJiZmY4ZTQzYjQwOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMjI3LDEwICsy
MjcsMTQgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRlRmluaXNoZWQoKQog
ICAgICAgICB8fCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvci0+cmVxdWlyZXNEaXNwbGF5UmVmcmVz
aENhbGxiYWNrKCk7CiAgICAgYm9vbCBzaG91bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldp
dGhDbGllbnQgPSBtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5sb2FkKCk7
CiAKKyAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdGF0
ZUxvY2soKSk7CisKICAgICBpZiAoc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNr
KQogICAgICAgICBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvci0+ZGlzcGF0Y2hEaXNwbGF5UmVmcmVz
aENhbGxiYWNrKCk7CiAgICAgaWYgKCFzaG91bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldp
dGhDbGllbnQgJiYgIW1faW5Gb3JjZVJlcGFpbnQpCi0gICAgICAgIG1fY29tcG9zaXRpbmdSdW5M
b29wLT51cGRhdGVDb21wbGV0ZWQoKTsKKyAgICAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnVw
ZGF0ZUNvbXBsZXRlZChzdGF0ZUxvY2tlcik7CisKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+
Y29tcG9zaXRpb25Db21wbGV0ZWQoc3RhdGVMb2NrZXIpOwogfQogCiB2b2lkIFRocmVhZGVkQ29t
cG9zaXRvcjo6dXBkYXRlU2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUm
IHN0YXRlKQpAQCAtMjY4LDIzICsyNzIsMjYgQEAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpkaXNwbGF5UmVmcmVzaE1vbml0b3IKICAg
ICByZXR1cm4gbV9kaXNwbGF5UmVmcmVzaE1vbml0b3IuY29weVJlZigpOwogfQogCi12b2lkIFRo
cmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTmV4dEZyYW1lSWZOZWVkZWQoKQordm9pZCBUaHJlYWRl
ZENvbXBvc2l0b3I6OnJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoKQogewotICAg
IGlmIChtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHRydWUs
IGZhbHNlKSkKLSAgICAgICAgbV9zY2VuZS0+cmVuZGVyTmV4dEZyYW1lKCk7CisgICAgTG9ja0hv
bGRlciBzdGF0ZUxvY2tlcihtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RhdGVMb2NrKCkpOworICAg
IG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LnN0b3JlKHRydWUpOworICAg
IG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZShzdGF0ZUxvY2tlcik7CiB9CiAK
LXZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpjb21wbGV0ZUNvb3JkaW5hdGVkVXBkYXRlSWZOZWVk
ZWQoKQordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRv
clVwZGF0ZShib29sIGhhc0JlZW5SZXNjaGVkdWxlZCkKIHsKKyAgICBpZiAobV9jbGllbnRSZW5k
ZXJzTmV4dEZyYW1lLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyh0cnVlLCBmYWxzZSkpCisgICAgICAg
IG1fc2NlbmUtPnJlbmRlck5leHRGcmFtZSgpOworCisgICAgTG9ja0hvbGRlciBzdGF0ZUxvY2tl
cihtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RhdGVMb2NrKCkpOwogICAgIGlmIChtX2Nvb3JkaW5h
dGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5jb21wYXJlRXhjaGFuZ2VTdHJvbmcodHJ1ZSwg
ZmFsc2UpKQotICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+dXBkYXRlQ29tcGxldGVkKCk7
Ci19CisgICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT51cGRhdGVDb21wbGV0ZWQoc3RhdGVM
b2NrZXIpOwogCi12b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Y29vcmRpbmF0ZVVwZGF0ZUNvbXBs
ZXRpb25XaXRoQ2xpZW50KCkKLXsKLSAgICBtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0
aENsaWVudC5zdG9yZSh0cnVlKTsKLSAgICBpZiAoIW1fY29tcG9zaXRpbmdSdW5Mb29wLT5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsK
KyAgICBpZiAoaGFzQmVlblJlc2NoZWR1bGVkKSB7CisgICAgICAgIG1fY29vcmRpbmF0ZVVwZGF0
ZUNvbXBsZXRpb25XaXRoQ2xpZW50LnN0b3JlKHRydWUpOworICAgICAgICBtX2NvbXBvc2l0aW5n
UnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoc3RhdGVMb2NrZXIpOworICAgIH0KIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmgKaW5kZXggOThhMzhlNzVmNzcxMDRiMjZkMzNkODU5NWRmOWJiMWMyYzZhMDk2Mi4u
YTJhMzIzOTAxNTNlYjcxYjU4ODg0MTExZTkxYTViNzYyOWFjN2QyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApAQCAt
ODgsOSArODgsOCBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SKQogICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3I+IGRpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7Ci0g
ICAgdm9pZCByZW5kZXJOZXh0RnJhbWVJZk5lZWRlZCgpOwotICAgIHZvaWQgY29tcGxldGVDb29y
ZGluYXRlZFVwZGF0ZUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBjb29yZGluYXRlVXBkYXRlQ29tcGxl
dGlvbldpdGhDbGllbnQoKTsKKyAgICB2b2lkIHJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JV
cGRhdGUoKTsKKyAgICB2b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShib29s
IGhhc0JlZW5SZXNjaGVkdWxlZCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZnJhbWVDb21wbGV0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggMGVlODRmYzIyZDhhZmU2
NTAyNmY4MjhkYTY1Y2M1YmY1ODQ3MWMyYy4uY2Q2MDg2NGFiZmUzZDEwODNjZmU1OWQxNjNjOTI2
OGU1MzlkMWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIGJvb2wgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2soKQogICAgIHNldElzU2NoZWR1bGVkKHRydWUpOwogCiAgICAgaWYgKGlzUHJl
dmlvdXNGcmFtZURvbmUoKSkKLSAgICAgICAgbV9jb21wb3NpdG9yLT5jb29yZGluYXRlVXBkYXRl
Q29tcGxldGlvbldpdGhDbGllbnQoKTsKKyAgICAgICAgbV9jb21wb3NpdG9yLT5yZXF1ZXN0RGlz
cGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTkx
LDEyICs5MSwxNCBAQCB2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5
UmVmcmVzaENhbGxiYWNrKCkKICAgICBpZiAoc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3Rp
ZmljYXRpb24pCiAgICAgICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6aGFuZGxlRGlzcGxheVJl
ZnJlc2hlZE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZCh0aGlzKTsKIAotICAgIGlmIChtX2NvbXBv
c2l0b3IpIHsKLSAgICAgICAgbV9jb21wb3NpdG9yLT5yZW5kZXJOZXh0RnJhbWVJZk5lZWRlZCgp
OwotICAgICAgICBtX2NvbXBvc2l0b3ItPmNvbXBsZXRlQ29vcmRpbmF0ZWRVcGRhdGVJZk5lZWRl
ZCgpOwotICAgICAgICBpZiAoaXNTY2hlZHVsZWQoKSkKLSAgICAgICAgICAgIG1fY29tcG9zaXRv
ci0+Y29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50KCk7CisgICAgYm9vbCBoYXNC
ZWVuUmVzY2hlZHVsZWQgPSBmYWxzZTsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG11dGV4KCkpOworICAgICAgICBoYXNCZWVuUmVzY2hlZHVsZWQgPSBpc1NjaGVkdWxlZCgpOwog
ICAgIH0KKworICAgIGlmIChtX2NvbXBvc2l0b3IpCisgICAgICAgIG1fY29tcG9zaXRvci0+aGFu
ZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGhhc0JlZW5SZXNjaGVkdWxlZCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317691</attachid>
            <date>2017-08-09 03:08:38 -0700</date>
            <delta_ts>2017-08-11 04:39:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-172448-20170809120837.patch</filename>
            <type>text/plain</type>
            <size>16948</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhN2FjNjM0ZDMwNTdmMzlh
MTVkYzAxZDk3ZTJlNzQ3MTk1N2RkMjUuLjkzNmZhZDMyMWY0ZTdjM2ZmNGMyZTIzODBmODg4M2I1
ZjQyZGIzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTctMDgtMDkgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBvc2l0
b3JdIEltcHJvdmUgY29tcG9zaXRpb24gYW5kIHVwZGF0ZSBzdGF0ZSBoYW5kbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNDQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpDb21wb3NpdGluZ1J1bkxvb3Ap
OgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxlVXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcyk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlQ29tcGxldGVkKToKKyAgICAg
ICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpjb21wb3NpdGlvbkNvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6aXNBY3RpdmUpOiBEZWxldGVkLgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9D
b21wb3NpdGluZ1J1bkxvb3AuaDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29w
OjpzdGF0ZUxvY2spOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X2Rpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9z
aXRvcjo6c2NlbmVVcGRhdGVGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29t
cG9zaXRvcjo6dXBkYXRlU2NlbmVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29t
cG9zaXRvcjo6cmVxdWVzdERpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6aGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBk
YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJOZXh0RnJh
bWVJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRv
cjo6Y29tcGxldGVDb29yZGluYXRlZFVwZGF0ZUlmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpjb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldp
dGhDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlRo
cmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENhbGxiYWNrKToKKwog
MjAxNy0wOC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIwMzkzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29t
cG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXggNGUw
Y2IwZmUyMDYyZTljMzY1NDIwNGMzMTJlOTM2MzEzZGNmZDdlOC4uNjFhZGI0OWViODgzNjExOTlh
NTVhNDdjMjhjMDI5YjU1NTk3NTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0xMDksOCArMTA5LDYgQEAg
Q29tcG9zaXRpbmdSdW5Mb29wOjpDb21wb3NpdGluZ1J1bkxvb3AoRnVuY3Rpb248dm9pZCAoKT4m
JiB1cGRhdGVGdW5jdGlvbikKICAgICA6IG1fdXBkYXRlVGltZXIoV29ya1F1ZXVlUG9vbDo6c2lu
Z2xldG9uKCkucnVuTG9vcCh0aGlzKSwgdGhpcywgJkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRl
VGltZXJGaXJlZCkKICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1cGRhdGVGdW5jdGlv
bikpCiB7Ci0gICAgbV91cGRhdGVTdGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKTsK
LQogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgbV91cGRhdGVUaW1lci5zZXRQcmlvcml0
eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhyZWFkVXBkYXRlVGltZXIpOwog
ICAgIG1fdXBkYXRlVGltZXIuc2V0TmFtZSgiW1dlYktpdF0gQ29tcG9zaXRpbmdSdW5Mb29wIik7
CkBAIC0xNDQsNDMgKzE0Miw5OCBAQCB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6cGVyZm9ybVRh
c2tTeW5jKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgbV9kaXNwYXRjaFN5bmND
b25kaXRpb24ud2FpdChtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11dGV4KTsKIH0KIAotYm9vbCBD
b21wb3NpdGluZ1J1bkxvb3A6OmlzQWN0aXZlKCkKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpz
Y2hlZHVsZVVwZGF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1fdXBkYXRlU3RhdGUubG9hZCgpICE9IFVw
ZGF0ZVN0YXRlOjpDb21wbGV0ZWQ7CisgICAgTG9ja0hvbGRlciBzdGF0ZUxvY2tlcihtX3N0YXRl
LmxvY2spOworICAgIHNjaGVkdWxlVXBkYXRlKHN0YXRlTG9ja2VyKTsKIH0KIAotdm9pZCBDb21w
b3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxlVXBkYXRlKCkKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29w
OjpzY2hlZHVsZVVwZGF0ZShMb2NrSG9sZGVyJiBzdGF0ZUxvY2tlcikKIHsKLSAgICBpZiAobV91
cGRhdGVTdGF0ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6OkNvbXBsZXRlZCwg
VXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MpID09IFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQpIHsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdGVMb2NrZXIpOworCisgICAgc3dpdGNoIChtX3N0YXRlLnVwZGF0
ZSkgeworICAgIGNhc2UgVXBkYXRlU3RhdGU6OklkbGU6CisgICAgICAgIG1fc3RhdGUudXBkYXRl
ID0gVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDsKICAgICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9u
ZVNob3QoMCk7CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV91cGRhdGVTdGF0
ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MsIFVwZGF0ZVN0
YXRlOjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uKSA9PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykK
KyAgICBjYXNlIFVwZGF0ZVN0YXRlOjpTY2hlZHVsZWQ6CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzOgorICAgIGNhc2UgVXBkYXRlU3RhdGU6OlBlbmRp
bmdDb21wbGV0aW9uOgorICAgICAgICBtX3N0YXRlLnBlbmRpbmdVcGRhdGUgPSB0cnVlOwogICAg
ICAgICByZXR1cm47CisgICAgfQogfQogCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVw
ZGF0ZXMoKQogeworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3RhdGUubG9jayk7CiAgICAgbV91
cGRhdGVUaW1lci5zdG9wKCk7Ci0gICAgbV91cGRhdGVTdGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6
Q29tcGxldGVkKTsKKyAgICBtX3N0YXRlLmNvbXBvc2l0aW9uID0gQ29tcG9zaXRpb25TdGF0ZTo6
SWRsZTsKKyAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpJZGxlOworICAgIG1fc3Rh
dGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlOwogfQogCi12b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6
dXBkYXRlQ29tcGxldGVkKCkKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVDb21wbGV0
ZWQoTG9ja0hvbGRlciYgc3RhdGVMb2NrZXIpCiB7Ci0gICAgaWYgKG1fdXBkYXRlU3RhdGUuY29t
cGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzLCBVcGRhdGVTdGF0ZTo6
Q29tcGxldGVkKSA9PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykKKyAgICBVTlVTRURfUEFSQU0o
c3RhdGVMb2NrZXIpOworCisgICAgc3dpdGNoIChtX3N0YXRlLnVwZGF0ZSkgeworICAgIGNhc2Ug
VXBkYXRlU3RhdGU6OklkbGU6CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6U2NoZWR1bGVkOgogICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzczoKKyAgICAgICAg
aWYgKG1fc3RhdGUuY29tcG9zaXRpb24gPT0gQ29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcykg
eworICAgICAgICAgICAgbV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6UGVuZGluZ0NvbXBs
ZXRpb247CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIGlmIChtX3VwZGF0
ZVN0YXRlLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVTdGF0ZTo6UGVuZGluZ0FmdGVyQ29t
cGxldGlvbiwgVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MpID09IFVwZGF0ZVN0YXRlOjpQZW5kaW5n
QWZ0ZXJDb21wbGV0aW9uKSB7Ci0gICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDAp
OworICAgICAgICBpZiAobV9zdGF0ZS5wZW5kaW5nVXBkYXRlKSB7CisgICAgICAgICAgICBtX3N0
YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fc3RhdGUudXBkYXRlID0g
VXBkYXRlU3RhdGU6OlNjaGVkdWxlZDsKKyAgICAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRP
bmVTaG90KDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9z
dGF0ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6SWRsZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVXBkYXRlU3RhdGU6OlBlbmRpbmdDb21wbGV0aW9uOgogICAgICAgICByZXR1cm47CiAgICAg
fQorfQorCit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6Y29tcG9zaXRpb25Db21wbGV0ZWQoTG9j
a0hvbGRlciYgc3RhdGVMb2NrZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlTG9ja2VyKTsK
KworICAgIG1fc3RhdGUuY29tcG9zaXRpb24gPSBDb21wb3NpdGlvblN0YXRlOjpJZGxlOworCisg
ICAgc3dpdGNoIChtX3N0YXRlLnVwZGF0ZSkgeworICAgIGNhc2UgVXBkYXRlU3RhdGU6OklkbGU6
CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6U2NoZWR1bGVkOgorICAgIGNhc2UgVXBkYXRlU3RhdGU6
OkluUHJvZ3Jlc3M6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFVwZGF0ZVN0YXRlOjpQZW5k
aW5nQ29tcGxldGlvbjoKKyAgICAgICAgaWYgKG1fc3RhdGUucGVuZGluZ1VwZGF0ZSkgeworICAg
ICAgICAgICAgbV9zdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICBtX3N0
YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpTY2hlZHVsZWQ7CisgICAgICAgICAgICBtX3VwZGF0
ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBk
YXRlU3RhdGU6OklkbGU7CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIHZvaWQgQ29tcG9z
aXRpbmdSdW5Mb29wOjp1cGRhdGVUaW1lckZpcmVkKCkKIHsKKyAgICB7CisgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc3RhdGUubG9jayk7CisgICAgICAgIG1fc3RhdGUuY29tcG9zaXRpb24g
PSBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzOworICAgICAgICBtX3N0YXRlLnVwZGF0ZSA9
IFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzOworICAgIH0KICAgICBtX3VwZGF0ZUZ1bmN0aW9uKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRp
bmdSdW5Mb29wLmgKaW5kZXggMWY4NmJmZjU5NzQ1NzM4MmNhZDJhZTQwNmM3MTJmNzA3NDYyNTIy
MS4uZjc1NjY1YzRmODdjYzkwMGExYzJiOGYwMjAyOTUyZGVlZThjMWJmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAg
LTQ4LDI2ICs0OCw0MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtVGFzayhGdW5jdGlvbjx2
b2lkICgpPiYmKTsKICAgICB2b2lkIHBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2b2lkICgpPiYm
KTsKIAotICAgIGJvb2wgaXNBY3RpdmUoKTsKKyAgICBMb2NrJiBzdGF0ZUxvY2soKSB7IHJldHVy
biBtX3N0YXRlLmxvY2s7IH0KKwogICAgIHZvaWQgc2NoZWR1bGVVcGRhdGUoKTsKKyAgICB2b2lk
IHNjaGVkdWxlVXBkYXRlKExvY2tIb2xkZXImKTsKICAgICB2b2lkIHN0b3BVcGRhdGVzKCk7CiAK
LSAgICB2b2lkIHVwZGF0ZUNvbXBsZXRlZCgpOworICAgIHZvaWQgdXBkYXRlQ29tcGxldGVkKExv
Y2tIb2xkZXImKTsKKyAgICB2b2lkIGNvbXBvc2l0aW9uQ29tcGxldGVkKExvY2tIb2xkZXImKTsK
IAogcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIENvbXBvc2l0aW9uU3RhdGUgeworICAgICAgICBJ
ZGxlLAorICAgICAgICBJblByb2dyZXNzLAorICAgIH07CiAgICAgZW51bSBjbGFzcyBVcGRhdGVT
dGF0ZSB7Ci0gICAgICAgIENvbXBsZXRlZCwKKyAgICAgICAgSWRsZSwKKyAgICAgICAgU2NoZWR1
bGVkLAogICAgICAgICBJblByb2dyZXNzLAotICAgICAgICBQZW5kaW5nQWZ0ZXJDb21wbGV0aW9u
LAorICAgICAgICBQZW5kaW5nQ29tcGxldGlvbiwKICAgICB9OwogCiAgICAgdm9pZCB1cGRhdGVU
aW1lckZpcmVkKCk7CiAKICAgICBSdW5Mb29wOjpUaW1lcjxDb21wb3NpdGluZ1J1bkxvb3A+IG1f
dXBkYXRlVGltZXI7CiAgICAgRnVuY3Rpb248dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKLSAg
ICBBdG9taWM8VXBkYXRlU3RhdGU+IG1fdXBkYXRlU3RhdGU7CiAgICAgTG9jayBtX2Rpc3BhdGNo
U3luY0NvbmRpdGlvbk11dGV4OwogICAgIENvbmRpdGlvbiBtX2Rpc3BhdGNoU3luY0NvbmRpdGlv
bjsKKworCisgICAgc3RydWN0IHsKKyAgICAgICAgTG9jayBsb2NrOworICAgICAgICBDb21wb3Np
dGlvblN0YXRlIGNvbXBvc2l0aW9uIHsgQ29tcG9zaXRpb25TdGF0ZTo6SWRsZSB9OworICAgICAg
ICBVcGRhdGVTdGF0ZSB1cGRhdGUgeyBVcGRhdGVTdGF0ZTo6SWRsZSB9OworICAgICAgICBib29s
IHBlbmRpbmdVcGRhdGUgeyBmYWxzZSB9OworICAgIH0gbV9zdGF0ZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggNTU1OTE0YmNjYzY3NzBkOWMyNjQ1NDZjM2Ux
NWU4NTFiNTRmNjJiMi4uYWU5OGUyOTA1OWYwM2I2Mjc5YWUwOTE5NTNhNTRkYjIwNWExNjIwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuY3BwCkBAIC02OCw5ICs2OCw2IEBAIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFk
ZWRDb21wb3NpdG9yKENsaWVudCYgY2xpZW50LCBXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBJCiAg
ICAgICAgIG1fYXR0cmlidXRlcy5uZWVkc1Jlc2l6ZSA9ICF2aWV3cG9ydFNpemUuaXNFbXB0eSgp
OwogICAgIH0KIAotICAgIG1fY2xpZW50UmVuZGVyc05leHRGcmFtZS5zdG9yZShmYWxzZSk7Ci0g
ICAgbV9jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQuc3RvcmUoZmFsc2UpOwot
CiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrU3luYyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIG1fc2NlbmUgPSBhZG9wdFJlZihu
ZXcgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKHRoaXMpKTsKICAgICAgICAgbV9uYXRpdmVTdXJm
YWNlSGFuZGxlID0gbV9jbGllbnQubmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKCk7
CkBAIC0yNDYsMTQgKzI0MywyMyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5
ZXJUcmVlKCkKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRlRmluaXNoZWQo
KQogewotICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrID0gbV9j
bGllbnRSZW5kZXJzTmV4dEZyYW1lLmxvYWQoKQotICAgICAgICB8fCBtX2Rpc3BsYXlSZWZyZXNo
TW9uaXRvci0+cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7Ci0gICAgYm9vbCBzaG91
bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgPSBtX2Nvb3JkaW5hdGVVcGRh
dGVDb21wbGV0aW9uV2l0aENsaWVudC5sb2FkKCk7CisgICAgYm9vbCBzaG91bGREaXNwYXRjaERp
c3BsYXlSZWZyZXNoQ2FsbGJhY2sgeyBmYWxzZSB9OworICAgIGJvb2wgc2hvdWxkQ29vcmRpbmF0
ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50IHsgZmFsc2UgfTsKKyAgICB7CisgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKKyAgICAgICAgc2hvdWxkRGlzcGF0
Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrID0gbV9hdHRyaWJ1dGVzLmNsaWVudFJlbmRlcnNOZXh0
RnJhbWUKKyAgICAgICAgICAgIHx8IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yLT5yZXF1aXJlc0Rp
c3BsYXlSZWZyZXNoQ2FsbGJhY2soKTsKKyAgICAgICAgc2hvdWxkQ29vcmRpbmF0ZVVwZGF0ZUNv
bXBsZXRpb25XaXRoQ2xpZW50ID0gbV9hdHRyaWJ1dGVzLmNvb3JkaW5hdGVVcGRhdGVDb21wbGV0
aW9uV2l0aENsaWVudDsKKyAgICB9CisKKyAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fY29t
cG9zaXRpbmdSdW5Mb29wLT5zdGF0ZUxvY2soKSk7CiAKICAgICBpZiAoc2hvdWxkRGlzcGF0Y2hE
aXNwbGF5UmVmcmVzaENhbGxiYWNrKQogICAgICAgICBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvci0+
ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CiAgICAgaWYgKCFzaG91bGRDb29yZGlu
YXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgJiYgIW1faW5Gb3JjZVJlcGFpbnQpCi0gICAg
ICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT51cGRhdGVDb21wbGV0ZWQoKTsKKyAgICAgICAgbV9j
b21wb3NpdGluZ1J1bkxvb3AtPnVwZGF0ZUNvbXBsZXRlZChzdGF0ZUxvY2tlcik7CisKKyAgICBt
X2NvbXBvc2l0aW5nUnVuTG9vcC0+Y29tcG9zaXRpb25Db21wbGV0ZWQoc3RhdGVMb2NrZXIpOwog
fQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlU2NlbmVTdGF0ZShjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQpAQCAtMjYyLDE1ICsyNjgsMTYgQEAgdm9pZCBU
aHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJiBzdGF0ZSkKICAgICBtX3NjZW5lLT5hcHBlbmRVcGRhdGUoW3RoaXMsIHNjZW5l
ID0gbWFrZVJlZigqbV9zY2VuZSksIHN0YXRlXSB7CiAgICAgICAgIHNjZW5lLT5jb21taXRTY2Vu
ZVN0YXRlKHN0YXRlKTsKIAotICAgICAgICBtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuc3RvcmUo
dHJ1ZSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKKyAg
ICAgICAgbV9hdHRyaWJ1dGVzLmNsaWVudFJlbmRlcnNOZXh0RnJhbWUgPSB0cnVlOworCiAgICAg
ICAgIC8vIERvIG5vdCBjaGFuZ2UgbV9jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGll
bnQgd2hpbGUgaW4gZm9yY2UgcmVwYWludC4KLSAgICAgICAgaWYgKG1faW5Gb3JjZVJlcGFpbnQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJvb2wgY29vcmRpbmF0ZVVwZGF0ZSA9IHN0
ZDo6YW55X29mKHN0YXRlLmxheWVyc1RvVXBkYXRlLmJlZ2luKCksIHN0YXRlLmxheWVyc1RvVXBk
YXRlLmVuZCgpLAorICAgICAgICBib29sIGNvb3JkaW5hdGVVcGRhdGUgPSAhbV9pbkZvcmNlUmVw
YWludCAmJiBzdGQ6OmFueV9vZihzdGF0ZS5sYXllcnNUb1VwZGF0ZS5iZWdpbigpLCBzdGF0ZS5s
YXllcnNUb1VwZGF0ZS5lbmQoKSwKICAgICAgICAgICAgIFtdKGNvbnN0IHN0ZDo6cGFpcjxDb29y
ZGluYXRlZExheWVySUQsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlPiYgaXQpIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4gaXQuc2Vjb25kLnBsYXRmb3JtTGF5ZXJDaGFuZ2VkIHx8IGl0
LnNlY29uZC5wbGF0Zm9ybUxheWVyVXBkYXRlZDsKICAgICAgICAgICAgIH0pOwotICAgICAgICBt
X2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5zdG9yZShjb29yZGluYXRlVXBk
YXRlKTsKKworICAgICAgICBtX2F0dHJpYnV0ZXMuY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25X
aXRoQ2xpZW50IHw9IGNvb3JkaW5hdGVVcGRhdGU7CiAgICAgfSk7CiAKICAgICBtX2NvbXBvc2l0
aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTI5MSwyMyArMjk4LDQwIEBAIFJlZlB0
cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6ZGlz
cGxheVJlZnJlc2hNb25pdG9yCiAgICAgcmV0dXJuIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yLmNv
cHlSZWYoKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlck5leHRGcmFtZUlm
TmVlZGVkKCkKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZXF1ZXN0RGlzcGxheVJlZnJlc2hN
b25pdG9yVXBkYXRlKCkKIHsKLSAgICBpZiAobV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLmNvbXBh
cmVFeGNoYW5nZVN0cm9uZyh0cnVlLCBmYWxzZSkpCi0gICAgICAgIG1fc2NlbmUtPnJlbmRlck5l
eHRGcmFtZSgpOworICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9jb21wb3NpdGluZ1J1bkxv
b3AtPnN0YXRlTG9jaygpKTsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0
cmlidXRlcy5sb2NrKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmNvb3JkaW5hdGVVcGRhdGVDb21w
bGV0aW9uV2l0aENsaWVudCA9IHRydWU7CisgICAgfQorICAgIG1fY29tcG9zaXRpbmdSdW5Mb29w
LT5zY2hlZHVsZVVwZGF0ZShzdGF0ZUxvY2tlcik7CiB9CiAKLXZvaWQgVGhyZWFkZWRDb21wb3Np
dG9yOjpjb21wbGV0ZUNvb3JkaW5hdGVkVXBkYXRlSWZOZWVkZWQoKQordm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OmhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShib29sIGhhc0JlZW5S
ZXNjaGVkdWxlZCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhD
bGllbnQuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHRydWUsIGZhbHNlKSkKLSAgICAgICAgbV9jb21w
b3NpdGluZ1J1bkxvb3AtPnVwZGF0ZUNvbXBsZXRlZCgpOwotfQorICAgIGJvb2wgY2xpZW50UmVu
ZGVyc05leHRGcmFtZSB7IGZhbHNlIH07CisgICAgYm9vbCBjb29yZGluYXRlVXBkYXRlQ29tcGxl
dGlvbldpdGhDbGllbnQgeyBmYWxzZSB9OworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgICAgICBjbGllbnRSZW5kZXJzTmV4dEZyYW1lID0g
c3RkOjpleGNoYW5nZShtX2F0dHJpYnV0ZXMuY2xpZW50UmVuZGVyc05leHRGcmFtZSwgZmFsc2Up
OworICAgICAgICBjb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgPSBzdGQ6OmV4
Y2hhbmdlKG1fYXR0cmlidXRlcy5jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQs
IGZhbHNlKTsKKyAgICB9CiAKLXZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpjb29yZGluYXRlVXBk
YXRlQ29tcGxldGlvbldpdGhDbGllbnQoKQotewotICAgIG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBs
ZXRpb25XaXRoQ2xpZW50LnN0b3JlKHRydWUpOwotICAgIGlmICghbV9jb21wb3NpdGluZ1J1bkxv
b3AtPmlzQWN0aXZlKCkpCi0gICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVw
ZGF0ZSgpOworICAgIGlmIChjbGllbnRSZW5kZXJzTmV4dEZyYW1lKQorICAgICAgICBtX2NsaWVu
dC5yZW5kZXJOZXh0RnJhbWUoKTsKKworICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9jb21w
b3NpdGluZ1J1bkxvb3AtPnN0YXRlTG9jaygpKTsKKyAgICBpZiAoY29vcmRpbmF0ZVVwZGF0ZUNv
bXBsZXRpb25XaXRoQ2xpZW50KQorICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+dXBkYXRl
Q29tcGxldGVkKHN0YXRlTG9ja2VyKTsKKworICAgIGlmIChoYXNCZWVuUmVzY2hlZHVsZWQpIHsK
KyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxv
Y2spOworICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9u
V2l0aENsaWVudCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgbV9jb21wb3NpdGluZ1J1bkxv
b3AtPnNjaGVkdWxlVXBkYXRlKHN0YXRlTG9ja2VyKTsKKyAgICB9CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aAppbmRleCA1MTRjZTJkMTllZTgxMzlhNTBhYWYyYTAyYmVmMTdmM2E4NjQxZTZjLi5lNjEwMGY4
NzY4Y2IwZjZmZTBiZmMwZWE1Y2Y4M2U2MjY0ZTQ0NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApAQCAtODgsOSArODgs
OCBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQogICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGRpc3Bs
YXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7Ci0gICAgdm9pZCBy
ZW5kZXJOZXh0RnJhbWVJZk5lZWRlZCgpOwotICAgIHZvaWQgY29tcGxldGVDb29yZGluYXRlZFVw
ZGF0ZUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBjb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhD
bGllbnQoKTsKKyAgICB2b2lkIHJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoKTsK
KyAgICB2b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShib29sIGhhc0JlZW5S
ZXNjaGVkdWxlZCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZnJhbWVDb21wbGV0ZSgpOwpAQCAtMTI2
LDE0ICsxMjUsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07
CiAgICAgICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kIHsgdHJ1ZSB9OwogICAgICAgICBib29sIG5l
ZWRzUmVzaXplIHsgZmFsc2UgfTsKKworICAgICAgICBib29sIGNsaWVudFJlbmRlcnNOZXh0RnJh
bWUgeyBmYWxzZSB9OworICAgICAgICBib29sIGNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0
aENsaWVudCB7IGZhbHNlIH07CiAgICAgfSBtX2F0dHJpYnV0ZXM7CiAKICNpZiBVU0UoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgIFJlZjxUaHJlYWRlZERpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gbV9kaXNwbGF5UmVmcmVzaE1vbml0b3I7CiAjZW5kaWYKLQotICAg
IEF0b21pYzxib29sPiBtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWU7Ci0gICAgQXRvbWljPGJvb2w+
IG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggMGVlODRm
YzIyZDhhZmU2NTAyNmY4MjhkYTY1Y2M1YmY1ODQ3MWMyYy4uMjQ0ZjBiOGIzYjA1NDUwNjI0MmY0
NmJiYjgwZDk4MTYxOGZhZjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApA
QCAtNTQsNyArNTQsNyBAQCBib29sIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1
ZXN0UmVmcmVzaENhbGxiYWNrKCkKICAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKIAogICAgIGlm
IChpc1ByZXZpb3VzRnJhbWVEb25lKCkpCi0gICAgICAgIG1fY29tcG9zaXRvci0+Y29vcmRpbmF0
ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50KCk7CisgICAgICAgIG1fY29tcG9zaXRvci0+cmVx
dWVzdERpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6Omlu
dmFsaWRhdGUoKQogCiB2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5
UmVmcmVzaENhbGxiYWNrKCkKIHsKLSAgICBib29sIHNob3VsZEhhbmRsZURpc3BsYXlSZWZyZXNo
Tm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAgYm9vbCBzaG91bGRIYW5kbGVEaXNwbGF5UmVmcmVz
aE5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtdXRleCgpKTsKICAgICAgICAgc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRp
b24gPSBpc1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUoKTsKQEAgLTkxLDEyICs5
MSwxNCBAQCB2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVz
aENhbGxiYWNrKCkKICAgICBpZiAoc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRp
b24pCiAgICAgICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6aGFuZGxlRGlzcGxheVJlZnJlc2hl
ZE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZCh0aGlzKTsKIAotICAgIGlmIChtX2NvbXBvc2l0b3Ip
IHsKLSAgICAgICAgbV9jb21wb3NpdG9yLT5yZW5kZXJOZXh0RnJhbWVJZk5lZWRlZCgpOwotICAg
ICAgICBtX2NvbXBvc2l0b3ItPmNvbXBsZXRlQ29vcmRpbmF0ZWRVcGRhdGVJZk5lZWRlZCgpOwot
ICAgICAgICBpZiAoaXNTY2hlZHVsZWQoKSkKLSAgICAgICAgICAgIG1fY29tcG9zaXRvci0+Y29v
cmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50KCk7CisgICAgYm9vbCBoYXNCZWVuUmVz
Y2hlZHVsZWQgeyBmYWxzZSB9OworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobXV0
ZXgoKSk7CisgICAgICAgIGhhc0JlZW5SZXNjaGVkdWxlZCA9IGlzU2NoZWR1bGVkKCk7CiAgICAg
fQorCisgICAgaWYgKG1fY29tcG9zaXRvcikKKyAgICAgICAgbV9jb21wb3NpdG9yLT5oYW5kbGVE
aXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoaGFzQmVlblJlc2NoZWR1bGVkKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317924</attachid>
            <date>2017-08-11 04:39:23 -0700</date>
            <delta_ts>2017-08-14 03:23:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172448-20170811133922.patch</filename>
            <type>text/plain</type>
            <size>21980</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwZThhNzMyM2M3ZGJhZTM5
NmI2ZjRlNTA5ZjQ4N2Q4MmYzMzc5NWIuLjhhOGE3MjljOWM4NDBlYTI0Y2IxZDVkNTAxYTBkMTY4
NmI3Yjc2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTctMDgtMTEgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBvc2l0
b3JdIEltcHJvdmUgY29tcG9zaXRpb24gYW5kIHVwZGF0ZSBzdGF0ZSBoYW5kbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNDQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIFRocmVhZGVk
Q29tcG9zaXRvciBhbmQgcmVsYXRlZCBjbGFzc2VzLCB3ZSBub3cgdHJhY2sgY29tcG9zaXRpb24K
KyAgICAgICAgYW5kIHNjZW5lIHVwZGF0ZSBzdGF0ZXMgc2VwYXJhdGVseS4gVGhpcyBlbmFibGVz
IHByb3Blcmx5IHBpcGluZyBpbiB0aGUKKyAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yIG9i
amVjdCwgbGV2ZXJhZ2luZyBpdCBmb3IgYm90aCBkaXNwbGF5IHJlZnJlc2gKKyAgICAgICAgbm90
aWZpY2F0aW9ucyBhbmQgc2lnbmFsbGluZyB0byB0aGUgY2xpZW50IHRoYXQgdGhlIHNjZW5lIHVw
ZGF0ZSBpcworICAgICAgICBjb21wbGV0ZWQuCisKKyAgICAgICAgSW4gQ29tcG9zaXRpbmdSdW5M
b29wLCB0d28gc2VwYXJhdGUgc3RhdGVzIGFyZSBub3cgdXNlZCwgb25lIGZvcgorICAgICAgICBj
b21wb3NpdGluZyBhbmQgdGhlIG90aGVyIGZvciBzY2VuZSB1cGRhdGUuIEFjY2VzcyB0byBib3Ro
IHNob3VsZCBiZSBkb25lCisgICAgICAgIHdoaWxlIHRoZSByZWxhdGVkIExvY2sgb2JqZWN0IGlz
IGhlbGQuIFRoZSBwZW5kaW5nIHVwZGF0ZSBzdGF0ZSBpcyBhbHNvCisgICAgICAgIHRyYWNrZWQg
aW4gb3JkZXIgdG8gc2NoZWR1bGUgYW55IHJlcXVpcmVkIHVwZGF0ZXMgYXMgc29vbiBhcyB0aGUg
Y3VycmVudAorICAgICAgICBzdGF0ZSB1cGRhdGUgaXMgY29tcGxldGVkLgorCisgICAgICAgIElu
IFRocmVhZGVkQ29tcG9zaXRvciwgdGhlIGluZm9ybWF0aW9uIGFib3V0IGNsaWVudCBub3RpZmlj
YXRpb24gYW5kCisgICAgICAgIHVwZGF0ZSBjb21wbGV0aW9uIGNvb3JkaW5hdGlvbiBpcyBub3cg
YWxzbyBrZXB0IHVuZGVyIGEgTG9jayBvYmplY3QsCisgICAgICAgIG1vdmluZyBhd2F5IGZyb20g
YXRvbWljcy4gRGlzcGxheVJlZnJlc2hNb25pdG9yIGNhbiBub3cgdXRpbGl6ZSBqdXN0CisgICAg
ICAgIHR3byBtZXRob2RzIGluIG9yZGVyIHRvIGVpdGhlciBzY2hlZHVsZSBhbiB1cGRhdGUgb3Ig
cmVwb3J0IHRoYXQgdXBkYXRlCisgICAgICAgIGFzIGZpbmlzaGVkLgorCisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVu
TG9vcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRp
bmdSdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzY2hlZHVs
ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVwZGF0
ZXMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OmNvbXBvc2l0aW9uQ29t
cGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVDb21w
bGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OmlzQWN0aXZlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmg6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0
aW5nUnVuTG9vcDo6c3RhdGVMb2NrKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV9kaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRlRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvbXBvc2l0b3I6OnJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OmhhbmRsZURpc3BsYXlSZWZyZXNo
TW9uaXRvclVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6cmVu
ZGVyTmV4dEZyYW1lSWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRl
ZENvbXBvc2l0b3I6OmNvbXBsZXRlQ29vcmRpbmF0ZWRVcGRhdGVJZk5lZWRlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6Y29vcmRpbmF0ZVVwZGF0ZUNv
bXBsZXRpb25XaXRoQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmg6CisgICAg
ICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAo
V2ViS2l0OjpUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxs
YmFjayk6CisKIDIwMTctMDgtMTAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXN0b3JlZCBzdm46aWdub3JlIHZhbHVlcyB0aGF0IHdlbnQgbWlzc2luZyB3aGVu
IHRoZSBwcm9qZWN0IGdvdCByZW5hbWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5M
b29wLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXggNGUwY2IwZmUyMDYyZTlj
MzY1NDIwNGMzMTJlOTM2MzEzZGNmZDdlOC4uMDg4NGNjOTkyNDI3N2Y0MmJlZDdiZTZhNDgwOTQ4
NjJjZDMwMDVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0xMDksOCArMTA5LDYgQEAgQ29tcG9zaXRpbmdS
dW5Mb29wOjpDb21wb3NpdGluZ1J1bkxvb3AoRnVuY3Rpb248dm9pZCAoKT4mJiB1cGRhdGVGdW5j
dGlvbikKICAgICA6IG1fdXBkYXRlVGltZXIoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVu
TG9vcCh0aGlzKSwgdGhpcywgJkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCkK
ICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1cGRhdGVGdW5jdGlvbikpCiB7Ci0gICAg
bV91cGRhdGVTdGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKTsKLQogI2lmIFVTRShH
TElCX0VWRU5UX0xPT1ApCiAgICAgbV91cGRhdGVUaW1lci5zZXRQcmlvcml0eShSdW5Mb29wU291
cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhyZWFkVXBkYXRlVGltZXIpOwogICAgIG1fdXBkYXRl
VGltZXIuc2V0TmFtZSgiW1dlYktpdF0gQ29tcG9zaXRpbmdSdW5Mb29wIik7CkBAIC0xNDQsNDMg
KzE0MiwxMTkgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnBlcmZvcm1UYXNrU3luYyhGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uLndh
aXQobV9kaXNwYXRjaFN5bmNDb25kaXRpb25NdXRleCk7CiB9CiAKLWJvb2wgQ29tcG9zaXRpbmdS
dW5Mb29wOjppc0FjdGl2ZSgpCit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRh
dGUoKQogewotICAgIHJldHVybiBtX3VwZGF0ZVN0YXRlLmxvYWQoKSAhPSBVcGRhdGVTdGF0ZTo6
Q29tcGxldGVkOworICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAg
ICBzY2hlZHVsZVVwZGF0ZShzdGF0ZUxvY2tlcik7CiB9CiAKLXZvaWQgQ29tcG9zaXRpbmdSdW5M
b29wOjpzY2hlZHVsZVVwZGF0ZSgpCit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVV
cGRhdGUoTG9ja0hvbGRlciYgc3RhdGVMb2NrZXIpCiB7Ci0gICAgaWYgKG1fdXBkYXRlU3RhdGUu
Y29tcGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQsIFVwZGF0ZVN0YXRl
OjpJblByb2dyZXNzKSA9PSBVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKSB7CisgICAgLy8gQW4gdXBk
YXRlIHdhcyByZXF1ZXN0ZWQuIERlcGVuZGluZyBvbiB0aGUgc3RhdGU6CisgICAgLy8gIC0gaWYg
SWRsZSwgZW50ZXIgdGhlIFNjaGVkdWxlZCBzdGF0ZSBhbmQgc3RhcnQgdGhlIHVwZGF0ZSB0aW1l
ciwKKyAgICAvLyAgLSBpZiBTY2hlZHVsZWQsIGRvIG5vdGhpbmcsCisgICAgLy8gIC0gaWYgSW5Q
cm9ncmVzcyBvciBQZW5kaW5nQ29tcGxldGlvbiwgbWFyayBhbiB1cGRhdGUgYXMgcGVuZGluZywg
bWVhbmluZyBhbm90aGVyCisgICAgLy8gICAgdXBkYXRlIHdpbGwgYmUgc2NoZWR1bGVkIGFzIHNv
b24gYXMgdGhlIGN1cnJlbnQgb25lIGlzIGNvbXBsZXRlZC4KKworICAgIFVOVVNFRF9QQVJBTShz
dGF0ZUxvY2tlcik7CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUudXBkYXRlKSB7CisgICAgY2FzZSBV
cGRhdGVTdGF0ZTo6SWRsZToKKyAgICAgICAgbV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6
U2NoZWR1bGVkOwogICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX3VwZGF0ZVN0YXRlLmNvbXBhcmVFeGNoYW5n
ZVN0cm9uZyhVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcywgVXBkYXRlU3RhdGU6OlBlbmRpbmdBZnRl
ckNvbXBsZXRpb24pID09IFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzKQorICAgIGNhc2UgVXBkYXRl
U3RhdGU6OlNjaGVkdWxlZDoKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVXBkYXRlU3RhdGU6
OkluUHJvZ3Jlc3M6CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6UGVuZGluZ0NvbXBsZXRpb246Cisg
ICAgICAgIG1fc3RhdGUucGVuZGluZ1VwZGF0ZSA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CiB9CiAKIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcygpCiB7CisgICAg
Ly8gU3RvcCBldmVyeXRoaW5nLgorCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2Nr
KTsKICAgICBtX3VwZGF0ZVRpbWVyLnN0b3AoKTsKLSAgICBtX3VwZGF0ZVN0YXRlLnN0b3JlKFVw
ZGF0ZVN0YXRlOjpDb21wbGV0ZWQpOworICAgIG1fc3RhdGUuY29tcG9zaXRpb24gPSBDb21wb3Np
dGlvblN0YXRlOjpJZGxlOworICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6OklkbGU7
CisgICAgbV9zdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CiB9CiAKLXZvaWQgQ29tcG9zaXRp
bmdSdW5Mb29wOjp1cGRhdGVDb21wbGV0ZWQoKQordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OmNv
bXBvc2l0aW9uQ29tcGxldGVkKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogewotICAgIGlmICht
X3VwZGF0ZVN0YXRlLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVz
cywgVXBkYXRlU3RhdGU6OkNvbXBsZXRlZCkgPT0gVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MpCisg
ICAgLy8gQ29tcG9zaXRpb24gaGFzIGJlZW4gc2lnbmFsZWQgYXMgY29tcGxldGVkLCBwdXNoaW5n
IHRoZSBzdGF0ZSBpbnRvIElkbGUuCisgICAgLy8gRGVwZW5kaW5nIG9uIHRoZSBzdGF0ZSBvZiB0
aGUgc2NlbmUgdXBkYXRlOgorICAgIC8vICAtIGlmIElkbGUsIFNjaGVkdWxlZCBvciBJblByb2dy
ZXNzLCBkbyBub3RoaW5nLAorICAgIC8vICAtIGlmIFBlbmRpbmdDb21wbGV0aW9uLCBzY2hlZHVs
ZSBhIG5ldyB1cGRhdGUgaW4gY2FzZSBhIHBlbmRpbmcgdXBkYXRlIHdhcyBtYXJrZWQsCisgICAg
Ly8gICAgb3IgcHVzaCB0aGUgc2NlbmUgdXBkYXRlIHN0YXRlIGludG8gSWRsZSBvdGhlcndpc2Uu
CisKKyAgICBVTlVTRURfUEFSQU0oc3RhdGVMb2NrZXIpOworCisgICAgbV9zdGF0ZS5jb21wb3Np
dGlvbiA9IENvbXBvc2l0aW9uU3RhdGU6OklkbGU7CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUudXBk
YXRlKSB7CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6SWRsZToKKyAgICBjYXNlIFVwZGF0ZVN0YXRl
OjpTY2hlZHVsZWQ6CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzczoKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgVXBkYXRlU3RhdGU6OlBlbmRpbmdDb21wbGV0aW9uOgorICAgICAg
ICBpZiAobV9zdGF0ZS5wZW5kaW5nVXBkYXRlKSB7CisgICAgICAgICAgICBtX3N0YXRlLnBlbmRp
bmdVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3Rh
dGU6OlNjaGVkdWxlZDsKKyAgICAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDAp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBpZiAobV91cGRhdGVTdGF0
ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6OlBlbmRpbmdBZnRlckNvbXBsZXRp
b24sIFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzKSA9PSBVcGRhdGVTdGF0ZTo6UGVuZGluZ0FmdGVy
Q29tcGxldGlvbikgewotICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAg
ICAgICAgbV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6SWRsZTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KK30KKwordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZUNvbXBsZXRlZChM
b2NrSG9sZGVyJiBzdGF0ZUxvY2tlcikKK3sKKyAgICAvLyBTY2VuZSB1cGRhdGUgaGFzIGJlZW4g
c2lnbmFsZWQgYXMgY29tcGxldGVkLiBEZXBlbmRpbmcgb24gdGhlIHN0YXRlOgorICAgIC8vICAt
IGlmIElkbGUsIFNjaGVkdWxlZCBvciBJblByb2dyZXNzLCBkbyBub3RoaW5nLAorICAgIC8vICAt
IGlmIEluUHJvZ3Jlc3MsIHB1c2ggdGhlIHN0YXRlIGludG8gUGVuZGluZ0NvbXBsZXRpb24gaWYg
dGhlIGNvbXBvc2l0aW9uIHN0YXRlIGlzCisgICAgLy8gICAgSW5Qcm9ncmVzcywgb3RoZXJ3aXNl
IHNjaGVkdWxlIGEgbmV3IHVwZGF0ZSBpbiBjYXNlIGEgcGVuZGluZyB1cGRhdGUgd2FzIG1hcmtl
ZCwKKyAgICAvLyAgICBvdGhlcndpc2UgcHVzaCB0aGUgc2NlbmUgdXBkYXRlIHN0YXRlIGludG8g
SWRsZS4KKworICAgIFVOVVNFRF9QQVJBTShzdGF0ZUxvY2tlcik7CisKKyAgICBzd2l0Y2ggKG1f
c3RhdGUudXBkYXRlKSB7CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6SWRsZToKKyAgICBjYXNlIFVw
ZGF0ZVN0YXRlOjpTY2hlZHVsZWQ6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFVwZGF0ZVN0
YXRlOjpJblByb2dyZXNzOgorICAgICAgICBpZiAobV9zdGF0ZS5jb21wb3NpdGlvbiA9PSBDb21w
b3NpdGlvblN0YXRlOjpJblByb2dyZXNzKSB7CisgICAgICAgICAgICBtX3N0YXRlLnVwZGF0ZSA9
IFVwZGF0ZVN0YXRlOjpQZW5kaW5nQ29tcGxldGlvbjsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGlmIChtX3N0YXRl
LnBlbmRpbmdVcGRhdGUpIHsKKyAgICAgICAgICAgIG1fc3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZh
bHNlOworICAgICAgICAgICAgbV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6U2NoZWR1bGVk
OworICAgICAgICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0
YXRlOjpJZGxlOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBVcGRhdGVTdGF0ZTo6UGVuZGlu
Z0NvbXBsZXRpb246CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIHZvaWQgQ29tcG9zaXRp
bmdSdW5Mb29wOjp1cGRhdGVUaW1lckZpcmVkKCkKIHsKKyAgICB7CisgICAgICAgIC8vIEJvdGgg
Y29tcG9zaXRpb24gYW5kIHNjZW5lIHVwZGF0ZSBhcmUgbm93IGluIHByb2dyZXNzLgorICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBtX3N0YXRlLmNvbXBv
c2l0aW9uID0gQ29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzczsKKyAgICAgICAgbV9zdGF0ZS51
cGRhdGUgPSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzczsKKyAgICB9CiAgICAgbV91cGRhdGVGdW5j
dGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0Nv
bXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4IDFmODZiZmY1OTc0NTczODJjYWQyYWU0MDZjNzEyZjcw
NzQ2MjUyMjEuLjQyYzUyZjZiZTgyYjc4NmI1MGY5YTBhMmE4YWIyYmZhOGFiZjVkNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9v
cC5oCkBAIC00OCwyNiArNDgsNDEgQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybVRhc2soRnVu
Y3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCBwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9p
ZCAoKT4mJik7CiAKLSAgICBib29sIGlzQWN0aXZlKCk7CisgICAgTG9jayYgc3RhdGVMb2NrKCkg
eyByZXR1cm4gbV9zdGF0ZS5sb2NrOyB9CisKICAgICB2b2lkIHNjaGVkdWxlVXBkYXRlKCk7Cisg
ICAgdm9pZCBzY2hlZHVsZVVwZGF0ZShMb2NrSG9sZGVyJik7CiAgICAgdm9pZCBzdG9wVXBkYXRl
cygpOwogCi0gICAgdm9pZCB1cGRhdGVDb21wbGV0ZWQoKTsKKyAgICB2b2lkIGNvbXBvc2l0aW9u
Q29tcGxldGVkKExvY2tIb2xkZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBsZXRlZChMb2NrSG9s
ZGVyJik7CiAKIHByaXZhdGU6CisgICAgZW51bSBjbGFzcyBDb21wb3NpdGlvblN0YXRlIHsKKyAg
ICAgICAgSWRsZSwKKyAgICAgICAgSW5Qcm9ncmVzcywKKyAgICB9OwogICAgIGVudW0gY2xhc3Mg
VXBkYXRlU3RhdGUgewotICAgICAgICBDb21wbGV0ZWQsCisgICAgICAgIElkbGUsCisgICAgICAg
IFNjaGVkdWxlZCwKICAgICAgICAgSW5Qcm9ncmVzcywKLSAgICAgICAgUGVuZGluZ0FmdGVyQ29t
cGxldGlvbiwKKyAgICAgICAgUGVuZGluZ0NvbXBsZXRpb24sCiAgICAgfTsKIAogICAgIHZvaWQg
dXBkYXRlVGltZXJGaXJlZCgpOwogCiAgICAgUnVuTG9vcDo6VGltZXI8Q29tcG9zaXRpbmdSdW5M
b29wPiBtX3VwZGF0ZVRpbWVyOwogICAgIEZ1bmN0aW9uPHZvaWQgKCk+IG1fdXBkYXRlRnVuY3Rp
b247Ci0gICAgQXRvbWljPFVwZGF0ZVN0YXRlPiBtX3VwZGF0ZVN0YXRlOwogICAgIExvY2sgbV9k
aXNwYXRjaFN5bmNDb25kaXRpb25NdXRleDsKICAgICBDb25kaXRpb24gbV9kaXNwYXRjaFN5bmND
b25kaXRpb247CisKKworICAgIHN0cnVjdCB7CisgICAgICAgIExvY2sgbG9jazsKKyAgICAgICAg
Q29tcG9zaXRpb25TdGF0ZSBjb21wb3NpdGlvbiB7IENvbXBvc2l0aW9uU3RhdGU6OklkbGUgfTsK
KyAgICAgICAgVXBkYXRlU3RhdGUgdXBkYXRlIHsgVXBkYXRlU3RhdGU6OklkbGUgfTsKKyAgICAg
ICAgYm9vbCBwZW5kaW5nVXBkYXRlIHsgZmFsc2UgfTsKKyAgICB9IG1fc3RhdGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IDU1NTkxNGJjY2M2NzcwZDljMjY0
NTQ2YzNlMTVlODUxYjU0ZjYyYjIuLmE2NDM1NWQ5N2M1MjdlYmEwMTY1NjVhOGE5NGQ4MDdmMzNh
MTBlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNjgsOSArNjgsNiBAQCBUaHJlYWRlZENvbXBvc2l0b3I6
OlRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQmIGNsaWVudCwgV2ViUGFnZSYgd2ViUGFnZSwgY29u
c3QgSQogICAgICAgICBtX2F0dHJpYnV0ZXMubmVlZHNSZXNpemUgPSAhdmlld3BvcnRTaXplLmlz
RW1wdHkoKTsKICAgICB9CiAKLSAgICBtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuc3RvcmUoZmFs
c2UpOwotICAgIG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LnN0b3JlKGZh
bHNlKTsKLQogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBtX3NjZW5lID0gYWRv
cHRSZWYobmV3IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSh0aGlzKSk7CiAgICAgICAgIG1fbmF0
aXZlU3VyZmFjZUhhbmRsZSA9IG1fY2xpZW50Lm5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3Np
dGluZygpOwpAQCAtMjQ2LDE0ICsyNDMsMzcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJl
bmRlckxheWVyVHJlZSgpCiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZp
bmlzaGVkKCkKIHsKLSAgICBib29sIHNob3VsZERpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFj
ayA9IG1fY2xpZW50UmVuZGVyc05leHRGcmFtZS5sb2FkKCkKLSAgICAgICAgfHwgbV9kaXNwbGF5
UmVmcmVzaE1vbml0b3ItPnJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOwotICAgIGJv
b2wgc2hvdWxkQ29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50ID0gbV9jb29yZGlu
YXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQubG9hZCgpOworICAgIC8vIFRoZSBjb21wb3Np
dGlvbiBoYXMgZmluaXNoZWQuIE5vdyB3ZSBoYXZlIHRvIGRldGVybWluZSBob3cgdG8gbWFuYWdl
CisgICAgLy8gdGhlIHNjZW5lIHVwZGF0ZSBjb21wbGV0aW9uLgorCisgICAgLy8gVGhlIERpc3Bs
YXlSZWZyZXNoTW9uaXRvciB3aWxsIGJlIHVzZWQgdG8gZGlzcGF0Y2ggYSBjYWxsYmFjayBvbiB0
aGUgY2xpZW50IHRocmVhZCBpZjoKKyAgICAvLyAgLSBjbGllbnRSZW5kZXJzTmV4dEZyYW1lIGlz
IHRydWUgKGkuZS4gY2xpZW50IGhhcyB0byBiZSBub3RpZmllZCBhYm91dCB0aGUgZmluaXNoZWQg
dXBkYXRlKSwgb3IKKyAgICAvLyAgLSBhIERpc3BsYXlSZWZyZXNoTW9uaXRvciBjYWxsYmFjayB3
YXMgcmVxdWVzdGVkIGZyb20gdGhlIFdlYiBlbmdpbmUKKyAgICBib29sIHNob3VsZERpc3BhdGNo
RGlzcGxheVJlZnJlc2hDYWxsYmFjayB7IGZhbHNlIH07CisKKyAgICAvLyBJZiBjb29yZGluYXRl
VXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgaXMgdHJ1ZSwgdGhlIHNjZW5lIHVwZGF0ZSBjb21w
bGV0aW9uIGhhcyB0byBiZQorICAgIC8vIGRlbGF5ZWQgdW50aWwgdGhlIERpc3BsYXlSZWZyZXNo
TW9uaXRvciBjYWxsYmFjay4KKyAgICBib29sIHNob3VsZENvb3JkaW5hdGVVcGRhdGVDb21wbGV0
aW9uV2l0aENsaWVudCB7IGZhbHNlIH07CisKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKKyAgICAgICAgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVm
cmVzaENhbGxiYWNrID0gbV9hdHRyaWJ1dGVzLmNsaWVudFJlbmRlcnNOZXh0RnJhbWUKKyAgICAg
ICAgICAgIHx8IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yLT5yZXF1aXJlc0Rpc3BsYXlSZWZyZXNo
Q2FsbGJhY2soKTsKKyAgICAgICAgc2hvdWxkQ29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRo
Q2xpZW50ID0gbV9hdHRyaWJ1dGVzLmNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVu
dDsKKyAgICB9CiAKKyAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fY29tcG9zaXRpbmdSdW5M
b29wLT5zdGF0ZUxvY2soKSk7CisKKyAgICAvLyBTY2hlZHVsZSB0aGUgRGlzcGxheVJlZnJlc2hN
b25pdG9yIGNhbGxiYWNrLCBpZiBuZWNlc3NhcnkuCiAgICAgaWYgKHNob3VsZERpc3BhdGNoRGlz
cGxheVJlZnJlc2hDYWxsYmFjaykKICAgICAgICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3ItPmRp
c3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOworCisgICAgLy8gTWFyayB0aGUgc2NlbmUg
dXBkYXRlIGFzIGNvbXBsZXRlZCBpZiBubyBjb29yZGluYXRpb24gaXMgcmVxdWlyZWQgYW5kIGlm
IG5vdCBpbiBhIGZvcmNlZCByZXBhaW50LgogICAgIGlmICghc2hvdWxkQ29vcmRpbmF0ZVVwZGF0
ZUNvbXBsZXRpb25XaXRoQ2xpZW50ICYmICFtX2luRm9yY2VSZXBhaW50KQotICAgICAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+dXBkYXRlQ29tcGxldGVkKCk7CisgICAgICAgIG1fY29tcG9zaXRp
bmdSdW5Mb29wLT51cGRhdGVDb21wbGV0ZWQoc3RhdGVMb2NrZXIpOworCisgICAgLy8gSW5kZXBl
bmRlbnQgb2YgdGhlIHNjZW5lIHVwZGF0ZSwgdGhlIGNvbXBvc2l0aW9uIGl0c2VsZiBpcyBub3cg
Y29tcGxldGVkLgorICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5jb21wb3NpdGlvbkNvbXBsZXRl
ZChzdGF0ZUxvY2tlcik7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2Vu
ZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCkBAIC0yNjIsMTUg
KzI4MiwxOSBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlU2NlbmVTdGF0ZShjb25z
dCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogICAgIG1fc2NlbmUtPmFwcGVuZFVw
ZGF0ZShbdGhpcywgc2NlbmUgPSBtYWtlUmVmKCptX3NjZW5lKSwgc3RhdGVdIHsKICAgICAgICAg
c2NlbmUtPmNvbW1pdFNjZW5lU3RhdGUoc3RhdGUpOwogCi0gICAgICAgIG1fY2xpZW50UmVuZGVy
c05leHRGcmFtZS5zdG9yZSh0cnVlKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRy
aWJ1dGVzLmxvY2spOworCisgICAgICAgIC8vIENsaWVudCBoYXMgdG8gYmUgbm90aWZpZWQgdXBv
biBmaW5pc2hpbmcgdGhpcyBzY2VuZSB1cGRhdGUuCisgICAgICAgIG1fYXR0cmlidXRlcy5jbGll
bnRSZW5kZXJzTmV4dEZyYW1lID0gdHJ1ZTsKKworICAgICAgICAvLyBDb29yZGluYXRlIHNjZW5l
IHVwZGF0ZSBjb21wbGV0aW9uIHdpdGggdGhlIGNsaWVudCBpbiBjYXNlIG9mIGNoYW5nZWQgb3Ig
dXBkYXRlZCBwbGF0Zm9ybSBsYXllcnMuCiAgICAgICAgIC8vIERvIG5vdCBjaGFuZ2UgbV9jb29y
ZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgd2hpbGUgaW4gZm9yY2UgcmVwYWludC4K
LSAgICAgICAgaWYgKG1faW5Gb3JjZVJlcGFpbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGJvb2wgY29vcmRpbmF0ZVVwZGF0ZSA9IHN0ZDo6YW55X29mKHN0YXRlLmxheWVyc1RvVXBk
YXRlLmJlZ2luKCksIHN0YXRlLmxheWVyc1RvVXBkYXRlLmVuZCgpLAorICAgICAgICBib29sIGNv
b3JkaW5hdGVVcGRhdGUgPSAhbV9pbkZvcmNlUmVwYWludCAmJiBzdGQ6OmFueV9vZihzdGF0ZS5s
YXllcnNUb1VwZGF0ZS5iZWdpbigpLCBzdGF0ZS5sYXllcnNUb1VwZGF0ZS5lbmQoKSwKICAgICAg
ICAgICAgIFtdKGNvbnN0IHN0ZDo6cGFpcjxDb29yZGluYXRlZExheWVySUQsIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllclN0YXRlPiYgaXQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gaXQuc2Vj
b25kLnBsYXRmb3JtTGF5ZXJDaGFuZ2VkIHx8IGl0LnNlY29uZC5wbGF0Zm9ybUxheWVyVXBkYXRl
ZDsKICAgICAgICAgICAgIH0pOwotICAgICAgICBtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9u
V2l0aENsaWVudC5zdG9yZShjb29yZGluYXRlVXBkYXRlKTsKKworICAgICAgICBtX2F0dHJpYnV0
ZXMuY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50IHw9IGNvb3JkaW5hdGVVcGRh
dGU7CiAgICAgfSk7CiAKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUo
KTsKQEAgLTI5MSwyMyArMzE1LDU2IEBAIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6ZGlzcGxheVJlZnJlc2hNb25pdG9yCiAgICAgcmV0
dXJuIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yLmNvcHlSZWYoKTsKIH0KIAotdm9pZCBUaHJlYWRl
ZENvbXBvc2l0b3I6OnJlbmRlck5leHRGcmFtZUlmTmVlZGVkKCkKK3ZvaWQgVGhyZWFkZWRDb21w
b3NpdG9yOjpyZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCkKIHsKLSAgICBpZiAo
bV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyh0cnVlLCBmYWxz
ZSkpCi0gICAgICAgIG1fc2NlbmUtPnJlbmRlck5leHRGcmFtZSgpOwotfQorICAgIC8vIFRoaXMg
aXMgaW52b2tlZCBieSBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvciB3aGVuIGEgZnJlc2gg
dXBkYXRlIGlzIHJlcXVpcmVkLgogCi12b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Y29tcGxldGVD
b29yZGluYXRlZFVwZGF0ZUlmTmVlZGVkKCkKLXsKLSAgICBpZiAobV9jb29yZGluYXRlVXBkYXRl
Q29tcGxldGlvbldpdGhDbGllbnQuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHRydWUsIGZhbHNlKSkK
LSAgICAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnVwZGF0ZUNvbXBsZXRlZCgpOworICAgIExv
Y2tIb2xkZXIgc3RhdGVMb2NrZXIobV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0YXRlTG9jaygpKTsK
KyAgICB7CisgICAgICAgIC8vIGNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCBp
cyBzZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBkZWxheSB0aGUgc2NlbmUgdXBkYXRlCisgICAgICAg
IC8vIGNvbXBsZXRpb24gdW50aWwgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvciBpcyBmaXJlZCBv
biB0aGUgbWFpbiB0aHJlYWQgYWZ0ZXIgdGhlIGNvbXBvc2l0aW9uCisgICAgICAgIC8vIGlzIGNv
bXBsZXRlZC4KKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOwor
ICAgICAgICBtX2F0dHJpYnV0ZXMuY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50
ID0gdHJ1ZTsKKyAgICB9CisgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRl
KHN0YXRlTG9ja2VyKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmNvb3JkaW5hdGVV
cGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCgpCit2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6aGFu
ZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wgaGFzQmVlblJlc2NoZWR1bGVkKQog
ewotICAgIG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LnN0b3JlKHRydWUp
OwotICAgIGlmICghbV9jb21wb3NpdGluZ1J1bkxvb3AtPmlzQWN0aXZlKCkpCi0gICAgICAgIG1f
Y29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOworICAgIC8vIFJldHJpZXZlIHRo
ZSBjbGllbnRSZW5kZXJzTmV4dEZyYW1lIGFuZCBjb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldp
dGhDbGllbnQuCisgICAgYm9vbCBjbGllbnRSZW5kZXJzTmV4dEZyYW1lIHsgZmFsc2UgfTsKKyAg
ICBib29sIGNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCB7IGZhbHNlIH07Cisg
ICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAg
ICAgIGNsaWVudFJlbmRlcnNOZXh0RnJhbWUgPSBzdGQ6OmV4Y2hhbmdlKG1fYXR0cmlidXRlcy5j
bGllbnRSZW5kZXJzTmV4dEZyYW1lLCBmYWxzZSk7CisgICAgICAgIGNvb3JkaW5hdGVVcGRhdGVD
b21wbGV0aW9uV2l0aENsaWVudCA9IHN0ZDo6ZXhjaGFuZ2UobV9hdHRyaWJ1dGVzLmNvb3JkaW5h
dGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCwgZmFsc2UpOworICAgIH0KKworICAgIC8vIElm
IGNsaWVudFJlbmRlcnNOZXh0RnJhbWUgaXMgdHJ1ZSwgdGhlIGNsaWVudCBpcyBmaW5hbGx5IG5v
dGlmaWVkIGFib3V0IHRoZSBzY2VuZSB1cGRhdGUgbmVhcmluZworICAgIC8vIGNvbXBsZXRpb24u
IFRoZSBjbGllbnQgd2lsbCB1c2UgdGhpcyBvcHBvcnR1bml0eSB0byBjbGVhbiB1cCByZXNvdXJj
ZXMgYXMgYXBwcm9wcmlhdGUuIEl0IGNhbiBhbHNvCisgICAgLy8gcGVyZm9ybSBhbnkgbGF5ZXIg
Zmx1c2ggdGhhdCB3YXMgcmVxdWVzdGVkIGR1cmluZyB0aGUgY29tcG9zaXRpb24sIG9yIGJ5IGFu
eSBEaXNwbGF5UmVmcmVzaE1vbml0b3IKKyAgICAvLyBub3RpZmljYXRpb25zIHRoYXQgaGF2ZSBi
ZWVuIGhhbmRsZWQgYXQgdGhpcyBwb2ludC4KKyAgICBpZiAoY2xpZW50UmVuZGVyc05leHRGcmFt
ZSkKKyAgICAgICAgbV9jbGllbnQucmVuZGVyTmV4dEZyYW1lKCk7CisKKyAgICBMb2NrSG9sZGVy
IHN0YXRlTG9ja2VyKG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdGF0ZUxvY2soKSk7CisKKyAgICAv
LyBJZiByZXF1aXJlZCwgbWFyayB0aGUgY3VycmVudCBzY2VuZSB1cGRhdGUgYXMgY29tcGxldGVk
LiBDb21wb3NpdGluZ1J1bkxvb3Agd2lsbCB0YWtlIGNhcmUgb2YKKyAgICAvLyBzY2hlZHVsaW5n
IGEgbmV3IHVwZGF0ZSBpbiBjYXNlIGFuIHVwZGF0ZSB3YXMgbWFya2VkIGFzIHBlbmRpbmcgZHVl
IHRvIHByZXZpb3VzIGxheWVyIGZsdXNoZXMKKyAgICAvLyBvciBEaXNwbGF5UmVmcmVzaE1vbml0
b3Igbm90aWZpY2F0aW9ucy4KKyAgICBpZiAoY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRo
Q2xpZW50KQorICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+dXBkYXRlQ29tcGxldGVkKHN0
YXRlTG9ja2VyKTsKKworICAgIC8vIElmIHRoZSBEaXNwbGF5UmVmcmVzaE1vbml0b3Igd2FzIHNj
aGVkdWxlZCBhZ2Fpbiwgd2UgaW1tZWRpYXRlbHkgZGVtYW5kIHRoZSB1cGRhdGUgY29tcGxldGlv
bgorICAgIC8vIGNvb3JkaW5hdGlvbiAobGlrZSB3ZSBkbyBpbiByZXF1ZXN0RGlzcGxheVJlZnJl
c2hNb25pdG9yVXBkYXRlKCkpIGFuZCByZXF1ZXN0IGFuIHVwZGF0ZS4KKyAgICBpZiAoaGFzQmVl
blJlc2NoZWR1bGVkKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fYXR0cmlidXRlcy5sb2NrKTsKKyAgICAgICAgICAgIG1fYXR0cmlidXRlcy5jb29yZGluYXRl
VXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG1f
Y29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZShzdGF0ZUxvY2tlcik7CisgICAgfQog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmgKaW5kZXggNTE0Y2UyZDE5ZWU4MTM5YTUwYWFmMmEwMmJlZjE3ZjNh
ODY0MWU2Yy4uZTYxMDBmODc2OGNiMGY2ZmUwYmZjMGVhNWNmODNlNjI2NGU0NDU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmgKQEAgLTg4LDkgKzg4LDggQEAgcHVibGljOgogCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yPiBkaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5
SUQpOwotICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lSWZOZWVkZWQoKTsKLSAgICB2b2lkIGNvbXBs
ZXRlQ29vcmRpbmF0ZWRVcGRhdGVJZk5lZWRlZCgpOwotICAgIHZvaWQgY29vcmRpbmF0ZVVwZGF0
ZUNvbXBsZXRpb25XaXRoQ2xpZW50KCk7CisgICAgdm9pZCByZXF1ZXN0RGlzcGxheVJlZnJlc2hN
b25pdG9yVXBkYXRlKCk7CisgICAgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRh
dGUoYm9vbCBoYXNCZWVuUmVzY2hlZHVsZWQpOwogI2VuZGlmCiAKICAgICB2b2lkIGZyYW1lQ29t
cGxldGUoKTsKQEAgLTEyNiwxNCArMTI1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0IHNj
YWxlRmFjdG9yIHsgMSB9OwogICAgICAgICBib29sIGRyYXdzQmFja2dyb3VuZCB7IHRydWUgfTsK
ICAgICAgICAgYm9vbCBuZWVkc1Jlc2l6ZSB7IGZhbHNlIH07CisKKyAgICAgICAgYm9vbCBjbGll
bnRSZW5kZXJzTmV4dEZyYW1lIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBjb29yZGluYXRlVXBk
YXRlQ29tcGxldGlvbldpdGhDbGllbnQgeyBmYWxzZSB9OwogICAgIH0gbV9hdHRyaWJ1dGVzOwog
CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICBS
ZWY8VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I+IG1fZGlzcGxheVJlZnJlc2hNb25pdG9y
OwogI2VuZGlmCi0KLSAgICBBdG9taWM8Ym9vbD4gbV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lOwot
ICAgIEF0b21pYzxib29sPiBtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNw
bGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwCmluZGV4IDBlZTg0ZmMyMmQ4YWZlNjUwMjZmODI4ZGE2NWNjNWJmNTg0NzFjMmMuLjAyYmMw
NjNmZTk5NWZhMDZjNzVlNDg0NzRhZDkwMzE3MjExOWFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKQEAgLTUzLDggKzUzLDExIEBAIGJvb2wgVGhyZWFkZWREaXNwbGF5UmVm
cmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQogICAgIExvY2tIb2xkZXIgbG9j
a2VyKG11dGV4KCkpOwogICAgIHNldElzU2NoZWR1bGVkKHRydWUpOwogCisgICAgLy8gT25seSBy
ZXF1ZXN0IGFuIHVwZGF0ZSBpbiBjYXNlIHdlJ3JlIG5vdCBjdXJyZW50bHkgaGFuZGxpbmcgdGhl
IGRpc3BsYXkKKyAgICAvLyByZWZyZXNoIG5vdGlmaWNhdGlvbnMgdW5kZXIgVGhyZWFkZWREaXNw
bGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKS4KKyAgICAvLyBBbnkg
c3VjaCBzY2hlZHVsZSByZXF1ZXN0IGlzIGhhbmRsZWQgaW4gdGhhdCBtZXRob2QgYWZ0ZXIgdGhl
IG5vdGlmaWNhdGlvbnMuCiAgICAgaWYgKGlzUHJldmlvdXNGcmFtZURvbmUoKSkKLSAgICAgICAg
bV9jb21wb3NpdG9yLT5jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQoKTsKKyAg
ICAgICAgbV9jb21wb3NpdG9yLT5yZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgwLDcgKzgzLDcgQEAgdm9pZCBUaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcjo6aW52YWxpZGF0ZSgpCiAKIHZvaWQgVGhyZWFkZWREaXNwbGF5
UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQogewotICAgIGJvb2wgc2hv
dWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICBib29sIHNo
b3VsZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uIHsgZmFsc2UgfTsKICAgICB7CiAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOwogICAgICAgICBzaG91bGRIYW5kbGVE
aXNwbGF5UmVmcmVzaE5vdGlmaWNhdGlvbiA9IGlzU2NoZWR1bGVkKCkgJiYgaXNQcmV2aW91c0Zy
YW1lRG9uZSgpOwpAQCAtOTEsMTIgKzk0LDE4IEBAIHZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQogICAgIGlmIChzaG91bGRIYW5kbGVE
aXNwbGF5UmVmcmVzaE5vdGlmaWNhdGlvbikKICAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOwog
Ci0gICAgaWYgKG1fY29tcG9zaXRvcikgewotICAgICAgICBtX2NvbXBvc2l0b3ItPnJlbmRlck5l
eHRGcmFtZUlmTmVlZGVkKCk7Ci0gICAgICAgIG1fY29tcG9zaXRvci0+Y29tcGxldGVDb29yZGlu
YXRlZFVwZGF0ZUlmTmVlZGVkKCk7Ci0gICAgICAgIGlmIChpc1NjaGVkdWxlZCgpKQotICAgICAg
ICAgICAgbV9jb21wb3NpdG9yLT5jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQo
KTsKKyAgICAvLyBSZXRyaWV2ZSB0aGUgc2NoZWR1bGVkIHN0YXR1cyBmb3IgdGhpcyBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuCisgICAgYm9vbCBoYXNCZWVuUmVzY2hlZHVsZWQgeyBmYWxzZSB9Owor
ICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobXV0ZXgoKSk7CisgICAgICAgIGhhc0Jl
ZW5SZXNjaGVkdWxlZCA9IGlzU2NoZWR1bGVkKCk7CiAgICAgfQorCisgICAgLy8gTm90aWZ5IHRo
ZSBjb21wb3NpdG9yIGFib3V0IHRoZSBjb21wbGV0ZWQgRGlzcGxheVJlZnJlc2hNb25pdG9yIHVw
ZGF0ZSwgcGFzc2luZworICAgIC8vIGFsb25nIGluZm9ybWF0aW9uIGFib3V0IGFueSBzY2hlZHVs
ZSByZXF1ZXN0IHRoYXQgbWlnaHQgaGF2ZSBvY2N1cnJlZCBkdXJpbmcKKyAgICAvLyB0aGUgbm90
aWZpY2F0aW9uIGhhbmRsaW5nLgorICAgIGlmIChtX2NvbXBvc2l0b3IpCisgICAgICAgIG1fY29t
cG9zaXRvci0+aGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGhhc0JlZW5SZXNjaGVk
dWxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>