úÎ6€2ê%      !"#$ Safe-Inferred<Apply an operation to a document, producing a new document. Composes two operations a and b , producing c , such that c has the 4 same effect when applied to a document as applying a and b one after  another. %Transforms two concurrent operations a and b , producing a' and b'  such that b' " a == a' " b. %&'()*+,-./0123%&'()*+,-./0123None CAn operation bundled with the cursor position after the operation. A cursor has a   and a   . Both are A zero-based indexes into the document. When nothing is selected,    is equal to  . When there is a selection,   < is always the side of the selection that would move if you  pressed an arrow key. KAn edit on plain text documents. An operation consists of multiple actions H that change the document at the current cursor position or advance the J cursor. After applying all actions, the cursor must be at the end of the  document. KAn action changes the text at the current position or advances the cursor. Delete the next n characters. /Insert the given text at the current position. Skip the next n characters. DComputes the inverse of an operation. Useful for implementing undo. ,Update cursor with respect to an operation.  456An operation. +Document before the operation was applied. 789:;<=>?@ABC     456789:;<=>?@ABCNone(b " a)(d) = a(b(d)) where a and b are two consecutive operations  and d is the initial document. b' (a(d)) = b'(a(d)) where a and b are random operations, d is the  initial document and (a', b') = transform(a, b). DEDE Safe-Inferred7At every moment, the client is in one of three states. IThe client is waiting for an acknowledgement for a pending operation and ( the client is buffering local changes. GThe client has sent an operation to the server and it is still waiting  for an acknowledgement. All of the client'3s operations have been acknowledged by the server. :The state a newly connected client starts in (synonym for  ). "Handle user-generated operations. ,Handle incoming operations from the server. Handle acknowledgements. <The operation the user has performed on the local document. ?Whether to send the operation to the server and the new client  state (or an error). 8The transformed operation that must be applied to local + document and the new state (or an error). AAn optional operation that must be sent to the server if present  and the new state.  Safe-Inferred DThe server keeps the current revision number and a list of previous 6 operations to transform incoming operations against. $Handles incoming operations.  !"#$^The latest operation that the client has received from the server when it sent the operation. (The operation received from the client. 4The operation to broadcast to all connected clients : (except the client which has created the operation; that ; client must be sent an acknowledgement) and the new state  (or an error).  !"#$" !#$ !"#$F       !"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHot-0.1.2!Control.OperationalTransformation&Control.OperationalTransformation.Text,Control.OperationalTransformation.Properties(Control.OperationalTransformation.Client(Control.OperationalTransformation.ServerOTSystemapplyOTComposableOperationcompose OTOperation transformAugmentedTextOperationaugmentedCursoraugmentedOperationCursorcursorPositioncursorSelectionEnd TextOperationActionDeleteInsertRetaininvertOperation updateCursorprop_compose_applyprop_transform_apply ClientStateClientWaitingWithBuffer ClientWaitingClientSynchronizedinitialClientState applyClient applyServer serverAck ServerStateRevisioninitialServerStateapplyOperation$fOTSystem(,,,,)(,,,,)$fOTComposableOperation(,,,,)$fOTOperation(,,,,)$fOTSystem(,,,)(,,,)$fOTComposableOperation(,,,)$fOTOperation(,,,)$fOTSystem(,,)(,,)$fOTComposableOperation(,,)$fOTOperation(,,)$fOTSystem(,)(,)$fOTComposableOperation(,)$fOTOperation(,)$fOTSystemdoc[]$fOTComposableOperation[]$fOTOperation[] addRetain addInsert addDelete#$fOTSystemdocAugmentedTextOperation-$fOTComposableOperationAugmentedTextOperation#$fOTOperationAugmentedTextOperation $fFromJSONAugmentedTextOperation$fToJSONAugmentedTextOperation$fFromJSONCursor$fToJSONCursor$fOTSystemTextTextOperation$$fOTComposableOperationTextOperation$fOTOperationTextOperation$fFromJSONAction$fToJSONAction$fBinaryAction==?eitherProperty