<?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>178350</bug_id>
          
          <creation_ts>2017-10-16 10:55:25 -0700</creation_ts>
          <short_desc>Cache API implementation should be able to compute storage size for WebKit client applications.</short_desc>
          <delta_ts>2017-10-19 18:46:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1360831</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-16 10:55:25 -0700</bug_when>
    <thetext>Cache API implementation should be able to compute storage size for WebKit client applications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360952</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-16 14:08:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/35014434&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360954</commentid>
    <comment_count>2</comment_count>
      <attachid>323939</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-16 14:10:00 -0700</bug_when>
    <thetext>Created attachment 323939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361060</commentid>
    <comment_count>3</comment_count>
      <attachid>323939</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-16 19:15:27 -0700</bug_when>
    <thetext>Comment on attachment 323939
Patch

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

r=me with changes.

&gt; Source/WebKit/ChangeLog:8
&gt; +        When gathering data from DOM Cache, we compute the size as follow:

as follows:

&gt; Source/WebKit/ChangeLog:9
&gt; +        - If caches is not persistent, size is zero

caches (plural) vs is (singular)

&gt; Source/WebKit/ChangeLog:10
&gt; +        - If caches is persistent, we use the size computed by NetworkCache::Storage. 

caches (plural) vs is (singular)

&gt; Source/WebCore/page/SecurityOriginData.h:70
&gt; +    bool equals(const SecurityOriginData&amp; data) const

There is already an operator==() on this class.

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:402
&gt; +                taskCounter-&gt;addOrigin(WTFMove(origin), result.value().get().storageSize());

Can .get(). be replace by -&gt; ?

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:379
&gt; +        for (const auto&amp; dataRecord : dataRecords) {

We usually omit the const.

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:380
&gt; +            for (const auto&amp; recordOrigin : dataRecord.origins) {

We usually omit the const.

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:381
&gt; +                if (WebKit::toImpl(origin)-&gt;string() == recordOrigin.securityOrigin()-&gt;toString()) {

Seems inefficient to Stringify just to compare. Assuming recordOrigin is a SecurityOriginData, we could do:
SecurityOriginData::fromSecurityOrigin(origin) == recordOrigin.

Also, we could cache SecurityOriginData::fromSecurityOrigin(origin) before the loops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361290</commentid>
    <comment_count>4</comment_count>
      <attachid>324025</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-17 10:23:29 -0700</bug_when>
    <thetext>Created attachment 324025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361324</commentid>
    <comment_count>5</comment_count>
      <attachid>324025</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-17 11:21:41 -0700</bug_when>
    <thetext>Comment on attachment 324025
Patch

Clearing flags on attachment: 324025

Committed r223558: &lt;https://trac.webkit.org/changeset/223558&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361326</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-17 11:21:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362477</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-19 18:32:08 -0700</bug_when>
    <thetext>Youenn, please stop adding C SPI without corresponding ObjC SPI.  It takes my project a step in the wrong direction.
Chris, please r- any patches that add C SPI without adding corresponding ObjC SPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362481</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-19 18:40:29 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Youenn, please stop adding C SPI without corresponding ObjC SPI.  It takes
&gt; my project a step in the wrong direction.
&gt; Chris, please r- any patches that add C SPI without adding corresponding
&gt; ObjC SPI.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362484</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-19 18:46:06 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Youenn, please stop adding C SPI without corresponding ObjC SPI.  It takes
&gt; my project a step in the wrong direction.
&gt; Chris, please r- any patches that add C SPI without adding corresponding
&gt; ObjC SPI.

There is no plan to make use of this SPI outside WebKitTestRunner.
I do not plan to add a corresponding ObjC SPI.
Maybe we can move it elsewhere to ensure it never gets used outside WebKitTestRunner.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323939</attachid>
            <date>2017-10-16 14:10:00 -0700</date>
            <delta_ts>2017-10-17 10:23:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178350-20171016140959.patch</filename>
            <type>text/plain</type>
            <size>19473</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM3ZDQ2NTdkOTlmMmQ1
MWY4NzQ1MDU2NzRmYmY5NWMxNmEwNmMzNi4uYzg0OTJhZGI3MzQxOWQ0N2U5MTJiNjJlMTM2NTgx
OWQ4ODIzNzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTE2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZSBBUEkgaW1wbGVt
ZW50YXRpb24gc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBzdG9yYWdlIHNpemUgZm9yIFdlYktp
dCBjbGllbnQgYXBwbGljYXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjplcXVhbHMgY29uc3QpOgorCiAyMDE3LTEwLTE2ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGZpeCB0aGUgdHZPUyBidWlsZCBhZnRlciByMjIzMzQwLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMWE5ZjRm
M2M4Mjg2NGVlOWFhYmQyZDAwNWJjM2E3YjllMTBlYjlhLi5hZGZlYjMxYmFmZTZhNjQxOGQ3YjQ2
ZTY4NTUyYWNjMWVlYzdlNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTEwLTE2
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZSBBUEkg
aW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBzdG9yYWdlIHNpemUgZm9y
IFdlYktpdCBjbGllbnQgYXBwbGljYXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hlbiBnYXRoZXJpbmcgZGF0YSBmcm9tIERPTSBDYWNoZSwg
d2UgY29tcHV0ZSB0aGUgc2l6ZSBhcyBmb2xsb3c6CisgICAgICAgIC0gSWYgY2FjaGVzIGlzIG5v
dCBwZXJzaXN0ZW50LCBzaXplIGlzIHplcm8KKyAgICAgICAgLSBJZiBjYWNoZXMgaXMgcGVyc2lz
dGVudCwgd2UgdXNlIHRoZSBzaXplIGNvbXB1dGVkIGJ5IE5ldHdvcmtDYWNoZTo6U3RvcmFnZS4g
CisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6UmVhZE9yaWdpbnNUYXNrQ291bnRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjphZGRPcmlnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6c3RvcmFnZVNpemUgY29u
c3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmln
aW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoK
KwogMjAxNy0xMC0xNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIzMjcxLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggMmNiMjMxZjg2ODdjYjc4ODMwZGJiYTQyNDYzMmNi
NjliNDVkZTc5My4uZDgzZjhmOTZkNzNhOGRmYzU1NjY4OGNkODVjNDliM2ExM2ZiZmZlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC02Nyw2ICs2NywxMSBA
QCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBkYXRhKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3RvY29sID09IGRhdGEucHJvdG9jb2wgJiYg
aG9zdCA9PSBkYXRhLmhvc3QgJiYgcG9ydCA9PSBkYXRhLnBvcnQ7CisgICAgfQorCiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBwcm90b2NvbC5pc051bGwo
KSAmJiBob3N0LmlzTnVsbCgpICYmIHBvcnQgPT0gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwCmluZGV4IDRkMmFiNDRjODczM2U3MWMxNDVjOThhOTcyOTkwNDVlYTM3ZDU4MzUuLmY4MTcz
NjJkYWU1NTQ2ZDZiZjBhZDg5NWY4ODgzNjUzYmU4NjYwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAK
QEAgLTM0OCwxNiArMzQ4LDE3IEBAIGNsYXNzIFJlYWRPcmlnaW5zVGFza0NvdW50ZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxSZWFkT3JpZ2luc1Rhc2tDb3VudGVyPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxSZWFkT3JpZ2luc1Rhc2tDb3VudGVyPiBjcmVhdGUoV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjYWxsYmFjaykKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRPcmlnaW5zVGFza0NvdW50ZXIoV1RG
TW92ZShjYWxsYmFjaykpKTt9CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRPcmln
aW5zVGFza0NvdW50ZXIoV1RGTW92ZShjYWxsYmFjaykpKTsKKyAgICB9CiAKICAgICB+UmVhZE9y
aWdpbnNUYXNrQ291bnRlcigpCiAgICAgewogICAgICAgICBtX2NhbGxiYWNrKFdURk1vdmUobV9l
bnRyaWVzKSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgb3JpZ2luKQorICAgIHZvaWQgYWRkT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIG9yaWdpbiwgdWludDY0X3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIG1fZW50
cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgV1RGTW92ZShvcmlnaW4pLCBXZWJzaXRl
RGF0YVR5cGU6OkRPTUNhY2hlLCAwIH0pOworICAgICAgICBtX2VudHJpZXMuYXBwZW5kKFdlYnNp
dGVEYXRhOjpFbnRyeSB7IFdURk1vdmUob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpET01DYWNo
ZSwgc2l6ZSB9KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zNzAsNyArMzcxLDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBtX2VudHJpZXM7CiB9OwogCi12b2lk
IEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgLyogc2hvdWxkQ29tcHV0ZVNpemUgKi8sIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hvdWxkQ29t
cHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6
OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0
KCkpIHsKICAgICAgICAgYXV0byBlbnRyaWVzID0gV1RGOjptYXAobV9jYWNoZXMsIFtdIChhdXRv
JiBwYWlyKSB7CkBAIC0zODQsMTAgKzM4NSwyMyBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVz
KGJvb2wgLyogc2hvdWxkQ29tcHV0ZVNpemUgKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dgog
ICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkobV9yb290
UGF0aCwgIioiKSkgewogICAgICAgICBpZiAoIVdlYkNvcmU6OmZpbGVJc0RpcmVjdG9yeShmb2xk
ZXJQYXRoLCBXZWJDb3JlOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3Rv
cnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Rhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29w
eVJlZigpXSAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgb3Jp
Z2luKSBtdXRhYmxlIHsKKyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3Rv
cnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgc2hvdWxkQ29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJlZigp
XSAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgb3JpZ2luKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAg
ICAgICBpZiAob3JpZ2luKQotICAgICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4o
V1RGTW92ZShvcmlnaW4udmFsdWUoKSkpOworICAgICAgICAgICAgaWYgKCFvcmlnaW4pCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIXNob3VsZENvbXB1dGVTaXpl
KSB7CisgICAgICAgICAgICAgICAgdGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdp
bi52YWx1ZSgpKSwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBhdXRvIGNhY2hlT3JpZ2luID0gb3JpZ2luLT5zZWN1cml0eU9yaWdpbigp
LT50b1N0cmluZygpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVhZENhY2hlc0Zyb21E
aXNrKGNhY2hlT3JpZ2luLCBbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4udmFsdWUoKSksIHRhc2tD
b3VudGVyID0gV1RGTW92ZSh0YXNrQ291bnRlcildIChDYWNoZXNPckVycm9yJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdGFza0NvdW50ZXItPmFkZE9y
aWdpbihXVEZNb3ZlKG9yaWdpbiksIHJlc3VsdC52YWx1ZSgpLmdldCgpLnN0b3JhZ2VTaXplKCkp
OworCisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCmluZGV4IDM4MjUxMjhjYjZkMTc1OWEwZjk5YzkyNTJiOWUzMDQ3MDA3
YThiZTguLmM4ZWY2ZjA3YTEwMGE0YmM5YjllODM0OWRmYzZhZDkyOTRhZmRlODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTUzMCw2ICs1MzAsMTQgQEAgdm9pZCBDYWNoZXM6
OmFwcGVuZFJlcHJlc2VudGF0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiAgICAg
YnVpbGRlci5hcHBlbmQoIl19XG4iKTsKIH0KIAordWludDY0X3QgQ2FjaGVzOjpzdG9yYWdlU2l6
ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CisgICAgaWYgKCFzaG91
bGRQZXJzaXN0KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3N0b3JhZ2UtPmFw
cHJveGltYXRlU2l6ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaAppbmRleCAxZjA1N2Jl
ZWIyNWE5ZTE1OWNhNGYxMTg4ZGJhYjI1MmU1ZDg1NmE1Li5lYzA4ZTIzZWM1MWNhMDAzNzNhOWQx
MDUxN2IzODFkODM3OGQzMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKQEAgLTczLDYg
KzczLDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOwogCisgICAg
dWludDY0X3Qgc3RvcmFnZVNpemUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDYWNoZXMoRW5n
aW5lJiwgU3RyaW5nJiYgb3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcAppbmRleCBjZWJmNjg5YTdjZDM3OWI3YTE1ZTFiYTU0ZjM5MmRhODky
MTFkZTg4Li5jOTZiODQ4ZTBhMzRlMDk2MTliN2M2YTQ4YWRkZGE4NzIxYmNkYTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKQEAgLTI5LDkgKzI5LDExIEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNs
dWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5j
bHVkZSAiV0tTZWN1cml0eU9yaWdpblJlZi5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRh
RmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CkBAIC0zNjgsMyAr
MzcwLDIxIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwKICAgICAgICAgY2FsbGJhY2soV2ViS2l0
Ojp0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIo
KSksIGNvbnRleHQpOwogICAgIH0pOwogfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZl
dGNoQ2FjaGVTaXplRm9yT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIG9yaWdpbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlR2V0
RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW5GdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAgICBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJLaXQ6
OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplczsKKworICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQs
IGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiByZWNvcmRPcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCkgPT0gcmVjb3JkT3JpZ2luLnNlY3Vy
aXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
ZGF0YVJlY29yZC5zaXplID8gZGF0YVJlY29yZC5zaXplLT50b3RhbFNpemUgOiAwLCBjb250ZXh0
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKDAsIGNvbnRleHQpOworICAg
IH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaAppbmRleCA4NzgwNjM4MmNjZGNhMWU4ZmEwOTBjMDI1M2UyNjkyYzY5
NmI5YTg0Li4wZDFjNGU5NDA1NTQ3OGFhZWJhOTU2NDczNDk0MzNlMzY4OTkzOWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaApAQCAtODEsNiArODEsOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVS
ZW1vdmVBbGxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyhXS1dlYnNpdGVEYQogdHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbikoV0tB
cnJheVJlZiwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0
Y2hDYWNoZU9yaWdpbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBm
dW5jdGlvbik7CiAKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2Fj
aGVTaXplRm9yT3JpZ2luRnVuY3Rpb24pKHVpbnQ2NF90LCB2b2lkKik7CitXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbihXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBvcmlnaW4sIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luRnVuY3Rpb24g
ZnVuY3Rpb24pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE1OGNmYTU5YzNhNzJmOWU1
NWJlYmExZDc5YWI5MzUxZDBiYjZhYmEuLjEyZGM2OTcyMzJlMTM1OTE2OTQzNTUxZDEzNzY3ZWY1
Nzk3OWU2NTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0xMC0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgQVBJIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBh
YmxlIHRvIGNvbXB1dGUgc3RvcmFnZSBzaXplIGZvciBXZWJLaXQgY2xpZW50IGFwcGxpY2F0aW9u
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODM1
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGlu
ZyBzdXBwb3J0IGZvciBhIGRvbUNhY2hlU2l6ZSBnZXR0ZXIuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OmRvbUNhY2hlU2l6ZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkZldGNoQ2FjaGVTaXpl
Rm9yT3JpZ2luQ2FsbGJhY2tDb250ZXh0OjpGZXRjaENhY2hlU2l6ZUZvck9yaWdpbkNhbGxiYWNr
Q29udGV4dCk6CisgICAgICAgIChXVFI6OmZldGNoQ2FjaGVTaXplRm9yT3JpZ2luQ2FsbGJhY2sp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG9tQ2FjaGVTaXplKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAx
Ny0xMC0xNiAgRW1pbGlvIENvYm9zIMOBbHZhcmV6ICA8ZW1pbGlvQGNyaXNhbC5pbz4KIAogICAg
ICAgICBBZGQgRW1pbGlvIENvYm9zIMOBbHZhcmV6IHRvIHRoZSBjb250cmlidXRvcnMgbGlzdC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDFjZGM2MTZiZWI4M2VjMTNkNzlkODgwZmI2
YmVmMTNkOTEyMDZhNmEuLjlmOTFkZmRmM2Y4ZTE5YzA3Y2NjNTJiNjNiODRmYzMwMGZkMDMwNzkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNTksNiArNTksNyBAQCBpbnRlcmZhY2Ug
VGVzdFJ1bm5lciB7CiAKICAgICB2b2lkIGNsZWFyRE9NQ2FjaGUoRE9NU3RyaW5nIG9yaWdpbik7
CiAgICAgYm9vbGVhbiBoYXNET01DYWNoZShET01TdHJpbmcgb3JpZ2luKTsKKyAgICB1bnNpZ25l
ZCBsb25nIGRvbUNhY2hlU2l6ZShET01TdHJpbmcgb3JpZ2luKTsKIAogICAgIC8vIFNwZWNpYWwg
b3B0aW9ucy4KICAgICB2b2lkIGtlZXBXZWJIaXN0b3J5KCk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBlNjU4NWY0
NWZjNGZlZDcwNjBkNTc4ZmIzZjJiYjBlM2EyNjA1NjRiLi40MWM5YTk4YzRmYmQ2NWU1MzJkMzkz
ZTA1MGUyOGRjNDA4NjdjY2JlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE4NDUsNCArMTg0NSwxMyBAQCBib29s
IFRlc3RSdW5uZXI6Omhhc0RPTUNhY2hlKEpTU3RyaW5nUmVmIG9yaWdpbikKICAgICByZXR1cm4g
V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSk7
CiB9CiAKK3VpbnQ2NF90IFRlc3RSdW5uZXI6OmRvbUNhY2hlU2l6ZShKU1N0cmluZ1JlZiBvcmln
aW4pCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJET01DYWNoZVNpemUiKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aEpTU3RyaW5nKG9yaWdpbikpOworICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhID0gMDsKKyAg
ICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNz
YWdlQm9keS5nZXQoKSwgJnJldHVybkRhdGEpOworICAgIHJldHVybiBXS1VJbnQ2NEdldFZhbHVl
KHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihyZXR1cm5EYXRhKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAppbmRleCA1YzcwYzkzYzU2YzQ2MDNhMTRkMDQyZjg5ODIyZDdkODE4OWQ1YmVk
Li4zMzQyODc1OGRlYjcxYTgxZWQ4YjJmNzUxMzhkNGFmNjI0NTk1NGQ1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTY2
LDYgKzE2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJET01DYWNoZShKU1N0cmluZ1Jl
ZiBvcmlnaW4pOwogICAgIGJvb2wgaGFzRE9NQ2FjaGUoSlNTdHJpbmdSZWYgb3JpZ2luKTsKKyAg
ICB1aW50NjRfdCBkb21DYWNoZVNpemUoSlNTdHJpbmdSZWYgb3JpZ2luKTsKIAogICAgIC8vIEZh
aWxlZCBsb2FkIGNvbmRpdGlvbiB0ZXN0aW5nCiAgICAgdm9pZCBmb3JjZUltbWVkaWF0ZUNvbXBs
ZXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
ZGM3ODViY2RkNDRhOTM1OTBmYzIzYThiMmJmZWFjZDczNWQ5OTAxNS4uZTYzN2E0ZmNiNGNmNTNl
NTRjOWUxNTc1NjdhMmE0YTE5N2QxOGIxZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKQEAgLTIzNzMsNiArMjM3MywzNiBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpoYXNET01DYWNoZShXS1N0cmluZ1JlZiBvcmlnaW4pCiAgICAgcmV0dXJuIGNvbnRleHQucmVz
dWx0OwogfQogCitzdHJ1Y3QgRmV0Y2hDYWNoZVNpemVGb3JPcmlnaW5DYWxsYmFja0NvbnRleHQg
eworICAgIGV4cGxpY2l0IEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luQ2FsbGJhY2tDb250ZXh0KFRl
c3RDb250cm9sbGVyJiBjb250cm9sbGVyKQorICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRy
b2xsZXIpCisgICAgeworICAgIH0KKworICAgIFRlc3RDb250cm9sbGVyJiB0ZXN0Q29udHJvbGxl
cjsKKworICAgIGJvb2wgZG9uZSB7IGZhbHNlIH07CisgICAgdWludDY0X3QgcmVzdWx0IHsgMCB9
OworfTsKKworc3RhdGljIHZvaWQgZmV0Y2hDYWNoZVNpemVGb3JPcmlnaW5DYWxsYmFjayh1aW50
NjRfdCBzaXplLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW5DYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7
CisgICAgY29udGV4dC0+ZG9uZSA9IHRydWU7CisgICAgY29udGV4dC0+cmVzdWx0ID0gc2l6ZTsK
KyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3VpbnQ2NF90
IFRlc3RDb250cm9sbGVyOjpkb21DYWNoZVNpemUoV0tTdHJpbmdSZWYgb3JpZ2luKQoreworICAg
IGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1D
b250ZXh0KCkpOworICAgIEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luQ2FsbGJhY2tDb250ZXh0IGNv
bnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9y
T3JpZ2luKGRhdGFTdG9yZSwgb3JpZ2luLCAmY29udGV4dCwgZmV0Y2hDYWNoZVNpemVGb3JPcmln
aW5DYWxsYmFjayk7CisgICAgaWYgKCFjb250ZXh0LmRvbmUpCisgICAgICAgIHJ1blVudGlsKGNv
bnRleHQuZG9uZSwgbV9jdXJyZW50SW52b2NhdGlvbi0+c2hvcnRUaW1lb3V0KCkpOworICAgIHJl
dHVybiBjb250ZXh0LnJlc3VsdDsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkgfHwgIVdLX0FQ
SV9FTkFCTEVECiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NMYXN0U2VlbihX
S1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAppbmRleCA5YjU4NjY5YmVlM2I0YWJmOWVhNDEzZDQxYTFmZjM3NjQ1YTk1
ZjhlLi5iNDZiNmIxODAyOGYwMDJhMzk0OTZmOThjNDc0MjY1YmQ3ZWE0NzNmIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xODMsMTUgKzE4MywxNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7
CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCi0gICAgYm9v
bCBoYXNET01DYWNoZShXS1N0cmluZ1JlZik7Ci0KICAgICBXS0FycmF5UmVmIG9wZW5QYW5lbEZp
bGVVUkxzKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuUGFuZWxGaWxlVVJMcy5nZXQoKTsgfQogICAg
IHZvaWQgc2V0T3BlblBhbmVsRmlsZVVSTHMoV0tBcnJheVJlZiBmaWxlVVJMcykgeyBtX29wZW5Q
YW5lbEZpbGVVUkxzID0gZmlsZVVSTHM7IH0KIAogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1By
b2Nlc3MoKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CisKICAg
ICB2b2lkIGNsZWFyRE9NQ2FjaGUoV0tTdHJpbmdSZWYgb3JpZ2luKTsKKyAgICBib29sIGhhc0RP
TUNhY2hlKFdLU3RyaW5nUmVmIG9yaWdpbik7CisgICAgdWludDY0X3QgZG9tQ2FjaGVTaXplKFdL
U3RyaW5nUmVmIG9yaWdpbik7CiAKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29u
ZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggZjZiNzc4YzJiZjRmN2ZjMDQ3ZGUyYWEwNDZiZGQ0NzBlODc0MTZiMS4uY2QzNWE5NzI4Y2Rm
ZGUxYmFiMzE3YmUxNThkMGUyNjMyZGYxMmE1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEyMTksNiArMTIxOSwxNSBAQCBXS1JldGFpblB0cjxXS1R5
cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRE9NQ2FjaGVTaXplIikpIHsKKyAg
ICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0cmluZ0dldFR5cGVJ
RCgpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgb3JpZ2luID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KG1lc3NhZ2VCb2R5KTsKKworICAgICAgICBhdXRvIGRvbUNhY2hlU2l6ZSA9IFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5kb21DYWNoZVNpemUob3JpZ2luKTsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tUeXBlUmVmPiByZXN1bHQoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoZG9tQ2FjaGVT
aXplKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWE2YWNlOTgyMWMzZTI5
MzJjMTJlODlmOWE4ZWI5ODE0MTMxYjgxMS4uMTg2NTg5ZTJjNDFjYTFjYzJhNjYyOGIwNjc4MTZm
NTRiYWEwYWZiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTE2ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZSBBUEkgaW1wbGVtZW50YXRp
b24gc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBzdG9yYWdlIHNpemUgZm9yIFdlYktpdCBjbGll
bnQgYXBwbGljYXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc4MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2lu
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXJl
cHJlc2VudGF0aW9uLmh0dHBzLmh0bWw6CisKIDIwMTctMTAtMTYgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIy
MzI3MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRtbAppbmRleCAwOTBi
NjVlNjc0NzAyNDJjYmVmYTE2N2U1NmRmYTgwOGRjYjFlY2ZkLi4xMjk2NjcwNDBiY2M3YWE4MWE2
NWQyNTJjMzE4OGYxOTk0YTAzYzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5o
dHRwcy5odG1sCkBAIC0zMCw5ICszMCwxMSBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdGVzdCA9PiB7
CiAKICAgICB2YXIga2V5cyA9IGF3YWl0IHNlbGYuY2FjaGVzLmtleXMoKTsKICAgICBhc3NlcnRf
bm90X2VxdWFscyhrZXlzLmxlbmd0aCwgMCwgImtleXMgc2hvdWxkIG5vdCBiZSBlbXB0eSIpOwor
ICAgIGFzc2VydF90cnVlKHRlc3RSdW5uZXIuZG9tQ2FjaGVTaXplKHdpbmRvdy5sb2NhdGlvbi5v
cmlnaW4pID4gMCwgIkFjdHVhbCBvcmlnaW4gY2FjaGUgc2l6ZSBpcyBub3QgemVybyIpOwogCiAg
ICAgdGVzdFJ1bm5lci5jbGVhckRPTUNhY2hlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pOwogICAg
IGFzc2VydF9mYWxzZSh0ZXN0UnVubmVyLmhhc0RPTUNhY2hlKHdpbmRvdy5sb2NhdGlvbi5vcmln
aW4pLCAiQWN0dWFsIG9yaWdpbiBjYWNoZSBpcyBjbGVhcmVkIik7CisgICAgYXNzZXJ0X2VxdWFs
cyh0ZXN0UnVubmVyLmRvbUNhY2hlU2l6ZSh3aW5kb3cubG9jYXRpb24ub3JpZ2luKSwgMCwgIkFj
dHVhbCBvcmlnaW4gY2FjaGUgc2l6ZSBpcyB6ZXJvIik7CiAKICAgICBrZXlzID0gYXdhaXQgc2Vs
Zi5jYWNoZXMua2V5cygpOwogICAgIGFzc2VydF9lcXVhbHMoa2V5cy5sZW5ndGgsIDAsICJrZXlz
IHNob3VsZCBiZSBlbXB0eSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLXJlcHJlc2VudGF0aW9uLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcmVwcmVzZW50YXRpb24uaHR0cHMuaHRt
bAppbmRleCAzYTQ0ZjYyZDA2ZjRlODBkYTk3MGRhMjA3MmMzNTQ2ZTQzOThmODJiLi45ZWFhMWZj
Nzg0N2JhN2M3MzcyNzc1MGNhZGFmY2E1YmVkYTRlYzgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcmVwcmVzZW50YXRpb24uaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcmVwcmVz
ZW50YXRpb24uaHR0cHMuaHRtbApAQCAtMTgsNiArMTgsMTAgQEAKICAgICAgICAgICAgIHZhciBj
YWNoZXMgPSByZXN1bHRzWzBdLmNhY2hlczsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoISFj
YWNoZXNbInBlcnNpc3RlbnQiXS5sZW5ndGgsIGhhc1BlcnNpc3RlbnQsICJwZXJzaXN0ZW50Iik7
CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCEhY2FjaGVzWyJyZW1vdmVkIl0ubGVuZ3RoLCBo
YXNSZW1vdmVkLCAicmVtb3ZlZCIpOworCisgICAgICAgICAgIGlmICghaGFzUGVyc2lzdGVudCkK
KyAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGVzdFJ1bm5lci5kb21DYWNoZVNpemUocmVz
dWx0cy5vcmlnaW4pLCAwLCAibm9uIHBlcnNpc3RlbnQgY2FjaGUgc3RvcmFnZSBzaXplIGlzIHpl
cm8iKTsKKwogICAgICAgICB9LCBuYW1lKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324025</attachid>
            <date>2017-10-17 10:23:29 -0700</date>
            <delta_ts>2017-10-17 11:21:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178350-20171017102328.patch</filename>
            <type>text/plain</type>
            <size>18963</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MTFiZWY4MzVjN2U3
NGI1Y2VhYzE4ZDY2MTE1ZWVhZjQ2YmNhNi4uN2JmZjcyOGRhYjUzYzc3M2E2YmYyZDU5ZWQ1NmU1
ZGE1MzNkMDhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTE3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZSBBUEkgaW1wbGVt
ZW50YXRpb24gc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBzdG9yYWdlIHNpemUgZm9yIFdlYktp
dCBjbGllbnQgYXBwbGljYXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXou
CisKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjplcXVhbHMgY29uc3QpOgorCiAyMDE3LTEwLTE3ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0IG5vZGVzIHdpdGgg
ZGlzcGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0aGV5IHdlcmUgd3Jh
cHBlZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTg0ZTM2ODIyOTM5ZjYzYTFj
YmU5ZTg3M2MzNmRiMTRmMmY0MGJlNi4uMjdlZTA5ZTZmMGYxOTg4YzIwMTMxNmE5ZDVhODI3NjE3
MGUxZTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNy0xMC0xNyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgQVBJIGltcGxlbWVudGF0
aW9uIHNob3VsZCBiZSBhYmxlIHRvIGNvbXB1dGUgc3RvcmFnZSBzaXplIGZvciBXZWJLaXQgY2xp
ZW50IGFwcGxpY2F0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisg
ICAgICAgIFdoZW4gZ2F0aGVyaW5nIGRhdGEgZnJvbSBET00gQ2FjaGUsIHdlIGNvbXB1dGUgdGhl
IHNpemUgYXMgZm9sbG93czoKKyAgICAgICAgLSBJZiBDYWNoZXMgb2JqZWN0IGlzIG5vdCBwZXJz
aXN0ZW50LCBzaXplIGlzIHplcm8KKyAgICAgICAgLSBJZiBDYWNoZXMgb2JqZWN0IGlzIHBlcnNp
c3RlbnQsIHdlIHVzZSB0aGUgc2l6ZSBjb21wdXRlZCBieSBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2Uu
IAorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OlJlYWRPcmlnaW5zVGFza0NvdW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6UmVhZE9yaWdpbnNUYXNrQ291bnRlcjo6YWRkT3JpZ2luKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnN0b3JhZ2VTaXplIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3Jp
Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6
CisKIDIwMTctMTAtMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2hhbmdlIFdlYkNvcmUgc291cmNlcyB0byB3b3JrIHdpdGggdW5pZmllZCBzb3Vy
Y2UgYnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggNGQyYWI0NGM4NzMzZTcxYzE0NWM5OGE5
NzI5OTA0NWVhMzdkNTgzNS4uZjgxNzM2MmRhZTU1NDZkNmJmMGFkODk1Zjg4ODM2NTNiZTg2NjAw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzQ4LDE2ICszNDgsMTcgQEAgY2xhc3MgUmVhZE9y
aWdpbnNUYXNrQ291bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRPcmlnaW5zVGFza0NvdW50
ZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlYWRPcmlnaW5zVGFza0NvdW50ZXI+IGNy
ZWF0ZShXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRy
eT4pPiYmIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVh
ZE9yaWdpbnNUYXNrQ291bnRlcihXVEZNb3ZlKGNhbGxiYWNrKSkpO30KKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVhZE9yaWdpbnNUYXNrQ291bnRlcihXVEZNb3ZlKGNhbGxiYWNrKSkp
OworICAgIH0KIAogICAgIH5SZWFkT3JpZ2luc1Rhc2tDb3VudGVyKCkKICAgICB7CiAgICAgICAg
IG1fY2FsbGJhY2soV1RGTW92ZShtX2VudHJpZXMpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZE9y
aWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4pCisgICAgdm9pZCBhZGRP
cmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCB1aW50NjRfdCBzaXpl
KQogICAgIHsKLSAgICAgICAgbV9lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBX
VEZNb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsIDAgfSk7CisgICAgICAg
IG1fZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgV1RGTW92ZShvcmlnaW4pLCBX
ZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBzaXplIH0pOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTM3MCw3ICszNzEsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+
IG1fZW50cmllczsKIH07CiAKLXZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoYm9vbCAvKiBzaG91
bGRDb21wdXRlU2l6ZSAqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJz
aXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjpmZXRj
aEVudHJpZXMoYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkgewogICAgICAgICBhdXRvIGVudHJpZXMgPSBXVEY6
Om1hcChtX2NhY2hlcywgW10gKGF1dG8mIHBhaXIpIHsKQEAgLTM4NCwxMCArMzg1LDIzIEBAIHZv
aWQgRW5naW5lOjpmZXRjaEVudHJpZXMoYm9vbCAvKiBzaG91bGRDb21wdXRlU2l6ZSAqLywgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2CiAgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29y
ZTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CiAgICAgICAgIGlmICghV2ViQ29y
ZTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OlNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDYWNoZXM6OnJl
dHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbdGFza0Nv
dW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11dGFibGUgeworICAgICAgICBDYWNoZXM6OnJl
dHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIg
PSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW4pCi0gICAgICAgICAgICAgICAg
dGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbi52YWx1ZSgpKSk7CisgICAgICAg
ICAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGlmICghc2hvdWxkQ29tcHV0ZVNpemUpIHsKKyAgICAgICAgICAgICAgICB0YXNrQ291bnRlci0+
YWRkT3JpZ2luKFdURk1vdmUob3JpZ2luLnZhbHVlKCkpLCAwKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gY2FjaGVPcmlnaW4gPSBv
cmlnaW4tPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CisgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5yZWFkQ2FjaGVzRnJvbURpc2soY2FjaGVPcmlnaW4sIFtvcmlnaW4gPSBXVEZNb3Zl
KG9yaWdpbi52YWx1ZSgpKSwgdGFza0NvdW50ZXIgPSBXVEZNb3ZlKHRhc2tDb3VudGVyKV0gKENh
Y2hlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2luKFdURk1vdmUob3JpZ2luKSwgcmVzdWx0LnZhbHVl
KCkuZ2V0KCkuc3RvcmFnZVNpemUoKSk7CisKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMzgyNTEyOGNiNmQx
NzU5YTBmOTljOTI1MmI5ZTMwNDcwMDdhOGJlOC4uYzhlZjZmMDdhMTAwYTRiYzliOWU4MzQ5ZGZj
NmFkOTI5NGFmZGU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNTMwLDYg
KzUzMCwxNCBAQCB2b2lkIENhY2hlczo6YXBwZW5kUmVwcmVzZW50YXRpb24oU3RyaW5nQnVpbGRl
ciYgYnVpbGRlcikgY29uc3QKICAgICBidWlsZGVyLmFwcGVuZCgiXX1cbiIpOwogfQogCit1aW50
NjRfdCBDYWNoZXM6OnN0b3JhZ2VTaXplKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pc0luaXRp
YWxpemVkKTsKKyAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG1fc3RvcmFnZS0+YXBwcm94aW1hdGVTaXplKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIENhY2hlU3RvcmFnZQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5oCmluZGV4IDFmMDU3YmVlYjI1YTllMTU5Y2E0ZjExODhkYmFiMjUyZTVkODU2YTUu
LmVjMDhlMjNlYzUxY2EwMDM3M2E5ZDEwNTE3YjM4MWQ4Mzc4ZDMyNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuaApAQCAtNzMsNiArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhck1lbW9yeVJl
cHJlc2VudGF0aW9uKCk7CiAKKyAgICB1aW50NjRfdCBzdG9yYWdlU2l6ZSgpIGNvbnN0OworCiBw
cml2YXRlOgogICAgIENhY2hlcyhFbmdpbmUmLCBTdHJpbmcmJiBvcmlnaW4sIFN0cmluZyYmIHJv
b3RQYXRoLCB1aW50NjRfdCBxdW90YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGNlYmY2ODlhN2Nk
Mzc5YjdhMTVlMWJhNTRmMzkyZGE4OTIxMWRlODguLmQwYmE0Mjc0MzAxMDM4ZDBiZDY5OGIxNzk1
YTExYTI1MTQ2Yzc2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtMjksOSArMjksMTEgQEAKICNpbmNs
dWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1NlY3VyaXR5T3JpZ2luUmVmLmgiCiAjaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgi
CisjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KQEAgLTM2OCwzICszNzAsMjIgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLAog
ICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KHNlY3VyaXR5T3JpZ2lucykpLnB0cigpKSwgY29udGV4dCk7CiAgICAgfSk7CiB9CisKK3ZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbkZ1bmN0aW9uIGNh
bGxiYWNrKQoreworICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+
IGZldGNoT3B0aW9ucyA9IFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNp
emVzOworCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0
aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7Cisg
ICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKSk7CisgICAgICAgIGZvciAoYXV0byYg
ZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHJlY29yZE9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykgeworICAgICAgICAgICAgICAgIGlm
IChvcmlnaW5EYXRhID09IHJlY29yZE9yaWdpbikgeworICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhkYXRhUmVjb3JkLnNpemUgPyBkYXRhUmVjb3JkLnNpemUtPnRvdGFsU2l6ZSA6IDAsIGNv
bnRleHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soMCwgY29udGV4dCk7
CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IDg3ODA2MzgyY2NkY2ExZThmYTA5MGMwMjUzZTI2
OTJjNjk2YjlhODQuLjBkMWM0ZTk0MDU1NDc4YWFlYmE5NTY0NzM0OTQzM2UzNjg5OTM5YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCkBAIC04MSw2ICs4MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKFdLV2Vic2l0ZURhCiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9u
KShXS0FycmF5UmVmLCB2b2lkKik7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1bmN0
aW9uIGZ1bmN0aW9uKTsKIAordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0
Y2hDYWNoZVNpemVGb3JPcmlnaW5GdW5jdGlvbikodWludDY0X3QsIHZvaWQqKTsKK1dLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIG9yaWdpbiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW5GdW5j
dGlvbiBmdW5jdGlvbik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzVmMDI3ZTViMTcw
NGY3NzNjNzI1ODBjZmIyODE1OGRlMWJiZjBkNC4uZmQ0NTU1NWQwNjFkOGJmY2ZlZjQwOGNkZDJi
YjljYmUxOWY0ZmVhOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEwLTE3ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZSBBUEkgaW1wbGVtZW50YXRpb24gc2hvdWxk
IGJlIGFibGUgdG8gY29tcHV0ZSBzdG9yYWdlIHNpemUgZm9yIFdlYktpdCBjbGllbnQgYXBwbGlj
YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc4MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQWRk
aW5nIHN1cHBvcnQgZm9yIGEgZG9tQ2FjaGVTaXplIGdldHRlci4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZG9tQ2FjaGVTaXplKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RmV0Y2hDYWNoZVNp
emVGb3JPcmlnaW5DYWxsYmFja0NvbnRleHQ6OkZldGNoQ2FjaGVTaXplRm9yT3JpZ2luQ2FsbGJh
Y2tDb250ZXh0KToKKyAgICAgICAgKFdUUjo6ZmV0Y2hDYWNoZVNpemVGb3JPcmlnaW5DYWxsYmFj
ayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb21DYWNoZVNpemUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAy
MDE3LTEwLTE3ICBOYWVsIE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4K
IAogICAgICAgICBbR1N0cmVhbWVyXVtHVEtdW1dQRV0gdXBkYXRlLXdlYmtpdC1saWJzLWpoYnVp
bGQgZmFpbHMgdG8gZGV0ZWN0IGNoYW5nZXMgaW4gaW5jbHVkZWQgbW9kdWxlc2V0IGZpbGVzCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCAxY2RjNjE2YmViODNlYzEzZDc5ZDg4MGZiNmJl
ZjEzZDkxMjA2YTZhLi45ZjkxZGZkZjNmOGUxOWMwN2NjYzUyYjYzYjg0ZmMzMDBmZDAzMDc5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTU5LDYgKzU5LDcgQEAgaW50ZXJmYWNlIFRl
c3RSdW5uZXIgewogCiAgICAgdm9pZCBjbGVhckRPTUNhY2hlKERPTVN0cmluZyBvcmlnaW4pOwog
ICAgIGJvb2xlYW4gaGFzRE9NQ2FjaGUoRE9NU3RyaW5nIG9yaWdpbik7CisgICAgdW5zaWduZWQg
bG9uZyBkb21DYWNoZVNpemUoRE9NU3RyaW5nIG9yaWdpbik7CiAKICAgICAvLyBTcGVjaWFsIG9w
dGlvbnMuCiAgICAgdm9pZCBrZWVwV2ViSGlzdG9yeSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMzcxYjNhNzE1
Mjc4YThjNzAwYThhYzAyMjM0YjdjMGYyYTZiYmI3NS4uZWY3NTM3OTdmYmE3NjU4NWY0MGMzMmU0
NTczNDI1Mjk2ZTQzMjE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xODM4LDQgKzE4MzgsMTMgQEAgYm9vbCBU
ZXN0UnVubmVyOjpoYXNET01DYWNoZShKU1N0cmluZ1JlZiBvcmlnaW4pCiAgICAgcmV0dXJuIFdL
Qm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpOwog
fQogCit1aW50NjRfdCBUZXN0UnVubmVyOjpkb21DYWNoZVNpemUoSlNTdHJpbmdSZWYgb3JpZ2lu
KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRE9NQ2FjaGVTaXplIikpOworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhKU1N0cmluZyhvcmlnaW4pKTsKKyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IDA7CisgICAg
V0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCksICZyZXR1cm5EYXRhKTsKKyAgICByZXR1cm4gV0tVSW50NjRHZXRWYWx1ZShz
dGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4ocmV0dXJuRGF0YSkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKaW5kZXggOGY4ZGVmMTljYjFhMWRkOTk0NTI0Y2Y3MzQ2NzJhZWFjMWQ3M2I0NS4u
OGM0YzljNmU2YTk4MjkxOGJjODY3MDQ4NzI4NmMxMzEzZjdlMDc3OCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTE2NSw2
ICsxNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyRE9NQ2FjaGUoSlNTdHJpbmdSZWYg
b3JpZ2luKTsKICAgICBib29sIGhhc0RPTUNhY2hlKEpTU3RyaW5nUmVmIG9yaWdpbik7CisgICAg
dWludDY0X3QgZG9tQ2FjaGVTaXplKEpTU3RyaW5nUmVmIG9yaWdpbik7CiAKICAgICAvLyBGYWls
ZWQgbG9hZCBjb25kaXRpb24gdGVzdGluZwogICAgIHZvaWQgZm9yY2VJbW1lZGlhdGVDb21wbGV0
aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGUy
YmE5MzhmNTBkOTU3NDQ4MTA1NjFjNmQ4NjFhOGI2ZjVkZDAyM2EuLjg0YzUwMzQ3MmI1MmZkMGQx
YmQ1NzI1Njg5NWM0ZDhiZTQzNmE0MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCkBAIC0yMzczLDYgKzIzNzMsMzYgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6
aGFzRE9NQ2FjaGUoV0tTdHJpbmdSZWYgb3JpZ2luKQogICAgIHJldHVybiBjb250ZXh0LnJlc3Vs
dDsKIH0KIAorc3RydWN0IEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luQ2FsbGJhY2tDb250ZXh0IHsK
KyAgICBleHBsaWNpdCBGZXRjaENhY2hlU2l6ZUZvck9yaWdpbkNhbGxiYWNrQ29udGV4dChUZXN0
Q29udHJvbGxlciYgY29udHJvbGxlcikKKyAgICAgICAgOiB0ZXN0Q29udHJvbGxlcihjb250cm9s
bGVyKQorICAgIHsKKyAgICB9CisKKyAgICBUZXN0Q29udHJvbGxlciYgdGVzdENvbnRyb2xsZXI7
CisKKyAgICBib29sIGRvbmUgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IHJlc3VsdCB7IDAgfTsK
K307CisKK3N0YXRpYyB2b2lkIGZldGNoQ2FjaGVTaXplRm9yT3JpZ2luQ2FsbGJhY2sodWludDY0
X3Qgc2l6ZSwgdm9pZCogdXNlckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19j
YXN0PEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luQ2FsbGJhY2tDb250ZXh0Kj4odXNlckRhdGEpOwor
ICAgIGNvbnRleHQtPmRvbmUgPSB0cnVlOworICAgIGNvbnRleHQtPnJlc3VsdCA9IHNpemU7Cisg
ICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit1aW50NjRfdCBU
ZXN0Q29udHJvbGxlcjo6ZG9tQ2FjaGVTaXplKFdLU3RyaW5nUmVmIG9yaWdpbikKK3sKKyAgICBh
dXRvKiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29u
dGV4dCgpKTsKKyAgICBGZXRjaENhY2hlU2l6ZUZvck9yaWdpbkNhbGxiYWNrQ29udGV4dCBjb250
ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9y
aWdpbihkYXRhU3RvcmUsIG9yaWdpbiwgJmNvbnRleHQsIGZldGNoQ2FjaGVTaXplRm9yT3JpZ2lu
Q2FsbGJhY2spOworICAgIGlmICghY29udGV4dC5kb25lKQorICAgICAgICBydW5VbnRpbChjb250
ZXh0LmRvbmUsIG1fY3VycmVudEludm9jYXRpb24tPnNob3J0VGltZW91dCgpKTsKKyAgICByZXR1
cm4gY29udGV4dC5yZXN1bHQ7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpIHx8ICFXS19BUElf
RU5BQkxFRAogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTGFzdFNlZW4oV0tT
dHJpbmdSZWYgaG9zdCwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKaW5kZXggOWI1ODY2OWJlZTNiNGFiZjllYTQxM2Q0MWExZmYzNzY0NWE5NWY4
ZS4uYjQ2YjZiMTgwMjhmMDAyYTM5NDk2Zjk4YzQ3NDI2NWJkN2VhNDczZiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTgzLDE1ICsxODMsMTYgQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwog
ICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAotICAgIGJvb2wg
aGFzRE9NQ2FjaGUoV0tTdHJpbmdSZWYpOwotCiAgICAgV0tBcnJheVJlZiBvcGVuUGFuZWxGaWxl
VVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZVVSTHMuZ2V0KCk7IH0KICAgICB2
b2lkIHNldE9wZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9vcGVuUGFu
ZWxGaWxlVVJMcyA9IGZpbGVVUkxzOyB9CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9j
ZXNzKCk7CiAKICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworCiAgICAg
dm9pZCBjbGVhckRPTUNhY2hlKFdLU3RyaW5nUmVmIG9yaWdpbik7CisgICAgYm9vbCBoYXNET01D
YWNoZShXS1N0cmluZ1JlZiBvcmlnaW4pOworICAgIHVpbnQ2NF90IGRvbUNhY2hlU2l6ZShXS1N0
cmluZ1JlZiBvcmlnaW4pOwogCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IGY2Yjc3OGMyYmY0ZjdmYzA0N2RlMmFhMDQ2YmRkNDcwZTg3NDE2YjEuLmNkMzVhOTcyOGNkZmRl
MWJhYjMxN2JlMTU4ZDBlMjYzMmRmMTJhNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCkBAIC0xMjE5LDYgKzEyMTksMTUgQEAgV0tSZXRhaW5QdHI8V0tUeXBl
UmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEIKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRPTUNhY2hlU2l6ZSIpKSB7CisgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQo
KSk7CisgICAgICAgIFdLU3RyaW5nUmVmIG9yaWdpbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihtZXNzYWdlQm9keSk7CisKKyAgICAgICAgYXV0byBkb21DYWNoZVNpemUgPSBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuZG9tQ2FjaGVTaXplKG9yaWdpbik7CisgICAgICAgIFdLUmV0YWlu
UHRyPFdLVHlwZVJlZj4gcmVzdWx0KEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKGRvbUNhY2hlU2l6
ZSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0MTEwZTk2MWM2M2M1MmI3
MjhkY2I0MDcwZjUzMmYwYmYxYzA2NjEuLjA1NjNhZDVmMzczNzVhZjBlNDI0MTk4MjhhYWI2Yjcy
ZmI0MTI0NzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0xNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgQVBJIGltcGxlbWVudGF0aW9u
IHNob3VsZCBiZSBhYmxlIHRvIGNvbXB1dGUgc3RvcmFnZSBzaXplIGZvciBXZWJLaXQgY2xpZW50
IGFwcGxpY2F0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3ODM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRw
cy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1yZXByZXNl
bnRhdGlvbi5odHRwcy5odG1sOgorCiAyMDE3LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIF9fcHJvdG9fXyBnZXR0ZXIgc2hvdWxk
IGJlIGZhc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFn
ZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRtbAppbmRleCAw
OTBiNjVlNjc0NzAyNDJjYmVmYTE2N2U1NmRmYTgwOGRjYjFlY2ZkLi4xMjk2NjcwNDBiY2M3YWE4
MWE2NWQyNTJjMzE4OGYxOTk0YTAzYzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdp
bi5odHRwcy5odG1sCkBAIC0zMCw5ICszMCwxMSBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdGVzdCA9
PiB7CiAKICAgICB2YXIga2V5cyA9IGF3YWl0IHNlbGYuY2FjaGVzLmtleXMoKTsKICAgICBhc3Nl
cnRfbm90X2VxdWFscyhrZXlzLmxlbmd0aCwgMCwgImtleXMgc2hvdWxkIG5vdCBiZSBlbXB0eSIp
OworICAgIGFzc2VydF90cnVlKHRlc3RSdW5uZXIuZG9tQ2FjaGVTaXplKHdpbmRvdy5sb2NhdGlv
bi5vcmlnaW4pID4gMCwgIkFjdHVhbCBvcmlnaW4gY2FjaGUgc2l6ZSBpcyBub3QgemVybyIpOwog
CiAgICAgdGVzdFJ1bm5lci5jbGVhckRPTUNhY2hlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pOwog
ICAgIGFzc2VydF9mYWxzZSh0ZXN0UnVubmVyLmhhc0RPTUNhY2hlKHdpbmRvdy5sb2NhdGlvbi5v
cmlnaW4pLCAiQWN0dWFsIG9yaWdpbiBjYWNoZSBpcyBjbGVhcmVkIik7CisgICAgYXNzZXJ0X2Vx
dWFscyh0ZXN0UnVubmVyLmRvbUNhY2hlU2l6ZSh3aW5kb3cubG9jYXRpb24ub3JpZ2luKSwgMCwg
IkFjdHVhbCBvcmlnaW4gY2FjaGUgc2l6ZSBpcyB6ZXJvIik7CiAKICAgICBrZXlzID0gYXdhaXQg
c2VsZi5jYWNoZXMua2V5cygpOwogICAgIGFzc2VydF9lcXVhbHMoa2V5cy5sZW5ndGgsIDAsICJr
ZXlzIHNob3VsZCBiZSBlbXB0eSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXJlcHJlc2VudGF0aW9uLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcmVwcmVzZW50YXRpb24uaHR0cHMu
aHRtbAppbmRleCAzYTQ0ZjYyZDA2ZjRlODBkYTk3MGRhMjA3MmMzNTQ2ZTQzOThmODJiLi45ZWFh
MWZjNzg0N2JhN2M3MzcyNzc1MGNhZGFmY2E1YmVkYTRlYzgzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcmVwcmVzZW50YXRpb24uaHR0cHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtcmVw
cmVzZW50YXRpb24uaHR0cHMuaHRtbApAQCAtMTgsNiArMTgsMTAgQEAKICAgICAgICAgICAgIHZh
ciBjYWNoZXMgPSByZXN1bHRzWzBdLmNhY2hlczsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
ISFjYWNoZXNbInBlcnNpc3RlbnQiXS5sZW5ndGgsIGhhc1BlcnNpc3RlbnQsICJwZXJzaXN0ZW50
Iik7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCEhY2FjaGVzWyJyZW1vdmVkIl0ubGVuZ3Ro
LCBoYXNSZW1vdmVkLCAicmVtb3ZlZCIpOworCisgICAgICAgICAgIGlmICghaGFzUGVyc2lzdGVu
dCkKKyAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGVzdFJ1bm5lci5kb21DYWNoZVNpemUo
cmVzdWx0cy5vcmlnaW4pLCAwLCAibm9uIHBlcnNpc3RlbnQgY2FjaGUgc3RvcmFnZSBzaXplIGlz
IHplcm8iKTsKKwogICAgICAgICB9LCBuYW1lKTsKICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>