<?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>166721</bug_id>
          
          <creation_ts>2017-01-05 02:51:53 -0800</creation_ts>
          <short_desc>Use WTF::Function instead of std::function in network cache code</short_desc>
          <delta_ts>2017-01-05 12:11:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1264065</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-05 02:51:53 -0800</bug_when>
    <thetext>Use better move-only type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264066</commentid>
    <comment_count>1</comment_count>
      <attachid>298084</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-05 03:00:28 -0800</bug_when>
    <thetext>Created attachment 298084
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264067</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-05 03:02:34 -0800</bug_when>
    <thetext>Attachment 298084 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:891:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheData.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:312:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:589:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataCocoa.mm:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.cpp:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:182:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataSoup.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:122:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 12 in 11 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>1264069</commentid>
    <comment_count>3</comment_count>
      <attachid>298086</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-05 03:13:03 -0800</bug_when>
    <thetext>Created attachment 298086
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264071</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-05 03:14:29 -0800</bug_when>
    <thetext>Attachment 298086 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:891:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheData.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:312:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:589:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataCocoa.mm:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.cpp:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:182:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataSoup.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:122:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 12 in 11 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>1264081</commentid>
    <comment_count>5</comment_count>
      <attachid>298086</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-05 04:08:35 -0800</bug_when>
    <thetext>Comment on attachment 298086
patch

Attachment 298086 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2837488

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264083</commentid>
    <comment_count>6</comment_count>
      <attachid>298090</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-05 04:08:47 -0800</bug_when>
    <thetext>Created attachment 298090
Archive of layout-test-results from ews126 for ios-simulator-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews126  Port: ios-simulator-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264103</commentid>
    <comment_count>7</comment_count>
      <attachid>298097</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-05 06:05:39 -0800</bug_when>
    <thetext>Created attachment 298097
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264104</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-05 06:08:28 -0800</bug_when>
    <thetext>Attachment 298097 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheData.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:312:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:591:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataCocoa.mm:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:891:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.cpp:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:182:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataSoup.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:122:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 12 in 12 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>1264115</commentid>
    <comment_count>9</comment_count>
      <attachid>298102</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-05 07:36:40 -0800</bug_when>
    <thetext>Created attachment 298102
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264120</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-05 07:53:10 -0800</bug_when>
    <thetext>Attachment 298102 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheData.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:312:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:591:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataCocoa.mm:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:891:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.cpp:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:182:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataSoup.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:122:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 12 in 12 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>1264143</commentid>
    <comment_count>11</comment_count>
      <attachid>298110</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-05 09:59:52 -0800</bug_when>
    <thetext>Created attachment 298110
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264144</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-05 10:01:48 -0800</bug_when>
    <thetext>Attachment 298110 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheData.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:312:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:591:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataCocoa.mm:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:891:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystem.cpp:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:182:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataSoup.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:122:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 12 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264162</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-05 11:14:45 -0800</bug_when>
    <thetext>https://trac.webkit.org/r210364</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264186</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-01-05 12:11:03 -0800</bug_when>
    <thetext>👍👍👍</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298084</attachid>
            <date>2017-01-05 03:00:28 -0800</date>
            <delta_ts>2017-01-05 03:13:03 -0800</delta_ts>
            <desc>patch</desc>
            <filename>wtffunction-cache.patch</filename>
            <type>text/plain</type>
            <size>12219</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDMyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAxLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBp
bnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gaW4gbmV0d29yayBjYWNoZSBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYmV0dGVyIG1vdmUtb25s
eSB0eXBlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpjbGVhcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhOjphcHBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YVNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6
OmFwcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0cmF2ZXJzZURpcmVj
dG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjpSZWFkT3BlcmF0aW9uOjpSZWFkT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6Y2xlYXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaDoKKwogMjAxNy0wMS0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgdXNlIGZyb20gdGhlICJodG1s
IiBkaXJlY3RvcnksIG90aGVyIGltcHJvdmVtZW50cwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lvbiAy
MTAwNTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIFN0b3JlRGVj
aXNpb24gbWFrZVN0b3JlRGVjaXNpb24oYwogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7
CiB9CiAKLXZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgc3RkOjpmdW5jdGlvbjx2
b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVf
cHRyPEVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzRW5hYmxl
ZCgpKTsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
OwpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc28KICAgICB9CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCi0gICAgaWYgKGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci0+cmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVz
dCwgW3JlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVu
dHJ5KSB7CisgICAgaWYgKGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci0+cmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVzdCwg
W3JlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnkpIHsKICAgICAgICAgaWYgKGVudHJ5ICYmIFdl
YkNvcmU6OnZlcmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVycyhlbnRyeS0+dmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKCksIHJlcXVlc3QpKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShlbnRyeSkpOwogICAgICAgICBlbHNlCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDYWNoZTo6
ZGVsZXRlRHVtcEZpbGUoKQogICAgIH0pOwogfQogCi12b2lkIENhY2hlOjpjbGVhcihzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2FjaGU6OmNsZWFyKHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBMT0coTmV0d29ya0NhY2hlLCAi
KE5ldHdvcmtQcm9jZXNzKSBjbGVhcmluZyBjYWNoZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkocmV2aXNpb24g
MjEwMDU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhIW1fc3RvcmFnZTsgfQogCiAgICAgLy8gQ29t
cGxldGlvbiBoYW5kbGVyIG1heSBnZXQgY2FsbGVkIGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWls
dXJlLgotICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRy
PEVudHJ5Pik+JiYpOworICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4pPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBw
ZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3Qp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CkBAIC0xMTksNyAr
MTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogCiAgICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgY2xlYXIoc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgY2xlYXIoc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxl
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgJKHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKIAogICAgIERhdGEgc3VicmFuZ2Uoc2l6ZV90
IG9mZnNldCwgc2l6ZV90KSBjb25zdDsKIAotICAgIGJvb2wgYXBwbHkoY29uc3Qgc3RkOjpmdW5j
dGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mJikgY29uc3Q7CisgICAgYm9vbCBh
cHBseShjb25zdCBGdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKSBjb25z
dDsKIAogICAgIERhdGEgbWFwVG9GaWxlKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCShyZXZpc2lvbiAyMTAwNTcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBEYXRhOjppc051bGwoKSBjb25zdAogICAg
IHJldHVybiAhbV9kaXNwYXRjaERhdGE7CiB9CiAKLWJvb2wgRGF0YTo6YXBwbHkoY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mJiBhcHBsaWVyKSBjb25z
dAorYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwg
c2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGFTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhU291cC5jcHAJKHJldmlzaW9uIDIxMDA1
NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURh
dGFTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBib29sIERhdGE6Omlz
TnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2J1ZmZlcjsKIH0KIAotYm9vbCBEYXRhOjphcHBs
eShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGFw
cGxpZXIpIGNvbnN0Citib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wgKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGFwcGxpZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3Bw
CShyZXZpc2lvbiAyMTAwNTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgPGRpcmVudC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVk
ZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKICNpZiBVU0UoU09VUCkKQEAgLTU1LDcgKzU2LDcgQEAgc3RhdGlj
IERpcmVjdG9yeUVudHJ5VHlwZSBkaXJlY3RvcnlFbnRyeQogICAgIH0KIH0KIAotdm9pZCB0cmF2
ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgRGlyZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQordm9pZCB0
cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIERpcmVjdG9yeUVudHJ5VHlwZSk+JiBmdW5jdGlvbikKIHsKICAgICBE
SVIqIGRpciA9IG9wZW5kaXIoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
LmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCShy
ZXZpc2lvbiAyMTAwNTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogZW51bSBjbGFz
cyBEaXJlY3RvcnlFbnRyeVR5cGUgeyBEaXJlY3RvcnksIEZpbGUgfTsKLXZvaWQgdHJhdmVyc2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+Jik7Cit2b2lkIHRyYXZl
cnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlKT4mKTsKIAogdm9pZCBkZWxl
dGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCShyZXZpc2lvbiAyMTAw
NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXkpOwog
Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4p
PiBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyOworICAgIHR5cGVkZWYgRnVuY3Rpb248dm9pZCAo
c3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CiAgICAg
Ym9vbCByZXRyaWV2ZShjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgS2V5JiBzdG9yYWdlS2V5
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5k
bGVyJiYpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9u
IDIxMDA1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw5IEBAIHN0YXRpYyBk
b3VibGUgY29tcHV0ZVJlY29yZFdvcnRoKEZpbGVUaW0KIHN0cnVjdCBTdG9yYWdlOjpSZWFkT3Bl
cmF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBSZWFk
T3BlcmF0aW9uKGNvbnN0IEtleSYga2V5LCBjb25zdCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVy
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBSZWFkT3BlcmF0aW9uKGNvbnN0IEtleSYga2V5LCBS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDog
a2V5KGtleSkKLSAgICAgICAgLCBjb21wbGV0aW9uSGFuZGxlcihjb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICB7IH0KIAogICAgIHZvaWQgY2FuY2VsKCk7CkBAIC04MDQsNyArODA0LDcgQEAgdm9pZCBT
dG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cAogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgQVNTRVJUKHRyYXZlcnNlSGFuZGxlcik7Ci0gICAgLy8gQXZvaWQg
bm9uLXRocmVhZCBzYWZlIHN0ZDo6ZnVuY3Rpb24gY29waWVzLgorICAgIC8vIEF2b2lkIG5vbi10
aHJlYWQgc2FmZSBGdW5jdGlvbiBjb3BpZXMuCiAKICAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9u
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4odHlwZSwgZmxhZ3MsIFdU
Rk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CiAgICAgYXV0byYgdHJhdmVyc2VPcGVyYXRpb24gPSAq
dHJhdmVyc2VPcGVyYXRpb25QdHI7CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBTdG9yYWdlOjpz
ZXRDYXBhY2l0eShzaXplX3QgY2FwYWNpdAogICAgIHNocmlua0lmTmVlZGVkKCk7CiB9CiAKLXZv
aWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2VUaW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlVGltZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAi
KE5ldHdvcmtQcm9jZXNzKSBjbGVhcmluZyBjYWNoZSIpOwpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aAkocmV2aXNpb24gMjEwMDU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxNCArNTksMTQg
QEAgcHVibGljOgogICAgICAgICBEYXRhIGJvZHk7CiAgICAgfTsKICAgICAvLyBUaGlzIG1heSBj
YWxsIGNvbXBsZXRpb24gaGFuZGxlciBzeW5jaHJvbm91c2x5IG9uIGZhaWx1cmUuCi0gICAgdHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPGJvb2wgKHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+KT4gUmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlcjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uPGJvb2wgKHN0ZDo6dW5p
cXVlX3B0cjxSZWNvcmQ+KT4gUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcjsKICAgICB2b2lkIHJl
dHJpZXZlKGNvbnN0IEtleSYsIHVuc2lnbmVkIHByaW9yaXR5LCBSZXRyaWV2ZUNvbXBsZXRpb25I
YW5kbGVyJiYpOwogCiAgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChjb25zdCBEYXRhJiBtYXBw
ZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CiAgICAgdm9pZCBzdG9yZShjb25zdCBSZWNvcmQm
LCBNYXBwZWRCb2R5SGFuZGxlciYmKTsKIAogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwot
ICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2VUaW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBl
LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2VUaW1l
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHN0cnVjdCBS
ZWNvcmRJbmZvIHsKICAgICAgICAgc2l6ZV90IGJvZHlTaXplOwpAQCAtMTc5LDcgKzE3OSw3IEBA
IHByaXZhdGU6CiB9OwogCiAvLyBGSVhNRTogUmVtb3ZlLCB1c2VkIGJ5IE5ldHdvcmtDYWNoZVN0
YXRpc3RpY3Mgb25seS4KLXVzaW5nIFJlY29yZEZpbGVUcmF2ZXJzZUZ1bmN0aW9uID0gc3RkOjpm
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVj
b3JkRGlyZWN0b3J5UGF0aCk+OwordXNpbmcgUmVjb3JkRmlsZVRyYXZlcnNlRnVuY3Rpb24gPSBG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVj
b3JkRGlyZWN0b3J5UGF0aCk+Owogdm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJp
bmcmIHJlY29yZHNQYXRoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFJlY29yZEZpbGVUcmF2
ZXJzZUZ1bmN0aW9uJik7CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298086</attachid>
            <date>2017-01-05 03:13:03 -0800</date>
            <delta_ts>2017-01-05 06:05:39 -0800</delta_ts>
            <desc>patch</desc>
            <filename>wtffunction-cache-2.patch</filename>
            <type>text/plain</type>
            <size>12218</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDMyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAxLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBp
bnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gaW4gbmV0d29yayBjYWNoZSBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYmV0dGVyIG1vdmUtb25s
eSB0eXBlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpjbGVhcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhOjphcHBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YVNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6
OmFwcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0cmF2ZXJzZURpcmVj
dG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjpSZWFkT3BlcmF0aW9uOjpSZWFkT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6Y2xlYXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaDoKKwogMjAxNy0wMS0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgdXNlIGZyb20gdGhlICJodG1s
IiBkaXJlY3RvcnksIG90aGVyIGltcHJvdmVtZW50cwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lvbiAy
MTAwNTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIFN0b3JlRGVj
aXNpb24gbWFrZVN0b3JlRGVjaXNpb24oYwogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7
CiB9CiAKLXZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgc3RkOjpmdW5jdGlvbjx2
b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVf
cHRyPEVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzRW5hYmxl
ZCgpKTsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
OwpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc28KICAgICB9CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCi0gICAgaWYgKGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci0+cmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVz
dCwgW3JlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVu
dHJ5KSB7CisgICAgaWYgKGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci0+cmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVzdCwg
W3JlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnkpIHsKICAgICAgICAgaWYgKGVudHJ5ICYmIFdl
YkNvcmU6OnZlcmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVycyhlbnRyeS0+dmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKCksIHJlcXVlc3QpKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShlbnRyeSkpOwogICAgICAgICBlbHNlCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDYWNoZTo6
ZGVsZXRlRHVtcEZpbGUoKQogICAgIH0pOwogfQogCi12b2lkIENhY2hlOjpjbGVhcihzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2FjaGU6OmNsZWFyKHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBMT0coTmV0d29ya0NhY2hlLCAi
KE5ldHdvcmtQcm9jZXNzKSBjbGVhcmluZyBjYWNoZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkocmV2aXNpb24g
MjEwMDU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhIW1fc3RvcmFnZTsgfQogCiAgICAgLy8gQ29t
cGxldGlvbiBoYW5kbGVyIG1heSBnZXQgY2FsbGVkIGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWls
dXJlLgotICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRy
PEVudHJ5Pik+JiYpOworICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4pPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBw
ZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3Qp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CkBAIC0xMTksNyAr
MTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogCiAgICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgY2xlYXIoc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgY2xlYXIoc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxl
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgJKHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKIAogICAgIERhdGEgc3VicmFuZ2Uoc2l6ZV90
IG9mZnNldCwgc2l6ZV90KSBjb25zdDsKIAotICAgIGJvb2wgYXBwbHkoY29uc3Qgc3RkOjpmdW5j
dGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mJikgY29uc3Q7CisgICAgYm9vbCBh
cHBseShjb25zdCBGdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKSBjb25z
dDsKIAogICAgIERhdGEgbWFwVG9GaWxlKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCShyZXZpc2lvbiAyMTAwNTcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBEYXRhOjppc051bGwoKSBjb25zdAogICAg
IHJldHVybiAhbV9kaXNwYXRjaERhdGE7CiB9CiAKLWJvb2wgRGF0YTo6YXBwbHkoY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mJiBhcHBsaWVyKSBjb25z
dAorYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwg
c2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGFTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhU291cC5jcHAJKHJldmlzaW9uIDIxMDA1
NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURh
dGFTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBib29sIERhdGE6Omlz
TnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2J1ZmZlcjsKIH0KIAotYm9vbCBEYXRhOjphcHBs
eShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGFw
cGxpZXIpIGNvbnN0Citib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wgKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAJ
KHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRl
IDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFVTRShTT1VQKQpAQCAtNTUsNyArNTYsNyBAQCBzdGF0aWMg
RGlyZWN0b3J5RW50cnlUeXBlIGRpcmVjdG9yeUVudHJ5CiAgICAgfQogfQogCi12b2lkIHRyYXZl
cnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYgZnVuY3Rpb24pCit2b2lkIHRy
YXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgRGlyZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewogICAgIERJ
UiogZGlyID0gb3BlbmRpcihXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpKTsKICAgICBpZiAoIWRpcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgJKHJl
dmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiBlbnVtIGNsYXNz
IERpcmVjdG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmlsZSB9Owotdm9pZCB0cmF2ZXJzZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlKT4mKTsKK3ZvaWQgdHJhdmVy
c2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYpOwogCiB2b2lkIGRlbGV0
ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgJKHJldmlzaW9uIDIxMDA1
NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJjZUtleSk7CiAK
LSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CisgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4gUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcjsKICAgICBi
b29sIHJldHJpZXZlKGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBLZXkmIHN0b3JhZ2VLZXks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24g
MjEwMDU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDkgQEAgc3RhdGljIGRv
dWJsZSBjb21wdXRlUmVjb3JkV29ydGgoRmlsZVRpbQogc3RydWN0IFN0b3JhZ2U6OlJlYWRPcGVy
YXRpb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFJlYWRP
cGVyYXRpb24oY29uc3QgS2V5JiBrZXksIGNvbnN0IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIFJlYWRPcGVyYXRpb24oY29uc3QgS2V5JiBrZXksIFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBr
ZXkoa2V5KQotICAgICAgICAsIGNvbXBsZXRpb25IYW5kbGVyKGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICAsIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQog
ICAgIHsgfQogCiAgICAgdm9pZCBjYW5jZWwoKTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIFN0
b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICBBU1NFUlQodHJhdmVyc2VIYW5kbGVyKTsKLSAgICAvLyBBdm9pZCBu
b24tdGhyZWFkIHNhZmUgc3RkOjpmdW5jdGlvbiBjb3BpZXMuCisgICAgLy8gQXZvaWQgbm9uLXRo
cmVhZCBzYWZlIEZ1bmN0aW9uIGNvcGllcy4KIAogICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25Q
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPih0eXBlLCBmbGFncywgV1RG
TW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBhdXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0
cmF2ZXJzZU9wZXJhdGlvblB0cjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIFN0b3JhZ2U6OnNl
dENhcGFjaXR5KHNpemVfdCBjYXBhY2l0CiAgICAgc2hyaW5rSWZOZWVkZWQoKTsKIH0KIAotdm9p
ZCBTdG9yYWdlOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZVRpbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5n
JiB0eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2lu
Y2VUaW1lLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIo
TmV0d29ya1Byb2Nlc3MpIGNsZWFyaW5nIGNhY2hlIik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CShyZXZpc2lvbiAyMTAwNTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE0ICs1OSwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIERhdGEgYm9keTsKICAgICB9OwogICAgIC8vIFRoaXMgbWF5IGNh
bGwgY29tcGxldGlvbiBoYW5kbGVyIHN5bmNocm9ub3VzbHkgb24gZmFpbHVyZS4KLSAgICB0eXBl
ZGVmIHN0ZDo6ZnVuY3Rpb248Ym9vbCAoc3RkOjp1bmlxdWVfcHRyPFJlY29yZD4pPiBSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyOworICAgIHR5cGVkZWYgRnVuY3Rpb248Ym9vbCAoc3RkOjp1bmlx
dWVfcHRyPFJlY29yZD4pPiBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyOwogICAgIHZvaWQgcmV0
cmlldmUoY29uc3QgS2V5JiwgdW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlvbkhh
bmRsZXImJik7CiAKICAgICB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IERhdGEmIG1hcHBl
ZEJvZHkpPiBNYXBwZWRCb2R5SGFuZGxlcjsKICAgICB2b2lkIHN0b3JlKGNvbnN0IFJlY29yZCYs
IE1hcHBlZEJvZHlIYW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5Jik7Ci0g
ICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZVRpbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZVRpbWUs
IEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgc3RydWN0IFJl
Y29yZEluZm8gewogICAgICAgICBzaXplX3QgYm9keVNpemU7CkBAIC0xNzksNyArMTc5LDcgQEAg
cHJpdmF0ZToKIH07CiAKIC8vIEZJWE1FOiBSZW1vdmUsIHVzZWQgYnkgTmV0d29ya0NhY2hlU3Rh
dGlzdGljcyBvbmx5LgotdXNpbmcgUmVjb3JkRmlsZVRyYXZlcnNlRnVuY3Rpb24gPSBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0
cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNv
cmREaXJlY3RvcnlQYXRoKT47Cit1c2luZyBSZWNvcmRGaWxlVHJhdmVyc2VGdW5jdGlvbiA9IEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0
cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNv
cmREaXJlY3RvcnlQYXRoKT47CiB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmlu
ZyYgcmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgUmVjb3JkRmlsZVRyYXZl
cnNlRnVuY3Rpb24mKTsKIAogfQo=
</data>
<flag name="review"
          id="320333"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="320335"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298090</attachid>
            <date>2017-01-05 04:08:47 -0800</date>
            <delta_ts>2017-01-05 06:05:39 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews126 for ios-simulator-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>0</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298097</attachid>
            <date>2017-01-05 06:05:39 -0800</date>
            <delta_ts>2017-01-05 07:36:40 -0800</delta_ts>
            <desc>patch</desc>
            <filename>wtffunction-cache-3.patch</filename>
            <type>text/plain</type>
            <size>17031</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDMyNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE3LTAxLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBp
bnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gaW4gbmV0d29yayBjYWNoZSBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYmV0dGVyIG1vdmUtb25s
eSB0eXBlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpjbGVhcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhOjphcHBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YVNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6
OmFwcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0cmF2ZXJzZURpcmVj
dG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmNhblJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZSk6CisKKyAgICAgICAg
ICAgIFNwbGl0IHJldHJpZXZlKCkgdG8gY2FuUmV0cmlldmUgYW5kIHJldHJpZXZlIGZ1bmN0aW9u
cy4KKyAgICAgICAgICAgIFRoaXMgYXZvaWRzIHRoZSBuZWVkIHRvIGNvcHkgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBpbiB0aGUgY2FsbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlYWRPcGVyYXRpb246OlJlYWRPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorCiAyMDE3LTAxLTA1ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ2hyb21l
Q2xpZW50OjpuZWVkVG91Y2hFdmVudHMoKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkocmV2aXNpb24gMjEwMDU3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyBTdG9yZURlY2lzaW9u
IG1ha2VTdG9yZURlY2lzaW9uKGMKICAgICByZXR1cm4gU3RvcmVEZWNpc2lvbjo6WWVzOwogfQog
Ci12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
c3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hl
OjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7
CiAgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKQEAg
LTMzNywxMyArMzM3LDE1IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJl
c28KICAgICB9CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04pCi0gICAgaWYgKGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci0+cmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVzdCwg
W3JlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5
KSB7Ci0gICAgICAgIGlmIChlbnRyeSAmJiBXZWJDb3JlOjp2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhl
YWRlcnMoZW50cnktPnZhcnlpbmdSZXF1ZXN0SGVhZGVycygpLCByZXF1ZXN0KSkKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50cnkpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Ci0gICAgfSkpCisgICAgaWYgKGNh
blVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+
Y2FuUmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVzdCkpIHsKKyAgICAgICAgbV9z
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLT5yZXRyaWV2ZShzdG9yYWdlS2V5LCByZXF1ZXN0LCBbcmVx
dWVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSkgeworICAgICAgICAgICAgaWYgKGVudHJ5ICYmIFdl
YkNvcmU6OnZlcmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVycyhlbnRyeS0+dmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKCksIHJlcXVlc3QpKQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoZW50cnkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CiAjZW5kaWYKIAogICAgIGF1dG8gc3RhcnRUaW1lID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6bm93KCk7CkBAIC01ODYsNyArNTg4LDcgQEAgdm9pZCBDYWNoZTo6ZGVsZXRlRHVtcEZpbGUo
KQogICAgIH0pOwogfQogCi12b2lkIENhY2hlOjpjbGVhcihzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2FjaGU6OmNsZWFyKHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNz
KSBjbGVhcmluZyBjYWNoZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkocmV2aXNpb24gMjEwMDU3KQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiAhIW1fc3RvcmFnZTsgfQogCiAgICAgLy8gQ29tcGxldGlvbiBoYW5kbGVy
IG1heSBnZXQgY2FsbGVkIGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgotICAgIHZvaWQg
cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJh
bWVJRCYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYpOwor
ICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
R2xvYmFsRnJhbWVJRCYsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPiYm
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAg
ICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgY2xlYXIoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgY2xlYXIoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhLmgJKHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEy
OCw3IEBAIHB1YmxpYzoKIAogICAgIERhdGEgc3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90
KSBjb25zdDsKIAotICAgIGJvb2wgYXBwbHkoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KT4mJikgY29uc3Q7CisgICAgYm9vbCBhcHBseShjb25zdCBGdW5j
dGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKSBjb25zdDsKIAogICAgIERhdGEg
bWFwVG9GaWxlKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YUNvY29hLm1tCShyZXZpc2lvbiAyMTAwNTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcx
LDcgKzcxLDcgQEAgYm9vbCBEYXRhOjppc051bGwoKSBjb25zdAogICAgIHJldHVybiAhbV9kaXNw
YXRjaERhdGE7CiB9CiAKLWJvb2wgRGF0YTo6YXBwbHkoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
IChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mJiBhcHBsaWVyKSBjb25zdAorYm9vbCBEYXRhOjph
cHBseShjb25zdCBGdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxp
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFT
b3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhU291cC5jcHAJKHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0CiAg
ICAgcmV0dXJuICFtX2J1ZmZlcjsKIH0KIAotYm9vbCBEYXRhOjphcHBseShjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGFwcGxpZXIpIGNvbnN0Citi
b29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDIxMDA1
NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8
ZGlyZW50Lmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogI2lmIFVTRShTT1VQKQpAQCAtNTUsNyArNTYsNyBAQCBzdGF0aWMgRGlyZWN0b3J5RW50cnlU
eXBlIGRpcmVjdG9yeUVudHJ5CiAgICAgfQogfQogCi12b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYgZnVuY3Rpb24pCit2b2lkIHRyYXZlcnNlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
RGlyZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewogICAgIERJUiogZGlyID0gb3BlbmRp
cihXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBp
ZiAoIWRpcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDIxMDA1NykK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVT
eXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiBlbnVtIGNsYXNzIERpcmVjdG9yeUVudHJ5
VHlwZSB7IERpcmVjdG9yeSwgRmlsZSB9Owotdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlKT4mKTsKK3ZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYpOwogCiB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vy
c2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMTAwNTcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDEwICszMDEsMTAgQEAgYm9vbCBT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQZW5kaQogICAgIHJldHVybiByZXF1ZXN0c0hl
YWRlcnNNYXRjaChsb2FkLm9yaWdpbmFsUmVxdWVzdCgpLCBhY3R1YWxSZXF1ZXN0KTsKIH0KIAot
Ym9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShjb25zdCBHbG9iYWxGcmFtZUlE
JiBmcmFtZUlELCBjb25zdCBLZXkmIHN0b3JhZ2VLZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQorYm9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpjYW5SZXRyaWV2ZShjb25zdCBH
bG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25zdCBLZXkmIHN0b3JhZ2VLZXksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICAvLyBDaGVjayBhbHJl
YWR5IHByZWxvYWRlZCBlbnRyaWVzLgotICAgIGlmIChhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9w
cmVsb2FkZWRFbnRyaWVzLnRha2Uoc3RvcmFnZUtleSkpIHsKKyAgICBpZiAoYXV0byBwcmVsb2Fk
ZWRFbnRyeSA9IG1fcHJlbG9hZGVkRW50cmllcy5nZXQoc3RvcmFnZUtleSkpIHsKICAgICAgICAg
aWYgKCFjYW5Vc2VQcmVsb2FkZWRFbnRyeSgqcHJlbG9hZGVkRW50cnksIHJlcXVlc3QpKSB7CiAg
ICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdv
cmtQcm9jZXNzKSBSZXRyaWV2YWw6IENvdWxkIG5vdCB1c2UgcHJlbG9hZGVkIGVudHJ5IHRvIHNh
dGlzZnkgcmVxdWVzdCBmb3IgJyVzJyBkdWUgdG8gSFRUUCBoZWFkZXJzIG1pc21hdGNoOiIsIHN0
b3JhZ2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgbG9nU3Bl
Y3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgcHJlbG9hZGVkRW50cnkt
Pndhc1JldmFsaWRhdGVkKCkgPyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3RlZFNwZWN1bGF0
aXZlV2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpIDogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp3
YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZhbGlkYXRpb25LZXkoKSk7CkBAIC0zMTMs
MTUgKzMxMywxMyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvCiAK
ICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3Jr
UHJvY2VzcykgUmV0cmlldmFsOiBVc2luZyBwcmVsb2FkZWQgZW50cnkgdG8gc2F0aXNmeSByZXF1
ZXN0IGZvciAnJXMnOiIsIHN0b3JhZ2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBw
cmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSA/IERpYWdub3N0aWNMb2dnaW5nS2V5czo6
c3VjY2Vzc2Z1bFNwZWN1bGF0aXZlV2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpIDogRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRob3V0UmV2YWxp
ZGF0aW9uS2V5KCkpOwotCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHByZWxvYWRlZEVudHJ5
LT50YWtlQ2FjaGVFbnRyeSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAg
Ly8gQ2hlY2sgcGVuZGluZyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb25zLgogICAgIGF1dG8qIHBl
bmRpbmdQcmVsb2FkID0gbV9wZW5kaW5nUHJlbG9hZHMuZ2V0KHN0b3JhZ2VLZXkpOwogICAgIGlm
ICghcGVuZGluZ1ByZWxvYWQpIHsKLSAgICAgICAgaWYgKG1fbm90UHJlbG9hZGVkRW50cmllcy5y
ZW1vdmUoc3RvcmFnZUtleSkpCisgICAgICAgIGlmIChtX25vdFByZWxvYWRlZEVudHJpZXMuZ2V0
KHN0b3JhZ2VLZXkpKQogICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3Rp
Y01lc3NhZ2UoZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVdyb25nbHlOb3RX
YXJtZWRVcEtleSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVM
b2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp1
bmtub3duRW50cnlSZXF1ZXN0S2V5KCkpOwpAQCAtMzM3LDEwICszMzUsMjUgQEAgYm9vbCBTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShjbwogCiAgICAgTE9HKE5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgUmV0cmlldmFsOiByZXZhbGlk
YXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyBmb3IgJyVzJzoiLCBzdG9yYWdlS2V5LmlkZW50aWZp
ZXIoKS51dGY4KCkuZGF0YSgpKTsKIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtleSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8gcHJlbG9hZGVkRW50cnkg
PSBtX3ByZWxvYWRlZEVudHJpZXMudGFrZShzdG9yYWdlS2V5KSkgeworICAgICAgICBBU1NFUlQo
Y2FuVXNlUHJlbG9hZGVkRW50cnkoKnByZWxvYWRlZEVudHJ5LCByZXF1ZXN0KSk7CisKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocHJlbG9hZGVkRW50cnktPnRha2VDYWNoZUVudHJ5KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogcGVuZGluZ1ByZWxvYWQgPSBtX3Bl
bmRpbmdQcmVsb2Fkcy5nZXQoc3RvcmFnZUtleSk7CisgICAgQVNTRVJUKHBlbmRpbmdQcmVsb2Fk
KTsKKyAgICBBU1NFUlQoY2FuVXNlUGVuZGluZ1ByZWxvYWQoKnBlbmRpbmdQcmVsb2FkLCByZXF1
ZXN0KSk7CisKICAgICAvLyBGSVhNRTogVGhpcyBicmVha3MgaW5jcmVtZW50YWwgbG9hZGluZyB3
aGVuIHRoZSByZXZhbGlkYXRpb24gaXMgbm90IHN1Y2Nlc3NmdWwuCiAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3BlbmRpbmdSZXRyaWV2ZVJlcXVlc3RzLmVuc3VyZShzdG9yYWdlS2V5LCBbXSB7IHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4o
KTsgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaAkocmV2
aXNpb24gMjEwMDU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4
ICs1MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxG
cmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNv
dXJjZUtleSk7CiAKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVf
cHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7Ci0gICAgYm9vbCByZXRyaWV2
ZShjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAg
IHR5cGVkZWYgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZl
Q29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBib29sIGNhblJldHJpZXZlKGNvbnN0IEdsb2JhbEZy
YW1lSUQmLCBjb25zdCBLZXkmIHN0b3JhZ2VLZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGNvbnN0OworICAgIHZvaWQgcmV0cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVy
JiYpOwogCiBwcml2YXRlOgogICAgIGNsYXNzIFByZWxvYWRlZEVudHJ5OwpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw5ICs1Myw5IEBAIHN0YXRpYyBkb3VibGUgY29tcHV0ZVJlY29yZFdvcnRoKEZpbGVUaW0K
IHN0cnVjdCBTdG9yYWdlOjpSZWFkT3BlcmF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBSZWFkT3BlcmF0aW9uKGNvbnN0IEtleSYga2V5LCBjb25zdCBS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBSZWFkT3Bl
cmF0aW9uKGNvbnN0IEtleSYga2V5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgICAgIDoga2V5KGtleSkKLSAgICAgICAgLCBjb21wbGV0aW9uSGFu
ZGxlcihjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7IH0KIAogICAgIHZvaWQgY2FuY2VsKCk7CkBA
IC04MDQsNyArODA0LDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5
cAogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHRyYXZlcnNl
SGFuZGxlcik7Ci0gICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIHN0ZDo6ZnVuY3Rpb24gY29w
aWVzLgorICAgIC8vIEF2b2lkIG5vbi10aHJlYWQgc2FmZSBGdW5jdGlvbiBjb3BpZXMuCiAKICAg
ICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxUcmF2ZXJzZU9w
ZXJhdGlvbj4odHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CiAgICAgYXV0
byYgdHJhdmVyc2VPcGVyYXRpb24gPSAqdHJhdmVyc2VPcGVyYXRpb25QdHI7CkBAIC04ODgsNyAr
ODg4LDcgQEAgdm9pZCBTdG9yYWdlOjpzZXRDYXBhY2l0eShzaXplX3QgY2FwYWNpdAogICAgIHNo
cmlua0lmTmVlZGVkKCk7CiB9CiAKLXZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0
eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2VU
aW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFN0
b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlVGltZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIExP
RyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBjbGVhcmluZyBjYWNoZSIp
OwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMjEwMDU3KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSwxNCArNTksMTQgQEAgcHVibGljOgogICAgICAgICBEYXRhIGJvZHk7CiAg
ICAgfTsKICAgICAvLyBUaGlzIG1heSBjYWxsIGNvbXBsZXRpb24gaGFuZGxlciBzeW5jaHJvbm91
c2x5IG9uIGZhaWx1cmUuCi0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPGJvb2wgKHN0ZDo6dW5p
cXVlX3B0cjxSZWNvcmQ+KT4gUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcjsKKyAgICB0eXBlZGVm
IEZ1bmN0aW9uPGJvb2wgKHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+KT4gUmV0cmlldmVDb21wbGV0
aW9uSGFuZGxlcjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IEtleSYsIHVuc2lnbmVkIHByaW9y
aXR5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdHlwZWRlZiBGdW5jdGlv
bjx2b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CiAgICAg
dm9pZCBzdG9yZShjb25zdCBSZWNvcmQmLCBNYXBwZWRCb2R5SGFuZGxlciYmKTsKIAogICAgIHZv
aWQgcmVtb3ZlKGNvbnN0IEtleSYpOwotICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBl
LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2VUaW1l
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQg
Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IG1vZGlmaWVkU2luY2VUaW1lLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKTsKIAogICAgIHN0cnVjdCBSZWNvcmRJbmZvIHsKICAgICAgICAgc2l6ZV90IGJvZHlT
aXplOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiB9OwogCiAvLyBGSVhNRTogUmVtb3Zl
LCB1c2VkIGJ5IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3Mgb25seS4KLXVzaW5nIFJlY29yZEZpbGVU
cmF2ZXJzZUZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBp
c0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCk+OwordXNpbmcgUmVjb3Jk
RmlsZVRyYXZlcnNlRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBp
c0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCk+Owogdm9pZCB0cmF2ZXJz
ZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFJlY29yZEZpbGVUcmF2ZXJzZUZ1bmN0aW9uJik7CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298102</attachid>
            <date>2017-01-05 07:36:40 -0800</date>
            <delta_ts>2017-01-05 09:59:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>wtffunction-cache-4.patch</filename>
            <type>text/plain</type>
            <size>16929</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDMyNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE3LTAxLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBp
bnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gaW4gbmV0d29yayBjYWNoZSBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYmV0dGVyIG1vdmUtb25s
eSB0eXBlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpjbGVhcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhOjphcHBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YVNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6
OmFwcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0cmF2ZXJzZURpcmVj
dG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmNhblJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZSk6CisKKyAgICAgICAg
ICAgIFNwbGl0IHJldHJpZXZlKCkgdG8gY2FuUmV0cmlldmUgYW5kIHJldHJpZXZlIGZ1bmN0aW9u
cy4KKyAgICAgICAgICAgIFRoaXMgYXZvaWRzIHRoZSBuZWVkIHRvIGNvcHkgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBpbiB0aGUgY2FsbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlYWRPcGVyYXRpb246OlJlYWRPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorCiAyMDE3LTAxLTA1ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ2hyb21l
Q2xpZW50OjpuZWVkVG91Y2hFdmVudHMoKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkocmV2aXNpb24gMjEwMDU3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyBTdG9yZURlY2lzaW9u
IG1ha2VTdG9yZURlY2lzaW9uKGMKICAgICByZXR1cm4gU3RvcmVEZWNpc2lvbjo6WWVzOwogfQog
Ci12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
c3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hl
OjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7
CiAgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKQEAg
LTMzNywxMyArMzM3LDE1IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJl
c28KICAgICB9CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04pCi0gICAgaWYgKGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci0+cmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVzdCwg
W3JlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5
KSB7Ci0gICAgICAgIGlmIChlbnRyeSAmJiBXZWJDb3JlOjp2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhl
YWRlcnMoZW50cnktPnZhcnlpbmdSZXF1ZXN0SGVhZGVycygpLCByZXF1ZXN0KSkKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50cnkpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Ci0gICAgfSkpCisgICAgaWYgKGNh
blVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+
Y2FuUmV0cmlldmUoc3RvcmFnZUtleSwgcmVxdWVzdCwgZnJhbWVJRCkpIHsKKyAgICAgICAgbV9z
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLT5yZXRyaWV2ZShzdG9yYWdlS2V5LCBbcmVxdWVzdCwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBlbnRyeSkgeworICAgICAgICAgICAgaWYgKGVudHJ5ICYmIFdlYkNvcmU6OnZl
cmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVycyhlbnRyeS0+dmFyeWluZ1JlcXVlc3RIZWFkZXJzKCks
IHJlcXVlc3QpKQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50
cnkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYK
IAogICAgIGF1dG8gc3RhcnRUaW1lID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7
CkBAIC01ODYsNyArNTg4LDcgQEAgdm9pZCBDYWNoZTo6ZGVsZXRlRHVtcEZpbGUoKQogICAgIH0p
OwogfQogCi12b2lkIENhY2hlOjpjbGVhcihzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgQ2FjaGU6OmNsZWFyKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBjbGVhcmlu
ZyBjYWNoZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkocmV2aXNpb24gMjEwMDU3KQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiAhIW1fc3RvcmFnZTsgfQogCiAgICAgLy8gQ29tcGxldGlvbiBoYW5kbGVyIG1heSBnZXQg
Y2FsbGVkIGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgotICAgIHZvaWQgcmV0cmlldmUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYpOworICAgIHZvaWQg
cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJh
bWVJRCYsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPiYmKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2Jh
bEZyYW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHZhbGlkYXRpbmdSZXNwb25zZSk7CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgdm9pZCBj
bGVhcigpOwotICAgIHZvaWQgY2xlYXIoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpOworICAgIHZvaWQgY2xlYXIoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgJ
KHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1
YmxpYzoKIAogICAgIERhdGEgc3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90KSBjb25zdDsK
IAotICAgIGJvb2wgYXBwbHkoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KT4mJikgY29uc3Q7CisgICAgYm9vbCBhcHBseShjb25zdCBGdW5jdGlvbjxib29s
IChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKSBjb25zdDsKIAogICAgIERhdGEgbWFwVG9GaWxl
KGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1t
CShyZXZpc2lvbiAyMTAwNTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcg
QEAgYm9vbCBEYXRhOjppc051bGwoKSBjb25zdAogICAgIHJldHVybiAhbV9kaXNwYXRjaERhdGE7
CiB9CiAKLWJvb2wgRGF0YTo6YXBwbHkoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KT4mJiBhcHBsaWVyKSBjb25zdAorYm9vbCBEYXRhOjphcHBseShjb25z
dCBGdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhU291cC5jcHAJKHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzAsNyArNzAsNyBAQCBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJu
ICFtX2J1ZmZlcjsKIH0KIAotYm9vbCBEYXRhOjphcHBseShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJv
b2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGFwcGxpZXIpIGNvbnN0Citib29sIERhdGE6
OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBw
bGllcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmls
ZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDIxMDA1NykKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8ZGlyZW50Lmg+
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFVT
RShTT1VQKQpAQCAtNTUsNyArNTYsNyBAQCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVj
dG9yeUVudHJ5CiAgICAgfQogfQogCi12b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3Rv
cnlFbnRyeVR5cGUpPiYgZnVuY3Rpb24pCit2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGlyZWN0b3J5
RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewogICAgIERJUiogZGlyID0gb3BlbmRpcihXZWJDb3Jl
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoIWRpcikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVz
cGFjZSBOZXR3b3JrQ2FjaGUgewogCiBlbnVtIGNsYXNzIERpcmVjdG9yeUVudHJ5VHlwZSB7IERp
cmVjdG9yeSwgRmlsZSB9Owotdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgRGly
ZWN0b3J5RW50cnlUeXBlKT4mKTsKK3ZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJl
Y3RvcnlFbnRyeVR5cGUpPiYpOwogCiB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNv
bnN0IFN0cmluZyYgcGF0aCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMTAwNTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDEwICszMDEsMTAgQEAgYm9vbCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQZW5kaQogICAgIHJldHVybiByZXF1ZXN0c0hlYWRlcnNNYXRj
aChsb2FkLm9yaWdpbmFsUmVxdWVzdCgpLCBhY3R1YWxSZXF1ZXN0KTsKIH0KIAotYm9vbCBTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlE
LCBjb25zdCBLZXkmIHN0b3JhZ2VLZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
Ym9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpjYW5SZXRyaWV2ZShjb25zdCBLZXkmIHN0b3Jh
Z2VLZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xv
YmFsRnJhbWVJRCYgZnJhbWVJRCkgY29uc3QKIHsKICAgICAvLyBDaGVjayBhbHJlYWR5IHByZWxv
YWRlZCBlbnRyaWVzLgotICAgIGlmIChhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRF
bnRyaWVzLnRha2Uoc3RvcmFnZUtleSkpIHsKKyAgICBpZiAoYXV0byBwcmVsb2FkZWRFbnRyeSA9
IG1fcHJlbG9hZGVkRW50cmllcy5nZXQoc3RvcmFnZUtleSkpIHsKICAgICAgICAgaWYgKCFjYW5V
c2VQcmVsb2FkZWRFbnRyeSgqcHJlbG9hZGVkRW50cnksIHJlcXVlc3QpKSB7CiAgICAgICAgICAg
ICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNz
KSBSZXRyaWV2YWw6IENvdWxkIG5vdCB1c2UgcHJlbG9hZGVkIGVudHJ5IHRvIHNhdGlzZnkgcmVx
dWVzdCBmb3IgJyVzJyBkdWUgdG8gSFRUUCBoZWFkZXJzIG1pc21hdGNoOiIsIHN0b3JhZ2VLZXku
aWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVM
b2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgcHJlbG9hZGVkRW50cnktPndhc1JldmFs
aWRhdGVkKCkgPyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3RlZFNwZWN1bGF0aXZlV2FybXVw
V2l0aFJldmFsaWRhdGlvbktleSgpIDogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp3YXN0ZWRTcGVj
dWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZhbGlkYXRpb25LZXkoKSk7CkBAIC0zMTMsMTUgKzMxMywx
MyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvCiAKICAgICAgICAg
TE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2Vzcykg
UmV0cmlldmFsOiBVc2luZyBwcmVsb2FkZWQgZW50cnkgdG8gc2F0aXNmeSByZXF1ZXN0IGZvciAn
JXMnOiIsIHN0b3JhZ2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBs
b2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBwcmVsb2FkZWRF
bnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSA/IERpYWdub3N0aWNMb2dnaW5nS2V5czo6c3VjY2Vzc2Z1
bFNwZWN1bGF0aXZlV2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpIDogRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRob3V0UmV2YWxpZGF0aW9uS2V5
KCkpOwotCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHByZWxvYWRlZEVudHJ5LT50YWtlQ2Fj
aGVFbnRyeSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sg
cGVuZGluZyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb25zLgogICAgIGF1dG8qIHBlbmRpbmdQcmVs
b2FkID0gbV9wZW5kaW5nUHJlbG9hZHMuZ2V0KHN0b3JhZ2VLZXkpOwogICAgIGlmICghcGVuZGlu
Z1ByZWxvYWQpIHsKLSAgICAgICAgaWYgKG1fbm90UHJlbG9hZGVkRW50cmllcy5yZW1vdmUoc3Rv
cmFnZUtleSkpCisgICAgICAgIGlmIChtX25vdFByZWxvYWRlZEVudHJpZXMuZ2V0KHN0b3JhZ2VL
ZXkpKQogICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2Uo
ZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVdyb25nbHlOb3RXYXJtZWRVcEtl
eSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlh
Z25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp1bmtub3duRW50
cnlSZXF1ZXN0S2V5KCkpOwpAQCAtMzM3LDEwICszMzUsMjEgQEAgYm9vbCBTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyOjpyZXRyaWV2ZShjbwogCiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
UHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgUmV0cmlldmFsOiByZXZhbGlkYXRpb24gYWxy
ZWFkeSBpbiBwcm9ncmVzcyBmb3IgJyVzJzoiLCBzdG9yYWdlS2V5LmlkZW50aWZpZXIoKS51dGY4
KCkuZGF0YSgpKTsKIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtleSwgUmV0cmlldmVDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvIHByZWxvYWRl
ZEVudHJ5ID0gbV9wcmVsb2FkZWRFbnRyaWVzLnRha2Uoc3RvcmFnZUtleSkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocHJlbG9hZGVkRW50cnktPnRha2VDYWNoZUVudHJ5KCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChtX3BlbmRpbmdQcmVsb2Fkcy5jb250YWlu
cyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklYTUU6IFRoaXMgYnJlYWtzIGluY3JlbWVudGFsIGxv
YWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5vdCBzdWNjZXNzZnVsLgotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0cy5lbnN1cmUoc3RvcmFnZUtleSwg
W10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlcj4+KCk7IH0pOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1
ZXN0cy5lbnN1cmUoc3RvcmFnZUtleSwgW10geworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgfSk7CiAgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
OjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMjEwMDU3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSwxMCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJjZUtleSk7CiAK
LSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7Ci0gICAgYm9vbCByZXRyaWV2ZShjb25zdCBHbG9i
YWxGcmFtZUlEJiwgY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHR5cGVkZWYgRnVu
Y3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhh
bmRsZXI7CisKKyAgICBib29sIGNhblJldHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtleSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYpIGNvbnN0
OworICAgIHZvaWQgcmV0cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwogCiBwcml2YXRlOgogICAgIGNsYXNzIFByZWxvYWRlZEVudHJ5OwpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDIxMDA1NykKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw5ICs1Myw5IEBAIHN0YXRpYyBkb3VibGUgY29tcHV0ZVJlY29yZFdv
cnRoKEZpbGVUaW0KIHN0cnVjdCBTdG9yYWdlOjpSZWFkT3BlcmF0aW9uIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBSZWFkT3BlcmF0aW9uKGNvbnN0IEtleSYg
a2V5LCBjb25zdCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICBSZWFkT3BlcmF0aW9uKGNvbnN0IEtleSYga2V5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDoga2V5KGtleSkKLSAgICAgICAgLCBj
b21wbGV0aW9uSGFuZGxlcihjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgLCBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7IH0KIAogICAgIHZvaWQg
Y2FuY2VsKCk7CkBAIC04MDQsNyArODA0LDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25z
dCBTdHJpbmcmIHR5cAogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNT
RVJUKHRyYXZlcnNlSGFuZGxlcik7Ci0gICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIHN0ZDo6
ZnVuY3Rpb24gY29waWVzLgorICAgIC8vIEF2b2lkIG5vbi10aHJlYWQgc2FmZSBGdW5jdGlvbiBj
b3BpZXMuCiAKICAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmF2ZXJzZU9wZXJhdGlvbj4odHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVy
KSk7CiAgICAgYXV0byYgdHJhdmVyc2VPcGVyYXRpb24gPSAqdHJhdmVyc2VPcGVyYXRpb25QdHI7
CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBTdG9yYWdlOjpzZXRDYXBhY2l0eShzaXplX3QgY2Fw
YWNpdAogICAgIHNocmlua0lmTmVlZGVkKCk7CiB9CiAKLXZvaWQgU3RvcmFnZTo6Y2xlYXIoY29u
c3QgU3RyaW5nJiB0eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1v
ZGlmaWVkU2luY2VUaW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlVGltZSwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBjbGVh
cmluZyBjYWNoZSIpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMjEwMDU3KQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxNCArNTksMTQgQEAgcHVibGljOgogICAgICAgICBE
YXRhIGJvZHk7CiAgICAgfTsKICAgICAvLyBUaGlzIG1heSBjYWxsIGNvbXBsZXRpb24gaGFuZGxl
ciBzeW5jaHJvbm91c2x5IG9uIGZhaWx1cmUuCi0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPGJv
b2wgKHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+KT4gUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcjsK
KyAgICB0eXBlZGVmIEZ1bmN0aW9uPGJvb2wgKHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+KT4gUmV0
cmlldmVDb21wbGV0aW9uSGFuZGxlcjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IEtleSYsIHVu
c2lnbmVkIHByaW9yaXR5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdHlw
ZWRlZiBGdW5jdGlvbjx2b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhh
bmRsZXI7CiAgICAgdm9pZCBzdG9yZShjb25zdCBSZWNvcmQmLCBNYXBwZWRCb2R5SGFuZGxlciYm
KTsKIAogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwotICAgIHZvaWQgY2xlYXIoY29uc3Qg
U3RyaW5nJiB0eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2VUaW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2VUaW1lLCBGdW5jdGlvbjx2b2lkICgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHN0cnVjdCBSZWNvcmRJbmZvIHsKICAgICAgICAg
c2l6ZV90IGJvZHlTaXplOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiB9OwogCiAvLyBG
SVhNRTogUmVtb3ZlLCB1c2VkIGJ5IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3Mgb25seS4KLXVzaW5n
IFJlY29yZEZpbGVUcmF2ZXJzZUZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCk+Owor
dXNpbmcgUmVjb3JkRmlsZVRyYXZlcnNlRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCk+Owog
dm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFJlY29yZEZpbGVUcmF2ZXJzZUZ1bmN0aW9uJik7CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298110</attachid>
            <date>2017-01-05 09:59:52 -0800</date>
            <delta_ts>2017-01-05 09:59:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>wtffunction-cache-5.patch</filename>
            <type>text/plain</type>
            <size>17786</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDMzMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE3LTAxLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBp
bnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gaW4gbmV0d29yayBjYWNoZSBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYmV0dGVyIG1vdmUtb25s
eSB0eXBlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpjbGVhcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhOjphcHBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YVNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6
OmFwcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0cmF2ZXJzZURpcmVj
dG9yeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmNhblJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZSk6CisKKyAgICAgICAg
ICAgIFNwbGl0IHJldHJpZXZlKCkgdG8gY2FuUmV0cmlldmUgYW5kIHJldHJpZXZlIGZ1bmN0aW9u
cy4KKyAgICAgICAgICAgIFRoaXMgYXZvaWRzIHRoZSBuZWVkIHRvIGNvcHkgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBpbiB0aGUgY2FsbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlYWRPcGVyYXRpb246OlJlYWRPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorCiAyMDE3LTAxLTA1ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ2hyb21l
Q2xpZW50OjpuZWVkVG91Y2hFdmVudHMoKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MjEwMzMwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2gKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVx
dWVzdCkpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMp
OwotICAgIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkucmV0cmlldmUocmVxdWVzdCwgeyBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBbbG9hZGVyLCBy
ZXF1ZXN0XShhdXRvIGVudHJ5KSB7CisgICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5yZXRy
aWV2ZShyZXF1ZXN0LCB7IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlEIH0sIFtsb2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3RdKGF1dG8gZW50cnkp
IHsKICAgICAgICAgaWYgKGxvYWRlci0+aGFzT25lUmVmKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBsb2FkZXIgaGFzIGJlZW4gYWJvcnRlZCBhbmQgaXMgb25seSBoZWxkIGFsaXZlIGJ5IHRoaXMg
bGFtYmRhLgogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lvbiAyMTAz
MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIFN0b3JlRGVjaXNp
b24gbWFrZVN0b3JlRGVjaXNpb24oYwogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7CiB9
CiAKLXZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgc3RkOjpmdW5jdGlvbjx2b2lk
IChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2Fj
aGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRy
PEVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzRW5hYmxlZCgp
KTsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwpA
QCAtMzM3LDEzICszMzcsMTUgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6
UmVzbwogICAgIH0KIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFM
SURBVElPTikKLSAgICBpZiAoY2FuVXNlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gJiYgbV9zcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLT5yZXRyaWV2ZShmcmFtZUlELCBzdG9yYWdlS2V5LCByZXF1ZXN0
LCBbcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXJdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50
cnkpIHsKLSAgICAgICAgaWYgKGVudHJ5ICYmIFdlYkNvcmU6OnZlcmlmeVZhcnlpbmdSZXF1ZXN0
SGVhZGVycyhlbnRyeS0+dmFyeWluZ1JlcXVlc3RIZWFkZXJzKCksIHJlcXVlc3QpKQotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlbnRyeSkpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKLSAgICB9KSkKKyAgICBpZiAo
Y2FuVXNlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gJiYgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LT5jYW5SZXRyaWV2ZShzdG9yYWdlS2V5LCByZXF1ZXN0LCBmcmFtZUlEKSkgeworICAgICAgICBt
X3NwZWN1bGF0aXZlTG9hZE1hbmFnZXItPnJldHJpZXZlKHN0b3JhZ2VLZXksIFtyZXF1ZXN0LCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IGVudHJ5KSB7CisgICAgICAgICAgICBpZiAoZW50cnkgJiYgV2ViQ29yZTo6
dmVyaWZ5VmFyeWluZ1JlcXVlc3RIZWFkZXJzKGVudHJ5LT52YXJ5aW5nUmVxdWVzdEhlYWRlcnMo
KSwgcmVxdWVzdCkpCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShl
bnRyeSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRp
ZgogCiAgICAgYXV0byBzdGFydFRpbWUgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3co
KTsKQEAgLTU4Niw3ICs1ODgsNyBAQCB2b2lkIENhY2hlOjpkZWxldGVEdW1wRmlsZSgpCiAgICAg
fSk7CiB9CiAKLXZvaWQgQ2FjaGU6OmNsZWFyKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBDYWNoZTo6Y2xlYXIoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGNsZWFy
aW5nIGNhY2hlIik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCShyZXZpc2lvbiAyMTAzMzApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9zdG9yYWdlOyB9CiAKICAgICAvLyBDb21wbGV0aW9uIGhhbmRsZXIgbWF5IGdl
dCBjYWxsZWQgYmFjayBzeW5jaHJvbm91c2x5IG9uIGZhaWx1cmUuCi0gICAgdm9pZCByZXRyaWV2
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwg
c3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4mJik7CisgICAgdm9p
ZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxG
cmFtZUlEJiwgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQgKE1hcHBlZEJvZHkmKT4mJik7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xv
YmFsRnJhbWVJRCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZW1vdmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICB2b2lk
IGNsZWFyKCk7Ci0gICAgdm9pZCBjbGVhcihzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgdm9pZCBjbGVhcihzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IG1vZGlmaWVkU2luY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEu
aAkocmV2aXNpb24gMjEwMzMwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAg
cHVibGljOgogCiAgICAgRGF0YSBzdWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QpIGNvbnN0
OwogCi0gICAgYm9vbCBhcHBseShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpPiYmKSBjb25zdDsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJv
b2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpIGNvbnN0OwogCiAgICAgRGF0YSBtYXBUb0Zp
bGUoY29uc3QgY2hhciogcGF0aCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2Eu
bW0JKHJldmlzaW9uIDIxMDMzMCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEs
NyBAQCBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2Rpc3BhdGNoRGF0
YTsKIH0KIAotYm9vbCBEYXRhOjphcHBseShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGFwcGxpZXIpIGNvbnN0Citib29sIERhdGE6OmFwcGx5KGNv
bnN0IEZ1bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgY29u
c3QKIHsKICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZURhdGFTb3VwLmNwcAkocmV2aXNpb24gMjEwMzMwKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw3IEBAIGJvb2wgRGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1
cm4gIW1fYnVmZmVyOwogfQogCi1ib29sIERhdGE6OmFwcGx5KGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbCAoY29uc3QgdWludDhfdCosIHNpemVfdCk+JiYgYXBwbGllcikgY29uc3QKK2Jvb2wgRGF0
YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbCAoY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBh
cHBsaWVyKSBjb25zdAogewogICAgIGlmICghbV9zaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMjEwMzMwKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxkaXJlbnQu
aD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYg
VVNFKFNPVVApCkBAIC01NSw3ICs1Niw3IEBAIHN0YXRpYyBEaXJlY3RvcnlFbnRyeVR5cGUgZGly
ZWN0b3J5RW50cnkKICAgICB9CiB9CiAKLXZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIERpcmVj
dG9yeUVudHJ5VHlwZSk+JiBmdW5jdGlvbikKK3ZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3Rv
cnlFbnRyeVR5cGUpPiYgZnVuY3Rpb24pCiB7CiAgICAgRElSKiBkaXIgPSBvcGVuZGlyKFdlYkNv
cmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghZGly
KQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMjEwMzMwKQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogbmFt
ZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIGVudW0gY2xhc3MgRGlyZWN0b3J5RW50cnlUeXBlIHsg
RGlyZWN0b3J5LCBGaWxlIH07Ci12b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBE
aXJlY3RvcnlFbnRyeVR5cGUpPiYpOwordm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERp
cmVjdG9yeUVudHJ5VHlwZSk+Jik7CiAKIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHko
Y29uc3QgU3RyaW5nJiBwYXRoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHJldmlzaW9uIDIxMDMzMCkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsMTAgKzMwMSwxMCBAQCBib29sIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OmNhblVzZVBlbmRpCiAgICAgcmV0dXJuIHJlcXVlc3RzSGVhZGVyc01h
dGNoKGxvYWQub3JpZ2luYWxSZXF1ZXN0KCksIGFjdHVhbFJlcXVlc3QpOwogfQogCi1ib29sIFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1l
SUQsIGNvbnN0IEtleSYgc3RvcmFnZUtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Citib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmNhblJldHJpZXZlKGNvbnN0IEtleSYgc3Rv
cmFnZUtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBH
bG9iYWxGcmFtZUlEJiBmcmFtZUlEKSBjb25zdAogewogICAgIC8vIENoZWNrIGFscmVhZHkgcHJl
bG9hZGVkIGVudHJpZXMuCi0gICAgaWYgKGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRl
ZEVudHJpZXMudGFrZShzdG9yYWdlS2V5KSkgeworICAgIGlmIChhdXRvIHByZWxvYWRlZEVudHJ5
ID0gbV9wcmVsb2FkZWRFbnRyaWVzLmdldChzdG9yYWdlS2V5KSkgewogICAgICAgICBpZiAoIWNh
blVzZVByZWxvYWRlZEVudHJ5KCpwcmVsb2FkZWRFbnRyeSwgcmVxdWVzdCkpIHsKICAgICAgICAg
ICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nl
c3MpIFJldHJpZXZhbDogQ291bGQgbm90IHVzZSBwcmVsb2FkZWQgZW50cnkgdG8gc2F0aXNmeSBy
ZXF1ZXN0IGZvciAnJXMnIGR1ZSB0byBIVFRQIGhlYWRlcnMgbWlzbWF0Y2g6Iiwgc3RvcmFnZUtl
eS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2
ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBwcmVsb2FkZWRFbnRyeS0+d2FzUmV2
YWxpZGF0ZWQoKSA/IERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3BlY3VsYXRpdmVXYXJt
dXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkgOiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3RlZFNw
ZWN1bGF0aXZlV2FybXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpKTsKQEAgLTMxMywxNSArMzEz
LDEzIEBAIGJvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY28KIAogICAgICAg
ICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNz
KSBSZXRyaWV2YWw6IFVzaW5nIHByZWxvYWRlZCBlbnRyeSB0byBzYXRpc2Z5IHJlcXVlc3QgZm9y
ICclcyc6Iiwgc3RvcmFnZUtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIHByZWxvYWRl
ZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpID8gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzdWNjZXNz
ZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkgOiBEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZhbGlkYXRpb25L
ZXkoKSk7Ci0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocHJlbG9hZGVkRW50cnktPnRha2VD
YWNoZUVudHJ5KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBDaGVj
ayBwZW5kaW5nIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbnMuCiAgICAgYXV0byogcGVuZGluZ1By
ZWxvYWQgPSBtX3BlbmRpbmdQcmVsb2Fkcy5nZXQoc3RvcmFnZUtleSk7CiAgICAgaWYgKCFwZW5k
aW5nUHJlbG9hZCkgewotICAgICAgICBpZiAobV9ub3RQcmVsb2FkZWRFbnRyaWVzLnJlbW92ZShz
dG9yYWdlS2V5KSkKKyAgICAgICAgaWYgKG1fbm90UHJlbG9hZGVkRW50cmllcy5nZXQoc3RvcmFn
ZUtleSkpCiAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2Fn
ZShmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5V3JvbmdseU5vdFdhcm1lZFVw
S2V5KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdE
aWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnVua25vd25F
bnRyeVJlcXVlc3RLZXkoKSk7CkBAIC0zMzcsMTAgKzMzNSwyMSBAQCBib29sIFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvCiAKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBSZXRyaWV2YWw6IHJldmFsaWRhdGlvbiBh
bHJlYWR5IGluIHByb2dyZXNzIGZvciAnJXMnOiIsIHN0b3JhZ2VLZXkuaWRlbnRpZmllcigpLnV0
ZjgoKS5kYXRhKCkpOwogCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVM
b2FkTWFuYWdlcjo6cmV0cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8gcHJlbG9h
ZGVkRW50cnkgPSBtX3ByZWxvYWRlZEVudHJpZXMudGFrZShzdG9yYWdlS2V5KSkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihwcmVsb2FkZWRFbnRyeS0+dGFrZUNhY2hlRW50cnkoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fcGVuZGluZ1ByZWxvYWRzLmNvbnRh
aW5zKHN0b3JhZ2VLZXkpKTsKICAgICAvLyBGSVhNRTogVGhpcyBicmVha3MgaW5jcmVtZW50YWwg
bG9hZGluZyB3aGVuIHRoZSByZXZhbGlkYXRpb24gaXMgbm90IHN1Y2Nlc3NmdWwuCi0gICAgYXV0
byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXRyaWV2ZVJlcXVlc3RzLmVuc3VyZShzdG9yYWdlS2V5
LCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25I
YW5kbGVyPj4oKTsgfSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXRyaWV2ZVJl
cXVlc3RzLmVuc3VyZShzdG9yYWdlS2V5LCBbXSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKKyAgICB9KTsKICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCShyZXZpc2lvbiAyMTAz
MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDEwIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLZXkmIHJlc291cmNlS2V5KTsK
IAotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
KT4gUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcjsKLSAgICBib29sIHJldHJpZXZlKGNvbnN0IEds
b2JhbEZyYW1lSUQmLCBjb25zdCBLZXkmIHN0b3JhZ2VLZXksIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdHlwZWRlZiBG
dW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4gUmV0cmlldmVDb21wbGV0aW9u
SGFuZGxlcjsKKworICAgIGJvb2wgY2FuUmV0cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJikgY29u
c3Q7CisgICAgdm9pZCByZXRyaWV2ZShjb25zdCBLZXkmIHN0b3JhZ2VLZXksIFJldHJpZXZlQ29t
cGxldGlvbkhhbmRsZXImJik7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgUHJlbG9hZGVkRW50cnk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMjEwMzMwKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDkgQEAgc3RhdGljIGRvdWJsZSBjb21wdXRlUmVjb3Jk
V29ydGgoRmlsZVRpbQogc3RydWN0IFN0b3JhZ2U6OlJlYWRPcGVyYXRpb24gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFJlYWRPcGVyYXRpb24oY29uc3QgS2V5
JiBrZXksIGNvbnN0IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIFJlYWRPcGVyYXRpb24oY29uc3QgS2V5JiBrZXksIFJldHJpZXZlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBrZXkoa2V5KQotICAgICAgICAs
IGNvbXBsZXRpb25IYW5kbGVyKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAsIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCiAgICAgdm9p
ZCBjYW5jZWwoKTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNv
bnN0IFN0cmluZyYgdHlwCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBB
U1NFUlQodHJhdmVyc2VIYW5kbGVyKTsKLSAgICAvLyBBdm9pZCBub24tdGhyZWFkIHNhZmUgc3Rk
OjpmdW5jdGlvbiBjb3BpZXMuCisgICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIEZ1bmN0aW9u
IGNvcGllcy4KIAogICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRyYXZlcnNlT3BlcmF0aW9uPih0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRs
ZXIpKTsKICAgICBhdXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0cmF2ZXJzZU9wZXJhdGlvblB0
cjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIFN0b3JhZ2U6OnNldENhcGFjaXR5KHNpemVfdCBj
YXBhY2l0CiAgICAgc2hyaW5rSWZOZWVkZWQoKTsKIH0KIAotdm9pZCBTdG9yYWdlOjpjbGVhcihj
b25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
bW9kaWZpZWRTaW5jZVRpbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2VUaW1lLCBGdW5jdGlvbjx2
b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGNs
ZWFyaW5nIGNhY2hlIik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCShyZXZpc2lvbiAyMTAzMzAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE0ICs1OSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IERhdGEgYm9keTsKICAgICB9OwogICAgIC8vIFRoaXMgbWF5IGNhbGwgY29tcGxldGlvbiBoYW5k
bGVyIHN5bmNocm9ub3VzbHkgb24gZmFpbHVyZS4KLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248
Ym9vbCAoc3RkOjp1bmlxdWVfcHRyPFJlY29yZD4pPiBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVy
OworICAgIHR5cGVkZWYgRnVuY3Rpb248Ym9vbCAoc3RkOjp1bmlxdWVfcHRyPFJlY29yZD4pPiBS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyOwogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgS2V5Jiwg
dW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB0
eXBlZGVmIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IERhdGEmIG1hcHBlZEJvZHkpPiBNYXBwZWRCb2R5
SGFuZGxlcjsKICAgICB2b2lkIHN0b3JlKGNvbnN0IFJlY29yZCYsIE1hcHBlZEJvZHlIYW5kbGVy
JiYpOwogCiAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5Jik7Ci0gICAgdm9pZCBjbGVhcihjb25z
dCBTdHJpbmcmIHR5cGUsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9k
aWZpZWRTaW5jZVRpbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZVRpbWUsIEZ1bmN0aW9uPHZvaWQgKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgc3RydWN0IFJlY29yZEluZm8gewogICAgICAg
ICBzaXplX3QgYm9keVNpemU7CkBAIC0xNzksNyArMTc5LDcgQEAgcHJpdmF0ZToKIH07CiAKIC8v
IEZJWE1FOiBSZW1vdmUsIHVzZWQgYnkgTmV0d29ya0NhY2hlU3RhdGlzdGljcyBvbmx5LgotdXNp
bmcgUmVjb3JkRmlsZVRyYXZlcnNlRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5n
JiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKT47
Cit1c2luZyBSZWNvcmRGaWxlVHJhdmVyc2VGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5n
JiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKT47
CiB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgUmVjb3JkRmlsZVRyYXZlcnNlRnVuY3Rpb24mKTsKIAog
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>