<?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>173273</bug_id>
          
          <creation_ts>2017-06-12 14:00:55 -0700</creation_ts>
          <short_desc>Modernize UserScript.h</short_desc>
          <delta_ts>2017-06-14 11:13:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>darin</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1318356</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-12 14:00:55 -0700</bug_when>
    <thetext>Modernize UserScript.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318360</commentid>
    <comment_count>1</comment_count>
      <attachid>312692</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-12 14:04:36 -0700</bug_when>
    <thetext>Created attachment 312692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318368</commentid>
    <comment_count>2</comment_count>
      <attachid>312696</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-12 14:30:07 -0700</bug_when>
    <thetext>Created attachment 312696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318402</commentid>
    <comment_count>3</comment_count>
      <attachid>312708</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-12 15:19:34 -0700</bug_when>
    <thetext>Created attachment 312708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318417</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-12 15:38:21 -0700</bug_when>
    <thetext>https://trac.webkit.org/r218146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319111</commentid>
    <comment_count>5</comment_count>
      <attachid>312708</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-14 07:35:08 -0700</bug_when>
    <thetext>Comment on attachment 312708
Patch

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

&gt; Source/WebCore/page/UserScript.h:35
&gt;  class UserScript {

This seems like a struct, not a class. All it has is the constructor and getter functions for all data members. That’s exactly what a const struct is like.

&gt; Source/WebCore/page/UserScript.h:38
&gt; +    UserScript() { }

We could write this instead, which I prefer.

    UserScript() = default;

&gt; Source/WebCore/page/UserScript.h:39
&gt; +    ~UserScript() { }

This should be omitted. This is what the compiler will do if you don’t define a destructor.

&gt; Source/WebCore/page/UserScript.h:59
&gt; +    template&lt;class Encoder&gt; void encode(Encoder&amp;) const;
&gt; +    template&lt;class Decoder&gt; static bool decode(Decoder&amp;, UserScript&amp;);

We normally prefer typename rather than class for the type arguments.

Why do these functions need to be members? They can be written entirely using public interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319245</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-14 11:13:42 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 312708 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=312708&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/UserScript.h:35
&gt; &gt;  class UserScript {
&gt; 
&gt; This seems like a struct, not a class. All it has is the constructor and
&gt; getter functions for all data members. That’s exactly what a const struct is
&gt; like.
&gt; 
Yep, could be done.

&gt; &gt; Source/WebCore/page/UserScript.h:38
&gt; &gt; +    UserScript() { }
&gt; 
&gt; We could write this instead, which I prefer.
&gt; 
&gt;     UserScript() = default;
&gt; 
&gt; &gt; Source/WebCore/page/UserScript.h:39
&gt; &gt; +    ~UserScript() { }
&gt; 
&gt; This should be omitted. This is what the compiler will do if you don’t
&gt; define a destructor.
&gt; 
I agree with these pieces of feedback, and I did them in earlier patches, but EWS/El Capitan&apos;s compilers failed to link WebKit2 for some reason.

&gt; &gt; Source/WebCore/page/UserScript.h:59
&gt; &gt; +    template&lt;class Encoder&gt; void encode(Encoder&amp;) const;
&gt; &gt; +    template&lt;class Decoder&gt; static bool decode(Decoder&amp;, UserScript&amp;);
&gt; 
&gt; We normally prefer typename rather than class for the type arguments.
&gt; 
&gt; Why do these functions need to be members? They can be written entirely
&gt; using public interface.
&gt; 
Indeed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312692</attachid>
            <date>2017-06-12 14:04:36 -0700</date>
            <delta_ts>2017-06-12 14:30:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173273-20170612140435.patch</filename>
            <type>text/plain</type>
            <size>14183</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODEyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IFVzZXJTY3JpcHQuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczMjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiBNb3ZlZCBlbmNvZGVycyB0byBVc2VyU2NyaXB0
LmguIFVzZSBtb3JlIFJ2YWx1ZXMuCisKKyAgICAgICAgKiBwYWdlL1VzZXJTY3JpcHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VXNlclNjcmlwdDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OmRl
Y29kZSk6CisKIDIwMTctMDYtMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbV2ViSURMXSBSZS1pbXBsZW1lbnQgR2V0T3duUHJvcGVydHlTbG90W0J5SW5kZXhdIGdl
bmVyYXRpb24gdG8gbW9yZSBjbG9zZWx5IGZvbGxvdyBXZWJJREwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlclNjcmlwdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlclNjcmlwdC5oCShyZXZpc2lvbiAyMTgxMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTY3JpcHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTUgKzM1LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFVzZXJTY3JpcHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFVzZXJTY3JpcHQoKQotICAgICAgICA6IG1faW5qZWN0aW9uVGltZShJ
bmplY3RBdERvY3VtZW50U3RhcnQpCi0gICAgICAgICwgbV9pbmplY3RlZEZyYW1lcyhJbmplY3RJ
bkFsbEZyYW1lcykKLSAgICB7Ci0gICAgfQorICAgIFVzZXJTY3JpcHQoKSA9IGRlZmF1bHQ7CiAK
LSAgICBVc2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVj
dG9yPFN0cmluZz4mJiB3aGl0ZWxpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxhY2tsaXN0LCBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzIGluamVjdGVkRnJhbWVzKQotICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkKLSAgICAgICAg
LCBtX3VybCh1cmwpCisgICAgVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFVSTCYmIHVybCwg
VmVjdG9yPFN0cmluZz4mJiB3aGl0ZWxpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxhY2tsaXN0LCBV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzKQorICAgICAgICA6IG1fc291cmNlKFdURk1vdmUoc291cmNl
KSkKKyAgICAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgICAgICwgbV93aGl0ZWxpc3Qo
V1RGTW92ZSh3aGl0ZWxpc3QpKQogICAgICAgICAsIG1fYmxhY2tsaXN0KFdURk1vdmUoYmxhY2ts
aXN0KSkKICAgICAgICAgLCBtX2luamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSkKQEAgLTU4LDEz
ICs1NCw1OCBAQCBwdWJsaWM6CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9u
VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0aW9uVGltZTsgfQogICAgIFVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVk
RnJhbWVzOyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImLCBVc2VyU2NyaXB0Jik7CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc291
cmNlOwogICAgIFVSTCBtX3VybDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2JsYWNrbGlzdDsKLSAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSBtX2luamVjdGlvblRpbWU7Ci0gICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVj
dGVkRnJhbWVzOworICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIG1faW5qZWN0aW9uVGltZSB7
IEluamVjdEF0RG9jdW1lbnRTdGFydCB9OworICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
bV9pbmplY3RlZEZyYW1lcyB7IEluamVjdEluQWxsRnJhbWVzIH07CiB9OwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBVc2VyU2NyaXB0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc291cmNlOworICAgIGVuY29kZXIgPDwgbV91cmw7
CisgICAgZW5jb2RlciA8PCBtX3doaXRlbGlzdDsKKyAgICBlbmNvZGVyIDw8IG1fYmxhY2tsaXN0
OworICAgIGVuY29kZXIuZW5jb2RlRW51bShtX2luamVjdGlvblRpbWUpOworICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX2luamVjdGVkRnJhbWVzKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK2Jvb2wgVXNlclNjcmlwdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVzZXJTY3JpcHQm
IHVzZXJTY3JpcHQpCit7CisgICAgU3RyaW5nIHNvdXJjZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNvdXJjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBVUkwgdXJsOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIFZlY3RvcjxTdHJpbmc+IHdoaXRlbGlzdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHdoaXRlbGlzdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBWZWN0b3I8U3Ry
aW5nPiBibGFja2xpc3Q7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibGFja2xpc3QpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmplY3Rpb25UaW1lKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaW5qZWN0ZWRG
cmFtZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgdXNlclNjcmlwdCA9IHsg
V1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIFdURk1vdmUod2hpdGVsaXN0KSwgV1RGTW92
ZShibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OworICAgIHJldHVy
biB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMTgxMzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMyBAQAorMjAxNy0wNi0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBVc2VyU2NyaXB0LmgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzI3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VXNlclNj
cmlwdD46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VXNl
clNjcmlwdD46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHA6
CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclNjcmlwdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxNy0wNi0xMiAg
Smlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJDcnlwdG9d
IFJlbW92ZSBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIG9mIFN1YnRsZUNyeXB0bwpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJl
dmlzaW9uIDIxODEyNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9UaW1pbmdGdW5jdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25N
YXRyaXguaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVXNl
clNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dG
ZWF0dXJlcy5oPgpAQCAtMTcxNyw0NiArMTcxNiw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxNZWRp
YVNlc3Npb25NZXRhZGF0YT4KIH0KICNlbmRpZgogCi12b2lkIEFyZ3VtZW50Q29kZXI8VXNlclNj
cmlwdD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVc2VyU2NyaXB0JiB1c2VyU2Ny
aXB0KQotewotICAgIGVuY29kZXIgPDwgdXNlclNjcmlwdC5zb3VyY2UoKTsKLSAgICBlbmNvZGVy
IDw8IHVzZXJTY3JpcHQudXJsKCk7Ci0gICAgZW5jb2RlciA8PCB1c2VyU2NyaXB0LndoaXRlbGlz
dCgpOwotICAgIGVuY29kZXIgPDwgdXNlclNjcmlwdC5ibGFja2xpc3QoKTsKLSAgICBlbmNvZGVy
LmVuY29kZUVudW0odXNlclNjcmlwdC5pbmplY3Rpb25UaW1lKCkpOwotICAgIGVuY29kZXIuZW5j
b2RlRW51bSh1c2VyU2NyaXB0LmluamVjdGVkRnJhbWVzKCkpOwotfQotCi1ib29sIEFyZ3VtZW50
Q29kZXI8VXNlclNjcmlwdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0KQotewotICAgIFN0cmluZyBzb3VyY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzb3VyY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBVUkwgdXJsOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodXJsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgVmVj
dG9yPFN0cmluZz4gd2hpdGVsaXN0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2hpdGVsaXN0
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgVmVjdG9yPFN0cmluZz4gYmxhY2tsaXN0
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmxhY2tsaXN0KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmplY3Rpb25UaW1lKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lczsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmplY3RlZEZyYW1lcykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHVzZXJTY3JpcHQgPSBVc2VyU2NyaXB0KHNvdXJjZSwgdXJsLCBXVEZN
b3ZlKHdoaXRlbGlzdCksIFdURk1vdmUoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0
ZWRGcmFtZXMpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNj
cm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBlbmNvZGVyLmVuY29k
ZUVudW0ocGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAy
MTgxMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDYgQEAgY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3
cG9ydENvbnN0cmFpbnRzOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdERhdGE7CiBjbGFzcyBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwotY2xhc3MgVXNlclNj
cmlwdDsKIGNsYXNzIFVSTDsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKIHN0cnVjdCBE
aWN0YXRpb25BbHRlcm5hdGl2ZTsKQEAgLTQ3NiwxMSArNDc1LDYgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVy
JiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclNjcmlwdD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6VXNlclNjcmlwdCYpOwotICAgIHN0YXRpYyBib29s
IGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6VXNlclNjcmlwdCYpOwotfTsKLQogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+
IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcm9s
bGFibGVBcmVhUGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDIxODEyNykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk1LDggKzk1LDkgQEAgdm9pZCBXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQo
V0tQYWdlR3JvdQogICAgIGF1dG8gYmFzZVVSTFN0cmluZyA9IHRvV1RGU3RyaW5nKGJhc2VVUkxS
ZWYpOwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVybnMp
OwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVkVVJMUGF0dGVybnMpOwot
Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlwdDo6
Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBzb3VyY2UsIChiYXNlVVJMU3RyaW5nLmlzRW1w
dHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IGJhc2VVUkxTdHJpbmcpKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3Rvcigp
IDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3Rv
cigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBB
UEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIAorICAgIGF1dG8gdXJs
ID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKKyAgICBSZWY8QVBJOjpVc2Vy
U2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNl
clNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0
ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBi
bGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CiAgICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFk
ZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCShyZXZpc2lvbiAyMTgxMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDEw
ICs0MzAsMTAgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6aXNQcm9jZXNzaW5nVXNlckdlcwogICAg
IHJldHVybiBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KIAot
dm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFn
ZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBBUEk6OkFycmF5KiB3aGl0ZWxpc3QsIEFQ
STo6QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJv
eHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIFN0
cmluZyYmIHNvdXJjZSwgU3RyaW5nJiYgdXJsLCBBUEk6OkFycmF5KiB3aGl0ZWxpc3QsIEFQSTo6
QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0
aW9uVGltZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cykKIHsKICAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMg
bm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVs
YXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3Ry
aW5nVGFnIHZlcnNpb24uCi0gICAgVXNlclNjcmlwdCB1c2VyU2NyaXB0eyBzb3VyY2UsIFVSTChV
UkwoKSwgdXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVj
dG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDog
VmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKKyAgICBV
c2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChVUkwoKSwgdXJsKSwg
d2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4o
KSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmlu
Zz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKIAogICAgIHBhZ2VHcm91cC0+
dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqc2NyaXB0V29ybGQsIFdURk1v
dmUodXNlclNjcmlwdCkpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24gMjE4
MTI3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbmplY3RlZEJ1bmRsZV9oCi0j
ZGVmaW5lIEluamVjdGVkQnVuZGxlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKQEAgLTEyMCw3ICsxMTks
NyBAQCBwdWJsaWM6CiAgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFy
cmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKICAgICAvLyBVc2VyQ29udGVudCBBUEkK
LSAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBB
UEk6OkFycmF5KiB3aGl0ZWxpc3QsIEFQSTo6QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNl
clNjcmlwdEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMp
OworICAgIHZvaWQgYWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSosIEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQqLCBTdHJpbmcmJiBzb3VyY2UsIFN0cmluZyYmIHVybCwgQVBJOjpBcnJh
eSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKICAgICB2
b2lkIGFkZFVzZXJTdHlsZVNoZWV0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgQVBJ
OjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdChXZWJQYWdl
R3JvdXBQcm94eSosIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHVy
bCk7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldChXZWJQYWdlR3JvdXBQcm94eSosIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHVybCk7CkBAIC0xNzEsNCAr
MTcwLDMgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBJ
bmplY3RlZEJ1bmRsZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMTgxMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MTAsOSArNTgx
MCw5IEBAIHZvaWQgV2ViUGFnZTo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2gKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQo
bmV3U2l6ZSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFt
ZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCit2b2lk
IFdlYlBhZ2U6OmFkZFVzZXJTY3JpcHQoU3RyaW5nJiYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNl
clNjcmlwdHsgc291cmNlLCBXZWJDb3JlOjpibGFua1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBW
ZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OworICAgIFdl
YkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgVVJMKFdlYkNv
cmU6OmJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmpl
Y3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQo
KSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIxODEyNykKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0MSw3
ICs5NDEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0gICAgdm9pZCBhZGRVc2VyU2Ny
aXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CisgICAgdm9pZCBhZGRVc2Vy
U2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
cywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUpOwogICAgIHZvaWQgYWRkVXNlclN0
eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312696</attachid>
            <date>2017-06-12 14:30:07 -0700</date>
            <delta_ts>2017-06-12 15:19:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173273-20170612143007.patch</filename>
            <type>text/plain</type>
            <size>14205</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODEyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IFVzZXJTY3JpcHQuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczMjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuIE1vdmVkIGVuY29kZXJzIHRvIFVzZXJTY3JpcHQuaC4g
VXNlIG1vcmUgUnZhbHVlcy4KKworICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6VXNlclNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyU2NyaXB0OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6ZGVjb2Rl
KToKKwogMjAxNy0wNi0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtXZWJJRExdIFJlLWltcGxlbWVudCBHZXRPd25Qcm9wZXJ0eVNsb3RbQnlJbmRleF0gZ2VuZXJh
dGlvbiB0byBtb3JlIGNsb3NlbHkgZm9sbG93IFdlYklETApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
U2NyaXB0LmgJKHJldmlzaW9uIDIxODEyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNj
cmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNSArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgVXNlclNjcmlwdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgVXNlclNjcmlwdCgpCi0gICAgICAgIDogbV9pbmplY3Rpb25UaW1lKEluamVj
dEF0RG9jdW1lbnRTdGFydCkKLSAgICAgICAgLCBtX2luamVjdGVkRnJhbWVzKEluamVjdEluQWxs
RnJhbWVzKQotICAgIHsKLSAgICB9CisgICAgVXNlclNjcmlwdCgpID0gZGVmYXVsdDsKKyAgICB+
VXNlclNjcmlwdCgpID0gZGVmYXVsdDsKIAotICAgIFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIHdoaXRlbGlzdCwgVmVjdG9y
PFN0cmluZz4mJiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRp
bWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCi0gICAgICAgIDog
bV9zb3VyY2Uoc291cmNlKQotICAgICAgICAsIG1fdXJsKHVybCkKKyAgICBVc2VyU2NyaXB0KFN0
cmluZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIHdoaXRlbGlzdCwgVmVj
dG9yPFN0cmluZz4mJiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlv
blRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCisgICAgICAg
IDogbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAgICAgICAsIG1fdXJsKFdURk1vdmUodXJs
KSkKICAgICAgICAgLCBtX3doaXRlbGlzdChXVEZNb3ZlKHdoaXRlbGlzdCkpCiAgICAgICAgICwg
bV9ibGFja2xpc3QoV1RGTW92ZShibGFja2xpc3QpKQogICAgICAgICAsIG1faW5qZWN0aW9uVGlt
ZShpbmplY3Rpb25UaW1lKQpAQCAtNTgsMTMgKzU1LDU4IEBAIHB1YmxpYzoKICAgICBVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3Rp
b25UaW1lOyB9CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcygp
IGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRGcmFtZXM7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVzZXJTY3JpcHQmKTsKKwog
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgVVJMIG1fdXJsOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1fd2hpdGVsaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2tsaXN0Owot
ICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIG1faW5qZWN0aW9uVGltZTsKLSAgICBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIG1faW5qZWN0ZWRGcmFtZXM7CisgICAgVXNlclNjcmlwdEluamVj
dGlvblRpbWUgbV9pbmplY3Rpb25UaW1lIHsgSW5qZWN0QXREb2N1bWVudFN0YXJ0IH07CisgICAg
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzIHsgSW5qZWN0SW5BbGxG
cmFtZXMgfTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFVzZXJTY3JpcHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9zb3Vy
Y2U7CisgICAgZW5jb2RlciA8PCBtX3VybDsKKyAgICBlbmNvZGVyIDw8IG1fd2hpdGVsaXN0Owor
ICAgIGVuY29kZXIgPDwgbV9ibGFja2xpc3Q7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5q
ZWN0aW9uVGltZSk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0ZWRGcmFtZXMpOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBVc2VyU2NyaXB0OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVXNlclNjcmlwdCYgdXNlclNjcmlwdCkKK3sKKyAgICBTdHJpbmcgc291
cmNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIFVSTCB1cmw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4gd2hpdGVsaXN0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2hpdGVsaXN0KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIFZlY3RvcjxTdHJpbmc+IGJsYWNrbGlzdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGJsYWNrbGlzdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVFbnVtKGluamVjdGlvblRpbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lczsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlRW51bShpbmplY3RlZEZyYW1lcykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICB1c2VyU2NyaXB0ID0geyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwg
V1RGTW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGlu
amVjdGVkRnJhbWVzIH07CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODEzNikKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA2LTEyICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9k
ZXJuaXplIFVzZXJTY3JpcHQuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczMjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFVzZXJTY3JpcHQ+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFVzZXJTY3JpcHQ+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTY3JpcHQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisKIDIwMTctMDYtMTIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2ViQ3J5cHRvXSBSZW1vdmUgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBv
ZiBTdWJ0bGVDcnlwdG8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyMTgxMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyAr
NjcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGltaW5nRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTY3JpcHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJT
dHlsZVNoZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KQEAgLTE3MTcsNDYgKzE3MTYsNiBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8TWVkaWFTZXNzaW9uTWV0YWRhdGE+CiB9CiAjZW5kaWYKIAotdm9p
ZCBBcmd1bWVudENvZGVyPFVzZXJTY3JpcHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVXNlclNjcmlwdCYgdXNlclNjcmlwdCkKLXsKLSAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHQu
c291cmNlKCk7Ci0gICAgZW5jb2RlciA8PCB1c2VyU2NyaXB0LnVybCgpOwotICAgIGVuY29kZXIg
PDwgdXNlclNjcmlwdC53aGl0ZWxpc3QoKTsKLSAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHQuYmxh
Y2tsaXN0KCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJTY3JpcHQuaW5qZWN0aW9uVGlt
ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0odXNlclNjcmlwdC5pbmplY3RlZEZyYW1lcygp
KTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFVzZXJTY3JpcHQ+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgVXNlclNjcmlwdCYgdXNlclNjcmlwdCkKLXsKLSAgICBTdHJpbmcgc291cmNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgVVJMIHVybDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHdoaXRlbGlzdDsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHdoaXRlbGlzdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZl
Y3RvcjxTdHJpbmc+IGJsYWNrbGlzdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJsYWNrbGlz
dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaW5qZWN0aW9uVGlt
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXM7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaW5qZWN0ZWRG
cmFtZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1c2VyU2NyaXB0ID0gVXNlclNj
cmlwdChzb3VyY2UsIHVybCwgV1RGTW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCks
IGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQog
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAkocmV2aXNpb24gMjE4MTI3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw2IEBAIGNs
YXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKIGNsYXNzIFRleHRDaGVja2lu
Z1JlcXVlc3REYXRhOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5
bGVTaGVldDsKLWNsYXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBVUkw7CiBzdHJ1Y3QgQ29tcG9zaXRp
b25VbmRlcmxpbmU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CkBAIC00NzYsMTEgKzQ3
NSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Jik7CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IHsK
LSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3Jp
cHQmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlVzZXJTY3Jp
cHQmKTsKLX07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYp
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAu
Y3BwCShyZXZpc2lvbiAyMTgxMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSw5IEBAIHZvaWQgV0tQ
YWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJhc2VVUkxTdHJpbmcg
PSB0b1dURlN0cmluZyhiYXNlVVJMUmVmKTsKICAgICBhdXRvIHdoaXRlbGlzdCA9IHRvSW1wbCh3
aGl0ZWxpc3RlZFVSTFBhdHRlcm5zKTsKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRvSW1wbChibGFj
a2xpc3RlZFVSTFBhdHRlcm5zKTsKLQotICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+IHVzZXJTY3Jp
cHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgc291cmNl
LCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRl
bGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJs
YWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlw
dEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
cyhpbmplY3RlZEZyYW1lcykgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKKyAgICAKKyAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV2ViQ29y
ZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYmFzZVVSTFN0cmlu
Zyk7CisgICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlw
dDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUo
dXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0
cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9y
PFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVzZXJDb250
ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2Vy
Q29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQuZ2V0KCkpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjE4MTI3KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzMCwxMCArNDMwLDEwIEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGU6Omlz
UHJvY2Vzc2luZ1VzZXJHZXMKICAgICByZXR1cm4gU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTY3JpcHQo
V2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCog
c2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgQVBJ
OjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCit2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2Vy
U2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQqIHNjcmlwdFdvcmxkLCBTdHJpbmcmJiBzb3VyY2UsIFN0cmluZyYmIHVybCwgQVBJOjpB
cnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7CiAgICAgLy8gdXJsIGlzIG5vdCBmcm9tIFVSTDo6
c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IFVSTCwgc28g
d2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgVVJMIGluc3Rl
YWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgotICAgIFVzZXJTY3JpcHQgdXNl
clNjcmlwdHsgc291cmNlLCBVUkwoVVJMKCksIHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+
dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGlu
amVjdGVkRnJhbWVzIH07CisgICAgVXNlclNjcmlwdCB1c2VyU2NyaXB0IHsgV1RGTW92ZShzb3Vy
Y2UpLCBVUkwoVVJMKCksIHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0
b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdW
ZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVz
IH07CiAKICAgICBwYWdlR3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3Jp
cHQoKnNjcmlwdFdvcmxkLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgJKHJldmlzaW9uIDIxODEyNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgSW5qZWN0ZWRCdW5kbGVfaAotI2RlZmluZSBJbmplY3RlZEJ1bmRsZV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlQ2xp
ZW50LmgiCkBAIC0xMjAsNyArMTE5LDcgQEAgcHVibGljOgogICAgIFJlZjxBUEk6OkRhdGE+IGNy
ZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiAg
ICAgLy8gVXNlckNvbnRlbnQgQVBJCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91
cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNl
LCBjb25zdCBTdHJpbmcmIHVybCwgQVBJOjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBi
bGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFnZUdy
b3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgU3RyaW5nJiYgc291cmNlLCBT
dHJpbmcmJiB1cmwsIEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJheSogYmxhY2tsaXN0
LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyk7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldChXZWJQYWdlR3JvdXBQ
cm94eSosIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJheSogYmxh
Y2tsaXN0LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKICAgICB2b2lkIHJl
bW92ZVVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkKiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXQo
V2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3Ry
aW5nJiB1cmwpOwpAQCAtMTcxLDQgKzE3MCwzIEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi0jZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVfaApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjE4MTI3KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01ODEwLDkgKzU4MTAsOSBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURv
Y3VtZW50U2l6ZUNoCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbWFnZU9yTWVk
aWFEb2N1bWVudFNpemVDaGFuZ2VkKG5ld1NpemUpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSBpbmplY3Rpb25UaW1lKQordm9pZCBXZWJQYWdlOjphZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNv
dXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywg
V2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBX
ZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHR7IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwo
KSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5q
ZWN0ZWRGcmFtZXMgfTsKKyAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZN
b3ZlKHNvdXJjZSksIFVSTChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKIAogICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAy
MTgxMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NDEsNyArOTQxLDcgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYK
IAotICAgIHZvaWQgYWRkVXNlclNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRp
bWUpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
KTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJD
b250ZW50KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312708</attachid>
            <date>2017-06-12 15:19:34 -0700</date>
            <delta_ts>2017-06-12 15:20:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173273-20170612151933.patch</filename>
            <type>text/plain</type>
            <size>14167</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODEzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IFVzZXJTY3JpcHQuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczMjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuIE1vdmVkIGVuY29kZXJzIHRvIFVzZXJTY3JpcHQuaC4g
VXNlIG1vcmUgUnZhbHVlcy4KKworICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6VXNlclNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyU2NyaXB0OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6ZGVjb2Rl
KToKKwogMjAxNy0wNi0xMiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJDcnlwdG9dIFJlbW92ZSBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIG9mIFN1
YnRsZUNyeXB0bwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgJKHJldmlzaW9uIDIxODEz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSwxNSArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVXNlclNjcmlwdCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgVXNlclNjcmlwdCgp
Ci0gICAgICAgIDogbV9pbmplY3Rpb25UaW1lKEluamVjdEF0RG9jdW1lbnRTdGFydCkKLSAgICAg
ICAgLCBtX2luamVjdGVkRnJhbWVzKEluamVjdEluQWxsRnJhbWVzKQotICAgIHsKLSAgICB9Cisg
ICAgVXNlclNjcmlwdCgpIHsgfQorICAgIH5Vc2VyU2NyaXB0KCkgeyB9CiAKLSAgICBVc2VyU2Ny
aXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4m
JiB3aGl0ZWxpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxhY2tsaXN0LCBVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzKQotICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkKLSAgICAgICAgLCBtX3VybCh1cmwp
CisgICAgVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFVSTCYmIHVybCwgVmVjdG9yPFN0cmlu
Zz4mJiB3aGl0ZWxpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxhY2tsaXN0LCBVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVj
dGVkRnJhbWVzKQorICAgICAgICA6IG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKKyAgICAgICAg
LCBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgICAgICwgbV93aGl0ZWxpc3QoV1RGTW92ZSh3aGl0
ZWxpc3QpKQogICAgICAgICAsIG1fYmxhY2tsaXN0KFdURk1vdmUoYmxhY2tsaXN0KSkKICAgICAg
ICAgLCBtX2luamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSkKQEAgLTU4LDEzICs1NSw1OCBAQCBw
dWJsaWM6CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5qZWN0aW9uVGltZTsgfQogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkRnJhbWVzOyB9CiAK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBVc2VyU2NyaXB0Jik7CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc291cmNlOwogICAgIFVS
TCBtX3VybDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBtX2JsYWNrbGlzdDsKLSAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlv
blRpbWU7Ci0gICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwor
ICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIG1faW5qZWN0aW9uVGltZSB7IEluamVjdEF0RG9j
dW1lbnRTdGFydCB9OworICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZy
YW1lcyB7IEluamVjdEluQWxsRnJhbWVzIH07CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBVc2VyU2NyaXB0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG1fc291cmNlOworICAgIGVuY29kZXIgPDwgbV91cmw7CisgICAgZW5jb2Rl
ciA8PCBtX3doaXRlbGlzdDsKKyAgICBlbmNvZGVyIDw8IG1fYmxhY2tsaXN0OworICAgIGVuY29k
ZXIuZW5jb2RlRW51bShtX2luamVjdGlvblRpbWUpOworICAgIGVuY29kZXIuZW5jb2RlRW51bSht
X2luamVjdGVkRnJhbWVzKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgVXNl
clNjcmlwdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVzZXJTY3JpcHQmIHVzZXJTY3JpcHQp
Cit7CisgICAgU3RyaW5nIHNvdXJjZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBVUkwgdXJsOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodXJsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIFZlY3Rv
cjxTdHJpbmc+IHdoaXRlbGlzdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdoaXRlbGlzdCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiBibGFja2xp
c3Q7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibGFja2xpc3QpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmplY3Rpb25UaW1lKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaW5qZWN0ZWRGcmFtZXMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgdXNlclNjcmlwdCA9IHsgV1RGTW92ZShzb3Vy
Y2UpLCBXVEZNb3ZlKHVybCksIFdURk1vdmUod2hpdGVsaXN0KSwgV1RGTW92ZShibGFja2xpc3Qp
LCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OworICAgIHJldHVybiB0cnVlOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTgxMzkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MyBAQAorMjAxNy0wNi0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIE1vZGVybml6ZSBVc2VyU2NyaXB0LmgKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzI3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxVc2VyU2NyaXB0Pjo6ZW5jb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxVc2VyU2NyaXB0Pjo6ZGVjb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdLUGFn
ZUdyb3VwQWRkVXNlclNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjph
ZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDE3LTA2LTEyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTnVsbCBkZXJlZmVyZW5jZSB1bmRlciBXZWJQcm9j
ZXNzUG9vbDo6cGFnZVJlbW92ZWRGcm9tUHJvY2VzcygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMjE4MTM5KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWluZ0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU2NyaXB0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld3Bv
cnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CkBAIC0x
NzM3LDQ2ICsxNzM2LDYgQEAgYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhU2Vzc2lvbk1ldGFkYXRh
PgogfQogI2VuZGlmCiAKLXZvaWQgQXJndW1lbnRDb2RlcjxVc2VyU2NyaXB0Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCi17Ci0gICAgZW5j
b2RlciA8PCB1c2VyU2NyaXB0LnNvdXJjZSgpOwotICAgIGVuY29kZXIgPDwgdXNlclNjcmlwdC51
cmwoKTsKLSAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHQud2hpdGVsaXN0KCk7Ci0gICAgZW5jb2Rl
ciA8PCB1c2VyU2NyaXB0LmJsYWNrbGlzdCgpOwotICAgIGVuY29kZXIuZW5jb2RlRW51bSh1c2Vy
U2NyaXB0LmluamVjdGlvblRpbWUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJTY3Jp
cHQuaW5qZWN0ZWRGcmFtZXMoKSk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU2NyaXB0
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCi17Ci0g
ICAgU3RyaW5nIHNvdXJjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFVSTCB1cmw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh1cmwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB3aGl0
ZWxpc3Q7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3aGl0ZWxpc3QpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBibGFja2xpc3Q7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShibGFja2xpc3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGluamVjdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVFbnVtKGluamVjdGVkRnJhbWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
dXNlclNjcmlwdCA9IFVzZXJTY3JpcHQoc291cmNlLCB1cmwsIFdURk1vdmUod2hpdGVsaXN0KSwg
V1RGTW92ZShibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShwYXJhbWV0ZXJz
Lmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDIxODEzOSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNiBAQCBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7
CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0
cml4OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7Ci1jbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVVJM
Owogc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0
aXZlOwpAQCAtNDc2LDExICs0NzUsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldCYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpVc2VyU2NyaXB0PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJDb3JlOjpVc2VyU2NyaXB0Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJDb3JlOjpVc2VyU2NyaXB0Jik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpTY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUdyb3VwLmNwcAkocmV2aXNpb24gMjE4MTM5KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OCArOTUsOSBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclNjcmlwdChXS1BhZ2VHcm91CiAgICAg
YXV0byBiYXNlVVJMU3RyaW5nID0gdG9XVEZTdHJpbmcoYmFzZVVSTFJlZik7CiAgICAgYXV0byB3
aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0byBibGFj
a2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7Ci0KLSAgICBSZWY8QVBJOjpV
c2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6
VXNlclNjcmlwdCB7IHNvdXJjZSwgKGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV2ViQ29yZTo6
YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYmFzZVVSTFN0cmluZykp
LCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5n
PigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3Ry
aW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgCisgICAgYXV0byB1cmwgPSBiYXNlVVJMU3RyaW5n
LmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+IHVzZXJTY3Jp
cHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGTW92
ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdW
ZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJp
bmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUo
aW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1l
cykgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICB0b0ltcGwo
cGFnZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1c2Vy
U2NyaXB0LmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9u
IDIxODEzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsMTAgKzQyNSwxMCBAQCBib29s
IEluamVjdGVkQnVuZGxlOjppc1Byb2Nlc3NpbmdVc2VyR2VzCiAgICAgcmV0dXJuIFNjcmlwdENv
bnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogfQogCi12b2lkIEluamVjdGVkQnVu
ZGxlOjphZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiB1cmwsIEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJheSogYmxhY2ts
aXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQordm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgU3RyaW5nJiYgc291cmNlLCBT
dHJpbmcmJiB1cmwsIEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJheSogYmxhY2tsaXN0
LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewogICAgIC8vIHVy
bCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVu
IHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3Ry
dWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4K
LSAgICBVc2VyU2NyaXB0IHVzZXJTY3JpcHR7IHNvdXJjZSwgVVJMKFVSTCgpLCB1cmwpLCB3aGl0
ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBi
bGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigp
LCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OworICAgIFVzZXJTY3JpcHQgdXNlclNj
cmlwdCB7IFdURk1vdmUoc291cmNlKSwgVVJMKFVSTCgpLCB1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0
ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBi
bGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rpb25U
aW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRy
b2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpzY3JpcHRXb3JsZCwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiAyMTgxMzkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEluamVjdGVkQnVuZGxlX2gKLSNkZWZpbmUgSW5qZWN0ZWRC
dW5kbGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgpAQCAtMTIwLDcgKzExOSw3IEBAIHB1YmxpYzoKICAg
ICBSZWY8QVBJOjpEYXRhPiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmKTsKIAogICAgIC8vIFVzZXJDb250ZW50IEFQSQotICAgIHZvaWQgYWRkVXNl
clNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSosIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqLCBj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEFQSTo6QXJyYXkqIHdoaXRl
bGlzdCwgQVBJOjpBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CisgICAgdm9pZCBhZGRV
c2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCos
IFN0cmluZyYmIHNvdXJjZSwgU3RyaW5nJiYgdXJsLCBBUEk6OkFycmF5KiB3aGl0ZWxpc3QsIEFQ
STo6QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUsIFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwogICAgIHZvaWQgYWRkVXNlclN0eWxl
U2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBBUEk6OkFycmF5KiB3aGl0ZWxp
c3QsIEFQSTo6QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyk7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHJl
bW92ZVVzZXJTdHlsZVNoZWV0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCosIGNvbnN0IFN0cmluZyYgdXJsKTsKQEAgLTE3MSw0ICsxNzAsMyBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlX2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDIxODEzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwNiw5ICs1ODA2LDkgQEAgdm9pZCBXZWJQ
YWdlOjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChuZXdTaXplKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6YWRkVXNlclNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNl
clNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKK3ZvaWQgV2ViUGFnZTo6YWRkVXNl
clNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVj
dGlvblRpbWUpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0eyBzb3VyY2Us
IFdlYkNvcmU6OmJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCks
IGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzIH07CisgICAgV2ViQ29yZTo6VXNlclNjcmlw
dCB1c2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBVUkwoV2ViQ29yZTo6YmxhbmtVUkwoKSks
IFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVj
dGVkRnJhbWVzIH07CiAKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlw
dChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJT
Y3JpcHQpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkocmV2aXNpb24gMjE4MTM5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTQxLDcgKzk0MSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoU3RyaW5nJiYg
c291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzLCBXZWJDb3JlOjpVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSk7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CiAgICAg
dm9pZCByZW1vdmVBbGxVc2VyQ29udGVudCgpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>