DATA STRUCTURES AND ALGORITHMS USING

DATA STRUCTURES AND ALGORITHMS USING

JAVA ™

William McAllister St. Joseph’s College

JONES AND BARTLETT PUBLISHERS Sudbury, Massachusetts

BOSTON TORONTO LONDON SINGAPORE

3

 

 

World Headquarters Jones and Bartlett Publishers 40 Tall Pine Drive Sudbury, MA 01776 978-443-5000 info@jbpub.com www.jbpub.com

Jones and Bartlett Publishers Canada 6339 Ormindale Way Mississauga, Ontario L5V 1J2 Canada

Jones and Bartlett Publishers International Barb House, Barb Mews London W6 7PA United Kingdom

Jones and Bartlett’s books and products are available through most bookstores and online booksellers. To contact Jones and Bartlett Publishers directly, call 800-832-0034, fax 978- 443-8000, or visit our website, www.jbpub.com . Substantial discounts on bulk quantities of Jones and Bartlett’s publications are available to corporations, professional associations, and other qualified organizations. For details and specific discount information, contact the special sales department at Jones and Bartlett via the above contact information or send an email to specialsales@jbpub.com . Copyright © 2009 by Jones and Bartlett Publishers, LLC

All rights reserved. No part of the material protected by this copyright may be reproduced or utilized in any form, electronic or mechanical, including photocopying, recording, or by any information storage and retrieval system, without written permission from the copyright owner.

Production Credits Publisher: David Pallai Acquisitions Editor: Timothy Anderson Editorial Assistant:Melissa Potter Production Director: Amy Rose Production Editor: Katherine Macdonald Senior Marketing Manager: Andrea DeFronzo V.P., Manufacturing and Inventory Control: Therese Connell Composition: Northeast Compositors, Inc. and International Typesetting and Composition Cover Design: Kristin E. Parker Cover Image: © Vitezslav Halamka/ShutterStock, Inc. Printing and Binding:Malloy, Inc. Cover Printing:Malloy, Inc.

Library of Congress Cataloging-in-Publication Data McAllister, William (William James) Data structures and algorithms using Java / William McAllister.—

4

 

 

1st ed. p. cm. Includes index. ISBN-13: 978-0-7637-5756-4 (pbk.) ISBN-10: 0-7637-5756-X (pbk.)

1.Computer algorithms. 2. Data structures (Computer science) 3. Java (Computer program language) I. Title. QA76.9.A43M373 2008 005.13’3–dc22

2008013120

6048 Printed in the United States of America

12 11 10 09 08 10 9 8 7 6 5 4 3 2 1

5

 

 

Dedication To my best friend and wife, Gretchen (a.k.a Maggie),

who supplied endless encouragement and hundreds of commas

6

 

 

Contents

Preface

Chapter 1 Overview and Java Review 1.1 Data Structures

1.1.1 What Is Data? 1.1.2 What Is a Data Structure?

1.2 Selecting a Data Structure 1.2.1 The Data Structure’s Impact on Performance 1.2.2 Determining the Performance of a Data Structure 1.2.3 The Trade-Off Process

1.3 Fundamental Concepts 1.3.1 Terminology 1.3.2 Access Modes 1.3.3 Linear Lists 1.3.4 Data Structure Operations 1.3.5 Implementing a Programmer-Defined Data Structure 1.3.6 Procedural Abstractions and Abstract Data Types (ADTs) 1.3.7 Encapsulation

1.4 Calculating Speed (Time Complexity) 1.4.1 Big-O Analysis (O Standing for Order of Magnitude) 1.4.2 Algorithm Speed 1.4.3 Relative Speed of Algorithms 1.4.4 Absolute Speed of an Algorithm 1.4.5 Data Structure Speed

1.5 Calculating Memory Overhead (Space Complexity) 1.6 Java Review

1.6.1 Arrays of Primitive Variables 1.6.2 Definition of a Class 1.6.3 Declaration of an Object 1.6.4 Accessing Objects 1.6.5 Standard Method Name Prefixes 1.6.6 Shallow and Deep Copies 1.6.7 Declaration of an Array of Objects 1.6.8 Objects that Contain Objects as Data Members 1.6.9 Classes that Extend Classes, Inheritance 1.6.10 Parent and Child References 1.6.11 Generic Types

Knowledge Exercises

7

 

 

Programming Exercises

Chapter 2 Array-Based Structures 2.1 The Built-in Structure Array

2.1.1 Multidimensional Arrays 2.2 Programmer-Defined Array Structures

2.2.1 Unsorted Array 2.2.2 Sorted Array 2.2.3 Unsorted-Optimized Array 2.2.4 Error Checking

2.3 Implementation of the Unsorted-Optimized Array Structure 2.3.1 Baseline Implementation 2.3.2 Utility Methods

2.4 Expandable Array-Based Structures 2.5 Generic Data Structures

2.5.1 Design Considerations 2.5.2 Generic Implementation of the Unsorted-Optimized Array 2.5.3 Client-Side Use of Generic Structures 2.5.4 Heterogeneous Generic Data Structures

2.6 Java’s ArrayList Class Knowledge Exercises Programming Exercises

Chapter 3 Restricted Structures 3.1 Restricted Structures 3.2 Stack

3.2.1 Stack Operations, Terminology, and Error Conditions 3.2.2 Classical Model of a Stack 3.2.3 A Stack Application: Evaluation of Arithmetic Expressions 3.2.4 Expanded Model of a Stack

3.3 Queue 3.3.1 Queue Operations, Terminology, and Error Conditions 3.3.2 Classical Model of a Queue 3.3.3 Queue Applications 3.3.4 Expanded Model of a Queue

3.4 Generic Implementation of the Classic Stack, a Methodized Approach

3.4.1 Generic Conversion Methodology 3.5 Priority Queues 3.6 Java’s Stack Class

8

 

 

Knowledge Exercises Programming Exercises

Chapter 4 Linked Lists and Iterators 4.1 Noncontiguous Structures 4.2 Linked Lists 4.3 Singly Linked Lists

4.3.1 Basic Operation Algorithms 4.3.2 Implementation 4.3.3 Performance of the Singly Linked List 4.3.4 A Stack Implemented as a Singly Linked List

4.4 Other Types of Linked Lists 4.4.1 Circular Singly Linked List 4.4.2 Double-Ended Singly Linked List 4.4.3 Sorted Singly Linked List 4.4.4 Doubly Linked List 4.4.5 Multilinked List

4.5 Iterators 4.5.1 Implementation of an Iterator 4.5.2 Multiple Iterators

4.6 Java’s LinkedList Class and ListIterator Interface Knowledge Exercises Programming Exercises

Chapter 5 Hashed Data Structures 5.1 Hashed Data Structures 5.2 Hashing Access Algorithms

5.2.1 A Hashing Example 5.3 Perfect Hashed Data Structures

5.3.1 Direct Hashed Structure 5.4 Nonperfect Hashed Structures

5.4.1 Primary Storage Area Size 5.4.2 Preprocessing Algorithms 5.4.3 Hashing Functions 5.4.4 Collision Algorithms 5.4.5 The Linear Quotient (LQHashed) Data Structure Implementation 5.4.6 Dynamic Hashed Structures

Knowledge Exercises Programming Exercises

9

 

 

Chapter 6 Recursion 6.1 What Is Recursion? 6.2 Understanding Recursive Algorithms

6.2.1 n Factorial 6.2.2 The Code of a Recursive Algorithm 6.2.3 Tracing a Recursive Method’s Execution Path

6.3 Formulating a Recursive Algorithm 6.3.1 Definitions 6.3.2 Methodology 6.3.3 Practice Problems

6.4 Problems with Recursion 6.4.1 Dynamic Programming Applied to Recursion

6.5 Backtracking, an Application of Recursion 6.5.1 A Generalized Backtracking Algorithm 6.5.2 Algorithm Adaptation Methodology

Knowledge Exercises Programming Exercises

Chapter 7 Trees 7.1 Trees

7.1.1 Graphics and Terminology of Trees 7.2 Binary Trees

7.2.1 Terminology 7.2.2 Mathematics

7.3 Binary Search Trees 7.3.1 Basic Operation Algorithms 7.3.2 Performance 7.3.3 Implementation 7.3.4 Standard Tree Traversals 7.3.5 Balanced Search Trees 7.3.6 Array Implementation of a Binary Search Tree 7.3.7 Performance 7.3.8 Java’s TreeMap Data Structure

Knowledge Exercises Programming Exercises

Chapter 8 Sorting 8.1 Sorting 8.2 Sorting Algorithm Speed

8.2.1 Minimum Sort Effort

10

 

 

8.2.2 An Implementation Issue Affecting Algorithm Speed 8.3 Sorting Algorithms

8.3.1 The Binary Tree Sort 8.3.2 The Bubble Sort 8.3.3 The Heap Sort 8.3.4 The Merge Sort 8.3.5 Quicksort

Knowledge Exercises Programming Exercises

Chapter 9 Graphs 9.1 Introduction

9.1.1 Graphics and Terminology of Graphs 9.2 Representing Graphs

9.2.1 Representing Vertices 9.2.2 Representing Edges

9.3 Operations Performed on Graphs 9.4 Implementing Graphs in the Vertex Number Mode 9.5 Traversing Graphs

9.5.1 Depth-First Traversal 9.5.2 Breadth-First Traversal

9.6 Connectivity and Paths 9.6.1 Connectivity of Undirected Graphs 9.6.2 Connectivity of Directed Graphs 9.6.3 Spanning Trees 9.6.4 Shortest Paths

Knowledge Exercises Programming Exercises

Appendices Appendix A ASCII Table Appendix B Derivation of the Average Search Length of a Nondirect Hashed Data Structure Appendix C Proof That If an Integer, P, Is Not Evenly Divisible by an Integer Less Than the Square Root of P, It Is a Prime Number Appendix D Calculations to Show That (n + 1) (log2(n + 1) − 2) Is the Minimum Sort Effort for the Binary Tree Sort

Glossary

11

 

 

Index

12

 

 

Preface

Introduction Data Structures and Algorithms Using Java is an undergraduate-level

textbook for a computer science curriculum. It covers the entire syllabus of the Association of Computing Machinery standard curriculum courses CS103i and CS103o, “Data Structures and Algorithms” (CS2001 evolutions of the traditional CS2 course). As such, it is intended to be used as the primary text for these courses. The book is built upon my academic and industry experience, combining the pedagogical techniques I’ve developed and refined during 29 years of teaching with my practical knowledge of the computer field acquired during 28 years in the industry. The resulting integration of theory and application will help students at all levels to understand core concepts that will enhance their success in later courses, and ultimately, in their careers.

Why Another Data Structures Book My primary reason for writing this book was to produce a text that

was more readable, engaging, and instructive than those currently in print without compromising the scope of the ACM CS103 course material. I wanted the text to engage students outside the classroom in the process of investigative discovery. The motivation for this was based partially on the findings from two National Science Foundation grants my colleagues and I received, whose purpose was to investigate ways of attracting students into technical areas of national need (including computer professionals) and retaining them through graduation. “Data Structures and Algorithms,” a sophomore-level course, is usually the “make-or-break” course for computer science majors. As a co-principal investigator on both of these grants, I realized that a highly accessible Data Structures and Algorithms text, with improved pedagogy, would help retain students majoring in computer science.

Advantages of This Text I’ve endeavored to present the minimal amount of Java code

necessary to illustrate the implementation of the learned concepts. This minimal code set leaves plenty of room for meaningful programming assignments, while being thorough enough that a computer professional

13

 

 

could use the text as a source code reference book. The book is more comprehensive in some topic areas than current

books in print, which makes it more appealing to highly capable students. The clearer language, simple examples, and abundance of instructional figures, including nearly 300 illustrations and more than 50 tables, make it more accessible to the majority of students who might otherwise struggle to grasp these and other, more challenging, concepts.

The text is aimed at both the computer scientist who implements, refines, or improves the classic data structures and the software engineer who selects and integrates library implementations of these data structures into particular applications. From the computer scientist’s viewpoint, the design of each of the classic data structures is discussed and their algorithms’ pseudocode developed and implemented. In addition, the characteristics of each structure that give rise to its speed and space complexity advantages (or disadvantages) are examined. From the software engineer’s viewpoint, the text presents the relative merits of the classic data structures to the extent that an optimum choice could be made for a particular application. This is accomplished by deriving the speed and memory requirements of each of the classic data structures in a quantified manner, with the performance of each structure compared in a summary table at the end of each chapter. In addition, multivariable graphs are presented to demonstrate how to locate optimum design points from a memory requirement point of view. Finally, the use of the Java API implementation of the data structures is demonstrated.

Other significant advantages of this book are: a methodized approach to recursive algorithm development aimed at teaching students to “think” recursively; an introduction to the techniques and benefits of dynamic programming; and line-by-line discussions of the significant portions of the implementation code, which include the techniques for encapsulating data within a structure and the techniques for implementing generic structures.

Programming Language Background The implementation language used in the text is Java, but since the

first chapter includes a review of objects and the Java constructs and syntax necessary to understand the book’s code examples, students with a programming background in other high-level languages should find the book approachable. The Java review guides students through an

14

 

 

understanding of the fundamental concepts essential to data structures that are particular to object-oriented languages, such as Java’s use of reference variables, its memory allocation model, arrays of objects, shallow and deep object copies, parent-to-child references, composition (containership), and generic features of Java 1.4.

Organization The text employs a unique, student-friendly pedagogical approach

and organizational structure. The chapters that present the classic data structures (Chapters 2 , 3 , 4 , 5 , 7 , and 9 ) use a common template, rooted in the object paradigm, as the organizational basis of each chapter. The use of this template, embellished with topics particular to each structure, permits the student to “anticipate” the material presented in each chapter, which in turn makes the text more readable. The template begins by stating the shortcomings of the structures studied to that point and identifies the ways in which the new structure addresses some of these shortcomings. Then the structure is visually introduced, and its initialization and operation algorithms are developed in pseudocode. These algorithms are then fully implemented in Java as an encapsulated homogenous structure, and the structure’s use is then demonstrated in a telephone information request application. Next, the performance of the structure is quantified, discussed, and compared to the performance of the previously studied structures. Finally, the use of the Java API implementation of the structure is discussed and demonstrated.

Chapter 1 is an introduction to the basic concepts of data structures and a review of Java. The first part of the chapter introduces the student to the concept of a data structure and its impact on the performance of a software product. The terminology and fundamental concepts common to all data structures are discussed, including encapsulation, abstraction, and algorithm performance. This section concludes with a discussion of speed complexity, space complexity, and Big-O analysis. The second part of the chapter is a review of the Java concepts and constructs necessary to understanding the implementations presented in the text. The topics include array declarations, class definitions and objects, containership, inheritance, shallow and deep copies, and the use of the generic features of Java 1.4 to write generic methods and classes.

Chapter 2 discusses the implementation of the built-in structure array and presents three programmer-defined, array-based structures. A major

15

 

 

pedagogical advantage of this chapter is that it utilizes the simplicity of arrays and the students’ familiarity with them to facilitate a discussion of the concepts common to all data structures. In the first part of the chapter, the student is encouraged to view arrays from a new perspective: a data structures perspective. Once viewed from that perspective, they can be used as a case study to illustrate the techniques of memory modeling and performance trade-offs that were employed in their design. The second part of the chapter begins the book’s study of programmer-defined data structures by presenting three data structures built upon arrays. The simplicity of these structures allows the student to focus on learning the concepts common to all data structures. Then, having gained an early understanding of these concepts, students are free to concentrate on the more complicated conceptual details of the structures presented in subsequent chapters. The chapter also presents techniques for expanding arrays at run-time and for converting the array-based implementation developed in the chapter to a fully generic data structure using the generic features of Java 1.4. It concludes with a discussion of the use of the ArrayList class included in the Java API.

Chapter 3 presents the restricted structures Stack and Queue. The first part of the chapter discusses what they have in common with other data structures and encourages the student to consider what about them is restricted. Thus the student understands that Stack and Queue are part of the broader data structure landscape, rather than two isolated computer science topics. The second part of the chapter presents the details of Stack and Queue, including a full implementation of each structure. The Queue implementation is used as the basis of presenting a methodized approach to converting a data structure class to a fully generic class using the generic features of Java 1.4. The chapter concludes with a discussion of priority queues and the use of the Stack class included in the Java API.

Chapter 4 introduces the student to linked lists, their use in the implementation of a stack, and iterators. The first part of the chapter discusses singly linked lists and their implementation. It also includes a discussion of several variations of a singly linked list, doubly linked lists, and multi-linked lists. The second part of the chapter introduces the concept of an iterator, a discussion of the advantages of its use, and a full implementation of an iterator class. As part of this implementation, the concept of an inner class is introduced, which includes a discussion of why classes are coded as inner classes. The chapter concludes with a discussion of the use of the LinkedList and ListIterator classes included in the Java

16

 

 

API. Chapter 5 deals with the topic of hashing, but it significantly extends

the traditional treatment of this topic. It treats the pervasive data structures that use hashing algorithms as a separate data structure category, Hashed Structures. The first part of the chapter illustrates the advantages of hashing via an example, and then it presents the algorithms of a data structure based on a perfect hashing function. The second part of the chapter discusses nonperfect hashing functions, collision algorithms and their performance, and string preprocessing algorithms used by data structures that utilize nonperfect hashing functions. Included is a discussion of optimum hash table size and a 4k + 3 prime number generator. All these concepts are then applied in the implementation of a data structure based on the division hashing function and high performance collision algorithm. The chapter concludes with a discussion of expandable hashed structure and the use of the HashTable class included in Java’s API.

Chapter 6 presents the topic of recursion. The first part of the chapter introduces recursion and provides the student with an understanding of how a recursive method works. The student is taught to think recursively in the second part of the chapter via a methodized approach to recursive algorithm development. Several examples are presented whose recursive solutions can be discovered by directly applying the methodology. Once comfortable with the methodology, the student is presented with other examples that require modification in order to discover their recursive solutions. The chapter concludes with a discussion of the speed and space complexity problems of recursive algorithms and the application of dynamic programming to alleviate these problems. Other applications of recursion appear in the chapters on trees, sorting, and graphs.

Chapter 7 introduces the student to the topic of trees. After a discussion of the terminology of trees in general and binary trees in particular, including the mathematics of binary trees, the algorithms of the binary search tree are introduced. All three cases of the delete algorithm are presented. The structure is implemented using a linked implementation, and a subsequent analysis of its performance leads to a discussion of self-balancing trees, specifically the AVL and re-black trees. The second part of the chapter presents the array-based implementation of a binary tree, which includes the pseudocode of its Insert and Fetch algorithms. The poor performance of the Delete algorithm under this implementation is discussed along with a suggested remedy. The chapter concludes with a discussion of the use of the red-black tree

17

 

 

implementation TreeMap included in Java’s API. Chapter 8 presents the topic of sorting. It begins with a discussion of

the motivation for sorting and demonstrates the need for efficient sorting algorithms. Included is a discussion of the parameters and techniques used to determine the speed of these algorithms. The first algorithm presented is the binary tree sort, which uses the student’s knowledge of search trees as a stepping stone to the analysis of sorting algorithms. The remainder of the chapter presents four other classic sorting algorithms, and it implements two of the better performers—the merge and quick sort—recursively. As each algorithm is discussed, its speed and space complexity are determined and summarized in a table for comparative purposes.

Chapter 9 presents the topic of graphs. In the first part of the chapter, they are presented as part of the data structure landscape. After a discussion of the terminology and the mathematics of graphs, the techniques for representing them are introduced and compared, and the algorithms used to operate on them are developed and implemented. These algorithms included both depth-first and breadth-first traversals. The first part of the chapter concludes with an implementation of a graph structure that includes a depth-first traversal. The second part of the chapter discusses the issues of connectivity and paths along with the associated algorithms. These algorithms include the determination of connectivity, spanning trees, and shortest paths based on Warshall’s, Dijkstra’s, and Floyd’s algorithms.

Supplemental Materials The pedagogical features of the text are significantly enhanced by

animation courseware that can be run on any Java-enabled browser. These animations demonstrate the functionality of the algorithms associated with each data structure presented in the text by presenting the changes that take place in main memory as the algorithms execute. Other ancillary materials provided with the text are PowerPoint lecture outlines, the text’s source code, spreadsheets that can be used to perform design performance trade- offs between various data structures, and solutions to selected exercises. These supplements can be found at Jones and Bartlett’s catalog page, http://www.jbpub.com/catalog/9780763757564 .

Acknowledgments I would like to thank the team at Jones and Bartlett that aided me in

18

 

 

the preparation of this book and guided me through the publication process: my acquisitions editor, Tim Anderson; his editorial assistant, Melissa Potter; Melissa Elmore, Associate Production Editor; Kat Macdonald, Production Editor; my copy editor, Diana Coe; and the entire production staff.

I’d also like to thank the reviewers for taking the time to review the manuscript and providing many valuable suggestions, most of which have been incorporated into the textbook: Tom Murphy, Contra Costa College, and Victor Shtern, Boston University.

Most importantly, I’d like to thank my family, friends, and colleagues who not only offered encouragement but also endless patience and understanding during the times when I was too busy to be me. Finally, I’d like to thank St. Joseph’s College for the sabbatical that allowed me to get this textbook off the ground.

To the Students It’s my hope that you enjoy reading this book, and that you will

experience the joy of accomplishment as you learn material that is fundamental to the remarkable discipline in which we have chosen to immerse ourselves. The pedagogy on which it is based evolved through the classroom experiences I’ve had with hundreds of students much like you. By the time you finish this book, you will be way ahead of my son-in-law (a lawyer) who says he’d rather wait for Data Structures: The Movie . I imagine each of you reading and learning from this book (even before the movie version is released), and I wish you much success in your future careers.

William McAllister

19

 

 

CHAPTER 1

Overview and Java Review

OBJECTIVES The objectives of this chapter are to familiarize the student with the

concepts common to all data structures and to review the Java constructs used to implement them. More specifically, the student will be able to

Understand the basic terminology of data structures, including data abstraction, encapsulation, linear lists, complexity, homogeneity, and the four basic operations performed on structures in both the key field and the node number mode.

Explain the difference between programmer-defined and built-in data structures, shallow and deep copies, absolute and relative algorithm speed, and static and nonstatic methods.

Understand the performance of a data structure, the factors that affect it, and the techniques used to quantify it, including the application of a Big-O analysis.

Understand the binary search algorithm and be able to explain and verify its O(log2 n ) performance.

Understand the significance of a data structure’s density and be able to calculate it.

Understand and be able to declare primitive and reference variables in Java, arrays of primitive and reference variables, and understand their underlying memory models.

Understand and implement methods, classes, declarations, and operations on objects, and the passing of arguments by value.

Implement a node definition class and an application class that creates nodes and operates on them.

Understand and be able to implement inheritance and containership.

20

 

 

Generalize a method or class using the generic features of Java.

1.1 Data Structures A thorough knowledge of the topic of Data Structures is essential to

both software design and implementation. Its subject matter embodies techniques for writing software that performs efficiently, as opposed to software that merely produces correct results. Properly designed data structures can increase the speed of a program and reduce the amount of memory required to store the data that the program processes. In addition, it serves as a bridge between a basic programming course and more advanced topics such as operating systems, networking, and computer organization.

When asked to reflect on their undergraduate careers, most computer scientists consider the core topic of data structures to be the most challenging course in the undergraduate curriculum. Not only is the sheer volume of the material burdensome, but the concepts and algorithms introduced in the course are quite novel. Furthermore, implementation of the concepts into functional software often tax their novice programming abilities. It is not unusual for students to struggle at the beginning of this course until their coding skills improve and they can then focus all of their attention on the underlying concepts and algorithms.

After a brief discussion of data, data structures, and their roles and importance in the field of computer science, this chapter will present topics common to all data structures. It concludes with a review of the Java language, including the topics of objects, inheritance, and generics, which are necessary to implement the concepts presented in subsequent chapters.

1.1.1 What Is Data? Data is information.

Information such as your name, your address, and your age are all examples of data. The source of the information can be any device attached to a computer system, such as a keyboard, a mouse, a modem, a network line, a disk drive, or some other mass storage device. Sometimes the program itself can be the source of the data if, during processing, it generates data (Figure 1.1 ).

21

 

 

Figure 1.1 Some of the Sources of a Program’s Input Data All programs, when viewed on a macro level, are the same: when

executed they accept input data, process the data, and then output a result (Figure 1.2 ). In some special cases, the input or output data set is empty, but more often it is not. Occasionally, although the input or output information appears to be empty, it is not. For example, consider a program that when executed simply generates a random number. It appears to have no input data; however, random number algorithms require a seed value , and although the value is not input by the program user, it still must be supplied for the algorithm to function properly. This seed value is often the current time supplied to the program by the computer’s system clock.

Studies show that programs spend 80% of their execution time searching through memory to locate the data they process. When the data set is small, this time is usually insignificant. For example, a program that outputs the largest of 10 numbers stored in memory will identify the largest number after 10 memory accesses. Assuming a memory access takes 100 nanoseconds (10−9 seconds), the 10 memory accesses will be complete and the result will be available in 1,000 nanoseconds. It is difficult to imagine a user growing impatient in one millionth of a second. However, if the information was needed to make a critical mid-course correction to a space probe, or to shut down a runaway nuclear reactor, the time to locate the datum could be significant, even though the data set is small.

22

 

 

Figure 1.2 Macro View of a Program When programs deal with large data sets, the time spent searching for

a datum is more likely to be significant. Consider a program that searches sequentially through 400 million social security records. If the information requested is the 400 millionth record, and each memory access takes 100 nanoseconds, it will take 40 seconds to locate the information (400 × 106

accesses * 100 × 10−9 accesses per second). Studies show users grow impatient in one to two seconds; they find 40 seconds intolerable (Figure 1.3 ). Thus, the speed at which a program locates the data to be processed is usually a concern when designing programs that operate on large data sets, and it must also be considered when designing programs that operate on small data sets under stringent time constraints.

Another program design concern is efficient use of main memory. Programs execute most rapidly when both the data that they operate on and their processing instructions reside simultaneously in main memory. However, even on modern computer systems, main memory is a limited resource. Therefore, it is important that the amount of storage required in order for the data to be processed (as well as the program instructions) be kept to a minimum. Techniques for minimizing the data storage requirements of a program and the speed at which the program locates the data it processes are fundamental to the topic of data structures. Data Structures is the area of computer science that addresses these issues in order to ensure that the storage requirements and speed at which the data is accessed is consistent with the requirements of the application.

Figure 1.3 A User’s Reaction to a Slow Program

1.1.2 What Is a Data Structure?

23

 

 

The National Institute of Standards and Technology defines a data structure as: “A data structure is an organization of information, usually in memory, for

better algorithm efficiency.” Therefore, the study of data structures is the study of how to organize

the information that a program processes in a way that improves the program’s performance. Specifically, the information is organized in a way that facilitates the operations the program’s algorithm performs on the data.

For example, suppose salespersons used a program to look up the price of an item in a store’s inventory. A good organization of the data would be to place the most popular items at the beginning of the data set, since a sequential search would then rapidly locate them. However, this organization of the data would not as be attractive if the function of the program were to output the store’s inventory in alphabetic order.

To improve the program’s efficiency, the organization scheme often requires additional storage over and above the size of the program’s data set. This extra storage is commonly referred to as overhead . Returning to our store example, if we wished to perform rapid price checks and rapidly produce inventory printouts, an organization scheme might store the data set twice: ordered by an item’s popularity and ordered in alphabetic order. Although this would facilitate the operations performed on the data set (price check and inventory output) it would double the data memory required by the application.

Standard for Goodness A good data structure is one that organizes the data in a way that facilitates

the operations performed on the data, while keeping its total storage requirement at, or close to, the size of the data set.

There are two types of data structures: built-in data structures and programmer-defined data structures. Built-in data structures are schemes for storing data that are part of a programming language. Examples of these are memory cell (variable ) declarations, arrays, and Java’s String class.

Programmer-defined data structures are schemes for storing data that are conceived and implemented by the programmer of a particular program. These data structures are constructed from the built-in data structures. Examples of these are parallel arrays, class definitions, hashing schemes, linked lists, trees, stacks, and queues. As programming languages

24

 

 

evolve, the built-in data structures have expanded to include some of the programmer defined data structures. For instance, Java’s Application Programmer Interface includes implementations of hashing schemes, linked lists, trees, stacks, and queues. Many of these data structures are also implemented in the C++ Standard Template Library .

1.2 Selecting a Data Structure The selection of a data structure for a particular application can have

a significant effect on the performance of the program. Techniques borrowed from other engineering disciplines are used to ensure that the structure selected satisfies the performance criteria of the application and has a minimal impact on the overall implementation cost of the application.

1.2.1 The Data Structure’s Impact on Performance In an introductory programming course, the programs students write

operate on small data sets and execution time constraints are not considered. As such, these programs are evaluated using the following two criteria (standards for goodness):

• The “penmanship” of the program is good. • For all sets of valid inputs, the program produces the correct outputs.

Here, we will consider penmanship to include such issues as an absence of syntax errors, good variable naming, proper indentation, good organization of the code (including the use of subprograms), and proper use of the language constructs (e.g., appropriate use of switch statements vs. if-else-if statements).

These criteria are adequate for programs that operate on small data sets. However, as discussed, programs that process large sets of data, or have stringent speed constraints previously imposed on them, must also consider two additional criteria:

• Efficient use of storage—both main memory and external storage. • Speed of execution.

There is additional criteria that brings us to the study of Data Structures, because the scheme that is selected for storing large data sets can have a significant impact on both speed and memory utilization.

To illustrate this point, consider a program that would service

25

 

 

telephone number information requests for a large city. Aside from information requests, listings will be both added to, and deleted, from the data base as residents move into and out of town. In addition, listings will be updated as customers relocate within the town. The conditions and assumptions of the application are given in Table 1.1 , as is the operation speed requirement, 0.10 seconds.

Suppose that four software firms have developed a program for this application, each of which uses a different data structure to store the data, as specified in Table 1.2 .

Table 1.1 Conditions and Assumptions for a Telephone Information

Request Application Condition Problem Assumptions Number of phone listings 100,000,000 Size of each person’s name and each listing

16 bytes and 50 bytes

Time to fetch 4 bytes from memory 100 nanoseconds (100 × 10−9 seconds)

Time to execute an instruction 2 nanoseconds (2 × 10−9 seconds) Maximum time to perform an operation

0.10 seconds

Table 1.2 Data Structures Used by Four Telephone Information Request

Programs Program Data Structure 1 Unsorted Array 2 Sorted Array 3 Hashing 4 Perfect Hashing

Based on the first set of criteria, all the programs perform equally well: for valid inputs, each program produces valid outputs, and they all are written with good penmanship. However, since they operate on a large data set with a specified time constraint—perform an operation within one- half second—we must also consider the two additional evaluation criteria: efficient use of memory and speed of execution.

To evaluate the speed and memory utilization of the programs,

26

 

 

assume each program is put into service for several days. The average time needed to perform four common operations on the data set is monitored, as is the additional storage required by the programs above that used to store the 100,000,000 listings. The results, summarized in Table 1.3 , show that the performances of the candidate programs differ greatly. The shaded cells in the table indicate unacceptable performance. Only programs 3 and 4 meet the speed requirement of the problem, and program 4 requires an unacceptable amount of additional memory—memory above that required to store the 100,000,000 listings. (The techniques used to calculate the data in Table 1.3 are discussed in another section of this chapter.) By examining the data in the table, we can clearly see that the choice of a data structure can have a large effect on the execution speed and memory requirements of a program.

1.2.2 Determining the Performance of a Data Structure In our hypothetical telephone listing problem, we indicated that the

four programs were actually put into service to evaluate their performance. However, this is most often not the way the merits of candidate data structures (i.e., the alternative structures being considered) are evaluated. It would be much too costly to code an entire program just to determine whether the performance of a candidate data structure is acceptable. Rather, this evaluation must take place during the early stages of the design of the program, before any code is written.

To do this, we borrow tools from other engineering disciplines. Consider a group of civil engineers responsible for evaluating several candidate designs for a bridge. Certainly, they would never consider fabricating each design so that they can be tested to determine which design is the best. Cost issues aside, this build-and-test approach to design

27

 

 

trade-offs would be too time-consuming. Instead, civil engineers perform detailed calculations early in the design process to evaluate candidate designs. Based on the results of these calculations, they select the lowest cost design that satisfies the performance criteria.

Software engineers have adopted this design trade-off technique to evaluate candidate data structures early in the program design process. Consistent with the definition of a data structure, two sets of calculations are performed on each candidate data structure during the trade-off process:

• Calculations to determine the speed of the operations to be performed on the data. • Calculations to determine the amount of extra storage (overhead) associated with the data structure.

These two calculations are considered to be a measure of the performance of a data structure. A high-performing data structure is one that

• Rapidly operates on the data. • Minimizes storage requirements.

Unfortunately, due to the architecture of modern computer systems, rapid operation and minimal storage are usually mutually exclusive. Data structures that are very fast normally require high storage overhead; this was the case with our fourth telephone program’s data structure. Data structures that minimize memory overhead can be slow; this was the case with our first and second telephone programs’ data structure. Thus, the selection of the best structure for a particular application is usually a compromise, or trade-off, between speed and overhead and one other very important factor: cost.

1.2.3 The Trade-Off Process Once the performance of the candidate data structures has been

calculated (i.e., their speed and memory requirements), the trade-off process begins aimed at selecting the best data structure for the application. The selection of the best data structure should always be based on the following guideline:

Select the least expensive data structure that satisfies the speed requirements and storage constraints of the application.

Thus, there are three factors to consider in the trade-off: cost, speed,

28

 

 

and memory overhead. The process is illustrated in Figure 1.4 . Speed requirements can vary widely from one application to another.

A program that is monitoring the temperature of a nuclear reactor may have to operate on its data within a few hundred nanoseconds to prevent a meltdown, while a program that updates a bank account balance may have several seconds to perform its operation. When the data processing is performed to update a display viewed by humans, an operation time of 0.1 seconds is more than adequate. Studies show that faster response times are imperceptible to humans. Whatever the speed requirements for a particular problem are, good software engineering practices mandate that they be specified before the program is designed and that they be documented in the project’s Requirements Document .

The cost of a data structure is primarily the labor cost associated with developing the code to implement the data structure. This includes its design, coding, testing, and documentation. Some data structures can be implemented in a few lines of code, while others take thousands of lines. Software engineering studies indicate that the cost of software is directly proportional to the number of lines of code that the software contains. Typical software costs for large software projects are illustrated in Figure 1.5 for various burdened labor rates. 1 The cost shown includes the cost of design, implementation, testing, and documentation. Thus, the most cost- effective data structures are those whose implementations require a minimal amount of code and utilize builtin data structures in their design.

Figure 1.4 Data Structure Selection Process Involving Four Candidate Structures

29

 

 

Figure 1.5 Cost of Software that is Part of a Large Project Using data similar to that presented in Figure 1.5 , the designer of a

data structure can estimate its cost by simply estimating the number of lines of code required to implement the data structure. Once this is done, the most inexpensive structure is selected from those that meet the speed criteria and demonstrate an acceptable level of memory overhead.

To illustrate the trade-off process depicted in Figure 1.4 , we will return to our telephone listing application. During the Requirements Phase of the project, our system analysis team has met with the customer and has consolidated their findings in the project’s Requirements Document. Assume that the conditions specified in Table 1.1 have been reproduced from that document. As previously mentioned, four candidate data structures have been proposed for the project (see Table 1.2 ). These will be passed through the trade-off process illustrated in Figure 1.4 .

To begin this process, the speed of the operations are calculated for each of the candidate structures using techniques explained later in this text. The results of these calculations are presented in Table 1.3 . Since the required maximum operation time was specified to be less than 0.10 seconds (see Table 1.1 ), the first and second data structures are eliminated from further consideration. (Their maximum operation times are 6 seconds and 10 seconds respectively.)

Next, calculations are performed to determine the additional storage required by the two remaining candidate data structures that are necessary to store the 100,000,000 telephone listings. The results of these calculations are presented in the rightmost column of Table 1.3 . The overhead associated with the fourth structure (1.7 × 1031 bytes) is unacceptably large, and so it is eliminated, leaving us with the third

30

 

 

structure. Its additional memory requirements are only 10% larger than the minimum required to store the phone listings (5,000,000,000 bytes = 100,000,000 listings × 50 bytes per listing).

Finally, a cost analysis is performed on the third structure. As previously discussed, one simple cost analysis technique is to estimate the number of lines of code required to implement the data structure. Then, a chart similar to Figure 1.5 can be used to estimate the implementation cost. If this cost is acceptable, the structure would be used for the application. If not, other candidate structures would have to be proposed, or the requirements of the project, specified in Table 1.1 , would be renegotiated with the customer.

1.3 Fundamental Concepts All data structures share a common set of concepts that include:

• A common terminology . • The manner in which the information stored in the structures is accessed . • The manner in which the information is operated on . • The manner in which the structures are implemented . • The concepts of abstraction and encapsulation .

We will begin our study of these topics with a discussion of the common terminology of data structures.

1.3.1 Terminology Before proceeding further with our study of data structures, it is

necessary to gain an understanding of five terms fundamental to the study of data structures: field, node, key field, homogeneous structure, and linear list.

Field: A field is an indivisible piece of data.

Our phone listings consist of three fields: a person’s name, the person’s address, and the person’s phone number. By indivisible , we mean that if the field were divided further, it would lose all meaning. For example, a seven-digit phone number could be divided into seven separate integers, but in the context of our phone directory, those seven separate integers would have no meaning in that they would no longer represent a

31

 

 

phone number. Node:

A node is a group of related fields. In our phone book problem, a single listing is called a node. In some

programming languages, node definitions are coded using the structure construct (in C++ the keyword struct). Java programmers code node definitions using the class construct, with the node’s fields coded as the class’ data members. The relationship between the fields of a node must be a belongs-to relationship, so if the name field of a phone book node contains the name “Al Smith,” then the address field must contain Al Smith’s address, and the phone number field must contain Al Smith’s phone number.

Key Field: A key field is a designated field in a node whose contents are used to

identify, or to refer to, the node. In the case of our phone book information request application, the key

field would normally be the name field. The contents of the name field are used to identify which listing is to be fetched from the data set. There can be more than one key field. If the application was also used by the police to trace a call, the phone number field would also be designated as a key field.

The definitions of field, node, and key field are illustrated in Figure 1.6 , which refers to the telephone listing application.

Homogeneous data set: A set of nodes in which all the nodes have identical fields (number and

type)

Figure 1.6 A Node and Its Fields The data set in our telephone listing application is a homogeneous

data set because each node in the data set has the same three fields (a

32

 

 

person’s name, address, and telephone number), and these fields in all the nodes are of the same type (String). Most data sets are homogeneous.

1.3.2 Access Modes Access is the process by which we locate a node in memory. After the

node is accessed or located, then an operation can be performed on it. There are two generic ways or modes used to specify the node to be accessed:

• The node number mode. • The key field mode.

In the node number mode, the number of the node to be operated on is specified (e.g., fetch back the third node). In the key field mode, the contents of the designated key field are specified (e.g., fetch back the node whose key field contains the value “Al Smith”). Most data structures utilize the key field access mode. However, as we will see, there are some important applications in which the node number mode is used.

1.3.3 Linear Lists An implicit assumption in the node number mode is that nodes are

stored in a linear fashion, called a linear list . A collection of n nodes is a linear list if:

• There is a unique first node, N 1 . • There is a unique last node, N n . • For any other node, N i , a unique (one and only one) node, N i −1 , comes just before it, and a unique (one and only one) node, N i +1 , comes just after it.

Figure 1.7 illustrates a group of nod

Develop your own Comprehensive Web Application

Develop your own Comprehensive Web Application

  • Synthesize the conceptual information covered in previous modules to propose your own comprehensive web-based application that you will develop
  • Design a consistent look for your web application
  • Create an intuitive navigation structure for your web application
  • Develop your proposed web application using the ASP.NET Core MVC tools and coding techniques covered in previous modules
  • Incorporate at least one user story within your application for adding, updating, and deleting data in a database table

Create a step-by-step IT security policy for handling user accounts/rights for a student who is leaving prematurely

Create a step-by-step IT security policy for handling user accounts/rights for a student who is leaving prematurely (drops, is expelled, and so on).

You will need to consider specialized student scenarios, such as a student who works as an assistant to a faculty member or as a lab assistant in a computer lab and may have access to resources most students do not.

ProjectFingerprint

MGO_MVC/.vs/MGO_MVC/config/applicationhost.config

 

MGO_MVC/.vs/MGO_MVC/DesignTimeBuild/.dtbcache.v2

������Debug|Any CPU|��BuildCacheContainsPartialData��False��ProjectFingerprint�@9fee9bd25abd41ec12694b8e46636c9797b9d3470e9d5941e5d15f2f25315bcc��CollectAnalyzersDesignTime�nC:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk.Web\analyzers\cs\Microsoft.AspNetCore.Analyzers.dll��true�rC:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk.Web\analyzers\cs\Microsoft.AspNetCore.Mvc.Analyzers.dll�yC:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk.Web\analyzers\cs\Microsoft.AspNetCore.Components.Analyzers.dll�~C:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll�wC:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll���C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.analyzers\3.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll�ˆ�C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.analyzers\3.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.Analyzers.dll���C:\Users\mkorzaan\.nuget\packages\microsoft.entityframeworkcore.analyzers\5.0.4\analyzers\dotnet\cs\Microsoft.EntityFrameworkCore.Analyzers.dll�$ResolvePackageDependenciesDesignTime�-Microsoft.EntityFrameworkCore.SqlServer/5.0.4��5.0.4�’Microsoft.EntityFrameworkCore.SqlServer�OC:\Users\mkorzaan\.nuget\packages\microsoft.entityframeworkcore.sqlserver\5.0.4�)Microsoft.EntityFrameworkCore.Tools/5.0.4�#Microsoft.EntityFrameworkCore.Tools�KC:\Users\mkorzaan\.nuget\packages\microsoft.entityframeworkcore.tools\5.0.4�(Microsoft.Extensions.Logging.Debug/5.0.0��5.0.0�”Microsoft.Extensions.Logging.Debug�JC:\Users\mkorzaan\.nuget\packages\microsoft.extensions.logging.debug\5.0.0�6Microsoft.VisualStudio.Web.CodeGeneration.Design/5.0.2��5.0.2�0Microsoft.VisualStudio.Web.CodeGeneration.Design�XC:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration.design\5.0.2�%GenerateSupportedTargetFrameworkAlias� netcoreapp1.0� .NET Core 1.0� netcoreapp1.1� .NET Core 1.1� netcoreapp2.0� .NET Core 2.0� netcoreapp2.1� .NET Core 2.1� netcoreapp2.2� .NET Core 2.2� netcoreapp3.0� .NET Core 3.0� netcoreapp3.1� .NET Core 3.1��net5.0��.NET 5.0�&CollectResolvedSDKReferencesDesignTime�#CollectUpToDateCheckInputDesignTime��Views\Home\Index.cshtml� RazorViews��Views\Shared\Error.cshtml��Views\Shared\_Layout.cshtml�-Views\Shared\_ValidationScriptsPartial.cshtml��Views\_ViewImports.cshtml��Views\_ViewStart.cshtml��CollectFrameworkReferences��Microsoft.NETCore.App��All��Microsoft.AspNetCore.App��CollectCentralPackageVersions��CompileDesignTime� /noconfig��/unsafe-� /checked-� /nowarn:1701,1702,1701,1702,2008� /fullpaths� /nostdlib+��/errorreport:prompt��/warn:5�ê�/define:TRACE;DEBUG;NET;NET5_0;NETCOREAPP;NET5_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER��/errorendlocation��/preferreduilang:en-US��/highentropyva+�•�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration.design\5.0.2\lib\net5.0\dotnet-aspnet-codegenerator-design.dll�}/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Antiforgery.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.Abstractions.dll”�ˆ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.Cookies.dll”�…�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.Core.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.dll”�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.OAuth.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authorization.dll”�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authorization.Policy.dll”�Š�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.Authorization.dll”�|/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.dll”�‚�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.Forms.dll”�ƒ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.Server.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.Web.dll”�Š�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Connections.Abstractions.dll”�~/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.CookiePolicy.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Cors.dll”�‡�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Cryptography.Internal.dll”�Œ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Cryptography.KeyDerivation.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.DataProtection.Abstractions.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.DataProtection.dll”�‹�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.DataProtection.Extensions.dll”�Š�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Diagnostics.Abstractions.dll”�}/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Diagnostics.dll”�Š�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Diagnostics.HealthChecks.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.HostFiltering.dll”�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Hosting.Abstractions.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Hosting.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Hosting.Server.Abstractions.dll”�ƒ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Html.Abstractions.dll”�ƒ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Abstractions.dll”�‰�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Connections.Common.dll”�‚�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Connections.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Extensions.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Features.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.HttpOverrides.dll”�}/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.HttpsPolicy.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Identity.dll”�~/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Localization.dll”�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Localization.Routing.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Metadata.dll”�‚�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Abstractions.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.ApiExplorer.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Core.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Cors.dll”�…�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.DataAnnotations.dll”�u/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.dll”�…�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Formatters.Json.dll”�„�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Formatters.Xml.dll”�‚�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Localization.dll”�{/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Razor.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.RazorPages.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.TagHelpers.dll”�‚�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.ViewFeatures.dll”�w/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Razor.dll”�‘�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.aspnetcore.razor.language\5.0.0\lib\netstandard2.0\Microsoft.AspNetCore.Razor.Language.dll��/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Razor.Runtime.dll”�Ž�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.ResponseCaching.Abstractions.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.ResponseCaching.dll”�…�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.ResponseCompression.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Rewrite.dll”�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Routing.Abstractions.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Routing.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.HttpSys.dll”�|/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.IIS.dll”�‡�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.IISIntegration.dll”�…�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.Kestrel.Core.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.Kestrel.dll”�’�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Session.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.SignalR.Common.dll”�~/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.SignalR.Core.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.SignalR.dll”�ˆ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.SignalR.Protocols.Json.dll”�}/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.StaticFiles.dll”�|/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.WebSockets.dll”�~/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.WebUtilities.dll”�…�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.bcl.asyncinterfaces\1.1.1\ref\netstandard2.1\Microsoft.Bcl.AsyncInterfaces.dll�„�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.csharp\3.8.0\lib\netcoreapp3.1\Microsoft.CodeAnalysis.CSharp.dll�š�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.csharp.workspaces\3.8.0\lib\netcoreapp3.1\Microsoft.CodeAnalysis.CSharp.Workspaces.dll�}/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.common\3.8.0\lib\netcoreapp3.1\Microsoft.CodeAnalysis.dll�ƒ�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.razor\5.0.0\lib\netstandard2.0\Microsoft.CodeAnalysis.Razor.dll�“�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.workspaces.common\3.8.0\lib\netcoreapp3.1\Microsoft.CodeAnalysis.Workspaces.dll�j/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\Microsoft.CSharp.dll”�z/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.data.sqlclient\2.0.1\ref\netcoreapp3.1\Microsoft.Data.SqlClient.dll�Ÿ�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.entityframeworkcore.abstractions\5.0.4\lib\netstandard2.1\Microsoft.EntityFrameworkCore.Abstractions.dll�…�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.entityframeworkcore\5.0.4\lib\netstandard2.1\Microsoft.EntityFrameworkCore.dll�›�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.entityframeworkcore.relational\5.0.4\lib\netstandard2.1\Microsoft.EntityFrameworkCore.Relational.dll�™�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.entityframeworkcore.sqlserver\5.0.4\lib\netstandard2.1\Microsoft.EntityFrameworkCore.SqlServer.dll�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Caching.Abstractions.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Caching.Memory.dll”�Œ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.Abstractions.dll”�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.Binder.dll”�‹�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.CommandLine.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.dll”�”�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.EnvironmentVariables.dll”�Ž�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.FileExtensions.dll”�ƒ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.Ini.dll”�„�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.Json.dll”�Š�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.KeyPerFile.dll”�‹�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.UserSecrets.dll”�ƒ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Configuration.Xml.dll”�’�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll”�“�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.extensions.dependencyinjection\5.0.1\lib\net5.0\Microsoft.Extensions.DependencyInjection.dll�—�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll”�Š�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Diagnostics.HealthChecks.dll”�Œ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.FileProviders.Abstractions.dll”�‰�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.FileProviders.Composite.dll”�ˆ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.FileProviders.Embedded.dll”�ˆ�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.FileProviders.Physical.dll”�„�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.FileSystemGlobbing.dll”�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Hosting.Abstractions.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Hosting.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Http.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Identity.Core.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Identity.Stores.dll”�‹�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Localization.Abstractions.dll”�~/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Localization.dll”�†�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Logging.Abstractions.dll”�‡�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Logging.Configuration.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Logging.Console.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Logging.Debug.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Logging.dll”�‚�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Logging.EventLog.dll”�…�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Logging.EventSource.dll”�…�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Logging.TraceSource.dll”�|/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.ObjectPool.dll”�‘�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Options.ConfigurationExtensions.dll”�‰�/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Options.DataAnnotations.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Options.dll”�|/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.Primitives.dll”�}/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Extensions.WebEncoders.dll”�•�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.identitymodel.jsonwebtokens\5.6.0\lib\netstandard2.0\Microsoft.IdentityModel.JsonWebTokens.dll�‰�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.identitymodel.logging\5.6.0\lib\netstandard2.0\Microsoft.IdentityModel.Logging.dll���/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.identitymodel.protocols\5.6.0\lib\netstandard2.0\Microsoft.IdentityModel.Protocols.dll�©�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.identitymodel.protocols.openidconnect\5.6.0\lib\netstandard2.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll�‡�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.identitymodel.tokens\5.6.0\lib\netstandard2.0\Microsoft.IdentityModel.Tokens.dll�p/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.JSInterop.dll”�w/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Net.Http.Headers.dll”�t/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\Microsoft.VisualBasic.Core.dll”�o/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\Microsoft.VisualBasic.dll”�©�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration.contracts\5.0.2\lib\net5.0\Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll�Ÿ�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration.core\5.0.2\lib\net5.0\Microsoft.VisualStudio.Web.CodeGeneration.Core.dll�•�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration\5.0.2\lib\net5.0\Microsoft.VisualStudio.Web.CodeGeneration.dll�½�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration.entityframeworkcore\5.0.2\lib\net5.0\Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll�«�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration.templating\5.0.2\lib\net5.0\Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll�¡�/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration.utils\5.0.2\lib\net5.0\Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll���/reference:C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegenerators.mvc\5.0.2\lib\net5.0\Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll�t/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Win32.Primitives.dll”�u/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Win32.Registry.dll”�b/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\mscorlib.dll”�e/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\netstandard.dll”�j/reference:C:\Users\mkorzaan\.nuget\packages\newtonsoft.json\11.0.2\lib\netstandard2.0\Newtonsoft.Json.dll�k/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.AppContext.dll”�h/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Buffers.dll”�w/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.Concurrent.dll”�l/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.Immutable.dll”�w/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.NonGeneric.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.Specialized.dll”�{/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.Annotations.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.DataAnnotations.dll”�o/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.EventBasedAsync.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.Primitives.dll”�}/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.TypeConverter.dll”���/reference:C:\Users\mkorzaan\.nuget\packages\system.composition.attributedmodel\1.0.31\lib\netstandard1.0\System.Composition.AttributedModel.dll�†�/reference:C:\Users\mkorzaan\.nuget\packages\system.composition.convention\1.0.31\lib\netstandard1.0\System.Composition.Convention.dll�€�/reference:C:\Users\mkorzaan\.nuget\packages\system.composition.hosting\1.0.31\lib\netstandard1.0\System.Composition.Hosting.dll�€�/reference:C:\Users\mkorzaan\.nuget\packages\system.composition.runtime\1.0.31\lib\netstandard1.0\System.Composition.Runtime.dll�†�/reference:C:\Users\mkorzaan\.nuget\packages\system.composition.typedparts\1.0.31\lib\netstandard1.0\System.Composition.TypedParts.dll�n/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Configuration.dll”�h/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Console.dll”�e/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Core.dll”�l/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Data.Common.dll”�w/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Data.DataSetExtensions.dll”�e/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Data.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Contracts.dll”�r/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Debug.dll”�‰�/reference:C:\Users\mkorzaan\.nuget\packages\system.diagnostics.diagnosticsource\5.0.1\lib\net5.0\System.Diagnostics.DiagnosticSource.dll�x/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.EventLog.dll”�|/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.FileVersionInfo.dll”�t/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Process.dll”�w/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.StackTrace.dll”�„�/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.TextWriterTraceListener.dll”�r/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Tools.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.TraceSource.dll”�t/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Tracing.dll”�`/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.dll”�h/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Drawing.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Drawing.Primitives.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Dynamic.Runtime.dll”�m/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Formats.Asn1.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Globalization.Calendars.dll”�n/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Globalization.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Globalization.Extensions.dll”�‰�/reference:C:\Users\mkorzaan\.nuget\packages\system.identitymodel.tokens.jwt\5.6.0\lib\netstandard2.0\System.IdentityModel.Tokens.Jwt.dll�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Compression.Brotli.dll”�o/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Compression.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Compression.FileSystem.dll”�w/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Compression.ZipFile.dll”�c/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.dll”�n/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.DriveInfo.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.Primitives.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.Watcher.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.IsolatedStorage.dll”�u/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.MemoryMappedFiles.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\System.IO.Pipelines.dll”�i/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Pipes.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.UnmanagedMemoryStream.dll”�e/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Linq.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Linq.Expressions.dll”�n/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Linq.Parallel.dll”�o/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Linq.Queryable.dll”�g/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Memory.dll”�d/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.dll”�i/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Http.dll”�n/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Http.Json.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.HttpListener.dll”�i/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Mail.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.NameResolution.dll”�w/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.NetworkInformation.dll”�i/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Ping.dll”�o/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Primitives.dll”�m/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Requests.dll”�m/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Security.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.ServicePoint.dll”�l/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Sockets.dll”�n/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebClient.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebHeaderCollection.dll”�m/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebProxy.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebSockets.Client.dll”�o/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebSockets.dll”�i/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Numerics.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Numerics.Vectors.dll”�l/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ObjectModel.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.DispatchProxy.dll”�k/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Emit.dll”�}/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Emit.ILGeneration.dll”�|/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Emit.Lightweight.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Extensions.dll”�t/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Metadata.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Primitives.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.TypeExtensions.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Resources.Reader.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Resources.ResourceManager.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Resources.Writer.dll”�€�/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.CompilerServices.Unsafe.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.CompilerServices.VisualC.dll”�h/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Extensions.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Handles.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.InteropServices.dll”�‹�/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.InteropServices.RuntimeInformation.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Intrinsics.dll”�o/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Loader.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Numerics.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.Formatters.dll”�{/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.Json.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.Primitives.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.Xml.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\System.Security.AccessControl.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Claims.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Algorithms.dll”�}/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Cng.dll”�z/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Csp.dll”��/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Encoding.dll”���/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Primitives.dll”�‡�/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.X509Certificates.dll”�}/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Xml.dll”�i/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\System.Security.Permissions.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Principal.dll”�~/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\System.Security.Principal.Windows.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.SecureString.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ServiceModel.Web.dll”�o/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ServiceProcess.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Encoding.CodePages.dll”�n/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Encoding.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Encoding.Extensions.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Encodings.Web.dll”�j/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Json.dll”�x/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.RegularExpressions.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Channels.dll”�j/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.dll”�u/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Overlapped.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Tasks.Dataflow.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Tasks.dll”�{/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Tasks.Extensions.dll”�y/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Tasks.Parallel.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Thread.dll”�u/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.ThreadPool.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Timer.dll”�m/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Transactions.dll”�s/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Transactions.Local.dll”�k/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ValueTuple.dll”�d/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Web.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Web.HttpUtility.dll”�h/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Windows.dll”�v/reference:”C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\System.Windows.Extensions.dll”�d/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.dll”�i/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.Linq.dll”�q/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.ReaderWriter.dll”�r/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.Serialization.dll”�n/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XDocument.dll”�p/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XmlDocument.dll”�r/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XmlSerializer.dll”�j/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XPath.dll”�t/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XPath.XDocument.dll”�e/reference:”C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\WindowsBase.dll”��/debug+��/debug:portable��/filealign:512� /optimize-�!/out:obj\Debug\net5.0\MGO_MVC.dll�(/refout:obj\Debug\net5.0\ref\MGO_MVC.dll��/target:exe� /warnaserror-��/utf8output��/deterministic+��/langversion:9.0�R/analyzerconfig:obj\Debug\net5.0\MGO_MVC.GeneratedMSBuildEditorConfig.editorconfig�ˆ�/analyzerconfig:”C:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk\analyzers\build\config\AnalysisLevel_5_Default.editorconfig”�z/analyzer:”C:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk.Web\analyzers\cs\Microsoft.AspNetCore.Analyzers.dll”�~/analyzer:”C:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk.Web\analyzers\cs\Microsoft.AspNetCore.Mvc.Analyzers.dll”�…�/analyzer:”C:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk.Web\analyzers\cs\Microsoft.AspNetCore.Components.Analyzers.dll”�Š�/analyzer:”C:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll”�ƒ�/analyzer:”C:\Program Files\dotnet\sdk\5.0.201\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll”�‹�/analyzer:C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.analyzers\3.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll�’�/analyzer:C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.analyzers\3.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.Analyzers.dll�™�/analyzer:C:\Users\mkorzaan\.nuget\packages\microsoft.entityframeworkcore.analyzers\5.0.4\analyzers\dotnet\cs\Microsoft.EntityFrameworkCore.Analyzers.dll��Controllers\HomeController.cs�$Migrations\20210328023454_Initial.cs�-Migrations\20210328023454_Initial.Designer.cs�%Migrations\MGOContextModelSnapshot.cs��Models\Category.cs��Models\Customer.cs��Models\Employee.cs��Models\ErrorViewModel.cs��Models\Item.cs��Models\MGOContext.cs��Models\Purchase.cs��Models\PurchaseItem.cs��Models\Sale.cs��Models\SaleItem.cs� Program.cs� Startup.cs�?obj\Debug\net5.0\.NETCoreApp,Version=v5.0.AssemblyAttributes.cs�(obj\Debug\net5.0\MGO_MVC.AssemblyInfo.cs�-obj\Debug\net5.0\MGO_MVC.RazorAssemblyInfo.cs��/warnaserror+:NU1605�#ResolveProjectReferencesDesignTime2�$ResolveFrameworkReferencesDesignTime�=C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0�@C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0�#CollectUpToDateCheckBuiltDesignTime�”obj\Debug\net5.0\MGO_MVC.Views.dll�JC:\Users\mkorzaan\Desktop\MVC\MGO_MVC\MGO_MVC\bin\Debug\net5.0\MGO_MVC.dll��obj\Debug\net5.0\MGO_MVC.dll��obj\Debug\net5.0\MGO_MVC.pdb��bin\Debug\net5.0\MGO_MVC.pdb��ResolveComReferencesDesignTime�#ResolveAssemblyReferencesDesignTime�Š�C:\Users\mkorzaan\.nuget\packages\microsoft.visualstudio.web.codegeneration.design\5.0.2\lib\net5.0\dotnet-aspnet-codegenerator-design.dll��false�edotnet-aspnet-codegenerator-design, Version=5.0.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60��{HintPathFromItem}�pC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Antiforgery.dll�cMicrosoft.AspNetCore.Antiforgery, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60� {RawFileName}�€�C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.Abstractions.dll�sMicrosoft.AspNetCore.Authentication.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�{C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.Cookies.dll�nMicrosoft.AspNetCore.Authentication.Cookies, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�xC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.Core.dll�kMicrosoft.AspNetCore.Authentication.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�sC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.dll�fMicrosoft.AspNetCore.Authentication, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�yC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authentication.OAuth.dll�lMicrosoft.AspNetCore.Authentication.OAuth, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�rC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authorization.dll�eMicrosoft.AspNetCore.Authorization, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�yC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Authorization.Policy.dll�lMicrosoft.AspNetCore.Authorization.Policy, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�}C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.Authorization.dll�pMicrosoft.AspNetCore.Components.Authorization, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�oC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.dll�bMicrosoft.AspNetCore.Components, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�uC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.Forms.dll�hMicrosoft.AspNetCore.Components.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�vC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.Server.dll�iMicrosoft.AspNetCore.Components.Server, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�sC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Components.Web.dll�fMicrosoft.AspNetCore.Components.Web, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�}C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Connections.Abstractions.dll�pMicrosoft.AspNetCore.Connections.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�qC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.CookiePolicy.dll�dMicrosoft.AspNetCore.CookiePolicy, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�iC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Cors.dll�\Microsoft.AspNetCore.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�zC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Cryptography.Internal.dll�mMicrosoft.AspNetCore.Cryptography.Internal, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60��C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Cryptography.KeyDerivation.dll�rMicrosoft.AspNetCore.Cryptography.KeyDerivation, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�€�C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.DataProtection.Abstractions.dll�sMicrosoft.AspNetCore.DataProtection.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�sC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.DataProtection.dll�fMicrosoft.AspNetCore.DataProtection, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�~C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.DataProtection.Extensions.dll�qMicrosoft.AspNetCore.DataProtection.Extensions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�}C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Diagnostics.Abstractions.dll�pMicrosoft.AspNetCore.Diagnostics.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�pC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Diagnostics.dll�cMicrosoft.AspNetCore.Diagnostics, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�}C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Diagnostics.HealthChecks.dll�pMicrosoft.AspNetCore.Diagnostics.HealthChecks, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�dC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.dll�WMicrosoft.AspNetCore, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�rC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.HostFiltering.dll�eMicrosoft.AspNetCore.HostFiltering, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�yC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Hosting.Abstractions.dll�lMicrosoft.AspNetCore.Hosting.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�lC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Hosting.dll�_Microsoft.AspNetCore.Hosting, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�€�C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Hosting.Server.Abstractions.dll�sMicrosoft.AspNetCore.Hosting.Server.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�vC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Html.Abstractions.dll�iMicrosoft.AspNetCore.Html.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�vC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Abstractions.dll�iMicrosoft.AspNetCore.Http.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�|C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Connections.Common.dll�oMicrosoft.AspNetCore.Http.Connections.Common, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�uC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Connections.dll�hMicrosoft.AspNetCore.Http.Connections, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�iC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.dll�\Microsoft.AspNetCore.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�tC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Extensions.dll�gMicrosoft.AspNetCore.Http.Extensions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�rC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Http.Features.dll�eMicrosoft.AspNetCore.Http.Features, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�rC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.HttpOverrides.dll�eMicrosoft.AspNetCore.HttpOverrides, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�pC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.HttpsPolicy.dll�cMicrosoft.AspNetCore.HttpsPolicy, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�mC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Identity.dll�`Microsoft.AspNetCore.Identity, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�qC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Localization.dll�dMicrosoft.AspNetCore.Localization, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�yC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Localization.Routing.dll�lMicrosoft.AspNetCore.Localization.Routing, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�mC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Metadata.dll�`Microsoft.AspNetCore.Metadata, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�uC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Abstractions.dll�hMicrosoft.AspNetCore.Mvc.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�tC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.ApiExplorer.dll�gMicrosoft.AspNetCore.Mvc.ApiExplorer, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�mC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Core.dll�`Microsoft.AspNetCore.Mvc.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�mC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Cors.dll�`Microsoft.AspNetCore.Mvc.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�xC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.DataAnnotations.dll�kMicrosoft.AspNetCore.Mvc.DataAnnotations, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�hC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.dll�[Microsoft.AspNetCore.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�xC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Formatters.Json.dll�kMicrosoft.AspNetCore.Mvc.Formatters.Json, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�wC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Formatters.Xml.dll�jMicrosoft.AspNetCore.Mvc.Formatters.Xml, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�uC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Localization.dll�hMicrosoft.AspNetCore.Mvc.Localization, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�nC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.Razor.dll�aMicrosoft.AspNetCore.Mvc.Razor, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�sC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.RazorPages.dll�fMicrosoft.AspNetCore.Mvc.RazorPages, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�sC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.TagHelpers.dll�fMicrosoft.AspNetCore.Mvc.TagHelpers, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�uC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Mvc.ViewFeatures.dll�hMicrosoft.AspNetCore.Mvc.ViewFeatures, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�jC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Razor.dll�]Microsoft.AspNetCore.Razor, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�†�C:\Users\mkorzaan\.nuget\packages\microsoft.aspnetcore.razor.language\5.0.0\lib\netstandard2.0\Microsoft.AspNetCore.Razor.Language.dll�fMicrosoft.AspNetCore.Razor.Language, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�rC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Razor.Runtime.dll�eMicrosoft.AspNetCore.Razor.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60���C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.ResponseCaching.Abstractions.dll�tMicrosoft.AspNetCore.ResponseCaching.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�tC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.ResponseCaching.dll�gMicrosoft.AspNetCore.ResponseCaching, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�xC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.ResponseCompression.dll�kMicrosoft.AspNetCore.ResponseCompression, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�lC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Rewrite.dll�_Microsoft.AspNetCore.Rewrite, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�yC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Routing.Abstractions.dll�lMicrosoft.AspNetCore.Routing.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�lC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Routing.dll�_Microsoft.AspNetCore.Routing, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�sC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.HttpSys.dll�fMicrosoft.AspNetCore.Server.HttpSys, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�oC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.IIS.dll�bMicrosoft.AspNetCore.Server.IIS, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�zC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.IISIntegration.dll�mMicrosoft.AspNetCore.Server.IISIntegration, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�xC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.Kestrel.Core.dll�kMicrosoft.AspNetCore.Server.Kestrel.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�sC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.Kestrel.dll�fMicrosoft.AspNetCore.Server.Kestrel, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�…�C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll�xMicrosoft.AspNetCore.Server.Kestrel.Transport.Sockets, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�lC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.Session.dll�_Microsoft.AspNetCore.Session, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�sC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.SignalR.Common.dll�fMicrosoft.AspNetCore.SignalR.Common, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�qC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.SignalR.Core.dll�dMicrosoft.AspNetCore.SignalR.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�lC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.SignalR.dll�_Microsoft.AspNetCore.SignalR, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�{C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.SignalR.Protocols.Json.dll�nMicrosoft.AspNetCore.SignalR.Protocols.Json, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�pC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.StaticFiles.dll�cMicrosoft.AspNetCore.StaticFiles, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�oC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.WebSockets.dll�bMicrosoft.AspNetCore.WebSockets, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�qC:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0\ref\net5.0\Microsoft.AspNetCore.WebUtilities.dll�dMicrosoft.AspNetCore.WebUtilities, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�zC:\Users\mkorzaan\.nuget\packages\microsoft.bcl.asyncinterfaces\1.1.1\ref\netstandard2.1\Microsoft.Bcl.AsyncInterfaces.dll�`Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51�yC:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.csharp\3.8.0\lib\netcoreapp3.1\Microsoft.CodeAnalysis.CSharp.dll�`Microsoft.CodeAnalysis.CSharp, Version=3.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35���C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.csharp.workspaces\3.8.0\lib\netcoreapp3.1\Microsoft.CodeAnalysis.CSharp.Workspaces.dll�kMicrosoft.CodeAnalysis.CSharp.Workspaces, Version=3.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35�rC:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.common\3.8.0\lib\netcoreapp3.1\Microsoft.CodeAnalysis.dll�YMicrosoft.CodeAnalysis, Version=3.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35�xC:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.razor\5.0.0\lib\netstandard2.0\Microsoft.CodeAnalysis.Razor.dll�_Microsoft.CodeAnalysis.Razor, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60�ˆ�C:\Users\mkorzaan\.nuget\packages\microsoft.codeanalysis.workspaces.common\3.8.0\lib\netcoreapp3.1\Microsoft.CodeAnalysis.Workspaces.dll�dMicrosoft.CodeAnalysis.Workspaces, Version=3.8.0.0,

Discuss the challenges of maintaining information security at a remote recovery location.

Discuss the challenges of maintaining information security at a remote recovery location.

DQ requirement: Note that the requirement is to post your initial response no later than Sunday and you must post one additional post during the week. I recommend your initial posting to be between 200-to-300 words. The replies to fellow students and to the professor should range between 100-to-150 words. All initial posts must contain a properly formatted in-text citation and scholarly reference.

Reply 1:

Information security at a remote recovery location

Recovery is the act or preparation to overcome the man made or natural disaster.Information Security plays a vital role to overcome the disaster. Even though Information security is important there are lots of challenges in maintaining information security at remote recovery location. In case if information security is not maintained properly then there may chance of vulnerabilities like harmful instruction will delivered. Some other challenges include observing insights, implementing procedures, controlling remote site and making the site aware about the risk. It is difficult to monitor the entire resources towards the center of information security. And also gaining control and implementing process took some time at the remote recovery location. Some of the Major Challenges of maintaining information security are
1) Although remote locations often operate as independent small businesses, there is a constant requirement for sensitive information such as corporate resources, customerrecords, and payment data to be shared between the corporate headquarters and each site. Dangers of sending sensitive communication over the open web present significant security risks. Distributed enterprise organizations need a way to secure all communications between their corporate HQ and remote employee and business locations.

The Possible solution to this challenge is :

Establishing an encrypted network connection, known as a Virtual Private Network (VPN), between the HQ and the remote location, or between two remote locations willensure that all communications are secure.

2) Credit cards have been a convenience to businesses and consumers alike for over 50 years. These small pieces of plastic make transacting easy, but securing those transactions in our connected world is a different story entirely. Purpose-built malware is popping up every day, designed specifically to compromise point of sale (POS) systems.For the Distributed Enterprise, cash-only is simply not an option. Organizations must accept and transmit customer payment information, which creates a unique set of security challenges for both the remote site and the corporate HQ.

The possible solution to this challenge is :

Remote locations that process credit card transactions must utilize best-in-class network security technologies to not only protect and monitor their payment systems, but toalso separate the network used for payment transactions from the rest of their network and all other information systems. Also, as the target of many dedicated attacks, organizations must employ solutions for protecting their POS systems from advanced and zero day malware threats. Sophisticated UTM appliances can offer Distributed Enterprises all of the advanced network protection they need from one easy-to-deploy offering.

3) In recent years, regulatory bodies have been tasked with establishing data security standards and requirements,which are designed to protect both businesses and consumers from theft, fraud, and other damages. Although these compliance standards are valuable, they can generate serious challenges for IT professionals. Security systems need regular updates to correspond with the ever-evolving compliance standards. In addition, data storage and transmission systems need to be constantly monitored for unauthorized usage and access. Organizations that fail to comply with PCI DSS, HIPAA, and other global standards, are subject to enforcement actions and fines.

The possible solution to this challenge is :

Businesses within the retail, health care, and hospitality markets are especially sensitive to regulatory compliance.Related aspects of PCI DSS, HIPAA, and other major regulatory compliance standards can be achieved leveraging UTM security appliances as they enable segmentation of network traffic and secure transfer of sensitive information between sites. Modern network visibility tools offer the ability to set alerts and automated reports on security events that are relevant to the compliance standard,including data-leakage, malware, and unauthorized user access. Maintaining clear visibility for auditing purposes is also a requirement for maintaining compliance.

4) Wireless Internet access is becoming an increasingly common service offered to customers, guests, and patients.Distributed Enterprises that choose to offer guest Wi-Fi must be aware of the associated liability. Users can often jump from the guest network to the corporate network,giving them access to sensitive employee and customer data. Businesses also assume liability for any copyright infringement that results from guests illegally downloadingcontent such as media. Organizations must balance the need for tight security, while at the same time providing a fast and seamless Wi-Fi experience for their customers, especially as the number of connected devices continues to grow.

The possible solution to this problem is :

Organizations that choose to offer Wi-Fi hotspots must implement technologies and processes that adhere to data security standards, including PCI DSS and HIPAA. Wi-Fi performance is a large influencer of customer satisfaction, so all security technologies must offer line speed performance during times of peak usage. Both firewall and wireless access point technologies must allow for network segmentation, which separates guests from sensitive corporate data. Full UTM, Data Loss Prevention and Advanced Malware protection are essential in protecting the wireless network from targeted and evolving threats

Reply 2:

Maintaining security at a recovery location

In the event of an incident, it is important to consider issues of cross-site contamination.  Failing over to a recovery location is not going to work in the event that the recovery site is also infected with Ransomware.  This is something to consider if you have a hybrid or warm site.  Pulling full snapshots of your environment will bring everything including the intrusions with it (Livens, 2018).

If your recovery location is in the cloud, you need to consider that the cloud-based threats now apply to your recovery site.  Contractual issues, chain of custody issues, lack of administrative controls and others like next-door neighbor issues.  Other could tenants may be under attack which may impact your operational capacity (Atchison, 2018)

Transportation.  Moving large volumes of data to a recovery location loud or other in a controlled and secure manner can be hard to maintain as the size of your data grows.

Physical security. Changes in full physical access to the hardware at your recovery site could cause issues.  Even in a site owned by the organization recovery sites should maintain restricted physical and network administration until activated as the primary.

Hardware life cycle management.  Even your recovery environment needs to be updated, patched, performance-tested, and eventually decommissioned.

General Maintenance.  Changes to your main production environment, size, capacity, configuration, patches, and even access control lists (ACL)s need to be considered and updates to the recovery environment need to be made.  Your organization may make changes to your internet capacity but forget about updating the internet bandwidth at the recovery site.

 

IT Budgeting (100-Points) Individual Assignment

ISEM 580 – Project 03 IT Budgeting (100-Points) Individual Assignment

1. Background: IT managers work with senior level IT leadership to submit an annual budget based on the business and IT strategies, tactical plans, operational plans and approved initiatives IT project portfolio. Hence, in this scenario the CIO has provided you with the IT budgeting workbook and asked you frame up next year’s IT budget for final review and approval.

 

2. Requirements & Deliverable: This is not a group project assignment. It is to be completed and submitted by each student individually. Carefully, read the Project #3 Guideline Document. Use the IT Budget Workbook provided by the professor. Complete the Project #3 assignment as instructed and submit before or on the scheduled due date. Your deliverable will be the completed IT Budget Workbook; must be a M.S. Excel File (working spreadsheet) that is uploaded into Moodle using the designated link. Note : Any manual entries or overwriting of pre-calculated fields on the work sheets or IT Department Budget dashboard to force the expected results outlined in Section 4 & 5 of this document; will result in a failing grade for this assignment.

 

3. The IT Budgeting Workbook contains the following worksheets (Tabs):

a. IT Department Budget

b. IT Department Budget Worksheet*

c. G&A Worksheet

d. Software-Equipment-Service Worksheet*

e. Personnel Worksheet*

f. References

Note : * Denotes that these are the only worksheets that will be modified to create the budget. All worksheet will need to be referenced to make the appropriate entries in the IT Department Budget Worksheet and successfully create the IT Department budget.

4. IT Budget Workbook Tabs and Instructions:

a. IT Department Budget Tab: This is the IT Budget Dashboard which will self-populate when the other worksheets have been completed. You will use the dashboard to provide your overview of the budget for the CIO.

 

b. IT Department Budget Worksheet Tab: This is the primary worksheet used to formulate the IT budget. You will complete all of the IT budget sections (e.g., Personnel, Computing Equipment, Software, Enterprise Data Center, and General & Administrative) by entering the appropriate dollar values for each month. You will need complete and/or use the other worksheet tabs in the IT Budget workbook (e.g., G& A, Personnel, and Software-Equipment-Services) to properly complete the IT Department Budget Worksheet. Please note the following:

i. Some budget line items in Column “A” have been prepopulated for you in Personnel Expenses and G&A Expenses sections of the IT budget worksheet. Specifically Rows (specifically 4-11 and 76-84)

ii. You will enter budget line items in Column “A” Rows (specifically Rows 15-21; 25-33; 37-43; 47-54; 58-62; and 66-71) under each budget category where there are blanks referencing information outlined in the other corresponding worksheet tabs. Note : you may have one blank row in some budget sections; this is okay and part of the challenge for you to determine.

iii. To determine which equipment, software, and EDC facilities budget line items fall under capital or operational expense sections; you will need to determine the correct “Expenditure Type” by first completing the Software-Equipment-Services worksheet (Specifically: Column D in each of the tables, selecting either CAPEX or OPEX and then make the corresponding budget line item entry and amount into the IT Department Budget Worksheet. Also you do not need to add or change any of the remaining fields in these tables on this worksheet, they have already been prepopulated with the essential information for you to fill out the IT Department Budget Worksheet.

iv. You will enter the correct dollar amounts (fields already formatted) for each budget line items in the months (Jan – Dec / Columns B-M) when the expense will occur during the budget year. Specifically cells located in Columns B-M items in Rows 4-11; 15-21; 25-33; 37-43; 47-54; 58-62; 66-71; and 76-84 under each budget category where there are $0 values referencing information outlined in the other corresponding worksheet tabs. Note : you may have one or more $0 values contained in a row in some budget sections. Hint : not all expenses reoccur on a monthly basis; use the information already outlined in the corresponding worksheet to make the correct determination (e.g., amounts, billing frequency, and billing months).

v. All the cells “Total” fields in Column N for each row are calculated fields and already formatted. Do nothing in this column.

vi. The IT Budget Worksheet Totals below the green highlighted row; are calculated fields and already formatted. Do nothing in the cells contained in Columns A-N: Rows 86-92 in this worksheet.

vii. The all of the G&A expense budget line items have already been entered into the IT Department Budget Work Sheet (Column A: Rows: 76 – 85). The cells contained in Columns B – N: Row 85; (Total G&A Expenses) under G&A section are calculated fields and already formatted. Do nothing in this row.

viii. Analyze the Personnel Worksheet and associated tables for all of the Personnel expense budget line items and corresponding monthly expenditures; reference Section e below for instructions.

 

 

c. G&A Worksheet: This worksheet does not need to be modified but analyzed and referenced to complete the corresponding G&A budget line items in the IT Department Budget Worksheet (e.g., Item names, estimated costs, billing frequency, occurrence, and billing month). This worksheet contains some typical expenses found in the G&A section of an IT budget. Please note the Equipment Depreciation was outlined on the G&A Worksheet but is not included in the IT Department Budget Worksheet (this particular item often requires a good understanding and special treatment with coordination with Finance & Account to determine the asset fair market value and allowable depreciation rates for these assets. In addition, this item is often excluded from the IT budget but included in the overall corporate budget. Lastly, top executives and Board of Directors salaries are often included in G&A and spread across all department budgets. This G&A line item was not included for this exercise.

 

d. Software-Equipment-Service Worksheet: This worksheet does need to be analyzed, modified, and referenced to complete the corresponding G&A budget line items in the IT Department Budget Worksheet. You will need to determine the correct “Expenditure Type” by first completing the Software-Equipment-Services worksheet (Specifically: Column D in each of the tables, selecting either CAPEX or OPEX and then make the corresponding budget line item entry and amount into the IT Department Budget Worksheet. Also you do not need to add or change any of the remaining fields in these tables on this worksheet, they have already been prepopulated with the essential information for you to fill out the IT Department Budget Worksheet (e.g., Item names, expenditure type, total price, billing frequency, occurrence, and billing month).

 

e. Personnel Worksheet: This worksheet does need to be analyzed and referenced to complete the corresponding Personnel budget line items in the IT Department Budget Worksheet (e.g., Item names, estimated costs, salaries, headcounts per month, billing frequency, occurrence, and billing month). This worksheet contains some typical expenses found in the personnel section of an IT budget. As noted earlier, all of the Personnel expense budget line items have already been entered into the IT Department Budget Work Sheet (Column A: Rows: 4 – 11). You will need to populate the remaining cells for this section of the budget using the prepopulated tables on the Personnel Worksheet. The Full-Time Employee salaries will need to be populated in the IT Department Budget Worksheet (Columns: B-M; Row 4) reference the Monthly Employee Salary Totals (bottom row) from IT Department Personnel Monthly Worksheet-Table for this line item. You will also need to calculate the monthly budget amounts for the consulting staff using the Contracted Support Staff Table based on the total number per month and predefined salaries; enter the totals in the bottom row of this table- Monthly Contractor Salaries (Columns F-Q). Then use these totals to make the corresponding entries in the IT Department Budget Worksheet (Consulting Staff) for each month. Use the Other Personnel Expenditure Table to complete the remaining budget line items and associated expenditures per month to their corresponding line item on the IT Department budget Worksheet.

f. References: Do nothing with this worksheet. It was used to build reference lists for drop downs items in the table on the worksheets.

 

5. This project assignment is meant to give you some practical hands-on experience and a better understanding of the key components, data, correlations to IT investments and operations required in formulating the IT Department budget. Reference Module 6 lecture notes and course text, and perhaps independent research to complete this project assignment. As a guide post your IT Department Dashboard final total results for this Year’s Budget column should be comparable to the following:

 

Budget SectionTotals
Personnel Expenses$215,538,939
Computing Equipment-Capitol$2,036,800
Computing Equipment-Expenses$1,611,232
Software Cost-Capitol$2,019,510
Software Cost-Expenses$1,474,120
EDC Facility Costs-Capital$977,985
EDC Facility Costs-Expenses$173,856
General & Administrative$480,236

 

 

Use this table to compare with the IT Department Budget dashboard tab in the workbook.

If you are off buy a small amount don’t get concerned. However, if you are way off the mark, then you most likely have misclassified the expenditure type, have errors in calculations, or entered in a wrong amount in a cell. You must pay attention to detail when transferring information from the corresponding worksheets. Recheck your determinations and values. Again do not make entries to force the expected outcomes outlined in this table. You will be much better off submitted the assignment giving it your best try with minor errors than manipulating the spreadsheet to align with the expected result outlined in the table above. Lastly, you will have a working example to reference if and when you are asked to submit an IT Budget. Good Luck!

4

Risk Determination & Decision Tree Analysis

Homework # 5 Risk Determination & Decision Tree Analysis

1. Review Module-5 Lecture Notes and Chapter Readings

2. Use the Risk Determination Excel Workbook and complete the following worksheets:

a. Corporate Assets Risk Summary – Tab (25-Points)

i. Use the Reference Tab in the workbook to select the appropriate values from the respective tables and complete Columns C, D, E, F, & G (Hint: use the Threat Vulnerability Reference Table; return the numerical value for the corresponding probability and impact).

 

Threat   Vulnerability Work Table

 

Impact

 

Low

Medium

High

 

Probability

High

3

6

9

 

Medium

2

5

8

 

Low

1

4

7

ii. Column H (Risk Score) is a calculated field already formatted

iii. Column I (Possible Safeguards) provide the safeguards you would put in place to mitigate the threat (e.g., controls, policies, etc.); provide sufficient level of detail

iv. Column J (Cost Estimates) provide cost estimates/ranges for the safeguards you would put in place to mitigate the threat; provide sufficient level of detail in the Comments Section Column K.

v. Provide thorough summary analysis of each section

b. Occupation Analysis – Tab (25-Points)

i. Use the Risk Level Table provided on worksheet (Cells B25-C31) to assign the appropriate value for each occupation and the corresponding threats outlined in Columns C,D,E,& F

ii. Column G (Total) is a calculated filed already formatted

iii. Complete the occupational analysis; answer the four questions after completing your occupational vulnerability assessment; provide sufficient level of detail in your responses.

c. Decision Tree Analysis – Tab (50-Points)

i. Examine the Decision Tree Analysis for enterprise CRM solution approach

ii. Complete the corresponding tables for both paths and individual branches referencing the values in the decision tree diagram.

iii. Some of the data is already populated

iv. Total fields, Branch Total fields, and Value Fields are calculated fields and are already formatted

v. Answer the question regarding which options provides the best overall value

vi. Explain your reasoning for the choice you made, response should be based on your analysis of the decision tree results.

vii. Hint: Only one of the value fields should have a negative value when finished

3. Complete the Risk Determination Worksheets (M.S. Excel Document not PDF) and upload the file using the designated link on Moodle on or before the assignment due date.

Corpoarate Assets Risk Summary

Corpoarate Assets Risk Summary

Asset Under Review: Customer Realtionship Management SystemFinancial LossLegal ImpactsEmbarrassmentProbability – ImpactRisk ScorePossible SafeguardsSafeguard Cost
Unauthorized Disclosure00000
Unauthorized Modification00000
Unavailability00000
Unauthorized Destruction00000
Unauthorized Access00000
Assessment Analysis Summary:
Asset Under Review: Supply Chain Management SystemFinancial LossLegal ImpactsEmbarrassmentProbability – ImpactRisk ScorePossible SafeguardsSafeguard Cost
Unauthorized Disclosure00000
Unauthorized Modification00000
Unavailability00000
Unauthorized Destruction00000
Unauthorized Access00000
Assessement Analysis Summary:
Asset Under Review: Employee Training SystemFinancial LossLegal ImpactsEmbarrassmentProbability – ImpactRisk ScorePossible SafeguardsSafeguard Cost
Unauthorized Disclosure00000
Unauthorized Modification00000
Unavailability00000
Unauthorized Destruction00000
Unauthorized Access00000
Assssement Analysis Summary:
Asset Under Review: Enterprise Data CenterFinancial LossLegal ImpactsEmbarrassmentProbability – ImpactRisk ScorePossible SafeguardsSafeguard Cost
Fire00000
Water Damage00000
Production Environment Unavailability00000
Development Environment Unavailability00000
Loss of Facilities Power00000
Primary Network Area Storage Device Unavailabity00000
Theft of Computing Equipement00000
Unauthorized Access into EDC00000
Assessment Analysis Summary:
Complete a qualitiative risk assessment and summary analysis for the each of the corpoarate assets using the predefined risk tables above and cooresponding refernce table on the reference tab in the workbook.

Occupation Analysis

Asset Under Review: Corporate Financial DataVulnerabilityTotal
OccupationUnauthorized AccessUnauthorized ModificationUnauthorized DisclousureDistruction
Chief Executive Officer0
Chief Financial Officer0
Chief Information Systems Officer0
Chief Technology Officer0
Executive Secretary0
Director of Engineering0
VP Finance & Accounting0
VP Human Resources0
Senior Accountatnts -CPA0
Junior Accountants0
Director of Telecommunications0
Director of Enterprise Applications0
Senior Application Developer0
Junior Application Devloper0
Database Administrator0
Network Administrator0
Production Supervisor0
Manager of Facilities Maintenance0
Helpdesk Technician0
Shipping Clerk0
Risk LevelValue
Greatest Risk6
Great Risk5
Moderate Risk4
Limited Risk3
Low Risk2
No Risk1
Completet the occupation analysis Table above and then evaluate the results and answer the quetsions below
How is this analysis Useful?
Which occupations pose the highest risks to unauthorized modification to corpoarte financial data?
Which occupations pose the least risks to unauthorized modification to corpoarte financial data?
What safegauards would you implement to help prevent the unauthorized authorization of corporate finainical data?
Are there other positions or occupations not examined in this analysis that should be included in this analysis?

Decision Tree

CRM Decision Tree Diagarm
Examine the decisoon treet diagarem above; next complete each of the decision trree branch analysis using the tables below; evaluate the final results and answer the question as to your recommnedation for the best option
Custom Development
Branch 1CostHighModerateLowBranch TotalValue
In-House DevelopmentProbabilityValueTotalProbabilityValueTotalProbabilityValueTotal
$10,000,0000.10$12,000,000$1,200,000$10,000,000$00.70$0$1,200,000-$8,800,000
Branch 2CostHighModerateLow
Outsource DevelopmentProbabilityValueTotalProbabilityValueTotalProbabilityValueTotal
$9,700,000$00.60$0$6,000,000$0$0-$9,700,000
COTS
Branch 1CostHighModerateLowBranch TotalValue
On-Premise COTSProbabilityValueTotalProbabilityValueTotalProbabilityValueTotal
$7,500,000$15,000,000$0$00.20$0$0-$7,500,000
Branch 2CostHighModerateLow
Hosted COTSProbabilityValueTotalProbabilityValueTotalProbabilityValueTotal
$6,500,0000.80$0$00.10$0$0-$6,500,000
Which option would provide the best overall value and why?
* Note: one of the branch values should resullt in a negative number.

References

Financial LossValuation ScoreThreat Vulnerability Work Table
Less than $2,0001Impact
Between $2K and $20K2LowMediumHigh
Between $20K and $50K3ProbabilityHigh369
Between $50K and $100K4Medium258
Between $100K and $300K5Low147
Between $300K and $500K6
Between $500K and $1M7
Between $1M and $5M8
Between $5M and $10M9
Between $10M and $30M10
Between $30M and $100M11
Greater Than $100M12
Legal ImplicationValuation Score
Under $5K1
Between $5K and $10K4
Between $10K and $50K5
Between $50K an $1M and/or CIO liable for prosecution8
Over $1M and/or Officers and/or Directors Liable10
Enterprise EmbarrassmentValuation Score
Embarrasment restricted to within the project of work site1
Embarrassment spread to other work areas of operating group or division2
Embarrassment spread throughout the enterprise3
Public made aware thorugh local press5
Adverse national press7
Stcok proce impacted10
PriorityScore
Low1
Low to Medium2
Medium3
Medium to High4
High5
Annual Loss Multiplier Table
Occurrence FrequencyMultplier
Never0.000
Once in 300 Years0.003
Once in 200 Years0.005
Once in 100 Years0.010
Once in 50 Years0.020
Once in 25Years0.040
Once in 10 Years0.100
Once in 5 Years0.200
Once in 2 Years0.500
Yearly1.000
Twice a Year2.000
Once a Month12.000
Once a Week52.000
Once a Day365.000

MATLAB is required.

MATLAB is required.  – please do not assign article writers to my case, My case Needs an  expert Matlab programmer with Image processing Background experience.  because I need the source code not pdf articles. Here are the implementation requirements In the paper: – first The Fuzzy c-means algorithm should be Implemented for image  segmentation, and tested on Images of the data set. – Next the Interval type 2 fuzzy c-means for image segmentation should  be Implemented and tested on the same images of the data set. -After that the evaluation methods should be implemented and tested on  both methods. I have attached the paper and the Images data set for testing the  algorithms.

SAI Intelligent Systems Conference

SAI Intelligent Systems Conference 2015 November 10-11, 2015 | London, UK

773 | P a g e 978-1-4673-7606-8/15/$31.00 ©2015 IEEE

Images Segmentation based on Interval Type-2 Fuzzy C-Means

ASSAS Ouarda* Department of Computer Science,

Laboratory Analysis of Signals and Systems (LASS) University of M’sila

M’sila, Algeria e-mail: assas_warda@yahoo.fr

 

Abstract—Segmentation process helps to find region of interest in a particular image. The main goal is to make image more simple and meaningful. This work is an improvement of an existing method which is Fuzzy C-Means (FCM) to partitioning an image into several constituent components – type 2 Fuzzy C- Means-. First, membership function defined by Hamid R Tizhoosh is used to measure the image fuzziness. Second, new membership functions are proposed. The evaluation of adopted approaches was compared using the validity functions: Partition Coefficient Vpc, Partition Entropy Vpe and Peak Signal and Noise Ratio PSNR. The experimental results on real images prove that the proposed approaches are more accurate and robust than the standard FCM approach.

Keywords—component; Segmentation; Fuzzy Logic; Type-2 Fuzzy Sets; Fuzzy C-Means

I. INTRODUCTION Image segmentation plays an important role in vision and

image processing applications. It is a widely employed technique in many fields like: document image analysis, scene or map processing, Signature Identification, Biomedical Imaging, and Target Identification [1]. The images segmentation has remained a challenge. Many approaches have been studied, including Methods based edge, methods based region, methods based on thresholding, methods based artificial neural networks, data fusion methods, Markov random field methods and hybrid Methods.

In fuzzy segmentation, the image pixel values can belong to more than one segment, and associated with each of the points are membership grades that indicate the degree to which the data points belong to different segments.

Segmentation process also helps to find region of interest in a particular image. The main goal is to make image more simple and meaningful. Fuzzy C-Means (FCM) is a unsupervised fuzzy classification algorithm. Resulting from the C-means algorithm (C-means), it introduces the concept of fuzzy set in the class definition: each point in the data set for each cluster with a certain degree, and all clusters are characterized by their center of gravity.

In this paper, the use of fuzzy logic is extended to a higher order, which called type-2 fuzzy logic. The fuzzy C-Means using type-2 fuzzy logic with new membership functions is proposed to segment human MR Brain images.

The organisation of the paper is as follows. In section 2 the fuzzy C-Means technique of segmentation is reviewed and in section 3 describes briefly the type-2 fuzzy sets. Section 4 present a complete description of proposed segmenting approach using tye-2fuzzy logic, where each step of the algorithm is developed in detail. Ssection 5 illustrates the obtained experimental results and discussions and section 6 concludes this paper.

II. FUZZY C-MEANS TECHNIQUE Modeling inaccuracy is done by considering gradual

boundaries instead of clear borders between classes. The uncertainty is expressed by the fact that a pixel has attributes that assign a class than another. So, Fuzzy clustering assigns not a pixel a label on a single class, but its degree of membership in each class. These values indicate the uncertainty of a pixel belonging to a region and are called membership degrees. The membership degree s in the interval [0, 1] and the obtained classes are not necessarily disjoint. In this case, the data Xj are not assigned to a single class, but many through degrees of membership Uij of the vector Xj to class i. The purpose of classification algorithms is not only calculating cluster centers bi but all degrees of membership vectors to classes. If Uij is the membership degree of Xj to class i, the matrix U(CxN, C number of cluster and N is the data size) is called fuzzy C-partitions matrix if and only if it satisfies the conditions (1) and (2):

[ ] [ ] [ ]∈

∈∀∈∀ =

N

j ij

ij

Nu

u NjCi

1

0

1,0 ,1,,1 (1)

[ ] =

=∈∀ C

i ijuCi

1

1 ,1 (2)

The objective function to minimize J and the solutions bi, Uij, of the problem of the FCM are described by the following formulas:

= =

= C

i

N

j ij

m ij bxdUXUBJ

1 1

2 ),()(),,( (3)

 

 

SAI Intelligent Systems Conference 2015 November 10-11, 2015 | London, UK

774 | P a g e 978-1-4673-7606-8/15/$31.00 ©2015 IEEE

 

=

== N

j

m ij

N

j j

m ij

u

Xu bi

1

1

)(

.)( (4)

 

1

)1( 2

1 2

2

),( ),(

=

= mC

k kj

ij ij bXd

bXd u (5)

With the variable m is the fuzzification coefficient which takes values in the interval [0, + [. The FCM algorithm stops when the partition becomes stable

Like other unsupervised classification algorithms, it uses a criterion minimization of intra-class distances and maximizing inter-class distances, but gives a degree of membership of each class for each pixel. This algorithm requires prior knowledge of the number of clusters and generates classes through an iterative process by minimizing an objective function. Thus, it allows to obtaining a fuzzy partition of the image by providing each pixel with a membership degree (between 0 and 1) to a given class. The cluster which is associated with a pixel is one whose degree of membership is the highest.

The main steps of the Fuzzy C-means algorithm are:

1) Input the image Xj: j=1..N, N: size of image. 2) Set the parameters of the algorithm: C: number of

cluster, m: fuzzy coefficient, : convergence error. 3) Initialize the membership matrix U with random values

in the range [0,1]. 4) Update the centers bi using the equation (4) and

evaluation of the objective function Jold using the formula (3). 5) Update the membership matrix U using the equation

(5) and evaluation of the objective function Jnew using the formula (3).

6) Repeat steps 4 and 5 until satisfaction of the stopping criterion which is written: || Jold-Jnew:||

7) The outputs are the membership matrix U and the centers bi.

III. TYPE-2 FUZZY SETS [2] A new area in fuzzy logic is introduced in this section,

which called type-2 fuzzy logic. Type-2 fuzzy set theory was introduced by Zadeh in [3] to solve the problem in defining the complex uncertainty which the problem is unable to define the existing type-1 fuzzy set theory. A type-2 fuzzy set is a set in which we also have uncertainty about the membership function. Type-2 fuzzy logic is a generalisation of conventional fuzzy logic (type-1) in the sense that uncertainty is not only limited to the linguistic variables but also is present in the definition of the membership functions.[4]

Speaking of uncertainty, there are two main types of uncertainty, linguistic and random. The first is associated with the word and the fact that it can mean different things to different people while the second is associated with unpredictability. Probability theory is used to treat the random uncertainty and fuzzy set is used to treat the linguistic

uncertainty. As the variance provides a measure of dispersion around the average of probabilistic uncertainty, a fuzzy set needs a dispersion measurement of linguistic uncertainty. A type-2 fuzzy set provides precisely this measure of dispersion.

A Type-2 fuzzy set is an extension of the type-1 fuzzy set. It has the degrees of membership which are themselves fuzzy. For each value of the primary value (pressure, temperature …etc.), membership is a function and not a value (secondary membership function), whose domain, is the primary membership in the interval [0, 1] and whose row (second degrees) must also be in the interval [0, 1]. The membership function of a type-2 fuzzy set is three-dimensional, and it is this new third dimension that provides new degrees of freedom in the design to treat uncertainty. These sets are very useful in situations where it is difficult to determine the exact membership function for a fuzzy set.

The term footprint of uncertainty (FOU) is used in the literature to verbalize the shape of type-2 fuzzy sets(shaded area in Fig.1)[5][6]. The FOU implies that there is a distribution that sits on top of that shaded area. When they all equal one, the resulting type-2 fuzzy sets are called interval type-2 fuzzy sets. For which, the membership function provides an interval [7].

(a) (b)

Fig. 1. (a)Type-1 membership function and (b) FOU for an interval type-2 fuzzy set [6]

Definition: A type-2 fuzzy set à is defined by a type-2 membership function μÃ(x, u), where x X and u Jx [0,1] [6].

Ã={((x, u), μÃ(x, u)) ∀ x X, ∀ u Jx [0,1]} (6)

in which 0 μÃ(x, u) 1. à can also be expressed in the usual notation of fuzzy sets as:

(7) where the double integral denotes the union over all x and

u. In order to define a type-2 fuzzy set, one can define a type-1 fuzzy set and assign upper and lower membership degrees to each element to (re)construct the footprint of uncertainty (Fig.1). A more practical definition for a type-2 fuzzy set can be given as follows:

Ã={(x, μU(x), μL(x)) ∀ x X, μL(x)) μ(x) μU(x), μ [0,1]} (8)

 

 

SAI Intelligent Systems Conference 2015 November 10-11, 2015 | London, UK

775 | P a g e 978-1-4673-7606-8/15/$31.00 ©2015 IEEE

Tizhoosh [7] has defined the upper and lower membership degrees μU(x) and μL(x) of initial (skeleton) membership function μ by means of linguistic hedges:

μU(x) = [μ(x)] 1/ , (9)

μL(x) = [μ(x)] (10)

Where ]1,+ [. In the conducted experiments, ]1, 2] has been used because >> is usually not meaningful for image data.

For =2, the upper and lower membership degrees represent dilatation and concentration:

μU(x) = [μ(x)] 0.5, (11)

μL(x) = [μ(x)] 2 (12)

Of course, other linguistic hedges such as de-accentuation and accentuation can also be employed:

μU(x) = [μ(x)] 0.75, (13)

μL(x) = [μ(x)] 1.25. (14)

IV. FUZZY C-MEANS USING TYPE-2 FUZZY SETS

In the proposed approaches, first, μL=μ and μU= μ 1/ are

taken. The membership functions can be calculated by three ways as follows:

μ(x) = (μL+ μU)/2 (15)

Or μ(x) = (μL * μU) 1/2 (16)

Or μ(x) = (μL + μL*μU) (17)

Second, new upper and lower membership degrees μU(x) and μL(x) of initial (skeleton) membership function μ are proposed by the flowing expressions:

μU(x) = μ(x)*( μ(x)+1), (18) μL(x) = μ(x)/( μ(x)+1). (19)

And

μU(x) = μ(x) 2*( μ(x)2+1)/2, (20)

μL(x) = μ(x) 1/2/2( μ(x)1/2+1). (21)

The general algorithm for the type-2 fuzzy C-means approach can be formulated as follows:

1) Input the image Xj: j=1..N, which N is the image size. 2) Set the parameters of the algorithm: C: number of

cluster, m: fuzzy coefficient, : convergence error. 3) Initialize the membership matrix U with random values

in the range [0, 1]. 4) Update the centers bi using the equation (4) and

evaluation of the objective function Jold using the formula (3). 5) Update the membership matrix U using the equation

(5) and Compute the upper and lower membership using the equations couple (9) and (10) or (18) and (19) or (20) and (21).

6) Calculate the membership functions using one of the formula (15), (16) or (17) then Evaluate the objective function Jnew using the formula (3).

7) Repeat steps 4 and 5 until satisfaction of the stopping criterion which is written: || Jold-Jnew:||

8) The outputs are the membership matrix U and the centers bi.

9) Assign all pixels to clusters by using the maximum membership value of every pixel.

V. EXPERIMENTAL RESULTS The proposed algorithm for a fuzzy 2-partition thresholding

has been tested on many images with various histogram distributions to ensuring its efficiency. Each image is presented by eight bits, that is, grey levels are ranging from 0 (the darkest) to 255 (the brightest). The experimental results of the proposed method are presented and discussed through the dataset of standard 512×512 grayscale test images (Fig 2).

Validation functions of resulting classes of fuzzy partitioning are often used to evaluate the performance of different methods of classification. These functions are: partition coefficient Vpc and partition entropy Vpe. They are defined as follows:

(22)

 

(23)

The idea of the validity of these functions is that the partition with less fuzzy means better performance. Therefore, the best partition is reached when the Vpc value is maximum and Vpe is minimum.

Also, Peak signal to noise ratio (PSNR) is used to determine the quality of the segmented image. The PSNR give the similarity of an image against a reference image based on the mean square error (MSE) of each pixel:

(24) ) 255

(log20 10 RMSE PSNR =

Where, RMSE is the root mean-squared error, defines as:

( ) ( )[ ] (25) ,,1 2

−= M N

jiÎjiI MN

RMSE

Here I and Î are the original and segmented images of size MxN, respectively.

Partition coefficient Vpc, partition entropy Vpe and PSNR are used to compare the performance of the adopted techniques for segmentation. Performance of the proposed methods is compared with fuzzy c-means method using type-1 fuzzy sets. The numerical results obtained using type-1 Fuzzy c-Means and type-2 Fuzzy c-Means with c=4 are presented in Table 1.

Using the three proposed membership functions and upper and lower membership degrees, performance value tends to increase. Tables II and III show the obtained values of

 

 

97

partition coefficient Vpc, partition entropy Vp signal to noise ratio (PSNR) using the propose the test images. A mean (μ) and standard d calculated on efficiency in order to show the the proposed and other method as in table I , I table I, as is apparent, for Vpc a biggest m standard deviation 0,1327 and for Vpe a low and standard deviation 0,1253 are obtained proposed membership function which confirm improvement. Figure 3 shows segmented imag

1

2 3

9

 

10

11

17

18 19

25

26 27

33

34 35

41

42 43

 

Fig. 2. Dataset of standard test images

SAI Intellig Novem

8-1-4673-7606-8/15/$31.00 ©2015 IEEE

pe and the Peak ed approaches for deviation (σ) are e effectiveness of II, and III. From

mean 3,0320 and west mean 0,0538 d from the third ms the qualitative ge for test images

based on type-2 fuzzy c-means ( =1 type-2 fuzzy sets algorithm is very segmentation (Fig. 3). For exampl main features such as sea, sky and b it can be seen, the type-2 fuzzy c equally well in terms of the quality leads to a good visual result.

 

4

5

6

12

13

14

20

21

22

28

29

30

36

37

38

44

45

46

49

gent Systems Conference 2015 mber 10-11, 2015 | London, UK

776 | P a g e

1.25). As it can be seen, the y good and allows a good le, for image of boats, the boats are well separated. As c-means algorithm perform of image segmentation and

7

8

15

16

23

24

31

32

39

40

47

48

 

 

 

97

1

2 3

9

10 11

17

18 19

25

26 27

33

34 35

41

42 43

 

Fig. 3. Segmenting result of test images using the.type-2

SAI Intellig Novem

8-1-4673-7606-8/15/$31.00 ©2015 IEEE

4 5

6

12 13

14

20 21

22

28 29

30

36 37

38

44 45

46

49

 

2 fuzzy c-means algorithm for c=4 (third membership function with =1

gent Systems Conference 2015 mber 10-11, 2015 | London, UK

777 | P a g e

7 8

15 16

23 24

31 32

39 40

47 48

 

1.25)

 

 

SAI Intelligent Systems Conference 2015 November 10-11, 2015 | London, UK

778 | P a g e 978-1-4673-7606-8/15/$31.00 ©2015 IEEE

TABLE I. EXPERIMENTAL RESULTS USING TYPE-1FCM AND TYPE-2 FCM (TIZHOOSH)

Image Type-1 FCM

Type-2 FCM (Tizhoosh)

μ(x)=(μL+μU)/2 μ(x)=(μL * μU) ½ μ(x)=μL+μL*μU

pvc Pve PSNR Pvc pve PSNR pvc pve PSNR pvc pve PSNR

1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

0,7666 0,7501 0,7659 0,7229 0,7604 0,7446 0,7784 0,8406 0,7427 0,4899 0,8233 0,7995 0,7939 0,7466 0,4898 0,7720 0,7599 0,8053 0,7819 0,7528 0,8425 0,7321 0,7723 0,7984 0,7630 0,7365 0,8028 0,7590 0,7453 0,8098 0,7704 0,8128 0,7643 0,7656 0,7663 0,7703 0,7372 0,7782 0,8380 0,7434 0,7455 0,7588 0,8046 0,7458 0,7720 0,7420 0,7601 0,7787 0,8335

0,8931 0,9174 0,8876 0,9812 0,8913 0,9186 0,8685 0,6957 0,8942 1,4696 0,7628 0,8256 0,8174 0,9238 1,4696 0,8442 0,9028 0,7860 0,8554 0,9073 0,6527 0,9475 0,8296 0,8003 0,8507 0,9581 0,7752 0,9043 0,9465 0,8008 0,8757 0,7870 0,8886 0,8984 0,9014 0,8885 0,9323 0,8703 0,7386 0,9347 0,9222 0,8907 0,7855 0,8939 0,8372 0,9362 0,9052 0,8203 0,7424

59,9219 59,8711 54,6581 55,6092 53,4672 54,3089 57,0702 62,8419 56,3880 54,1540 56,2574 55,6175 58,7398 56,6427 52,4359 52,3838 51,7095 55,6994 55,2753 56,7824 57,2201 54,6739 57,4169 55,9750 55,4341 56,6102 53,7848 53,7657 52,9606 56,6207 55,6399 51,8087 54,2598 54,7323 53,4955 56,5148 55,3828 55,0082 56,0596 57,3124 55,9885 56,8288 56,7750 57,9561 53,5282 55,5564 59,2656 54,0085 56,2768

0,7666 0,7501 0,7659 0,7230 0,7604 0,7446 0,7784 0,8406 0,7427 0,7852 0,8233 0,7995 0,7939 0,7466 0,7062 0,7720 0,7599 0,8053 0,7819 0,7528 0,8425 0,7321 0,7723 0,7984 0,7630 0,7365 0,8028 0,7590 0,7453 0,8098 0,7704 0,8128 0,7643 0,7656 0,7663 0,7703 0,7372 0,7782 0,8380 0,7434 0,7455 0,7588 0,8046 0,7458 0,7720 0,7420 0,7602 0,4901 0,8335

0,8931 0,9174 0,8876 0,9800 0,8913 0,9186 0,8685 0,6958 0,8943 0,7835 0,7628 0,8256 0,8174 0,9238 0,9921 0,8442 0,9028 0,7860 0,8554 0,9073 0,6527 0,9475 0,8296 0,8003 0,8507 0,9581 0,7752 0,9042 0,9465 0,8008 0,8757 0,7870 0,8886 0,8984 0,9014 0,8885 0,9323 0,8703 0,7386 0,9347 0,9222 0,8907 0,7855 0,8939 0,8372 0,9362 0,9051 1,4686 0,7424

56,1735 53,9295 53,4129 54,5694 54,3653 53,8159 50,8998 60,6100 58,9479 56,2691 57,0273 54,1700 58,8416 58,0339 59,6437 59,2650 59,0343 65,8172 59,1305 55,9023 54,6723 56,6540 54,3464 54,3215 53,8422 54,8598 58,1743 58,3142 54,6892 57,8771 52,7551 56,8707 54,7562 58,3036 59,2990 57,5287 59,0841 54,3958 61,8339 57,8382 61,1035 58,9056 57,6529 59,4435 56,1949 54,2426 53,7222 56,2187 58,4327

0,6945 0,6486 0,6745 0,6499 0,6524 0,6714 0,6680 0,7818 0,7345 0,6899 0,7426 0,7084 0,7206 0,6482 0,6681 0,6699 0,6638 0,7286 0,6843 0,6441 0,7597 0,6320 0,7112 0,7368 0,6826 0,6152 0,7100 0,6876 0,6462 0,7462 0,6875 0,7301 0,7002 0,6728 0,6725 0,7116 0,6596 0,6950 0,7777 0,6398 0,6335 0,7182 0,7328 0,6525 0,7309 0,6365 0,6458 0,6768 0,7727

0,3303 0,3792 0,3521 0,3795 0,3764 0,3554 0,3559 0,2356 0,2880 0,3277 0,2735 0,3138 0,3012 0,3802 0,3586 0,3536 0,3614 0,2908 0,3404 0,3821 0,2586 0,3951 0,3102 0,2825 0,3393 0,4175 0,3106 0,3386 0,3823 0,2732 0,3365 0,2914 0,3236 0,3531 0,3537 0,3099 0,3681 0,3293 0,2398 0,3899 0,3969 0,3025 0,2851 0,3752 0,2883 0,3931 0,3834 0,3442 0,2469

53,6640 54,6443 54,0172 54,0910 59,1329 53,8223 64,1287 52,4717 56,2632 62,2692 50,7993 58,9390 58,7882 54,2536 52,5250 56,7600 54,1686 62,2923 55,3751 53,8923 59,6786 54,5118 55,1036 53,4889 55,4598 54,3100 55,6546 59,4443 56,5714 52,4261 54,3140 57,9523 52,2208 54,8520 57,0213 54,3461 56,2751 53,9393 62,2455 58,4859 59,6311 59,9732 60,1866 62,0558 54,2636 57,7441 57,7412 56,8627 51,9249

3,0043 2,9353 3,0002 2,8275 2,9816 2,9128 3,0564 3,3228 2,9282 3,0853 3,2432 3,1459 3,1216 2,9201 2,7614 3,0293 2,9789 3,1696 3,0711 2,9488 3,3301 2,8648 3,0312 3,1465 2,9912 2,8801 3,1596 2,9766 2,9176 3,1884 3,0188 3,2042 2,9933 3,0021 3,0036 3,0261 2,8832 3,0548 3,3100 2,9092 2,9176 2,9744 3,1673 2,9175 3,0263 2,9025 2,9794 3,0575 3,2915

0,1019 0,1480 0,0968 0,2541 0,1046 0,1492 0,0598 -0,2270 0,1032 -0,0587 -0,1205 -0,0170 -0,0267 0,1569 0,2830 0,0307 0,1212 -0,0789 0,0365 0,1344 -0,3084 0,1960 0,0077 -0,0598 0,0503 0,2095 -0,0871 0,1179 0,1862 -0,0595 0,0755 -0,0822 0,0993 0,1091 0,1132 0,0903 0,1789 0,0608 -0,1672 0,1747 0,1589 0,1027 -0,0758 0,1276 0,0281 0,1832 0,1214 -0,0067 -0,1606

57,0920 54,2034 53,7383 56,0729 53,4672 53,8986 51,8257 58,5402 56,6325 54,3553 54,9643 52,5391 53,7258 55,6121 58,4502 63,7951 56,6779 55,0349 52,0729 60,0354 57,2684 53,9845 53,6453 55,9060 54,7053 54,4536 55,7208 58,8689 57,2568 54,0072 54,8326 54,6798 54,0912 54,5045 55,4136 57,9124 58,6629 59,0623 59,3004 57,8382 59,4168 54,2835 52,0865 54,9039 57,1192 53,4033 58,2266 52,4531 52,4697

Mean(μ) 0,7620 0,8863 55,7285 0,7665 0,8757 56,8611 0,6902 0,3338 56,3466 3,0320 0,0538 55,6982

STD(σ) 0,0642 0,1403 2,1728 0,0512 0,1132 2,7741 0,0418 0,0456 3,1775 0,1327 0,1253 2,5130

 

 

 

SAI Intelligent Systems Conference 2015 November 10-11, 2015 | London, UK

779 | P a g e 978-1-4673-7606-8/15/$31.00 ©2015 IEEE

TABLE II. EXPERIMENTAL RESULTS USING TYPE-2 FCM (FIRST SET OF LOWER AND UPPER MEMBERSHIP FUNCTION)

Image

Type-2 FCM (first set of lower and upper membership function)

μ(x)=(μL+μU)/2 μ(x)=(μL * μU) ½ μ(x)=μL+μL*μU

pvc pve PSNR pvc pve PSNR pvc Pve PSNR

1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

0,7866 0,7580 0,7732 0,7480 0,7575 0,7635 0,7737 0,8463 0,8092 0,7879 0,8274 0,7989 0,8041 0,7551 0,7601 0,7736 0,7648 0,8128 0,7798 0,7501 0,8334 0,7392 0,7935 0,7629 0,7794 0,7297 0,8000 0,7890 0,7551 0,8237 0,7831 0,8113 0,7880 0,7699 0,7730 0,7980 0,7587 0,7875 0,8452 0,7426 0,7432 0,7926 0,8134 0,7574 0,8108 0,7454 0,7550 0,7788 0,8403

0,4435 0,4908 0,4639 0,5126 0,4943 0,4837 0,4528 0,3174 0,4053 0,4131 0,3580 0,4159 0,4099 0,4978 0,4841 0,4579 0,4779 0,3891 0,4551 0,4949 0,3480 0,5164 0,4157 0,4677 0,4428 0,5396 0,4032 0,4342 0,5043 0,3724 0,4418 0,3895 0,4370 0,4708 0,4669 0,4182 0,4932 0,4416 0,3304 0,5200 0,5182 0,4222 0,3826 0,4922 0,3905 0,5142 0,4983 0,4380 0,3355

58,0114 54,1158 54,1943 56,2675 55,8964 52,9515 54,4158 60,4551 54,0658 57,6955 56,9141 56,3290 52,9021 55,6785 56,7441 53,1870 55,4249 55,2785 53,4788 54,5379 54,4867 53,7188 57,1086 56,5554 56,7251 55,7708 52,0194 56,5601 52,0970 54,0422 52,4676 56,6268 57,1359 52,9191 56,7614 52,9470 58,6128 56,3935 60,4722 54,5518 56,3790 55,4692 56,0689 56,6179 60,7960 55,0983 56,9498 54,1289 51,6725

0,7829 0,7532 0,7686 0,7444 0,7530 0,7601 0,7733 0,8435 0,8066 0,7829 0,8240 0,7948 0,8004 0,7502 0,7563 0,7690 0,7604 0,8093 0,7755 0,7449 0,8296 0,7351 0,7906 0,7575 0,7752 0,7241 0,7958 0,7853 0,7505 0,8205 0,7787 0,8076 0,7843 0,7655 0,7685 0,7946 0,7546 0,7835 0,8424 0,7379 0,7380 0,7895 0,8098 0,7526 0,8078 0,7404 0,7499 0,7741 0,8375

0,3984 0,4458 0,4206 0,4644 0,4480 0,4366 0,4078 0,2838 0,3599 0,3776 0,3210 0,3736 0,3677 0,4525 0,4394 0,4152 0,4326 0,3485 0,4104 0,4523 0,3119 0,4701 0,3750 0,4295 0,4012 0,4953 0,3650 0,3899 0,4561 0,3317 0,4000 0,3496 0,3938 0,4258 0,4222 0,3751 0,4467 0,3968 0,2920 0,4735 0,4729 0,3796 0,3435 0,4473 0,3490 0,4685 0,4535 0,3989 0,2990

56,1009 54,1158 52,8344 54,8775 55,0472 54,7517 51,1537 60,7640 60,7482 55,7561 56,9141 54,1326 58,8055 57,6285 62,4823 58,2009 59,0757 67,4584 59,1707 55,0355 54,5979 57,0306 55,0569 53,4375 53,3964 54,1858 57,8649 56,9489 54,9167 57,4828 52,3924 56,5985 54,9776 59,5421 59,2929 58,8171 60,3189 53,9600 62,1836 56,8584 63,0499 58,0777 58,1505 59,2349 55,9368 54,1975 54,2658 55,4020 58,0624

2,7408 2,5738 2,6509 2,5579 2,5695 2,6438 2,6234 3,0973 2,9051 2,7190 2,9326 2,7899 2,8463 2,5384 2,6378 2,6299 2,6095 2,8770 2,6934 2,5283 3,0071 2,4739 2,8095 2,8612 2,6862 2,4029 2,7966 2,7362 2,5189 2,9508 2,7045 2,8818 2,7627 2,6468 2,6417 2,8072 2,5949 2,7372 3,0798 2,5174 2,4834 2,8474 2,8972 2,5628 2,8882 2,4942 2,5281 2,6570 3,0584

-0,5971 -0,4917 -0,5400 -0,4803 -0,4884 -0,5354 -0,5222 -0,8202 -0,6994 -0,5922 -0,7262 -0,6293 -0,6663 -0,4691 -0,5307 -0,5339 -0,5166 -0,6882 -0,5697 -0,4637 -0,7662 -0,4299 -0,6419 -0,6782 -0,5676 -0,3798 -0,6339 -0,6023 -0,4580 -0,7329 -0,5754 -0,6842 -0,6122 -0,5375 -0,5349 -0,6417 -0,5064 -0,5951 -0,8108 -0,4546 -0,4328 -0,6677 -0,7011 -0,4840 -0,6941 -0,4396 -0,4611 -0,5503 -0,7927

64,3974 63,6257 54,2071 53,6361 54,3348 55,8766 55,2204 64,7776 57,6872 57,9310 56,2191 55,0321 58,4994 57,4087 55,5968 52,1124 52,1464 55,2456 54,3341 56,2381 57,0828 53,7559 54,6017 56,4853 56,4605 55,7733 53,8747 56,0625 52,7059 54,0088 59,4106 51,8460 54,5465 56,1485 53,8518 56,6778 55,5568 55,5481 56,0457 56,5197 55,5099 58,5497 58,1479 56,6943 53,3449 54,4854 59,3397 53,9827 55,7968

Mean(μ) 0,7823 0,4442 55,5040 0,7783 0,4014 56,9651 2,7183 -0,5842 56,0682

STD(σ) 0,0295 0,0554 2,1449 0,0300 0,0525 3,1282 0,1723 0,1095 2,7697

 

 

SAI Intelligent Systems Conference 2015 November 10-11, 2015 | London, UK

780 | P a g e 978-1-4673-7606-8/15/$31.00 ©2015 IEEE

TABLE III. EXPERIMENTAL RESULTS USING TYPE-2 FCM (SECOND SET OF LOWER AND UPPER MEMBERSHIP FUNCTION)

Image

Type-2 FCM (Second set of lower and upper membership function)

μ(x)=(μL+μU)/2 μ(x)=(μL * μU) ½ μ(x)=μL+μL*μU

Pvc pve PSNR pvc pve PSNR pvc Pve PSNR

1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

0,7990 0,7726 0,7867 0,7632 0,7722 0,7776 0,7868 0,8555 0,8189 0,8017 0,8373 0,8112 0,8155 0,7699 0,7746 0,7876 0,7790 0,8241 0,7826 0,7656 0,8431 0,7542 0,8048 0,7785 0,7926 0,7463 0,8123 0,8013 0,7696 0,8339 0,7963 0,8237 0,8001 0,7837 0,7866 0,8095 0,7724 0,8001 0,8542 0,7580 0,7595 0,8031 0,8244 0,7718 0,8208 0,7609 0,7699 0,7933 0,8498

0,4395 0,4874 0,4601 0,5104 0,4897 0,4809 0,4475 0,3117 0,4028 0,4065 0,3533 0,4097 0,4051 0,4946 0,4815 0,4517 0,4737 0,3823 0,4695 0,4912 0,3422 0,5154 0,4139 0,4626 0,4382 0,5387 0,3978 0,4289 0,5008 0,3664 0,4372 0,3816 0,4337 0,4672 0,4630 0,4142 0,4914 0,4365 0,3233 0,5179 0,5146 0,4205 0,3770 0,4895 0,3865 0,5117 0,4950 0,4312 0,3301

56,3236 56,0583 54,7588 57,7972 55,5695 55,7860 52,7795 64,5674 52,2592 55,7561 61,7700 54,4593 52,8105 56,0758 59,7442 56,7740 60,2183 54,7455 60,2128 54,2830 53,0893 56,9982 54,6687 55,2864 56,2108 55,4325 53,8458 55,2230 54,7296 56,5287 51,7657 52,5377 52,4483 55,5154 55,2493 55,2819 55,4197 58,1013 53,1381 56,7719 62,8947 56,6196 56,5632 54,1339 57,0435 54,0836 53,7265 60,2106 52,8832

0,7885 0,7599 0,7748 0,7508 0,7595 0,7659 0,7807 0,8477 0,8114 0,7897 0,8290 0,8004 0,8058 0,7570 0,7633 0,7755 0,7669 0,8145 0,7818 0,7521 0,8343 0,7417 0,7956 0,7635 0,7812 0,7320 0,8014 0,7911 0,7576 0,8253 0,7849 0,8133 0,7900 0,7718 0,7748 0,8001 0,7613 0,7892 0,8466 0,7449 0,7452 0,7953 0,8152 0,7592 0,8123 0,7475 0,7567 0,7807 0,8416

0,4095 0,4566 0,4312 0,4765 0,4593 0,4488 0,4171 0,2914 0,3710 0,3848 0,3297 0,3835 0,3776 0,4636 0,4493 0,4252 0,4434 0,3578 0,4207 0,4620 0,3202 0,4819 0,3853 0,4388 0,4110 0,5059 0,3738 0,4002 0,4673 0,3411 0,4097 0,3577 0,4042 0,4367 0,4331 0,3853 0,4579 0,4075 0,3006 0,4850 0,4840 0,3891 0,3522 0,4584 0,3595 0,4797 0,4644 0,4075 0,3077

52,8140 55,8919 52,6392 56,9631 61,6082 56,2946 52,5695 60,4551 55,2960 55,6238 56,2191 52,7332 55,6251 54,5281 62,4823 61,0080 56,4124 54,3773 57,5570 53,8276 52,7048 54,8569 56,6002 54,4250 54,6339 54,1858 55,6894 53,7690 52,0970 56,9665 52,7867 53,1172 53,2713 54,3618 54,9815 63,0127 57,6230 54,6672 55,1217 56,3772 56,7796 55,4070 56,0440 56,6179 59,8215 56,0687 61,5534 54,3100 51,8908

3,0222 2,8917 2,9589 2,8504 2,8900 2,9229 2,9610 3,2970 3,1312 3,0125 3,1938 3,0733 3,0977 2,8742 2,9080 2,9548 2,9203 3,1354 2,9865 2,8526 3,2322 2,8118 3,0566 3,0880 2,9848 2,7619 3,0777 2,9941 2,8582 3,1881 2,9995 3,1358 3,0298 2,9439 2,9555 3,0729 2,8957 3,0242 3,2881 2,8207 2,8209 3,0594 3,1374 2,8873 3,1308 2,8328 2,8730 2,9787 3,2693

-0,5123 -0,4110 -0,4646 -0,3689 -0,4038 -0,4318 -0,4841 -0,7639 -0,5996 -0,5521 -0,6777 -0,5645 -0,5779 -0,3932 -0,4275 -0,4717 -0,4376 -0,6191 -0,4853 -0,3945 -0,7028 -0,3587 -0,5642 -0,5534 -0,5049 -0,3029 -0,5848 -0,4843 -0,3754 -0,6567 -0,5063 -0,6203 -0,5238 -0,4525 -0,4592 -0,5632 -0,4078 -0,5153 -0,7436 -0,3481 -0,3492 -0,5598 -0,6290 -0,4071 -0,6190 -0,3600 -0,3911 -0,5090 -0,7311

53,2956 59,5215 54,5085 59,5984 56,9342 53,3775 60,9337 51,2168 56,2447 60,1496 56,6787 55,1438 52,3275 56,6076 58,0196 58,2009 60,1757 52,0311 56,8419 56,3215 57,8601 53,1958 53,6429 58,8791 54,2159 58,9863 56,7557 57,5123 52,1138 60,1435 56,2712 53,1566 56,9685 53,2451 55,2860 52,9466 58,6236 56,4354 54,5059 56,5060 55,0264 54,9645 55,4124 59,1778 56,0283 56,6617 55,9110 54,2513 53,9538

Mean(μ) 0,7950 0,4403 55,9010 0,7843 0,4115 55,8095 3,0029 -0,5066 56,0565

STD(σ) 0,0276 0,0566 2,7716 0,0292 0,0534 2,7640 0,1341 0,1144 2,4731

 

 

SAI Intelligent Systems Conference 2015 November 10-11, 2015 | London, UK

781 | P a g e 978-1-4673-7606-8/15/$31.00 ©2015 IEEE

VI. CONCLUSION In this work, an approach is proposed to segment images

based on the concept of type-2 fuzzy c-means. The image can carry on as much information as possible when the image is transformed to the fuzzy domain. The main idea of this work was to use of type-2 fuzzy sets into fuzzy c-means. For this purpose, new membership functions, upper and lower membership degrees are proposed. The experimental results have shown the effectiveness and usefulness of the proposed methods for image segmentation. The type-2 fuzzy c-means approach can deliver satisfactory performance to segmenting images.

REFERENCES [1] O. Assas, Fuzzy C-Partition Using Particle Swarm Optimization

Algorithm (ICCS’12 International Conférence en Complex Systems

Agadir, Moroco. 978-1-4673-4766-2/12/$31.00 ©2012 IEEE. http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6422825

[2] O. Assas, Threshold Selection Based On Type-2 Fuzzy 2-Partition Entropy Approach (WCCS’14 2nd World Conférence en Complex Systems Agadir, Moroco. 978-1-4799-4647-1/14/$31.00©2014 IEEE.

[3] L. A. Zadeh, The concept of linguistic variable and its application to approximate reasoning-Part I-II-III Information Science , 8,8,9 (1979), 199-249,301-357,143-180.

[4] O. Castillo, Type-2 Fuzzy Logic: Theory and Applications, 2008 Springer-Verlag Berlin Heidelberg. ISBN 978-3-540-76283-6]

[5] J. M. Mendel , R.I Bob John, “Type-2 fuzzy sets made simple”, IEEE Trans. Fuzzy Syst. 10(2) (2002) 117-127.

[6] J.M. Mendel, Uncertain Rule based Fuzzy Logic Systems, Prentice- Hall, Englwood Cliffs, NJ,2001.

[7] H. R. Tizhoosh, “Image thresholding using type II fuzzy sets”,Pattern recognition, 38(2005), 2363-2373.

 

 

<< /ASCII85EncodePages false /AllowTransparency false /AutoPositionEPSFiles false /AutoRotatePages /None /Binding /Left /CalGrayProfile (Gray Gamma 2.2) /CalRGBProfile (sRGB IEC61966-2.1) /CalCMYKProfile (U.S. Web Coated \050SWOP\051 v2) /sRGBProfile (sRGB IEC61966-2.1) /CannotEmbedFontPolicy /Warning /CompatibilityLevel 1.4 /CompressObjects /Off /CompressPages true /ConvertImagesToIndexed true /PassThroughJPEGImages true /CreateJobTicket false /DefaultRenderingIntent /Default /DetectBlends true /DetectCurves 0.0000 /ColorConversionStrategy /LeaveColorUnchanged /DoThumbnails false /EmbedAllFonts true /EmbedOpenType false /ParseICCProfilesInComments true /EmbedJobOptions true /DSCReportingLevel 0 /EmitDSCWarnings false /EndPage -1 /ImageMemory 1048576 /LockDistillerParams true /MaxSubsetPct 100 /Optimize false /OPM 0 /ParseDSCComments false /ParseDSCCommentsForDocInfo false /PreserveCopyPage true /PreserveDICMYKValues true /PreserveEPSInfo false /PreserveFlatness true /PreserveHalftoneInfo true /PreserveOPIComments false /PreserveOverprintSettings true /StartPage 1 /SubsetFonts false /TransferFunctionInfo /Remove /UCRandBGInfo /Preserve /UsePrologue false /ColorSettingsFile () /AlwaysEmbed [ true /Arial-Black /Arial-BoldItalicMT /Arial-BoldMT /Arial-ItalicMT /ArialMT /ArialNarrow /ArialNarrow-Bold /ArialNarrow-BoldItalic /ArialNarrow-Italic /ArialUnicodeMS /BookAntiqua /BookAntiqua-Bold /BookAntiqua-BoldItalic /BookAntiqua-Italic /BookmanOldStyle /BookmanOldStyle-Bold /BookmanOldStyle-BoldItalic /BookmanOldStyle-Italic /BookshelfSymbolSeven /Century /CenturyGothic /CenturyGothic-Bold /CenturyGothic-BoldItalic /CenturyGothic-Italic /CenturySchoolbook /CenturySchoolbook-Bold /CenturySchoolbook-BoldItalic /CenturySchoolbook-Italic /ComicSansMS /ComicSansMS-Bold /CourierNewPS-BoldItalicMT /CourierNewPS-BoldMT /CourierNewPS-ItalicMT /CourierNewPSMT /EstrangeloEdessa /FranklinGothic-Medium /FranklinGothic-MediumItalic /Garamond /Garamond-Bold /Garamond-Italic /Gautami /Georgia /Georgia-Bold /Georgia-BoldItalic /Georgia-Italic /Haettenschweiler /Impact /Kartika /Latha /LetterGothicMT /LetterGothicMT-Bold /LetterGothicMT-BoldOblique /LetterGothicMT-Oblique /LucidaConsole /LucidaSans /LucidaSans-Demi /LucidaSans-DemiItalic /LucidaSans-Italic /LucidaSansUnicode /Mangal-Regular /MicrosoftSansSerif /MonotypeCorsiva /MSReferenceSansSerif /MSReferenceSpecialty /MVBoli /PalatinoLinotype-Bold /PalatinoLinotype-BoldItalic /PalatinoLinotype-Italic /PalatinoLinotype-Roman /Raavi /Shruti /Sylfaen /SymbolMT /Tahoma /Tahoma-Bold /TimesNewRomanMT-ExtraBold /TimesNewRomanPS-BoldItalicMT /TimesNewRomanPS-BoldMT /TimesNewRomanPS-ItalicMT /TimesNewRomanPSMT /Trebuchet-BoldItalic /TrebuchetMS /TrebuchetMS-Bold /TrebuchetMS-Italic /Tunga-Regular /Verdana /Verdana-Bold /Verdana-BoldItalic /Verdana-Italic /Vrinda /Webdings /Wingdings2 /Wingdings3 /Wingdings-Regular /ZWAdobeF ] /NeverEmbed [ true ] /AntiAliasColorImages false /CropColorImages true /ColorImageMinResolution 200 /ColorImageMinResolutionPolicy /OK /DownsampleColorImages true /ColorImageDownsampleType /Bicubic /ColorImageResolution 300 /ColorImageDepth -1 /ColorImageMinDownsampleDepth 1 /ColorImageDownsampleThreshold 1.50000 /EncodeColorImages true /ColorImageFilter /DCTEncode /AutoFilterColorImages false /ColorImageAutoFilterStrategy /JPEG /ColorACSImageDict << /QFactor 0.76 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >> /ColorImageDict << /QFactor 0.76 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >> /JPEG2000ColorACSImageDict << /TileWidth 256 /TileHeight 256 /Quality 15 >> /JPEG2000ColorImageDict << /TileWidth 256 /TileHeight 256 /Quality 15 >> /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 200 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages false /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict << /QFactor 0.76 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >> /GrayImageDict << /QFactor 0.76 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >> /JPEG2000GrayACSImageDict << /TileWidth 256 /TileHeight 256 /Quality 15 >> /JPEG2000GrayImageDict << /TileWidth 256 /TileHeight 256 /Quality 15 >> /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 400 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 600 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict << /K -1 >> /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile (None) /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False /CreateJDFFile false /Description << /CHS <FEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200035002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002> /CHT <FEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200035002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002> /DAN <FEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200035002e00300020006f00670020006e0079006500720065002e> /DEU <FEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200035002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002e> /ESP <FEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200035002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002e> /FRA <FEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200035002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002e> /ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile. I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 5.0 e versioni successive.) /JPN <FEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200035002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002> /KOR <FEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200035002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002e> /NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt. De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 5.0 en hoger.) /NOR <FEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200035002e003000200065006c006c00650072002e> /PTB <FEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200035002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002e> /SUO <FEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200035002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002e> /SVE <FEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200035002e00300020006f00630068002000730065006e006100720065002e> /ENU (Use these settings to create PDFs that match the “Required” settings for PDF Specification 4.01) >> >> setdistillerparams << /HWResolution [600 600] /PageSize [612.000 792.000] >> setpagedevice