@yorkie-js/react 0.6.48 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/yorkie-js-react.d.ts +20 -0
- package/dist/yorkie-js-react.es.js +429 -24
- package/dist/yorkie-js-react.es.js.map +1 -1
- package/dist/yorkie-js-react.js +428 -23
- package/dist/yorkie-js-react.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useMemo, useState, useEffect, useContext, useRef, useSyncExternalStore } from "react";
|
|
2
|
+
import { createContext, useMemo, useState, useEffect, useContext, useRef, useSyncExternalStore, useCallback } from "react";
|
|
3
3
|
var Code$1;
|
|
4
4
|
(function(Code2) {
|
|
5
5
|
Code2[Code2["Canceled"] = 1] = "Canceled";
|
|
@@ -5395,7 +5395,7 @@ function createGrpcWebTransport(options) {
|
|
|
5395
5395
|
}
|
|
5396
5396
|
};
|
|
5397
5397
|
}
|
|
5398
|
-
const file_src_api_yorkie_v1_resources = /* @__PURE__ */ fileDesc("CiFzcmMvYXBpL3lvcmtpZS92MS9yZXNvdXJjZXMucHJvdG8SCXlvcmtpZS52MSKuAQoIU25hcHNob3QSJAoEcm9vdBgBIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudBI1CglwcmVzZW5jZXMYAiADKAsyIi55b3JraWUudjEuU25hcHNob3QuUHJlc2VuY2VzRW50cnkaRQoOUHJlc2VuY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlOgI4ASL7AQoKQ2hhbmdlUGFjaxIUCgxkb2N1bWVudF9rZXkYASABKAkSKQoKY2hlY2twb2ludBgCIAEoCzIVLnlvcmtpZS52MS5DaGVja3BvaW50EhAKCHNuYXBzaG90GAMgASgMEiIKB2NoYW5nZXMYBCADKAsyES55b3JraWUudjEuQ2hhbmdlEjAKEW1pbl9zeW5jZWRfdGlja2V0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSEgoKaXNfcmVtb3ZlZBgGIAEoCBIwCg52ZXJzaW9uX3ZlY3RvchgHIAEoCzIYLnlvcmtpZS52MS5WZXJzaW9uVmVjdG9yIpgBCgZDaGFuZ2USHwoCaWQYASABKAsyEy55b3JraWUudjEuQ2hhbmdlSUQSDwoHbWVzc2FnZRgCIAEoCRIoCgpvcGVyYXRpb25zGAMgAygLMhQueW9ya2llLnYxLk9wZXJhdGlvbhIyCg9wcmVzZW5jZV9jaGFuZ2UYBCABKAsyGS55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UihwEKCENoYW5nZUlEEhIKCmNsaWVudF9zZXEYASABKA0SEgoKc2VydmVyX3NlcRgCIAEoAxIPCgdsYW1wb3J0GAMgASgDEhAKCGFjdG9yX2lkGAQgASgMEjAKDnZlcnNpb25fdmVjdG9yGAUgASgLMhgueW9ya2llLnYxLlZlcnNpb25WZWN0b3IidAoNVmVyc2lvblZlY3RvchI0CgZ2ZWN0b3IYASADKAsyJC55b3JraWUudjEuVmVyc2lvblZlY3Rvci5WZWN0b3JFbnRyeRotCgtWZWN0b3JFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBIqwaCglPcGVyYXRpb24SJwoDc2V0GAEgASgLMhgueW9ya2llLnYxLk9wZXJhdGlvbi5TZXRIABInCgNhZGQYAiABKAsyGC55b3JraWUudjEuT3BlcmF0aW9uLkFkZEgAEikKBG1vdmUYAyABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLk1vdmVIABItCgZyZW1vdmUYBCABKAsyGy55b3JraWUudjEuT3BlcmF0aW9uLlJlbW92ZUgAEikKBGVkaXQYBSABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLkVkaXRIABIrCgVzdHlsZRgHIAEoCzIaLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGVIABIxCghpbmNyZWFzZRgIIAEoCzIdLnlvcmtpZS52MS5PcGVyYXRpb24uSW5jcmVhc2VIABIyCgl0cmVlX2VkaXQYCSABKAsyHS55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0SAASNAoKdHJlZV9zdHlsZRgKIAEoCzIeLnlvcmtpZS52MS5PcGVyYXRpb24uVHJlZVN0eWxlSAASMgoJYXJyYXlfc2V0GAsgASgLMh0ueW9ya2llLnYxLk9wZXJhdGlvbi5BcnJheVNldEgAGp0BCgNTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBILCgNrZXkYAiABKAkSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrAAQoDQWRkEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSLgoPcHJldl9jcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq/AQoETW92ZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Ei4KD3ByZXZfY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCmNyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtleGVjdXRlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GpEBCgZSZW1vdmUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLZXhlY3V0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrZAwoERWRpdBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSUwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyMi55b3JraWUudjEuT3BlcmF0aW9uLkVkaXQuQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5Eg8KB2NvbnRlbnQYBSABKAkSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBI9CgphdHRyaWJ1dGVzGAcgAygLMikueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0LkF0dHJpYnV0ZXNFbnRyeRpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGssDCgVTdHlsZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSPgoKYXR0cmlidXRlcxgEIAMoCzIqLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSVAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBiADKAsyMy55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlLkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGpUBCghJbmNyZWFzZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAIgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQakwMKCFRyZWVFZGl0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIAoEZnJvbRgCIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zEh4KAnRvGAMgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSVwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyNi55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0LkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRImCghjb250ZW50cxgFIAMoCzIULnlvcmtpZS52MS5UcmVlTm9kZXMSEwoLc3BsaXRfbGV2ZWwYByABKAUSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGu0DCglUcmVlU3R5bGUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIgCgRmcm9tGAIgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSHgoCdG8YAyABKAsyEi55b3JraWUudjEuVHJlZVBvcxJCCgphdHRyaWJ1dGVzGAQgAygLMi4ueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSHAoUYXR0cmlidXRlc190b19yZW1vdmUYBiADKAkSWAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYByADKAsyNy55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVTdHlsZS5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARrAAQoIQXJyYXlTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldEIGCgRib2R5IsUBChFKU09ORWxlbWVudFNpbXBsZRIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIgoEdHlwZRgEIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYBSABKAwiggsKC0pTT05FbGVtZW50EjgKC2pzb25fb2JqZWN0GAEgASgLMiEueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05PYmplY3RIABI2Cgpqc29uX2FycmF5GAIgASgLMiAueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05BcnJheUgAEjUKCXByaW1pdGl2ZRgDIAEoCzIgLnlvcmtpZS52MS5KU09ORWxlbWVudC5QcmltaXRpdmVIABIrCgR0ZXh0GAUgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRleHRIABIxCgdjb3VudGVyGAYgASgLMh4ueW9ya2llLnYxLkpTT05FbGVtZW50LkNvdW50ZXJIABIrCgR0cmVlGAcgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRyZWVIABquAQoKSlNPTk9iamVjdBIhCgVub2RlcxgBIAMoCzISLnlvcmtpZS52MS5SSFROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqtAQoJSlNPTkFycmF5EiEKBW5vZGVzGAEgAygLMhIueW9ya2llLnYxLlJHQU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Gr0BCglQcmltaXRpdmUSIgoEdHlwZRgBIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYAiABKAwSKQoKY3JlYXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GqkBCgRUZXh0EiIKBW5vZGVzGAEgAygLMhMueW9ya2llLnYxLlRleHROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq7AQoHQ291bnRlchIiCgR0eXBlGAEgASgOMhQueW9ya2llLnYxLlZhbHVlVHlwZRINCgV2YWx1ZRgCIAEoDBIpCgpjcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQaqQEKBFRyZWUSIgoFbm9kZXMYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0QgYKBGJvZHkiPwoHUkhUTm9kZRILCgNrZXkYASABKAkSJwoHZWxlbWVudBgCIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudCJUCgdSR0FOb2RlEiAKBG5leHQYASABKAsyEi55b3JraWUudjEuUkdBTm9kZRInCgdlbGVtZW50GAIgASgLMhYueW9ya2llLnYxLkpTT05FbGVtZW50IlgKCE5vZGVBdHRyEg0KBXZhbHVlGAEgASgJEikKCnVwZGF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBISCgppc19yZW1vdmVkGAMgASgIIpQCCghUZXh0Tm9kZRIhCgJpZBgBIAEoCzIVLnlvcmtpZS52MS5UZXh0Tm9kZUlEEg0KBXZhbHVlGAIgASgJEikKCnJlbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtpbnNfcHJldl9pZBgEIAEoCzIVLnlvcmtpZS52MS5UZXh0Tm9kZUlEEjcKCmF0dHJpYnV0ZXMYBSADKAsyIy55b3JraWUudjEuVGV4dE5vZGUuQXR0cmlidXRlc0VudHJ5GkYKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuTm9kZUF0dHI6AjgBIkcKClRleHROb2RlSUQSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBSLdAgoIVHJlZU5vZGUSIQoCaWQYASABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBIMCgR0eXBlGAIgASgJEg0KBXZhbHVlGAMgASgJEikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtpbnNfcHJldl9pZBgFIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEioKC2luc19uZXh0X2lkGAYgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSDQoFZGVwdGgYByABKAUSNwoKYXR0cmlidXRlcxgIIAMoCzIjLnlvcmtpZS52MS5UcmVlTm9kZS5BdHRyaWJ1dGVzRW50cnkaRgoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5Ob2RlQXR0cjoCOAEiMQoJVHJlZU5vZGVzEiQKB2NvbnRlbnQYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUiRwoKVHJlZU5vZGVJRBIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFImMKB1RyZWVQb3MSKAoJcGFyZW50X2lkGAEgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSLgoPbGVmdF9zaWJsaW5nX2lkGAIgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQiawoEVXNlchIKCgJpZBgBIAEoCRIVCg1hdXRoX3Byb3ZpZGVyGAIgASgJEhAKCHVzZXJuYW1lGAMgASgJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIokBCgZNZW1iZXISCgoCaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIPCgd1c2VyX2lkGAMgASgJEhAKCHVzZXJuYW1lGAQgASgJEgwKBHJvbGUYBSABKAkSLgoKaW52aXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi6QYKB1Byb2plY3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRISCgpwdWJsaWNfa2V5GAMgASgJEhIKCnNlY3JldF9rZXkYBCABKAkSGAoQYXV0aF93ZWJob29rX3VybBgFIAEoCRIcChRhdXRoX3dlYmhvb2tfbWV0aG9kcxgGIAMoCRIgChhhdXRoX3dlYmhvb2tfbWF4X3JldHJpZXMYESABKAQSJgoeYXV0aF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGBIgASgJEiYKHmF1dGhfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgTIAEoCRIkChxhdXRoX3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBQgASgJEhkKEWV2ZW50X3dlYmhvb2tfdXJsGAcgASgJEhwKFGV2ZW50X3dlYmhvb2tfZXZlbnRzGAggAygJEiEKGWV2ZW50X3dlYmhvb2tfbWF4X3JldHJpZXMYFSABKAQSJwofZXZlbnRfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgWIAEoCRInCh9ldmVudF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBcgASgJEiUKHWV2ZW50X3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBggASgJEiMKG2NsaWVudF9kZWFjdGl2YXRlX3RocmVzaG9sZBgJIAEoCRIaChJzbmFwc2hvdF90aHJlc2hvbGQYGSABKAMSGQoRc25hcHNob3RfaW50ZXJ2YWwYGiABKAMSJAocbWF4X3N1YnNjcmliZXJzX3Blcl9kb2N1bWVudBgKIAEoBRIkChxtYXhfYXR0YWNobWVudHNfcGVyX2RvY3VtZW50GAsgASgFEh0KFW1heF9zaXplX3Blcl9kb2N1bWVudBgPIAEoBRIYChByZW1vdmVfb25fZGV0YWNoGBAgASgIEh0KFWF1dG9fcmV2aXNpb25fZW5hYmxlZBgbIAEoCBIXCg9hbGxvd2VkX29yaWdpbnMYDiADKAkSLgoKY3JlYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoLTWV0cmljUG9pbnQSEQoJdGltZXN0YW1wGAEgASgDEg0KBXZhbHVlGAIgASgFIqMMChZVcGRhdGFibGVQcm9qZWN0RmllbGRzEioKBG5hbWUYASABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSNgoQYXV0aF93ZWJob29rX3VybBgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJSChRhdXRoX3dlYmhvb2tfbWV0aG9kcxgDIAEoCzI0LnlvcmtpZS52MS5VcGRhdGFibGVQcm9qZWN0RmllbGRzLkF1dGhXZWJob29rTWV0aG9kcxI+ChhhdXRoX3dlYmhvb2tfbWF4X3JldHJpZXMYDCABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSRAoeYXV0aF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGA0gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkQKHmF1dGhfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgOIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJCChxhdXRoX3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GA8gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEWV2ZW50X3dlYmhvb2tfdXJsGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlElIKFGV2ZW50X3dlYmhvb2tfZXZlbnRzGAUgASgLMjQueW9ya2llLnYxLlVwZGF0YWJsZVByb2plY3RGaWVsZHMuRXZlbnRXZWJob29rRXZlbnRzEj8KGWV2ZW50X3dlYmhvb2tfbWF4X3JldHJpZXMYECABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSRQofZXZlbnRfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgRIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJFCh9ldmVudF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkMKHWV2ZW50X3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEnNuYXBzaG90X3RocmVzaG9sZBgUIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEjYKEXNuYXBzaG90X2ludGVydmFsGBUgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWUSQQobY2xpZW50X2RlYWN0aXZhdGVfdGhyZXNob2xkGAYgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkEKHG1heF9zdWJzY3JpYmVyc19wZXJfZG9jdW1lbnQYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRJBChxtYXhfYXR0YWNobWVudHNfcGVyX2RvY3VtZW50GAggASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSOgoVbWF4X3NpemVfcGVyX2RvY3VtZW50GAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSNAoQcmVtb3ZlX29uX2RldGFjaBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSOQoVYXV0b19yZXZpc2lvbl9lbmFibGVkGBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZRJJCg9hbGxvd2VkX29yaWdpbnMYCSABKAsyMC55b3JraWUudjEuVXBkYXRhYmxlUHJvamVjdEZpZWxkcy5BbGxvd2VkT3JpZ2lucxolChJBdXRoV2ViaG9va01ldGhvZHMSDwoHbWV0aG9kcxgBIAMoCRokChJFdmVudFdlYmhvb2tFdmVudHMSDgoGZXZlbnRzGAEgAygJGiEKDkFsbG93ZWRPcmlnaW5zEg8KB29yaWdpbnMYASADKAkipwMKD0RvY3VtZW50U3VtbWFyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEcm9vdBgDIAEoCRIYChBhdHRhY2hlZF9jbGllbnRzGAcgASgFEikKDWRvY3VtZW50X3NpemUYCCABKAsyEi55b3JraWUudjEuRG9jU2l6ZRISCgpzY2hlbWFfa2V5GAkgASgJEjwKCXByZXNlbmNlcxgKIAMoCzIpLnlvcmtpZS52MS5Eb2N1bWVudFN1bW1hcnkuUHJlc2VuY2VzRW50cnkSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLYWNjZXNzZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGkUKDlByZXNlbmNlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZToCOAEi2gEKDlByZXNlbmNlQ2hhbmdlEjIKBHR5cGUYASABKA4yJC55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UuQ2hhbmdlVHlwZRIlCghwcmVzZW5jZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZSJtCgpDaGFuZ2VUeXBlEhsKF0NIQU5HRV9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPQ0hBTkdFX1RZUEVfUFVUEAESFgoSQ0hBTkdFX1RZUEVfREVMRVRFEAISFQoRQ0hBTkdFX1RZUEVfQ0xFQVIQAyJkCghQcmVzZW5jZRIrCgRkYXRhGAEgAygLMh0ueW9ya2llLnYxLlByZXNlbmNlLkRhdGFFbnRyeRorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI0Cg5DaGFubmVsU3VtbWFyeRILCgNrZXkYASABKAkSFQoNc2Vzc2lvbl9jb3VudBgCIAEoBSI0CgpDaGVja3BvaW50EhIKCnNlcnZlcl9zZXEYASABKAMSEgoKY2xpZW50X3NlcRgCIAEoDSJhCgtUZXh0Tm9kZVBvcxIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFEhcKD3JlbGF0aXZlX29mZnNldBgDIAEoBSJCCgpUaW1lVGlja2V0Eg8KB2xhbXBvcnQYASABKAMSEQoJZGVsaW1pdGVyGAIgASgNEhAKCGFjdG9yX2lkGAMgASgMIi4KDERvY0V2ZW50Qm9keRINCgV0b3BpYxgBIAEoCRIPCgdwYXlsb2FkGAIgASgMImsKCERvY0V2ZW50EiUKBHR5cGUYASABKA4yFy55b3JraWUudjEuRG9jRXZlbnRUeXBlEhEKCXB1Ymxpc2hlchgCIAEoCRIlCgRib2R5GAMgASgLMhcueW9ya2llLnYxLkRvY0V2ZW50Qm9keSLWAQoMQ2hhbm5lbEV2ZW50EioKBHR5cGUYASABKA4yHC55b3JraWUudjEuQ2hhbm5lbEV2ZW50LlR5cGUSEQoJcHVibGlzaGVyGAIgASgJEhUKDXNlc3Npb25fY291bnQYAyABKAMSCwoDc2VxGAQgASgDEg0KBXRvcGljGAUgASgJEg8KB3BheWxvYWQYBiABKAwiQwoEVHlwZRIUChBUWVBFX1VOU1BFQ0lGSUVEEAASEQoNVFlQRV9QUkVTRU5DRRABEhIKDlRZUEVfQlJPQURDQVNUEAIiJgoIRGF0YVNpemUSDAoEZGF0YRgBIAEoBRIMCgRtZXRhGAIgASgFIk0KB0RvY1NpemUSIQoEbGl2ZRgBIAEoCzITLnlvcmtpZS52MS5EYXRhU2l6ZRIfCgJnYxgCIAEoCzITLnlvcmtpZS52MS5EYXRhU2l6ZSKRAQoGU2NoZW1hEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHdmVyc2lvbhgDIAEoBRIMCgRib2R5GAQgASgJEh4KBXJ1bGVzGAUgAygLMg8ueW9ya2llLnYxLlJ1bGUSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiIgoEUnVsZRIMCgRwYXRoGAEgASgJEgwKBHR5cGUYAiABKAkigwEKD1JldmlzaW9uU3VtbWFyeRIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIQCghzbmFwc2hvdBgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCrUAgoJVmFsdWVUeXBlEhMKD1ZBTFVFX1RZUEVfTlVMTBAAEhYKElZBTFVFX1RZUEVfQk9PTEVBThABEhYKElZBTFVFX1RZUEVfSU5URUdFUhACEhMKD1ZBTFVFX1RZUEVfTE9ORxADEhUKEVZBTFVFX1RZUEVfRE9VQkxFEAQSFQoRVkFMVUVfVFlQRV9TVFJJTkcQBRIUChBWQUxVRV9UWVBFX0JZVEVTEAYSEwoPVkFMVUVfVFlQRV9EQVRFEAcSGgoWVkFMVUVfVFlQRV9KU09OX09CSkVDVBAIEhkKFVZBTFVFX1RZUEVfSlNPTl9BUlJBWRAJEhMKD1ZBTFVFX1RZUEVfVEVYVBAKEhoKFlZBTFVFX1RZUEVfSU5URUdFUl9DTlQQCxIXChNWQUxVRV9UWVBFX0xPTkdfQ05UEAwSEwoPVkFMVUVfVFlQRV9UUkVFEA0qpgEKDERvY0V2ZW50VHlwZRIjCh9ET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9DSEFOR0VEEAASIwofRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfV0FUQ0hFRBABEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX1VOV0FUQ0hFRBACEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX0JST0FEQ0FTVBADQkUKEWRldi55b3JraWUuYXBpLnYxUAFaLmdpdGh1Yi5jb20veW9ya2llLXRlYW0veW9ya2llL2FwaS95b3JraWUvdjE7djFiBnByb3RvMw", [file_google_protobuf_timestamp, file_google_protobuf_wrappers]);
|
|
5398
|
+
const file_src_api_yorkie_v1_resources = /* @__PURE__ */ fileDesc("CiFzcmMvYXBpL3lvcmtpZS92MS9yZXNvdXJjZXMucHJvdG8SCXlvcmtpZS52MSKuAQoIU25hcHNob3QSJAoEcm9vdBgBIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudBI1CglwcmVzZW5jZXMYAiADKAsyIi55b3JraWUudjEuU25hcHNob3QuUHJlc2VuY2VzRW50cnkaRQoOUHJlc2VuY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlOgI4ASL7AQoKQ2hhbmdlUGFjaxIUCgxkb2N1bWVudF9rZXkYASABKAkSKQoKY2hlY2twb2ludBgCIAEoCzIVLnlvcmtpZS52MS5DaGVja3BvaW50EhAKCHNuYXBzaG90GAMgASgMEiIKB2NoYW5nZXMYBCADKAsyES55b3JraWUudjEuQ2hhbmdlEjAKEW1pbl9zeW5jZWRfdGlja2V0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSEgoKaXNfcmVtb3ZlZBgGIAEoCBIwCg52ZXJzaW9uX3ZlY3RvchgHIAEoCzIYLnlvcmtpZS52MS5WZXJzaW9uVmVjdG9yIpgBCgZDaGFuZ2USHwoCaWQYASABKAsyEy55b3JraWUudjEuQ2hhbmdlSUQSDwoHbWVzc2FnZRgCIAEoCRIoCgpvcGVyYXRpb25zGAMgAygLMhQueW9ya2llLnYxLk9wZXJhdGlvbhIyCg9wcmVzZW5jZV9jaGFuZ2UYBCABKAsyGS55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UihwEKCENoYW5nZUlEEhIKCmNsaWVudF9zZXEYASABKA0SEgoKc2VydmVyX3NlcRgCIAEoAxIPCgdsYW1wb3J0GAMgASgDEhAKCGFjdG9yX2lkGAQgASgMEjAKDnZlcnNpb25fdmVjdG9yGAUgASgLMhgueW9ya2llLnYxLlZlcnNpb25WZWN0b3IidAoNVmVyc2lvblZlY3RvchI0CgZ2ZWN0b3IYASADKAsyJC55b3JraWUudjEuVmVyc2lvblZlY3Rvci5WZWN0b3JFbnRyeRotCgtWZWN0b3JFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBIsoaCglPcGVyYXRpb24SJwoDc2V0GAEgASgLMhgueW9ya2llLnYxLk9wZXJhdGlvbi5TZXRIABInCgNhZGQYAiABKAsyGC55b3JraWUudjEuT3BlcmF0aW9uLkFkZEgAEikKBG1vdmUYAyABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLk1vdmVIABItCgZyZW1vdmUYBCABKAsyGy55b3JraWUudjEuT3BlcmF0aW9uLlJlbW92ZUgAEikKBGVkaXQYBSABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLkVkaXRIABIrCgVzdHlsZRgHIAEoCzIaLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGVIABIxCghpbmNyZWFzZRgIIAEoCzIdLnlvcmtpZS52MS5PcGVyYXRpb24uSW5jcmVhc2VIABIyCgl0cmVlX2VkaXQYCSABKAsyHS55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0SAASNAoKdHJlZV9zdHlsZRgKIAEoCzIeLnlvcmtpZS52MS5PcGVyYXRpb24uVHJlZVN0eWxlSAASMgoJYXJyYXlfc2V0GAsgASgLMh0ueW9ya2llLnYxLk9wZXJhdGlvbi5BcnJheVNldEgAGp0BCgNTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBILCgNrZXkYAiABKAkSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrAAQoDQWRkEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSLgoPcHJldl9jcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq/AQoETW92ZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Ei4KD3ByZXZfY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCmNyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtleGVjdXRlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GpEBCgZSZW1vdmUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLZXhlY3V0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrZAwoERWRpdBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSUwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyMi55b3JraWUudjEuT3BlcmF0aW9uLkVkaXQuQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5Eg8KB2NvbnRlbnQYBSABKAkSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBI9CgphdHRyaWJ1dGVzGAcgAygLMikueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0LkF0dHJpYnV0ZXNFbnRyeRpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGukDCgVTdHlsZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSPgoKYXR0cmlidXRlcxgEIAMoCzIqLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSVAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBiADKAsyMy55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlLkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRIcChRhdHRyaWJ1dGVzX3RvX3JlbW92ZRgHIAMoCRoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGpUBCghJbmNyZWFzZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAIgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQakwMKCFRyZWVFZGl0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIAoEZnJvbRgCIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zEh4KAnRvGAMgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSVwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyNi55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0LkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRImCghjb250ZW50cxgFIAMoCzIULnlvcmtpZS52MS5UcmVlTm9kZXMSEwoLc3BsaXRfbGV2ZWwYByABKAUSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGu0DCglUcmVlU3R5bGUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIgCgRmcm9tGAIgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSHgoCdG8YAyABKAsyEi55b3JraWUudjEuVHJlZVBvcxJCCgphdHRyaWJ1dGVzGAQgAygLMi4ueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSHAoUYXR0cmlidXRlc190b19yZW1vdmUYBiADKAkSWAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYByADKAsyNy55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVTdHlsZS5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARrAAQoIQXJyYXlTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldEIGCgRib2R5IsUBChFKU09ORWxlbWVudFNpbXBsZRIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIgoEdHlwZRgEIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYBSABKAwiggsKC0pTT05FbGVtZW50EjgKC2pzb25fb2JqZWN0GAEgASgLMiEueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05PYmplY3RIABI2Cgpqc29uX2FycmF5GAIgASgLMiAueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05BcnJheUgAEjUKCXByaW1pdGl2ZRgDIAEoCzIgLnlvcmtpZS52MS5KU09ORWxlbWVudC5QcmltaXRpdmVIABIrCgR0ZXh0GAUgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRleHRIABIxCgdjb3VudGVyGAYgASgLMh4ueW9ya2llLnYxLkpTT05FbGVtZW50LkNvdW50ZXJIABIrCgR0cmVlGAcgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRyZWVIABquAQoKSlNPTk9iamVjdBIhCgVub2RlcxgBIAMoCzISLnlvcmtpZS52MS5SSFROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqtAQoJSlNPTkFycmF5EiEKBW5vZGVzGAEgAygLMhIueW9ya2llLnYxLlJHQU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Gr0BCglQcmltaXRpdmUSIgoEdHlwZRgBIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYAiABKAwSKQoKY3JlYXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GqkBCgRUZXh0EiIKBW5vZGVzGAEgAygLMhMueW9ya2llLnYxLlRleHROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq7AQoHQ291bnRlchIiCgR0eXBlGAEgASgOMhQueW9ya2llLnYxLlZhbHVlVHlwZRINCgV2YWx1ZRgCIAEoDBIpCgpjcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQaqQEKBFRyZWUSIgoFbm9kZXMYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0QgYKBGJvZHkiPwoHUkhUTm9kZRILCgNrZXkYASABKAkSJwoHZWxlbWVudBgCIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudCJUCgdSR0FOb2RlEiAKBG5leHQYASABKAsyEi55b3JraWUudjEuUkdBTm9kZRInCgdlbGVtZW50GAIgASgLMhYueW9ya2llLnYxLkpTT05FbGVtZW50IlgKCE5vZGVBdHRyEg0KBXZhbHVlGAEgASgJEikKCnVwZGF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBISCgppc19yZW1vdmVkGAMgASgIIpQCCghUZXh0Tm9kZRIhCgJpZBgBIAEoCzIVLnlvcmtpZS52MS5UZXh0Tm9kZUlEEg0KBXZhbHVlGAIgASgJEikKCnJlbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtpbnNfcHJldl9pZBgEIAEoCzIVLnlvcmtpZS52MS5UZXh0Tm9kZUlEEjcKCmF0dHJpYnV0ZXMYBSADKAsyIy55b3JraWUudjEuVGV4dE5vZGUuQXR0cmlidXRlc0VudHJ5GkYKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuTm9kZUF0dHI6AjgBIkcKClRleHROb2RlSUQSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBSLdAgoIVHJlZU5vZGUSIQoCaWQYASABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBIMCgR0eXBlGAIgASgJEg0KBXZhbHVlGAMgASgJEikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtpbnNfcHJldl9pZBgFIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEioKC2luc19uZXh0X2lkGAYgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSDQoFZGVwdGgYByABKAUSNwoKYXR0cmlidXRlcxgIIAMoCzIjLnlvcmtpZS52MS5UcmVlTm9kZS5BdHRyaWJ1dGVzRW50cnkaRgoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5Ob2RlQXR0cjoCOAEiMQoJVHJlZU5vZGVzEiQKB2NvbnRlbnQYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUiRwoKVHJlZU5vZGVJRBIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFImMKB1RyZWVQb3MSKAoJcGFyZW50X2lkGAEgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSLgoPbGVmdF9zaWJsaW5nX2lkGAIgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQiawoEVXNlchIKCgJpZBgBIAEoCRIVCg1hdXRoX3Byb3ZpZGVyGAIgASgJEhAKCHVzZXJuYW1lGAMgASgJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIokBCgZNZW1iZXISCgoCaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIPCgd1c2VyX2lkGAMgASgJEhAKCHVzZXJuYW1lGAQgASgJEgwKBHJvbGUYBSABKAkSLgoKaW52aXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi6QYKB1Byb2plY3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRISCgpwdWJsaWNfa2V5GAMgASgJEhIKCnNlY3JldF9rZXkYBCABKAkSGAoQYXV0aF93ZWJob29rX3VybBgFIAEoCRIcChRhdXRoX3dlYmhvb2tfbWV0aG9kcxgGIAMoCRIgChhhdXRoX3dlYmhvb2tfbWF4X3JldHJpZXMYESABKAQSJgoeYXV0aF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGBIgASgJEiYKHmF1dGhfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgTIAEoCRIkChxhdXRoX3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBQgASgJEhkKEWV2ZW50X3dlYmhvb2tfdXJsGAcgASgJEhwKFGV2ZW50X3dlYmhvb2tfZXZlbnRzGAggAygJEiEKGWV2ZW50X3dlYmhvb2tfbWF4X3JldHJpZXMYFSABKAQSJwofZXZlbnRfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgWIAEoCRInCh9ldmVudF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBcgASgJEiUKHWV2ZW50X3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBggASgJEiMKG2NsaWVudF9kZWFjdGl2YXRlX3RocmVzaG9sZBgJIAEoCRIaChJzbmFwc2hvdF90aHJlc2hvbGQYGSABKAMSGQoRc25hcHNob3RfaW50ZXJ2YWwYGiABKAMSJAocbWF4X3N1YnNjcmliZXJzX3Blcl9kb2N1bWVudBgKIAEoBRIkChxtYXhfYXR0YWNobWVudHNfcGVyX2RvY3VtZW50GAsgASgFEh0KFW1heF9zaXplX3Blcl9kb2N1bWVudBgPIAEoBRIYChByZW1vdmVfb25fZGV0YWNoGBAgASgIEh0KFWF1dG9fcmV2aXNpb25fZW5hYmxlZBgbIAEoCBIXCg9hbGxvd2VkX29yaWdpbnMYDiADKAkSLgoKY3JlYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoLTWV0cmljUG9pbnQSEQoJdGltZXN0YW1wGAEgASgDEg0KBXZhbHVlGAIgASgFIqMMChZVcGRhdGFibGVQcm9qZWN0RmllbGRzEioKBG5hbWUYASABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSNgoQYXV0aF93ZWJob29rX3VybBgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJSChRhdXRoX3dlYmhvb2tfbWV0aG9kcxgDIAEoCzI0LnlvcmtpZS52MS5VcGRhdGFibGVQcm9qZWN0RmllbGRzLkF1dGhXZWJob29rTWV0aG9kcxI+ChhhdXRoX3dlYmhvb2tfbWF4X3JldHJpZXMYDCABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSRAoeYXV0aF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGA0gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkQKHmF1dGhfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgOIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJCChxhdXRoX3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GA8gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEWV2ZW50X3dlYmhvb2tfdXJsGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlElIKFGV2ZW50X3dlYmhvb2tfZXZlbnRzGAUgASgLMjQueW9ya2llLnYxLlVwZGF0YWJsZVByb2plY3RGaWVsZHMuRXZlbnRXZWJob29rRXZlbnRzEj8KGWV2ZW50X3dlYmhvb2tfbWF4X3JldHJpZXMYECABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSRQofZXZlbnRfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgRIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJFCh9ldmVudF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkMKHWV2ZW50X3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEnNuYXBzaG90X3RocmVzaG9sZBgUIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEjYKEXNuYXBzaG90X2ludGVydmFsGBUgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWUSQQobY2xpZW50X2RlYWN0aXZhdGVfdGhyZXNob2xkGAYgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkEKHG1heF9zdWJzY3JpYmVyc19wZXJfZG9jdW1lbnQYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRJBChxtYXhfYXR0YWNobWVudHNfcGVyX2RvY3VtZW50GAggASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSOgoVbWF4X3NpemVfcGVyX2RvY3VtZW50GAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSNAoQcmVtb3ZlX29uX2RldGFjaBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSOQoVYXV0b19yZXZpc2lvbl9lbmFibGVkGBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZRJJCg9hbGxvd2VkX29yaWdpbnMYCSABKAsyMC55b3JraWUudjEuVXBkYXRhYmxlUHJvamVjdEZpZWxkcy5BbGxvd2VkT3JpZ2lucxolChJBdXRoV2ViaG9va01ldGhvZHMSDwoHbWV0aG9kcxgBIAMoCRokChJFdmVudFdlYmhvb2tFdmVudHMSDgoGZXZlbnRzGAEgAygJGiEKDkFsbG93ZWRPcmlnaW5zEg8KB29yaWdpbnMYASADKAkipwMKD0RvY3VtZW50U3VtbWFyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEcm9vdBgDIAEoCRIYChBhdHRhY2hlZF9jbGllbnRzGAcgASgFEikKDWRvY3VtZW50X3NpemUYCCABKAsyEi55b3JraWUudjEuRG9jU2l6ZRISCgpzY2hlbWFfa2V5GAkgASgJEjwKCXByZXNlbmNlcxgKIAMoCzIpLnlvcmtpZS52MS5Eb2N1bWVudFN1bW1hcnkuUHJlc2VuY2VzRW50cnkSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLYWNjZXNzZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGkUKDlByZXNlbmNlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZToCOAEi2gEKDlByZXNlbmNlQ2hhbmdlEjIKBHR5cGUYASABKA4yJC55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UuQ2hhbmdlVHlwZRIlCghwcmVzZW5jZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZSJtCgpDaGFuZ2VUeXBlEhsKF0NIQU5HRV9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPQ0hBTkdFX1RZUEVfUFVUEAESFgoSQ0hBTkdFX1RZUEVfREVMRVRFEAISFQoRQ0hBTkdFX1RZUEVfQ0xFQVIQAyJkCghQcmVzZW5jZRIrCgRkYXRhGAEgAygLMh0ueW9ya2llLnYxLlByZXNlbmNlLkRhdGFFbnRyeRorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI0Cg5DaGFubmVsU3VtbWFyeRILCgNrZXkYASABKAkSFQoNc2Vzc2lvbl9jb3VudBgCIAEoBSI0CgpDaGVja3BvaW50EhIKCnNlcnZlcl9zZXEYASABKAMSEgoKY2xpZW50X3NlcRgCIAEoDSJhCgtUZXh0Tm9kZVBvcxIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFEhcKD3JlbGF0aXZlX29mZnNldBgDIAEoBSJCCgpUaW1lVGlja2V0Eg8KB2xhbXBvcnQYASABKAMSEQoJZGVsaW1pdGVyGAIgASgNEhAKCGFjdG9yX2lkGAMgASgMIi4KDERvY0V2ZW50Qm9keRINCgV0b3BpYxgBIAEoCRIPCgdwYXlsb2FkGAIgASgMImsKCERvY0V2ZW50EiUKBHR5cGUYASABKA4yFy55b3JraWUudjEuRG9jRXZlbnRUeXBlEhEKCXB1Ymxpc2hlchgCIAEoCRIlCgRib2R5GAMgASgLMhcueW9ya2llLnYxLkRvY0V2ZW50Qm9keSLWAQoMQ2hhbm5lbEV2ZW50EioKBHR5cGUYASABKA4yHC55b3JraWUudjEuQ2hhbm5lbEV2ZW50LlR5cGUSEQoJcHVibGlzaGVyGAIgASgJEhUKDXNlc3Npb25fY291bnQYAyABKAMSCwoDc2VxGAQgASgDEg0KBXRvcGljGAUgASgJEg8KB3BheWxvYWQYBiABKAwiQwoEVHlwZRIUChBUWVBFX1VOU1BFQ0lGSUVEEAASEQoNVFlQRV9QUkVTRU5DRRABEhIKDlRZUEVfQlJPQURDQVNUEAIiJgoIRGF0YVNpemUSDAoEZGF0YRgBIAEoBRIMCgRtZXRhGAIgASgFIk0KB0RvY1NpemUSIQoEbGl2ZRgBIAEoCzITLnlvcmtpZS52MS5EYXRhU2l6ZRIfCgJnYxgCIAEoCzITLnlvcmtpZS52MS5EYXRhU2l6ZSKRAQoGU2NoZW1hEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHdmVyc2lvbhgDIAEoBRIMCgRib2R5GAQgASgJEh4KBXJ1bGVzGAUgAygLMg8ueW9ya2llLnYxLlJ1bGUSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiIgoEUnVsZRIMCgRwYXRoGAEgASgJEgwKBHR5cGUYAiABKAkigwEKD1JldmlzaW9uU3VtbWFyeRIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIQCghzbmFwc2hvdBgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCrUAgoJVmFsdWVUeXBlEhMKD1ZBTFVFX1RZUEVfTlVMTBAAEhYKElZBTFVFX1RZUEVfQk9PTEVBThABEhYKElZBTFVFX1RZUEVfSU5URUdFUhACEhMKD1ZBTFVFX1RZUEVfTE9ORxADEhUKEVZBTFVFX1RZUEVfRE9VQkxFEAQSFQoRVkFMVUVfVFlQRV9TVFJJTkcQBRIUChBWQUxVRV9UWVBFX0JZVEVTEAYSEwoPVkFMVUVfVFlQRV9EQVRFEAcSGgoWVkFMVUVfVFlQRV9KU09OX09CSkVDVBAIEhkKFVZBTFVFX1RZUEVfSlNPTl9BUlJBWRAJEhMKD1ZBTFVFX1RZUEVfVEVYVBAKEhoKFlZBTFVFX1RZUEVfSU5URUdFUl9DTlQQCxIXChNWQUxVRV9UWVBFX0xPTkdfQ05UEAwSEwoPVkFMVUVfVFlQRV9UUkVFEA0qpgEKDERvY0V2ZW50VHlwZRIjCh9ET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9DSEFOR0VEEAASIwofRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfV0FUQ0hFRBABEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX1VOV0FUQ0hFRBACEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX0JST0FEQ0FTVBADQkUKEWRldi55b3JraWUuYXBpLnYxUAFaLmdpdGh1Yi5jb20veW9ya2llLXRlYW0veW9ya2llL2FwaS95b3JraWUvdjE7djFiBnByb3RvMw", [file_google_protobuf_timestamp, file_google_protobuf_wrappers]);
|
|
5399
5399
|
const SnapshotSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 0);
|
|
5400
5400
|
const ChangePackSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 1);
|
|
5401
5401
|
const ChangeSchema = /* @__PURE__ */ messageDesc(file_src_api_yorkie_v1_resources, 2);
|
|
@@ -10334,11 +10334,25 @@ class CRDTText extends CRDTElement {
|
|
|
10334
10334
|
toBeStyleds.push(node);
|
|
10335
10335
|
}
|
|
10336
10336
|
}
|
|
10337
|
+
const prevAttributes = /* @__PURE__ */ new Map();
|
|
10338
|
+
const attributesToRemove = [];
|
|
10339
|
+
let capturedPrev = false;
|
|
10337
10340
|
const pairs = [];
|
|
10338
10341
|
for (const node of toBeStyleds) {
|
|
10339
10342
|
if (node.isRemoved()) {
|
|
10340
10343
|
continue;
|
|
10341
10344
|
}
|
|
10345
|
+
if (!capturedPrev) {
|
|
10346
|
+
for (const key of Object.keys(attributes)) {
|
|
10347
|
+
const attrs = node.getValue().getAttrs();
|
|
10348
|
+
if (attrs.has(key)) {
|
|
10349
|
+
prevAttributes.set(key, attrs.get(key));
|
|
10350
|
+
} else {
|
|
10351
|
+
attributesToRemove.push(key);
|
|
10352
|
+
}
|
|
10353
|
+
}
|
|
10354
|
+
capturedPrev = true;
|
|
10355
|
+
}
|
|
10342
10356
|
const [fromIdx, toIdx] = this.rgaTreeSplit.findIndexesFromRange(
|
|
10343
10357
|
node.createPosRange()
|
|
10344
10358
|
);
|
|
@@ -10362,7 +10376,77 @@ class CRDTText extends CRDTElement {
|
|
|
10362
10376
|
}
|
|
10363
10377
|
}
|
|
10364
10378
|
}
|
|
10365
|
-
return [pairs, diff, changes];
|
|
10379
|
+
return [pairs, diff, changes, prevAttributes, attributesToRemove];
|
|
10380
|
+
}
|
|
10381
|
+
/**
|
|
10382
|
+
* `removeStyle` removes the style attributes of the given range.
|
|
10383
|
+
* Returns previous attribute values (from first styled node) for reverse operation.
|
|
10384
|
+
*/
|
|
10385
|
+
removeStyle(range, attributesToRemove, editedAt, versionVector) {
|
|
10386
|
+
const diff = { data: 0, meta: 0 };
|
|
10387
|
+
const [, diffTo, toRight] = this.rgaTreeSplit.findNodeWithSplit(
|
|
10388
|
+
range[1],
|
|
10389
|
+
editedAt
|
|
10390
|
+
);
|
|
10391
|
+
const [, diffFrom, fromRight] = this.rgaTreeSplit.findNodeWithSplit(
|
|
10392
|
+
range[0],
|
|
10393
|
+
editedAt
|
|
10394
|
+
);
|
|
10395
|
+
addDataSizes(diff, diffTo, diffFrom);
|
|
10396
|
+
const changes = [];
|
|
10397
|
+
const nodes = this.rgaTreeSplit.findBetween(fromRight, toRight);
|
|
10398
|
+
const toBeStyleds = [];
|
|
10399
|
+
for (const node of nodes) {
|
|
10400
|
+
const actorID = node.getCreatedAt().getActorID();
|
|
10401
|
+
let clientLamportAtChange = MaxLamport;
|
|
10402
|
+
if (versionVector != void 0) {
|
|
10403
|
+
clientLamportAtChange = versionVector.get(actorID) ? versionVector.get(actorID) : 0n;
|
|
10404
|
+
}
|
|
10405
|
+
if (node.canStyle(editedAt, clientLamportAtChange)) {
|
|
10406
|
+
toBeStyleds.push(node);
|
|
10407
|
+
}
|
|
10408
|
+
}
|
|
10409
|
+
const prevAttributes = /* @__PURE__ */ new Map();
|
|
10410
|
+
let capturedPrev = false;
|
|
10411
|
+
const pairs = [];
|
|
10412
|
+
for (const node of toBeStyleds) {
|
|
10413
|
+
if (node.isRemoved()) {
|
|
10414
|
+
continue;
|
|
10415
|
+
}
|
|
10416
|
+
if (!capturedPrev) {
|
|
10417
|
+
for (const key of attributesToRemove) {
|
|
10418
|
+
const attrs = node.getValue().getAttrs();
|
|
10419
|
+
if (attrs.has(key)) {
|
|
10420
|
+
prevAttributes.set(key, attrs.get(key));
|
|
10421
|
+
}
|
|
10422
|
+
}
|
|
10423
|
+
capturedPrev = true;
|
|
10424
|
+
}
|
|
10425
|
+
const [fromIdx, toIdx] = this.rgaTreeSplit.findIndexesFromRange(
|
|
10426
|
+
node.createPosRange()
|
|
10427
|
+
);
|
|
10428
|
+
const removedAttributes = {};
|
|
10429
|
+
for (const key of attributesToRemove) {
|
|
10430
|
+
removedAttributes[key] = null;
|
|
10431
|
+
}
|
|
10432
|
+
changes.push({
|
|
10433
|
+
type: "style",
|
|
10434
|
+
actor: editedAt.getActorID(),
|
|
10435
|
+
from: fromIdx,
|
|
10436
|
+
to: toIdx,
|
|
10437
|
+
value: {
|
|
10438
|
+
attributes: removedAttributes
|
|
10439
|
+
}
|
|
10440
|
+
});
|
|
10441
|
+
for (const key of attributesToRemove) {
|
|
10442
|
+
const gcNodes = node.getValue().getAttrs().remove(key, editedAt);
|
|
10443
|
+
for (const rhtNode of gcNodes) {
|
|
10444
|
+
pairs.push({ parent: node.getValue(), child: rhtNode });
|
|
10445
|
+
addDataSizes(diff, rhtNode.getDataSize());
|
|
10446
|
+
}
|
|
10447
|
+
}
|
|
10448
|
+
}
|
|
10449
|
+
return [pairs, diff, changes, prevAttributes];
|
|
10366
10450
|
}
|
|
10367
10451
|
/**
|
|
10368
10452
|
* `indexRangeToPosRange` returns the position range of the given index range.
|
|
@@ -10746,11 +10830,13 @@ class StyleOperation extends Operation {
|
|
|
10746
10830
|
fromPos;
|
|
10747
10831
|
toPos;
|
|
10748
10832
|
attributes;
|
|
10749
|
-
|
|
10833
|
+
attributesToRemove;
|
|
10834
|
+
constructor(parentCreatedAt, fromPos, toPos, attributes, attributesToRemove, executedAt) {
|
|
10750
10835
|
super(parentCreatedAt, executedAt);
|
|
10751
10836
|
this.fromPos = fromPos;
|
|
10752
10837
|
this.toPos = toPos;
|
|
10753
10838
|
this.attributes = attributes;
|
|
10839
|
+
this.attributesToRemove = attributesToRemove;
|
|
10754
10840
|
}
|
|
10755
10841
|
/**
|
|
10756
10842
|
* `create` creates a new instance of StyleOperation.
|
|
@@ -10761,6 +10847,20 @@ class StyleOperation extends Operation {
|
|
|
10761
10847
|
fromPos,
|
|
10762
10848
|
toPos,
|
|
10763
10849
|
attributes,
|
|
10850
|
+
[],
|
|
10851
|
+
executedAt
|
|
10852
|
+
);
|
|
10853
|
+
}
|
|
10854
|
+
/**
|
|
10855
|
+
* `createRemoveStyleOperation` creates a new instance of StyleOperation for style removal.
|
|
10856
|
+
*/
|
|
10857
|
+
static createRemoveStyleOperation(parentCreatedAt, fromPos, toPos, attributesToRemove, executedAt) {
|
|
10858
|
+
return new StyleOperation(
|
|
10859
|
+
parentCreatedAt,
|
|
10860
|
+
fromPos,
|
|
10861
|
+
toPos,
|
|
10862
|
+
/* @__PURE__ */ new Map(),
|
|
10863
|
+
attributesToRemove,
|
|
10764
10864
|
executedAt
|
|
10765
10865
|
);
|
|
10766
10866
|
}
|
|
@@ -10782,18 +10882,78 @@ class StyleOperation extends Operation {
|
|
|
10782
10882
|
);
|
|
10783
10883
|
}
|
|
10784
10884
|
const text = parentObject;
|
|
10785
|
-
const
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
)
|
|
10791
|
-
|
|
10792
|
-
|
|
10885
|
+
const allPairs = [];
|
|
10886
|
+
const allChanges = [];
|
|
10887
|
+
let allDiff = { data: 0, meta: 0 };
|
|
10888
|
+
const reversePrevAttributes = /* @__PURE__ */ new Map();
|
|
10889
|
+
const reverseAttrsToRemove = [];
|
|
10890
|
+
if (this.attributesToRemove.length > 0) {
|
|
10891
|
+
const [pairs, diff, changes, prevAttributes] = text.removeStyle(
|
|
10892
|
+
[this.fromPos, this.toPos],
|
|
10893
|
+
this.attributesToRemove,
|
|
10894
|
+
this.getExecutedAt(),
|
|
10895
|
+
versionVector
|
|
10896
|
+
);
|
|
10897
|
+
allDiff = {
|
|
10898
|
+
data: allDiff.data + diff.data,
|
|
10899
|
+
meta: allDiff.meta + diff.meta
|
|
10900
|
+
};
|
|
10901
|
+
allPairs.push(...pairs);
|
|
10902
|
+
allChanges.push(...changes);
|
|
10903
|
+
for (const [key, value] of prevAttributes) {
|
|
10904
|
+
reversePrevAttributes.set(key, value);
|
|
10905
|
+
}
|
|
10906
|
+
}
|
|
10907
|
+
if (this.attributes.size > 0) {
|
|
10908
|
+
const [pairs, diff, changes, prevAttributes, attrsToRemove] = text.setStyle(
|
|
10909
|
+
[this.fromPos, this.toPos],
|
|
10910
|
+
Object.fromEntries(this.attributes),
|
|
10911
|
+
this.getExecutedAt(),
|
|
10912
|
+
versionVector
|
|
10913
|
+
);
|
|
10914
|
+
allDiff = {
|
|
10915
|
+
data: allDiff.data + diff.data,
|
|
10916
|
+
meta: allDiff.meta + diff.meta
|
|
10917
|
+
};
|
|
10918
|
+
allPairs.push(...pairs);
|
|
10919
|
+
allChanges.push(...changes);
|
|
10920
|
+
for (const [key, value] of prevAttributes) {
|
|
10921
|
+
reversePrevAttributes.set(key, value);
|
|
10922
|
+
}
|
|
10923
|
+
reverseAttrsToRemove.push(...attrsToRemove);
|
|
10924
|
+
}
|
|
10925
|
+
root.acc(allDiff);
|
|
10926
|
+
for (const pair of allPairs) {
|
|
10793
10927
|
root.registerGCPair(pair);
|
|
10794
10928
|
}
|
|
10929
|
+
let reverseOp;
|
|
10930
|
+
if (reversePrevAttributes.size > 0 || reverseAttrsToRemove.length > 0) {
|
|
10931
|
+
if (reversePrevAttributes.size > 0 && reverseAttrsToRemove.length > 0) {
|
|
10932
|
+
reverseOp = new StyleOperation(
|
|
10933
|
+
this.getParentCreatedAt(),
|
|
10934
|
+
this.fromPos,
|
|
10935
|
+
this.toPos,
|
|
10936
|
+
reversePrevAttributes,
|
|
10937
|
+
reverseAttrsToRemove
|
|
10938
|
+
);
|
|
10939
|
+
} else if (reverseAttrsToRemove.length > 0) {
|
|
10940
|
+
reverseOp = StyleOperation.createRemoveStyleOperation(
|
|
10941
|
+
this.getParentCreatedAt(),
|
|
10942
|
+
this.fromPos,
|
|
10943
|
+
this.toPos,
|
|
10944
|
+
reverseAttrsToRemove
|
|
10945
|
+
);
|
|
10946
|
+
} else {
|
|
10947
|
+
reverseOp = StyleOperation.create(
|
|
10948
|
+
this.getParentCreatedAt(),
|
|
10949
|
+
this.fromPos,
|
|
10950
|
+
this.toPos,
|
|
10951
|
+
reversePrevAttributes
|
|
10952
|
+
);
|
|
10953
|
+
}
|
|
10954
|
+
}
|
|
10795
10955
|
return {
|
|
10796
|
-
opInfos:
|
|
10956
|
+
opInfos: allChanges.map(({ from, to, value }) => {
|
|
10797
10957
|
return {
|
|
10798
10958
|
type: "style",
|
|
10799
10959
|
from,
|
|
@@ -10801,7 +10961,8 @@ class StyleOperation extends Operation {
|
|
|
10801
10961
|
value,
|
|
10802
10962
|
path: root.createPath(this.getParentCreatedAt())
|
|
10803
10963
|
};
|
|
10804
|
-
})
|
|
10964
|
+
}),
|
|
10965
|
+
reverseOp
|
|
10805
10966
|
};
|
|
10806
10967
|
}
|
|
10807
10968
|
/**
|
|
@@ -10838,6 +10999,12 @@ class StyleOperation extends Operation {
|
|
|
10838
10999
|
getAttributes() {
|
|
10839
11000
|
return this.attributes;
|
|
10840
11001
|
}
|
|
11002
|
+
/**
|
|
11003
|
+
* `getAttributesToRemove` returns the attributes to remove.
|
|
11004
|
+
*/
|
|
11005
|
+
getAttributesToRemove() {
|
|
11006
|
+
return this.attributesToRemove;
|
|
11007
|
+
}
|
|
10841
11008
|
}
|
|
10842
11009
|
const ElementPaddingSize = 2;
|
|
10843
11010
|
const DefaultRootType = "root";
|
|
@@ -12330,7 +12497,7 @@ class CRDTTree extends CRDTElement {
|
|
|
12330
12497
|
}
|
|
12331
12498
|
}
|
|
12332
12499
|
}
|
|
12333
|
-
return [changes, pairs, diff];
|
|
12500
|
+
return [changes, pairs, diff, nodesToBeRemoved, fromIdx];
|
|
12334
12501
|
}
|
|
12335
12502
|
/**
|
|
12336
12503
|
* `editT` edits the given range with the given value.
|
|
@@ -12768,29 +12935,46 @@ class CRDTTree extends CRDTElement {
|
|
|
12768
12935
|
return [prev, prev.isText ? TokenType.Text : TokenType.End];
|
|
12769
12936
|
}
|
|
12770
12937
|
}
|
|
12938
|
+
function clearRemovedAt(node) {
|
|
12939
|
+
traverseAll(node, (n) => {
|
|
12940
|
+
n.removedAt = void 0;
|
|
12941
|
+
n.visibleSize = n.totalSize;
|
|
12942
|
+
});
|
|
12943
|
+
}
|
|
12771
12944
|
class TreeEditOperation extends Operation {
|
|
12772
12945
|
fromPos;
|
|
12773
12946
|
toPos;
|
|
12774
12947
|
contents;
|
|
12775
12948
|
splitLevel;
|
|
12776
|
-
|
|
12949
|
+
isUndoOp;
|
|
12950
|
+
fromIdx;
|
|
12951
|
+
toIdx;
|
|
12952
|
+
lastFromIdx;
|
|
12953
|
+
lastToIdx;
|
|
12954
|
+
constructor(parentCreatedAt, fromPos, toPos, contents, splitLevel, executedAt, isUndoOp, fromIdx, toIdx) {
|
|
12777
12955
|
super(parentCreatedAt, executedAt);
|
|
12778
12956
|
this.fromPos = fromPos;
|
|
12779
12957
|
this.toPos = toPos;
|
|
12780
12958
|
this.contents = contents;
|
|
12781
12959
|
this.splitLevel = splitLevel;
|
|
12960
|
+
this.isUndoOp = isUndoOp;
|
|
12961
|
+
this.fromIdx = fromIdx;
|
|
12962
|
+
this.toIdx = toIdx;
|
|
12782
12963
|
}
|
|
12783
12964
|
/**
|
|
12784
12965
|
* `create` creates a new instance of EditOperation.
|
|
12785
12966
|
*/
|
|
12786
|
-
static create(parentCreatedAt, fromPos, toPos, contents, splitLevel, executedAt) {
|
|
12967
|
+
static create(parentCreatedAt, fromPos, toPos, contents, splitLevel, executedAt, isUndoOp, fromIdx, toIdx) {
|
|
12787
12968
|
return new TreeEditOperation(
|
|
12788
12969
|
parentCreatedAt,
|
|
12789
12970
|
fromPos,
|
|
12790
12971
|
toPos,
|
|
12791
12972
|
contents,
|
|
12792
12973
|
splitLevel,
|
|
12793
|
-
executedAt
|
|
12974
|
+
executedAt,
|
|
12975
|
+
isUndoOp,
|
|
12976
|
+
fromIdx,
|
|
12977
|
+
toIdx
|
|
12794
12978
|
);
|
|
12795
12979
|
}
|
|
12796
12980
|
/**
|
|
@@ -12812,7 +12996,15 @@ class TreeEditOperation extends Operation {
|
|
|
12812
12996
|
}
|
|
12813
12997
|
const editedAt = this.getExecutedAt();
|
|
12814
12998
|
const tree = parentObject;
|
|
12815
|
-
|
|
12999
|
+
if (this.isUndoOp && this.fromIdx !== void 0 && this.toIdx !== void 0) {
|
|
13000
|
+
this.fromPos = tree.findPos(this.fromIdx);
|
|
13001
|
+
if (this.fromIdx === this.toIdx) {
|
|
13002
|
+
this.toPos = this.fromPos;
|
|
13003
|
+
} else {
|
|
13004
|
+
this.toPos = tree.findPos(this.toIdx);
|
|
13005
|
+
}
|
|
13006
|
+
}
|
|
13007
|
+
const [changes, pairs, diff, removedNodes, preEditFromIdx] = tree.edit(
|
|
12816
13008
|
[this.fromPos, this.toPos],
|
|
12817
13009
|
this.contents?.map((content) => content.deepcopy()),
|
|
12818
13010
|
this.splitLevel,
|
|
@@ -12838,6 +13030,13 @@ class TreeEditOperation extends Operation {
|
|
|
12838
13030
|
})(),
|
|
12839
13031
|
versionVector
|
|
12840
13032
|
);
|
|
13033
|
+
this.lastFromIdx = preEditFromIdx;
|
|
13034
|
+
const removedSize = removedNodes.reduce(
|
|
13035
|
+
(sum, node) => sum + node.paddedSize(),
|
|
13036
|
+
0
|
|
13037
|
+
);
|
|
13038
|
+
this.lastToIdx = preEditFromIdx + removedSize;
|
|
13039
|
+
const reverseOp = this.splitLevel === 0 ? this.toReverseOperation(tree, removedNodes, preEditFromIdx) : void 0;
|
|
12841
13040
|
root.acc(diff);
|
|
12842
13041
|
for (const pair of pairs) {
|
|
12843
13042
|
root.registerGCPair(pair);
|
|
@@ -12856,9 +13055,131 @@ class TreeEditOperation extends Operation {
|
|
|
12856
13055
|
toPath
|
|
12857
13056
|
};
|
|
12858
13057
|
}
|
|
12859
|
-
)
|
|
13058
|
+
),
|
|
13059
|
+
reverseOp
|
|
12860
13060
|
};
|
|
12861
13061
|
}
|
|
13062
|
+
/**
|
|
13063
|
+
* `toReverseOperation` creates the reverse operation for undo.
|
|
13064
|
+
*
|
|
13065
|
+
* The reverse op stores both CRDTTreePos (for initial use) and integer
|
|
13066
|
+
* indices (for reconciliation adjustment when remote edits arrive).
|
|
13067
|
+
* At undo execution time, the integer indices take precedence and are
|
|
13068
|
+
* converted to CRDTTreePos via tree.findPos().
|
|
13069
|
+
*
|
|
13070
|
+
* @param tree - The CRDTTree after the edit has been applied
|
|
13071
|
+
* @param removedNodes - Nodes that were removed by this edit
|
|
13072
|
+
* @param preEditFromIdx - The from index captured BEFORE the edit
|
|
13073
|
+
*/
|
|
13074
|
+
toReverseOperation(tree, removedNodes, preEditFromIdx) {
|
|
13075
|
+
const insertedContentSize = this.contents ? this.contents.reduce((sum, node) => sum + node.paddedSize(), 0) : 0;
|
|
13076
|
+
const maxNeededIdx = preEditFromIdx + insertedContentSize;
|
|
13077
|
+
if (maxNeededIdx > tree.getSize()) {
|
|
13078
|
+
return void 0;
|
|
13079
|
+
}
|
|
13080
|
+
const topLevelRemoved = removedNodes.filter(
|
|
13081
|
+
(node) => !node.parent || !removedNodes.includes(node.parent)
|
|
13082
|
+
);
|
|
13083
|
+
const reverseContents = topLevelRemoved.length > 0 ? topLevelRemoved.map((n) => {
|
|
13084
|
+
const clone = n.deepcopy();
|
|
13085
|
+
clearRemovedAt(clone);
|
|
13086
|
+
return clone;
|
|
13087
|
+
}) : void 0;
|
|
13088
|
+
const reverseFromPos = tree.findPos(preEditFromIdx);
|
|
13089
|
+
let reverseToPos;
|
|
13090
|
+
if (insertedContentSize > 0) {
|
|
13091
|
+
reverseToPos = tree.findPos(preEditFromIdx + insertedContentSize);
|
|
13092
|
+
} else {
|
|
13093
|
+
reverseToPos = reverseFromPos;
|
|
13094
|
+
}
|
|
13095
|
+
const reverseFromIdx = preEditFromIdx;
|
|
13096
|
+
const reverseToIdx = preEditFromIdx + insertedContentSize;
|
|
13097
|
+
return TreeEditOperation.create(
|
|
13098
|
+
this.getParentCreatedAt(),
|
|
13099
|
+
reverseFromPos,
|
|
13100
|
+
reverseToPos,
|
|
13101
|
+
reverseContents,
|
|
13102
|
+
0,
|
|
13103
|
+
// splitLevel always 0
|
|
13104
|
+
void 0,
|
|
13105
|
+
// executedAt set during undo
|
|
13106
|
+
true,
|
|
13107
|
+
// isUndoOp
|
|
13108
|
+
reverseFromIdx,
|
|
13109
|
+
reverseToIdx
|
|
13110
|
+
);
|
|
13111
|
+
}
|
|
13112
|
+
/**
|
|
13113
|
+
* `normalizePos` returns the visible-index range of this operation.
|
|
13114
|
+
* For undo ops, returns the stored (possibly reconciled) indices.
|
|
13115
|
+
* For forward ops, returns the pre-edit indices captured during execute().
|
|
13116
|
+
*/
|
|
13117
|
+
normalizePos() {
|
|
13118
|
+
if (this.isUndoOp && this.fromIdx !== void 0 && this.toIdx !== void 0) {
|
|
13119
|
+
return [this.fromIdx, this.toIdx];
|
|
13120
|
+
}
|
|
13121
|
+
if (this.lastFromIdx !== void 0 && this.lastToIdx !== void 0) {
|
|
13122
|
+
return [this.lastFromIdx, this.lastToIdx];
|
|
13123
|
+
}
|
|
13124
|
+
return [0, 0];
|
|
13125
|
+
}
|
|
13126
|
+
/**
|
|
13127
|
+
* `reconcileOperation` adjusts this undo operation's integer indices
|
|
13128
|
+
* when a remote edit modifies the same tree. Uses the same 6-case
|
|
13129
|
+
* overlap logic as EditOperation.reconcileOperation for Text.
|
|
13130
|
+
*/
|
|
13131
|
+
reconcileOperation(remoteFrom, remoteTo, contentLen) {
|
|
13132
|
+
if (!this.isUndoOp) {
|
|
13133
|
+
return;
|
|
13134
|
+
}
|
|
13135
|
+
if (this.fromIdx === void 0 || this.toIdx === void 0) {
|
|
13136
|
+
return;
|
|
13137
|
+
}
|
|
13138
|
+
if (remoteFrom > remoteTo) {
|
|
13139
|
+
return;
|
|
13140
|
+
}
|
|
13141
|
+
const remoteRangeLen = remoteTo - remoteFrom;
|
|
13142
|
+
const localFrom = this.fromIdx;
|
|
13143
|
+
const localTo = this.toIdx;
|
|
13144
|
+
const apply = (na, nb) => {
|
|
13145
|
+
this.fromIdx = Math.max(0, na);
|
|
13146
|
+
this.toIdx = Math.max(0, nb);
|
|
13147
|
+
};
|
|
13148
|
+
if (remoteTo <= localFrom) {
|
|
13149
|
+
apply(
|
|
13150
|
+
localFrom - remoteRangeLen + contentLen,
|
|
13151
|
+
localTo - remoteRangeLen + contentLen
|
|
13152
|
+
);
|
|
13153
|
+
return;
|
|
13154
|
+
}
|
|
13155
|
+
if (localTo <= remoteFrom) {
|
|
13156
|
+
return;
|
|
13157
|
+
}
|
|
13158
|
+
if (remoteFrom <= localFrom && localTo <= remoteTo && remoteFrom !== remoteTo) {
|
|
13159
|
+
apply(remoteFrom, remoteFrom);
|
|
13160
|
+
return;
|
|
13161
|
+
}
|
|
13162
|
+
if (localFrom <= remoteFrom && remoteTo <= localTo && localFrom !== localTo) {
|
|
13163
|
+
apply(localFrom, localTo - remoteRangeLen + contentLen);
|
|
13164
|
+
return;
|
|
13165
|
+
}
|
|
13166
|
+
if (remoteFrom < localFrom && localFrom < remoteTo && remoteTo < localTo) {
|
|
13167
|
+
apply(remoteFrom, remoteFrom + (localTo - remoteTo));
|
|
13168
|
+
return;
|
|
13169
|
+
}
|
|
13170
|
+
if (localFrom < remoteFrom && remoteFrom < localTo && localTo < remoteTo) {
|
|
13171
|
+
apply(localFrom, remoteFrom);
|
|
13172
|
+
return;
|
|
13173
|
+
}
|
|
13174
|
+
}
|
|
13175
|
+
/**
|
|
13176
|
+
* `getContentSize` returns the total visible size of this operation's
|
|
13177
|
+
* content (for reconciliation).
|
|
13178
|
+
*/
|
|
13179
|
+
getContentSize() {
|
|
13180
|
+
if (!this.contents) return 0;
|
|
13181
|
+
return this.contents.reduce((sum, node) => sum + node.paddedSize(), 0);
|
|
13182
|
+
}
|
|
12862
13183
|
/**
|
|
12863
13184
|
* `getEffectedCreatedAt` returns the creation time of the effected element.
|
|
12864
13185
|
*/
|
|
@@ -14248,6 +14569,10 @@ function toOperation(operation) {
|
|
|
14248
14569
|
);
|
|
14249
14570
|
pbStyleOperation.from = toTextNodePos(styleOperation.getFromPos());
|
|
14250
14571
|
pbStyleOperation.to = toTextNodePos(styleOperation.getToPos());
|
|
14572
|
+
const attributesToRemove = styleOperation.getAttributesToRemove();
|
|
14573
|
+
if (attributesToRemove.length > 0) {
|
|
14574
|
+
pbStyleOperation.attributesToRemove = attributesToRemove;
|
|
14575
|
+
}
|
|
14251
14576
|
const pbAttributes = pbStyleOperation.attributes;
|
|
14252
14577
|
for (const [key, value] of styleOperation.getAttributes()) {
|
|
14253
14578
|
pbAttributes[key] = value;
|
|
@@ -14878,11 +15203,13 @@ function fromOperation(pbOperation) {
|
|
|
14878
15203
|
Object.entries(pbStyleOperation.attributes).forEach(([key, value]) => {
|
|
14879
15204
|
attributes.set(key, value);
|
|
14880
15205
|
});
|
|
14881
|
-
|
|
15206
|
+
const attributesToRemove = pbStyleOperation.attributesToRemove ?? [];
|
|
15207
|
+
return new StyleOperation(
|
|
14882
15208
|
fromTimeTicket(pbStyleOperation.parentCreatedAt),
|
|
14883
15209
|
fromTextNodePos(pbStyleOperation.from),
|
|
14884
15210
|
fromTextNodePos(pbStyleOperation.to),
|
|
14885
15211
|
attributes,
|
|
15212
|
+
attributesToRemove,
|
|
14886
15213
|
fromTimeTicket(pbStyleOperation.executedAt)
|
|
14887
15214
|
);
|
|
14888
15215
|
} else if (pbOperation.body.case === "increase") {
|
|
@@ -15850,6 +16177,8 @@ class ArrayProxy {
|
|
|
15850
16177
|
return target.length;
|
|
15851
16178
|
} else if (typeof method === "symbol" && method === Symbol.iterator) {
|
|
15852
16179
|
return ArrayProxy.iteratorInternal.bind(this, context, target);
|
|
16180
|
+
} else if (method === "elements") {
|
|
16181
|
+
return ArrayProxy.wrappedIteratorInternal.bind(this, context, target);
|
|
15853
16182
|
} else if (method === "includes") {
|
|
15854
16183
|
return (searchElement, fromIndex) => {
|
|
15855
16184
|
return ArrayProxy.includes(
|
|
@@ -15912,6 +16241,12 @@ class ArrayProxy {
|
|
|
15912
16241
|
}
|
|
15913
16242
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
15914
16243
|
static *iteratorInternal(change, target) {
|
|
16244
|
+
for (const elem of target) {
|
|
16245
|
+
yield toJSONElement(change, elem);
|
|
16246
|
+
}
|
|
16247
|
+
}
|
|
16248
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
16249
|
+
static *wrappedIteratorInternal(change, target) {
|
|
15915
16250
|
for (const elem of target) {
|
|
15916
16251
|
yield toWrappedElement(change, elem);
|
|
15917
16252
|
}
|
|
@@ -16358,7 +16693,7 @@ class Text {
|
|
|
16358
16693
|
this.context.registerGCPair(pair);
|
|
16359
16694
|
}
|
|
16360
16695
|
this.context.push(
|
|
16361
|
-
|
|
16696
|
+
StyleOperation.create(
|
|
16362
16697
|
this.text.getCreatedAt(),
|
|
16363
16698
|
range[0],
|
|
16364
16699
|
range[1],
|
|
@@ -17772,6 +18107,24 @@ class History {
|
|
|
17772
18107
|
replace(this.undoStack);
|
|
17773
18108
|
replace(this.redoStack);
|
|
17774
18109
|
}
|
|
18110
|
+
/**
|
|
18111
|
+
* `reconcileTreeEdit` reconciles the tree edit operation.
|
|
18112
|
+
* Scan both undo/redo stacks and adjust tree edit operations
|
|
18113
|
+
* when a remote edit modifies the same tree.
|
|
18114
|
+
*/
|
|
18115
|
+
reconcileTreeEdit(parentCreatedAt, rangeFrom, rangeTo, contentSize) {
|
|
18116
|
+
const replace = (stack) => {
|
|
18117
|
+
for (const ops of stack) {
|
|
18118
|
+
for (const op of ops) {
|
|
18119
|
+
if (op instanceof TreeEditOperation && op.getParentCreatedAt().compare(parentCreatedAt) === 0) {
|
|
18120
|
+
op.reconcileOperation(rangeFrom, rangeTo, contentSize);
|
|
18121
|
+
}
|
|
18122
|
+
}
|
|
18123
|
+
}
|
|
18124
|
+
};
|
|
18125
|
+
replace(this.undoStack);
|
|
18126
|
+
replace(this.redoStack);
|
|
18127
|
+
}
|
|
17775
18128
|
}
|
|
17776
18129
|
function validateYorkieRuleset(data, ruleset) {
|
|
17777
18130
|
const errors = [];
|
|
@@ -18725,6 +19078,15 @@ class Document {
|
|
|
18725
19078
|
op.getContent()?.length ?? 0
|
|
18726
19079
|
);
|
|
18727
19080
|
}
|
|
19081
|
+
if (op instanceof TreeEditOperation) {
|
|
19082
|
+
const [from, to] = op.normalizePos();
|
|
19083
|
+
this.internalHistory.reconcileTreeEdit(
|
|
19084
|
+
op.getParentCreatedAt(),
|
|
19085
|
+
from,
|
|
19086
|
+
to,
|
|
19087
|
+
op.getContentSize()
|
|
19088
|
+
);
|
|
19089
|
+
}
|
|
18728
19090
|
}
|
|
18729
19091
|
this.changeID = this.changeID.syncClocks(change.getID());
|
|
18730
19092
|
if (opInfos.length) {
|
|
@@ -19270,7 +19632,7 @@ function createAuthInterceptor(apiKey, token) {
|
|
|
19270
19632
|
};
|
|
19271
19633
|
}
|
|
19272
19634
|
const name$1 = "@yorkie-js/sdk";
|
|
19273
|
-
const version$1 = "0.
|
|
19635
|
+
const version$1 = "0.7.0";
|
|
19274
19636
|
const pkg$1 = {
|
|
19275
19637
|
name: name$1,
|
|
19276
19638
|
version: version$1
|
|
@@ -21125,7 +21487,7 @@ if (typeof globalThis !== "undefined") {
|
|
|
21125
21487
|
};
|
|
21126
21488
|
}
|
|
21127
21489
|
const name = "@yorkie-js/react";
|
|
21128
|
-
const version = "0.
|
|
21490
|
+
const version = "0.7.0";
|
|
21129
21491
|
const pkg = {
|
|
21130
21492
|
name,
|
|
21131
21493
|
version
|
|
@@ -21479,6 +21841,48 @@ const useConnection = () => {
|
|
|
21479
21841
|
const documentStore = useDocumentStore("useConnection");
|
|
21480
21842
|
return useSelector(documentStore, (store) => store.connection);
|
|
21481
21843
|
};
|
|
21844
|
+
const useRevisions = () => {
|
|
21845
|
+
const { client } = useYorkie();
|
|
21846
|
+
const documentStore = useDocumentStore("useRevisions");
|
|
21847
|
+
const doc = useSelector(documentStore, (store) => store.doc);
|
|
21848
|
+
const createRevision = useCallback(
|
|
21849
|
+
async (label, description) => {
|
|
21850
|
+
if (!client || !doc) {
|
|
21851
|
+
throw new Error("Client or document is not ready");
|
|
21852
|
+
}
|
|
21853
|
+
return client.createRevision(doc, label, description);
|
|
21854
|
+
},
|
|
21855
|
+
[client, doc]
|
|
21856
|
+
);
|
|
21857
|
+
const listRevisions = useCallback(
|
|
21858
|
+
async (options) => {
|
|
21859
|
+
if (!client || !doc) {
|
|
21860
|
+
throw new Error("Client or document is not ready");
|
|
21861
|
+
}
|
|
21862
|
+
return client.listRevisions(doc, options);
|
|
21863
|
+
},
|
|
21864
|
+
[client, doc]
|
|
21865
|
+
);
|
|
21866
|
+
const getRevision = useCallback(
|
|
21867
|
+
async (revisionID) => {
|
|
21868
|
+
if (!client || !doc) {
|
|
21869
|
+
throw new Error("Client or document is not ready");
|
|
21870
|
+
}
|
|
21871
|
+
return client.getRevision(doc, revisionID);
|
|
21872
|
+
},
|
|
21873
|
+
[client, doc]
|
|
21874
|
+
);
|
|
21875
|
+
const restoreRevision = useCallback(
|
|
21876
|
+
async (revisionID) => {
|
|
21877
|
+
if (!client || !doc) {
|
|
21878
|
+
throw new Error("Client or document is not ready");
|
|
21879
|
+
}
|
|
21880
|
+
return client.restoreRevision(doc, revisionID);
|
|
21881
|
+
},
|
|
21882
|
+
[client, doc]
|
|
21883
|
+
);
|
|
21884
|
+
return { createRevision, listRevisions, getRevision, restoreRevision };
|
|
21885
|
+
};
|
|
21482
21886
|
const useDocumentStore = (hookName) => {
|
|
21483
21887
|
const documentStore = useContext(DocumentContext);
|
|
21484
21888
|
if (!documentStore) {
|
|
@@ -21665,6 +22069,7 @@ export {
|
|
|
21665
22069
|
useConnection,
|
|
21666
22070
|
useDocument,
|
|
21667
22071
|
usePresences,
|
|
22072
|
+
useRevisions,
|
|
21668
22073
|
useRoot,
|
|
21669
22074
|
useYorkieDoc
|
|
21670
22075
|
};
|