<?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>170093</bug_id>
          
          <creation_ts>2017-03-24 19:16:46 -0700</creation_ts>
          <short_desc>Add API to get available content extension identifiers in a WKContentExtensionStore</short_desc>
          <delta_ts>2017-04-10 17:11:47 -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>WebKit2</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>andersca</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1291123</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-24 19:16:46 -0700</bug_when>
    <thetext>Based on API review feedback, this would make sense to have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291124</commentid>
    <comment_count>1</comment_count>
      <attachid>305352</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-24 19:19:41 -0700</bug_when>
    <thetext>Created attachment 305352
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296066</commentid>
    <comment_count>2</comment_count>
      <attachid>305352</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-04-10 11:00:41 -0700</bug_when>
    <thetext>Comment on attachment 305352
patch

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

r=me

&gt; Source/WebKit2/UIProcess/API/APIContentExtensionStore.cpp:404
&gt; +            completionHandler(identifiers);

I think you need to WTFMove(identifiers) again in this argument expression or you will copy the vector. (The capture expression creates an rvalue reference by WTFMove, but immediately assigns that reference to an lvalue named &quot;identifiers&quot;.)

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStore.mm:115
&gt; +        NSMutableArray&lt;NSString *&gt; *nsIdentifiers = [NSMutableArray arrayWithCapacity:100];

Why not use the capacity in identifiers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296067</commentid>
    <comment_count>3</comment_count>
      <attachid>305352</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-10 11:03:03 -0700</bug_when>
    <thetext>Comment on attachment 305352
patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStore.mm:115
&gt;&gt; +        NSMutableArray&lt;NSString *&gt; *nsIdentifiers = [NSMutableArray arrayWithCapacity:100];
&gt; 
&gt; Why not use the capacity in identifiers?

100 ought to be enough for anyone.
JK, this should obviously be the actual capacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296223</commentid>
    <comment_count>4</comment_count>
      <attachid>306760</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-10 17:09:28 -0700</bug_when>
    <thetext>Created attachment 306760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296224</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-10 17:11:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/r215209</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305352</attachid>
            <date>2017-03-24 19:19:41 -0700</date>
            <delta_ts>2017-04-10 17:09:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14766</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDM3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDI1IEBACiAyMDE3LTAzLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgQWRkIEFQSSB0
byBnZXQgYXZhaWxhYmxlIGNvbnRlbnQgZXh0ZW5zaW9uIGlkZW50aWZpZXJzIGluIGEgV0tDb250
ZW50RXh0ZW5zaW9uU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDA5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwOgor
ICAgICAgICAoQVBJOjpjb25zdHJ1Y3RlZFBhdGhQcmVmaXgpOgorICAgICAgICAoQVBJOjpjb25z
dHJ1Y3RlZFBhdGhGaWx0ZXIpOgorICAgICAgICAoQVBJOjpjb25zdHJ1Y3RlZFBhdGgpOgorICAg
ICAgICAoQVBJOjpDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRFeHRl
bnNpb25JZGVudGlmaWVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0
ZW5zaW9uU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4
dGVuc2lvblN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRF
eHRlbnNpb25TdG9yZS5tbToKKyAgICAgICAgKC1bV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgX2Nv
bXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjplbmNvZGVkQ29udGVudEV4dGVuc2lv
bjpjb21wbGV0aW9uSGFuZGxlcjpyZWxlYXNlc0FyZ3VtZW50Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRFeHRlbnNpb25TdG9yZSBsb29rVXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUg
Z2V0QXZhaWxhYmxlQ29udGVudEV4dGVuc2lvbklkZW50aWZpZXJzOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRFeHRlbnNpb25TdG9yZSByZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKworMjAxNy0wMy0yNCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCiAgICAgICAgIEZpeCBhc3NlcnRpb25zIGFmdGVy
IHIyMTQzNTguCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjkxNjcKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
RXh0ZW5zaW9uU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAkocmV2aXNpb24gMjE0Mzc2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw5ICs3NSwyMCBAQAogewogfQogCitzdGF0aWMgY29uc3Qg
U3RyaW5nJiBjb25zdHJ1Y3RlZFBhdGhQcmVmaXgoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IHByZWZpeCgiQ29udGVudEV4dGVuc2lvbi0iKTsKKyAgICByZXR1cm4gcHJl
Zml4OworfQorCitzdGF0aWMgY29uc3QgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aEZpbHRlcigpCit7
CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoY29uc3RydWN0ZWRQYXRoUHJlZml4KCksICcqJyk7Cit9
CisKIHN0YXRpYyBTdHJpbmcgY29uc3RydWN0ZWRQYXRoKGNvbnN0IFN0cmluZyYgYmFzZSwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoYmFzZSwgIkNvbnRlbnRFeHRlbnNpb24tIiArIFdlYkNvcmU6OmVuY29k
ZUZvckZpbGVOYW1lKGlkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1ha2VTdHJpbmcoY29uc3RydWN0ZWRQYXRoUHJlZml4KCks
IFdlYkNvcmU6OmVuY29kZUZvckZpbGVOYW1lKGlkZW50aWZpZXIpKSk7CiB9CiAKIC8vIFRoZSBz
aXplIGFuZCBvZmZzZXQgb2YgdGhlIGRlbnNlbHkgcGFja2VkIGJ5dGVzIGluIHRoZSBmaWxlLCBu
b3Qgc2l6ZW9mIGFuZCBvZmZzZXRvZiwgd2hpY2ggd291bGQKQEAgLTM3OCw2ICszODksMjMgQEAK
ICAgICB9KTsKIH0KIAordm9pZCBDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmdldEF2YWlsYWJsZUNv
bnRlbnRFeHRlbnNpb25JZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0
aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBmdWxsUGF0aHMg
PSBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRoRmlsdGVy
KCkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVyczsKKyAgICAgICAgaWRlbnRp
ZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmdWxsUGF0aHMuc2l6ZSgpKTsKKyAgICAgICAg
Y29uc3QgYXV0byBwcmVmaXhMZW5ndGggPSBjb25zdHJ1Y3RlZFBhdGhQcmVmaXgoKS5sZW5ndGgo
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogZnVsbFBhdGhzKQorICAgICAgICAg
ICAgaWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJz
ZUZpbmQoJy8nKSArIDEgKyBwcmVmaXhMZW5ndGgpKTsKKworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9
IFdURk1vdmUoaWRlbnRpZmllcnMpXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihp
ZGVudGlmaWVycyk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB2b2lkIENvbnRlbnRFeHRl
bnNpb25TdG9yZTo6Y29tcGlsZUNvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgRnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpD
b250ZW50RXh0ZW5zaW9uPiwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHJldmlzaW9u
IDIxNDMwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVu
c2lvblN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAKICAgICB2b2lkIGNv
bXBpbGVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6
OlN0cmluZyYmIGpzb24sIEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudEV4dGVuc2lv
bj4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKICAgICB2b2lkIGxvb2t1cENvbnRlbnRFeHRlbnNpb24o
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6
Q29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKICAgICB2b2lkIHJlbW92ZUNv
bnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZv
aWQoc3RkOjplcnJvcl9jb2RlKT4pOworICAgIHZvaWQgZ2V0QXZhaWxhYmxlQ29udGVudEV4dGVu
c2lvbklkZW50aWZpZXJzKEZ1bmN0aW9uPHZvaWQoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KT4p
OwogCiAgICAgLy8gRm9yIHRlc3Rpbmcgb25seS4KICAgICB2b2lkIHN5bmNocm9ub3VzUmVtb3Zl
QWxsQ29udGVudEV4dGVuc2lvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHJl
dmlzaW9uIDIxNDMwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b250ZW50RXh0ZW5zaW9uU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAog
LSAodm9pZCljb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICop
aWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjooTlNTdHJpbmcgKikgZW5jb2RlZENv
bnRlbnRFeHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29udGVudEV4dGVu
c2lvbiAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClsb29rVXBDb250
ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRFeHRlbnNpb24gKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVtb3ZlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNF
cnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZ2V0QXZhaWxhYmxlQ29udGVudEV4
dGVuc2lvbklkZW50aWZpZXJzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+KikpY29tcGxl
dGlvbkhhbmRsZXI7CiAKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCShy
ZXZpc2lvbiAyMTQzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29udGVudEV4dGVuc2lvblN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbXBvcnQgIkFQSUNvbnRlbnRFeHRlbnNpb25TdG9yZS5oIgogI2ltcG9ydCAiV0tFcnJv
ckludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAogc3RhdGljIFdLRXJyb3JD
b2RlIHRvV0tFcnJvckNvZGUoY29uc3Qgc3RkOjplcnJvcl9jb2RlJiBlcnJvcikKIHsKQEAgLTc2
LDggKzc3LDYgQEAKIAogLSAodm9pZClfY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246KE5TU3Ry
aW5nICopZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KFdLQ29udGVudEV4dGVuc2lvbiAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyIHJlbGVh
c2VzQXJndW1lbnQ6KEJPT0wpcmVsZWFzZXNBcmd1bWVudAogewotICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKLQogICAgIFN0cmluZyBqc29uKGVu
Y29kZWRDb250ZW50RXh0ZW5zaW9uKTsKICAgICBpZiAocmVsZWFzZXNBcmd1bWVudCkgewogICAg
ICAgICBbZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gcmVsZWFzZV07CkBAIC04NCw1OSArODMsNTIg
QEAKICAgICAgICAgZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gPSBuaWw7CiAgICAgfQogCi0gICAg
X2NvbnRlbnRFeHRlbnNpb25TdG9yZS0+Y29tcGlsZUNvbnRlbnRFeHRlbnNpb24oaWRlbnRpZmll
ciwgV1RGTW92ZShqc29uKSwgW2hhbmRsZXJdKFJlZlB0cjxBUEk6OkNvbnRlbnRFeHRlbnNpb24+
IGNvbnRlbnRFeHRlbnNpb24sIHN0ZDo6ZXJyb3JfY29kZSBlcnJvcikgeworICAgIF9jb250ZW50
RXh0ZW5zaW9uU3RvcmUtPmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGlkZW50aWZpZXIsIFdURk1v
dmUoanNvbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildKFJlZlB0cjxBUEk6OkNvbnRlbnRFeHRlbnNpb24+IGNvbnRlbnRFeHRlbnNpb24sIHN0
ZDo6ZXJyb3JfY29kZSBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShXS0NvbnRlbnRFeHRlbnNpb24gKiwgTlNFcnJv
ciAqKSloYW5kbGVyLmdldCgpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRvIHVzZXJJ
bmZvID0gQHtOU0hlbHBBbmNob3JFcnJvcktleTogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJFeHRlbnNpb24gY29tcGlsYXRpb24gZmFpbGVkOiAlcyIsIGVycm9yLm1lc3NhZ2UoKS5jX3N0
cigpXX07CiAKICAgICAgICAgICAgIC8vIGVycm9yLnZhbHVlKCkgY291bGQgaGF2ZSBhIHNwZWNp
ZmljIGNvbXBpbGVyIGVycm9yIHRoYXQgaXMgbm90IGVxdWFsIHRvIFdLRXJyb3JDb250ZW50RXh0
ZW5zaW9uU3RvcmVDb21waWxlRmFpbGVkLgogICAgICAgICAgICAgLy8gV2Ugd2FudCB0byB1c2Ug
ZXJyb3IubWVzc2FnZSwgYnV0IGhlcmUgd2Ugd2FudCB0byBvbmx5IHBhc3Mgb24gQ29tcGlsZUZh
aWxlZCB3aXRoIHVzZXJJbmZvIGZyb20gdGhlIHN0ZDo6ZXJyb3JfY29kZS4KLSAgICAgICAgICAg
IHJhd0hhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOldLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVDb21waWxlRmFpbGVkIHVzZXJJbmZvOnVz
ZXJJbmZvXSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOldLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVDb21waWxlRmFpbGVkIHVzZXJJbmZvOnVz
ZXJJbmZvXSk7CiAgICAgICAgIH0KLQotICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAo
XikoV0tDb250ZW50RXh0ZW5zaW9uICosIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAg
ICAgcmF3SGFuZGxlcihXZWJLaXQ6OndyYXBwZXIoKmNvbnRlbnRFeHRlbnNpb24uZ2V0KCkpLCBu
aWwpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OndyYXBwZXIoKmNvbnRlbnRF
eHRlbnNpb24uZ2V0KCkpLCBuaWwpOwogICAgIH0pOwogfQogCiAtICh2b2lkKWxvb2tVcENvbnRl
bnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29udGVudEV4dGVuc2lvbiAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhh
bmRsZXIgY29weV0pOwotCi0gICAgX2NvbnRlbnRFeHRlbnNpb25TdG9yZS0+bG9va3VwQ29udGVu
dEV4dGVuc2lvbihpZGVudGlmaWVyLCBbaGFuZGxlcl0oUmVmUHRyPEFQSTo6Q29udGVudEV4dGVu
c2lvbj4gY29udGVudEV4dGVuc2lvbiwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7CisgICAgX2Nv
bnRlbnRFeHRlbnNpb25TdG9yZS0+bG9va3VwQ29udGVudEV4dGVuc2lvbihpZGVudGlmaWVyLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShSZWZQ
dHI8QVBJOjpDb250ZW50RXh0ZW5zaW9uPiBjb250ZW50RXh0ZW5zaW9uLCBzdGQ6OmVycm9yX2Nv
ZGUgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBhdXRvIHJhd0hh
bmRsZXIgPSAodm9pZCAoXikoV0tDb250ZW50RXh0ZW5zaW9uICosIE5TRXJyb3IgKikpaGFuZGxl
ci5nZXQoKTsKLQogICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9IEB7TlNIZWxwQW5jaG9yRXJy
b3JLZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXh0ZW5zaW9uIGxvb2t1cCBmYWls
ZWQ6ICVzIiwgZXJyb3IubWVzc2FnZSgpLmNfc3RyKCldfTsKICAgICAgICAgICAgIGF1dG8gd2tF
cnJvciA9IHRvV0tFcnJvckNvZGUoZXJyb3IpOwogICAgICAgICAgICAgQVNTRVJUKHdrRXJyb3Ig
PT0gV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZUxvb2tVcEZhaWxlZCB8fCB3a0Vycm9yID09
IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVWZXJzaW9uTWlzbWF0Y2gpOwotICAgICAgICAg
ICAgcmF3SGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6d2tFcnJvciB1c2VySW5mbzp1c2VySW5mb10pOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTp3a0Vycm9yIHVzZXJJbmZvOnVzZXJJbmZvXSk7
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoV0tDb250
ZW50RXh0ZW5zaW9uICosIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgcmF3SGFu
ZGxlcihXZWJLaXQ6OndyYXBwZXIoKmNvbnRlbnRFeHRlbnNpb24uZ2V0KCkpLCBuaWwpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OndyYXBwZXIoKmNvbnRlbnRFeHRlbnNpb24u
Z2V0KCkpLCBuaWwpOwogICAgIH0pOwogfQogCistICh2b2lkKWdldEF2YWlsYWJsZUNvbnRlbnRF
eHRlbnNpb25JZGVudGlmaWVyczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiopKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgX2NvbnRlbnRFeHRlbnNpb25TdG9yZS0+Z2V0QXZhaWxhYmxl
Q29udGVudEV4dGVuc2lvbklkZW50aWZpZXJzKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzKSB7Cisg
ICAgICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICpuc0lkZW50aWZpZXJzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjEwMF07CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgaWRlbnRpZmllciA6IGlkZW50aWZpZXJzKQorICAgICAgICAgICAgW25zSWRlbnRpZmllcnMg
YWRkT2JqZWN0OmlkZW50aWZpZXJdOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuc0lkZW50
aWZpZXJzKTsKKyAgICB9KTsKK30KKwogLSAodm9pZClyZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9y
SWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVyID0g
YWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwotCi0gICAgX2NvbnRlbnRFeHRlbnNp
b25TdG9yZS0+cmVtb3ZlQ29udGVudEV4dGVuc2lvbihpZGVudGlmaWVyLCBbaGFuZGxlcl0oc3Rk
OjplcnJvcl9jb2RlIGVycm9yKSB7CisgICAgX2NvbnRlbnRFeHRlbnNpb25TdG9yZS0+cmVtb3Zl
Q29udGVudEV4dGVuc2lvbihpZGVudGlmaWVyLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6OmVycm9yX2NvZGUgZXJyb3IpIHsKICAgICAg
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXiko
TlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotCiAgICAgICAgICAgICBhdXRvIHVzZXJJbmZvID0g
QHtOU0hlbHBBbmNob3JFcnJvcktleTogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJFeHRl
bnNpb24gcmVtb3ZhbCBmYWlsZWQ6ICVzIiwgZXJyb3IubWVzc2FnZSgpLmNfc3RyKCldfTsKICAg
ICAgICAgICAgIEFTU0VSVCh0b1dLRXJyb3JDb2RlKGVycm9yKSA9PSBXS0Vycm9yQ29udGVudEV4
dGVuc2lvblN0b3JlUmVtb3ZlRmFpbGVkKTsKLSAgICAgICAgICAgIHJhd0hhbmRsZXIoW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yQ29udGVudEV4dGVu
c2lvblN0b3JlUmVtb3ZlRmFpbGVkIHVzZXJJbmZvOnVzZXJJbmZvXSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0
b3JlUmVtb3ZlRmFpbGVkIHVzZXJJbmZvOnVzZXJJbmZvXSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwot
ICAgICAgICByYXdIYW5kbGVyKG5pbCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7
CiAgICAgfSk7CiB9CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDM5MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTAzLTI0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIEFQSSB0byBnZXQgYXZhaWxh
YmxlIGNvbnRlbnQgZXh0ZW5zaW9uIGlkZW50aWZpZXJzIGluIGEgV0tDb250ZW50RXh0ZW5zaW9u
U3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDA5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlLm1tOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxNy0wMy0yNCAgU3Jpbml2YXNhbiBWaWph
eWFyYWdoYXZhbiAgPHN2aWpheWFyYWdoYXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0
cHkgc2hvdWxkIGJlIGFibGUgdG8gcnVuIEFQSSB0ZXN0cwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVXNl
ckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQkocmV2aXNpb24gMjE0MzA4KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5LDE0IEBACiAgICAgTlNTdHJpbmcgKmlk
ZW50aWZpZXIgPSBAIlRlc3RFeHRlbnNpb24iOwogICAgIE5TU3RyaW5nICpmaWxlTmFtZSA9IEAi
Q29udGVudEV4dGVuc2lvbi1UZXN0RXh0ZW5zaW9uIjsKIAorICAgIF9fYmxvY2sgYm9vbCBkb25l
R2V0dGluZ0F2YWlsYWJsZUlkZW50aWZpZXJzID0gZmFsc2U7CisgICAgW3N0b3JlIGdldEF2YWls
YWJsZUNvbnRlbnRFeHRlbnNpb25JZGVudGlmaWVyczpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmlk
ZW50aWZpZXJzKSB7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChpZGVudGlmaWVycyk7CisgICAg
ICAgIEVYUEVDVF9FUShpZGVudGlmaWVycy5jb3VudCwgMHUpOworICAgICAgICBkb25lR2V0dGlu
Z0F2YWlsYWJsZUlkZW50aWZpZXJzID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVHZXR0aW5nQXZhaWxhYmxlSWRlbnRpZmllcnMpOworICAgIAogICAg
IF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFsc2U7CiAgICAgW3N0b3JlIGNvbXBpbGVD
b250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGVuY29kZWRDb250ZW50RXh0
ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9u
ICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChmaWx0
ZXIpOwpAQCAtMjA3LDYgKzIxNSwxNSBAQAogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZUNvbXBpbGluZyk7CiAKKyAgICBkb25lR2V0dGluZ0F2YWlsYWJsZUlkZW50
aWZpZXJzID0gZmFsc2U7CisgICAgW3N0b3JlIGdldEF2YWlsYWJsZUNvbnRlbnRFeHRlbnNpb25J
ZGVudGlmaWVyczpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmlkZW50aWZpZXJzKSB7CisgICAgICAg
IEVYUEVDVF9OT1RfTlVMTChpZGVudGlmaWVycyk7CisgICAgICAgIEVYUEVDVF9FUShpZGVudGlm
aWVycy5jb3VudCwgMXUpOworICAgICAgICBFWFBFQ1RfU1RSRVEoaWRlbnRpZmllcnNbMF0uVVRG
OFN0cmluZywgIlRlc3RFeHRlbnNpb24iKTsKKyAgICAgICAgZG9uZUdldHRpbmdBdmFpbGFibGVJ
ZGVudGlmaWVycyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lR2V0dGluZ0F2YWlsYWJsZUlkZW50aWZpZXJzKTsKKwogICAgIE5TRGF0YSAqZGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOlt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpmaWxlTmFtZV1dOwogICAgIEVYUEVDVF9OT1RfTlVMTChkYXRhKTsKICAgICBF
WFBFQ1RfRVEoZGF0YS5sZW5ndGgsIDIyOHUpOwpAQCAtMjMwLDYgKzI0NywyNyBAQAogICAgIEVY
UEVDVF9OVUxMKGRhdGFBZnRlclJlbW92aW5nKTsKIH0KIAorVEVTVF9GKFdLQ29udGVudEV4dGVu
c2lvblN0b3JlVGVzdCwgTXVsdGlwbGVFeHRlbnNpb25zKQoreworICAgIF9fYmxvY2sgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVd
IGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIkZpcnN0RXh0ZW5zaW9uIiBl
bmNvZGVkQ29udGVudEV4dGVuc2lvbjpiYXNpY0ZpbHRlciBjb21wbGV0aW9uSGFuZGxlcjpeKFdL
Q29udGVudEV4dGVuc2lvbiAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfTk9UX05VTEwoZmlsdGVyKTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAg
ICBbW1dLQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0gY29tcGlsZUNvbnRlbnRF
eHRlbnNpb25Gb3JJZGVudGlmaWVyOkAiU2Vjb25kRXh0ZW5zaW9uIiBlbmNvZGVkQ29udGVudEV4
dGVuc2lvbjpiYXNpY0ZpbHRlciBjb21wbGV0aW9uSGFuZGxlcjpeKFdLQ29udGVudEV4dGVuc2lv
biAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGZpbHRlcik7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgICAgICBb
W1dLQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0gZ2V0QXZhaWxhYmxlQ29udGVu
dEV4dGVuc2lvbklkZW50aWZpZXJzOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqaWRlbnRpZmllcnMp
IHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpZmllcnMpOworICAgICAg
ICAgICAgICAgIEVYUEVDVF9FUShpZGVudGlmaWVycy5jb3VudCwgMnUpOworICAgICAgICAgICAg
ICAgIEVYUEVDVF9TVFJFUShpZGVudGlmaWVyc1swXS5VVEY4U3RyaW5nLCAiRmlyc3RFeHRlbnNp
b24iKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoaWRlbnRpZmllcnNbMV0uVVRGOFN0
cmluZywgIlNlY29uZEV4dGVuc2lvbiIpOworICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgICAgICAgICAgfV07CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKIFRFU1RfRihXS0NvbnRlbnRFeHRlbnNpb25TdG9yZVRl
c3QsIE5vbkFTQ0lJU291cmNlKQogewogICAgIHN0YXRpYyBOU1N0cmluZyAqbm9uQVNDSUlGaWx0
ZXIgPSBAIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCIuKndlYmtpdC5vcmdcIn0sIFwidW51c2VkXCI6XCLDsMW44oCZwqlcIn1d
IjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306760</attachid>
            <date>2017-04-10 17:09:28 -0700</date>
            <delta_ts>2017-04-10 17:11:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170093-20170410170927.patch</filename>
            <type>text/plain</type>
            <size>15221</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTE4MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA0LTEwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIEFQSSB0
byBnZXQgYXZhaWxhYmxlIGNvbnRlbnQgZXh0ZW5zaW9uIGlkZW50aWZpZXJzIGluIGEgV0tDb250
ZW50RXh0ZW5zaW9uU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDA5MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwOgor
ICAgICAgICAoQVBJOjpjb25zdHJ1Y3RlZFBhdGhQcmVmaXgpOgorICAgICAgICAoQVBJOjpjb25z
dHJ1Y3RlZFBhdGhGaWx0ZXIpOgorICAgICAgICAoQVBJOjpjb25zdHJ1Y3RlZFBhdGgpOgorICAg
ICAgICAoQVBJOjpDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRFeHRl
bnNpb25JZGVudGlmaWVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0
ZW5zaW9uU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4
dGVuc2lvblN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRF
eHRlbnNpb25TdG9yZS5tbToKKyAgICAgICAgKC1bV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgX2Nv
bXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjplbmNvZGVkQ29udGVudEV4dGVuc2lv
bjpjb21wbGV0aW9uSGFuZGxlcjpyZWxlYXNlc0FyZ3VtZW50Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRFeHRlbnNpb25TdG9yZSBsb29rVXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUg
Z2V0QXZhaWxhYmxlQ29udGVudEV4dGVuc2lvbklkZW50aWZpZXJzOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRFeHRlbnNpb25TdG9yZSByZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKwogMjAxNy0wNC0xMCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRW5hYmxlIERPTSB0aW1l
ciB0aHJvdHRsaW5nIGFuZCBDU1MgYW5pbWF0aW9ucyBzdXNwZW5zaW9uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9u
U3RvcmUuY3BwCShyZXZpc2lvbiAyMTUxODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkg
Kzc1LDIwIEBAIENvbnRlbnRFeHRlbnNpb25TdG9yZTo6fkNvbnRlbnRFeHRlbnNpb24KIHsKIH0K
IAorc3RhdGljIGNvbnN0IFN0cmluZyYgY29uc3RydWN0ZWRQYXRoUHJlZml4KCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwcmVmaXgoIkNvbnRlbnRFeHRlbnNpb24tIik7
CisgICAgcmV0dXJuIHByZWZpeDsKK30KKworc3RhdGljIGNvbnN0IFN0cmluZyBjb25zdHJ1Y3Rl
ZFBhdGhGaWx0ZXIoKQoreworICAgIHJldHVybiBtYWtlU3RyaW5nKGNvbnN0cnVjdGVkUGF0aFBy
ZWZpeCgpLCAnKicpOworfQorCiBzdGF0aWMgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aChjb25zdCBT
dHJpbmcmIGJhc2UsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2UsICJDb250ZW50RXh0ZW5zaW9uLSIg
KyBXZWJDb3JlOjplbmNvZGVGb3JGaWxlTmFtZShpZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlLCBtYWtlU3RyaW5nKGNvbnN0cnVj
dGVkUGF0aFByZWZpeCgpLCBXZWJDb3JlOjplbmNvZGVGb3JGaWxlTmFtZShpZGVudGlmaWVyKSkp
OwogfQogCiAvLyBUaGUgc2l6ZSBhbmQgb2Zmc2V0IG9mIHRoZSBkZW5zZWx5IHBhY2tlZCBieXRl
cyBpbiB0aGUgZmlsZSwgbm90IHNpemVvZiBhbmQgb2Zmc2V0b2YsIHdoaWNoIHdvdWxkCkBAIC0z
NzgsNiArMzg5LDIzIEBAIHZvaWQgQ29udGVudEV4dGVuc2lvblN0b3JlOjpsb29rdXBDb250ZW4K
ICAgICB9KTsKIH0KIAordm9pZCBDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmdldEF2YWlsYWJsZUNv
bnRlbnRFeHRlbnNpb25JZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0
aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBmdWxsUGF0aHMg
PSBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRoRmlsdGVy
KCkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVyczsKKyAgICAgICAgaWRlbnRp
ZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmdWxsUGF0aHMuc2l6ZSgpKTsKKyAgICAgICAg
Y29uc3QgYXV0byBwcmVmaXhMZW5ndGggPSBjb25zdHJ1Y3RlZFBhdGhQcmVmaXgoKS5sZW5ndGgo
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogZnVsbFBhdGhzKQorICAgICAgICAg
ICAgaWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJz
ZUZpbmQoJy8nKSArIDEgKyBwcmVmaXhMZW5ndGgpKTsKKworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9
IFdURk1vdmUoaWRlbnRpZmllcnMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShpZGVudGlmaWVycykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30K
Kwogdm9pZCBDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGNv
bnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIEZ1bmN0aW9u
PHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRlbnNp
b25TdG9yZS5oCShyZXZpc2lvbiAyMTUxODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIEZ1bmN0aW9uPHZvaWQo
UmVmUHRyPEFQSTo6Q29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKICAgICB2
b2lkIGxvb2t1cENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3Jf
Y29kZSk+KTsKICAgICB2b2lkIHJlbW92ZUNvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoc3RkOjplcnJvcl9jb2RlKT4pOworICAgIHZv
aWQgZ2V0QXZhaWxhYmxlQ29udGVudEV4dGVuc2lvbklkZW50aWZpZXJzKEZ1bmN0aW9uPHZvaWQo
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KT4pOwogCiAgICAgLy8gRm9yIHRlc3Rpbmcgb25seS4K
ICAgICB2b2lkIHN5bmNocm9ub3VzUmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnMoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29udGVudEV4dGVuc2lvblN0b3JlLmgJKHJldmlzaW9uIDIxNTE4MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpCiAtICh2b2lkKWNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOihOU1N0cmluZyAq
KSBlbmNvZGVkQ29udGVudEV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tD
b250ZW50RXh0ZW5zaW9uICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lk
KWxvb2tVcENvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZp
ZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29udGVudEV4dGVuc2lvbiAqLCBOU0Vy
cm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZW1vdmVDb250ZW50RXh0ZW5zaW9u
Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClnZXRBdmFpbGFi
bGVDb250ZW50RXh0ZW5zaW9uSWRlbnRpZmllcnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcg
Kj4qKSljb21wbGV0aW9uSGFuZGxlcjsKIAogQGVuZAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9u
U3RvcmUubW0JKHJldmlzaW9uIDIxNTE4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKIAogI2ltcG9ydCAiQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmgiCiAjaW1w
b3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBzdGF0
aWMgV0tFcnJvckNvZGUgdG9XS0Vycm9yQ29kZShjb25zdCBzdGQ6OmVycm9yX2NvZGUmIGVycm9y
KQogewpAQCAtNzYsNjcgKzc3LDU4IEBAIC0gKHZvaWQpY29tcGlsZUNvbnRlbnRFeHRlbnNpb25G
b3JJZGVudGkKIAogLSAodm9pZClfY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVy
OihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246KE5TU3RyaW5n
ICopZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
Q29udGVudEV4dGVuc2lvbiAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyIHJlbGVhc2Vz
QXJndW1lbnQ6KEJPT0wpcmVsZWFzZXNBcmd1bWVudAogewotICAgIGF1dG8gaGFuZGxlciA9IGFk
b3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKLQogICAgIFN0cmluZyBqc29uKGVuY29k
ZWRDb250ZW50RXh0ZW5zaW9uKTsKICAgICBpZiAocmVsZWFzZXNBcmd1bWVudCkgewogICAgICAg
ICBbZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gcmVsZWFzZV07CiAgICAgICAgIGVuY29kZWRDb250
ZW50RXh0ZW5zaW9uID0gbmlsOwogICAgIH0KIAotICAgIF9jb250ZW50RXh0ZW5zaW9uU3RvcmUt
PmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGlkZW50aWZpZXIsIFdURk1vdmUoanNvbiksIFtoYW5k
bGVyXShSZWZQdHI8QVBJOjpDb250ZW50RXh0ZW5zaW9uPiBjb250ZW50RXh0ZW5zaW9uLCBzdGQ6
OmVycm9yX2NvZGUgZXJyb3IpIHsKKyAgICBfY29udGVudEV4dGVuc2lvblN0b3JlLT5jb21waWxl
Q29udGVudEV4dGVuc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKGpzb24pLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShSZWZQdHI8QVBJOjpDb250
ZW50RXh0ZW5zaW9uPiBjb250ZW50RXh0ZW5zaW9uLCBzdGQ6OmVycm9yX2NvZGUgZXJyb3IpIHsK
ICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9p
ZCAoXikoV0tDb250ZW50RXh0ZW5zaW9uICosIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9IEB7TlNIZWxwQW5jaG9yRXJy
b3JLZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXh0ZW5zaW9uIGNvbXBpbGF0aW9u
IGZhaWxlZDogJXMiLCBlcnJvci5tZXNzYWdlKCkuY19zdHIoKV19OwogCiAgICAgICAgICAgICAv
LyBlcnJvci52YWx1ZSgpIGNvdWxkIGhhdmUgYSBzcGVjaWZpYyBjb21waWxlciBlcnJvciB0aGF0
IGlzIG5vdCBlcXVhbCB0byBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlQ29tcGlsZUZhaWxl
ZC4KICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gdXNlIGVycm9yLm1lc3NhZ2UsIGJ1dCBoZXJl
IHdlIHdhbnQgdG8gb25seSBwYXNzIG9uIENvbXBpbGVGYWlsZWQgd2l0aCB1c2VySW5mbyBmcm9t
IHRoZSBzdGQ6OmVycm9yX2NvZGUuCi0gICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yQ29udGVudEV4dGVu
c2lvblN0b3JlQ29tcGlsZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10pOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yQ29udGVudEV4dGVu
c2lvblN0b3JlQ29tcGlsZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10pOwogICAgICAgICB9Ci0K
LSAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKFdLQ29udGVudEV4dGVuc2lvbiAq
LCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIHJhd0hhbmRsZXIoV2ViS2l0Ojp3
cmFwcGVyKCpjb250ZW50RXh0ZW5zaW9uLmdldCgpKSwgbmlsKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV2ViS2l0Ojp3cmFwcGVyKCpjb250ZW50RXh0ZW5zaW9uLmdldCgpKSwgbmlsKTsK
ICAgICB9KTsKIH0KIAogLSAodm9pZClsb29rVXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0Nv
bnRlbnRFeHRlbnNpb24gKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIGF1
dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKLQotICAgIF9j
b250ZW50RXh0ZW5zaW9uU3RvcmUtPmxvb2t1cENvbnRlbnRFeHRlbnNpb24oaWRlbnRpZmllciwg
W2hhbmRsZXJdKFJlZlB0cjxBUEk6OkNvbnRlbnRFeHRlbnNpb24+IGNvbnRlbnRFeHRlbnNpb24s
IHN0ZDo6ZXJyb3JfY29kZSBlcnJvcikgeworICAgIF9jb250ZW50RXh0ZW5zaW9uU3RvcmUtPmxv
b2t1cENvbnRlbnRFeHRlbnNpb24oaWRlbnRpZmllciwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVmUHRyPEFQSTo6Q29udGVudEV4dGVuc2lv
bj4gY29udGVudEV4dGVuc2lvbiwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7CiAgICAgICAgIGlm
IChlcnJvcikgewotICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKFdLQ29u
dGVudEV4dGVuc2lvbiAqLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0KICAgICAgICAgICAg
IGF1dG8gdXNlckluZm8gPSBAe05TSGVscEFuY2hvckVycm9yS2V5OiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIkV4dGVuc2lvbiBsb29rdXAgZmFpbGVkOiAlcyIsIGVycm9yLm1lc3NhZ2Uo
KS5jX3N0cigpXX07CiAgICAgICAgICAgICBhdXRvIHdrRXJyb3IgPSB0b1dLRXJyb3JDb2RlKGVy
cm9yKTsKICAgICAgICAgICAgIEFTU0VSVCh3a0Vycm9yID09IFdLRXJyb3JDb250ZW50RXh0ZW5z
aW9uU3RvcmVMb29rVXBGYWlsZWQgfHwgd2tFcnJvciA9PSBXS0Vycm9yQ29udGVudEV4dGVuc2lv
blN0b3JlVmVyc2lvbk1pc21hdGNoKTsKLSAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOndrRXJyb3IgdXNlckluZm86
dXNlckluZm9dKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6d2tFcnJvciB1c2VySW5mbzp1c2VySW5mb10pOwogICAgICAgICB9CiAKLSAgICAgICAg
YXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKFdLQ29udGVudEV4dGVuc2lvbiAqLCBOU0Vycm9y
ICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIHJhd0hhbmRsZXIoV2ViS2l0Ojp3cmFwcGVyKCpj
b250ZW50RXh0ZW5zaW9uLmdldCgpKSwgbmlsKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0Ojp3cmFwcGVyKCpjb250ZW50RXh0ZW5zaW9uLmdldCgpKSwgbmlsKTsKICAgICB9KTsK
IH0KIAotLSAodm9pZClyZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCistICh2b2lkKWdldEF2YWlsYWJsZUNvbnRlbnRFeHRlbnNpb25JZGVu
dGlmaWVyczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiopKWNvbXBsZXRpb25IYW5kbGVy
CiB7Ci0gICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0p
OworICAgIF9jb250ZW50RXh0ZW5zaW9uU3RvcmUtPmdldEF2YWlsYWJsZUNvbnRlbnRFeHRlbnNp
b25JZGVudGlmaWVycyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykgeworICAgICAgICBOU011dGFi
bGVBcnJheTxOU1N0cmluZyAqPiAqbnNJZGVudGlmaWVycyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTppZGVudGlmaWVycy5zaXplKCldOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykKKyAgICAgICAgICAgIFtuc0lkZW50aWZpZXJz
IGFkZE9iamVjdDppZGVudGlmaWVyXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnNJZGVu
dGlmaWVycyk7CisgICAgfSk7Cit9CiAKLSAgICBfY29udGVudEV4dGVuc2lvblN0b3JlLT5yZW1v
dmVDb250ZW50RXh0ZW5zaW9uKGlkZW50aWZpZXIsIFtoYW5kbGVyXShzdGQ6OmVycm9yX2NvZGUg
ZXJyb3IpIHsKKy0gKHZvaWQpcmVtb3ZlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5T
U3RyaW5nICopaWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb250ZW50RXh0ZW5zaW9uU3RvcmUtPnJlbW92
ZUNvbnRlbnRFeHRlbnNpb24oaWRlbnRpZmllciwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7CiAgICAg
ICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4p
KE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLQogICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9
IEB7TlNIZWxwQW5jaG9yRXJyb3JLZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXh0
ZW5zaW9uIHJlbW92YWwgZmFpbGVkOiAlcyIsIGVycm9yLm1lc3NhZ2UoKS5jX3N0cigpXX07CiAg
ICAgICAgICAgICBBU1NFUlQodG9XS0Vycm9yQ29kZShlcnJvcikgPT0gV0tFcnJvckNvbnRlbnRF
eHRlbnNpb25TdG9yZVJlbW92ZUZhaWxlZCk7Ci0gICAgICAgICAgICByYXdIYW5kbGVyKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckNvbnRlbnRFeHRl
bnNpb25TdG9yZVJlbW92ZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10pOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckNvbnRlbnRFeHRlbnNpb25T
dG9yZVJlbW92ZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10pOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsK
LSAgICAgICAgcmF3SGFuZGxlcihuaWwpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwp
OwogICAgIH0pOwogfQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyMDcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNC0xMCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBBUEkgdG8gZ2V0IGF2YWls
YWJsZSBjb250ZW50IGV4dGVuc2lvbiBpZGVudGlmaWVycyBpbiBhIFdLQ29udGVudEV4dGVuc2lv
blN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzAwOTMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZS5tbToKKyAgICAgICAgKFRFU1RfRik6CisKIDIwMTctMDQtMTAgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgRGF0YUludGVyYWN0
aW9uVGVzdHMuVW5yZXNwb25zaXZlUGFnZURvZXNOb3RIYW5nVUkgdG8gbm90IGNoZWNrIGFnYWlu
c3QgYSBmaXhlZCB0aW1lIGludGVydmFsCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLm1tCShyZXZpc2lvbiAyMTUxODEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE5OSw2ICsxOTksMTQgQEAgVEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0
b3JlVGVzdCwgTm9uRAogICAgIE5TU3RyaW5nICppZGVudGlmaWVyID0gQCJUZXN0RXh0ZW5zaW9u
IjsKICAgICBOU1N0cmluZyAqZmlsZU5hbWUgPSBAIkNvbnRlbnRFeHRlbnNpb24tVGVzdEV4dGVu
c2lvbiI7CiAKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZUdldHRpbmdBdmFpbGFibGVJZGVudGlmaWVy
cyA9IGZhbHNlOworICAgIFtzdG9yZSBnZXRBdmFpbGFibGVDb250ZW50RXh0ZW5zaW9uSWRlbnRp
ZmllcnM6XihOU0FycmF5PE5TU3RyaW5nICo+ICppZGVudGlmaWVycykgeworICAgICAgICBFWFBF
Q1RfTk9UX05VTEwoaWRlbnRpZmllcnMpOworICAgICAgICBFWFBFQ1RfRVEoaWRlbnRpZmllcnMu
Y291bnQsIDB1KTsKKyAgICAgICAgZG9uZUdldHRpbmdBdmFpbGFibGVJZGVudGlmaWVycyA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lR2V0dGluZ0F2
YWlsYWJsZUlkZW50aWZpZXJzKTsKKyAgICAKICAgICBfX2Jsb2NrIGJvb2wgZG9uZUNvbXBpbGlu
ZyA9IGZhbHNlOwogICAgIFtzdG9yZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6aWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjpiYXNpY0ZpbHRlciBjb21wbGV0
aW9uSGFuZGxlcjpeKFdLQ29udGVudEV4dGVuc2lvbiAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikg
ewogICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZmlsdGVyKTsKQEAgLTIwNyw2ICsyMTUsMTUgQEAg
VEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0b3JlVGVzdCwgTm9uRAogICAgIH1dOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUNvbXBpbGluZyk7CiAKKyAgICBkb25lR2V0dGlu
Z0F2YWlsYWJsZUlkZW50aWZpZXJzID0gZmFsc2U7CisgICAgW3N0b3JlIGdldEF2YWlsYWJsZUNv
bnRlbnRFeHRlbnNpb25JZGVudGlmaWVyczpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmlkZW50aWZp
ZXJzKSB7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChpZGVudGlmaWVycyk7CisgICAgICAgIEVY
UEVDVF9FUShpZGVudGlmaWVycy5jb3VudCwgMXUpOworICAgICAgICBFWFBFQ1RfU1RSRVEoaWRl
bnRpZmllcnNbMF0uVVRGOFN0cmluZywgIlRlc3RFeHRlbnNpb24iKTsKKyAgICAgICAgZG9uZUdl
dHRpbmdBdmFpbGFibGVJZGVudGlmaWVycyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lR2V0dGluZ0F2YWlsYWJsZUlkZW50aWZpZXJzKTsKKwogICAg
IE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOlt0ZW1wRGlyIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV1dOwogICAgIEVYUEVDVF9OT1RfTlVM
TChkYXRhKTsKICAgICBFWFBFQ1RfRVEoZGF0YS5sZW5ndGgsIDIyOHUpOwpAQCAtMjMwLDYgKzI0
NywyNyBAQCBURVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBOb25ECiAgICAgRVhQ
RUNUX05VTEwoZGF0YUFmdGVyUmVtb3ZpbmcpOwogfQogCitURVNUX0YoV0tDb250ZW50RXh0ZW5z
aW9uU3RvcmVUZXN0LCBNdWx0aXBsZUV4dGVuc2lvbnMpCit7CisgICAgX19ibG9jayBib29sIGRv
bmUgPSBmYWxzZTsKKyAgICBbW1dLQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0g
Y29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOkAiRmlyc3RFeHRlbnNpb24iIGVu
Y29kZWRDb250ZW50RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tD
b250ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OT1RfTlVMTChmaWx0ZXIpOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IFtbV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBjb21waWxlQ29udGVudEV4
dGVuc2lvbkZvcklkZW50aWZpZXI6QCJTZWNvbmRFeHRlbnNpb24iIGVuY29kZWRDb250ZW50RXh0
ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9u
ICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfTk9UX05VTEwo
ZmlsdGVyKTsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgICAgIFtb
V0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBnZXRBdmFpbGFibGVDb250ZW50
RXh0ZW5zaW9uSWRlbnRpZmllcnM6XihOU0FycmF5PE5TU3RyaW5nICo+ICppZGVudGlmaWVycykg
eworICAgICAgICAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChpZGVudGlmaWVycyk7CisgICAgICAg
ICAgICAgICAgRVhQRUNUX0VRKGlkZW50aWZpZXJzLmNvdW50LCAydSk7CisgICAgICAgICAgICAg
ICAgRVhQRUNUX1NUUkVRKGlkZW50aWZpZXJzWzBdLlVURjhTdHJpbmcsICJGaXJzdEV4dGVuc2lv
biIpOworICAgICAgICAgICAgICAgIEVYUEVDVF9TVFJFUShpZGVudGlmaWVyc1sxXS5VVEY4U3Ry
aW5nLCAiU2Vjb25kRXh0ZW5zaW9uIik7CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgICAgICB9XTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKK30KKwogVEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0b3JlVGVz
dCwgTm9uQVNDSUlTb3VyY2UpCiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpub25BU0NJSUZpbHRl
ciA9IEAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcIi4qd2Via2l0Lm9yZ1wifSwgXCJ1bnVzZWRcIjpcIsOwxbjigJnCqVwifV0i
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>