<?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>150735</bug_id>
          
          <creation_ts>2015-10-30 14:19:34 -0700</creation_ts>
          <short_desc>storage/indexeddb/modern/idbdatabase-deleteobjectstore-failures.html is flaky on mac-wk1</short_desc>
          <delta_ts>2015-10-31 16:18:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</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>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1137962</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2015-10-30 14:19:34 -0700</bug_when>
    <thetext>storage/indexeddb/modern/idbdatabase-deleteobjectstore-failures.html failing on mac-wk1

Build log of first failure
&lt;https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK1%20(Tests)/builds/9501&gt;

--- /Volumes/Data/slave/yosemite-release-tests-wk1/build/layout-test-results/storage/indexeddb/modern/idbdatabase-deleteobjectstore-failures-expected.txt
+++ /Volumes/Data/slave/yosemite-release-tests-wk1/build/layout-test-results/storage/indexeddb/modern/idbdatabase-deleteobjectstore-failures-actual.txt
@@ -5,7 +5,6 @@
 ALERT: readwrite transaction complete
 ALERT: Second upgrade needed: Old version - 1 New version - 2
 ALERT: Failed to deleteObjectStore with a non-existent objectstore - Error: NotFoundError: DOM IDBDatabase Exception 8
-ALERT: Failed to deleteObjectStore with an in-progress versionchange transaction that is inactive - Error: TransactionInactiveError: DOM IDBDatabase Exception 0
 ALERT: Second version change transaction complete
 ALERT: Done
 This tests some obvious failures that can happen while calling IDBDatabase.deleteObjectStore()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137963</commentid>
    <comment_count>1</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2015-10-30 14:24:50 -0700</bug_when>
    <thetext>Marked as flaky in &lt;https://trac.webkit.org/r191813&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138024</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 16:21:49 -0700</bug_when>
    <thetext>I think this revealed a real issue and I have a lead on fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138025</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 16:21:55 -0700</bug_when>
    <thetext>I think this revealed a real issue and I have a lead on fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138060</commentid>
    <comment_count>4</comment_count>
      <attachid>264447</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 17:20:10 -0700</bug_when>
    <thetext>Created attachment 264447
WIP exploration

Attaching my WIP exploration so I can get to it from home later</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138167</commentid>
    <comment_count>5</comment_count>
      <attachid>264478</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-31 10:27:29 -0700</bug_when>
    <thetext>Created attachment 264478
Patch v1

Delay commit of a transaction if it has requests still waiting to deliver their events, as those events can keep the transaction runnable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138201</commentid>
    <comment_count>6</comment_count>
      <attachid>264478</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-31 14:42:10 -0700</bug_when>
    <thetext>Comment on attachment 264478
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp:167
&gt; +    // FIXME: With reusable requests (for cursors) we won&apos;t always remove this request from its transaction.

I don’t understand what that FIXME means. Does it mean that we will need to change this code to not always remove the request, or does it mean that this code, which looks like it’s removing the request all the time, will sometimes fail to do that?

I think maybe you should reword to say &quot;When we implement reusable requests (for cursors) it will be incorrect to always remove the request from the transaction&quot;. Or something similar that is correct, if I got some details wrong.

&gt; Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp:171
&gt;      m_hasPendingActivity = false;

This seems dangerous. We just called removeRequest on the transaction. The transaction is holding a RefPtr in a HashSet. So that means we might have just deleted &quot;this&quot;; going on to set m_hasPendingActivity to false afterward seems super-dangerous. I see at least two possibilities:

1) The HashSet should be a set of raw pointers; the transaction does not need to keep the request alive because the requisition will keep the transaction alive.

2) We should set m_hasPendingActivity *before* calling removeRequest.

Or maybe there’s something even more complex going on here.

&gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:527
&gt; +    auto takenOperation = m_transactionOperationMap.take(operation.identifier());
&gt; +    ASSERT_UNUSED(takenOperation, takenOperation == &amp;operation);

I suggest writing this instead:

    ASSERT(m_transactionOperationMap.get(operation.identifier()) == &amp;operation);
    m_transactionOperationMap.remove(operation.identifier());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138217</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-31 15:29:19 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 264478 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264478&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp:167
&gt; &gt; +    // FIXME: With reusable requests (for cursors) we won&apos;t always remove this request from its transaction.
&gt; 
&gt; I don’t understand what that FIXME means. Does it mean that we will need to
&gt; change this code to not always remove the request, or does it mean that this
&gt; code, which looks like it’s removing the request all the time, will
&gt; sometimes fail to do that?
&gt; 
&gt; I think maybe you should reword to say &quot;When we implement reusable requests
&gt; (for cursors) it will be incorrect to always remove the request from the
&gt; transaction&quot;. Or something similar that is correct, if I got some details
&gt; wrong.

Your rewording is the correct understanding, and I&apos;ll use it verbatim.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.cpp:171
&gt; &gt;      m_hasPendingActivity = false;
&gt; 
&gt; This seems dangerous. We just called removeRequest on the transaction. The
&gt; transaction is holding a RefPtr in a HashSet. So that means we might have
&gt; just deleted &quot;this&quot;; going on to set m_hasPendingActivity to false afterward
&gt; seems super-dangerous. I see at least two possibilities:
&gt; 
&gt; 1) The HashSet should be a set of raw pointers; the transaction does not
&gt; need to keep the request alive because the requisition will keep the
&gt; transaction alive.
&gt; 
&gt; 2) We should set m_hasPendingActivity *before* calling removeRequest.
&gt; 
&gt; Or maybe there’s something even more complex going on here.

The long answer is that there *is* something even more complex going on here (the IDBRequest, by virtue of just having dispatched an event, is guaranteed to have a JSIDBRequest wrapper keeping it alive until GC runs).

But the short answer is that I&apos;ll implement suggest #2
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:527
&gt; &gt; +    auto takenOperation = m_transactionOperationMap.take(operation.identifier());
&gt; &gt; +    ASSERT_UNUSED(takenOperation, takenOperation == &amp;operation);
&gt; 
&gt; I suggest writing this instead:
&gt; 
&gt;     ASSERT(m_transactionOperationMap.get(operation.identifier()) ==
&gt; &amp;operation);
&gt;     m_transactionOperationMap.remove(operation.identifier());

Yah... this way was a leftover vestige. Yours clearly seems right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138219</commentid>
    <comment_count>8</comment_count>
      <attachid>264489</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-31 15:32:45 -0700</bug_when>
    <thetext>Created attachment 264489
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138231</commentid>
    <comment_count>9</comment_count>
      <attachid>264489</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-31 16:18:35 -0700</bug_when>
    <thetext>Comment on attachment 264489
Patch for landing.

Clearing flags on attachment: 264489

Committed r191847: &lt;http://trac.webkit.org/changeset/191847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138232</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-31 16:18:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>264447</attachid>
            <date>2015-10-30 17:20:10 -0700</date>
            <delta_ts>2015-10-31 10:27:29 -0700</delta_ts>
            <desc>WIP exploration</desc>
            <filename>patch</filename>
            <type>application/octet-stream</type>
            <size>4938</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRh
YmFzZS1kZWxldGVvYmplY3RzdG9yZS1mYWlsdXJlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVz
Lmh0bWwKaW5kZXggN2QzMGQ0MS4uYTVhODJmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1
cmVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRh
dGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLmh0bWwKQEAgLTEwMyw4ICsxMDMsMjEg
QEAgZnVuY3Rpb24gY29udGludWVUZXN0MigpCiAgICAgICAgIAogICAgICAgICAvLyBRdWV1ZSB1
cCBhIHdob2xlIGJ1bmNoIG9mIHB1dHMgdG8ga2VlcCB0aGUgdHJhbnNhY3Rpb24gYWxpdmUgZm9y
IGF3aGlsZQogICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSB2ZXJzaW9uVHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwOyArK2kpCi0gICAgICAgICAgICBvYmplY3RTdG9yZS5wdXQoIkFIIEFIIEFIIEFIIEFIIiwg
aSArICIgcHV0cyIpOworCisgICAgICAgIC8vIFF1ZXVlIHVwIHNvbWUgcHV0cyB0byBrZWVwIHRo
ZSB0cmFuc2FjdGlvbiBhbGl2ZSBmb3IgYXdoaWxlCisgICAgICAgIHZhciByZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhbGVydCgxKTsKKyAgICAgICAgICAgIHZhciByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7CisgICAgICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFsZXJ0KDIpOworICAg
ICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7
CisgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYWxlcnQoMyk7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0
ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBBZnRlciB0aGUgdmVy
c2lvbkNoYW5nZSB0cmFuc2FjdGlvbiBiZWNvbWVzIGluYWN0aXZlLCBidXQgd2hpbGUgaXQncyBz
dGlsbCBpbi1wcm9ncmVzcywgdHJ5IHRvIGRlbGV0ZSB0aGUgb2JqZWN0c3RvcmUKICAgICAgICAg
dmFyIHRyeUluYWN0aXZlRGVsZXRlID0gZnVuY3Rpb24oKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1w
bC5jcHAKaW5kZXggNWZhNDYwNy4uNzZjMWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5j
cHAKQEAgLTIxMSw2ICsyMTEsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVy
YXRpb24oUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKIHsKICAgICBB
U1NFUlQoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuY29udGFpbnMob3BlcmF0aW9uLT5pZGVu
dGlmaWVyKCkpKTsKIAorICAgIFdURkxvZ0Fsd2F5cygiVHJhbnNhY3Rpb24gJXAgaGFzICVsdSBv
cGVyYXRpb25zIHF1ZXVlZCwgJXUgdG90YWwgdGhhdCBpdCBrbm93cyBhYm91dCwgYW5kIGlzIGFi
b3V0IHRvIHF1ZXVlIGFub3RoZXIiLCB0aGlzLCBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUu
c2l6ZSgpLCBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLnNpemUoKSk7CisgICAgaWYgKGlzRmlu
aXNoZWRPckZpbmlzaGluZygpKQorICAgICAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKKwogICAg
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKICAgICBtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uTWFwLnNldChvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgV1RGOjpt
b3ZlKG9wZXJhdGlvbikpOwogCkBAIC0yMzIsMTEgKzIzNiwxOCBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpvcGVyYXRpb25UaW1lckZpcmVkKCkKIAogICAgIGlmICghbV90cmFuc2FjdGlvbk9wZXJh
dGlvblF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IG1fdHJhbnNh
Y3Rpb25PcGVyYXRpb25RdWV1ZS50YWtlRmlyc3QoKTsKKworICAgICAgICBXVEZMb2dBbHdheXMo
IlRyYW5zYWN0aW9uICVwIGhhcyAlbHUgb3BlcmF0aW9ucyBxdWV1ZWQsIGJ1dCAldSB0b3RhbCB0
aGF0IGl0IGtub3dzIGFib3V0IiwgdGhpcywgbV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLnNp
emUoKSwgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zaXplKCkpOwogICAgICAgICBvcGVyYXRp
b24tPnBlcmZvcm0oKTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V1RGTG9nQWx3YXlzKCJUcmFuc2FjdGlvbiAlcCBrbm93cyBhYm91dCBOTyBvcGVyYXRpb25zLCBz
byBpdCBjYW4gY29tbWl0IiwgdGhpcyk7CisKICAgICBpZiAoIWlzRmluaXNoZWRPckZpbmlzaGlu
ZygpKQogICAgICAgICBjb21taXQoKTsKIH0KQEAgLTUwMyw2ICs1MTQsMTQgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXQKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3VsdERhdGEu
dHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkRlbGV0ZU9iamVjdFN0b3JlU3VjY2Vzcyk7CiB9CiAK
K3ZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkRpZENvbXBsZXRlKFRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24pCit7CisgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25NYXAudGFrZShvcGVyYXRpb24uaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbiA9PSAmb3BlcmF0aW9uKTsKKworICAgIHNj
aGVkdWxlT3BlcmF0aW9uVGltZXIoKTsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZXN0YWJs
aXNoT25TZXJ2ZXIoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZXN0
YWJsaXNoT25TZXJ2ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAppbmRleCA3MjFiNDMwLi5h
NDE3YzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYWN0aXZhdGUoKTsKICAgICB2b2lkIGRlYWN0aXZhdGUoKTsKIAotICAg
IHZvaWQgc2NoZWR1bGVPcGVyYXRpb25UaW1lcigpOworICAgIHZvaWQgb3BlcmF0aW9uRGlkQ29t
cGxldGUoVHJhbnNhY3Rpb25PcGVyYXRpb24mKTsKIAogcHJpdmF0ZToKICAgICBJREJUcmFuc2Fj
dGlvbihJREJEYXRhYmFzZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwpAQCAtMTM4LDYg
KzEzOCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVzdGFibGlzaE9uU2VydmVyKCk7CiAKKyAg
ICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uVGltZXIoKTsKKwogICAgIFJlZjxJREJEYXRhYmFzZT4g
bV9kYXRhYmFzZTsKICAgICBJREJUcmFuc2FjdGlvbkluZm8gbV9pbmZvOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fb3JpZ2luYWxEYXRhYmFzZUluZm87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25P
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFu
c2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IDg3ZDA1NWMuLmFjNjA2YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBs
ZXRlZChjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgbV9jb21wbGV0
ZUZ1bmN0aW9uKGRhdGEpOwotICAgICAgICBtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZU9wZXJhdGlv
blRpbWVyKCk7CisgICAgICAgIG1fdHJhbnNhY3Rpb24tPm9wZXJhdGlvbkRpZENvbXBsZXRlKCp0
aGlzKTsKICAgICB9CiAKICAgICBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264478</attachid>
            <date>2015-10-31 10:27:29 -0700</date>
            <delta_ts>2015-10-31 15:32:45 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9569</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNTkwM2U1Li5iZDc0YTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTAt
MzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmplY3RzdG9yZS1mYWlsdXJlcy5o
dG1sIGlzIGZsYWt5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUwNzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFJlZW5hYmxlIHRoZSB0
ZXN0LgorCiAyMDE1LTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJREI6IERhdGUgb2JqZWN0cyBkb24ndCB3b3JrIGFzIGtleXMgb3IgdmFsdWVzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI2
YTJhZGMuLjM4ZWViODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTUwLDggKzUwLDYgQEAgd2Via2l0Lm9yZy9iLzE0NjYyMiBbIFlvc2Vt
aXRlIERlYnVnIF0gd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvY28KIAog
d2Via2l0Lm9yZy9iLzE1MDU2NCBzdmcvcmVwYWludC9hZGQtYmFja2dyb3VuZC1wcm9wZXJ0eS1v
bi1yb290Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTUwNzM1IHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmplY3RzdG9yZS1mYWlsdXJl
cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogIyMjIEVORCBPRiAoMSkgRmFpbHVyZXMgd2l0aCBi
dWcgcmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZWVkNzQ5Yy4uMjI3MDUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBA
CisyMDE1LTEwLTMxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUt
ZmFpbHVyZXMuaHRtbCBpcyBmbGFreS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDczNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyku
CisKKyAgICAgICAgVHJhbnNhY3Rpb25zIHdlcmUgbGlhYmxlIHRvIGNvbW1pdCB0b28gZWFybHkg
YmVjYXVzZSBJREJSZXF1ZXN0cyBjb3VsZCBiZSB3YWl0aW5nCisgICAgICAgIHRvIGRpc3BhdGNo
IHRoZWlyIGVycm9yL3N1Y2Nlc3MgZXZlbnRzIGJ1dCB0aGVpciBvcGVyYXRpb25zIHdvdWxkIG5v
IGxvbmdlciBiZQorICAgICAgICByZWdpc3RlcmVkIHdpdGggdGhlIHRyYW5zYWN0aW9uLgorICAg
ICAgICAKKyAgICAgICAgSGF2aW5nIG91dHN0YW5kaW5nIHJlcXVlc3RzIHNob3VsZCBhbHNvIGtl
ZXAgYSB0cmFuc2FjdGlvbiBmcm9tIGNvbW1pdHRpbmcsIGp1c3QKKyAgICAgICAgbGlrZSBoYXZp
bmcgb3V0c3RhbmRpbmcgb3BlcmF0aW9ucyBzaG91bGQuCisgICAgICAgIAorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCk6
CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6OmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCVHJhbnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
VHJhbnNhY3Rpb246OmFkZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJUcmFuc2FjdGlvbjo6cmVtb3ZlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdFB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rp
b246Om9wZXJhdGlvbkRpZENvbXBsZXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6Y29tcGxldGVkKToKKwogMjAxNS0x
MC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSURCOiBE
YXRlIG9iamVjdHMgZG9uJ3Qgd29yayBhcyBrZXlzIG9yIHZhbHVlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRC
UmVxdWVzdEltcGwuY3BwCmluZGV4IGI2ZGJkM2IuLjgwZmZjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5E
QlJlcXVlc3RJbXBsLmNwcApAQCAtOTYsNiArOTYsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6
Om9uVXBncmFkZU5lZWRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIG1f
cmVzdWx0ID0gSURCQW55OjpjcmVhdGUoV1RGOjptb3ZlKGRhdGFiYXNlKSk7CiAgICAgbV9yZWFk
eVN0YXRlID0gSURCUmVxdWVzdFJlYWR5U3RhdGU6OkRvbmU7CiAgICAgbV90cmFuc2FjdGlvbiA9
IGFkb3B0UmVmKCZ0cmFuc2FjdGlvbi5sZWFrUmVmKCkpOworICAgIG1fdHJhbnNhY3Rpb24tPmFk
ZFJlcXVlc3QoKnRoaXMpOwogCiAgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVu
dDo6Y3JlYXRlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGV2ZW50TmFtZXMoKS51cGdyYWRlbmVl
ZGVkRXZlbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCmluZGV4IGNiMjk0MDEuLmVkZmEyNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJS
ZXF1ZXN0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQlJlcXVlc3RJbXBsLmNwcApAQCAtMTY0LDYgKzE2NCwxMCBAQCBib29sIElEQlJlcXVl
c3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgICAgIGRv
bnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0
KCksIHRhcmdldHMpOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBXaXRoIHJldXNhYmxlIHJlcXVl
c3RzIChmb3IgY3Vyc29ycykgd2Ugd29uJ3QgYWx3YXlzIHJlbW92ZSB0aGlzIHJlcXVlc3QgZnJv
bSBpdHMgdHJhbnNhY3Rpb24uCisgICAgaWYgKG1fdHJhbnNhY3Rpb24pCisgICAgICAgIG1fdHJh
bnNhY3Rpb24tPnJlbW92ZVJlcXVlc3QoKnRoaXMpOworCiAgICAgbV9oYXNQZW5kaW5nQWN0aXZp
dHkgPSBmYWxzZTsKIAogICAgIHJldHVybiBkb250UHJldmVudERlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25J
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFu
c2FjdGlvbkltcGwuY3BwCmluZGV4IDVmYTQ2MDcuLjRmY2VlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2Fj
dGlvbkltcGwuY3BwCkBAIC0yMDcsNiArMjA3LDE4IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omlz
RmluaXNoZWRPckZpbmlzaGluZygpIGNvbnN0CiAgICAgICAgIHx8IG1fc3RhdGUgPT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KIAordm9pZCBJREJUcmFuc2FjdGlv
bjo6YWRkUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIEFTU0VSVCghbV9vcGVu
UmVxdWVzdHMuY29udGFpbnMoJnJlcXVlc3QpKTsKKyAgICBtX29wZW5SZXF1ZXN0cy5hZGQoJnJl
cXVlc3QpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKG1fb3BlblJlcXVlc3RzLmNvbnRhaW5zKCZyZXF1
ZXN0KSk7CisgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKK30KKwogdm9pZCBJ
REJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0
aW9uPiYmIG9wZXJhdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25N
YXAuY29udGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVyKCkpKTsKQEAgLTIzNyw2ICsyNDksOSBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVkKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGlmICghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5pc0VtcHR5
KCkgfHwgIW1fb3BlblJlcXVlc3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKCFpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSkKICAgICAgICAgY29tbWl0KCk7CiB9CkBAIC0z
OTMsNiArNDA4LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
UmVjb3JkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICBBU1NFUlQoIWtleVJh
bmdlRGF0YS5pc051bGwpOwogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1
ZXN0OjpjcmVhdGUoY29udGV4dCwgb2JqZWN0U3RvcmUsICp0aGlzKTsKKyAgICBhZGRSZXF1ZXN0
KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRHZXRS
ZWNvcmRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlciwga2V5UmFu
Z2VEYXRhKTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CkBA
IC00MjEsNiArNDM3LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0
Q2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAgIEFTU0VSVChpc0Fj
dGl2ZSgpKTsKIAogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYWRkUmVxdWVzdChyZXF1ZXN0
LmdldCgpKTsKIAogICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciA9IG9iamVjdFN0
b3JlLmluZm8oKS5pZGVudGlmaWVyKCk7CiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFu
c2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpk
aWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RT
dG9yZU9uU2VydmVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwpAQCAtNDUyLDYgKzQ2OSw3IEBA
IFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsCiAgICAgQVNTRVJUKG9iamVjdFN0b3JlLmluZm8oKS5h
dXRvSW5jcmVtZW50KCkgfHwga2V5KTsKIAogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYWRk
UmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gY3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6
ZGlkUHV0T3JBZGRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyLCBr
ZXksICZ2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjpt
b3ZlKG9wZXJhdGlvbikpOwpAQCAtNTAzLDYgKzUyMSwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdAogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0g
SURCUmVzdWx0VHlwZTo6RGVsZXRlT2JqZWN0U3RvcmVTdWNjZXNzKTsKIH0KIAordm9pZCBJREJU
cmFuc2FjdGlvbjo6b3BlcmF0aW9uRGlkQ29tcGxldGUoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXJhdGlvbikKK3sKKyAgICBhdXRvIHRha2VuT3BlcmF0aW9uID0gbV90cmFuc2FjdGlvbk9wZXJh
dGlvbk1hcC50YWtlKG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpOworICAgIEFTU0VSVF9VTlVTRUQo
dGFrZW5PcGVyYXRpb24sIHRha2VuT3BlcmF0aW9uID09ICZvcGVyYXRpb24pOworCisgICAgc2No
ZWR1bGVPcGVyYXRpb25UaW1lcigpOworfQorCiB2b2lkIElEQlRyYW5zYWN0aW9uOjplc3RhYmxp
c2hPblNlcnZlcigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjplc3Rh
Ymxpc2hPblNlcnZlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4IDcyMWI0MzAuLmEx
OTA2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJUcmFuc2FjdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKQEAgLTk1LDEyICs5NSwxNSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWN0U3Rv
cmVOYW1lKTsKIAorICAgIHZvaWQgYWRkUmVxdWVzdChJREJSZXF1ZXN0Jik7CisgICAgdm9pZCBy
ZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmKTsKKwogICAgIElEQkNvbm5lY3Rpb25Ub1NlcnZlciYg
c2VydmVyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBhY3RpdmF0ZSgpOwogICAgIHZvaWQgZGVh
Y3RpdmF0ZSgpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvblRpbWVyKCk7CisgICAgdm9p
ZCBvcGVyYXRpb25EaWRDb21wbGV0ZShUcmFuc2FjdGlvbk9wZXJhdGlvbiYpOwogCiBwcml2YXRl
OgogICAgIElEQlRyYW5zYWN0aW9uKElEQkRhdGFiYXNlJiwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJik7CkBAIC0xMzgsNiArMTQxLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZXN0YWJsaXNo
T25TZXJ2ZXIoKTsKIAorICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb25UaW1lcigpOworCiAgICAg
UmVmPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIElEQlRyYW5zYWN0aW9uSW5mbyBtX2lu
Zm87CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9vcmlnaW5hbERhdGFi
YXNlSW5mbzsKQEAgLTE1NCw2ICsxNTksOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVz
b3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX3RyYW5zYWN0
aW9uT3BlcmF0aW9uTWFwOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJPYmplY3RT
dG9yZT4+IG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlczsKKworICAgIEhhc2hTZXQ8UmVmUHRyPElE
QlJlcXVlc3Q+PiBtX29wZW5SZXF1ZXN0czsKIH07CiAKIGNsYXNzIFRyYW5zYWN0aW9uQWN0aXZh
dG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKaW5kZXggODdkMDU1Yy4uYWM2MDZjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewogICAg
ICAgICBtX2NvbXBsZXRlRnVuY3Rpb24oZGF0YSk7Ci0gICAgICAgIG1fdHJhbnNhY3Rpb24tPnNj
aGVkdWxlT3BlcmF0aW9uVGltZXIoKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+b3BlcmF0aW9u
RGlkQ29tcGxldGUoKnRoaXMpOwogICAgIH0KIAogICAgIGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQo=
</data>
<flag name="review"
          id="289610"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264489</attachid>
            <date>2015-10-31 15:32:45 -0700</date>
            <delta_ts>2015-10-31 16:18:35 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9502</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNTkwM2U1Li44ZmE5YjFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTAt
MzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmplY3RzdG9yZS1mYWlsdXJlcy5o
dG1sIGlzIGZsYWt5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUwNzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFJlZW5hYmxlIHRoZSB0ZXN0
LgorCiAyMDE1LTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJREI6IERhdGUgb2JqZWN0cyBkb24ndCB3b3JrIGFzIGtleXMgb3IgdmFsdWVzLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI2YTJh
ZGMuLjM4ZWViODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTUwLDggKzUwLDYgQEAgd2Via2l0Lm9yZy9iLzE0NjYyMiBbIFlvc2VtaXRl
IERlYnVnIF0gd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvY28KIAogd2Vi
a2l0Lm9yZy9iLzE1MDU2NCBzdmcvcmVwYWludC9hZGQtYmFja2dyb3VuZC1wcm9wZXJ0eS1vbi1y
b290Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTUwNzM1IHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmplY3RzdG9yZS1mYWlsdXJlcy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogIyMjIEVORCBPRiAoMSkgRmFpbHVyZXMgd2l0aCBidWcg
cmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZWVkNzQ5Yy4uZmJkNjBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisy
MDE1LTEwLTMxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFp
bHVyZXMuaHRtbCBpcyBmbGFreS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MDczNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAoQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cykuCisKKyAg
ICAgICAgVHJhbnNhY3Rpb25zIHdlcmUgbGlhYmxlIHRvIGNvbW1pdCB0b28gZWFybHkgYmVjYXVz
ZSBJREJSZXF1ZXN0cyBjb3VsZCBiZSB3YWl0aW5nCisgICAgICAgIHRvIGRpc3BhdGNoIHRoZWly
IGVycm9yL3N1Y2Nlc3MgZXZlbnRzIGJ1dCB0aGVpciBvcGVyYXRpb25zIHdvdWxkIG5vIGxvbmdl
ciBiZQorICAgICAgICByZWdpc3RlcmVkIHdpdGggdGhlIHRyYW5zYWN0aW9uLgorICAgICAgICAK
KyAgICAgICAgSGF2aW5nIG91dHN0YW5kaW5nIHJlcXVlc3RzIHNob3VsZCBhbHNvIGtlZXAgYSB0
cmFuc2FjdGlvbiBmcm9tIGNvbW1pdHRpbmcsIGp1c3QKKyAgICAgICAgbGlrZSBoYXZpbmcgb3V0
c3RhbmRpbmcgb3BlcmF0aW9ucyBzaG91bGQuCisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCk6CisgICAg
ICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZl
bnQpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJh
bnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNh
Y3Rpb246OmFkZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFu
c2FjdGlvbjo6cmVtb3ZlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1
dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246Om9w
ZXJhdGlvbkRpZENvbXBsZXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCVHJhbnNhY3Rpb25JbXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6Y29tcGxldGVkKToKKwogMjAxNS0xMC0zMCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSURCOiBEYXRlIG9i
amVjdHMgZG9uJ3Qgd29yayBhcyBrZXlzIG9yIHZhbHVlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVz
dEltcGwuY3BwCmluZGV4IGI2ZGJkM2IuLjgwZmZjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVl
c3RJbXBsLmNwcApAQCAtOTYsNiArOTYsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBn
cmFkZU5lZWRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIG1fcmVzdWx0
ID0gSURCQW55OjpjcmVhdGUoV1RGOjptb3ZlKGRhdGFiYXNlKSk7CiAgICAgbV9yZWFkeVN0YXRl
ID0gSURCUmVxdWVzdFJlYWR5U3RhdGU6OkRvbmU7CiAgICAgbV90cmFuc2FjdGlvbiA9IGFkb3B0
UmVmKCZ0cmFuc2FjdGlvbi5sZWFrUmVmKCkpOworICAgIG1fdHJhbnNhY3Rpb24tPmFkZFJlcXVl
c3QoKnRoaXMpOwogCiAgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3Jl
YXRlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZl
bnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJSZXF1ZXN0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCmluZGV4IGNiMjk0MDEuLmFkZGYzZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QlJlcXVlc3RJbXBsLmNwcApAQCAtMTY2LDYgKzE2NiwxMCBAQCBib29sIElEQlJlcXVlc3Q6OmRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAKICAgICBtX2hhc1BlbmRp
bmdBY3Rpdml0eSA9IGZhbHNlOwogCisgICAgLy8gRklYTUU6IFdoZW4gd2UgaW1wbGVtZW50IHJl
dXNhYmxlIHJlcXVlc3RzIChmb3IgY3Vyc29ycykgaXQgd2lsbCBiZSBpbmNvcnJlY3QgdG8gYWx3
YXlzIHJlbW92ZSB0aGUgcmVxdWVzdCBmcm9tIHRoZSB0cmFuc2FjdGlvbi4KKyAgICBpZiAobV90
cmFuc2FjdGlvbikKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+cmVtb3ZlUmVxdWVzdCgqdGhpcyk7
CisKICAgICByZXR1cm4gZG9udFByZXZlbnREZWZhdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlv
bkltcGwuY3BwCmluZGV4IDVmYTQ2MDcuLjViMWE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbklt
cGwuY3BwCkBAIC0yMDcsNiArMjA3LDE4IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmlzRmluaXNo
ZWRPckZpbmlzaGluZygpIGNvbnN0CiAgICAgICAgIHx8IG1fc3RhdGUgPT0gSW5kZXhlZERCOjpU
cmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KIAordm9pZCBJREJUcmFuc2FjdGlvbjo6YWRk
UmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIEFTU0VSVCghbV9vcGVuUmVxdWVz
dHMuY29udGFpbnMoJnJlcXVlc3QpKTsKKyAgICBtX29wZW5SZXF1ZXN0cy5hZGQoJnJlcXVlc3Qp
OworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJl
cXVlc3QpCit7CisgICAgQVNTRVJUKG1fb3BlblJlcXVlc3RzLmNvbnRhaW5zKCZyZXF1ZXN0KSk7
CisgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKK30KKwogdm9pZCBJREJUcmFu
c2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiYm
IG9wZXJhdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuY29u
dGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVyKCkpKTsKQEAgLTIzNyw2ICsyNDksOSBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVkKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIGlmICghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5pc0VtcHR5KCkgfHwg
IW1fb3BlblJlcXVlc3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFp
c0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSkKICAgICAgICAgY29tbWl0KCk7CiB9CkBAIC0zOTMsNiAr
NDA4LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVjb3Jk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICBBU1NFUlQoIWtleVJhbmdlRGF0
YS5pc051bGwpOwogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0Ojpj
cmVhdGUoY29udGV4dCwgb2JqZWN0U3RvcmUsICp0aGlzKTsKKyAgICBhZGRSZXF1ZXN0KHJlcXVl
c3QuZ2V0KCkpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRHZXRSZWNvcmRP
blNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlciwga2V5UmFuZ2VEYXRh
KTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CkBAIC00MjEs
NiArNDM3LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJP
YmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAgIEFTU0VSVChpc0FjdGl2ZSgp
KTsKIAogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNv
bnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgp
KTsKIAogICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciA9IG9iamVjdFN0b3JlLmlu
Zm8oKS5pZGVudGlmaWVyKCk7CiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRDbGVh
ck9iamVjdFN0b3JlT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9u
U2VydmVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwpAQCAtNDUyLDYgKzQ2OSw3IEBAIFJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsCiAgICAgQVNTRVJUKG9iamVjdFN0b3JlLmluZm8oKS5hdXRvSW5j
cmVtZW50KCkgfHwga2V5KTsKIAogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYWRkUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkUHV0
T3JBZGRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyLCBrZXksICZ2
YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjptb3ZlKG9w
ZXJhdGlvbikpOwpAQCAtNTAzLDYgKzUyMSwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRE
ZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdAog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVz
dWx0VHlwZTo6RGVsZXRlT2JqZWN0U3RvcmVTdWNjZXNzKTsKIH0KIAordm9pZCBJREJUcmFuc2Fj
dGlvbjo6b3BlcmF0aW9uRGlkQ29tcGxldGUoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlv
bikKK3sKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5nZXQob3BlcmF0aW9u
LmlkZW50aWZpZXIoKSkgPT0gJm9wZXJhdGlvbik7CisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlv
bk1hcC5yZW1vdmUob3BlcmF0aW9uLmlkZW50aWZpZXIoKSk7CisKKyAgICBzY2hlZHVsZU9wZXJh
dGlvblRpbWVyKCk7Cit9CisKIHZvaWQgSURCVHJhbnNhY3Rpb246OmVzdGFibGlzaE9uU2VydmVy
KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmVzdGFibGlzaE9uU2Vy
dmVyIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCVHJhbnNhY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKaW5kZXggNzIxYjQzMC4uYTE5MDY2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5z
YWN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJUcmFuc2FjdGlvbkltcGwuaApAQCAtOTUsMTIgKzk1LDE1IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwog
CisgICAgdm9pZCBhZGRSZXF1ZXN0KElEQlJlcXVlc3QmKTsKKyAgICB2b2lkIHJlbW92ZVJlcXVl
c3QoSURCUmVxdWVzdCYpOworCiAgICAgSURCQ29ubmVjdGlvblRvU2VydmVyJiBzZXJ2ZXJDb25u
ZWN0aW9uKCk7CiAKICAgICB2b2lkIGFjdGl2YXRlKCk7CiAgICAgdm9pZCBkZWFjdGl2YXRlKCk7
CiAKLSAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uVGltZXIoKTsKKyAgICB2b2lkIG9wZXJhdGlv
bkRpZENvbXBsZXRlKFRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CiAKIHByaXZhdGU6CiAgICAgSURC
VHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKQEAg
LTEzOCw2ICsxNDEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlc3RhYmxpc2hPblNlcnZlcigp
OwogCisgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvblRpbWVyKCk7CisKICAgICBSZWY8SURCRGF0
YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIG1faW5mbzsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvOwpA
QCAtMTU0LDYgKzE1OSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50
aWZpZXIsIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJhbnNhY3Rpb25PcGVyYXRp
b25NYXA7CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQk9iamVjdFN0b3JlPj4gbV9y
ZWZlcmVuY2VkT2JqZWN0U3RvcmVzOworCisgICAgSGFzaFNldDxSZWZQdHI8SURCUmVxdWVzdD4+
IG1fb3BlblJlcXVlc3RzOwogfTsKIAogY2xhc3MgVHJhbnNhY3Rpb25BY3RpdmF0b3IgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCA4N2QwNTVjLi5hYzYwNmM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJh
bnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKICAgICB7CiAgICAgICAgIG1fY29t
cGxldGVGdW5jdGlvbihkYXRhKTsKLSAgICAgICAgbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVPcGVy
YXRpb25UaW1lcigpOworICAgICAgICBtX3RyYW5zYWN0aW9uLT5vcGVyYXRpb25EaWRDb21wbGV0
ZSgqdGhpcyk7CiAgICAgfQogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>