diff --git a/AppKit/CPSavePanel.j b/AppKit/CPSavePanel.j index 3aa5994c8..7ee56bd59 100644 --- a/AppKit/CPSavePanel.j +++ b/AppKit/CPSavePanel.j @@ -35,6 +35,11 @@ CPArray _allowedFileTypes @accessors(property=allowedFileTypes); } ++ (CPURL)proposedFileURLWithDocumentName:(CPString)aDocumentName +{ + return [CPURL URLWithString:aDocumentName]; +} + + (id)savePanel { return [[CPSavePanel alloc] init]; diff --git a/AppKit/CPText.j b/AppKit/CPText.j index 7f2034bcc..490053047 100644 --- a/AppKit/CPText.j +++ b/AppKit/CPText.j @@ -40,6 +40,7 @@ @protocol CPTextDelegate +@optional - (BOOL)textShouldBeginEditing:(CPText)aTextObject; - (BOOL)textShouldEndEditing:(CPText)aTextObject; - (void)textDidBeginEditing:(CPNotification)aNotification; diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 3e07825e5..e0000f2cb 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -873,12 +873,18 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); if (!CPTextFieldInputDidBlur) CPTextFieldBlurHandler(); - CPTextFieldInputDidBlur = NO; - CPTextFieldInputResigning = NO; - if (element.parentNode == _DOMElement) element.parentNode.removeChild(element); + // Previosly, we unflagged CPTextFieldInputDidBlur and CPTextFieldInputResigning before + // the call to removeChild. This resulted in DOM exceptions in Chrome under certain conditions. + // See https://stackoverflow.com/questions/21926083/failed-to-execute-removechild-on-node + // for why we need to unflag CPTextFieldInputDidBlur and CPTextFieldInputResigning + // only after removing the element. + + CPTextFieldInputDidBlur = NO; + CPTextFieldInputResigning = NO; + CPTextFieldInputIsActive = NO; if (document.attachEvent) diff --git a/AppKit/CPTextView/CPTextContainer.j b/AppKit/CPTextView/CPTextContainer.j index 5c3f485a9..f9e988816 100644 --- a/AppKit/CPTextView/CPTextContainer.j +++ b/AppKit/CPTextView/CPTextContainer.j @@ -168,10 +168,7 @@ CPLineMovesUp = 4; - (void)setTextView:(CPTextView)aTextView { if (_textView) - { - [self _removeAllLines]; [_textView setTextContainer:nil]; - } _textView = aTextView; @@ -252,4 +249,4 @@ var CPTextContainerSizeKey = @"CPTextContainerSizeKey", [aCoder encodeObject:_layoutManager forKey:CPTextContainerLayoutManagerKey]; } -@end \ No newline at end of file +@end diff --git a/AppKit/CPTextView/CPTextView.j b/AppKit/CPTextView/CPTextView.j index 5953a31f8..fae2b59b2 100644 --- a/AppKit/CPTextView/CPTextView.j +++ b/AppKit/CPTextView/CPTextView.j @@ -43,6 +43,7 @@ @protocol CPTextViewDelegate +@optional - (BOOL)textView:(CPTextView)aTextView doCommandBySelector:(SEL)aSelector; - (BOOL)textView:(CPTextView)aTextView shouldChangeTextInRange:(CPRange)affectedCharRange replacementString:(CPString)replacementString; - (CPDictionary)textView:(CPTextView)textView shouldChangeTypingAttributes:(CPDictionary)oldTypingAttributes toAttributes:(CPDictionary)newTypingAttributes; @@ -94,13 +95,16 @@ CPSelectByWord = 1; CPSelectByParagraph = 2; var kDelegateRespondsTo_textShouldBeginEditing = 1 << 0, - kDelegateRespondsTo_textView_doCommandBySelector = 1 << 1, - kDelegateRespondsTo_textView_willChangeSelectionFromCharacterRange_toCharacterRange = 1 << 2, - kDelegateRespondsTo_textView_shouldChangeTextInRange_replacementString = 1 << 3, - kDelegateRespondsTo_textView_shouldChangeTypingAttributes_toAttributes = 1 << 4, - kDelegateRespondsTo_textView_textDidChange = 1 << 5, - kDelegateRespondsTo_textView_didChangeSelection = 1 << 6, - kDelegateRespondsTo_textView_didChangeTypingAttributes = 1 << 7; + kDelegateRespondsTo_textShouldEndEditing = 1 << 1 + kDelegateRespondsTo_textView_doCommandBySelector = 1 << 2, + kDelegateRespondsTo_textView_willChangeSelectionFromCharacterRange_toCharacterRange = 1 << 3, + kDelegateRespondsTo_textView_shouldChangeTextInRange_replacementString = 1 << 4, + kDelegateRespondsTo_textView_shouldChangeTypingAttributes_toAttributes = 1 << 5, + kDelegateRespondsTo_textView_textDidChange = 1 << 6, + kDelegateRespondsTo_textView_didChangeSelection = 1 << 7, + kDelegateRespondsTo_textView_didChangeTypingAttributes = 1 << 8, + kDelegateRespondsTo_textView_textDidBeginEditing = 1 << 9, + kDelegateRespondsTo_textView_textDidEndEditing = 1 << 10; @class _CPCaret; @@ -152,6 +156,10 @@ var kDelegateRespondsTo_textShouldBeginEditing CPTimer _scrollingTimer; CPString _placeholderString; + + BOOL _firstResponderButNotEditingYet; + + CPRange _mouseDownOldSelection; } + (Class)_binderClassForBinding:(CPString)aBinding @@ -264,6 +272,7 @@ var kDelegateRespondsTo_textShouldBeginEditing [super _removeObservers]; [self _setObserveWindowKeyNotifications:NO]; + [self _removeDelegateObservers]; } - (void)_addObservers @@ -274,7 +283,53 @@ var kDelegateRespondsTo_textShouldBeginEditing [super _addObservers]; [self _setObserveWindowKeyNotifications:YES]; [self _startObservingClipView]; + [self _addDelegateObservers]; } + +- (void)_addDelegateObservers +{ + if (!_delegate) return; + + var nc = [CPNotificationCenter defaultCenter]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_textDidBeginEditing) + [nc addObserver:_delegate selector:@selector(textDidBeginEditing:) name:CPTextDidBeginEditingNotification object:self]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_textDidChange) + [nc addObserver:_delegate selector:@selector(textDidChange:) name:CPTextDidChangeNotification object:self]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_textDidEndEditing) + [nc addObserver:_delegate selector:@selector(textDidEndEditing:) name:CPTextDidEndEditingNotification object:self]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_didChangeSelection) + [nc addObserver:_delegate selector:@selector(textViewDidChangeSelection:) name:CPTextViewDidChangeSelectionNotification object:self]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_didChangeTypingAttributes) + [nc addObserver:_delegate selector:@selector(textViewDidChangeTypingAttributes:) name:CPTextViewDidChangeTypingAttributesNotification object:self]; +} + +- (void)_removeDelegateObservers +{ + if (!_delegate) return; + + var nc = [CPNotificationCenter defaultCenter]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_textDidBeginEditing) + [nc removeObserver:_delegate name:CPTextDidBeginEditingNotification object:self]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_textDidChange) + [nc removeObserver:_delegate name:CPTextDidChangeNotification object:self]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_textDidEndEditing) + [nc removeObserver:_delegate name:CPTextDidEndEditingNotification object:self]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_didChangeSelection) + [nc removeObserver:_delegate name:CPTextViewDidChangeSelectionNotification object:self]; + + if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_didChangeTypingAttributes) + [nc removeObserver:_delegate name:CPTextViewDidChangeTypingAttributesNotification object:self]; +} + - (void)_startObservingClipView { if (!_observedClipView) @@ -358,7 +413,7 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)_windowDidResignKey:(CPNotification)aNotification { if (![[self window] isKeyWindow]) - [self resignFirstResponder]; + [self _resignFirstResponder]; } - (void)_windowDidBecomeKey:(CPNotification)aNotification @@ -452,17 +507,33 @@ var kDelegateRespondsTo_textShouldBeginEditing - (BOOL)becomeFirstResponder { [super becomeFirstResponder]; + _firstResponderButNotEditingYet = YES; [self _becomeFirstResponder]; return YES; } -- (BOOL)resignFirstResponder +- (void)_resignFirstResponder { [self _reverseSetBinding]; [_caret stopBlinking]; [self setNeedsDisplay:YES]; [_CPNativeInputManager cancelCurrentInputSessionIfNeeded]; +} + +- (BOOL)resignFirstResponder +{ + if (_firstResponderButNotEditingYet) + _firstResponderButNotEditingYet = NO; + else + { + if ([self _sendDelegateTextShouldEndEditing]) + [[CPNotificationCenter defaultCenter] postNotificationName:CPTextDidEndEditingNotification object:self]; + else + return NO; + } + + [self _resignFirstResponder]; return YES; } @@ -479,6 +550,8 @@ var kDelegateRespondsTo_textShouldBeginEditing if (aDelegate === _delegate) return; + [self _removeDelegateObservers]; + _delegateRespondsToSelectorMask = 0; _delegate = aDelegate; @@ -493,12 +566,21 @@ var kDelegateRespondsTo_textShouldBeginEditing if ([_delegate respondsToSelector:@selector(textViewDidChangeTypingAttributes:)]) _delegateRespondsToSelectorMask |= kDelegateRespondsTo_textView_didChangeTypingAttributes; + if ([_delegate respondsToSelector:@selector(textDidBeginEditing:)]) + _delegateRespondsToSelectorMask |= kDelegateRespondsTo_textView_textDidBeginEditing; + + if ([_delegate respondsToSelector:@selector(textDidEndEditing:)]) + _delegateRespondsToSelectorMask |= kDelegateRespondsTo_textView_textDidEndEditing; + if ([_delegate respondsToSelector:@selector(textView:doCommandBySelector:)]) _delegateRespondsToSelectorMask |= kDelegateRespondsTo_textView_doCommandBySelector; if ([_delegate respondsToSelector:@selector(textShouldBeginEditing:)]) _delegateRespondsToSelectorMask |= kDelegateRespondsTo_textShouldBeginEditing; + if ([_delegate respondsToSelector:@selector(textShouldEndEditing:)]) + _delegateRespondsToSelectorMask |= kDelegateRespondsTo_textShouldEndEditing; + if ([_delegate respondsToSelector:@selector(textView:willChangeSelectionFromCharacterRange:toCharacterRange:)]) _delegateRespondsToSelectorMask |= kDelegateRespondsTo_textView_willChangeSelectionFromCharacterRange_toCharacterRange; @@ -507,6 +589,9 @@ var kDelegateRespondsTo_textShouldBeginEditing if ([_delegate respondsToSelector:@selector(textView:shouldChangeTypingAttributes:toAttributes:)]) _delegateRespondsToSelectorMask |= kDelegateRespondsTo_textView_shouldChangeTypingAttributes_toAttributes; + + if (_superview) + [self _addDelegateObservers]; } } @@ -643,9 +728,21 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)didChangeText { [[CPNotificationCenter defaultCenter] postNotificationName:CPTextDidChangeNotification object:self]; +} - if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_textDidChange) - [_delegate textDidChange:[[CPNotification alloc] initWithName:CPTextDidChangeNotification object:self userInfo:nil]]; +- (BOOL)_didBeginEditing +{ + if (_firstResponderButNotEditingYet) + { + if ([self _sendDelegateTextShouldBeginEditing]) + { + [[CPNotificationCenter defaultCenter] postNotificationName:CPTextDidBeginEditingNotification object:self]; + _firstResponderButNotEditingYet = NO; + } else + return NO; + } + + return YES; } - (BOOL)shouldChangeTextInRange:(CPRange)aRange replacementString:(CPString)aString @@ -653,7 +750,7 @@ var kDelegateRespondsTo_textShouldBeginEditing if (![self isEditable]) return NO; - return [self _sendDelegateTextShouldBeginEditing] && [self _sendDelegateShouldChangeTextInRange:aRange replacementString:aString]; + return [self _sendDelegateShouldChangeTextInRange:aRange replacementString:aString]; } @@ -685,7 +782,7 @@ var kDelegateRespondsTo_textShouldBeginEditing var isAttributed = [aString isKindOfClass:CPAttributedString], string = isAttributed ? [aString string]:aString; - if (![self shouldChangeTextInRange:CPMakeRangeCopy(_selectionRange) replacementString:string]) + if (![self _didBeginEditing] || ![self shouldChangeTextInRange:CPMakeRangeCopy(_selectionRange) replacementString:string]) return; if (!isAttributed) @@ -787,53 +884,80 @@ var kDelegateRespondsTo_textShouldBeginEditing } } +/*! +Sets the selection to a range of characters in response to user action. +@param range The range of characters to select. This range must begin and end on glyph boundaries and not split base glyphs and their nonspacing marks. +*/ - (void)setSelectedRange:(CPRange)range { [_CPNativeInputManager cancelCurrentInputSessionIfNeeded]; [self setSelectedRange:range affinity:0 stillSelecting:NO]; } +/*! +Sets the selection to a range of characters in response to user action. +@param range The range of characters to select. This range must begin and end on glyph boundaries and not split base glyphs and their nonspacing marks. +@param affinity The selection affinity for the selection. See selectionAffinity for more information about how affinities work. +@param selecting YES to behave appropriately for a continuing selection where the user is still dragging the mouse, NO otherwise. If YES, the receiver doesn’t send notifications or remove the marking from its marked text. If NO, the receiver posts an NSTextViewDidChangeSelectionNotification to the default notification center and removes the marking from marked text if the new selection is greater than the marked region. +*/ - (void)setSelectedRange:(CPRange)range affinity:(CPSelectionAffinity)affinity stillSelecting:(BOOL)selecting { [self _setSelectedRange:range affinity:affinity stillSelecting:selecting overwriteTypingAttributes:YES]; } + +/*! +Sets the selection to a range of characters in response to user action. +@param range The range of characters to select. This range must begin and end on glyph boundaries and not split base glyphs and their nonspacing marks. +@param affinity The selection affinity for the selection. See selectionAffinity for more information about how affinities work. +@param selecting YES to behave appropriately for a continuing selection where the user is still dragging the mouse, NO otherwise. If YES, the receiver doesn’t send notifications or remove the marking from its marked text. If NO, the receiver posts an NSTextViewDidChangeSelectionNotification to the default notification center and removes the marking from marked text if the new selection is greater than the marked region. +@param doOverwrite YES to override typing attributes. NO to not override. +*/ - (void)_setSelectedRange:(CPRange)range affinity:(CPSelectionAffinity)affinity stillSelecting:(BOOL)selecting overwriteTypingAttributes:(BOOL)doOverwrite { - var maxRange = CPMakeRange(0, [_layoutManager numberOfCharacters]); + var maxRange = CPMakeRange(0, [_layoutManager numberOfCharacters]), + newSelectionRange; range = CPIntersectionRange(maxRange, range); if (!selecting && [self _delegateRespondsToWillChangeSelectionFromCharacterRangeToCharacterRange]) { - _selectionRange = [self _sendDelegateWillChangeSelectionFromCharacterRange:_selectionRange toCharacterRange:range]; + newSelectionRange = [self _sendDelegateWillChangeSelectionFromCharacterRange:_selectionRange toCharacterRange:range]; } else { - _selectionRange = CPMakeRangeCopy(range); - _selectionRange = [self selectionRangeForProposedRange:_selectionRange granularity:[self selectionGranularity]]; + newSelectionRange = [self selectionRangeForProposedRange:range granularity:[self selectionGranularity]]; } - if (_selectionRange.length) - [_layoutManager invalidateDisplayForGlyphRange:_selectionRange]; + var isNewSelection = !CPEqualRanges(newSelectionRange, _selectionRange); + + if (isNewSelection) + _selectionRange = newSelectionRange; + + if (newSelectionRange.length) + { + if (isNewSelection) + [_layoutManager invalidateDisplayForGlyphRange:newSelectionRange]; + } else [self setNeedsDisplay:YES]; if (!selecting) { if ([self _isFirstResponder]) - [self updateInsertionPointStateAndRestartTimer:((_selectionRange.length === 0) && ![_caret isBlinking])]; + [self updateInsertionPointStateAndRestartTimer:((newSelectionRange.length === 0) && ![_caret isBlinking])]; - if (doOverwrite && _placeholderString === nil) + // If there is no new selection but the pervious mouseDown has saved a selection we check against the saved selection instead + if (!isNewSelection && _mouseDownOldSelection) + isNewSelection = !CPEqualRanges(newSelectionRange, _mouseDownOldSelection); + + if (doOverwrite && _placeholderString === nil && isNewSelection) [self setTypingAttributes:[_textStorage attributesAtIndex:CPMaxRange(range) effectiveRange:nil]]; [[CPNotificationCenter defaultCenter] postNotificationName:CPTextViewDidChangeSelectionNotification object:self]; - - if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_didChangeSelection) - [_delegate textViewDidChangeSelection:[[CPNotification alloc] initWithName:CPTextViewDidChangeSelectionNotification object:self userInfo:nil]]; } - if (!selecting && _selectionRange.length > 0) + if (!selecting && newSelectionRange.length > 0) [_CPNativeInputManager focusForClipboardOfTextView:self]; } @@ -917,18 +1041,18 @@ var kDelegateRespondsTo_textShouldBeginEditing { var fraction = [], point = [self convertPoint:point fromView:nil]; - + // convert to container coordinate point.x -= _textContainerOrigin.x; point.y -= _textContainerOrigin.y; - + var index = [_layoutManager glyphIndexForPoint:point inTextContainer:_textContainer fractionOfDistanceThroughGlyph:fraction]; - + if (index === CPNotFound) index = [_layoutManager numberOfCharacters]; else if (fraction[0] > 0.5) index++; - + return index; } - (CGPoint)_characterIndexFromEvent:(CPEvent)event @@ -951,9 +1075,9 @@ var kDelegateRespondsTo_textShouldBeginEditing [_CPNativeInputManager cancelCurrentInputSessionIfNeeded]; [_caret setVisibility:NO]; - + _startTrackingLocation = [self _characterIndexFromEvent:event]; - + var granularities = [CPNotFound, CPSelectByCharacter, CPSelectByWord, CPSelectByParagraph]; [self setSelectionGranularity:granularities[[event clickCount]]]; @@ -966,20 +1090,20 @@ var kDelegateRespondsTo_textShouldBeginEditing placeholderFrame = CGRectIntersection([_layoutManager boundingRectForGlyphRange:placeholderRange inTextContainer:_textContainer], _frame), rangeToHide = CPMakeRange(0, _selectionRange.location - lineBeginningIndex), dragPlaceholder; - + // hide the left part of the first line of the selection that is not included [placeholderString addAttribute:CPForegroundColorAttributeName value:[CPColor colorWithRed:1 green:1 blue:1 alpha:0] range:rangeToHide]; - + _movingSelection = CPMakeRange(_startTrackingLocation, 0); - + dragPlaceholder = [[CPTextView alloc] initWithFrame:placeholderFrame]; [dragPlaceholder._textStorage replaceCharactersInRange:CPMakeRange(0, 0) withAttributedString:placeholderString]; [dragPlaceholder setBackgroundColor:[CPColor colorWithRed:1 green:1 blue:1 alpha:0]]; [dragPlaceholder setAlphaValue:0.5]; - + var stringForPasting = [_textStorage attributedSubstringFromRange:CPMakeRangeCopy(_selectionRange)], richData = [_CPRTFProducer produceRTF:stringForPasting documentAttributes:@{}], draggingPasteboard = [CPPasteboard pasteboardWithName:CPDragPboard]; @@ -994,17 +1118,19 @@ var kDelegateRespondsTo_textShouldBeginEditing pasteboard:draggingPasteboard source:self slideBack:YES]; - + return; } - + var setRange = CPMakeRange(_startTrackingLocation, 0); - + if ([event modifierFlags] & CPShiftKeyMask) setRange = _MakeRangeFromAbs(_startTrackingLocation < _MidRange(_selectionRange) ? CPMaxRange(_selectionRange) : _selectionRange.location, _startTrackingLocation); else _scrollingTimer = [CPTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(_supportScrolling:) userInfo:nil repeats:YES]; // fixme: only start if we are in the scrolling areas + // Save old selection so we can only send textViewDidChangeTypingAttribute notification when selection is changed on mouse up. + _mouseDownOldSelection = _selectionRange; [self setSelectedRange:setRange affinity:0 stillSelecting:YES]; } @@ -1020,7 +1146,7 @@ var kDelegateRespondsTo_textShouldBeginEditing if (_movingSelection) return; - + var oldRange = [self selectedRange], index = [self _characterIndexFromEvent:event]; @@ -1047,6 +1173,7 @@ var kDelegateRespondsTo_textShouldBeginEditing _previousSelectionGranularity = [self selectionGranularity]; [self setSelectionGranularity:CPSelectByCharacter]; [self setSelectedRange:[self selectedRange] affinity:0 stillSelecting:NO]; + _mouseDownOldSelection = nil; var point = [_layoutManager locationForGlyphAtIndex:[self selectedRange].location]; _stickyXLocation = point.x; @@ -1470,7 +1597,7 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)_deleteForRange:(CPRange)changedRange { - if (![self shouldChangeTextInRange:changedRange replacementString:@""]) + if (![self _didBeginEditing] || ![self shouldChangeTextInRange:changedRange replacementString:@""]) return; changedRange = CPIntersectionRange(CPMakeRange(0, [_layoutManager numberOfCharacters]), changedRange); @@ -1592,11 +1719,11 @@ var kDelegateRespondsTo_textShouldBeginEditing [self _enrichEssentialTypingAttributes:_typingAttributes]; } - [[CPNotificationCenter defaultCenter] postNotificationName:CPTextViewDidChangeTypingAttributesNotification - object:self]; + [[CPNotificationCenter defaultCenter] postNotificationName:CPTextViewDidChangeTypingAttributesNotification object:self]; - if (_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_didChangeTypingAttributes) - [_delegate textViewDidChangeTypingAttributes:[[CPNotification alloc] initWithName:CPTextViewDidChangeTypingAttributesNotification object:self userInfo:nil]]; + // We always clear the saved selection range from the last mouse down event here. + // This is normally done in mouseUp: but this is if that event was never sent. + _mouseDownOldSelection = nil; } - (CPDictionary)_attributesForFontPanel @@ -1739,7 +1866,7 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)underline:(id)sender { - if (![self shouldChangeTextInRange:_selectionRange replacementString:nil]) + if (![self _didBeginEditing] || ![self shouldChangeTextInRange:_selectionRange replacementString:nil]) return; if (!CPEmptyRange(_selectionRange)) @@ -2040,7 +2167,7 @@ var kDelegateRespondsTo_textShouldBeginEditing { var point = [info draggingLocation], location = [self _characterIndexFromRawPoint:CGPointCreateCopy(point)]; - + _movingSelection = CPMakeRange(location, 0); [_caret _drawCaretAtLocation:_movingSelection.location]; [_caret setVisibility:YES]; @@ -2053,11 +2180,11 @@ var kDelegateRespondsTo_textShouldBeginEditing { var location = [self convertPoint:[aSender draggingLocation] fromView:nil], pasteboard = [aSender draggingPasteboard]; - + if ([pasteboard availableTypeFromArray:[CPRTFPboardType, CPStringPboardType]]) { [_caret setVisibility:NO]; - + if (CPLocationInRange(_movingSelection.location, _selectionRange)) { [self setSelectedRange:_movingSelection]; @@ -2082,7 +2209,7 @@ var kDelegateRespondsTo_textShouldBeginEditing [self insertText:dataForPasting]; }, 0); } - + if ([pasteboard availableTypeFromArray:[CPColorDragType]]) [self setTextColor:[CPKeyedUnarchiver unarchiveObjectWithData:[pasteboard dataForType:CPColorDragType]] range:_selectionRange]; } @@ -2156,6 +2283,14 @@ var kDelegateRespondsTo_textShouldBeginEditing return [_delegate textShouldBeginEditing:self]; } +- (BOOL)_sendDelegateTextShouldEndEditing +{ + if (!(_delegateRespondsToSelectorMask & kDelegateRespondsTo_textShouldEndEditing)) + return YES; + + return [_delegate textShouldEndEditing:self]; +} + - (BOOL)_sendDelegateShouldChangeTextInRange:(CPRange)aRange replacementString:(CPString)aString { if (!(_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_shouldChangeTextInRange_replacementString)) @@ -2166,7 +2301,7 @@ var kDelegateRespondsTo_textShouldBeginEditing - (CPDictionary)_sendDelegateShouldChangeTypingAttributes:(CPDictionary)typingAttributes toAttributes:(CPDictionary)attributes { - if (!(_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_doCommandBySelector)) + if (!(_delegateRespondsToSelectorMask & kDelegateRespondsTo_textView_shouldChangeTypingAttributes_toAttributes)) return [CPDictionary dictionary]; return [_delegate textView:self shouldChangeTypingAttributes:typingAttributes toAttributes:attributes]; @@ -2399,7 +2534,7 @@ var CPTextViewAllowsUndoKey = @"CPTextViewAllowsUndoKey", _caretTimer = nil; } } - + - (void)_drawCaretAtLocation:(int)aLoc { var rect = [_textView._layoutManager boundingRectForGlyphRange:CPMakeRange(aLoc, 1) inTextContainer:_textView._textContainer]; @@ -2732,6 +2867,3 @@ var _CPCopyPlaceholder = '-'; } @end - - - diff --git a/AppKit/CPTextView/_CPRTFParser.j b/AppKit/CPTextView/_CPRTFParser.j index 08a7400ff..6cd936508 100644 --- a/AppKit/CPTextView/_CPRTFParser.j +++ b/AppKit/CPTextView/_CPRTFParser.j @@ -113,13 +113,13 @@ var hexTable = []; - (CPNumber)script { - return [CPNumber numberWithInt: script]; + return [CPNumber numberWithInt:script]; } - (CPNumber)underline { if (underline != 0) - return [CPNumber numberWithInteger: underline]; + return [CPNumber numberWithInt:underline]; else return nil; } @@ -127,7 +127,7 @@ var hexTable = []; - (CPNumber)strikethrough { if (strikethrough != 0) - return [CPNumber numberWithInteger: strikethrough]; + return [CPNumber numberWithInt:strikethrough]; else return nil; } diff --git a/AppKit/CPTextView/_CPRTFProducer.j b/AppKit/CPTextView/_CPRTFProducer.j index ef540ef3d..71b1a32c1 100644 --- a/AppKit/CPTextView/_CPRTFProducer.j +++ b/AppKit/CPTextView/_CPRTFProducer.j @@ -1,5 +1,5 @@ /* - RTFProducer.j + _CPRTFProducer.j Serialize CPAttributedString to a RTF String @@ -189,11 +189,9 @@ function _points2twips(a) { return (a) * 20.0; } if (val) { - var size = [val sizeValue]; - detail = [CPString stringWithFormat:@"\\paperw%d \\paperh%d", - _points2twips(size.width), - _points2twips(size.height)]; + _points2twips(val.width), + _points2twips(val.height)]; result += detail; } @@ -612,4 +610,4 @@ function _points2twips(a) { return (a) * 20.0; } output += trailerString; return output; } -@end \ No newline at end of file +@end diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 858b11495..1d4471a8c 100644 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -523,17 +523,25 @@ CPTokenFieldDeleteButtonType = 1; var element = [self _inputElement]; CPTokenFieldInputResigning = YES; - element.blur(); + + if (CPTokenFieldInputIsActive) + element.blur(); if (!CPTokenFieldInputDidBlur) CPTokenFieldBlurHandler(); - CPTokenFieldInputDidBlur = NO; - CPTokenFieldInputResigning = NO; - if (element.parentNode == [_tokenScrollView documentView]._DOMElement) element.parentNode.removeChild(element); + // Previosly, we unflagged CPTokenFieldInputDidBlur and CPTokenFieldInputResigning before + // the call to removeChild. This may result in DOM exceptions in Chrome under certain conditions. + // See https://stackoverflow.com/questions/21926083/failed-to-execute-removechild-on-node + // for why we need to unflag CPTokenFieldInputDidBlur and CPTokenFieldInputResigning + // only after removing the element. + + CPTokenFieldInputDidBlur = NO; + CPTokenFieldInputResigning = NO; + CPTokenFieldInputIsActive = NO; if (document.attachEvent) diff --git a/AppKit/Themes/Aristo2/Resources/scroller-down-arrow-disabled.png b/AppKit/Themes/Aristo2/Resources/scroller-down-arrow-disabled.png deleted file mode 100644 index f8c7e0b05..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-down-arrow-disabled.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-down-arrow-highlighted.png b/AppKit/Themes/Aristo2/Resources/scroller-down-arrow-highlighted.png deleted file mode 100644 index 19314c85f..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-down-arrow-highlighted.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-down-arrow.png b/AppKit/Themes/Aristo2/Resources/scroller-down-arrow.png deleted file mode 100644 index ad5ed8ecd..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-down-arrow.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-left-arrow-disabled.png b/AppKit/Themes/Aristo2/Resources/scroller-left-arrow-disabled.png deleted file mode 100644 index 273eadb90..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-left-arrow-disabled.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-left-arrow-highlighted.png b/AppKit/Themes/Aristo2/Resources/scroller-left-arrow-highlighted.png deleted file mode 100644 index 95df8bd70..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-left-arrow-highlighted.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-left-arrow.png b/AppKit/Themes/Aristo2/Resources/scroller-left-arrow.png deleted file mode 100644 index ebd6b686f..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-left-arrow.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-center.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-center.png deleted file mode 100644 index 098fd5f02..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-center.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-left.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-left.png deleted file mode 100644 index 031e16dbf..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-left.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-right.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-right.png deleted file mode 100644 index 541c61299..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-knob-right.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-center.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-center.png index cadda610c..750495731 100644 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-center.png and b/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-center.png differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-left.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-left.png deleted file mode 100644 index 04e2510a6..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-left.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-right.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-right.png deleted file mode 100644 index 5a9e6c8b1..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-horizontal-track-right.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-bottom.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-bottom.png deleted file mode 100644 index da41c8293..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-bottom.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-center.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-center.png deleted file mode 100644 index a30f8981f..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-center.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-top.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-top.png deleted file mode 100644 index 517d33999..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-knob-top.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-bottom.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-bottom.png deleted file mode 100644 index 51517a659..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-bottom.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-center.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-center.png index b5afcbb9d..aacffb38b 100644 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-center.png and b/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-center.png differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-top.png b/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-top.png deleted file mode 100644 index c41a4afb2..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-legacy-vertical-track-top.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-right-arrow-disabled.png b/AppKit/Themes/Aristo2/Resources/scroller-right-arrow-disabled.png deleted file mode 100644 index 8430527dd..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-right-arrow-disabled.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-right-arrow-highlighted.png b/AppKit/Themes/Aristo2/Resources/scroller-right-arrow-highlighted.png deleted file mode 100644 index 2acbd7b0e..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-right-arrow-highlighted.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-right-arrow.png b/AppKit/Themes/Aristo2/Resources/scroller-right-arrow.png deleted file mode 100644 index c536cf3f7..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-right-arrow.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-up-arrow-disabled.png b/AppKit/Themes/Aristo2/Resources/scroller-up-arrow-disabled.png deleted file mode 100644 index 929ac1458..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-up-arrow-disabled.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-up-arrow-highlighted.png b/AppKit/Themes/Aristo2/Resources/scroller-up-arrow-highlighted.png deleted file mode 100644 index 8caeacfeb..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-up-arrow-highlighted.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-up-arrow.png b/AppKit/Themes/Aristo2/Resources/scroller-up-arrow.png deleted file mode 100644 index eaa182606..000000000 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-up-arrow.png and /dev/null differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-vertical-track-disabled.png b/AppKit/Themes/Aristo2/Resources/scroller-vertical-track-disabled.png index 174a43363..b0423c5bf 100644 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-vertical-track-disabled.png and b/AppKit/Themes/Aristo2/Resources/scroller-vertical-track-disabled.png differ diff --git a/AppKit/Themes/Aristo2/Resources/scroller-vertical-track.png b/AppKit/Themes/Aristo2/Resources/scroller-vertical-track.png index d940f4084..b0423c5bf 100644 Binary files a/AppKit/Themes/Aristo2/Resources/scroller-vertical-track.png and b/AppKit/Themes/Aristo2/Resources/scroller-vertical-track.png differ diff --git a/AppKit/Themes/Aristo2/ThemeDescriptors.j b/AppKit/Themes/Aristo2/ThemeDescriptors.j index 365cadba0..391bf8503 100644 --- a/AppKit/Themes/Aristo2/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo2/ThemeDescriptors.j @@ -508,9 +508,7 @@ var themedButtonValues = nil, orientation: PatternIsVertical }), - trackColorLegacy = PatternColor("scroller-legacy-vertical-track-center.png", 14.0, 1.0), - incrementColorLegacy = PatternColor("scroller-legacy-vertical-track-bottom.png", 14.0, 11.0), - decrementColorLegacy = PatternColor("scroller-legacy-vertical-track-top.png", 14.0, 11.0), + trackColorLegacy = PatternColor("scroller-legacy-vertical-track-center.png", 14.0, 1.0), knobColor = PatternColor( "scroller-vertical-knob{style}{position}.png", @@ -535,7 +533,7 @@ var themedButtonValues = nil, [@"minimum-knob-length", 21.0, CPThemeStateVertical], // Overlay - [@"scroller-width", 9.0, CPThemeStateVertical], + [@"scroller-width", 14.0, CPThemeStateVertical], [@"knob-inset", CGInsetMake(2.0, 0.0, 0.0, 0.0), CPThemeStateVertical], [@"track-inset", CGInsetMake(2.0, 0.0, 2.0, 0.0), CPThemeStateVertical], [@"track-border-overlay", 12.0, CPThemeStateVertical], @@ -553,7 +551,7 @@ var themedButtonValues = nil, // Legacy [@"scroller-width", 14.0, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], - [@"knob-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-inset", CGInsetMake(0.0, 2.0, 0.0, 2.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], [@"track-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], [@"track-border-overlay", 0.0, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], @@ -562,13 +560,11 @@ var themedButtonValues = nil, [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateSelected, CPThemeStateScrollerKnobDark]], [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], - [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], - [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], - [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], - [@"increment-line-color", incrementColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], - [@"decrement-line-color", decrementColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], - [@"decrement-line-size", CGSizeMake(14.0, 11.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], - [@"increment-line-size", CGSizeMake(14.0, 11.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]] + [@"knob-color", knobColor["dark"], [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"increment-line-color", [CPNull null], [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"decrement-line-color", [CPNull null], [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"decrement-line-size", CGSizeMakeZero(), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"increment-line-size", CGSizeMakeZero(), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]] ]; [self registerThemeValues:themedVerticalScrollerValues forView:scroller]; @@ -588,9 +584,7 @@ var themedButtonValues = nil, orientation: PatternIsHorizontal }), - trackColorLegacy = PatternColor("scroller-legacy-horizontal-track-center.png", 1.0, 14.0), - incrementColorLegacy = PatternColor("scroller-legacy-horizontal-track-right.png", 11.0, 14.0), - decrementColorLegacy = PatternColor("scroller-legacy-horizontal-track-left.png", 11.0, 14.0), + trackColorLegacy = PatternColor("scroller-legacy-horizontal-track-center.png", 1.0, 14.0), knobColor = PatternColor( "scroller-horizontal-knob{style}{position}.png", @@ -631,20 +625,18 @@ var themedButtonValues = nil, // Legacy [@"scroller-width", 14.0, CPThemeStateScrollViewLegacy], - [@"knob-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateScrollViewLegacy], + [@"knob-inset", CGInsetMake(2.0, 0.0, 2.0, 0.0), CPThemeStateScrollViewLegacy], [@"track-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateScrollViewLegacy], [@"track-border-overlay", 0.0, CPThemeStateScrollViewLegacy], [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy], [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateSelected]], [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], - [@"knob-color", knobColorLegacy, CPThemeStateScrollViewLegacy], - [@"knob-color", knobColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], - [@"knob-color", knobColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], - [@"increment-line-color", incrementColorLegacy, CPThemeStateScrollViewLegacy], - [@"decrement-line-color", decrementColorLegacy, CPThemeStateScrollViewLegacy], - [@"decrement-line-size", CGSizeMake(11.0, 14.0), CPThemeStateScrollViewLegacy], - [@"increment-line-size", CGSizeMake(11.0, 14.0), CPThemeStateScrollViewLegacy] + [@"knob-color", knobColor["@"], CPThemeStateScrollViewLegacy], + [@"knob-color", knobColor["light"], [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColor["dark"], [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], + [@"decrement-line-size", CGSizeMakeZero(), CPThemeStateScrollViewLegacy], + [@"increment-line-size", CGSizeMakeZero(), CPThemeStateScrollViewLegacy] ]; [self registerThemeValues:themedHorizontalScrollerValues forView:scroller]; diff --git a/AppKit/_CPImageAndTextView.j b/AppKit/_CPImageAndTextView.j index 38721d086..b09e0ee27 100644 --- a/AppKit/_CPImageAndTextView.j +++ b/AppKit/_CPImageAndTextView.j @@ -836,7 +836,8 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0, - (void)setSelectedRange:(CPRange)aRange { #if PLATFORM(DOM) - [[[self window] platformWindow] setSelectedRange:aRange inElement:_DOMTextElement]; + if (_DOMTextElement) + [[[self window] platformWindow] setSelectedRange:aRange inElement:_DOMTextElement]; #endif } diff --git a/Foundation/CPCoder.j b/Foundation/CPCoder.j index 0bdc7b89a..1de52f7aa 100644 --- a/Foundation/CPCoder.j +++ b/Foundation/CPCoder.j @@ -82,8 +82,7 @@ */ - (void)encodePoint:(CGPoint)aPoint { - [self encodeNumber:aPoint.x]; - [self encodeNumber:aPoint.y]; + _CPRaiseInvalidAbstractInvocation(self, _cmd); } /*! @@ -92,8 +91,7 @@ */ - (void)encodeRect:(CGRect)aRect { - [self encodePoint:aRect.origin]; - [self encodeSize:aRect.size]; + _CPRaiseInvalidAbstractInvocation(self, _cmd); } /*! @@ -102,8 +100,7 @@ */ - (void)encodeSize:(CGSize)aSize { - [self encodeNumber:aSize.width]; - [self encodeNumber:aSize.height]; + _CPRaiseInvalidAbstractInvocation(self, _cmd); } /*! diff --git a/Foundation/CPKeyValueObserving.j b/Foundation/CPKeyValueObserving.j index e4b55f752..4c08aee1e 100644 --- a/Foundation/CPKeyValueObserving.j +++ b/Foundation/CPKeyValueObserving.j @@ -209,7 +209,7 @@ [[self mutableArrayValueForKeyPath:aKeyPath] removeObjectsAtIndexes:indexes]; else if (changeKind === CPKeyValueChangeReplacement) - [[self mutableArrayValueForKeyPath:aKeyPath] replaceObjectAtIndexes:indexes withObjects:newValue]; + [[self mutableArrayValueForKeyPath:aKeyPath] replaceObjectsAtIndexes:indexes withObjects:newValue]; } else { diff --git a/Foundation/CPNumber.j b/Foundation/CPNumber.j index 4aec997f5..ef641b1ec 100644 --- a/Foundation/CPNumber.j +++ b/Foundation/CPNumber.j @@ -336,7 +336,7 @@ FIXME: Do we need this? - (id)initWithCoder:(CPCoder)aCoder { - return [aCoder decodeNumber]; + return [aCoder decodeObjectForKey:@"self"]; } - (void)encodeWithCoder:(CPCoder)aCoder diff --git a/Foundation/CPPredicate/_CPFunctionExpression.j b/Foundation/CPPredicate/_CPFunctionExpression.j index 7de9f0d73..1ae0e269e 100644 --- a/Foundation/CPPredicate/_CPFunctionExpression.j +++ b/Foundation/CPPredicate/_CPFunctionExpression.j @@ -220,7 +220,7 @@ var CPSelectorNameKey = @"CPSelectorName", { if ([object isKindOfClass:[CPDictionary class]]) return [object objectForKey:anIndex]; - else ([object isKindOfClass:[CPArray class]]) + else if ([object isKindOfClass:[CPArray class]]) return [object objectAtIndex:anIndex]; [CPException raise:CPInvalidArgumentException reason:@"object[#] requires a CPDictionary or CPArray"]; diff --git a/Foundation/CPPredicate/_CPSubqueryExpression.j b/Foundation/CPPredicate/_CPSubqueryExpression.j index d69483d2c..0f51572ec 100644 --- a/Foundation/CPPredicate/_CPSubqueryExpression.j +++ b/Foundation/CPPredicate/_CPSubqueryExpression.j @@ -70,7 +70,7 @@ return result; } -- (BOOL)isEqual:(id)object; +- (BOOL)isEqual:(id)object { if (self === object) return YES; diff --git a/Objective-J/CFPropertyList.js b/Objective-J/CFPropertyList.js index 00bf332c5..d4ba61527 100644 --- a/Objective-J/CFPropertyList.js +++ b/Objective-J/CFPropertyList.js @@ -310,18 +310,18 @@ var XML_XML = "xml", #define FIRST_CHILD(anXMLNode) (anXMLNode.firstChild) #define NEXT_SIBLING(anXMLNode) (anXMLNode.nextSibling) #define PARENT_NODE(anXMLNode) (anXMLNode.parentNode) -#define DOCUMENT_ELEMENT(aDocument) (aDocument.documentElement) +#define DOCUMENT_ELEMENT(aDocument) (aDocument && aDocument.documentElement) #define HAS_ATTRIBUTE_VALUE(anXMLNode, anAttributeName, aValue) (anXMLNode.getAttribute(anAttributeName) === aValue) #define IS_OF_TYPE(anXMLNode, aType) (NODE_NAME(anXMLNode) === aType) #define IS_PLIST(anXMLNode) IS_OF_TYPE(anXMLNode, PLIST_PLIST) -#define IS_WHITESPACE(anXMLNode) (NODE_TYPE(anXMLNode) === 8 || NODE_TYPE(anXMLNode) === 3) +#define IS_WHITESPACE(anXMLNode) (NODE_TYPE(anXMLNode) === 8 || NODE_TYPE(anXMLNode) === 3 || NODE_TYPE(anXMLNode) === 7) #define IS_DOCUMENTTYPE(anXMLNode) (NODE_TYPE(anXMLNode) === 10) #define PLIST_NEXT_SIBLING(anXMLNode) while ((anXMLNode = NEXT_SIBLING(anXMLNode)) && IS_WHITESPACE(anXMLNode)); -#define PLIST_FIRST_CHILD(anXMLNode) { anXMLNode = FIRST_CHILD(anXMLNode); if (anXMLNode !== NULL && IS_WHITESPACE(anXMLNode)) PLIST_NEXT_SIBLING(anXMLNode) } +#define PLIST_FIRST_CHILD(anXMLNode) { anXMLNode = FIRST_CHILD(anXMLNode); if (anXMLNode != NULL && IS_WHITESPACE(anXMLNode)) PLIST_NEXT_SIBLING(anXMLNode) } var textContent = function(nodes) { @@ -544,15 +544,16 @@ CFPropertyList.propertyListFromXML = function(/*String | XMLNode*/ aStringOrXMLN XMLNode = parseXML(aStringOrXMLNode); // Skip over DOCTYPE and so forth. - while (IS_OF_TYPE(XMLNode, XML_DOCUMENT) || IS_OF_TYPE(XMLNode, XML_XML)) + while (XMLNode && (IS_OF_TYPE(XMLNode, XML_DOCUMENT) || IS_OF_TYPE(XMLNode, XML_XML))) { PLIST_FIRST_CHILD(XMLNode); + } // Skip over the DOCTYPE... see a pattern? - if (IS_DOCUMENTTYPE(XMLNode)) + if (XMLNode && IS_DOCUMENTTYPE(XMLNode)) PLIST_NEXT_SIBLING(XMLNode); // If this is not a PLIST, bail. - if (!IS_PLIST(XMLNode)) + if (!XMLNode || !IS_PLIST(XMLNode)) return NULL; var key = "", diff --git a/Tests/AppKit/CPTextViewTest.j b/Tests/AppKit/CPTextViewTest.j index 343b28dbc..61149e6dc 100644 --- a/Tests/AppKit/CPTextViewTest.j +++ b/Tests/AppKit/CPTextViewTest.j @@ -48,26 +48,91 @@ - (void)testTextViewSelectionRange { - //TODO : uncomment once ojtest will be up to date on travis var range; - // - //[delegateSpy selector:@selector(textView:willChangeSelectionFromCharacterRange:toCharacterRange:) times:1 arguments:[textView, CPMakeRange(0,0), CPMakeRange(0, 18)]]; - //[delegateSpy selector:@selector(textViewDidChangeSelection:) times:1]; - //[textView selectAll:self]; - //range = [[textView selectedRanges] firstObject]; - //[self assert:0 equals:range.location]; - //[self assert:18 equals:range.length]; - // [delegateSpy verifyThatAllExpectationsHaveBeenMet]; - // - // - // [delegateSpy reset]; - // [delegateSpy selector:@selector(textView:willChangeSelectionFromCharacterRange:toCharacterRange:) times:1 arguments:[textView, CPMakeRange(0, 18), CPMakeRange(3, 6)]]; - // [delegateSpy selector:@selector(textViewDidChangeSelection:) times:1]; - //[textView setSelectedRange:CPMakeRange(3, 6)]; - //range = [[textView selectedRanges] firstObject]; - //[self assert:3 equals:range.location]; - //[self assert:6 equals:range.length]; - // [delegateSpy verifyThatAllExpectationsHaveBeenMet]; + + [delegateSpy selector:@selector(textView:willChangeSelectionFromCharacterRange:toCharacterRange:) times:1 arguments:[textView, CPMakeRange(0,0), CPMakeRange(0, 18)]]; + [delegateSpy selector:@selector(textViewDidChangeSelection:) times:1]; + [delegateSpy selector:@selector(textView:shouldChangeTypingAttributes:toAttributes:) times:1]; + [delegateSpy selector:@selector(textViewDidChangeTypingAttributes:) times:1]; + [delegateSpy selector:@selector(textDidChange:) times:0]; + [delegateSpy selector:@selector(textShouldBeginEditing:) times:0]; + [delegateSpy selector:@selector(textDidBeginEditing:) times:0]; + [delegateSpy selector:@selector(textShouldEndEditing:) times:0]; + [delegateSpy selector:@selector(textDidEndEditing:) times:0]; + [textView selectAll:self]; + range = [[textView selectedRanges] firstObject]; + [self assert:0 equals:range.location]; + [self assert:18 equals:range.length]; + [delegateSpy verifyThatAllExpectationsHaveBeenMet]; + + [delegateSpy reset]; + [delegateSpy selector:@selector(textView:willChangeSelectionFromCharacterRange:toCharacterRange:) times:1 arguments:[textView, CPMakeRange(0, 18), CPMakeRange(3, 6)]]; + [delegateSpy selector:@selector(textViewDidChangeSelection:) times:1]; + [delegateSpy selector:@selector(textView:shouldChangeTypingAttributes:toAttributes:) times:1]; + [delegateSpy selector:@selector(textViewDidChangeTypingAttributes:) times:1]; + [delegateSpy selector:@selector(textDidChange:) times:0]; + [delegateSpy selector:@selector(textShouldBeginEditing:) times:0]; + [delegateSpy selector:@selector(textDidBeginEditing:) times:0]; + [delegateSpy selector:@selector(textShouldEndEditing:) times:0]; + [delegateSpy selector:@selector(textDidEndEditing:) times:0]; + [textView setSelectedRange:CPMakeRange(3, 6)]; + range = [[textView selectedRanges] firstObject]; + [self assert:3 equals:range.location]; + [self assert:6 equals:range.length]; + [delegateSpy verifyThatAllExpectationsHaveBeenMet]; + + // When selecting the same range again textView:shouldChangeTypingAttributes:toAttributes: or textViewDidChangeTypingAttributes: should not be triggered + [delegateSpy reset]; + [delegateSpy selector:@selector(textView:willChangeSelectionFromCharacterRange:toCharacterRange:) times:1 arguments:[textView, CPMakeRange(3, 6), CPMakeRange(3, 6)]]; + [delegateSpy selector:@selector(textViewDidChangeSelection:) times:1]; + [delegateSpy selector:@selector(textView:shouldChangeTypingAttributes:toAttributes:) times:0]; + [delegateSpy selector:@selector(textViewDidChangeTypingAttributes:) times:0]; + [delegateSpy selector:@selector(textDidChange:) times:0]; + [delegateSpy selector:@selector(textShouldBeginEditing:) times:0]; + [delegateSpy selector:@selector(textDidBeginEditing:) times:0]; + [delegateSpy selector:@selector(textShouldEndEditing:) times:0]; + [delegateSpy selector:@selector(textDidEndEditing:) times:0]; + [textView setSelectedRange:CPMakeRange(3, 6)]; + range = [[textView selectedRanges] firstObject]; + [self assert:3 equals:range.location]; + [self assert:6 equals:range.length]; + [delegateSpy verifyThatAllExpectationsHaveBeenMet]; +} + +- (void)testTextDidChange +{ + [delegateSpy selector:@selector(textDidChange:) times:1]; + [delegateSpy selector:@selector(textShouldBeginEditing:) times:0]; + [delegateSpy selector:@selector(textDidBeginEditing:) times:0]; + [delegateSpy selector:@selector(textShouldEndEditing:) times:0]; + [delegateSpy selector:@selector(textDidEndEditing:) times:0]; + [textView setString:@"New text"]; + [delegateSpy verifyThatAllExpectationsHaveBeenMet]; +} + +- (void)testTextBeginEditing +{ + [delegateSpy selector:@selector(textDidChange:) times:1]; + [delegateSpy selector:@selector(textShouldBeginEditing:) times:1]; + [delegateSpy selector:@selector(textDidBeginEditing:) times:1]; + [delegateSpy selector:@selector(textShouldEndEditing:) times:0]; + [delegateSpy selector:@selector(textDidEndEditing:) times:0]; + [self assertTrue:[theWindow makeFirstResponder:textView]]; + [textView insertText:@"New text"]; + [delegateSpy verifyThatAllExpectationsHaveBeenMet]; +} + +- (void)testTextEndEditing +{ + [self assertTrue:[theWindow makeFirstResponder:textView]]; + [textView insertText:@"New text"]; + [delegateSpy selector:@selector(textDidChange:) times:0]; + [delegateSpy selector:@selector(textShouldBeginEditing:) times:0]; + [delegateSpy selector:@selector(textDidBeginEditing:) times:0]; + [delegateSpy selector:@selector(textShouldEndEditing:) times:1]; + [delegateSpy selector:@selector(textDidEndEditing:) times:1]; + [self assertFalse:[theWindow makeFirstResponder:nil]]; + [delegateSpy verifyThatAllExpectationsHaveBeenMet]; } @end @@ -79,9 +144,44 @@ return newSelectedCharRange; } +- (CPDictionary)textView:(CPTextView)textView shouldChangeTypingAttributes:(CPDictionary)oldTypingAttributes toAttributes:(CPDictionary)newTypingAttributes +{ + return newTypingAttributes; +} + - (void)textViewDidChangeSelection:(CPNotification)aNotification { } +- (void)textViewDidChangeTypingAttributes:(CPNotification)aNotification +{ + +} + +- (void)textDidChange:(CPNotification)aNotification +{ + +} + +- (BOOL)textShouldBeginEditing:(CPText)aTextObject +{ + return YES; +} + +- (void)textDidBeginEditing:(CPNotification)aNotification +{ + +} + +- (BOOL)textShouldEndEditing:(CPText)aTextObject +{ + return YES; +} + +- (void)textDidEndEditing:(CPNotification)aNotification +{ + +} + @end \ No newline at end of file diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/AppController.j b/Tests/Manual/CPTextViewDelegateAndNotifications/AppController.j new file mode 100644 index 000000000..92d755e8d --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/AppController.j @@ -0,0 +1,125 @@ +/* + * AppController.j + * CPTextViewDelegateAndNotifications + * + * Created by Martin Carlberg on December 22, 2017. + * Copyright 2017, Oops AB All rights reserved. + */ + +@import +@import +@import "NotificationStatistics.j" + +@implementation AppController : CPObject +{ + @outlet CPWindow theWindow; + + CPArray notificationStatistics @accessors; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. + [self setNotificationStatistics: @[ + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textView:willChangeSelectionFromCharacterRange:toCharacterRange:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textView:shouldChangeTextInRange:replacementString:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textView:doCommandBySelector:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textViewDidChangeSelection:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textView:shouldChangeTypingAttributes:toAttributes:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textViewDidChangeTypingAttributes:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textShouldBeginEditing:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textShouldEndEditing:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textDidBeginEditing:))], + [NotificationStatistics notificationStatisticsWithName:CPStringFromSelector(@selector(textDidEndEditing:))], + ]]; + + self.globalOrder = 0; +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullPlatformWindow:YES]; + self.globalOrder = 0; +} + +- (IBAction)resetStatistics:(id)sender { + self.globalOrder = 0; + for (var i = 0, array = [self notificationStatistics]; i < array.length; i++) { + var ns = array[i]; + [ns setOrder:0]; + [ns setCount:0]; + } +} + +- (NotificationStatistics)notificationStatisticsWithName:(CPString)aName +{ + for (var i = 0, array = [self notificationStatistics]; i < array.length; i++) { + var ns = array[i]; + if ([ns.name isEqualToString:aName]) { + return ns; + } + } + + return nil; +} + +- (void)registerNotificationWithSelector:(SEL)selector +{ + var ns = [self notificationStatisticsWithName:CPStringFromSelector(selector)]; + if (ns) { + [ns setCount:[ns count] + 1]; + [ns setOrder:self.globalOrder += 1]; + } +} + +- (CPRange)textView:(CPTextView)textView willChangeSelectionFromCharacterRange:(CPRange)oldSelectedCharRange toCharacterRange:(CPRange)newSelectedCharRange { + [self registerNotificationWithSelector:_cmd]; + return newSelectedCharRange; +} + +- (BOOL)textView:(CPTextView)textView shouldChangeTextInRange:(CPRange)affectedCharRange replacementString:(CPString)replacementString { + [self registerNotificationWithSelector:_cmd]; + return YES; +} + +- (BOOL)textView:(CPTextView)textView doCommandBySelector:(SEL)commandSelector { + [self registerNotificationWithSelector:_cmd]; + return NO; +} +- (CPDictionary)textView:(CPTextView)textView shouldChangeTypingAttributes:(CPDictionary)oldTypingAttributes toAttributes:(CPDictionary)newTypingAttributes { + [self registerNotificationWithSelector:_cmd]; + return newTypingAttributes; +} + +- (void)textViewDidChangeSelection:(CPNotification)notification { + [self registerNotificationWithSelector:_cmd]; +} + +- (void)textViewDidChangeTypingAttributes:(CPNotification)notification { + [self registerNotificationWithSelector:_cmd]; +} + +- (BOOL)textShouldBeginEditing:(CPText)textObject { + [self registerNotificationWithSelector:_cmd]; + return YES; +} + +- (BOOL)textShouldEndEditing:(CPText)textObject { + [self registerNotificationWithSelector:_cmd]; + return YES; +} + +- (void)textDidBeginEditing:(CPNotification)notification { + [self registerNotificationWithSelector:_cmd]; +} + +- (void)textDidEndEditing:(CPNotification)notification { + [self registerNotificationWithSelector:_cmd]; +} + +@end diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/Info.plist b/Tests/Manual/CPTextViewDelegateAndNotifications/Info.plist new file mode 100644 index 000000000..60e0874e6 --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/Info.plist @@ -0,0 +1,14 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPTextViewDelegateAndNotifications + CPBundleVersion + 1.0 + CPHumanReadableCopyright + Copyright © 2017, Your Company All rights reserved. + + diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/Jakefile b/Tests/Manual/CPTextViewDelegateAndNotifications/Jakefile new file mode 100644 index 000000000..5d8dc3484 --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/Jakefile @@ -0,0 +1,172 @@ +/* + * Jakefile + * CPTextViewDelegateAndNotifications + * + * Created by You on December 22, 2017. + * Copyright 2017, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"), + projectName = "CPTextViewDelegateAndNotifications"; + +app (projectName, function(task) +{ + ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks"; + + if (configuration === "Debug") + ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration); + + task.setBuildIntermediatesPath(FILE.join("Build", "CPTextViewDelegateAndNotifications.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPTextViewDelegateAndNotifications"); + task.setIdentifier("com.yourcompany.CPTextViewDelegateAndNotifications"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPTextViewDelegateAndNotifications"); + task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g -S --inline-msg-send"); + else + task.setCompilerFlags("-O2"); +}); + +task ("default", [projectName], function() +{ + printResults(configuration); +}); + +task ("build", ["default"], function() +{ + updateApplicationSize(); +}); + +task ("debug", function() +{ + configuration = ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + configuration = ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", projectName)); + OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]); + printResults("Deployment") +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName)); + print("----------------------------"); +} + +function updateApplicationSize() +{ + print("Calculating application file sizes..."); + + var contents = FILE.read(FILE.join("Build", configuration, projectName, "Info.plist"), { charset:"UTF-8" }), + format = CFPropertyList.sniffedFormatOfString(contents), + plist = CFPropertyList.propertyListFromString(contents), + totalBytes = {executable:0, data:0, mhtml:0}; + + // Get the size of all framework executables and sprite data + var frameworksDir = "Frameworks"; + + if (configuration === "Debug") + frameworksDir = FILE.join(frameworksDir, "Debug"); + + var frameworks = FILE.list(frameworksDir); + + frameworks.forEach(function(framework) + { + if (framework !== "Source") + addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes); + }); + + // Read in the default theme name, and attempt to get its size + var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2", + themePath = nil; + + if (themeName === "Aristo" || themeName === "Aristo2") + themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend"); + else + themePath = FILE.join("Frameworks", "Resources", themeName + ".blend"); + + if (FILE.isDirectory(themePath)) + addBundleFileSizes(themePath, totalBytes); + + // Add sizes for the app + addBundleFileSizes(FILE.join("Build", configuration, projectName), totalBytes); + + print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); + + var dict = new CFMutableDictionary(); + + dict.setValueForKey("executable", totalBytes.executable); + dict.setValueForKey("data", totalBytes.data); + dict.setValueForKey("mhtml", totalBytes.mhtml); + + plist.setValueForKey("CPApplicationSize", dict); + + FILE.write(FILE.join("Build", configuration, projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); +} + +function addBundleFileSizes(bundlePath, totalBytes) +{ + var bundleName = FILE.basename(bundlePath), + environment = bundleName === "Foundation" ? "Objj" : "Browser", + bundlePath = FILE.join(bundlePath, environment + ".environment"); + + if (FILE.isDirectory(bundlePath)) + { + var filename = bundleName + ".sj", + filePath = new FILE.Path(FILE.join(bundlePath, filename)); + + if (filePath.exists()) + totalBytes.executable += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt")); + + if (filePath.exists()) + totalBytes.data += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + } +} diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/NotificationStatistics.j b/Tests/Manual/CPTextViewDelegateAndNotifications/NotificationStatistics.j new file mode 100644 index 000000000..e11fa07f9 --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/NotificationStatistics.j @@ -0,0 +1,33 @@ +/* + * NotificationStatistics.j + * CPTextViewDelegateAndNotifications + * + * Created by Martin Carlberg on December 22, 2017. + * Copyright 2017, Oops AB All rights reserved. + */ + +@import + +@implementation NotificationStatistics : CPObject { + CPString name @accessors; + CPUInteger order @accessors; + CPUInteger count @accessors; +} + ++ (id)notificationStatisticsWithName:(CPString)aName +{ + return [[NotificationStatistics alloc] initWithName:aName]; +} + +- (id)initWithName:(CPString)aName +{ + self = [super init]; + if (self) { + [self setName: aName]; + [self setOrder:0]; + [self setCount:0]; + } + return self; +} + +@end diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/Resources/MainMenu.cib b/Tests/Manual/CPTextViewDelegateAndNotifications/Resources/MainMenu.cib new file mode 100644 index 000000000..8285397ba --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/Resources/MainMenu.cib @@ -0,0 +1,4 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;171E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;172E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;173E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;167E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;174E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;167E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;132E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;151E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;153E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;158E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;159E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;155E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;156E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;167E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;174E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;127E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;177E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;124E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;179E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;180E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;82E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;182E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;183E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;184E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;130E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;185E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;84E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;79E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;187E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;72E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;189E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;190E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;91E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;192E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;106E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;194E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;195E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;196E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;197E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;87E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;198E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;199E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;200E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;88E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;201E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;202E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;203E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;204E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;206E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;111E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;207E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;208E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;165E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;167E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;210E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;156E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;155E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;211E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;212E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;213E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;215E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;169E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;167E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;216E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;217E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;218E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;219E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;153E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;151E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;220E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;212E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;221E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;222E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;159E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;158E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;212E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;224E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;225E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;147E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;169E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;226E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;227E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;228E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;172E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;230E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;231E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;232E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;233E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;67E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;67E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;233E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;236E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;238E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;239E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;240E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;241E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;242E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;243E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;239E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;240E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;241E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;245E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;246E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;74E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;74E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;246E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;249E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;250E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;251E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;252E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;78E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;78E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;252E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;253E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;254E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;255E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;239E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;240E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;241E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;256E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;257E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;258E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;259E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;260E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;261E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;263E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;264E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;86E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;86E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;264E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;265E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;266E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;267E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;269E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;239E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;240E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;241E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;270E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;271E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;272E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;273E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;274E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;275E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;278E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;239E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;240E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;241E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;279E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;97E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;97E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;279E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;280E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;281E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;282E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;283E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;284E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;285E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;286E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;287E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;288E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;289E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;290E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;291E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;292E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;293E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;294E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;295E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;104E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;104E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;295E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;298E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;299E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;300E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;302E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;110E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;110E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;303E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;304E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;305E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;282E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;283E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;306E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;285E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;286E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;307E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;288E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;289E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;308E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;115E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;308E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;310E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;311E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;312E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;119E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;119E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;312E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;313E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;314E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;315E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;316E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;317E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;318E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;123E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;123E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;318E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;319E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;320E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;321E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;123E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;322E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;323E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;123E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;239E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;240E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;241E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;123E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;324E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;123E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;325E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;129E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;234E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;129E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;325E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;327E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;129E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;328E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;235E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;131E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;329E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;330E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;331E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;332E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;333E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;291E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;318E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;134E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;335E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;335E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;336E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;339E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;135E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;340E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;341E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;342E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;343E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;344E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;345E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;138E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;143E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;142E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;346E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;346E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;346E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;346E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;239E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;241E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;241E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;347E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;285E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;334E;E;D;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;137E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;136E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;348E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;349E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;350E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;136E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;351E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;353E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;354E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;140E;E;D;K;10;$classnameS;10;CPTextViewK;8;$classesA;S;10;CPTextViewS;6;CPTextS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;138E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;349E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;349E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;138E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;355E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;356E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;357E;K;23;CPTextViewIsEditableKeyD;K;6;CP$UIDd;3;239E;K;25;CPTextViewIsSelectableKeyD;K;6;CP$UIDd;3;239E;K;23;CPTextViewIsRichTextKeyD;K;6;CP$UIDd;3;239E;K;21;CPTextViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;22;CPTextViewContainerKeyD;K;6;CP$UIDd;3;359E;K;32;CPTextViewInsertionPointColorKeyD;K;6;CP$UIDd;3;360E;K;35;CPTextViewSelectedTextAttributesKeyD;K;6;CP$UIDd;3;361E;K;23;CPTextViewAllowsUndoKeyD;K;6;CP$UIDd;3;239E;K;26;CPTextViewUsesFontPanelKeyD;K;6;CP$UIDd;3;239E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;141E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;136E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;362E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;363E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;136E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;351E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;364E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;365E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;366E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;367E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;334E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;136E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;368E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;241E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;282E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;141E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;136E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;370E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;371E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;136E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;351E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;365E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;366E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;372E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;334E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;136E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;239E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;282E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;135E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;374E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;375E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;376E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;355E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;344E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;377E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;145E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;378E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;161E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;160E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;346E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;346E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;346E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;346E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;239E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;239E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;239E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;3;380E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;381E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;285E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;334E;E;D;K;6;$classD;K;6;CP$UIDd;3;137E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;144E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;382E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;383E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;384E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;144E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;351E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;385E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;386E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;147E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;146E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;145E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;387E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;387E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;145E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;385E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;388E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;12;$agrid-colorD;K;6;CP$UIDd;3;389E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;390E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;391E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;392E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;334E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;369E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;241E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;241E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;239E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;239E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;241E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;393E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;389E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;334E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;241E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;380E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;3;163E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;3;394E;K;35;CPTableViewArchivedReusableViewsKeyD;K;6;CP$UIDd;3;395E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;148E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;396E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;397E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;398E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;399E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;401E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;402E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;288E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;241E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;239E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;15;CPTableCellViewK;8;$classesA;S;15;CPTableCellViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;403E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;404E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;405E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;355E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;406E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;151E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;407E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;408E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;151E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;409E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;410E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;411E;K;6;$afontD;K;6;CP$UIDd;3;413E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;369E;K;11;$aalignmentD;K;6;CP$UIDd;3;369E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;414E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;239E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;415E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;334E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;416E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;241E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;417E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;369E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;369E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;241E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;241E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;3;148E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;418E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;419E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;346E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;420E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;421E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;422E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;288E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;241E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;239E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;423E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;424E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;425E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;355E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;426E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;155E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;427E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;428E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;155E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;409E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;410E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;411E;K;6;$afontD;K;6;CP$UIDd;3;413E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;369E;K;11;$aalignmentD;K;6;CP$UIDd;3;369E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;429E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;239E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;415E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;334E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;416E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;241E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;417E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;369E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;369E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;241E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;241E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;3;148E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;430E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;431E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;346E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;420E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;432E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;433E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;288E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;241E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;239E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;434E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;435E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;436E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;355E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;437E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;158E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;438E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;439E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;158E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;409E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;410E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;411E;K;6;$afontD;K;6;CP$UIDd;3;413E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;369E;K;11;$aalignmentD;K;6;CP$UIDd;3;369E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;440E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;239E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;415E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;334E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;416E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;241E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;417E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;369E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;369E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;241E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;241E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;3;141E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;144E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;441E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;442E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;144E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;351E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;364E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;365E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;366E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;443E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;334E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;144E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;368E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;241E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;282E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;141E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;144E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;444E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;445E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;144E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;351E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;364E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;365E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;366E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;446E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;334E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;144E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;239E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;282E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;378E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;447E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;447E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;378E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;448E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;449E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;3;147E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;164E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;450E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;451E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;452E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;453E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;454E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;334E;K;6;$afontD;K;6;CP$UIDd;3;455E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;334E;K;11;$aalignmentD;K;6;CP$UIDd;3;285E;K;7;$aimageD;K;6;CP$UIDd;3;457E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;458E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;334E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;334E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;416E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;459E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;240E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;241E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;460E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;334E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;239E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;285E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;334E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;461E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;462E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;409E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;410E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;411E;K;6;$afontD;K;6;CP$UIDd;3;413E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;334E;K;11;$aalignmentD;K;6;CP$UIDd;3;369E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;463E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;239E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;464E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;369E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;334E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;416E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;241E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;417E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;334E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;369E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;241E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;239E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;465E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;168E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;394E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;241E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;241E;K;37;CPObjectControllerUsesLazyFetchingKeyD;K;6;CP$UIDd;3;241E;K;40;CPObjectControllerIsUsingManagedProxyKeyD;K;6;CP$UIDd;3;241E;K;33;CPObjectControllerManagedProxyKeyD;K;6;CP$UIDd;3;467E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;241E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;241E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;239E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;241E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;241E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;241E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;241E;E;D;K;10;$classnameS;24;CPUserDefaultsControllerK;8;$classesA;S;24;CPUserDefaultsControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;170E;K;33;CPUserDefaultsControllerSharedKeyD;K;6;CP$UIDd;3;239E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;E;E;S;8;delegateS;9;theWindowS;9;textFieldS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;10;terminate:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;16;resetStatistics:S;24;value: objectValue.orderS;5;valueS;17;objectValue.orderD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;10;CP.objectsD;E;E;S;41;contentArray: self.notificationStatisticsS;12;contentArrayS;27;self.notificationStatisticsD;K;6;$classD;K;6;CP$UIDd;3;214E;K;10;CP.objectsD;E;E;S;23;value: objectValue.nameS;16;objectValue.nameD;K;6;$classD;K;6;CP$UIDd;3;214E;K;10;CP.objectsD;E;E;S;24;value: objectValue.countS;17;objectValue.countD;K;6;$classD;K;6;CP$UIDd;3;214E;K;10;CP.objectsD;E;E;S;24;content: arrangedObjectsS;7;contentS;15;arrangedObjectsD;K;6;$classD;K;6;CP$UIDd;3;214E;K;10;CP.objectsD;E;E;S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;128E;E;E;S;14;NewApplicationS;14;submenuAction:d;7;1048576S;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;E;E;S;20;About NewApplicationT;S;0;F;S;12;Preferences…S;1;,S;19;Quit NewApplicationS;1;qS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;E;E;S;3;NewS;1;nS;5;Open…S;1;oS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;79E;E;E;S;10;Clear MenuS;5;CloseS;1;wS;4;SaveS;1;sS;8;Save As…S;1;Sd;7;1179648S;15;Revert to SavedS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;114E;E;E;S;4;UndoS;1;zS;4;RedoS;1;ZS;3;CutS;1;xS;4;CopyS;1;cS;5;PasteS;1;vS;6;DeleteS;10;Select AllS;1;aS;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;E;E;S;5;Find…d;1;1S;1;fS;9;Find Nextd;1;2S;1;gS;13;Find Previousd;1;3S;1;GS;22;Use Selection for Findd;1;7S;1;eS;17;Jump to SelectionS;1;jS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;E;E;S;14;Show Spelling…S;1;:S;14;Check SpellingS;1;;S;27;Check Spelling While TypingS;27;Check Grammar With SpellingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;E;E;S;14;Start SpeakingS;13;Stop SpeakingS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;E;E;S;12;Show ToolbarS;1;td;7;1572864S;18;Customize Toolbar…S;6;WindowS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;E;E;S;8;MinimizeS;1;mS;4;ZoomS;18;Bring All to FrontS;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;130E;E;E;S;19;NewApplication HelpS;1;?S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;24;{{335, -85}, {858, 573}}S;21;{{0, 0}, {1440, 878}}d;1;0S;20;{{0, 0}, {858, 573}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;E;E;S;6;normalS;6;{1, 1}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;23;{{20, 129}, {235, 424}}S;20;{{0, 0}, {235, 424}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;347E;E;E;d;2;20S;10;scrollviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;3;133E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;136E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;468E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;468E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;136E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;469E;E;S;20;{{1, 1}, {218, 422}}S;20;{{0, 0}, {218, 422}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;140E;E;E;d;1;8D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;470E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;2;18D;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;472E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;15;CPTextContainerK;8;$classesA;S;15;CPTextContainerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;358E;K;22;CPTextContainerSizeKeyD;K;6;CP$UIDd;3;473E;K;31;CPTextContainerLayoutManagerKeyD;K;6;CP$UIDd;3;475E;E;D;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;476E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;10;CP.objectsD;K;7;NSColorD;K;6;CP$UIDd;3;477E;K;17;NSBackgroundColorD;K;6;CP$UIDd;3;478E;E;E;S;23;{{-100, 509}, {87, 15}}S;18;{{0, 0}, {87, 15}}d;11;-2147483648S;8;scrollerS;27;controlSizeRegular+disabledD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;29;_horizontalScrollerDidScroll:d;1;4S;21;{{219, 1}, {15, 422}}S;19;{{0, 0}, {15, 422}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;27;_verticalScrollerDidScroll:S;24;{{286, 129}, {552, 377}}S;20;{{0, 0}, {552, 377}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;378E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;380E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;381E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;3;137E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;144E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;479E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;480E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;481E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;144E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;351E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;482E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;163E;E;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;379E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;144E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;334E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;483E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;484E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;144E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;351E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;485E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;486E;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;144E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;468E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;468E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;144E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;487E;E;S;20;{{1, 1}, {550, 376}}S;20;{{0, 0}, {550, 376}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;147E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;488E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;{{0, 0}, {550, 353}}S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;489E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;2;25S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;157E;E;E;S;22;NotificationStatisticsD;K;6;$classD;K;6;CP$UIDd;3;214E;K;10;CP.objectsD;K;32;AutomaticTableColumnIdentifier.2D;K;6;CP$UIDd;3;491E;K;32;AutomaticTableColumnIdentifier.0D;K;6;CP$UIDd;3;492E;K;32;AutomaticTableColumnIdentifier.1D;K;6;CP$UIDd;3;493E;E;E;S;32;AutomaticTableColumnIdentifier.0d;3;316d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;400E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;468E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;468E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;494E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;6;$afontD;K;6;CP$UIDd;3;496E;K;12;$atext-colorD;K;6;CP$UIDd;3;497E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;369E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;498E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;499E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;496E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;468E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;468E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;410E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;500E;K;6;$afontD;K;6;CP$UIDd;3;413E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;369E;K;11;$aalignmentD;K;6;CP$UIDd;3;369E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;501E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;502E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;503E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;334E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;416E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;239E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;239E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;385E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;369E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;369E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;241E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;241E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;241E;E;S;19;{{1, 1}, {316, 17}}S;19;{{0, 0}, {316, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;153E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;19;{{2, 0}, {312, 17}}S;19;{{0, 0}, {312, 17}}d;2;34S;9;textfieldS;18;controlSizeRegularD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;412E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;504E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;416E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;241E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;241E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;15;Table View Celld;2;-1D;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;505E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;S;32;AutomaticTableColumnIdentifier.1d;3;117f;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;3;400E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;468E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;468E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;506E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;6;$afontD;K;6;CP$UIDd;3;496E;K;12;$atext-colorD;K;6;CP$UIDd;3;497E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;334E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;507E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;508E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;496E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;468E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;468E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;410E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;500E;K;6;$afontD;K;6;CP$UIDd;3;413E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;369E;K;11;$aalignmentD;K;6;CP$UIDd;3;334E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;509E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;502E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;503E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;334E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;416E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;239E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;239E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;385E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;369E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;334E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;241E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;241E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;241E;E;S;21;{{320, 1}, {117, 17}}S;19;{{0, 0}, {117, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;156E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;19;{{2, 0}, {113, 17}}S;19;{{0, 0}, {113, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;32;AutomaticTableColumnIdentifier.2d;3;108D;K;6;$classD;K;6;CP$UIDd;3;400E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;468E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;468E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;510E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;6;$afontD;K;6;CP$UIDd;3;496E;K;12;$atext-colorD;K;6;CP$UIDd;3;497E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;334E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;511E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;512E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;496E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;468E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;468E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;410E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;500E;K;6;$afontD;K;6;CP$UIDd;3;413E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;369E;K;11;$aalignmentD;K;6;CP$UIDd;3;334E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;513E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;502E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;503E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;334E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;416E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;239E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;239E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;241E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;385E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;369E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;334E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;3;241E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;3;241E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;241E;E;S;21;{{440, 1}, {108, 17}}S;19;{{0, 0}, {108, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;159E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;19;{{2, 0}, {104, 17}}S;19;{{0, 0}, {104, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;21;{{1, 243}, {223, 15}}S;19;{{0, 0}, {223, 15}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;23;{{224, 258}, {15, 102}}S;19;{{0, 0}, {15, 102}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;19;{{0, 0}, {550, 25}}S;14;tableHeaderRowD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;22;{{286, 532}, {96, 25}}S;18;{{0, 0}, {96, 25}}d;2;12S;6;buttonS;27;bordered+controlSizeRegularD;K;6;$classD;K;6;CP$UIDd;3;412E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;504E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;416E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;239E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;241E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;239E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;456E;K;4;nameD;K;6;CP$UIDd;3;514E;K;12;defaultValueD;K;6;CP$UIDd;3;516E;K;5;stateD;K;6;CP$UIDd;3;517E;K;5;valueD;K;6;CP$UIDd;3;518E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;Reset statsd;2;14S;21;{{20, 14}, {818, 99}}S;19;{{0, 0}, {818, 99}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;355;This test application will track delegate methods and notification messages from the CPTextView to the left below. +  +The Call order column tells in which order they are called. It is an increasing global number for each call to a delegate method or notification message. +The Number of calls column show how many times this method or message has been sent.S;13;AppControllerD;K;10;$classnameS;15;_CPManagedProxyK;8;$classesA;S;15;_CPManagedProxyS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;466E;K;27;CPManagedProxyEntityNameKeyD;K;6;CP$UIDd;1;0E;K;31;CPManagedProxyFetchPredicateKeyD;K;6;CP$UIDd;1;0E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;E;E;S;5;colorD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;E;E;S;15;{218, 10000000}D;K;10;$classnameS;15;CPLayoutManagerK;8;$classesA;S;15;CPLayoutManagerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;474E;K;29;CPLayoutManagerTextStorageKeyD;K;6;CP$UIDd;3;520E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;282E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;521E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;522E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;S;21;{{1, 354}, {550, 23}}S;19;{{0, 0}, {550, 23}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;163E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;{{0, 352}, {14, 25}}S;18;{{0, 0}, {14, 25}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;282E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;523E;D;K;6;CP$UIDd;3;523E;D;K;6;CP$UIDd;3;523E;D;K;6;CP$UIDd;3;282E;E;E;D;K;10;$classnameS;5;CPCibK;8;$classesA;S;5;CPCibS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;490E;K;16;CPCibDataFileKeyD;K;6;CP$UIDd;3;524E;E;D;K;6;$classD;K;6;CP$UIDd;3;490E;K;16;CPCibDataFileKeyD;K;6;CP$UIDd;3;525E;E;D;K;6;$classD;K;6;CP$UIDd;3;490E;K;16;CPCibDataFileKeyD;K;6;CP$UIDd;3;526E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;528E;E;E;S;12;columnHeaderD;K;6;$classD;K;6;CP$UIDd;3;412E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;504E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;452E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;239E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;241E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;3;352E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;529E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;36;Delegate method or Notification nameS;41;controlSizeRegular+editable+tableDataViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;531E;E;E;S;9;Text Celld;4;3072S;28;_CPFontSystemFacePlaceholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;532E;D;K;6;CP$UIDd;3;532E;D;K;6;CP$UIDd;3;532E;D;K;6;CP$UIDd;3;282E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;533E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;10;Call orderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;534E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;535E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;15;Number of callsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;536E;E;E;S;5;imageD;K;10;$classnameS;6;CPNullK;8;$classesA;S;6;CPNullS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;515E;E;S;11;highlightedD;K;6;$classD;K;6;CP$UIDd;3;412E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;537E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;538E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;241E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;241E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;241E;E;D;K;10;$classnameS;13;CPTextStorageK;8;$classesA;S;13;CPTextStorageS;25;CPMutableAttributedStringS;18;CPAttributedStringS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;519E;K;24;CPAttributedStringStringD;K;6;CP$UIDd;3;240E;K;24;CPAttributedStringRangesD;K;6;CP$UIDd;3;539E;K;28;CPAttributedStringAttributesD;K;6;CP$UIDd;3;540E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;282E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;541E;D;K;6;CP$UIDd;3;541E;D;K;6;CP$UIDd;3;541E;D;K;6;CP$UIDd;3;282E;E;E;f;3;0.8S;8712;MjgwTlBMSVNUOzEuMDtEO0s7NDskdG9wRDtLOzE4O0NQQ2liT2JqZWN0RGF0YUtleUQ7Szs2O0NQJFVJRGQ7MTsyRTtFO0s7ODskb2JqZWN0c0E7Uzs1OyRudWxsRDtLOzEwOyRjbGFzc25hbWVTOzE2O19DUENpYk9iamVjdERhdGFLOzg7JGNsYXNzZXNBO1M7MTY7X0NQQ2liT2JqZWN0RGF0YVM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzE7MUU7SzsyODtfQ1BDaWJPYmplY3REYXRhTmFtZXNLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzA7X0NQQ2liT2JqZWN0RGF0YU5hbWVzVmFsdWVzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzA7X0NQQ2liT2JqZWN0RGF0YUNsYXNzZXNLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzI7X0NQQ2liT2JqZWN0RGF0YUNsYXNzZXNWYWx1ZXNLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzszMDtfQ1BDaWJPYmplY3REYXRhQ29ubmVjdGlvbnNLZXlEO0s7NjtDUCRVSURkOzE7NEU7SzsyODtfQ1BDaWJPYmplY3REYXRhRnJhbWV3b3JrS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MjY7X0NQQ2liT2JqZWN0RGF0YU5leHRPaWRLZXlEO0s7NjtDUCRVSURkOzE7NUU7SzszMDtfQ1BDaWJPYmplY3REYXRhT2JqZWN0c0tleXNLZXlEO0s7NjtDUCRVSURkOzE7NkU7SzszMjtfQ1BDaWJPYmplY3REYXRhT2JqZWN0c1ZhbHVlc0tleUQ7Szs2O0NQJFVJRGQ7MTs3RTtLOzI2O19DUENpYk9iamVjdERhdGFPaWRLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzhFO0s7Mjg7X0NQQ2liT2JqZWN0RGF0YU9pZFZhbHVlc0tleUQ7Szs2O0NQJFVJRGQ7MTs5RTtLOzI4O19DUENpYk9iamVjdERhdGFGaWxlT3duZXJLZXlEO0s7NjtDUCRVSURkOzI7MTFFO0s7MzM7X0NQQ2liT2JqZWN0RGF0YVZpc2libGVXaW5kb3dzS2V5RDtLOzY7Q1AkVUlEZDsyOzEzRTtFO0Q7SzsxMDskY2xhc3NuYW1lUzs3O0NQQXJyYXlLOzg7JGNsYXNzZXNBO1M7NztDUEFycmF5Uzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0Q7Szs2O0NQJFVJRGQ7MjsxNUU7RDtLOzY7Q1AkVUlEZDsyOzE3RTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0Q7Szs2O0NQJFVJRGQ7MjsxOUU7RDtLOzY7Q1AkVUlEZDsyOzIxRTtEO0s7NjtDUCRVSURkOzE7MEU7RDtLOzY7Q1AkVUlEZDsyOzIyRTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RDtLOzY7Q1AkVUlEZDsyOzExRTtEO0s7NjtDUCRVSURkOzI7MTlFO0Q7Szs2O0NQJFVJRGQ7MjsyMUU7RDtLOzY7Q1AkVUlEZDsyOzExRTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0U7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MTg7X0NQQ2liQ3VzdG9tT2JqZWN0Szs4OyRjbGFzc2VzQTtTOzE4O19DUENpYkN1c3RvbU9iamVjdFM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MTBFO0s7Mjc7X0NQQ2liQ3VzdG9tT2JqZWN0Q2xhc3NOYW1lRDtLOzY7Q1AkVUlEZDsyOzIzRTtFO0Q7SzsxMDskY2xhc3NuYW1lUzs1O0NQU2V0Szs4OyRjbGFzc2VzQTtTOzU7Q1BTZXRTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzEyRTtLOzE1O0NQU2V0T2JqZWN0c0tleUQ7Szs2O0NQJFVJRGQ7MjsyNEU7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MjA7Q1BDaWJPdXRsZXRDb25uZWN0b3JLOzg7JGNsYXNzZXNBO1M7MjA7Q1BDaWJPdXRsZXRDb25uZWN0b3JTOzE0O0NQQ2liQ29ubmVjdG9yUzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MjsxNEU7SzsyNDtfQ1BDaWJDb25uZWN0b3JTb3VyY2VLZXlEO0s7NjtDUCRVSURkOzI7MTlFO0s7Mjk7X0NQQ2liQ29ubmVjdG9yRGVzdGluYXRpb25LZXlEO0s7NjtDUCRVSURkOzI7MjFFO0s7MjM7X0NQQ2liQ29ubmVjdG9yTGFiZWxLZXlEO0s7NjtDUCRVSURkOzI7MjVFO0U7RDtLOzEwOyRjbGFzc25hbWVTOzIxO0NQQ2liQmluZGluZ0Nvbm5lY3Rvcks7ODskY2xhc3Nlc0E7UzsyMTtDUENpYkJpbmRpbmdDb25uZWN0b3JTOzE0O0NQQ2liQ29ubmVjdG9yUzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MjsxNkU7SzsyNDtfQ1BDaWJDb25uZWN0b3JTb3VyY2VLZXlEO0s7NjtDUCRVSURkOzI7MjFFO0s7Mjk7X0NQQ2liQ29ubmVjdG9yRGVzdGluYXRpb25LZXlEO0s7NjtDUCRVSURkOzI7MTlFO0s7MjM7X0NQQ2liQ29ubmVjdG9yTGFiZWxLZXlEO0s7NjtDUCRVSURkOzI7MjZFO0s7MzE7Q1BDaWJCaW5kaW5nQ29ubmVjdG9yQmluZGluZ0tleUQ7Szs2O0NQJFVJRGQ7MjsyN0U7SzszMTtDUENpYkJpbmRpbmdDb25uZWN0b3JLZXlQYXRoS2V5RDtLOzY7Q1AkVUlEZDsyOzI4RTtLOzMxO0NQQ2liQmluZGluZ0Nvbm5lY3Rvck9wdGlvbnNLZXlEO0s7NjtDUCRVSURkOzI7MzBFO0U7RDtLOzEwOyRjbGFzc25hbWVTOzE1O0NQVGFibGVDZWxsVmlld0s7ODskY2xhc3Nlc0E7UzsxNTtDUFRhYmxlQ2VsbFZpZXdTOzY7Q1BWaWV3UzsxMTtDUFJlc3BvbmRlclM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MThFO0s7MTg7Q1BSZXNwb25kZXJNZW51S2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MTI7Q1BWaWV3VGFnS2V5RDtLOzY7Q1AkVUlEZDsyOzMxRTtLOzE0O0NQVmlld0ZyYW1lS2V5RDtLOzY7Q1AkVUlEZDsyOzMyRTtLOzE1O0NQVmlld0JvdW5kc0tleUQ7Szs2O0NQJFVJRGQ7MjszM0U7SzsxNztDUFZpZXdTdWJ2aWV3c0tleUQ7Szs2O0NQJFVJRGQ7MjszNEU7SzsyMjtDUFZpZXdBdXRvcmVzaXppbmdNYXNrRDtLOzY7Q1AkVUlEZDsyOzM1RTtLOzE5O0NQVmlld1RoZW1lQ2xhc3NLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsxOTtDUFZpZXdUaGVtZVN0YXRlS2V5RDtLOzY7Q1AkVUlEZDsyOzM2RTtLOzIwO0NQUmV1c2VJZGVudGlmaWVyS2V5RDtLOzY7Q1AkVUlEZDsyOzM3RTtLOzE0O0NQVmlld1NjYWxlS2V5RDtLOzY7Q1AkVUlEZDsyOzM4RTtLOzE4O0NQVmlld1NpemVTY2FsZUtleUQ7Szs2O0NQJFVJRGQ7MjszOEU7SzsxNztDUFZpZXdJc1NjYWxlZEtleUQ7Szs2O0NQJFVJRGQ7MjszOUU7SzsxOTtDUFZpZXdBcHBlYXJhbmNlS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MjI7Q1BWaWV3VHJhY2tpbmdBcmVhc0tleUQ7Szs2O0NQJFVJRGQ7Mjs0MEU7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MTE7Q1BUZXh0RmllbGRLOzg7JGNsYXNzZXNBO1M7MTE7Q1BUZXh0RmllbGRTOzk7Q1BDb250cm9sUzs2O0NQVmlld1M7MTE7Q1BSZXNwb25kZXJTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzIwRTtLOzI3O0NQUmVzcG9uZGVyTmV4dFJlc3BvbmRlcktleUQ7Szs2O0NQJFVJRGQ7MjsxOUU7SzsxODtDUFJlc3BvbmRlck1lbnVLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsxMjtDUFZpZXdUYWdLZXlEO0s7NjtDUCRVSURkOzI7MzFFO0s7MTQ7Q1BWaWV3RnJhbWVLZXlEO0s7NjtDUCRVSURkOzI7NDFFO0s7MTU7Q1BWaWV3Qm91bmRzS2V5RDtLOzY7Q1AkVUlEZDsyOzQyRTtLOzE4O0NQVmlld1N1cGVydmlld0tleUQ7Szs2O0NQJFVJRGQ7MjsxOUU7SzsyMjtDUFZpZXdBdXRvcmVzaXppbmdNYXNrRDtLOzY7Q1AkVUlEZDsyOzQzRTtLOzE5O0NQVmlld1RoZW1lQ2xhc3NLZXlEO0s7NjtDUCRVSURkOzI7NDRFO0s7MTk7Q1BWaWV3VGhlbWVTdGF0ZUtleUQ7Szs2O0NQJFVJRGQ7Mjs0NUU7Szs2OyRhZm9udEQ7Szs2O0NQJFVJRGQ7Mjs0N0U7SzsxNzskYWxpbmUtYnJlYWstbW9kZUQ7Szs2O0NQJFVJRGQ7Mjs0OEU7SzsxMTskYWFsaWdubWVudEQ7Szs2O0NQJFVJRGQ7Mjs0OEU7SzsxNDtDUFZpZXdTY2FsZUtleUQ7Szs2O0NQJFVJRGQ7MjszOEU7SzsxODtDUFZpZXdTaXplU2NhbGVLZXlEO0s7NjtDUCRVSURkOzI7MzhFO0s7MTc7Q1BWaWV3SXNTY2FsZWRLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7MTk7Q1BWaWV3QXBwZWFyYW5jZUtleUQ7Szs2O0NQJFVJRGQ7MTswRTtLOzIyO0NQVmlld1RyYWNraW5nQXJlYXNLZXlEO0s7NjtDUCRVSURkOzI7NDlFO0s7MzU7Q1BDb250cm9sU2VuZHNBY3Rpb25PbkVuZEVkaXRpbmdLZXlEO0s7NjtDUCRVSURkOzI7NTBFO0s7MTc7Q1BDb250cm9sVmFsdWVLZXlEO0s7NjtDUCRVSURkOzI7NTFFO0s7MjQ7Q1BDb250cm9sU2VuZEFjdGlvbk9uS2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzIzO0NQQ29udHJvbENvbnRyb2xTaXplS2V5RDtLOzY7Q1AkVUlEZDsyOzMxRTtLOzMzO0NQQ29udHJvbEJhc2VXcml0dGluZ0RpcmVjdGlvbktleUQ7Szs2O0NQJFVJRGQ7Mjs1MkU7SzsyNDtDUFRleHRGaWVsZElzRWRpdGFibGVLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7MjY7Q1BUZXh0RmllbGRJc1NlbGVjdGFibGVLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7Mjk7Q1BUZXh0RmllbGREcmF3c0JhY2tncm91bmRLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7Mjk7Q1BUZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3JLZXlEO0s7NjtDUCRVSURkOzI7NTRFO0s7Mjc7Q1BUZXh0RmllbGRMaW5lQnJlYWtNb2RlS2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzIzO0NQVGV4dEZpZWxkQWxpZ25tZW50S2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzMxO0NQVGV4dEZpZWxkUGxhY2Vob2xkZXJTdHJpbmdLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsyOTtDUFRleHRGaWVsZFVzZXNTaW5nbGVMaW5lTW9kZUQ7Szs2O0NQJFVJRGQ7MjszOUU7SzsxNjtDUFRleHRGaWVsZFdyYXBzRDtLOzY7Q1AkVUlEZDsyOzM5RTtLOzE4O0NQVGV4dEZpZWxkU2Nyb2xsc0Q7Szs2O0NQJFVJRGQ7MjszOUU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MTBFO0s7Mjc7X0NQQ2liQ3VzdG9tT2JqZWN0Q2xhc3NOYW1lRDtLOzY7Q1AkVUlEZDsyOzU1RTtFO1M7ODtDUE9iamVjdEQ7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0U7RTtTOzk7dGV4dEZpZWxkUzsyNDt2YWx1ZTogb2JqZWN0VmFsdWUuY291bnRTOzU7dmFsdWVTOzE3O29iamVjdFZhbHVlLmNvdW50RDtLOzEwOyRjbGFzc25hbWVTOzEyO0NQRGljdGlvbmFyeUs7ODskY2xhc3Nlc0E7UzsxMjtDUERpY3Rpb25hcnlTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzI5RTtLOzEwO0NQLm9iamVjdHNEO0U7RTtkOzE7MFM7MjE7e3s0NDAsIDF9LCB7MTA4LCAxN319UzsxOTt7ezAsIDB9LCB7MTA4LCAxN319RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RDtLOzY7Q1AkVUlEZDsyOzIxRTtFO0U7ZDsyOzE4Uzs2O25vcm1hbFM7MzI7QXV0b21hdGljVGFibGVDb2x1bW5JZGVudGlmaWVyLjJTOzY7ezEsIDF9RjtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzE7M0U7SzsxMDtDUC5vYmplY3RzQTtFO0U7UzsxOTt7ezIsIDB9LCB7MTA0LCAxN319UzsxOTt7ezAsIDB9LCB7MTA0LCAxN319ZDsyOzM0Uzs5O3RleHRmaWVsZFM7MTg7Y29udHJvbFNpemVSZWd1bGFyRDtLOzEwOyRjbGFzc25hbWVTOzY7Q1BGb250Szs4OyRjbGFzc2VzQTtTOzY7Q1BGb250Uzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7Mjs0NkU7SzsxMztDUEZvbnROYW1lS2V5RDtLOzY7Q1AkVUlEZDsyOzU2RTtLOzEzO0NQRm9udFNpemVLZXlEO0s7NjtDUCRVSURkOzI7NTJFO0s7MTU7Q1BGb250SXNCb2xkS2V5RDtLOzY7Q1AkVUlEZDsyOzM5RTtLOzE3O0NQRm9udElzSXRhbGljS2V5RDtLOzY7Q1AkVUlEZDsyOzM5RTtLOzE3O0NQRm9udElzU3lzdGVtS2V5RDtLOzY7Q1AkVUlEZDsyOzUwRTtFO2Q7MTs0RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RTtFO1Q7UzsxNTtUYWJsZSBWaWV3IENlbGxkOzI7LTFEO0s7MTA7JGNsYXNzbmFtZVM7NztDUENvbG9ySzs4OyRjbGFzc2VzQTtTOzc7Q1BDb2xvclM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7NTNFO0s7MjA7Q1BDb2xvckNvbXBvbmVudHNLZXlEO0s7NjtDUCRVSURkOzI7NTdFO0s7MTk7Q1BWaWV3VGhlbWVDbGFzc0tleUQ7Szs2O0NQJFVJRGQ7Mjs1OEU7SzsxOTtDUFZpZXdUaGVtZVN0YXRlS2V5RDtLOzY7Q1AkVUlEZDsyOzM2RTtFO1M7MTM7Q1BBcHBsaWNhdGlvblM7Mjg7X0NQRm9udFN5c3RlbUZhY2VQbGFjZWhvbGRlckQ7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0Q7Szs2O0NQJFVJRGQ7Mjs1OUU7RDtLOzY7Q1AkVUlEZDsyOzU5RTtEO0s7NjtDUCRVSURkOzI7NTlFO0Q7Szs2O0NQJFVJRGQ7Mjs2MEU7RTtFO1M7NTtjb2xvcmY7MTg7MC42ODYyNzQ1MDk4MDM5MjE2ZDsxOzFFO0s7OTskYXJjaGl2ZXJTOzE1O0NQS2V5ZWRBcmNoaXZlcks7ODskdmVyc2lvblM7NjsxMDAwMDBFOw==S;8704;MjgwTlBMSVNUOzEuMDtEO0s7NDskdG9wRDtLOzE4O0NQQ2liT2JqZWN0RGF0YUtleUQ7Szs2O0NQJFVJRGQ7MTsyRTtFO0s7ODskb2JqZWN0c0E7Uzs1OyRudWxsRDtLOzEwOyRjbGFzc25hbWVTOzE2O19DUENpYk9iamVjdERhdGFLOzg7JGNsYXNzZXNBO1M7MTY7X0NQQ2liT2JqZWN0RGF0YVM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzE7MUU7SzsyODtfQ1BDaWJPYmplY3REYXRhTmFtZXNLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzA7X0NQQ2liT2JqZWN0RGF0YU5hbWVzVmFsdWVzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzA7X0NQQ2liT2JqZWN0RGF0YUNsYXNzZXNLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzI7X0NQQ2liT2JqZWN0RGF0YUNsYXNzZXNWYWx1ZXNLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzszMDtfQ1BDaWJPYmplY3REYXRhQ29ubmVjdGlvbnNLZXlEO0s7NjtDUCRVSURkOzE7NEU7SzsyODtfQ1BDaWJPYmplY3REYXRhRnJhbWV3b3JrS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MjY7X0NQQ2liT2JqZWN0RGF0YU5leHRPaWRLZXlEO0s7NjtDUCRVSURkOzE7NUU7SzszMDtfQ1BDaWJPYmplY3REYXRhT2JqZWN0c0tleXNLZXlEO0s7NjtDUCRVSURkOzE7NkU7SzszMjtfQ1BDaWJPYmplY3REYXRhT2JqZWN0c1ZhbHVlc0tleUQ7Szs2O0NQJFVJRGQ7MTs3RTtLOzI2O19DUENpYk9iamVjdERhdGFPaWRLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzhFO0s7Mjg7X0NQQ2liT2JqZWN0RGF0YU9pZFZhbHVlc0tleUQ7Szs2O0NQJFVJRGQ7MTs5RTtLOzI4O19DUENpYk9iamVjdERhdGFGaWxlT3duZXJLZXlEO0s7NjtDUCRVSURkOzI7MTFFO0s7MzM7X0NQQ2liT2JqZWN0RGF0YVZpc2libGVXaW5kb3dzS2V5RDtLOzY7Q1AkVUlEZDsyOzEzRTtFO0Q7SzsxMDskY2xhc3NuYW1lUzs3O0NQQXJyYXlLOzg7JGNsYXNzZXNBO1M7NztDUEFycmF5Uzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0Q7Szs2O0NQJFVJRGQ7MjsxNUU7RDtLOzY7Q1AkVUlEZDsyOzE3RTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0Q7Szs2O0NQJFVJRGQ7MjsxOUU7RDtLOzY7Q1AkVUlEZDsyOzIxRTtEO0s7NjtDUCRVSURkOzE7MEU7RDtLOzY7Q1AkVUlEZDsyOzIyRTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RDtLOzY7Q1AkVUlEZDsyOzExRTtEO0s7NjtDUCRVSURkOzI7MTlFO0Q7Szs2O0NQJFVJRGQ7MjsyMUU7RDtLOzY7Q1AkVUlEZDsyOzExRTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0U7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MTg7X0NQQ2liQ3VzdG9tT2JqZWN0Szs4OyRjbGFzc2VzQTtTOzE4O19DUENpYkN1c3RvbU9iamVjdFM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MTBFO0s7Mjc7X0NQQ2liQ3VzdG9tT2JqZWN0Q2xhc3NOYW1lRDtLOzY7Q1AkVUlEZDsyOzIzRTtFO0Q7SzsxMDskY2xhc3NuYW1lUzs1O0NQU2V0Szs4OyRjbGFzc2VzQTtTOzU7Q1BTZXRTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzEyRTtLOzE1O0NQU2V0T2JqZWN0c0tleUQ7Szs2O0NQJFVJRGQ7MjsyNEU7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MjA7Q1BDaWJPdXRsZXRDb25uZWN0b3JLOzg7JGNsYXNzZXNBO1M7MjA7Q1BDaWJPdXRsZXRDb25uZWN0b3JTOzE0O0NQQ2liQ29ubmVjdG9yUzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MjsxNEU7SzsyNDtfQ1BDaWJDb25uZWN0b3JTb3VyY2VLZXlEO0s7NjtDUCRVSURkOzI7MTlFO0s7Mjk7X0NQQ2liQ29ubmVjdG9yRGVzdGluYXRpb25LZXlEO0s7NjtDUCRVSURkOzI7MjFFO0s7MjM7X0NQQ2liQ29ubmVjdG9yTGFiZWxLZXlEO0s7NjtDUCRVSURkOzI7MjVFO0U7RDtLOzEwOyRjbGFzc25hbWVTOzIxO0NQQ2liQmluZGluZ0Nvbm5lY3Rvcks7ODskY2xhc3Nlc0E7UzsyMTtDUENpYkJpbmRpbmdDb25uZWN0b3JTOzE0O0NQQ2liQ29ubmVjdG9yUzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MjsxNkU7SzsyNDtfQ1BDaWJDb25uZWN0b3JTb3VyY2VLZXlEO0s7NjtDUCRVSURkOzI7MjFFO0s7Mjk7X0NQQ2liQ29ubmVjdG9yRGVzdGluYXRpb25LZXlEO0s7NjtDUCRVSURkOzI7MTlFO0s7MjM7X0NQQ2liQ29ubmVjdG9yTGFiZWxLZXlEO0s7NjtDUCRVSURkOzI7MjZFO0s7MzE7Q1BDaWJCaW5kaW5nQ29ubmVjdG9yQmluZGluZ0tleUQ7Szs2O0NQJFVJRGQ7MjsyN0U7SzszMTtDUENpYkJpbmRpbmdDb25uZWN0b3JLZXlQYXRoS2V5RDtLOzY7Q1AkVUlEZDsyOzI4RTtLOzMxO0NQQ2liQmluZGluZ0Nvbm5lY3Rvck9wdGlvbnNLZXlEO0s7NjtDUCRVSURkOzI7MzBFO0U7RDtLOzEwOyRjbGFzc25hbWVTOzE1O0NQVGFibGVDZWxsVmlld0s7ODskY2xhc3Nlc0E7UzsxNTtDUFRhYmxlQ2VsbFZpZXdTOzY7Q1BWaWV3UzsxMTtDUFJlc3BvbmRlclM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MThFO0s7MTg7Q1BSZXNwb25kZXJNZW51S2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MTI7Q1BWaWV3VGFnS2V5RDtLOzY7Q1AkVUlEZDsyOzMxRTtLOzE0O0NQVmlld0ZyYW1lS2V5RDtLOzY7Q1AkVUlEZDsyOzMyRTtLOzE1O0NQVmlld0JvdW5kc0tleUQ7Szs2O0NQJFVJRGQ7MjszM0U7SzsxNztDUFZpZXdTdWJ2aWV3c0tleUQ7Szs2O0NQJFVJRGQ7MjszNEU7SzsyMjtDUFZpZXdBdXRvcmVzaXppbmdNYXNrRDtLOzY7Q1AkVUlEZDsyOzM1RTtLOzE5O0NQVmlld1RoZW1lQ2xhc3NLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsxOTtDUFZpZXdUaGVtZVN0YXRlS2V5RDtLOzY7Q1AkVUlEZDsyOzM2RTtLOzIwO0NQUmV1c2VJZGVudGlmaWVyS2V5RDtLOzY7Q1AkVUlEZDsyOzM3RTtLOzE0O0NQVmlld1NjYWxlS2V5RDtLOzY7Q1AkVUlEZDsyOzM4RTtLOzE4O0NQVmlld1NpemVTY2FsZUtleUQ7Szs2O0NQJFVJRGQ7MjszOEU7SzsxNztDUFZpZXdJc1NjYWxlZEtleUQ7Szs2O0NQJFVJRGQ7MjszOUU7SzsxOTtDUFZpZXdBcHBlYXJhbmNlS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MjI7Q1BWaWV3VHJhY2tpbmdBcmVhc0tleUQ7Szs2O0NQJFVJRGQ7Mjs0MEU7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MTE7Q1BUZXh0RmllbGRLOzg7JGNsYXNzZXNBO1M7MTE7Q1BUZXh0RmllbGRTOzk7Q1BDb250cm9sUzs2O0NQVmlld1M7MTE7Q1BSZXNwb25kZXJTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzIwRTtLOzI3O0NQUmVzcG9uZGVyTmV4dFJlc3BvbmRlcktleUQ7Szs2O0NQJFVJRGQ7MjsxOUU7SzsxODtDUFJlc3BvbmRlck1lbnVLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsxMjtDUFZpZXdUYWdLZXlEO0s7NjtDUCRVSURkOzI7MzFFO0s7MTQ7Q1BWaWV3RnJhbWVLZXlEO0s7NjtDUCRVSURkOzI7NDFFO0s7MTU7Q1BWaWV3Qm91bmRzS2V5RDtLOzY7Q1AkVUlEZDsyOzQyRTtLOzE4O0NQVmlld1N1cGVydmlld0tleUQ7Szs2O0NQJFVJRGQ7MjsxOUU7SzsyMjtDUFZpZXdBdXRvcmVzaXppbmdNYXNrRDtLOzY7Q1AkVUlEZDsyOzQzRTtLOzE5O0NQVmlld1RoZW1lQ2xhc3NLZXlEO0s7NjtDUCRVSURkOzI7NDRFO0s7MTk7Q1BWaWV3VGhlbWVTdGF0ZUtleUQ7Szs2O0NQJFVJRGQ7Mjs0NUU7Szs2OyRhZm9udEQ7Szs2O0NQJFVJRGQ7Mjs0N0U7SzsxNzskYWxpbmUtYnJlYWstbW9kZUQ7Szs2O0NQJFVJRGQ7Mjs0OEU7SzsxMTskYWFsaWdubWVudEQ7Szs2O0NQJFVJRGQ7Mjs0OEU7SzsxNDtDUFZpZXdTY2FsZUtleUQ7Szs2O0NQJFVJRGQ7MjszOEU7SzsxODtDUFZpZXdTaXplU2NhbGVLZXlEO0s7NjtDUCRVSURkOzI7MzhFO0s7MTc7Q1BWaWV3SXNTY2FsZWRLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7MTk7Q1BWaWV3QXBwZWFyYW5jZUtleUQ7Szs2O0NQJFVJRGQ7MTswRTtLOzIyO0NQVmlld1RyYWNraW5nQXJlYXNLZXlEO0s7NjtDUCRVSURkOzI7NDlFO0s7MzU7Q1BDb250cm9sU2VuZHNBY3Rpb25PbkVuZEVkaXRpbmdLZXlEO0s7NjtDUCRVSURkOzI7NTBFO0s7MTc7Q1BDb250cm9sVmFsdWVLZXlEO0s7NjtDUCRVSURkOzI7NTFFO0s7MjQ7Q1BDb250cm9sU2VuZEFjdGlvbk9uS2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzIzO0NQQ29udHJvbENvbnRyb2xTaXplS2V5RDtLOzY7Q1AkVUlEZDsyOzMxRTtLOzMzO0NQQ29udHJvbEJhc2VXcml0dGluZ0RpcmVjdGlvbktleUQ7Szs2O0NQJFVJRGQ7Mjs1MkU7SzsyNDtDUFRleHRGaWVsZElzRWRpdGFibGVLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7MjY7Q1BUZXh0RmllbGRJc1NlbGVjdGFibGVLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7Mjk7Q1BUZXh0RmllbGREcmF3c0JhY2tncm91bmRLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7Mjk7Q1BUZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3JLZXlEO0s7NjtDUCRVSURkOzI7NTRFO0s7Mjc7Q1BUZXh0RmllbGRMaW5lQnJlYWtNb2RlS2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzIzO0NQVGV4dEZpZWxkQWxpZ25tZW50S2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzMxO0NQVGV4dEZpZWxkUGxhY2Vob2xkZXJTdHJpbmdLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsyOTtDUFRleHRGaWVsZFVzZXNTaW5nbGVMaW5lTW9kZUQ7Szs2O0NQJFVJRGQ7MjszOUU7SzsxNjtDUFRleHRGaWVsZFdyYXBzRDtLOzY7Q1AkVUlEZDsyOzM5RTtLOzE4O0NQVGV4dEZpZWxkU2Nyb2xsc0Q7Szs2O0NQJFVJRGQ7MjszOUU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MTBFO0s7Mjc7X0NQQ2liQ3VzdG9tT2JqZWN0Q2xhc3NOYW1lRDtLOzY7Q1AkVUlEZDsyOzU1RTtFO1M7ODtDUE9iamVjdEQ7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0U7RTtTOzk7dGV4dEZpZWxkUzsyMzt2YWx1ZTogb2JqZWN0VmFsdWUubmFtZVM7NTt2YWx1ZVM7MTY7b2JqZWN0VmFsdWUubmFtZUQ7SzsxMDskY2xhc3NuYW1lUzsxMjtDUERpY3Rpb25hcnlLOzg7JGNsYXNzZXNBO1M7MTI7Q1BEaWN0aW9uYXJ5Uzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MjsyOUU7SzsxMDtDUC5vYmplY3RzRDtFO0U7ZDsxOzBTOzE5O3t7MSwgMX0sIHszMTYsIDE3fX1TOzE5O3t7MCwgMH0sIHszMTYsIDE3fX1EO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzE7M0U7SzsxMDtDUC5vYmplY3RzQTtEO0s7NjtDUCRVSURkOzI7MjFFO0U7RTtkOzI7MThTOzY7bm9ybWFsUzszMjtBdXRvbWF0aWNUYWJsZUNvbHVtbklkZW50aWZpZXIuMFM7Njt7MSwgMX1GO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0U7RTtTOzE5O3t7MiwgMH0sIHszMTIsIDE3fX1TOzE5O3t7MCwgMH0sIHszMTIsIDE3fX1kOzI7MzRTOzk7dGV4dGZpZWxkUzsxODtjb250cm9sU2l6ZVJlZ3VsYXJEO0s7MTA7JGNsYXNzbmFtZVM7NjtDUEZvbnRLOzg7JGNsYXNzZXNBO1M7NjtDUEZvbnRTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzQ2RTtLOzEzO0NQRm9udE5hbWVLZXlEO0s7NjtDUCRVSURkOzI7NTZFO0s7MTM7Q1BGb250U2l6ZUtleUQ7Szs2O0NQJFVJRGQ7Mjs1MkU7SzsxNTtDUEZvbnRJc0JvbGRLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7MTc7Q1BGb250SXNJdGFsaWNLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7MTc7Q1BGb250SXNTeXN0ZW1LZXlEO0s7NjtDUCRVSURkOzI7NTBFO0U7ZDsxOzREO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzE7M0U7SzsxMDtDUC5vYmplY3RzQTtFO0U7VDtTOzE1O1RhYmxlIFZpZXcgQ2VsbGQ7MjstMUQ7SzsxMDskY2xhc3NuYW1lUzs3O0NQQ29sb3JLOzg7JGNsYXNzZXNBO1M7NztDUENvbG9yUzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7Mjs1M0U7SzsyMDtDUENvbG9yQ29tcG9uZW50c0tleUQ7Szs2O0NQJFVJRGQ7Mjs1N0U7SzsxOTtDUFZpZXdUaGVtZUNsYXNzS2V5RDtLOzY7Q1AkVUlEZDsyOzU4RTtLOzE5O0NQVmlld1RoZW1lU3RhdGVLZXlEO0s7NjtDUCRVSURkOzI7MzZFO0U7UzsxMztDUEFwcGxpY2F0aW9uUzsyODtfQ1BGb250U3lzdGVtRmFjZVBsYWNlaG9sZGVyRDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RDtLOzY7Q1AkVUlEZDsyOzU5RTtEO0s7NjtDUCRVSURkOzI7NTlFO0Q7Szs2O0NQJFVJRGQ7Mjs1OUU7RDtLOzY7Q1AkVUlEZDsyOzYwRTtFO0U7Uzs1O2NvbG9yZjsxODswLjY4NjI3NDUwOTgwMzkyMTZkOzE7MUU7Szs5OyRhcmNoaXZlclM7MTU7Q1BLZXllZEFyY2hpdmVySzs4OyR2ZXJzaW9uUzs2OzEwMDAwMEU7S;8712;MjgwTlBMSVNUOzEuMDtEO0s7NDskdG9wRDtLOzE4O0NQQ2liT2JqZWN0RGF0YUtleUQ7Szs2O0NQJFVJRGQ7MTsyRTtFO0s7ODskb2JqZWN0c0E7Uzs1OyRudWxsRDtLOzEwOyRjbGFzc25hbWVTOzE2O19DUENpYk9iamVjdERhdGFLOzg7JGNsYXNzZXNBO1M7MTY7X0NQQ2liT2JqZWN0RGF0YVM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzE7MUU7SzsyODtfQ1BDaWJPYmplY3REYXRhTmFtZXNLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzA7X0NQQ2liT2JqZWN0RGF0YU5hbWVzVmFsdWVzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzA7X0NQQ2liT2JqZWN0RGF0YUNsYXNzZXNLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MzI7X0NQQ2liT2JqZWN0RGF0YUNsYXNzZXNWYWx1ZXNLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzszMDtfQ1BDaWJPYmplY3REYXRhQ29ubmVjdGlvbnNLZXlEO0s7NjtDUCRVSURkOzE7NEU7SzsyODtfQ1BDaWJPYmplY3REYXRhRnJhbWV3b3JrS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MjY7X0NQQ2liT2JqZWN0RGF0YU5leHRPaWRLZXlEO0s7NjtDUCRVSURkOzE7NUU7SzszMDtfQ1BDaWJPYmplY3REYXRhT2JqZWN0c0tleXNLZXlEO0s7NjtDUCRVSURkOzE7NkU7SzszMjtfQ1BDaWJPYmplY3REYXRhT2JqZWN0c1ZhbHVlc0tleUQ7Szs2O0NQJFVJRGQ7MTs3RTtLOzI2O19DUENpYk9iamVjdERhdGFPaWRLZXlzS2V5RDtLOzY7Q1AkVUlEZDsxOzhFO0s7Mjg7X0NQQ2liT2JqZWN0RGF0YU9pZFZhbHVlc0tleUQ7Szs2O0NQJFVJRGQ7MTs5RTtLOzI4O19DUENpYk9iamVjdERhdGFGaWxlT3duZXJLZXlEO0s7NjtDUCRVSURkOzI7MTFFO0s7MzM7X0NQQ2liT2JqZWN0RGF0YVZpc2libGVXaW5kb3dzS2V5RDtLOzY7Q1AkVUlEZDsyOzEzRTtFO0Q7SzsxMDskY2xhc3NuYW1lUzs3O0NQQXJyYXlLOzg7JGNsYXNzZXNBO1M7NztDUEFycmF5Uzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0Q7Szs2O0NQJFVJRGQ7MjsxNUU7RDtLOzY7Q1AkVUlEZDsyOzE3RTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0Q7Szs2O0NQJFVJRGQ7MjsxOUU7RDtLOzY7Q1AkVUlEZDsyOzIxRTtEO0s7NjtDUCRVSURkOzE7MEU7RDtLOzY7Q1AkVUlEZDsyOzIyRTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RDtLOzY7Q1AkVUlEZDsyOzExRTtEO0s7NjtDUCRVSURkOzI7MTlFO0Q7Szs2O0NQJFVJRGQ7MjsyMUU7RDtLOzY7Q1AkVUlEZDsyOzExRTtFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0U7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MTg7X0NQQ2liQ3VzdG9tT2JqZWN0Szs4OyRjbGFzc2VzQTtTOzE4O19DUENpYkN1c3RvbU9iamVjdFM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MTBFO0s7Mjc7X0NQQ2liQ3VzdG9tT2JqZWN0Q2xhc3NOYW1lRDtLOzY7Q1AkVUlEZDsyOzIzRTtFO0Q7SzsxMDskY2xhc3NuYW1lUzs1O0NQU2V0Szs4OyRjbGFzc2VzQTtTOzU7Q1BTZXRTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzEyRTtLOzE1O0NQU2V0T2JqZWN0c0tleUQ7Szs2O0NQJFVJRGQ7MjsyNEU7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MjA7Q1BDaWJPdXRsZXRDb25uZWN0b3JLOzg7JGNsYXNzZXNBO1M7MjA7Q1BDaWJPdXRsZXRDb25uZWN0b3JTOzE0O0NQQ2liQ29ubmVjdG9yUzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MjsxNEU7SzsyNDtfQ1BDaWJDb25uZWN0b3JTb3VyY2VLZXlEO0s7NjtDUCRVSURkOzI7MTlFO0s7Mjk7X0NQQ2liQ29ubmVjdG9yRGVzdGluYXRpb25LZXlEO0s7NjtDUCRVSURkOzI7MjFFO0s7MjM7X0NQQ2liQ29ubmVjdG9yTGFiZWxLZXlEO0s7NjtDUCRVSURkOzI7MjVFO0U7RDtLOzEwOyRjbGFzc25hbWVTOzIxO0NQQ2liQmluZGluZ0Nvbm5lY3Rvcks7ODskY2xhc3Nlc0E7UzsyMTtDUENpYkJpbmRpbmdDb25uZWN0b3JTOzE0O0NQQ2liQ29ubmVjdG9yUzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MjsxNkU7SzsyNDtfQ1BDaWJDb25uZWN0b3JTb3VyY2VLZXlEO0s7NjtDUCRVSURkOzI7MjFFO0s7Mjk7X0NQQ2liQ29ubmVjdG9yRGVzdGluYXRpb25LZXlEO0s7NjtDUCRVSURkOzI7MTlFO0s7MjM7X0NQQ2liQ29ubmVjdG9yTGFiZWxLZXlEO0s7NjtDUCRVSURkOzI7MjZFO0s7MzE7Q1BDaWJCaW5kaW5nQ29ubmVjdG9yQmluZGluZ0tleUQ7Szs2O0NQJFVJRGQ7MjsyN0U7SzszMTtDUENpYkJpbmRpbmdDb25uZWN0b3JLZXlQYXRoS2V5RDtLOzY7Q1AkVUlEZDsyOzI4RTtLOzMxO0NQQ2liQmluZGluZ0Nvbm5lY3Rvck9wdGlvbnNLZXlEO0s7NjtDUCRVSURkOzI7MzBFO0U7RDtLOzEwOyRjbGFzc25hbWVTOzE1O0NQVGFibGVDZWxsVmlld0s7ODskY2xhc3Nlc0E7UzsxNTtDUFRhYmxlQ2VsbFZpZXdTOzY7Q1BWaWV3UzsxMTtDUFJlc3BvbmRlclM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MThFO0s7MTg7Q1BSZXNwb25kZXJNZW51S2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MTI7Q1BWaWV3VGFnS2V5RDtLOzY7Q1AkVUlEZDsyOzMxRTtLOzE0O0NQVmlld0ZyYW1lS2V5RDtLOzY7Q1AkVUlEZDsyOzMyRTtLOzE1O0NQVmlld0JvdW5kc0tleUQ7Szs2O0NQJFVJRGQ7MjszM0U7SzsxNztDUFZpZXdTdWJ2aWV3c0tleUQ7Szs2O0NQJFVJRGQ7MjszNEU7SzsyMjtDUFZpZXdBdXRvcmVzaXppbmdNYXNrRDtLOzY7Q1AkVUlEZDsyOzM1RTtLOzE5O0NQVmlld1RoZW1lQ2xhc3NLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsxOTtDUFZpZXdUaGVtZVN0YXRlS2V5RDtLOzY7Q1AkVUlEZDsyOzM2RTtLOzIwO0NQUmV1c2VJZGVudGlmaWVyS2V5RDtLOzY7Q1AkVUlEZDsyOzM3RTtLOzE0O0NQVmlld1NjYWxlS2V5RDtLOzY7Q1AkVUlEZDsyOzM4RTtLOzE4O0NQVmlld1NpemVTY2FsZUtleUQ7Szs2O0NQJFVJRGQ7MjszOEU7SzsxNztDUFZpZXdJc1NjYWxlZEtleUQ7Szs2O0NQJFVJRGQ7MjszOUU7SzsxOTtDUFZpZXdBcHBlYXJhbmNlS2V5RDtLOzY7Q1AkVUlEZDsxOzBFO0s7MjI7Q1BWaWV3VHJhY2tpbmdBcmVhc0tleUQ7Szs2O0NQJFVJRGQ7Mjs0MEU7RTtEO0s7MTA7JGNsYXNzbmFtZVM7MTE7Q1BUZXh0RmllbGRLOzg7JGNsYXNzZXNBO1M7MTE7Q1BUZXh0RmllbGRTOzk7Q1BDb250cm9sUzs2O0NQVmlld1M7MTE7Q1BSZXNwb25kZXJTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzIwRTtLOzI3O0NQUmVzcG9uZGVyTmV4dFJlc3BvbmRlcktleUQ7Szs2O0NQJFVJRGQ7MjsxOUU7SzsxODtDUFJlc3BvbmRlck1lbnVLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsxMjtDUFZpZXdUYWdLZXlEO0s7NjtDUCRVSURkOzI7MzFFO0s7MTQ7Q1BWaWV3RnJhbWVLZXlEO0s7NjtDUCRVSURkOzI7NDFFO0s7MTU7Q1BWaWV3Qm91bmRzS2V5RDtLOzY7Q1AkVUlEZDsyOzQyRTtLOzE4O0NQVmlld1N1cGVydmlld0tleUQ7Szs2O0NQJFVJRGQ7MjsxOUU7SzsyMjtDUFZpZXdBdXRvcmVzaXppbmdNYXNrRDtLOzY7Q1AkVUlEZDsyOzQzRTtLOzE5O0NQVmlld1RoZW1lQ2xhc3NLZXlEO0s7NjtDUCRVSURkOzI7NDRFO0s7MTk7Q1BWaWV3VGhlbWVTdGF0ZUtleUQ7Szs2O0NQJFVJRGQ7Mjs0NUU7Szs2OyRhZm9udEQ7Szs2O0NQJFVJRGQ7Mjs0N0U7SzsxNzskYWxpbmUtYnJlYWstbW9kZUQ7Szs2O0NQJFVJRGQ7Mjs0OEU7SzsxMTskYWFsaWdubWVudEQ7Szs2O0NQJFVJRGQ7Mjs0OEU7SzsxNDtDUFZpZXdTY2FsZUtleUQ7Szs2O0NQJFVJRGQ7MjszOEU7SzsxODtDUFZpZXdTaXplU2NhbGVLZXlEO0s7NjtDUCRVSURkOzI7MzhFO0s7MTc7Q1BWaWV3SXNTY2FsZWRLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7MTk7Q1BWaWV3QXBwZWFyYW5jZUtleUQ7Szs2O0NQJFVJRGQ7MTswRTtLOzIyO0NQVmlld1RyYWNraW5nQXJlYXNLZXlEO0s7NjtDUCRVSURkOzI7NDlFO0s7MzU7Q1BDb250cm9sU2VuZHNBY3Rpb25PbkVuZEVkaXRpbmdLZXlEO0s7NjtDUCRVSURkOzI7NTBFO0s7MTc7Q1BDb250cm9sVmFsdWVLZXlEO0s7NjtDUCRVSURkOzI7NTFFO0s7MjQ7Q1BDb250cm9sU2VuZEFjdGlvbk9uS2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzIzO0NQQ29udHJvbENvbnRyb2xTaXplS2V5RDtLOzY7Q1AkVUlEZDsyOzMxRTtLOzMzO0NQQ29udHJvbEJhc2VXcml0dGluZ0RpcmVjdGlvbktleUQ7Szs2O0NQJFVJRGQ7Mjs1MkU7SzsyNDtDUFRleHRGaWVsZElzRWRpdGFibGVLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7MjY7Q1BUZXh0RmllbGRJc1NlbGVjdGFibGVLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7Mjk7Q1BUZXh0RmllbGREcmF3c0JhY2tncm91bmRLZXlEO0s7NjtDUCRVSURkOzI7MzlFO0s7Mjk7Q1BUZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3JLZXlEO0s7NjtDUCRVSURkOzI7NTRFO0s7Mjc7Q1BUZXh0RmllbGRMaW5lQnJlYWtNb2RlS2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzIzO0NQVGV4dEZpZWxkQWxpZ25tZW50S2V5RDtLOzY7Q1AkVUlEZDsyOzQ4RTtLOzMxO0NQVGV4dEZpZWxkUGxhY2Vob2xkZXJTdHJpbmdLZXlEO0s7NjtDUCRVSURkOzE7MEU7SzsyOTtDUFRleHRGaWVsZFVzZXNTaW5nbGVMaW5lTW9kZUQ7Szs2O0NQJFVJRGQ7MjszOUU7SzsxNjtDUFRleHRGaWVsZFdyYXBzRDtLOzY7Q1AkVUlEZDsyOzM5RTtLOzE4O0NQVGV4dEZpZWxkU2Nyb2xsc0Q7Szs2O0NQJFVJRGQ7MjszOUU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7MTBFO0s7Mjc7X0NQQ2liQ3VzdG9tT2JqZWN0Q2xhc3NOYW1lRDtLOzY7Q1AkVUlEZDsyOzU1RTtFO1M7ODtDUE9iamVjdEQ7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0U7RTtTOzk7dGV4dEZpZWxkUzsyNDt2YWx1ZTogb2JqZWN0VmFsdWUub3JkZXJTOzU7dmFsdWVTOzE3O29iamVjdFZhbHVlLm9yZGVyRDtLOzEwOyRjbGFzc25hbWVTOzEyO0NQRGljdGlvbmFyeUs7ODskY2xhc3Nlc0E7UzsxMjtDUERpY3Rpb25hcnlTOzg7Q1BPYmplY3RFO0U7RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsyOzI5RTtLOzEwO0NQLm9iamVjdHNEO0U7RTtkOzE7MFM7MjE7e3szMjAsIDF9LCB7MTE3LCAxN319UzsxOTt7ezAsIDB9LCB7MTE3LCAxN319RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RDtLOzY7Q1AkVUlEZDsyOzIxRTtFO0U7ZDsyOzE4Uzs2O25vcm1hbFM7MzI7QXV0b21hdGljVGFibGVDb2x1bW5JZGVudGlmaWVyLjFTOzY7ezEsIDF9RjtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzE7M0U7SzsxMDtDUC5vYmplY3RzQTtFO0U7UzsxOTt7ezIsIDB9LCB7MTEzLCAxN319UzsxOTt7ezAsIDB9LCB7MTEzLCAxN319ZDsyOzM0Uzs5O3RleHRmaWVsZFM7MTg7Y29udHJvbFNpemVSZWd1bGFyRDtLOzEwOyRjbGFzc25hbWVTOzY7Q1BGb250Szs4OyRjbGFzc2VzQTtTOzY7Q1BGb250Uzs4O0NQT2JqZWN0RTtFO0Q7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7Mjs0NkU7SzsxMztDUEZvbnROYW1lS2V5RDtLOzY7Q1AkVUlEZDsyOzU2RTtLOzEzO0NQRm9udFNpemVLZXlEO0s7NjtDUCRVSURkOzI7NTJFO0s7MTU7Q1BGb250SXNCb2xkS2V5RDtLOzY7Q1AkVUlEZDsyOzM5RTtLOzE3O0NQRm9udElzSXRhbGljS2V5RDtLOzY7Q1AkVUlEZDsyOzM5RTtLOzE3O0NQRm9udElzU3lzdGVtS2V5RDtLOzY7Q1AkVUlEZDsyOzUwRTtFO2Q7MTs0RDtLOzY7JGNsYXNzRDtLOzY7Q1AkVUlEZDsxOzNFO0s7MTA7Q1Aub2JqZWN0c0E7RTtFO1Q7UzsxNTtUYWJsZSBWaWV3IENlbGxkOzI7LTFEO0s7MTA7JGNsYXNzbmFtZVM7NztDUENvbG9ySzs4OyRjbGFzc2VzQTtTOzc7Q1BDb2xvclM7ODtDUE9iamVjdEU7RTtEO0s7NjskY2xhc3NEO0s7NjtDUCRVSURkOzI7NTNFO0s7MjA7Q1BDb2xvckNvbXBvbmVudHNLZXlEO0s7NjtDUCRVSURkOzI7NTdFO0s7MTk7Q1BWaWV3VGhlbWVDbGFzc0tleUQ7Szs2O0NQJFVJRGQ7Mjs1OEU7SzsxOTtDUFZpZXdUaGVtZVN0YXRlS2V5RDtLOzY7Q1AkVUlEZDsyOzM2RTtFO1M7MTM7Q1BBcHBsaWNhdGlvblM7Mjg7X0NQRm9udFN5c3RlbUZhY2VQbGFjZWhvbGRlckQ7Szs2OyRjbGFzc0Q7Szs2O0NQJFVJRGQ7MTszRTtLOzEwO0NQLm9iamVjdHNBO0Q7Szs2O0NQJFVJRGQ7Mjs1OUU7RDtLOzY7Q1AkVUlEZDsyOzU5RTtEO0s7NjtDUCRVSURkOzI7NTlFO0Q7Szs2O0NQJFVJRGQ7Mjs2MEU7RTtFO1M7NTtjb2xvcmY7MTg7MC42ODYyNzQ1MDk4MDM5MjE2ZDsxOzFFO0s7OTskYXJjaGl2ZXJTOzE1O0NQS2V5ZWRBcmNoaXZlcks7ODskdmVyc2lvblM7NjsxMDAwMDBFOw==D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;527E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;401E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;542E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;543E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;401E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;355E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;544E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;545E;D;K;6;CP$UIDd;3;545E;D;K;6;CP$UIDd;3;545E;D;K;6;CP$UIDd;3;282E;E;E;D;K;10;$classnameS;14;CPTrackingAreaK;8;$classesA;S;14;CPTrackingAreaS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;530E;K;25;CPTrackinkAreaViewRectKeyD;K;6;CP$UIDd;3;547E;K;24;CPTrackingAreaOptionsKeyD;K;6;CP$UIDd;3;548E;K;22;CPTrackingAreaOwnerKeyD;K;6;CP$UIDd;3;402E;K;25;CPTrackingAreaUserInfoKeyD;K;6;CP$UIDd;1;0E;K;32;CPTrackingAreaReferencingViewKeyD;K;6;CP$UIDd;3;402E;K;24;CPTrackingAreaWindowRectD;K;6;CP$UIDd;3;549E;E;f;18;0.6862745098039216D;K;6;$classD;K;6;CP$UIDd;3;527E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;421E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;542E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;543E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;421E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;355E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;550E;E;D;K;6;$classD;K;6;CP$UIDd;3;530E;K;25;CPTrackinkAreaViewRectKeyD;K;6;CP$UIDd;3;551E;K;24;CPTrackingAreaOptionsKeyD;K;6;CP$UIDd;3;548E;K;22;CPTrackingAreaOwnerKeyD;K;6;CP$UIDd;3;422E;K;25;CPTrackingAreaUserInfoKeyD;K;6;CP$UIDd;1;0E;K;32;CPTrackingAreaReferencingViewKeyD;K;6;CP$UIDd;3;422E;K;24;CPTrackingAreaWindowRectD;K;6;CP$UIDd;3;552E;E;D;K;6;$classD;K;6;CP$UIDd;3;527E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;432E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;542E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;543E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;432E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;355E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;337E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;338E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;338E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;553E;E;D;K;6;$classD;K;6;CP$UIDd;3;530E;K;25;CPTrackinkAreaViewRectKeyD;K;6;CP$UIDd;3;554E;K;24;CPTrackingAreaOptionsKeyD;K;6;CP$UIDd;3;548E;K;22;CPTrackingAreaOwnerKeyD;K;6;CP$UIDd;3;433E;K;25;CPTrackingAreaUserInfoKeyD;K;6;CP$UIDd;1;0E;K;32;CPTrackingAreaReferencingViewKeyD;K;6;CP$UIDd;3;433E;K;24;CPTrackingAreaWindowRectD;K;6;CP$UIDd;3;555E;E;S;18;.AppleSystemUIFontd;2;13D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;556E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;557E;E;E;f;11;0.602715373S;18;{{5, 0}, {-10, 0}}S;18;{{0, 0}, {-10, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;f;18;0.5019607843137255D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;546E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;558E;E;d;2;42D;K;6;$classD;K;6;CP$UIDd;3;546E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;559E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;3;546E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;558E;E;D;K;6;$classD;K;6;CP$UIDd;3;546E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;559E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;3;546E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;558E;E;D;K;6;$classD;K;6;CP$UIDd;3;546E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;559E;E;D;K;6;$classD;K;6;CP$UIDd;3;546E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;560E;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;10;CP.objectsD;E;E;S;55;{"origin":{"x":0,"y":1},"size":{"width":0,"height":-1}}S;54;{"origin":{"x":0,"y":0},"size":{"width":0,"height":1}}S;25;{"location":0,"length":0}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/Resources/MainMenu.xib b/Tests/Manual/CPTextViewDelegateAndNotifications/Resources/MainMenu.xib new file mode 100644 index 000000000..d9977ee61 --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/Resources/MainMenu.xib @@ -0,0 +1,503 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This test application will track delegate methods and notification messages from the CPTextView to the left below. +  +The Call order column tells in which order they are called. It is an increasing global number for each call to a delegate method or notification message. +The Number of calls column show how many times this method or message has been sent. + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/index-debug.html b/Tests/Manual/CPTextViewDelegateAndNotifications/index-debug.html new file mode 100644 index 000000000..153ad11f1 --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/index-debug.html @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + CPTextViewDelegateAndNotifications + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/index.html b/Tests/Manual/CPTextViewDelegateAndNotifications/index.html new file mode 100644 index 000000000..466bd2815 --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/index.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + CPTextViewDelegateAndNotifications + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPTextViewDelegateAndNotifications/main.j b/Tests/Manual/CPTextViewDelegateAndNotifications/main.j new file mode 100644 index 000000000..c9a59f9ff --- /dev/null +++ b/Tests/Manual/CPTextViewDelegateAndNotifications/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPTextViewDelegateAndNotifications + * + * Created by You on December 22, 2017. + * Copyright 2017, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tools/nib2cib/NSTextField.j b/Tools/nib2cib/NSTextField.j index cb0fa306b..ddbf69b48 100644 --- a/Tools/nib2cib/NSTextField.j +++ b/Tools/nib2cib/NSTextField.j @@ -26,6 +26,7 @@ @import "NSCell.j" @import "NSControl.j" +@global NIB_CONNECTION_EQUIVALENCY_TABLE @implementation CPTextField (NSCoding) @@ -82,6 +83,10 @@ if (self) { var cell = [aCoder decodeObjectForKey:@"NSCell"]; + + // If we have bindings/connections connected to the text field cell make sure they are replaced + NIB_CONNECTION_EQUIVALENCY_TABLE[[cell UID]] = self; + [self NS_initWithCell:cell]; [self _adjustNib2CibSize]; }